@mantine-vue/table 3.0.0 → 3.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/esm/index.mjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":[],"sources":["../src/utils/column.utils.ts","../src/utils/displayColumn.utils.ts","../src/utils/tanstack.helpers.ts","../src/utils/utils.ts","../src/components/MVT_TableSlots.ts","../src/components/menus/MVT_RowActionMenu.ts","../src/components/buttons/MVT_EditActionButtons.module.css","../src/components/buttons/MVT_EditActionButtons.ts","../src/components/buttons/MVT_ToggleRowActionMenuButton.ts","../src/hooks/display-columns/getMVT_RowActionsColumnDef.ts","../src/components/buttons/MVT_GrabHandleButton.module.css","../src/components/buttons/MVT_GrabHandleButton.ts","../src/components/body/MVT_TableBodyRowGrabHandle.ts","../src/hooks/display-columns/getMVT_RowDragColumnDef.ts","../src/components/buttons/MVT_ExpandAllButton.module.css","../src/components/buttons/MVT_ExpandAllButton.ts","../src/components/inputs/MVT_EditCellTextInput.ts","../src/components/buttons/MVT_ExpandButton.module.css","../src/components/buttons/MVT_ExpandButton.ts","../src/hooks/display-columns/getMVT_RowExpandColumnDef.ts","../src/hooks/display-columns/getMVT_RowNumbersColumnDef.ts","../src/components/buttons/MVT_RowPinButton.ts","../src/components/body/MVT_TableBodyRowPinButton.ts","../src/hooks/display-columns/getMVT_RowPinningColumnDef.ts","../src/fns/sortingFns.ts","../src/utils/row.utils.ts","../src/components/inputs/MVT_SelectCheckbox.ts","../src/hooks/display-columns/getMVT_RowSelectColumnDef.ts","../src/fns/aggregationFns.ts","../src/fns/filterFns.ts","../src/icons.ts","../src/locales/en.ts","../src/hooks/useMVT_TableOptions.ts","../src/hooks/display-columns/getMVT_RowSpacerColumnDef.ts","../src/hooks/useMVT_Effects.ts","../src/hooks/useMVT_TableInstance.ts","../src/hooks/useMantineVueTable.ts","../src/components/toolbar/MVT_ProgressBar.module.css","../src/components/toolbar/MVT_ProgressBar.ts","../src/components/toolbar/MVT_TablePagination.module.css","../src/components/toolbar/MVT_TablePagination.ts","../src/components/toolbar/MVT_ToolbarAlertBanner.module.css","../src/components/toolbar/MVT_ToolbarAlertBanner.ts","../src/components/toolbar/MVT_ToolbarDropZone.module.css","../src/components/toolbar/MVT_ToolbarDropZone.ts","../src/components/toolbar/common.styles.module.css","../src/components/toolbar/MVT_BottomToolbar.module.css","../src/components/toolbar/MVT_BottomToolbar.ts","../src/components/menus/MVT_FilterOptionMenu.module.css","../src/components/menus/MVT_FilterOptionMenu.ts","../src/components/inputs/MVT_GlobalFilterTextInput.module.css","../src/components/inputs/MVT_GlobalFilterTextInput.ts","../src/components/buttons/MVT_ColumnPinningButtons.module.css","../src/components/buttons/MVT_ColumnPinningButtons.ts","../src/components/menus/MVT_ShowHideColumnsMenuItems.module.css","../src/components/menus/MVT_ShowHideColumnsMenuItems.ts","../src/components/menus/MVT_ShowHideColumnsMenu.module.css","../src/components/menus/MVT_ShowHideColumnsMenu.ts","../src/components/buttons/MVT_ShowHideColumnsButton.ts","../src/components/buttons/MVT_ToggleDensePaddingButton.ts","../src/components/buttons/MVT_ToggleFiltersButton.ts","../src/components/buttons/MVT_ToggleFullScreenButton.ts","../src/components/buttons/MVT_ToggleGlobalFilterButton.ts","../src/components/toolbar/MVT_ToolbarInternalButtons.module.css","../src/components/toolbar/MVT_ToolbarInternalButtons.ts","../src/components/toolbar/MVT_TopToolbar.module.css","../src/components/toolbar/MVT_TopToolbar.ts","../src/components/modals/MVT_EditRowModal.ts","../src/utils/virtualization.utils.ts","../src/hooks/useMVT_ColumnVirtualizer.ts","../src/utils/style.utils.ts","../src/hooks/useMVT_Rows.ts","../src/hooks/useMVT_RowVirtualizer.ts","../src/components/buttons/MVT_CopyButton.module.css","../src/components/buttons/MVT_CopyButton.ts","../src/components/body/MVT_TableBodyCellValue.ts","../src/components/body/MVT_TableBodyCell.module.css","../src/components/body/MVT_TableBodyCell.ts","../src/components/body/MVT_TableDetailPanel.module.css","../src/components/body/MVT_TableDetailPanel.ts","../src/components/body/MVT_TableBodyRow.module.css","../src/components/body/MVT_TableBodyRow.ts","../src/components/body/MVT_TableBody.module.css","../src/components/body/MVT_TableBodyEmptyRow.ts","../src/components/body/MVT_TableBody.ts","../src/components/footer/MVT_TableFooterCell.module.css","../src/components/footer/MVT_TableFooterCell.ts","../src/components/footer/MVT_TableFooterRow.module.css","../src/components/footer/MVT_TableFooterRow.ts","../src/components/footer/MVT_TableFooter.module.css","../src/components/footer/MVT_TableFooter.ts","../src/components/menus/MVT_ColumnActionMenu.module.css","../src/components/menus/MVT_ColumnActionMenu.ts","../src/components/inputs/MVT_FilterCheckBox.module.css","../src/components/inputs/MVT_FilterCheckbox.ts","../src/components/inputs/MVT_FilterTextInput.module.css","../src/components/inputs/MVT_FilterTextInput.ts","../src/components/inputs/MVT_FilterRangeFields.module.css","../src/components/inputs/MVT_FilterRangeFields.ts","../src/components/inputs/MVT_FilterRangeSlider.module.css","../src/components/inputs/MVT_FilterRangeSlider.ts","../src/components/head/MVT_TableHeadCellFilterContainer.module.css","../src/components/head/MVT_TableHeadCellFilterContainer.ts","../src/components/head/MVT_TableHeadCellFilterLabel.module.css","../src/components/head/MVT_TableHeadCellFilterLabel.ts","../src/components/head/MVT_TableHeadCellGrabHandle.ts","../src/components/head/MVT_TableHeadCellResizeHandle.module.css","../src/components/head/MVT_TableHeadCellResizeHandle.ts","../src/components/head/MVT_TableHeadCellSortLabel.module.css","../src/components/head/MVT_TableHeadCellSortLabel.ts","../src/components/head/MVT_TableHeadCell.module.css","../src/components/head/MVT_TableHeadCell.ts","../src/components/head/MVT_TableHeadRow.module.css","../src/components/head/MVT_TableHeadRow.ts","../src/components/head/MVT_TableHead.module.css","../src/components/head/MVT_TableHead.ts","../src/components/table/MVT_Table.module.css","../src/components/table/MVT_Table.ts","../src/components/table/MVT_TableContainer.module.css","../src/components/table/MVT_TableContainer.ts","../src/components/table/MVT_TablePaper.module.css","../src/components/table/MVT_TablePaper.ts","../src/components/MantineVueTable.ts"],"sourcesContent":["import { type Row } from '@tanstack/vue-table'\n\nimport {\n type MVT_Column,\n type MVT_ColumnDef,\n type MVT_ColumnOrderState,\n type MVT_DefinedColumnDef,\n type MVT_DefinedTableOptions,\n type MVT_FilterOption,\n type MVT_RowData,\n} from '../types'\n\nexport const getColumnId = <TData extends MVT_RowData>(columnDef: MVT_ColumnDef<TData>): string =>\n columnDef.id ?? columnDef.accessorKey?.toString?.() ?? columnDef.header\n\nexport const getAllLeafColumnDefs = <TData extends MVT_RowData>(\n columns: MVT_ColumnDef<TData>[],\n): MVT_ColumnDef<TData>[] => {\n const allLeafColumnDefs: MVT_ColumnDef<TData>[] = []\n const getLeafColumns = (cols: MVT_ColumnDef<TData>[]) => {\n cols.forEach((col) => {\n if (col.columns) {\n getLeafColumns(col.columns)\n } else {\n allLeafColumnDefs.push(col)\n }\n })\n }\n getLeafColumns(columns)\n return allLeafColumnDefs\n}\n\nexport const prepareColumns = <TData extends MVT_RowData>({\n columnDefs,\n tableOptions,\n}: {\n columnDefs: MVT_ColumnDef<TData>[]\n tableOptions: MVT_DefinedTableOptions<TData>\n}): MVT_DefinedColumnDef<TData>[] => {\n const {\n aggregationFns = {},\n defaultDisplayColumn,\n filterFns = {},\n sortingFns = {},\n state: { columnFilterFns = {} } = {},\n } = tableOptions\n return columnDefs.map((col) => {\n // Local alias so the display-column branch can reassign without mutating the\n // map callback parameter (eslint no-param-reassign).\n let columnDef = col\n //assign columnId\n if (!columnDef.id) columnDef.id = getColumnId(columnDef)\n //assign columnDefType\n if (!columnDef.columnDefType) columnDef.columnDefType = 'data'\n if (columnDef.columns?.length) {\n columnDef.columnDefType = 'group'\n //recursively prepare columns if this is a group column\n columnDef.columns = prepareColumns({\n columnDefs: columnDef.columns,\n tableOptions,\n })\n } else if (columnDef.columnDefType === 'data') {\n //assign aggregationFns if multiple aggregationFns are provided\n if (Array.isArray(columnDef.aggregationFn)) {\n const aggFns = columnDef.aggregationFn as string[]\n columnDef.aggregationFn = (\n columnId: string,\n leafRows: Row<TData>[],\n childRows: Row<TData>[],\n ) => aggFns.map((fn) => aggregationFns[fn]?.(columnId, leafRows, childRows))\n }\n\n //assign filterFns\n if (Object.keys(filterFns).includes(columnFilterFns[columnDef.id])) {\n columnDef.filterFn = filterFns[columnFilterFns[columnDef.id]] ?? filterFns.fuzzy\n ;(columnDef as MVT_DefinedColumnDef<TData>)._filterFn = columnFilterFns[columnDef.id]\n }\n\n //assign sortingFns\n if (Object.keys(sortingFns).includes(columnDef.sortingFn as string)) {\n // @ts-expect-error bla bla bla\n columnDef.sortingFn = sortingFns[columnDef.sortingFn]\n }\n } else if (columnDef.columnDefType === 'display') {\n columnDef = {\n ...(defaultDisplayColumn as MVT_ColumnDef<TData>),\n ...columnDef,\n }\n }\n return columnDef\n }) as MVT_DefinedColumnDef<TData>[]\n}\n\nexport const reorderColumn = <TData extends MVT_RowData>(\n draggedColumn: MVT_Column<TData>,\n targetColumn: MVT_Column<TData>,\n columnOrder: MVT_ColumnOrderState,\n): MVT_ColumnOrderState => {\n if (draggedColumn.getCanPin()) {\n draggedColumn.pin(targetColumn.getIsPinned())\n }\n const newColumnOrder = [...columnOrder]\n newColumnOrder.splice(\n newColumnOrder.indexOf(targetColumn.id),\n 0,\n newColumnOrder.splice(newColumnOrder.indexOf(draggedColumn.id), 1)[0],\n )\n return newColumnOrder\n}\n\nexport const getDefaultColumnFilterFn = <TData extends MVT_RowData>(\n columnDef: MVT_ColumnDef<TData>,\n): MVT_FilterOption => {\n const { filterVariant } = columnDef\n if (filterVariant === 'multi-select') return 'arrIncludesSome'\n if (filterVariant?.includes('range')) return 'betweenInclusive'\n if (['checkbox', 'date', 'select'].includes(filterVariant || '')) return 'equals'\n return 'fuzzy'\n}\n","import {\n type MVT_ColumnDef,\n type MVT_DefinedTableOptions,\n type MVT_DisplayColumnIds,\n type MVT_Localization,\n type MVT_RowData,\n type MVT_StatefulTableOptions,\n} from '../types'\nimport { getAllLeafColumnDefs, getColumnId } from './column.utils'\n\nexport function defaultDisplayColumnProps<TData extends MVT_RowData>({\n header,\n id,\n size,\n tableOptions,\n}: {\n header?: keyof MVT_Localization\n id: MVT_DisplayColumnIds\n size: number\n tableOptions: MVT_DefinedTableOptions<TData>\n}): MVT_ColumnDef<TData> {\n const { defaultDisplayColumn, displayColumnDefOptions, localization } = tableOptions\n return {\n ...defaultDisplayColumn,\n header: header ? localization[header]! : '',\n size,\n ...displayColumnDefOptions?.[id],\n id,\n }\n}\n\nexport const showRowPinningColumn = <TData extends MVT_RowData>(\n tableOptions: MVT_StatefulTableOptions<TData>,\n): boolean => {\n const { enableRowPinning, rowPinningDisplayMode } = tableOptions\n return !!(enableRowPinning && !rowPinningDisplayMode?.startsWith('select'))\n}\n\nexport const showRowDragColumn = <TData extends MVT_RowData>(\n tableOptions: MVT_StatefulTableOptions<TData>,\n): boolean => {\n const { enableRowDragging, enableRowOrdering } = tableOptions\n return !!(enableRowDragging || enableRowOrdering)\n}\n\nexport const showRowExpandColumn = <TData extends MVT_RowData>(\n tableOptions: MVT_StatefulTableOptions<TData>,\n): boolean => {\n const {\n enableExpanding,\n enableGrouping,\n renderDetailPanel,\n state: { grouping },\n } = tableOptions\n\n const hasDetailPanelSlot = !!(tableOptions as any)._mvtSlots?.value?.detailPanel\n return !!(\n enableExpanding ||\n (enableGrouping && grouping?.length) ||\n renderDetailPanel ||\n hasDetailPanelSlot\n )\n}\n\nexport const showRowActionsColumn = <TData extends MVT_RowData>(\n tableOptions: MVT_StatefulTableOptions<TData>,\n): boolean => {\n const {\n createDisplayMode,\n editDisplayMode,\n enableEditing,\n enableRowActions,\n state: { creatingRow },\n } = tableOptions\n return !!(\n enableRowActions ||\n (creatingRow && createDisplayMode === 'row') ||\n (enableEditing && ['modal', 'row'].includes(editDisplayMode ?? ''))\n )\n}\n\nexport const showRowSelectionColumn = <TData extends MVT_RowData>(\n tableOptions: MVT_StatefulTableOptions<TData>,\n): boolean => !!tableOptions.enableRowSelection\n\nexport const showRowNumbersColumn = <TData extends MVT_RowData>(\n tableOptions: MVT_StatefulTableOptions<TData>,\n): boolean => !!tableOptions.enableRowNumbers\n\nexport const showRowSpacerColumn = <TData extends MVT_RowData>(\n tableOptions: MVT_StatefulTableOptions<TData>,\n): boolean => tableOptions.layoutMode === 'grid-no-grow'\n\nexport const getLeadingDisplayColumnIds = <TData extends MVT_RowData>(\n tableOptions: MVT_StatefulTableOptions<TData>,\n) =>\n [\n showRowPinningColumn(tableOptions) && 'mvt-row-pin',\n showRowDragColumn(tableOptions) && 'mvt-row-drag',\n tableOptions.positionActionsColumn === 'first' &&\n showRowActionsColumn(tableOptions) &&\n 'mvt-row-actions',\n tableOptions.positionExpandColumn === 'first' &&\n showRowExpandColumn(tableOptions) &&\n 'mvt-row-expand',\n showRowSelectionColumn(tableOptions) && 'mvt-row-select',\n showRowNumbersColumn(tableOptions) && 'mvt-row-numbers',\n ].filter(Boolean) as MVT_DisplayColumnIds[]\n\nexport const getTrailingDisplayColumnIds = <TData extends MVT_RowData>(\n tableOptions: MVT_StatefulTableOptions<TData>,\n) =>\n [\n tableOptions.positionActionsColumn === 'last' &&\n showRowActionsColumn(tableOptions) &&\n 'mvt-row-actions',\n tableOptions.positionExpandColumn === 'last' &&\n showRowExpandColumn(tableOptions) &&\n 'mvt-row-expand',\n showRowSpacerColumn(tableOptions) && 'mvt-row-spacer',\n ].filter(Boolean) as MVT_DisplayColumnIds[]\n\nexport const getDefaultColumnOrderIds = <TData extends MVT_RowData>(\n tableOptions: MVT_StatefulTableOptions<TData>,\n reset = false,\n) => {\n const {\n state: { columnOrder: currentColumnOrderIds = [] },\n } = tableOptions\n\n const leadingDisplayColIds: string[] = getLeadingDisplayColumnIds(tableOptions)\n const trailingDisplayColIds: string[] = getTrailingDisplayColumnIds(tableOptions)\n\n const defaultColumnDefIds = getAllLeafColumnDefs(tableOptions.columns).map((columnDef) =>\n getColumnId(columnDef),\n )\n\n let allLeafColumnDefIds = reset\n ? defaultColumnDefIds\n : Array.from(new Set([...currentColumnOrderIds, ...defaultColumnDefIds]))\n\n allLeafColumnDefIds = allLeafColumnDefIds.filter(\n (colId) => !leadingDisplayColIds.includes(colId) && !trailingDisplayColIds.includes(colId),\n )\n\n return [...leadingDisplayColIds, ...allLeafColumnDefIds, ...trailingDisplayColIds]\n}\n","import { type Component, h, type VNodeChild } from 'vue'\n\nimport { createRow as _createRow } from '@tanstack/vue-table'\n\nimport {\n type MVT_ColumnHelper,\n type MVT_DisplayColumnDef,\n type MVT_GroupColumnDef,\n type MVT_Node,\n type MVT_Row,\n type MVT_RowData,\n type MVT_TableInstance,\n} from '../types'\nimport { getAllLeafColumnDefs, getColumnId } from './column.utils'\n\n/**\n * A renderable passed to {@link flexRender}.\n */\nexport type Renderable<TProps> = ((props: TProps) => VNodeChild) | Component | VNodeChild\n\n/**\n * Vue equivalent of `@tanstack/react-table`'s `flexRender`.\n *\n * `@tanstack/vue-table` only ships a `FlexRender` component\n */\nexport const flexRender = <TProps extends object>(\n Comp: Renderable<TProps>,\n props: TProps,\n): MVT_Node => {\n if (Comp === null || Comp === undefined || Comp === false) {\n return null\n }\n if (typeof Comp === 'function') {\n return (Comp as (props: TProps) => VNodeChild)(props)\n }\n if (typeof Comp === 'object') {\n return h(Comp as Component, props as Record<string, any>)\n }\n return Comp\n}\n\nexport function createMVTColumnHelper<TData extends MVT_RowData>(): MVT_ColumnHelper<TData> {\n return {\n accessor: (accessor, column) => {\n return typeof accessor === 'function'\n ? ({\n ...column,\n accessorFn: accessor,\n } as any)\n : {\n ...column,\n accessorKey: accessor,\n }\n },\n display: (column) => column as MVT_DisplayColumnDef<TData>,\n group: (column) => column as MVT_GroupColumnDef<TData>,\n }\n}\n\nexport const createRow = <TData extends MVT_RowData>(\n table: MVT_TableInstance<TData>,\n originalRow?: TData,\n rowIndex = -1,\n depth = 0,\n subRows?: MVT_Row<TData>[],\n parentId?: string,\n): MVT_Row<TData> =>\n _createRow(\n table as any,\n 'mvt-row-create',\n originalRow ??\n Object.assign(\n {},\n ...getAllLeafColumnDefs(table.options.columns).map((col) => ({\n [getColumnId(col)]: '',\n })),\n ),\n rowIndex,\n depth,\n subRows as any,\n parentId,\n ) as MVT_Row<TData>\n","export const parseFromValuesOrFunc = <T, U>(\n fn: ((arg: U) => T) | T | undefined,\n arg: U,\n): T | undefined => (fn instanceof Function ? fn(arg) : fn)\n","import { inject, type InjectionKey, provide, type Slots, type VNodeChild } from 'vue'\n\nimport {\n type MVT_Cell,\n type MVT_Column,\n type MVT_InternalFilterOption,\n type MVT_Node,\n type MVT_Row,\n type MVT_RowData,\n type MVT_TableInstance,\n} from '../types'\nimport { parseFromValuesOrFunc } from '../utils/utils'\n\n/**\n * Scoped named slots supported on `<MantineVueTable>`.\n *\n * Each slot mirrors the equivalent `renderX` table option and receives the same\n * scoped argument object. A provided named slot takes precedence over the option\n * (see {@link renderMVT_Renderable})\n *\n * ```vue\n * <MantineVueTable :table=\"table\">\n * <template #detailPanel=\"{ row }\">Age: {{ row.original.age }}</template>\n * <template #rowActionMenuItems=\"{ row }\">\n * <MenuItem @click=\"() => edit(row)\">Edit</MenuItem>\n * </template>\n * </MantineVueTable>\n * ```\n */\nexport interface MVT_TableSlots<TData extends MVT_RowData = MVT_RowData> {\n bottomToolbar?: (arg: { table: MVT_TableInstance<TData> }) => VNodeChild\n bottomToolbarCustomActions?: (arg: { table: MVT_TableInstance<TData> }) => VNodeChild\n columnActionsMenuItems?: (arg: {\n column: MVT_Column<TData>\n internalColumnMenuItems: MVT_Node\n table: MVT_TableInstance<TData>\n }) => VNodeChild\n columnFilterModeMenuItems?: (arg: {\n column: MVT_Column<TData>\n internalFilterOptions: MVT_InternalFilterOption[]\n onSelectFilterMode: (filterMode: string) => void\n table: MVT_TableInstance<TData>\n }) => VNodeChild\n createRowModalContent?: (arg: {\n internalEditComponents: MVT_Node[]\n row: MVT_Row<TData>\n table: MVT_TableInstance<TData>\n }) => VNodeChild\n detailPanel?: (arg: {\n internalEditComponents: MVT_Node[]\n row: MVT_Row<TData>\n table: MVT_TableInstance<TData>\n }) => VNodeChild\n editRowModalContent?: (arg: {\n internalEditComponents: MVT_Node[]\n row: MVT_Row<TData>\n table: MVT_TableInstance<TData>\n }) => VNodeChild\n emptyRowsFallback?: (arg: { table: MVT_TableInstance<TData> }) => VNodeChild\n globalFilterModeMenuItems?: (arg: {\n internalFilterOptions: MVT_InternalFilterOption[]\n onSelectFilterMode: (filterMode: string) => void\n table: MVT_TableInstance<TData>\n }) => VNodeChild\n rowActionMenuItems?: (arg: {\n renderedRowIndex?: number\n row: MVT_Row<TData>\n table: MVT_TableInstance<TData>\n }) => VNodeChild\n rowActions?: (arg: {\n cell: MVT_Cell<TData>\n renderedRowIndex?: number\n row: MVT_Row<TData>\n table: MVT_TableInstance<TData>\n }) => VNodeChild\n toolbarAlertBannerContent?: (arg: {\n groupedAlert: MVT_Node | null\n selectedAlert: MVT_Node | null\n table: MVT_TableInstance<TData>\n }) => VNodeChild\n toolbarInternalActions?: (arg: { table: MVT_TableInstance<TData> }) => VNodeChild\n topToolbar?: (arg: { table: MVT_TableInstance<TData> }) => VNodeChild\n topToolbarCustomActions?: (arg: { table: MVT_TableInstance<TData> }) => VNodeChild\n}\n\n/** Union of the named-slot keys `<MantineVueTable>` understands. */\nexport type MVT_TableSlotName = keyof MVT_TableSlots\n\nconst MVT_SLOTS_KEY: InjectionKey<Slots> = Symbol('MVT_Slots')\n\n/**\n * Provide the top-level `<MantineVueTable>` slots to every descendant section.\n * Called once, from the root component's `setup`.\n */\nexport const provideMVT_Slots = (slots: Slots): void => {\n provide(MVT_SLOTS_KEY, slots)\n}\n\n/**\n * Inject the top-level `<MantineVueTable>` slots inside a deep section\n * component (detail panel, row/column action menus, toolbars, …).\n */\nexport const useMVT_Slots = (): Slots => inject(MVT_SLOTS_KEY, {})\n\n/**\n * Resolve a renderable section. A named slot takes precedence over the\n * equivalent `renderX` option/prop; both receive the same scoped argument, so a\n * section can be customized either way with identical semantics.\n */\nexport const renderMVT_Renderable = <TArg extends Record<string, any>>(\n slot: ((arg: TArg) => VNodeChild) | undefined,\n renderProp: ((arg: TArg) => VNodeChild) | MVT_Node | undefined,\n arg: TArg,\n): VNodeChild => (slot ? slot(arg) : parseFromValuesOrFunc(renderProp as any, arg))\n","import { ActionIcon, Menu, Tooltip } from '@mantine-vue/core'\nimport { defineComponent, h, type PropType } from 'vue'\nimport type { MVT_Row, MVT_RowData, MVT_TableInstance } from '../../types'\nimport { renderMVT_Renderable, useMVT_Slots } from '../MVT_TableSlots'\n\nexport const MVT_RowActionMenu = defineComponent({\n name: 'MVTRowActionMenu',\n inheritAttrs: false,\n props: {\n handleEdit: { type: Function as PropType<(event: MouseEvent) => void>, required: true },\n row: { type: Object as PropType<MVT_Row<MVT_RowData>>, required: true },\n table: { type: Object as PropType<MVT_TableInstance<MVT_RowData>>, required: true },\n },\n setup(props, { attrs, slots }) {\n const mvtSlots = useMVT_Slots()\n return () => {\n const { table, row } = props\n const o = table.options\n\n const custom =\n slots.default?.({ row, table }) ??\n renderMVT_Renderable(mvtSlots.rowActionMenuItems, o.renderRowActionMenuItems, {\n row,\n table,\n })\n return h(\n Menu,\n {\n closeOnItemClick: true,\n position:\n o.positionActionsColumn === 'first'\n ? 'bottom-start'\n : o.positionActionsColumn === 'last'\n ? 'bottom-end'\n : undefined,\n withinPortal: true,\n },\n () => [\n h(\n Tooltip,\n { label: o.localization.rowActions, openDelay: 1000, withinPortal: true },\n () =>\n h(Menu.Target, null, () =>\n h(\n ActionIcon,\n {\n 'aria-label': o.localization.rowActions,\n color: 'gray',\n size: 'sm',\n variant: 'subtle',\n ...attrs,\n onClick: (e: MouseEvent) => e.stopPropagation(),\n },\n () => h(o.icons.IconDots),\n ),\n ),\n ),\n h(Menu.Dropdown, { onClick: (e: MouseEvent) => e.stopPropagation() }, () => [\n o.enableEditing &&\n o.editDisplayMode !== 'table' &&\n h(\n Menu.Item,\n { leftSection: h(o.icons.IconEdit), onClick: props.handleEdit },\n () => o.localization.edit,\n ),\n custom,\n ]),\n ],\n )\n }\n },\n})\n",".root {\n display: flex;\n gap: var(--mantine-spacing-xs);\n}\n","import clsx from 'clsx'\nimport { ActionIcon, Box, Button, Tooltip } from '@mantine-vue/core'\nimport { defineComponent, h, type PropType } from 'vue'\nimport classes from './MVT_EditActionButtons.module.css'\nimport type { MVT_Row, MVT_RowData, MVT_TableInstance } from '../../types'\n\nexport const MVT_EditActionButtons = defineComponent({\n name: 'MVTEditActionButtons',\n inheritAttrs: false,\n props: {\n row: { type: Object as PropType<MVT_Row<MVT_RowData>>, required: true },\n table: { type: Object as PropType<MVT_TableInstance<MVT_RowData>>, required: true },\n variant: { type: String as PropType<'icon' | 'text'>, default: 'icon' },\n },\n setup(props, { attrs }) {\n return () => {\n const { row, table } = props\n const state = table.getState()\n const l = table.options.localization\n const creating = state.creatingRow?.id === row.id\n const editing = state.editingRow?.id === row.id\n const cancel = () => {\n if (creating) {\n table.options.onCreatingRowCancel?.({ row, table })\n table.setCreatingRow(null)\n } else if (editing) {\n table.options.onEditingRowCancel?.({ row, table })\n table.setEditingRow(null)\n }\n row._valuesCache = {}\n }\n const save = () => {\n Object.values(table.refs.editInputRefs.value)\n .filter((input) => row.id === input?.name?.split('_')?.[0])\n .forEach((input) => {\n if (input.value !== undefined && Object.hasOwn(row._valuesCache as object, input.name))\n row._valuesCache[input.name] = input.value\n })\n if (creating)\n table.options.onCreatingRowSave?.({\n exitCreatingMode: () => table.setCreatingRow(null),\n row,\n table,\n values: row._valuesCache,\n })\n else if (editing)\n table.options.onEditingRowSave?.({\n exitEditingMode: () => table.setEditingRow(null),\n row,\n table,\n values: row._valuesCache,\n })\n }\n const buttons =\n props.variant === 'icon'\n ? [\n h(Tooltip, { label: l.cancel, withinPortal: true }, () =>\n h(\n ActionIcon,\n { 'aria-label': l.cancel, color: 'red', variant: 'subtle', onClick: cancel },\n () => h(table.options.icons.IconCircleX),\n ),\n ),\n h(Tooltip, { label: l.save, withinPortal: true }, () =>\n h(\n ActionIcon,\n {\n 'aria-label': l.save,\n color: 'blue',\n loading: state.isSaving,\n variant: 'subtle',\n onClick: save,\n },\n () => h(table.options.icons.IconDeviceFloppy),\n ),\n ),\n ]\n : [\n h(Button, { variant: 'subtle', onClick: cancel }, () => l.cancel),\n h(\n Button,\n { loading: state.isSaving, variant: 'filled', onClick: save },\n () => l.save,\n ),\n ]\n return h(\n Box,\n {\n ...attrs,\n class: clsx('mvt-edit-action-buttons', classes.root, attrs.class),\n onClick: (e: MouseEvent) => e.stopPropagation(),\n },\n () => buttons,\n )\n }\n },\n})\n","import { ActionIcon, Tooltip } from '@mantine-vue/core'\nimport { defineComponent, h, type PropType } from 'vue'\nimport type { MVT_Cell, MVT_Row, MVT_RowData, MVT_TableInstance } from '../../types'\nimport { parseFromValuesOrFunc } from '../../utils/utils'\nimport { MVT_RowActionMenu } from '../menus/MVT_RowActionMenu'\nimport { useMVT_Slots } from '../MVT_TableSlots'\nimport { MVT_EditActionButtons } from './MVT_EditActionButtons'\n\nexport const MVT_ToggleRowActionMenuButton = defineComponent({\n name: 'MVTToggleRowActionMenuButton',\n props: {\n cell: { type: Object as PropType<MVT_Cell<MVT_RowData>>, required: true },\n row: { type: Object as PropType<MVT_Row<MVT_RowData>>, required: true },\n table: { type: Object as PropType<MVT_TableInstance<MVT_RowData>>, required: true },\n },\n setup(props, { slots }) {\n const mvtSlots = useMVT_Slots()\n return () => {\n const { cell, row, table } = props\n const o = table.options\n const hasRowActions = slots.default || mvtSlots.rowActions || o.renderRowActions\n const hasRowActionMenuItems = mvtSlots.rowActionMenuItems || o.renderRowActionMenuItems\n const state = table.getState()\n const creating = state.creatingRow?.id === row.id\n const editing = state.editingRow?.id === row.id\n const showEdit =\n (creating && o.createDisplayMode === 'row') || (editing && o.editDisplayMode === 'row')\n const startEdit = (event: MouseEvent) => {\n event.stopPropagation()\n table.setEditingRow({ ...row })\n }\n if (showEdit) return h(MVT_EditActionButtons, { row, table })\n if (hasRowActions)\n return (\n slots.default?.({ cell, row, table }) ??\n (mvtSlots.rowActions ?? o.renderRowActions)?.({ cell, row, table })\n )\n if (!hasRowActionMenuItems && parseFromValuesOrFunc(o.enableEditing, row))\n return h(\n Tooltip,\n { label: o.localization.edit, openDelay: 1000, position: 'right', withinPortal: true },\n () =>\n h(\n ActionIcon,\n {\n 'aria-label': o.localization.edit,\n color: 'gray',\n disabled: !!state.editingRow && state.editingRow.id !== row.id,\n size: 'md',\n variant: 'subtle',\n onClick: startEdit,\n },\n () => h(o.icons.IconEdit),\n ),\n )\n return hasRowActionMenuItems\n ? h(MVT_RowActionMenu, { handleEdit: startEdit, row, table })\n : null\n }\n },\n})\n","import { h } from 'vue'\n\nimport { MVT_ToggleRowActionMenuButton } from '../../components/buttons/MVT_ToggleRowActionMenuButton'\nimport { type MVT_ColumnDef, type MVT_RowData, type MVT_StatefulTableOptions } from '../../types'\nimport { defaultDisplayColumnProps } from '../../utils/displayColumn.utils'\n\nexport const getMVT_RowActionsColumnDef = <TData extends MVT_RowData>(\n tableOptions: MVT_StatefulTableOptions<TData>,\n): MVT_ColumnDef<TData> | null => {\n return {\n Cell: ({ cell, row, table }) => h(MVT_ToggleRowActionMenuButton, { cell, row, table } as any),\n ...defaultDisplayColumnProps({\n header: 'actions',\n id: 'mvt-row-actions',\n size: 70,\n tableOptions,\n }),\n }\n}\n",".grab-icon {\n cursor: grab;\n &:active {\n cursor: grabbing;\n }\n}\n","import clsx from 'clsx'\nimport { ActionIcon, Tooltip } from '@mantine-vue/core'\nimport { defineComponent, h, type PropType } from 'vue'\nimport type { MVT_RowData, MVT_TableInstance } from '../../types'\nimport classes from './MVT_GrabHandleButton.module.css'\n\nexport const MVT_GrabHandleButton = defineComponent({\n name: 'MVTGrabHandleButton',\n props: {\n actionIconProps: { type: Object as PropType<Record<string, any>>, default: () => ({}) },\n onDragEnd: { type: Function as PropType<(event: DragEvent) => void>, required: true },\n onDragStart: { type: Function as PropType<(event: DragEvent) => void>, required: true },\n table: { type: Object as PropType<MVT_TableInstance<MVT_RowData>>, required: true },\n },\n setup(props, { slots }) {\n return () => {\n const { actionIconProps, table } = props\n const label = actionIconProps.title ?? table.options.localization.move\n return h(Tooltip, { label, openDelay: 1000, withinPortal: true }, () =>\n h(\n ActionIcon,\n {\n 'aria-label': label,\n draggable: true,\n ...actionIconProps,\n class: clsx('mvt-grab-handle-button', classes['grab-icon'], actionIconProps.class),\n color: 'gray',\n size: 'sm',\n title: undefined,\n variant: 'transparent',\n onClick: (event: MouseEvent) => {\n event.stopPropagation()\n actionIconProps.onClick?.(event)\n },\n onDragend: props.onDragEnd,\n onDragstart: props.onDragStart,\n } as any,\n () =>\n slots.default?.({ table }) ??\n h(table.options.icons.IconGripHorizontal, { size: '100%' }),\n ),\n )\n }\n },\n})\n","import { defineComponent, h, type PropType, type Ref } from 'vue'\nimport type { MVT_Row, MVT_RowData, MVT_TableInstance } from '../../types'\nimport { parseFromValuesOrFunc } from '../../utils/utils'\nimport { MVT_GrabHandleButton } from '../buttons/MVT_GrabHandleButton'\n\nexport const MVT_TableBodyRowGrabHandle = defineComponent({\n name: 'MVTTableBodyRowGrabHandle',\n inheritAttrs: false,\n props: {\n row: { type: Object as PropType<MVT_Row<MVT_RowData>>, required: true },\n rowRef: { type: Object as PropType<Ref<HTMLTableRowElement | null>>, required: true },\n table: { type: Object as PropType<MVT_TableInstance<MVT_RowData>>, required: true },\n },\n setup(props, { attrs }) {\n return () => {\n const { row, table } = props\n const actionIconProps = {\n ...parseFromValuesOrFunc(table.options.mantineRowDragHandleProps, { row, table }),\n ...attrs,\n }\n return h(MVT_GrabHandleButton, {\n actionIconProps,\n table,\n onDragStart: (event: DragEvent) => {\n actionIconProps.onDragStart?.(event)\n if (props.rowRef.value) event.dataTransfer?.setDragImage(props.rowRef.value, 0, 0)\n table.setDraggingRow(row)\n },\n onDragEnd: (event: DragEvent) => {\n actionIconProps.onDragEnd?.(event)\n table.setDraggingRow(null)\n table.setHoveredRow(null)\n },\n } as any)\n }\n },\n})\n","import { h, type Ref } from 'vue'\n\nimport { MVT_TableBodyRowGrabHandle } from '../../components/body/MVT_TableBodyRowGrabHandle'\nimport { type MVT_ColumnDef, type MVT_RowData, type MVT_StatefulTableOptions } from '../../types'\nimport { defaultDisplayColumnProps } from '../../utils/displayColumn.utils'\n\nexport const getMVT_RowDragColumnDef = <TData extends MVT_RowData>(\n tableOptions: MVT_StatefulTableOptions<TData>,\n): MVT_ColumnDef<TData> | null => {\n return {\n Cell: ({ row, rowRef, table }) =>\n h(MVT_TableBodyRowGrabHandle, {\n row,\n rowRef: rowRef as Ref<HTMLTableRowElement | null>,\n table,\n } as any),\n grow: false,\n ...defaultDisplayColumnProps({\n header: 'move',\n id: 'mvt-row-drag',\n size: 60,\n tableOptions,\n }),\n }\n}\n",".root {\n margin-left: 6px;\n opacity: 0.8;\n &:disabled {\n background-color: transparent;\n border: none;\n }\n &:hover {\n opacity: 1;\n }\n &:global(.xl) {\n margin-left: -6px;\n }\n &:global(.md) {\n margin-left: 0;\n }\n .chevron {\n transition: transform 150ms;\n &.up {\n transform: rotate(-180deg);\n }\n &.right {\n transform: rotate(-90deg);\n }\n }\n}\n","import clsx from 'clsx'\nimport { ActionIcon, Tooltip } from '@mantine-vue/core'\nimport { defineComponent, h, type PropType } from 'vue'\nimport type { MVT_RowData, MVT_TableInstance } from '../../types'\nimport { parseFromValuesOrFunc } from '../../utils/utils'\nimport { useMVT_Slots } from '../MVT_TableSlots'\nimport classes from './MVT_ExpandAllButton.module.css'\n\nexport const MVT_ExpandAllButton = defineComponent({\n name: 'MVTExpandAllButton',\n inheritAttrs: false,\n props: { table: { type: Object as PropType<MVT_TableInstance<MVT_RowData>>, required: true } },\n setup(props, { attrs, slots }) {\n const mvtSlots = useMVT_Slots()\n return () => {\n const { table } = props\n const o = table.options\n const hasDetailPanel = !!o.renderDetailPanel || !!mvtSlots.detailPanel\n const state = table.getState()\n const actionProps = {\n ...parseFromValuesOrFunc(o.mantineExpandAllButtonProps, { table }),\n ...attrs,\n } as Record<string, any>\n const expanded = table.getIsAllRowsExpanded()\n const label =\n actionProps.title ?? (expanded ? o.localization.collapseAll : o.localization.expandAll)\n return h(Tooltip, { label, openDelay: 1000, withinPortal: true }, () =>\n h(\n ActionIcon,\n {\n 'aria-label': o.localization.expandAll,\n color: 'gray',\n variant: 'subtle',\n ...actionProps,\n class: clsx('mvt-expand-all-button', classes.root, actionProps.class, state.density),\n disabled: state.isLoading || (!hasDetailPanel && !table.getCanSomeRowsExpand()),\n title: undefined,\n onClick: () => table.toggleAllRowsExpanded(!expanded),\n } as any,\n () =>\n slots.default?.({ expanded, table }) ??\n h(o.icons.IconChevronsDown, {\n class: clsx(\n classes.chevron,\n expanded ? classes.up : table.getIsSomeRowsExpanded() ? classes.right : undefined,\n ),\n }),\n ),\n )\n }\n },\n})\n","import { MultiSelect, Select, TextInput } from '@mantine-vue/core'\nimport { defineComponent, h, ref, type PropType } from 'vue'\nimport type { MVT_Cell, MVT_RowData, MVT_TableInstance } from '../../types'\nimport { parseFromValuesOrFunc } from '../../utils/utils'\n\nexport const MVT_EditCellTextInput = defineComponent({\n name: 'MVTEditCellTextInput',\n inheritAttrs: false,\n props: {\n cell: { type: Object as PropType<MVT_Cell<MVT_RowData>>, required: true },\n table: { type: Object as PropType<MVT_TableInstance<MVT_RowData>>, required: true },\n },\n setup(props, { attrs, slots }) {\n const value = ref<any>(props.cell.getValue())\n return () => {\n const { cell, table } = props\n const { column, row } = cell\n const def = column.columnDef\n const state = table.getState()\n const creating = state.creatingRow?.id === row.id\n const editing = state.editingRow?.id === row.id\n const arg = { cell, column, row, table }\n const textProps = {\n ...parseFromValuesOrFunc(table.options.mantineEditTextInputProps, arg),\n ...parseFromValuesOrFunc(def.mantineEditTextInputProps, arg),\n ...attrs,\n } as Record<string, any>\n const selectProps = {\n ...parseFromValuesOrFunc(table.options.mantineEditSelectProps, arg),\n ...parseFromValuesOrFunc(def.mantineEditSelectProps, arg),\n ...attrs,\n } as Record<string, any>\n const custom = slots.default?.(arg) ?? def.Edit?.(arg)\n if (custom) return custom\n const save = (newValue: any) => {\n row._valuesCache[column.id] = newValue\n if (creating) table.setCreatingRow(row)\n else if (editing) table.setEditingRow(row)\n }\n const blur = (event: FocusEvent) => {\n textProps.onBlur?.(event)\n save(value.value)\n table.setEditingCell(null)\n }\n const setRef = (el: any) => {\n const node = (el?.$el?.querySelector?.('input') ?? el?.$el ?? el) as HTMLInputElement\n if (node) table.refs.editInputRefs.value[cell.id] = node\n }\n const modal = ['custom', 'modal'].includes(\n (creating ? table.options.createDisplayMode : table.options.editDisplayMode) as string,\n )\n const common = {\n disabled: parseFromValuesOrFunc(def.enableEditing, row) === false,\n label: modal ? def.header : undefined,\n name: cell.id,\n placeholder: !modal ? def.header : undefined,\n modelValue: value.value,\n variant: table.options.editDisplayMode === 'table' ? 'unstyled' : 'default',\n onClick: (e: MouseEvent) => e.stopPropagation(),\n ref: setRef,\n }\n if (def.editVariant === 'select')\n return h(Select, {\n ...common,\n searchable: true,\n ...selectProps,\n 'onUpdate:modelValue': (newValue: any) => {\n value.value = newValue\n },\n onChange: selectProps.onChange,\n onBlur: blur,\n } as any)\n if (def.editVariant === 'multi-select')\n return h(MultiSelect, {\n ...common,\n searchable: true,\n ...selectProps,\n 'onUpdate:modelValue': (newValue: any[]) => {\n value.value = newValue\n },\n onChange: selectProps.onChange,\n onBlur: blur,\n } as any)\n return h(TextInput, {\n ...common,\n modelValue: value.value ?? '',\n ...textProps,\n 'onUpdate:modelValue': (nextValue: string) => {\n value.value = nextValue\n },\n onChange: textProps.onChange,\n onBlur: blur,\n onKeydown: (event: KeyboardEvent) => {\n textProps.onKeyDown?.(event)\n if (event.key === 'Enter') table.refs.editInputRefs.value[cell.id]?.blur()\n },\n } as any)\n }\n },\n})\n",".root {\n opacity: 0.8;\n &:disabled {\n background-color: transparent;\n border: none;\n opacity: 0.3;\n }\n &:hover {\n opacity: 1;\n }\n}\n\n.root-ltr {\n margin-left: calc(calc(var(--mvt-row-depth, 0)) * 16px);\n .chevron {\n transition: transform 200ms;\n &.right {\n transform: rotate(270deg);\n }\n &.up {\n transform: rotate(-180deg);\n }\n }\n}\n\n.root-rtl {\n margin-right: calc(calc(var(--mvt-row-depth, 0)) * 16px);\n .chevron {\n transition: transform 200ms;\n &.right {\n transform: rotate(-270deg);\n }\n &.up {\n transform: rotate(180deg);\n }\n }\n}\n","import clsx from 'clsx'\nimport { ActionIcon, Tooltip, useDirection } from '@mantine-vue/core'\nimport { defineComponent, h, type PropType } from 'vue'\nimport type { MVT_Row, MVT_RowData, MVT_TableInstance } from '../../types'\nimport { parseFromValuesOrFunc } from '../../utils/utils'\nimport { MVT_EditCellTextInput } from '../inputs/MVT_EditCellTextInput'\nimport { useMVT_Slots } from '../MVT_TableSlots'\nimport classes from './MVT_ExpandButton.module.css'\n\nexport const MVT_ExpandButton = defineComponent({\n name: 'MVTExpandButton',\n inheritAttrs: false,\n props: {\n row: { type: Object as PropType<MVT_Row<MVT_RowData>>, required: true },\n table: { type: Object as PropType<MVT_TableInstance<MVT_RowData>>, required: true },\n },\n setup(props, { attrs, slots }) {\n const direction = useDirection()\n const mvtSlots = useMVT_Slots()\n return () => {\n const { row, table } = props\n const o = table.options\n const actionProps = {\n ...parseFromValuesOrFunc(o.mantineExpandButtonProps, { row, table }),\n ...attrs,\n } as Record<string, any>\n const edits = row\n .getAllCells()\n .filter((cell) => cell.column.columnDef.columnDefType === 'data')\n .map((cell) => h(MVT_EditCellTextInput, { key: cell.id, cell, table }))\n const canExpand = row.getCanExpand()\n const expanded = row.getIsExpanded()\n const detail =\n !!mvtSlots.detailPanel ||\n !!o.renderDetailPanel?.({ internalEditComponents: edits, row, table })\n const rtl = direction.dir.value === 'rtl' || o.positionExpandColumn === 'last'\n const label =\n actionProps.title ?? (expanded ? o.localization.collapse : o.localization.expand)\n return h(\n Tooltip,\n { disabled: !canExpand && !detail, label, openDelay: 1000, withinPortal: true },\n () =>\n h(\n ActionIcon,\n {\n 'aria-label': o.localization.expand,\n color: 'gray',\n disabled: !canExpand && !detail,\n variant: 'subtle',\n ...actionProps,\n class: clsx(\n 'mvt-expand-button',\n classes.root,\n classes[`root-${rtl ? 'rtl' : 'ltr'}`],\n actionProps.class,\n ),\n style: { '--mvt-row-depth': `${row.depth}`, ...actionProps.style },\n title: undefined,\n onClick: (event: MouseEvent) => {\n event.stopPropagation()\n row.toggleExpanded()\n actionProps.onClick?.(event)\n },\n } as any,\n () =>\n slots.default?.({ row, table }) ??\n h(o.icons.IconChevronDown, {\n class: clsx(\n 'mvt-expand-button-chevron',\n classes.chevron,\n !canExpand && !detail ? classes.right : expanded ? classes.up : undefined,\n ),\n }),\n ),\n )\n }\n },\n})\n","import { Fragment, h } from 'vue'\n\nimport { Flex, Tooltip } from '@mantine-vue/core'\n\nimport { MVT_ExpandAllButton } from '../../components/buttons/MVT_ExpandAllButton'\nimport { MVT_ExpandButton } from '../../components/buttons/MVT_ExpandButton'\nimport { type MVT_ColumnDef, type MVT_RowData, type MVT_StatefulTableOptions } from '../../types'\nimport { defaultDisplayColumnProps } from '../../utils/displayColumn.utils'\n\nexport const getMVT_RowExpandColumnDef = <TData extends MVT_RowData>(\n tableOptions: MVT_StatefulTableOptions<TData>,\n): MVT_ColumnDef<TData> | null => {\n const {\n defaultColumn,\n enableExpandAll,\n groupedColumnMode,\n positionExpandColumn,\n renderDetailPanel,\n state: { grouping },\n } = tableOptions\n\n const alignProps =\n positionExpandColumn === 'last'\n ? ({\n align: 'right',\n } as const)\n : undefined\n\n return {\n Cell: ({ cell, column, row, table }) => {\n const expandButtonProps = { row, table }\n const subRowsLength = row.subRows?.length\n if (tableOptions.groupedColumnMode === 'remove' && row.groupingColumnId) {\n return h(Flex, { align: 'center', gap: '0.25rem' } as any, () => [\n h(MVT_ExpandButton, expandButtonProps as any),\n h(\n Tooltip,\n {\n label: table.getColumn(row.groupingColumnId!).columnDef.header,\n openDelay: 1000,\n position: 'right',\n } as any,\n () => h('span', row.groupingValue as any),\n ),\n subRowsLength ? h('span', `(${subRowsLength})`) : null,\n ])\n }\n return h(Fragment, null, [\n h(MVT_ExpandButton, expandButtonProps as any),\n column.columnDef.GroupedCell?.({ cell, column, row, table }),\n ])\n },\n Header: enableExpandAll\n ? ({ table }) => {\n return h(Flex, { align: 'center' } as any, () => [\n h(MVT_ExpandAllButton, { table } as any),\n groupedColumnMode === 'remove'\n ? grouping\n ?.map((groupedColumnId) => table.getColumn(groupedColumnId).columnDef.header)\n ?.join(', ')\n : null,\n ])\n }\n : undefined,\n mantineTableBodyCellProps: alignProps,\n mantineTableHeadCellProps: alignProps,\n ...defaultDisplayColumnProps({\n header: 'expand',\n id: 'mvt-row-expand',\n size:\n groupedColumnMode === 'remove'\n ? (defaultColumn?.size ?? 180)\n : renderDetailPanel\n ? enableExpandAll\n ? 60\n : 70\n : 100,\n tableOptions,\n }),\n }\n}\n","import { type MVT_ColumnDef, type MVT_RowData, type MVT_StatefulTableOptions } from '../../types'\nimport { defaultDisplayColumnProps } from '../../utils/displayColumn.utils'\n\nexport const getMVT_RowNumbersColumnDef = <TData extends MVT_RowData>(\n tableOptions: MVT_StatefulTableOptions<TData>,\n): MVT_ColumnDef<TData> | null => {\n const { localization, rowNumberDisplayMode } = tableOptions\n const {\n pagination: { pageIndex, pageSize },\n } = tableOptions.state\n\n return {\n Cell: ({ renderedRowIndex = 0, row }) =>\n ((rowNumberDisplayMode === 'static' ? renderedRowIndex + pageSize * pageIndex : row.index) ??\n 0) + 1,\n grow: false,\n Header: () => localization.rowNumber,\n ...defaultDisplayColumnProps({\n header: 'rowNumbers',\n id: 'mvt-row-numbers',\n size: 50,\n tableOptions,\n }),\n }\n}\n","import { ActionIcon, Tooltip } from '@mantine-vue/core'\nimport { defineComponent, h, ref, type PropType } from 'vue'\nimport type { MVT_Row, MVT_RowData, MVT_TableInstance } from '../../types'\n\nexport const MVT_RowPinButton = defineComponent({\n name: 'MVTRowPinButton',\n inheritAttrs: false,\n props: {\n pinningPosition: { type: String as PropType<'bottom' | 'top'>, required: true },\n row: { type: Object as PropType<MVT_Row<MVT_RowData>>, required: true },\n table: { type: Object as PropType<MVT_TableInstance<MVT_RowData>>, required: true },\n },\n setup(props, { attrs }) {\n const opened = ref(false)\n return () => {\n const { row, table } = props\n const pinned = row.getIsPinned()\n const label = pinned ? table.options.localization.unpin : table.options.localization.pin\n return h(Tooltip, { label, openDelay: 1000, opened: opened.value }, () =>\n h(\n ActionIcon,\n {\n 'aria-label': table.options.localization.pin,\n color: 'gray',\n size: 'xs',\n style: { height: '24px', width: '24px' },\n variant: 'subtle',\n ...attrs,\n onMouseenter: () => {\n opened.value = true\n },\n onMouseleave: () => {\n opened.value = false\n },\n onClick: (event: MouseEvent) => {\n opened.value = false\n event.stopPropagation()\n row.pin(pinned ? false : props.pinningPosition)\n },\n } as any,\n () =>\n pinned\n ? h(table.options.icons.IconX)\n : h(table.options.icons.IconPinned, {\n style: {\n transform: `rotate(${table.options.rowPinningDisplayMode === 'sticky' ? 135 : props.pinningPosition === 'top' ? 180 : 0}deg)`,\n },\n }),\n ),\n )\n }\n },\n})\n","import { Box } from '@mantine-vue/core'\nimport { defineComponent, h, type PropType } from 'vue'\nimport type { MVT_Row, MVT_RowData, MVT_TableInstance } from '../../types'\nimport { parseFromValuesOrFunc } from '../../utils/utils'\nimport { MVT_RowPinButton } from '../buttons/MVT_RowPinButton'\n\nexport const MVT_TableBodyRowPinButton = defineComponent({\n name: 'MVTTableBodyRowPinButton',\n inheritAttrs: false,\n props: {\n row: { type: Object as PropType<MVT_Row<MVT_RowData>>, required: true },\n table: { type: Object as PropType<MVT_TableInstance<MVT_RowData>>, required: true },\n },\n setup(props, { attrs }) {\n return () => {\n const { row, table } = props\n if (!parseFromValuesOrFunc(table.options.enableRowPinning, row as any)) return null\n const common = { ...attrs, row, table }\n if (table.options.rowPinningDisplayMode === 'top-and-bottom' && !row.getIsPinned()) {\n return h(\n Box,\n {\n style: {\n display: 'flex',\n flexDirection: table.getState().density === 'xs' ? 'row' : 'column',\n },\n },\n () => [\n h(MVT_RowPinButton, { ...common, pinningPosition: 'top' } as any),\n h(MVT_RowPinButton, { ...common, pinningPosition: 'bottom' } as any),\n ],\n )\n }\n return h(MVT_RowPinButton, {\n ...common,\n pinningPosition: table.options.rowPinningDisplayMode === 'bottom' ? 'bottom' : 'top',\n } as any)\n }\n },\n})\n","import { h } from 'vue'\n\nimport { MVT_TableBodyRowPinButton } from '../../components/body/MVT_TableBodyRowPinButton'\nimport { type MVT_ColumnDef, type MVT_RowData, type MVT_StatefulTableOptions } from '../../types'\nimport { defaultDisplayColumnProps } from '../../utils/displayColumn.utils'\n\nexport const getMVT_RowPinningColumnDef = <TData extends MVT_RowData>(\n tableOptions: MVT_StatefulTableOptions<TData>,\n): MVT_ColumnDef<TData> | null => {\n return {\n Cell: ({ row, table }) => h(MVT_TableBodyRowPinButton, { row, table } as any),\n grow: false,\n ...defaultDisplayColumnProps({\n header: 'pin',\n id: 'mvt-row-pin',\n size: 60,\n tableOptions,\n }),\n }\n}\n","import { compareItems, type RankingInfo } from '@tanstack/match-sorter-utils'\nimport { type Row, sortingFns } from '@tanstack/vue-table'\n\nimport { type MVT_Row, type MVT_RowData } from '../types'\n\nconst fuzzy = <TData extends MVT_RowData>(rowA: Row<TData>, rowB: Row<TData>, columnId: string) => {\n let dir = 0\n if (rowA.columnFiltersMeta[columnId]) {\n dir = compareItems(\n rowA.columnFiltersMeta[columnId] as RankingInfo,\n rowB.columnFiltersMeta[columnId] as RankingInfo,\n )\n }\n // Provide a fallback for when the item ranks are equal\n return dir === 0 ? sortingFns.alphanumeric(rowA as Row<any>, rowB as Row<any>, columnId) : dir\n}\n\nexport const MVT_SortingFns = {\n ...sortingFns,\n fuzzy,\n}\n\nexport const rankGlobalFuzzy = <TData extends MVT_RowData>(\n rowA: MVT_Row<TData>,\n rowB: MVT_Row<TData>,\n) =>\n Math.max(...Object.values(rowB.columnFiltersMeta).map((v: any) => v.rank)) -\n Math.max(...Object.values(rowA.columnFiltersMeta).map((v: any) => v.rank))\n","import { rankGlobalFuzzy } from '../fns/sortingFns'\nimport { type MVT_Row, type MVT_RowData, type MVT_TableInstance } from '../types'\nimport { parseFromValuesOrFunc } from './utils'\n\nexport const getMVT_Rows = <TData extends MVT_RowData>(\n table: MVT_TableInstance<TData>,\n all?: boolean,\n): MVT_Row<TData>[] => {\n const {\n getCenterRows,\n getPrePaginationRowModel,\n getRowModel,\n getState,\n getTopRows,\n options: {\n createDisplayMode,\n enablePagination,\n enableRowPinning,\n manualPagination,\n positionCreatingRow,\n rowPinningDisplayMode,\n },\n } = table\n const { creatingRow, pagination } = getState()\n\n const isRankingRows = getIsRankingRows(table)\n\n let rows: MVT_Row<TData>[] = []\n if (!isRankingRows) {\n rows =\n !enableRowPinning || rowPinningDisplayMode?.includes('sticky')\n ? all\n ? getPrePaginationRowModel().rows\n : getRowModel().rows\n : getCenterRows()\n } else {\n // fuzzy ranking adjustments\n rows = getPrePaginationRowModel().rows.sort((a, b) => rankGlobalFuzzy(a, b))\n if (enablePagination && !manualPagination && !all) {\n const start = pagination.pageIndex * pagination.pageSize\n rows = rows.slice(start, start + pagination.pageSize)\n }\n if (enableRowPinning && !rowPinningDisplayMode?.includes('sticky')) {\n // \"re-center-ize\" the rows (no top or bottom pinned rows unless sticky)\n rows = rows.filter((row) => !row.getIsPinned())\n }\n }\n // row pinning adjustments\n if (enableRowPinning && rowPinningDisplayMode?.includes('sticky')) {\n const centerPinnedRowIds = rows.filter((row) => row.getIsPinned()).map((r) => r.id)\n\n rows = [...getTopRows().filter((row) => !centerPinnedRowIds.includes(row.id)), ...rows]\n }\n // blank inserted creating row adjustments\n if (positionCreatingRow !== undefined && creatingRow && createDisplayMode === 'row') {\n const creatingRowIndex = !isNaN(+positionCreatingRow)\n ? +positionCreatingRow\n : positionCreatingRow === 'top'\n ? 0\n : rows.length\n rows = [...rows.slice(0, creatingRowIndex), creatingRow, ...rows.slice(creatingRowIndex)]\n }\n\n return rows\n}\n\nexport const getCanRankRows = <TData extends MVT_RowData>(table: MVT_TableInstance<TData>) => {\n const {\n getState,\n options: {\n enableGlobalFilterRankedResults,\n manualExpanding,\n manualFiltering,\n manualGrouping,\n manualSorting,\n },\n } = table\n const { expanded, globalFilterFn } = getState()\n\n return (\n !manualExpanding &&\n !manualFiltering &&\n !manualGrouping &&\n !manualSorting &&\n enableGlobalFilterRankedResults &&\n globalFilterFn === 'fuzzy' &&\n expanded !== true &&\n !Object.values(expanded).some(Boolean)\n )\n}\n\nexport const getIsRankingRows = <TData extends MVT_RowData>(table: MVT_TableInstance<TData>) => {\n const { globalFilter, sorting } = table.getState()\n\n return getCanRankRows(table) && globalFilter && !Object.values(sorting).some(Boolean)\n}\n\nexport const getIsRowSelected = <TData extends MVT_RowData>({\n row,\n table,\n}: {\n row: MVT_Row<TData>\n table: MVT_TableInstance<TData>\n}) => {\n const {\n options: { enableRowSelection },\n } = table\n\n return (\n row.getIsSelected() ||\n (parseFromValuesOrFunc(enableRowSelection, row) &&\n row.getCanSelectSubRows() &&\n row.getIsAllSubRowsSelected())\n )\n}\n\nexport const getMVT_RowSelectionHandler =\n <TData extends MVT_RowData>({\n renderedRowIndex = 0,\n row,\n table,\n }: {\n renderedRowIndex?: number\n row: MVT_Row<TData>\n table: MVT_TableInstance<TData>\n }) =>\n (event: Event, value?: boolean) => {\n const {\n getState,\n options: {\n enableBatchRowSelection,\n enableMultiRowSelection,\n enableRowPinning,\n manualPagination,\n rowPinningDisplayMode,\n },\n refs: { lastSelectedRowId },\n } = table\n const {\n pagination: { pageIndex, pageSize },\n } = getState()\n\n const paginationOffset = manualPagination ? 0 : pageSize * pageIndex\n\n const wasCurrentRowChecked = getIsRowSelected({ row, table })\n\n // toggle selection of this row\n row.toggleSelected(value ?? !wasCurrentRowChecked)\n\n const changedRowIds = new Set<string>([row.id])\n\n // if shift key is pressed, select all rows between last selected and this one\n if (\n enableBatchRowSelection &&\n enableMultiRowSelection &&\n (event as MouseEvent).shiftKey &&\n lastSelectedRowId.value !== null\n ) {\n const rows = getMVT_Rows(table, true)\n\n const lastIndex = rows.findIndex((r) => r.id === lastSelectedRowId.value)\n\n if (lastIndex !== -1) {\n const isLastIndexChecked = getIsRowSelected({\n row: rows?.[lastIndex],\n table,\n })\n\n const currentIndex = renderedRowIndex + paginationOffset\n const [start, end] =\n lastIndex < currentIndex ? [lastIndex, currentIndex] : [currentIndex, lastIndex]\n\n // toggle selection of all rows between last selected and this one\n // but only if the last selected row is not the same as the current one\n if (wasCurrentRowChecked !== isLastIndexChecked) {\n for (let i = start; i <= end; i++) {\n rows[i].toggleSelected(!wasCurrentRowChecked)\n changedRowIds.add(rows[i].id)\n }\n }\n }\n }\n\n // record the last selected row id\n lastSelectedRowId.value = row.id\n\n // if all sub rows were selected, unselect them\n if (row.getCanSelectSubRows() && row.getIsAllSubRowsSelected()) {\n row.subRows?.forEach((r) => r.toggleSelected(false))\n }\n\n if (enableRowPinning && rowPinningDisplayMode?.includes('select')) {\n changedRowIds.forEach((rowId) => {\n const rowToTogglePin = table.getRow(rowId)\n rowToTogglePin.pin(\n !wasCurrentRowChecked //was not previously pinned or selected\n ? rowPinningDisplayMode?.includes('bottom')\n ? 'bottom'\n : 'top'\n : false,\n )\n })\n }\n }\n\nexport const getMVT_SelectAllHandler =\n <TData extends MVT_RowData>({ table }: { table: MVT_TableInstance<TData> }) =>\n (event: Event, value?: boolean, forceAll?: boolean) => {\n const {\n options: { enableRowPinning, rowPinningDisplayMode, selectAllMode },\n refs: { lastSelectedRowId },\n } = table\n\n if (selectAllMode === 'all' || forceAll) {\n table.toggleAllRowsSelected(value ?? (event.target as HTMLInputElement).checked)\n } else {\n table.toggleAllPageRowsSelected(value ?? (event.target as HTMLInputElement).checked)\n }\n if (enableRowPinning && rowPinningDisplayMode?.includes('select')) {\n table.setRowPinning({ bottom: [], top: [] })\n }\n lastSelectedRowId.value = null\n }\n","import { Checkbox, Radio, Switch, Tooltip } from '@mantine-vue/core'\nimport { defineComponent, h, type PropType } from 'vue'\nimport type { MVT_Row, MVT_RowData, MVT_TableInstance } from '../../types'\nimport {\n getIsRowSelected,\n getMVT_RowSelectionHandler,\n getMVT_SelectAllHandler,\n} from '../../utils/row.utils'\nimport { parseFromValuesOrFunc } from '../../utils/utils'\n\nexport const MVT_SelectCheckbox = defineComponent({\n name: 'MVTSelectCheckbox',\n inheritAttrs: false,\n props: {\n renderedRowIndex: { type: Number, default: 0 },\n row: { type: Object as PropType<MVT_Row<MVT_RowData>>, default: undefined },\n table: { type: Object as PropType<MVT_TableInstance<MVT_RowData>>, required: true },\n },\n setup(props, { attrs }) {\n let lastShiftKey = false\n return () => {\n const { row, table } = props\n const o = table.options\n const state = table.getState()\n const selectAll = !row\n const checked = selectAll\n ? o.selectAllMode === 'page'\n ? table.getIsAllPageRowsSelected()\n : table.getIsAllRowsSelected()\n : getIsRowSelected({ row, table })\n const checkboxProps = {\n ...(selectAll\n ? parseFromValuesOrFunc(o.mantineSelectAllCheckboxProps, { table })\n : parseFromValuesOrFunc(o.mantineSelectCheckboxProps, { row, table })),\n ...attrs,\n } as Record<string, any>\n const label =\n checkboxProps.title ??\n (selectAll ? o.localization.toggleSelectAll : o.localization.toggleSelectRow)\n const selection = row\n ? getMVT_RowSelectionHandler({ renderedRowIndex: props.renderedRowIndex, row, table })\n : getMVT_SelectAllHandler({ table })\n const common = {\n 'aria-label': label,\n checked,\n disabled: state.isLoading || (row && !row.getCanSelect()) || row?.id === 'mvt-row-create',\n size: state.density === 'xs' ? 'sm' : 'md',\n ...checkboxProps,\n title: undefined,\n onChange: (nextChecked: boolean) => {\n selection({ shiftKey: lastShiftKey } as unknown as Event, nextChecked)\n checkboxProps.onChange?.(nextChecked)\n lastShiftKey = false\n },\n onClick: (event: MouseEvent) => {\n event.stopPropagation()\n lastShiftKey = event.shiftKey\n checkboxProps.onClick?.(event)\n },\n }\n const control =\n o.selectDisplayMode === 'switch'\n ? h(Switch, common as any)\n : o.selectDisplayMode === 'radio' || o.enableMultiRowSelection === false\n ? h(Radio, common as any)\n : h(Checkbox, {\n indeterminate:\n !checked && selectAll\n ? table.getIsSomeRowsSelected()\n : row?.getIsSomeSelected() && row.getCanSelectSubRows(),\n ...common,\n } as any)\n return h(Tooltip, { label, openDelay: 1000, withinPortal: true }, () =>\n h('span', null, control),\n )\n }\n },\n})\n","import { h } from 'vue'\n\nimport { MVT_SelectCheckbox } from '../../components/inputs/MVT_SelectCheckbox'\nimport { type MVT_ColumnDef, type MVT_RowData, type MVT_StatefulTableOptions } from '../../types'\nimport { defaultDisplayColumnProps } from '../../utils/displayColumn.utils'\n\nexport const getMVT_RowSelectColumnDef = <TData extends MVT_RowData>(\n tableOptions: MVT_StatefulTableOptions<TData>,\n): MVT_ColumnDef<TData> | null => {\n const { enableMultiRowSelection, enableSelectAll } = tableOptions\n\n return {\n Cell: ({ renderedRowIndex, row, table }) =>\n h(MVT_SelectCheckbox, { renderedRowIndex, row, table } as any),\n grow: false,\n Header:\n enableSelectAll && enableMultiRowSelection\n ? ({ table }) => h(MVT_SelectCheckbox, { table } as any)\n : undefined,\n ...defaultDisplayColumnProps({\n header: 'select',\n id: 'mvt-row-select',\n size: enableSelectAll ? 60 : 70,\n tableOptions,\n }),\n }\n}\n","import { aggregationFns } from '@tanstack/vue-table'\n\nexport const MVT_AggregationFns = { ...aggregationFns }\n","import { type RankingInfo, rankings, rankItem } from '@tanstack/match-sorter-utils'\nimport { filterFns, type Row } from '@tanstack/vue-table'\n\nimport { type MVT_FilterOption, type MVT_Localization, type MVT_RowData } from '../types'\n\nconst fuzzy = <TData extends MVT_RowData>(\n row: Row<TData>,\n columnId: string,\n filterValue: number | string,\n addMeta: (item: RankingInfo) => void,\n) => {\n const itemRank = rankItem(row.getValue(columnId), filterValue as string, {\n threshold: rankings.MATCHES,\n })\n addMeta(itemRank)\n return itemRank.passed\n}\n\nfuzzy.autoRemove = (val: any) => !val\n\nconst contains = <TData extends MVT_RowData>(\n row: Row<TData>,\n id: string,\n filterValue: number | string,\n) =>\n row\n .getValue<number | string>(id)\n ?.toString()\n .toLowerCase()\n .trim()\n .includes(filterValue.toString().toLowerCase().trim())\n\ncontains.autoRemove = (val: any) => !val\n\nconst startsWith = <TData extends MVT_RowData>(\n row: Row<TData>,\n id: string,\n filterValue: number | string,\n) =>\n row\n .getValue<number | string>(id)\n ?.toString()\n .toLowerCase()\n .trim()\n .startsWith(filterValue.toString().toLowerCase().trim())\n\nstartsWith.autoRemove = (val: any) => !val\n\nconst endsWith = <TData extends MVT_RowData>(\n row: Row<TData>,\n id: string,\n filterValue: number | string,\n) =>\n row\n .getValue<number | string>(id)\n ?.toString()\n .toLowerCase()\n .trim()\n .endsWith(filterValue.toString().toLowerCase().trim())\n\nendsWith.autoRemove = (val: any) => !val\n\nconst equals = <TData extends MVT_RowData>(\n row: Row<TData>,\n id: string,\n filterValue: number | string,\n) =>\n row.getValue<number | string>(id)?.toString().toLowerCase().trim() ===\n filterValue?.toString().toLowerCase().trim()\n\nequals.autoRemove = (val: any) => !val\n\nconst notEquals = <TData extends MVT_RowData>(\n row: Row<TData>,\n id: string,\n filterValue: number | string,\n) =>\n row.getValue<number | string>(id)?.toString().toLowerCase().trim() !==\n filterValue.toString().toLowerCase().trim()\n\nnotEquals.autoRemove = (val: any) => !val\n\nconst greaterThan = <TData extends MVT_RowData>(\n row: Row<TData>,\n id: string,\n filterValue: number | string,\n) =>\n !isNaN(+filterValue) && !isNaN(+row.getValue<number | string>(id))\n ? +row.getValue<number | string>(id) > +filterValue\n : row.getValue<number | string>(id)?.toString().toLowerCase().trim() >\n filterValue?.toString().toLowerCase().trim()\n\ngreaterThan.autoRemove = (val: any) => !val\n\nconst greaterThanOrEqualTo = <TData extends MVT_RowData>(\n row: Row<TData>,\n id: string,\n filterValue: number | string,\n) => equals(row, id, filterValue) || greaterThan(row, id, filterValue)\n\ngreaterThanOrEqualTo.autoRemove = (val: any) => !val\n\nconst lessThan = <TData extends MVT_RowData>(\n row: Row<TData>,\n id: string,\n filterValue: number | string,\n) =>\n !isNaN(+filterValue) && !isNaN(+row.getValue<number | string>(id))\n ? +row.getValue<number | string>(id) < +filterValue\n : row.getValue<number | string>(id)?.toString().toLowerCase().trim() <\n filterValue?.toString().toLowerCase().trim()\n\nlessThan.autoRemove = (val: any) => !val\n\nconst lessThanOrEqualTo = <TData extends MVT_RowData>(\n row: Row<TData>,\n id: string,\n filterValue: number | string,\n) => equals(row, id, filterValue) || lessThan(row, id, filterValue)\n\nlessThanOrEqualTo.autoRemove = (val: any) => !val\n\nconst between = <TData extends MVT_RowData>(\n row: Row<TData>,\n id: string,\n filterValues: [number | string, number | string],\n) =>\n ((['', undefined] as any[]).includes(filterValues[0]) || greaterThan(row, id, filterValues[0])) &&\n ((!isNaN(+filterValues[0]) && !isNaN(+filterValues[1]) && +filterValues[0] > +filterValues[1]) ||\n (['', undefined] as any[]).includes(filterValues[1]) ||\n lessThan(row, id, filterValues[1]))\n\nbetween.autoRemove = (val: any) => !val\n\nconst betweenInclusive = <TData extends MVT_RowData>(\n row: Row<TData>,\n id: string,\n filterValues: [number | string, number | string],\n) =>\n ((['', undefined] as any[]).includes(filterValues[0]) ||\n greaterThanOrEqualTo(row, id, filterValues[0])) &&\n ((!isNaN(+filterValues[0]) && !isNaN(+filterValues[1]) && +filterValues[0] > +filterValues[1]) ||\n (['', undefined] as any[]).includes(filterValues[1]) ||\n lessThanOrEqualTo(row, id, filterValues[1]))\n\nbetweenInclusive.autoRemove = (val: any) => !val\n\nconst empty = <TData extends MVT_RowData>(\n row: Row<TData>,\n id: string,\n _filterValue: number | string,\n) => !row.getValue<number | string>(id)?.toString().trim()\n\nempty.autoRemove = (val: any) => !val\n\nconst notEmpty = <TData extends MVT_RowData>(\n row: Row<TData>,\n id: string,\n _filterValue: number | string,\n) => !!row.getValue<number | string>(id)?.toString().trim()\n\nnotEmpty.autoRemove = (val: any) => !val\n\nexport const MVT_FilterFns = {\n ...filterFns,\n between,\n betweenInclusive,\n contains,\n empty,\n endsWith,\n equals,\n fuzzy,\n greaterThan,\n greaterThanOrEqualTo,\n lessThan,\n lessThanOrEqualTo,\n notEmpty,\n notEquals,\n startsWith,\n}\n\nexport function localizedFilterOption(localization: MVT_Localization, option: MVT_FilterOption) {\n if (!option) {\n return ''\n }\n const key = `filter${option[0].toUpperCase()}${option.slice(1)}`\n return localization[key as keyof MVT_Localization] ?? ''\n}\n","import {\n IconArrowAutofitContent,\n IconArrowsSort,\n IconBaselineDensityLarge,\n IconBaselineDensityMedium,\n IconBaselineDensitySmall,\n IconBoxMultiple,\n IconChevronDown,\n IconChevronLeft,\n IconChevronLeftPipe,\n IconChevronRight,\n IconChevronRightPipe,\n IconChevronsDown,\n IconCircleX,\n IconClearAll,\n IconColumns,\n IconDeviceFloppy,\n IconDots,\n IconDotsVertical,\n IconEdit,\n IconEyeOff,\n IconFilter,\n IconFilterCog,\n IconFilterOff,\n IconGripHorizontal,\n IconMaximize,\n IconMinimize,\n IconPinned,\n IconPinnedOff,\n IconSearch,\n IconSearchOff,\n IconSortAscending,\n IconSortDescending,\n IconX,\n} from '@tabler/icons-vue'\n\nexport const MVT_Default_Icons = {\n IconArrowAutofitContent,\n IconArrowsSort,\n IconBaselineDensityLarge,\n IconBaselineDensityMedium,\n IconBaselineDensitySmall,\n IconBoxMultiple,\n IconChevronDown,\n IconChevronLeft,\n IconChevronLeftPipe,\n IconChevronRight,\n IconChevronRightPipe,\n IconChevronsDown,\n IconCircleX,\n IconClearAll,\n IconColumns,\n IconDeviceFloppy,\n IconDots,\n IconDotsVertical,\n IconEdit,\n IconEyeOff,\n IconFilter,\n IconFilterCog,\n IconFilterOff,\n IconGripHorizontal,\n IconMaximize,\n IconMinimize,\n IconPinned,\n IconPinnedOff,\n IconSearch,\n IconSearchOff,\n IconSortAscending,\n IconSortDescending,\n IconX,\n} as const\n\nexport type MVT_Icons = Record<keyof typeof MVT_Default_Icons, any>\n","import { type MVT_Localization } from '..'\n\nexport const MVT_Localization_EN: MVT_Localization = {\n actions: 'Actions',\n and: 'and',\n cancel: 'Cancel',\n changeFilterMode: 'Change filter mode',\n changeSearchMode: 'Change search mode',\n clearFilter: 'Clear filter',\n clearSearch: 'Clear search',\n clearSelection: 'Clear selection',\n clearSort: 'Clear sort',\n clickToCopy: 'Click to copy',\n copy: 'Copy',\n collapse: 'Collapse',\n collapseAll: 'Collapse all',\n columnActions: 'Column Actions',\n copiedToClipboard: 'Copied to clipboard',\n dropToGroupBy: 'Drop to group by {column}',\n edit: 'Edit',\n expand: 'Expand',\n expandAll: 'Expand all',\n filterArrIncludes: 'Includes',\n filterArrIncludesAll: 'Includes all',\n filterArrIncludesSome: 'Includes',\n filterBetween: 'Between',\n filterBetweenInclusive: 'Between Inclusive',\n filterByColumn: 'Filter by {column}',\n filterContains: 'Contains',\n filterEmpty: 'Empty',\n filterEndsWith: 'Ends With',\n filterEquals: 'Equals',\n filterEqualsString: 'Equals',\n filterFuzzy: 'Fuzzy',\n filterGreaterThan: 'Greater Than',\n filterGreaterThanOrEqualTo: 'Greater Than Or Equal To',\n filterInNumberRange: 'Between',\n filterIncludesString: 'Contains',\n filterIncludesStringSensitive: 'Contains',\n filterLessThan: 'Less Than',\n filterLessThanOrEqualTo: 'Less Than Or Equal To',\n filterMode: 'Filter Mode: {filterType}',\n filterNotEmpty: 'Not Empty',\n filterNotEquals: 'Not Equals',\n filterStartsWith: 'Starts With',\n filterWeakEquals: 'Equals',\n filteringByColumn: 'Filtering by {column} - {filterType} {filterValue}',\n goToFirstPage: 'Go to first page',\n goToLastPage: 'Go to last page',\n goToNextPage: 'Go to next page',\n goToPreviousPage: 'Go to previous page',\n grab: 'Grab',\n groupByColumn: 'Group by {column}',\n groupedBy: 'Grouped by ',\n hideAll: 'Hide all',\n hideColumn: 'Hide {column} column',\n max: 'Max',\n min: 'Min',\n move: 'Move',\n noRecordsToDisplay: 'No records to display',\n noResultsFound: 'No results found',\n of: 'of',\n or: 'or',\n pin: 'Pin',\n pinToLeft: 'Pin to left',\n pinToRight: 'Pin to right',\n resetColumnSize: 'Reset column size',\n resetOrder: 'Reset order',\n rowActions: 'Row Actions',\n rowNumber: '#',\n rowNumbers: 'Row Numbers',\n rowsPerPage: 'Rows per page',\n save: 'Save',\n search: 'Search',\n selectedCountOfRowCountRowsSelected: '{selectedCount} of {rowCount} row(s) selected',\n select: 'Select',\n showAll: 'Show all',\n showAllColumns: 'Show all columns',\n showHideColumns: 'Show/Hide columns',\n showHideFilters: 'Show/Hide filters',\n showHideSearch: 'Show/Hide search',\n sortByColumnAsc: 'Sort by {column} ascending',\n sortByColumnDesc: 'Sort by {column} descending',\n sortedByColumnAsc: 'Sorted by {column} ascending',\n sortedByColumnDesc: 'Sorted by {column} descending',\n thenBy: ', then by ',\n toggleDensity: 'Toggle density',\n toggleFullScreen: 'Toggle full screen',\n toggleSelectAll: 'Toggle select all',\n toggleSelectRow: 'Toggle select row',\n toggleVisibility: 'Toggle visibility',\n ungroupByColumn: 'Ungroup by {column}',\n unpin: 'Unpin',\n unpinAll: 'Unpin all',\n}\n","/* oxlint-disable prefer-const */\n\nimport {\n getCoreRowModel,\n getExpandedRowModel,\n getFacetedMinMaxValues,\n getFacetedRowModel,\n getFacetedUniqueValues,\n getFilteredRowModel,\n getGroupedRowModel,\n getPaginationRowModel,\n getSortedRowModel,\n} from '@tanstack/vue-table'\n\nimport { useDirection } from '@mantine-vue/core'\n\nimport { MVT_AggregationFns } from '../fns/aggregationFns'\nimport { MVT_FilterFns } from '../fns/filterFns'\nimport { MVT_SortingFns } from '../fns/sortingFns'\nimport { MVT_Default_Icons } from '../icons'\nimport { MVT_Localization_EN } from '../locales/en'\nimport { type MVT_DefinedTableOptions, type MVT_RowData, type MVT_TableOptions } from '../types'\n\nexport const MVT_DefaultColumn = {\n filterVariant: 'text',\n maxSize: 1000,\n minSize: 40,\n size: 180,\n} as const\n\nexport const MVT_DefaultDisplayColumn = {\n columnDefType: 'display',\n enableClickToCopy: false,\n enableColumnActions: false,\n enableColumnDragging: false,\n enableColumnFilter: false,\n enableColumnOrdering: false,\n enableEditing: false,\n enableGlobalFilter: false,\n enableGrouping: false,\n enableHiding: false,\n enableResizing: false,\n enableSorting: false,\n} as const\n\n/**\n * Applies MVT's option defaults\n */\nexport const useMVT_TableOptions: <TData extends MVT_RowData>(\n tableOptions: MVT_TableOptions<TData>,\n) => MVT_DefinedTableOptions<TData> = <TData extends MVT_RowData>(\n rawOptions: MVT_TableOptions<TData>,\n) => {\n let {\n aggregationFns,\n autoResetExpanded = false,\n columnFilterDisplayMode = 'subheader',\n columnResizeDirection,\n columnResizeMode = 'onChange',\n createDisplayMode = 'modal',\n defaultColumn,\n defaultDisplayColumn,\n editDisplayMode = 'modal',\n enableBatchRowSelection = true,\n enableBottomToolbar = true,\n enableColumnActions = true,\n enableColumnFilters = true,\n enableColumnOrdering = false,\n enableColumnPinning = false,\n enableColumnResizing = false,\n enableColumnVirtualization,\n enableDensityToggle = true,\n enableExpandAll = true,\n enableExpanding,\n enableFacetedValues = false,\n enableFilterMatchHighlighting = true,\n enableFilters = true,\n enableFullScreenToggle = true,\n enableGlobalFilter = true,\n enableGlobalFilterRankedResults = true,\n enableGrouping = false,\n enableHeaderActionsHoverReveal = false,\n enableHiding = true,\n enableMultiRowSelection = true,\n enableMultiSort = true,\n enablePagination = true,\n enableRowPinning = false,\n enableRowSelection = false,\n enableRowVirtualization,\n enableSelectAll = true,\n enableSorting = true,\n enableStickyHeader = false,\n enableTableFooter = true,\n enableTableHead = true,\n enableToolbarInternalActions = true,\n enableTopToolbar = true,\n filterFns,\n icons,\n layoutMode,\n localization,\n manualFiltering,\n manualGrouping,\n manualPagination,\n manualSorting,\n paginationDisplayMode = 'default',\n positionActionsColumn = 'first',\n positionCreatingRow = 'top',\n positionExpandColumn = 'first',\n positionGlobalFilter = 'right',\n positionPagination = 'bottom',\n positionToolbarAlertBanner = 'top',\n positionToolbarDropZone = 'top',\n rowNumberDisplayMode = 'static',\n rowPinningDisplayMode = 'sticky',\n selectAllMode = 'page',\n sortingFns,\n ...rest\n } = rawOptions\n\n const direction = useDirection()\n\n icons = { ...MVT_Default_Icons, ...icons }\n localization = {\n ...MVT_Localization_EN,\n ...localization,\n }\n aggregationFns = { ...MVT_AggregationFns, ...aggregationFns }\n filterFns = { ...MVT_FilterFns, ...filterFns }\n sortingFns = { ...MVT_SortingFns, ...sortingFns }\n defaultColumn = { ...MVT_DefaultColumn, ...defaultColumn }\n defaultDisplayColumn = {\n ...MVT_DefaultDisplayColumn,\n ...defaultDisplayColumn,\n }\n\n if (!columnResizeDirection) {\n columnResizeDirection = direction.dir.value || 'ltr'\n }\n\n layoutMode = layoutMode || (enableColumnResizing ? 'grid-no-grow' : 'semantic')\n if (layoutMode === 'semantic' && (enableRowVirtualization || enableColumnVirtualization)) {\n layoutMode = 'grid'\n }\n\n if (enableRowVirtualization) {\n enableStickyHeader = true\n }\n\n if (enablePagination === false && manualPagination === undefined) {\n manualPagination = true\n }\n\n if (!rest.data?.length) {\n manualFiltering = true\n manualGrouping = true\n manualPagination = true\n manualSorting = true\n }\n\n const definedOptions = {\n aggregationFns,\n autoResetExpanded,\n columnFilterDisplayMode,\n columnResizeDirection,\n columnResizeMode,\n createDisplayMode,\n defaultColumn,\n defaultDisplayColumn,\n editDisplayMode,\n enableBatchRowSelection,\n enableBottomToolbar,\n enableColumnActions,\n enableColumnFilters,\n enableColumnOrdering,\n enableColumnPinning,\n enableColumnResizing,\n enableColumnVirtualization,\n enableDensityToggle,\n enableExpandAll,\n enableExpanding,\n enableFacetedValues,\n enableFilterMatchHighlighting,\n enableFilters,\n enableFullScreenToggle,\n enableGlobalFilter,\n enableGlobalFilterRankedResults,\n enableGrouping,\n enableHeaderActionsHoverReveal,\n enableHiding,\n enableMultiRowSelection,\n enableMultiSort,\n enablePagination,\n enableRowPinning,\n enableRowSelection,\n enableRowVirtualization,\n enableSelectAll,\n enableSorting,\n enableStickyHeader,\n enableTableFooter,\n enableTableHead,\n enableToolbarInternalActions,\n enableTopToolbar,\n filterFns,\n getCoreRowModel: getCoreRowModel(),\n getExpandedRowModel: enableExpanding || enableGrouping ? getExpandedRowModel() : undefined,\n getFacetedMinMaxValues: enableFacetedValues ? getFacetedMinMaxValues() : undefined,\n getFacetedRowModel: enableFacetedValues ? getFacetedRowModel() : undefined,\n getFacetedUniqueValues: enableFacetedValues ? getFacetedUniqueValues() : undefined,\n getFilteredRowModel:\n enableColumnFilters || enableGlobalFilter || enableFilters\n ? getFilteredRowModel()\n : undefined,\n getGroupedRowModel: enableGrouping ? getGroupedRowModel() : undefined,\n getPaginationRowModel: enablePagination ? getPaginationRowModel() : undefined,\n getSortedRowModel: enableSorting ? getSortedRowModel() : undefined,\n getSubRows: (row) => row?.subRows,\n icons,\n layoutMode,\n localization,\n manualFiltering,\n manualGrouping,\n manualPagination,\n manualSorting,\n paginationDisplayMode,\n positionActionsColumn,\n positionCreatingRow,\n positionExpandColumn,\n positionGlobalFilter,\n positionPagination,\n positionToolbarAlertBanner,\n positionToolbarDropZone,\n rowNumberDisplayMode,\n rowPinningDisplayMode,\n selectAllMode,\n sortingFns,\n ...rest,\n } as MVT_DefinedTableOptions<TData>\n\n Object.defineProperty(definedOptions, 'data', {\n configurable: true,\n enumerable: true,\n get: () => rawOptions.data,\n })\n Object.defineProperty(definedOptions, 'columns', {\n configurable: true,\n enumerable: true,\n get: () => rawOptions.columns,\n })\n Object.defineProperty(definedOptions, 'state', {\n configurable: true,\n enumerable: true,\n get: () => rawOptions.state,\n })\n Object.defineProperty(definedOptions, 'rowCount', {\n configurable: true,\n enumerable: true,\n get: () => rawOptions.rowCount,\n })\n\n return definedOptions\n}\n","import { MVT_DefaultDisplayColumn } from '../useMVT_TableOptions'\n\nimport { type MVT_ColumnDef, type MVT_RowData, type MVT_StatefulTableOptions } from '../../types'\nimport { defaultDisplayColumnProps } from '../../utils/displayColumn.utils'\n\nconst blankColProps = {\n children: null,\n style: {\n minWidth: 0,\n padding: 0,\n width: 0,\n },\n}\n\nexport const getMVT_RowSpacerColumnDef = <TData extends MVT_RowData>(\n tableOptions: MVT_StatefulTableOptions<TData>,\n): MVT_ColumnDef<TData> | null => {\n return {\n ...defaultDisplayColumnProps({\n id: 'mvt-row-spacer',\n size: 0,\n tableOptions,\n }),\n grow: true,\n ...MVT_DefaultDisplayColumn,\n mantineTableBodyCellProps: blankColProps,\n mantineTableFooterCellProps: blankColProps,\n mantineTableHeadCellProps: blankColProps,\n }\n}\n","import { onMounted, ref, watch } from 'vue'\n\nimport { type MVT_RowData, type MVT_SortingState, type MVT_TableInstance } from '../types'\nimport { getDefaultColumnOrderIds } from '../utils/displayColumn.utils'\nimport { getCanRankRows } from '../utils/row.utils'\n\n/**\n * Side effects for the table instance.\n */\nexport const useMVT_Effects = <TData extends MVT_RowData>(table: MVT_TableInstance<TData>) => {\n const {\n getIsSomeRowsPinned,\n getPrePaginationRowModel,\n getState,\n options: { enablePagination, enableRowPinning, rowCount },\n } = table\n\n const initialBodyHeight = ref<string>()\n const previousTop = ref<number>()\n const appliedSort = ref<MVT_SortingState>(getState().sorting)\n\n onMounted(() => {\n if (typeof window !== 'undefined') {\n initialBodyHeight.value = document.body.style.height\n }\n })\n\n //hide scrollbars when table is in full screen mode, preserve body scroll position after full screen exit\n watch(\n () => getState().isFullScreen,\n (isFullScreen) => {\n if (typeof window !== 'undefined') {\n if (isFullScreen) {\n previousTop.value = document.body.getBoundingClientRect().top //save scroll position\n document.body.style.height = '100dvh' //hide page scrollbars when table is in full screen mode\n } else {\n document.body.style.height = initialBodyHeight.value as string\n if (!previousTop.value) return\n //restore scroll position\n window.scrollTo({\n behavior: 'instant',\n top: -1 * (previousTop.value as number),\n })\n }\n }\n },\n { flush: 'post' },\n )\n\n //recalculate column order when columns change or features are toggled on/off\n watch(\n () => table.options.columns.length,\n (totalColumnCount) => {\n if (totalColumnCount !== getState().columnOrder.length) {\n table.setColumnOrder(getDefaultColumnOrderIds(table.options as any))\n }\n },\n { flush: 'post' },\n )\n\n //if page index is out of bounds, set it to the last page\n watch(\n () => rowCount ?? getPrePaginationRowModel().rows.length,\n (totalRowCount) => {\n const { isLoading, pagination, showSkeletons } = getState()\n if (!enablePagination || isLoading || showSkeletons) return\n const { pageIndex, pageSize } = pagination\n const firstVisibleRowIndex = pageIndex * pageSize\n if (firstVisibleRowIndex >= totalRowCount && firstVisibleRowIndex > 0) {\n table.setPageIndex(Math.ceil(totalRowCount / pageSize) - 1)\n }\n },\n { flush: 'post' },\n )\n\n //track the last applied sort\n watch(\n () => getState().sorting,\n (sorting) => {\n if (sorting.length) {\n appliedSort.value = sorting\n }\n },\n { flush: 'post' },\n )\n\n //turn off sort when global filter is looking for ranked results\n watch(\n () => getState().globalFilter,\n () => {\n if (!getCanRankRows(table)) return\n if (getState().globalFilter) {\n table.setSorting([])\n } else {\n table.setSorting(() => appliedSort.value || [])\n }\n },\n { flush: 'post' },\n )\n\n //fix pinned row top style when density changes\n watch(\n () => getState().density,\n () => {\n if (enableRowPinning && getIsSomeRowsPinned()) {\n setTimeout(() => {\n //touch a reactive dependency to force a re-render, used here to recompute pinned-row offsets\n table.setDensity((d) => d)\n }, 150)\n }\n },\n { flush: 'post' },\n )\n}\n","import { computed, ref, shallowRef } from 'vue'\n\nimport { useVueTable } from '@tanstack/vue-table'\n\nimport {\n type MVT_Cell,\n type MVT_Column,\n type MVT_ColumnDef,\n type MVT_ColumnFilterFnsState,\n type MVT_ColumnOrderState,\n type MVT_ColumnSizingInfoState,\n type MVT_DefinedTableOptions,\n type MVT_DensityState,\n type MVT_FilterOption,\n type MVT_GroupingState,\n type MVT_PaginationState,\n type MVT_Row,\n type MVT_RowData,\n type MVT_StatefulTableOptions,\n type MVT_TableInstance,\n type MVT_TableState,\n type MVT_Updater,\n} from '../types'\nimport {\n getAllLeafColumnDefs,\n getColumnId,\n getDefaultColumnFilterFn,\n prepareColumns,\n} from '../utils/column.utils'\nimport {\n getDefaultColumnOrderIds,\n showRowActionsColumn,\n showRowDragColumn,\n showRowExpandColumn,\n showRowNumbersColumn,\n showRowPinningColumn,\n showRowSelectionColumn,\n showRowSpacerColumn,\n} from '../utils/displayColumn.utils'\nimport { createRow } from '../utils/tanstack.helpers'\nimport { getMVT_RowActionsColumnDef } from './display-columns/getMVT_RowActionsColumnDef'\nimport { getMVT_RowDragColumnDef } from './display-columns/getMVT_RowDragColumnDef'\nimport { getMVT_RowExpandColumnDef } from './display-columns/getMVT_RowExpandColumnDef'\nimport { getMVT_RowNumbersColumnDef } from './display-columns/getMVT_RowNumbersColumnDef'\nimport { getMVT_RowPinningColumnDef } from './display-columns/getMVT_RowPinningColumnDef'\nimport { getMVT_RowSelectColumnDef } from './display-columns/getMVT_RowSelectColumnDef'\nimport { getMVT_RowSpacerColumnDef } from './display-columns/getMVT_RowSpacerColumnDef'\nimport { useMVT_Effects } from './useMVT_Effects'\n\nconst applyUpdater = <T>(target: { value: T }, updater: MVT_Updater<T>) => {\n target.value = updater instanceof Function ? (updater as (prev: T) => T)(target.value) : updater\n}\n\n/**\n * The MVT composable that wraps TanStack's `useVueTable` and adds MVT\n * functionality. MVT-managed state slices are held in Vue refs and injected\n * into the table via reactive getters\n *\n * @param definedTableOptions - table options with proper defaults set\n * @returns the MVT table instance\n */\nexport const useMVT_TableInstance = <TData extends MVT_RowData>(\n definedTableOptions: MVT_DefinedTableOptions<TData>,\n): MVT_TableInstance<TData> => {\n //DOM refs\n const lastSelectedRowId = ref<null | string>(null)\n const bottomToolbarRef = ref<HTMLDivElement | null>(null)\n const editInputRefs = ref<Record<string, HTMLInputElement>>({})\n const filterInputRefs = ref<Record<string, HTMLInputElement>>({})\n const searchInputRef = ref<HTMLInputElement | null>(null)\n const tableContainerRef = ref<HTMLDivElement | null>(null)\n const tableHeadCellRefs = ref<Record<string, HTMLTableCellElement>>({})\n const tablePaperRef = ref<HTMLDivElement | null>(null)\n const topToolbarRef = ref<HTMLDivElement | null>(null)\n const tableHeadRef = ref<HTMLTableSectionElement | null>(null)\n const tableFooterRef = ref<HTMLTableSectionElement | null>(null)\n\n //transform initial state with proper column order\n const initialState: Partial<MVT_TableState<TData>> = definedTableOptions.initialState ?? {}\n initialState.columnOrder =\n initialState.columnOrder ??\n getDefaultColumnOrderIds({\n ...definedTableOptions,\n state: {\n ...definedTableOptions.initialState,\n ...definedTableOptions.state,\n },\n } as MVT_StatefulTableOptions<TData>)\n initialState.globalFilterFn = definedTableOptions.globalFilterFn ?? 'fuzzy'\n\n definedTableOptions.initialState = initialState\n\n const mvtSlots = shallowRef<Record<string, unknown>>({})\n ;(definedTableOptions as any)._mvtSlots = mvtSlots\n\n const creatingRow = shallowRef<MVT_Row<TData> | null>(initialState.creatingRow ?? null)\n const columnFilterFns = ref<MVT_ColumnFilterFnsState>(\n Object.assign(\n {},\n ...getAllLeafColumnDefs(definedTableOptions.columns as MVT_ColumnDef<TData>[]).map((col) => ({\n [getColumnId(col)]:\n col.filterFn instanceof Function\n ? (col.filterFn.name ?? 'custom')\n : (col.filterFn ??\n initialState?.columnFilterFns?.[getColumnId(col)] ??\n getDefaultColumnFilterFn(col)),\n })),\n ),\n )\n const columnOrder = ref<MVT_ColumnOrderState>(initialState.columnOrder ?? [])\n const columnSizingInfo = shallowRef<MVT_ColumnSizingInfoState>(\n initialState.columnSizingInfo ?? ({} as MVT_ColumnSizingInfoState),\n )\n const density = ref<MVT_DensityState>(initialState?.density ?? 'md')\n const draggingColumn = shallowRef<MVT_Column<TData> | null>(initialState.draggingColumn ?? null)\n const draggingRow = shallowRef<MVT_Row<TData> | null>(initialState.draggingRow ?? null)\n const editingCell = shallowRef<MVT_Cell<TData> | null>(initialState.editingCell ?? null)\n const editingRow = shallowRef<MVT_Row<TData> | null>(initialState.editingRow ?? null)\n const globalFilterFn = ref<MVT_FilterOption>(initialState.globalFilterFn ?? 'fuzzy')\n const grouping = ref<MVT_GroupingState>(initialState.grouping ?? [])\n const hoveredColumn = shallowRef<null | Partial<MVT_Column<TData>>>(\n initialState.hoveredColumn ?? null,\n )\n const hoveredRow = shallowRef<null | Partial<MVT_Row<TData>>>(initialState.hoveredRow ?? null)\n const isFullScreen = ref<boolean>(initialState?.isFullScreen ?? false)\n const pagination = ref<MVT_PaginationState>(\n initialState?.pagination ?? { pageIndex: 0, pageSize: 10 },\n )\n const showAlertBanner = ref<boolean>(initialState?.showAlertBanner ?? false)\n const showColumnFilters = ref<boolean>(initialState?.showColumnFilters ?? false)\n const showGlobalFilter = ref<boolean>(initialState?.showGlobalFilter ?? false)\n const showToolbarDropZone = ref<boolean>(initialState?.showToolbarDropZone ?? false)\n\n //User-provided state slices stay reactive via\n //getters over the live source (controlled pagination/sorting/filters update instead of freezing at their initial value);\n const stateDescriptor = Object.getOwnPropertyDescriptor(definedTableOptions, 'state')\n const readUserState = (): Partial<MVT_TableState<TData>> =>\n ((stateDescriptor?.get\n ? stateDescriptor.get.call(definedTableOptions)\n : stateDescriptor?.value) as Partial<MVT_TableState<TData>> | undefined) ?? {}\n const userStateKeys = new Set(Object.keys(readUserState()))\n\n const state = {} as MVT_TableState<TData>\n userStateKeys.forEach((key) => {\n Object.defineProperty(state, key, {\n configurable: true,\n enumerable: true,\n get: () => (readUserState() as Record<string, unknown>)[key],\n })\n })\n const defineState = <K extends keyof MVT_TableState<TData>>(\n key: K,\n getter: () => MVT_TableState<TData>[K],\n ) => {\n if (!userStateKeys.has(key as string)) {\n Object.defineProperty(state, key, { configurable: true, enumerable: true, get: getter })\n }\n }\n defineState('columnFilterFns', () => columnFilterFns.value)\n defineState('columnOrder', () => columnOrder.value)\n defineState('columnSizingInfo', () => columnSizingInfo.value)\n defineState('creatingRow', () => creatingRow.value)\n defineState('density', () => density.value)\n defineState('draggingColumn', () => draggingColumn.value)\n defineState('draggingRow', () => draggingRow.value)\n defineState('editingCell', () => editingCell.value)\n defineState('editingRow', () => editingRow.value)\n defineState('globalFilterFn', () => globalFilterFn.value)\n defineState('grouping', () => grouping.value)\n defineState('hoveredColumn', () => hoveredColumn.value)\n defineState('hoveredRow', () => hoveredRow.value)\n defineState('isFullScreen', () => isFullScreen.value)\n defineState('pagination', () => pagination.value)\n defineState('showAlertBanner', () => showAlertBanner.value)\n defineState('showColumnFilters', () => showColumnFilters.value)\n defineState('showGlobalFilter', () => showGlobalFilter.value)\n defineState('showToolbarDropZone', () => showToolbarDropZone.value)\n\n Object.defineProperty(definedTableOptions, 'state', {\n configurable: true,\n enumerable: true,\n writable: true,\n value: state,\n })\n\n //The table options now include all state needed to help determine column\n //visibility and order logic\n const statefulTableOptions = definedTableOptions as MVT_StatefulTableOptions<TData>\n\n //don't recompute columnDefs while resizing column or dragging column/row\n let columnDefsCache: MVT_ColumnDef<TData>[] = []\n const columns = computed<MVT_ColumnDef<TData>[]>(() => {\n if (\n statefulTableOptions.state.columnSizingInfo.isResizingColumn ||\n statefulTableOptions.state.draggingColumn ||\n statefulTableOptions.state.draggingRow\n ) {\n return columnDefsCache\n }\n const prepared = prepareColumns({\n columnDefs: [\n ...([\n showRowPinningColumn(statefulTableOptions) &&\n getMVT_RowPinningColumnDef(statefulTableOptions),\n showRowDragColumn(statefulTableOptions) && getMVT_RowDragColumnDef(statefulTableOptions),\n showRowActionsColumn(statefulTableOptions) &&\n getMVT_RowActionsColumnDef(statefulTableOptions),\n showRowExpandColumn(statefulTableOptions) &&\n getMVT_RowExpandColumnDef(statefulTableOptions),\n showRowSelectionColumn(statefulTableOptions) &&\n getMVT_RowSelectColumnDef(statefulTableOptions),\n showRowNumbersColumn(statefulTableOptions) &&\n getMVT_RowNumbersColumnDef(statefulTableOptions),\n ].filter(Boolean) as MVT_ColumnDef<TData>[]),\n ...statefulTableOptions.columns,\n ...([\n showRowSpacerColumn(statefulTableOptions) &&\n getMVT_RowSpacerColumnDef(statefulTableOptions),\n ].filter(Boolean) as MVT_ColumnDef<TData>[]),\n ],\n tableOptions: statefulTableOptions,\n }) as unknown as MVT_ColumnDef<TData>[]\n columnDefsCache = prepared\n return prepared\n })\n\n //if loading, generate blank rows to show skeleton loaders\n const data = computed<TData[]>(() => {\n const s = statefulTableOptions.state\n return (s.isLoading || s.showSkeletons) && !definedTableOptions.data.length\n ? [...Array(Math.min(s.pagination.pageSize, 20)).fill(null)].map(() =>\n Object.assign(\n {},\n ...getAllLeafColumnDefs(columns.value).map((col) => ({\n [getColumnId(col)]: null,\n })),\n ),\n )\n : definedTableOptions.data\n })\n\n const {\n columns: _columns,\n data: _data,\n rowCount: _rowCount,\n ...restOptions\n } = statefulTableOptions\n\n const table = useVueTable<TData>({\n onColumnOrderChange: (updater: MVT_Updater<MVT_ColumnOrderState>) =>\n applyUpdater(columnOrder, updater),\n onColumnSizingInfoChange: (updater: MVT_Updater<MVT_ColumnSizingInfoState>) =>\n applyUpdater(columnSizingInfo, updater),\n onGroupingChange: (updater: MVT_Updater<MVT_GroupingState>) => applyUpdater(grouping, updater),\n onPaginationChange: (updater: MVT_Updater<MVT_PaginationState>) =>\n applyUpdater(pagination, updater),\n ...(restOptions as any),\n get columns() {\n return columns.value as any\n },\n get data() {\n return data.value\n },\n get rowCount() {\n return definedTableOptions.rowCount\n },\n globalFilterFn: statefulTableOptions.filterFns?.[globalFilterFn.value ?? 'fuzzy'],\n } as any) as unknown as MVT_TableInstance<TData>\n\n table.refs = {\n bottomToolbarRef,\n editInputRefs,\n filterInputRefs,\n lastSelectedRowId,\n searchInputRef,\n tableContainerRef,\n tableFooterRef,\n tableHeadCellRefs,\n tableHeadRef,\n tablePaperRef,\n topToolbarRef,\n }\n\n table.setCreatingRow = (row) => {\n let _row = row\n if (row === true) {\n _row = createRow(table)\n }\n if (statefulTableOptions?.onCreatingRowChange) {\n statefulTableOptions.onCreatingRowChange(_row as MVT_Row<TData> | null)\n } else {\n applyUpdater(creatingRow, _row as MVT_Row<TData> | null)\n }\n }\n table.setColumnFilterFns =\n statefulTableOptions.onColumnFilterFnsChange ??\n ((updater) => applyUpdater(columnFilterFns, updater))\n table.setDensity =\n statefulTableOptions.onDensityChange ?? ((updater) => applyUpdater(density, updater))\n table.setDraggingColumn =\n statefulTableOptions.onDraggingColumnChange ??\n ((updater) => applyUpdater(draggingColumn, updater))\n table.setDraggingRow =\n statefulTableOptions.onDraggingRowChange ?? ((updater) => applyUpdater(draggingRow, updater))\n table.setEditingCell =\n statefulTableOptions.onEditingCellChange ?? ((updater) => applyUpdater(editingCell, updater))\n table.setEditingRow =\n statefulTableOptions.onEditingRowChange ?? ((updater) => applyUpdater(editingRow, updater))\n table.setGlobalFilterFn =\n statefulTableOptions.onGlobalFilterFnChange ??\n ((updater) => applyUpdater(globalFilterFn, updater))\n table.setHoveredColumn =\n statefulTableOptions.onHoveredColumnChange ??\n ((updater) => applyUpdater(hoveredColumn, updater))\n table.setHoveredRow =\n statefulTableOptions.onHoveredRowChange ?? ((updater) => applyUpdater(hoveredRow, updater))\n table.setIsFullScreen =\n statefulTableOptions.onIsFullScreenChange ?? ((updater) => applyUpdater(isFullScreen, updater))\n table.setShowAlertBanner =\n statefulTableOptions.onShowAlertBannerChange ??\n ((updater) => applyUpdater(showAlertBanner, updater))\n table.setShowColumnFilters =\n statefulTableOptions.onShowColumnFiltersChange ??\n ((updater) => applyUpdater(showColumnFilters, updater))\n table.setShowGlobalFilter =\n statefulTableOptions.onShowGlobalFilterChange ??\n ((updater) => applyUpdater(showGlobalFilter, updater))\n table.setShowToolbarDropZone =\n statefulTableOptions.onShowToolbarDropZoneChange ??\n ((updater) => applyUpdater(showToolbarDropZone, updater))\n\n // Expose the reactive slot registry + setter so `<MantineVueTable>` can\n // publish its named slots into the instance\n ;(table as any)._mvtSlots = mvtSlots\n ;(table as any).setMVTSlots = (slots: Record<string, unknown>) => {\n mvtSlots.value = slots\n }\n\n useMVT_Effects(table)\n\n return table\n}\n","import { type MVT_RowData, type MVT_TableInstance, type MVT_TableOptions } from '../types'\nimport { useMVT_TableInstance } from './useMVT_TableInstance'\nimport { useMVT_TableOptions } from './useMVT_TableOptions'\n\nexport const useMantineVueTable = <TData extends MVT_RowData>(\n tableOptions: MVT_TableOptions<TData>,\n): MVT_TableInstance<TData> => useMVT_TableInstance(useMVT_TableOptions(tableOptions))\n",".collapse {\n position: absolute;\n width: 100%;\n top: 0;\n}\n\n.collapse-top {\n bottom: 0;\n top: unset;\n}\n","import clsx from 'clsx'\nimport { Collapse, Progress } from '@mantine-vue/core'\nimport { defineComponent, h, type PropType } from 'vue'\nimport type { MVT_RowData, MVT_TableInstance } from '../../types'\nimport { parseFromValuesOrFunc } from '../../utils/utils'\nimport classes from './MVT_ProgressBar.module.css'\n\nexport const MVT_ProgressBar = defineComponent({\n name: 'MVTProgressBar',\n inheritAttrs: false,\n props: {\n isTopToolbar: { type: Boolean, required: true },\n table: { type: Object as PropType<MVT_TableInstance<MVT_RowData>>, required: true },\n },\n setup(props, { attrs }) {\n return () => {\n const { table, isTopToolbar } = props\n const state = table.getState()\n const progressProps = {\n ...parseFromValuesOrFunc(table.options.mantineProgressProps, { isTopToolbar, table }),\n ...attrs,\n }\n\n return h(\n Collapse,\n {\n class: clsx(classes.collapse, isTopToolbar && classes['collapse-top']),\n expanded: Boolean(state.isSaving || state.showProgressBars),\n } as any,\n () =>\n h(Progress, {\n animated: true,\n 'aria-busy': 'true',\n 'aria-label': 'Loading',\n radius: 0,\n value: 100,\n ...progressProps,\n } as any),\n )\n }\n },\n})\n",".root {\n display: flex;\n z-index: 2;\n gap: var(--mantine-spacing-lg);\n align-items: center;\n justify-content: space-between;\n padding-right: var(--mantine-spacing-sm);\n padding-left: var(--mantine-spacing-sm);\n padding-top: var(--mantine-spacing-xs);\n padding-bottom: var(--mantine-spacing-xs);\n .pagesize {\n input {\n width: calc(5rem * var(--mantine-scale));\n }\n }\n}\n\n.with-top-margin {\n margin-top: 3rem;\n}\n","import clsx from 'clsx'\nimport { ActionIcon, Box, Group, Pagination, Select, Text } from '@mantine-vue/core'\nimport { defineComponent, h, type PropType } from 'vue'\nimport type { MVT_RowData, MVT_TableInstance } from '../../types'\nimport { parseFromValuesOrFunc } from '../../utils/utils'\nimport classes from './MVT_TablePagination.module.css'\n\nconst defaultRowsPerPage = [5, 10, 15, 20, 25, 30, 50, 100].map(String)\nexport const MVT_TablePagination = defineComponent({\n name: 'MVTTablePagination',\n inheritAttrs: false,\n props: {\n position: { type: String as PropType<'bottom' | 'top'>, default: 'bottom' },\n table: { type: Object as PropType<MVT_TableInstance<MVT_RowData>>, required: true },\n },\n setup(props, { attrs }) {\n return () => {\n const { table } = props\n const o = table.options\n const state = table.getState()\n const { pageIndex = 0, pageSize = 10 } = state.pagination\n const paginationProps = {\n ...parseFromValuesOrFunc(o.mantinePaginationProps, { table }),\n ...attrs,\n } as Record<string, any>\n const totalRowCount = o.rowCount ?? table.getPrePaginationRowModel().rows.length\n const numberOfPages = Math.ceil(totalRowCount / pageSize)\n const firstRowIndex = pageIndex * pageSize\n const lastRowIndex = Math.min(firstRowIndex + pageSize, totalRowCount)\n const showEdges = numberOfPages > 2\n const {\n rowsPerPageOptions = defaultRowsPerPage,\n showRowsPerPage = true,\n withEdges = showEdges,\n ...rest\n } = paginationProps\n const controls =\n o.paginationDisplayMode === 'pages'\n ? h(Pagination, {\n total: numberOfPages,\n value: pageIndex + 1,\n withEdges,\n ...rest,\n onChange: (page: number) => table.setPageIndex(page - 1),\n } as any)\n : o.paginationDisplayMode === 'default'\n ? [\n h(\n Text,\n null,\n () =>\n `${lastRowIndex === 0 ? 0 : (firstRowIndex + 1).toLocaleString()}-${lastRowIndex.toLocaleString()} ${o.localization.of} ${totalRowCount.toLocaleString()}`,\n ),\n h(Group, { gap: 6 }, () => [\n withEdges &&\n h(\n ActionIcon,\n {\n 'aria-label': o.localization.goToFirstPage,\n color: 'gray',\n disabled: pageIndex <= 0,\n variant: 'subtle',\n onClick: () => table.setPageIndex(0),\n },\n () => h(o.icons.IconChevronLeftPipe),\n ),\n h(\n ActionIcon,\n {\n 'aria-label': o.localization.goToPreviousPage,\n color: 'gray',\n disabled: pageIndex <= 0,\n variant: 'subtle',\n onClick: () => table.setPageIndex(pageIndex - 1),\n },\n () => h(o.icons.IconChevronLeft),\n ),\n h(\n ActionIcon,\n {\n 'aria-label': o.localization.goToNextPage,\n color: 'gray',\n disabled: lastRowIndex >= totalRowCount,\n variant: 'subtle',\n onClick: () => table.setPageIndex(pageIndex + 1),\n },\n () => h(o.icons.IconChevronRight),\n ),\n withEdges &&\n h(\n ActionIcon,\n {\n 'aria-label': o.localization.goToLastPage,\n color: 'gray',\n disabled: lastRowIndex >= totalRowCount,\n variant: 'subtle',\n onClick: () => table.setPageIndex(Math.max(0, numberOfPages - 1)),\n },\n () => h(o.icons.IconChevronRightPipe),\n ),\n ]),\n ]\n : null\n return h(\n Box,\n {\n class: clsx(\n 'mvt-table-pagination',\n classes.root,\n props.position === 'top' &&\n o.enableToolbarInternalActions &&\n !state.showGlobalFilter &&\n classes['with-top-margin'],\n ),\n },\n () => [\n showRowsPerPage &&\n h(Group, { gap: 'xs' }, () => [\n h(Text, { id: 'rpp-label' }, () => o.localization.rowsPerPage),\n h(Select, {\n allowDeselect: false,\n 'aria-labelledby': 'rpp-label',\n class: classes.pagesize,\n data: rowsPerPageOptions,\n value: pageSize.toString(),\n onChange: (value: null | string) => value && table.setPageSize(+value),\n } as any),\n ]),\n controls,\n ],\n )\n }\n },\n})\n",".alert {\n border-radius: 0;\n font-size: 1rem;\n left: 0;\n position: relative;\n padding: rem(8px);\n right: 0;\n top: 0;\n width: 100%;\n z-index: 2;\n}\n\n.alert-stacked {\n margin-bottom: 0;\n}\n\n.alert-bottom {\n margin-bottom: -16px;\n}\n\n.alert-badge {\n margin-left: 1ch;\n}\n\n.toolbar-alert {\n gap: var(--mantine-spacing-sm);\n padding: 8px 16px;\n &.head-overlay {\n padding: 2px;\n &:global(.xl) {\n padding: 16px;\n }\n &:global(.md) {\n padding: 8px;\n }\n }\n}\n","import clsx from 'clsx'\nimport { ActionIcon, Alert, Badge, Button, Collapse, Flex, Stack } from '@mantine-vue/core'\nimport { defineComponent, h, type PropType } from 'vue'\nimport type { MVT_RowData, MVT_TableInstance } from '../../types'\nimport { getMVT_SelectAllHandler } from '../../utils/row.utils'\nimport { parseFromValuesOrFunc } from '../../utils/utils'\nimport { MVT_SelectCheckbox } from '../inputs/MVT_SelectCheckbox'\nimport classes from './MVT_ToolbarAlertBanner.module.css'\n\nexport const MVT_ToolbarAlertBanner = defineComponent({\n name: 'MVTToolbarAlertBanner',\n inheritAttrs: false,\n props: {\n stackAlertBanner: { type: Boolean, default: false },\n table: { type: Object as PropType<MVT_TableInstance<MVT_RowData>>, required: true },\n },\n setup(props, { attrs, slots }) {\n return () => {\n const { table } = props\n const state = table.getState()\n const o = table.options\n const alertProps = {\n ...parseFromValuesOrFunc(o.mantineToolbarAlertBannerProps, { table }),\n ...attrs,\n } as Record<string, any>\n const badgeProps = parseFromValuesOrFunc(o.mantineToolbarAlertBannerBadgeProps, { table })\n const total = o.rowCount ?? table.getPrePaginationRowModel().flatRows.length\n const selectedCount = o.manualPagination\n ? Object.values(state.rowSelection).filter(Boolean).length\n : table.getFilteredSelectedRowModel().rows.length\n const selectedAlert = selectedCount\n ? h(Flex, { align: 'center', gap: 'sm' }, () => [\n o.localization.selectedCountOfRowCountRowsSelected\n .replace('{selectedCount}', String(selectedCount))\n .replace('{rowCount}', String(total)),\n h(\n Button,\n {\n size: 'compact-xs',\n variant: 'subtle',\n onClick: (event: Event) => getMVT_SelectAllHandler({ table })(event, false, true),\n },\n () => o.localization.clearSelection,\n ),\n ])\n : null\n const groupedAlert = state.grouping.length\n ? h(Flex, null, () => [\n `${o.localization.groupedBy} `,\n ...state.grouping.flatMap((columnId, index) => [\n index > 0 ? o.localization.thenBy : null,\n h(\n Badge,\n {\n key: columnId,\n class: classes['alert-badge'],\n variant: 'filled',\n ...badgeProps,\n rightSection: h(\n ActionIcon,\n {\n color: 'white',\n size: 'xs',\n variant: 'subtle',\n onClick: () => table.getColumn(columnId).toggleGrouping(),\n },\n () => h(o.icons.IconX, { style: { transform: 'scale(0.8)' } }),\n ),\n } as any,\n () => `${table.getColumn(columnId).columnDef.header} `,\n ),\n ]),\n ])\n : null\n const custom =\n slots.default?.({ groupedAlert, selectedAlert, table }) ??\n o.renderToolbarAlertBannerContent?.({ groupedAlert, selectedAlert, table })\n return h(\n Collapse,\n {\n expanded: state.showAlertBanner || !!selectedAlert || !!groupedAlert,\n transitionDuration: props.stackAlertBanner ? 200 : 0,\n } as any,\n () =>\n h(\n Alert,\n {\n color: 'blue',\n icon: false,\n ...alertProps,\n class: clsx(\n classes.alert,\n props.stackAlertBanner && !o.positionToolbarAlertBanner && classes['alert-stacked'],\n !props.stackAlertBanner &&\n o.positionToolbarAlertBanner === 'bottom' &&\n classes['alert-bottom'],\n alertProps.class,\n ),\n },\n () =>\n custom ??\n h(\n Flex,\n {\n class: clsx(\n classes['toolbar-alert'],\n o.positionToolbarAlertBanner === 'head-overlay' && classes['head-overlay'],\n state.density,\n ),\n },\n () => [\n o.enableRowSelection &&\n o.enableSelectAll &&\n o.positionToolbarAlertBanner === 'head-overlay'\n ? h(MVT_SelectCheckbox, { table })\n : null,\n h(Stack, null, () => [alertProps.children, selectedAlert, groupedAlert]),\n ],\n ),\n ),\n )\n }\n },\n})\n",".root {\n align-items: center;\n\n border: dashed var(--mantine-primary-color-filled) 2px;\n justify-content: center;\n height: 100%;\n width: 100%;\n position: absolute;\n z-index: 2;\n background-color: color-mix(in srgb, var(--mantine-primary-color-filled) 10%, transparent);\n}\n\n.hovered {\n background-color: color-mix(in srgb, var(--mantine-primary-color-filled) 20%, transparent);\n}\n","import clsx from 'clsx'\nimport { Flex, Text, Transition } from '@mantine-vue/core'\nimport { defineComponent, h, watch, type PropType } from 'vue'\nimport type { MVT_RowData, MVT_TableInstance } from '../../types'\nimport classes from './MVT_ToolbarDropZone.module.css'\n\nexport const MVT_ToolbarDropZone = defineComponent({\n name: 'MVTToolbarDropZone',\n inheritAttrs: false,\n props: { table: { type: Object as PropType<MVT_TableInstance<MVT_RowData>>, required: true } },\n setup(props, { attrs }) {\n watch(\n () => {\n const state = props.table.getState()\n return [props.table.options.enableGrouping, state.draggingColumn, state.grouping] as const\n },\n ([enableGrouping, draggingColumn, grouping]) => {\n if (props.table.options.state?.showToolbarDropZone !== undefined) {\n props.table.setShowToolbarDropZone(\n !!enableGrouping &&\n !!draggingColumn &&\n draggingColumn.columnDef.enableGrouping !== false &&\n !grouping.includes(draggingColumn.id),\n )\n }\n },\n { deep: true },\n )\n return () => {\n const { table } = props\n const state = table.getState()\n return h(Transition, { mounted: state.showToolbarDropZone, transition: 'fade' } as any, () =>\n h(\n Flex,\n {\n class: clsx(\n 'mvt-toolbar-dropzone',\n classes.root,\n state.hoveredColumn?.id === 'drop-zone' && classes.hovered,\n ),\n ...attrs,\n onDragenter: () => table.setHoveredColumn({ id: 'drop-zone' }),\n },\n () =>\n h(Text, null, () =>\n table.options.localization.dropToGroupBy.replace(\n '{column}',\n String(state.draggingColumn?.columnDef?.header ?? ''),\n ),\n ),\n ),\n )\n }\n },\n})\n",".common-toolbar-styles {\n align-items: flex-start;\n display: grid;\n flex-wrap: wrap-reverse;\n min-height: calc(3.5rem * var(--mantine-scale));\n overflow: visible;\n padding: 0;\n transition: all 150ms ease-in-out;\n z-index: 3;\n}\n",".root {\n background-color: var(--mvt-base-background-color);\n border-top: 1px solid light-dark(var(--mantine-color-gray-3), var(--mantine-color-dark-4));\n bottom: var(--mvt-bottom-toolbar-bottom);\n box-shadow: 0 1px 2px -1px color-mix(in srgb, var(--mantine-color-black) 10%, transparent) inset;\n left: 0;\n right: 0;\n position: relative;\n}\n\n.root-fullscreen {\n position: fixed !important;\n bottom: 0;\n}\n\n.custom-toolbar-container {\n align-items: center;\n box-sizing: border-box;\n display: flex;\n justify-content: space-between;\n padding: rem(8px);\n width: 100%;\n}\n\n.paginator-container {\n display: flex;\n justify-content: flex-end;\n right: 0;\n top: 0;\n position: absolute;\n}\n\n.paginator-container-alert-banner {\n position: relative !important;\n}\n","import { defineComponent, h, type PropType } from 'vue'\n\nimport { Box } from '@mantine-vue/core'\n\nimport clsx from 'clsx'\n\nimport { type MVT_RowData, type MVT_TableInstance } from '../../types'\nimport { parseFromValuesOrFunc } from '../../utils/utils'\nimport { MVT_ProgressBar } from './MVT_ProgressBar'\nimport { MVT_TablePagination } from './MVT_TablePagination'\nimport { MVT_ToolbarAlertBanner } from './MVT_ToolbarAlertBanner'\nimport { MVT_ToolbarDropZone } from './MVT_ToolbarDropZone'\nimport commonClasses from './common.styles.module.css'\nimport classes from './MVT_BottomToolbar.module.css'\nimport { useMediaQuery } from '@mantine-vue/hooks'\n\nexport const MVT_BottomToolbar = defineComponent({\n name: 'MVTBottomToolbar',\n inheritAttrs: false,\n props: {\n table: {\n type: Object as PropType<MVT_TableInstance<MVT_RowData>>,\n required: true,\n },\n },\n setup(props, { attrs }) {\n const isMobile = useMediaQuery('(max-width: 720px)')\n\n return () => {\n const { table } = props\n const {\n getState,\n options: {\n enablePagination,\n mantineBottomToolbarProps,\n positionPagination,\n positionToolbarAlertBanner,\n positionToolbarDropZone,\n renderBottomToolbarCustomActions,\n },\n refs: { bottomToolbarRef },\n } = table\n const { isFullScreen } = getState()\n\n const toolbarProps = {\n ...parseFromValuesOrFunc(mantineBottomToolbarProps, { table }),\n ...attrs,\n }\n\n const stackAlertBanner = isMobile.value || !!renderBottomToolbarCustomActions\n\n return h(\n Box,\n {\n ...toolbarProps,\n class: clsx(\n 'mvt-bottom-toolbar',\n classes.root,\n commonClasses['common-toolbar-styles'],\n isFullScreen && classes['root-fullscreen'],\n (toolbarProps as any)?.class,\n ),\n ref: (el: any) => {\n const node = (el?.$el ?? el) as HTMLDivElement\n if (node) {\n bottomToolbarRef.value = node\n if ((toolbarProps as any)?.ref) {\n ;(toolbarProps as any).ref.value = node\n }\n }\n },\n } as any,\n () => [\n h(MVT_ProgressBar, { isTopToolbar: false, table } as any),\n positionToolbarAlertBanner === 'bottom' &&\n h(MVT_ToolbarAlertBanner, { stackAlertBanner, table } as any),\n ['both', 'bottom'].includes(positionToolbarDropZone ?? '') &&\n h(MVT_ToolbarDropZone, { table } as any),\n h(Box, { class: classes['custom-toolbar-container'] } as any, () => [\n parseFromValuesOrFunc(renderBottomToolbarCustomActions, {\n table,\n }) ?? h('span'),\n h(\n Box,\n {\n class: clsx(\n classes['paginator-container'],\n stackAlertBanner && classes['paginator-container-alert-banner'],\n ),\n } as any,\n () =>\n enablePagination &&\n ['both', 'bottom'].includes(positionPagination ?? '') &&\n h(MVT_TablePagination, { position: 'bottom', table } as any),\n ),\n ]),\n ],\n )\n }\n },\n})\n",".symbol {\n font-size: var(--mantine-font-size-xl);\n text-align: center;\n width: 2ch;\n transform: translateY(-0.1em);\n}\n","import { Menu } from '@mantine-vue/core'\nimport { defineComponent, h, type PropType } from 'vue'\nimport type {\n MVT_FilterOption,\n MVT_Header,\n MVT_InternalFilterOption,\n MVT_Localization,\n MVT_RowData,\n MVT_TableInstance,\n} from '../../types'\nimport classes from './MVT_FilterOptionMenu.module.css'\n\nexport const mrtFilterOptions = (l: MVT_Localization): MVT_InternalFilterOption[] => [\n { divider: false, label: l.filterFuzzy, option: 'fuzzy', symbol: '≈' },\n { divider: false, label: l.filterContains, option: 'contains', symbol: '*' },\n { divider: false, label: l.filterStartsWith, option: 'startsWith', symbol: 'a' },\n { divider: true, label: l.filterEndsWith, option: 'endsWith', symbol: 'z' },\n { divider: false, label: l.filterEquals, option: 'equals', symbol: '=' },\n { divider: true, label: l.filterNotEquals, option: 'notEquals', symbol: '≠' },\n { divider: false, label: l.filterBetween, option: 'between', symbol: '⇿' },\n { divider: true, label: l.filterBetweenInclusive, option: 'betweenInclusive', symbol: '⬌' },\n { divider: false, label: l.filterGreaterThan, option: 'greaterThan', symbol: '>' },\n {\n divider: false,\n label: l.filterGreaterThanOrEqualTo,\n option: 'greaterThanOrEqualTo',\n symbol: '≥',\n },\n { divider: false, label: l.filterLessThan, option: 'lessThan', symbol: '<' },\n { divider: true, label: l.filterLessThanOrEqualTo, option: 'lessThanOrEqualTo', symbol: '≤' },\n { divider: false, label: l.filterEmpty, option: 'empty', symbol: '∅' },\n { divider: false, label: l.filterNotEmpty, option: 'notEmpty', symbol: '!∅' },\n]\nconst rangeModes = ['between', 'betweenInclusive', 'inNumberRange']\nconst emptyModes = ['empty', 'notEmpty']\nconst arrModes = ['arrIncludesSome', 'arrIncludesAll', 'arrIncludes']\nconst rangeVariants = ['range-slider', 'date-range', 'range']\n\nexport const MVT_FilterOptionMenu = defineComponent({\n name: 'MVTFilterOptionMenu',\n props: {\n header: { type: Object as PropType<MVT_Header<MVT_RowData>>, default: undefined },\n onSelect: { type: Function as PropType<() => void>, default: undefined },\n table: { type: Object as PropType<MVT_TableInstance<MVT_RowData>>, required: true },\n },\n setup(props, { slots }) {\n return () => {\n const { table, header } = props\n const o = table.options\n const column = header?.column\n const def = column?.columnDef\n const current = column?.getFilterValue()\n let allowed = def?.columnFilterModeOptions ?? o.columnFilterModeOptions\n if (rangeVariants.includes(def?.filterVariant ?? ''))\n allowed = [...rangeModes, ...(allowed ?? [])].filter(\n (v, i, a) => rangeModes.includes(v) && a.indexOf(v) === i,\n ) as MVT_FilterOption[]\n const options = mrtFilterOptions(o.localization).filter((entry) =>\n def\n ? allowed === undefined || allowed?.includes(entry.option as MVT_FilterOption)\n : (!o.globalFilterModeOptions ||\n o.globalFilterModeOptions.includes(entry.option as MVT_FilterOption)) &&\n ['contains', 'fuzzy', 'startsWith'].includes(entry.option),\n )\n if (options.at(-1)?.divider) options[options.length - 1].divider = false\n const select = (option: MVT_FilterOption) => {\n const previous = def?._filterFn ?? ''\n if (!header || !column) table.setGlobalFilterFn(option)\n else if (option !== previous) {\n table.setColumnFilterFns((old) => ({ ...old, [header.id]: option }))\n if (emptyModes.includes(option)) {\n if (current !== ' ' && !emptyModes.includes(previous)) column.setFilterValue(' ')\n else if (current) column.setFilterValue(current)\n } else if (def?.filterVariant === 'multi-select' || arrModes.includes(option)) {\n if (typeof current === 'string' || (current as unknown[])?.length)\n column.setFilterValue([])\n else if (current) column.setFilterValue(current)\n } else if (\n rangeVariants.includes(def?.filterVariant ?? '') ||\n rangeModes.includes(option)\n ) {\n if (\n !Array.isArray(current) ||\n (!current.every((v) => v === '') && !rangeModes.includes(previous))\n )\n column.setFilterValue(['', ''])\n else column.setFilterValue(current)\n } else if (Array.isArray(current)) column.setFilterValue('')\n else if (current === ' ' && emptyModes.includes(previous))\n column.setFilterValue(undefined)\n else column.setFilterValue(current)\n }\n props.onSelect?.()\n }\n const custom =\n slots.default?.({\n internalFilterOptions: options,\n onSelectFilterMode: select,\n column,\n table,\n }) ??\n (def\n ? (def.renderColumnFilterModeMenuItems?.({\n column: column!,\n internalFilterOptions: options,\n onSelectFilterMode: select,\n table,\n }) ??\n o.renderColumnFilterModeMenuItems?.({\n column: column!,\n internalFilterOptions: options,\n onSelectFilterMode: select,\n table,\n }))\n : o.renderGlobalFilterModeMenuItems?.({\n internalFilterOptions: options,\n onSelectFilterMode: select,\n table,\n }))\n const selected = header && def ? def._filterFn : table.getState().globalFilterFn\n return h(\n Menu.Dropdown,\n null,\n () =>\n custom ??\n options.flatMap((entry) => [\n h(\n Menu.Item,\n {\n color: entry.option === selected ? 'blue' : undefined,\n leftSection: h('span', { class: classes.symbol }, entry.symbol),\n value: entry.option,\n onClick: () => select(entry.option as MVT_FilterOption),\n },\n () => entry.label,\n ),\n entry.divider ? h(Menu.Divider) : null,\n ]),\n )\n }\n },\n})\n",".root {\n z-index: 2;\n position: relative;\n}\n\n.collapse {\n display: flex;\n align-items: center;\n gap: 4px;\n flex-wrap: nowrap;\n}\n","import clsx from 'clsx'\nimport { ActionIcon, Collapse, Menu, TextInput, Tooltip } from '@mantine-vue/core'\nimport { useDebouncedValue } from '@mantine-vue/hooks'\nimport { defineComponent, h, ref, watch, type PropType } from 'vue'\nimport type { MVT_RowData, MVT_TableInstance } from '../../types'\nimport { parseFromValuesOrFunc } from '../../utils/utils'\nimport { MVT_FilterOptionMenu } from '../menus/MVT_FilterOptionMenu'\nimport classes from './MVT_GlobalFilterTextInput.module.css'\n\nexport const MVT_GlobalFilterTextInput = defineComponent({\n name: 'MVTGlobalFilterTextInput',\n inheritAttrs: false,\n props: { table: { type: Object as PropType<MVT_TableInstance<MVT_RowData>>, required: true } },\n setup(props, { attrs }) {\n const searchValue = ref(props.table.getState().globalFilter ?? '')\n const [debounced] = useDebouncedValue(\n searchValue,\n props.table.options.manualFiltering ? 500 : 250,\n )\n watch(debounced, (value) => props.table.setGlobalFilter(value || undefined))\n watch(\n () => props.table.getState().globalFilter,\n (value) => {\n searchValue.value = value ?? ''\n },\n )\n const clear = () => {\n searchValue.value = ''\n props.table.setGlobalFilter(undefined)\n }\n return () => {\n const { table } = props\n const o = table.options\n const inputProps = {\n ...parseFromValuesOrFunc(o.mantineSearchTextInputProps, { table }),\n ...attrs,\n } as Record<string, any>\n\n return h(\n Collapse,\n { class: classes.collapse, expanded: table.getState().showGlobalFilter } as any,\n () => [\n o.enableGlobalFilterModes &&\n h(Menu, { withinPortal: true }, () => [\n h(Menu.Target, null, () =>\n h(\n ActionIcon,\n {\n 'aria-label': o.localization.changeSearchMode,\n color: 'gray',\n size: 'sm',\n variant: 'transparent',\n },\n () => h(o.icons.IconSearch),\n ),\n ),\n h(MVT_FilterOptionMenu, { table, onSelect: clear }),\n ]),\n h(TextInput, {\n leftSection: !o.enableGlobalFilterModes ? h(o.icons.IconSearch) : undefined,\n mt: 0,\n mx: o.positionGlobalFilter !== 'left' ? 'mx' : undefined,\n placeholder: o.localization.search,\n value: searchValue.value,\n variant: 'filled',\n ...inputProps,\n class: clsx('mvt-global-filter-text-input', classes.root, inputProps.class),\n onInput: (event: Event | string) => {\n searchValue.value =\n typeof event === 'string' ? event : (event.target as HTMLInputElement).value\n inputProps.onChange?.(event)\n },\n rightSection: h(\n ActionIcon,\n {\n 'aria-label': o.localization.clearSearch,\n color: 'gray',\n disabled: !searchValue.value.length,\n hidden: !searchValue.value,\n size: 'sm',\n style: { visibility: !searchValue.value ? 'hidden' : undefined },\n variant: 'transparent',\n onClick: clear,\n },\n () =>\n h(Tooltip, { label: o.localization.clearSearch, withinPortal: true }, () =>\n h(o.icons.IconX),\n ),\n ),\n ref: (el: any) => {\n const node = (el?.$el?.querySelector?.('input') ?? el?.$el ?? el) as HTMLInputElement\n if (node) table.refs.searchInputRef.value = node\n },\n } as any),\n ],\n )\n }\n },\n})\n",".root {\n min-width: 70px;\n align-content: center;\n justify-content: center;\n .left {\n transform: rotate(90deg);\n }\n .right {\n transform: rotate(-90deg);\n }\n}\n","import clsx from 'clsx'\nimport { ActionIcon, Flex, Tooltip } from '@mantine-vue/core'\nimport { defineComponent, h, type PropType } from 'vue'\nimport type { MVT_Column, MVT_RowData, MVT_TableInstance } from '../../types'\nimport classes from './MVT_ColumnPinningButtons.module.css'\n\nexport const MVT_ColumnPinningButtons = defineComponent({\n name: 'MVTColumnPinningButtons',\n props: {\n column: { type: Object as PropType<MVT_Column<MVT_RowData>>, required: true },\n table: { type: Object as PropType<MVT_TableInstance<MVT_RowData>>, required: true },\n },\n setup(props) {\n return () => {\n const { column, table } = props\n const l = table.options.localization\n const icons = table.options.icons\n const button = (\n label: string,\n side: 'left' | 'right' | false,\n icon: any,\n className?: string,\n ) =>\n h(Tooltip, { label, withinPortal: true }, () =>\n h(\n ActionIcon,\n {\n 'aria-label': label,\n color: 'gray',\n size: 'md',\n variant: 'subtle',\n onClick: () => column.pin(side),\n },\n () => h(icon, { class: className }),\n ),\n )\n return h(Flex, { class: clsx('mvt-column-pinning-buttons', classes.root) }, () =>\n column.getIsPinned()\n ? button(l.unpin, false, icons.IconPinnedOff)\n : [\n button(l.pinToLeft, 'left', icons.IconPinned, classes.left),\n button(l.pinToRight, 'right', icons.IconPinned, classes.right),\n ],\n )\n }\n },\n})\n",".root {\n align-items: center;\n cursor: default;\n justify-content: flex-start;\n opacity: 1;\n outline: none;\n padding-left: var(--_column-depth);\n padding-top: rem(6px);\n padding-bottom: rem(6);\n &[data-dragging] {\n opacity: 0.5;\n outline: 1px dashed var(--mantine-color-gray-7);\n }\n &[data-order-hovered]:not(&[data-dragging]) {\n outline: 2px dashed var(--_hover-color);\n }\n}\n.menu {\n display: flex;\n align-items: center;\n flex-wrap: nowrap;\n gap: rem(8px);\n}\n.grab {\n width: rem(28px);\n}\n.pin {\n width: rem(70px);\n}\n.switch {\n cursor: pointer !important;\n}\n.header {\n align-self: center;\n}\n","import clsx from 'clsx'\nimport { Box, Menu, Switch, Text, Tooltip } from '@mantine-vue/core'\nimport { defineComponent, h, ref, resolveComponent, type PropType, type VNodeChild } from 'vue'\nimport type { MVT_Column, MVT_RowData, MVT_TableInstance } from '../../types'\nimport { reorderColumn } from '../../utils/column.utils'\nimport { MVT_ColumnPinningButtons } from '../buttons/MVT_ColumnPinningButtons'\nimport { MVT_GrabHandleButton } from '../buttons/MVT_GrabHandleButton'\nimport classes from './MVT_ShowHideColumnsMenuItems.module.css'\n\nexport const MVT_ShowHideColumnsMenuItems = defineComponent({\n name: 'MVTShowHideColumnsMenuItems',\n props: {\n allColumns: { type: Array as PropType<MVT_Column<MVT_RowData>[]>, required: true },\n column: { type: Object as PropType<MVT_Column<MVT_RowData>>, required: true },\n hoveredColumn: { type: Object as PropType<MVT_Column<MVT_RowData> | null>, default: null },\n getHoveredColumn: {\n type: Function as PropType<() => MVT_Column<MVT_RowData> | null>,\n default: undefined,\n },\n table: { type: Object as PropType<MVT_TableInstance<MVT_RowData>>, required: true },\n },\n emits: { hoveredColumnChange: (_value: MVT_Column<MVT_RowData> | null) => true },\n setup(props, { emit }) {\n const menuItemRef = ref<HTMLElement | null>(null)\n const dragging = ref(false)\n return () => {\n const { column, table } = props\n const def = column.columnDef\n const group = def.columnDefType === 'group'\n if (!def.header || def.visibleInShowHideMenu === false) return null\n const checked = !group\n ? column.getIsVisible()\n : column.getLeafColumns().some((c) => c.getIsVisible())\n const toggle = () =>\n group\n ? column.columns?.forEach((c) => c.toggleVisibility(!checked))\n : column.toggleVisibility()\n const children: VNodeChild[] =\n column.columns?.map((child) =>\n h(resolveComponent('MVT_ShowHideColumnsMenuItems'), {\n key: child.id,\n ...props,\n column: child,\n onHoveredColumnChange: (value: MVT_Column<MVT_RowData> | null) =>\n emit('hoveredColumnChange', value),\n }),\n ) ?? []\n return [\n h(\n Menu.Item,\n {\n class: clsx(classes.root),\n component: 'span',\n ref: (el: any) => {\n menuItemRef.value = el?.$el ?? el\n },\n style: { '--_column-depth': `${(column.depth + 0.5) * 2}rem` },\n 'data-dragging': dragging.value || undefined,\n 'data-order-hovered': props.hoveredColumn?.id === column.id || undefined,\n onDragenter: () => {\n if (!dragging.value && def.enableColumnOrdering !== false)\n emit('hoveredColumnChange', column)\n },\n },\n () =>\n h(Box, { class: classes.menu }, () => [\n !group &&\n table.options.enableColumnOrdering &&\n !props.allColumns.some((c) => c.columnDef.columnDefType === 'group')\n ? def.enableColumnOrdering !== false\n ? h(MVT_GrabHandleButton, {\n table,\n onDragStart: (e: DragEvent) => {\n dragging.value = true\n if (menuItemRef.value) e.dataTransfer?.setDragImage(menuItemRef.value, 0, 0)\n },\n onDragEnd: () => {\n dragging.value = false\n\n const hovered = props.getHoveredColumn?.() ?? props.hoveredColumn\n if (hovered)\n table.setColumnOrder(\n reorderColumn(column, hovered, table.getState().columnOrder),\n )\n emit('hoveredColumnChange', null)\n },\n } as any)\n : h(Box, { class: classes.grab })\n : null,\n table.options.enableColumnPinning\n ? column.getCanPin()\n ? h(MVT_ColumnPinningButtons, { column, table })\n : h(Box, { class: classes.pin })\n : null,\n table.options.enableHiding\n ? h(\n Tooltip,\n {\n label: table.options.localization.toggleVisibility,\n openDelay: 1000,\n withinPortal: true,\n },\n () =>\n h(Switch, {\n checked,\n class: classes.switch,\n disabled: !column.getCanHide(),\n label: def.header,\n onChange: toggle,\n }),\n )\n : h(Text, { class: classes.header }, () => def.header),\n ]),\n ),\n ...children,\n ]\n }\n },\n})\n",".root {\n max-height: calc(80vh - 100px);\n overflow-y: auto;\n .content {\n padding-top: rem(4px);\n padding-bottom: rem(4px);\n gap: rem(8px);\n justify-content: space-between;\n }\n}\n","import clsx from 'clsx'\nimport { Button, Flex, Menu } from '@mantine-vue/core'\nimport { computed, defineComponent, h, ref, type PropType } from 'vue'\nimport type { MVT_Column, MVT_RowData, MVT_TableInstance } from '../../types'\nimport { getDefaultColumnOrderIds } from '../../utils/displayColumn.utils'\nimport { MVT_ShowHideColumnsMenuItems } from './MVT_ShowHideColumnsMenuItems'\nimport classes from './MVT_ShowHideColumnsMenu.module.css'\n\nexport const MVT_ShowHideColumnsMenu = defineComponent({\n name: 'MVTShowHideColumnsMenu',\n props: { table: { type: Object as PropType<MVT_TableInstance<MVT_RowData>>, required: true } },\n setup(props) {\n const hoveredColumn = ref<MVT_Column<MVT_RowData> | null>(null)\n const allColumns = computed(() => {\n const { table } = props\n const columns = table.getAllColumns()\n const order = table.getState().columnOrder\n if (order.length && !columns.some((c) => c.columnDef.columnDefType === 'group'))\n return [\n ...table.getLeftLeafColumns(),\n ...Array.from(new Set(order)).map((id) =>\n table.getCenterLeafColumns().find((c) => c.id === id),\n ),\n ...table.getRightLeafColumns(),\n ].filter(Boolean) as MVT_Column<MVT_RowData>[]\n return columns\n })\n return () => {\n const { table } = props\n const o = table.options\n const toggleAll = (value: boolean) =>\n table\n .getAllLeafColumns()\n .filter((c) => c.columnDef.enableHiding !== false)\n .forEach((c) => c.toggleVisibility(value))\n return h(Menu.Dropdown, { class: clsx('mvt-show-hide-columns-menu', classes.root) }, () => [\n h(Flex, { class: classes.content }, () => [\n o.enableHiding &&\n h(\n Button,\n {\n disabled: !table.getIsSomeColumnsVisible(),\n variant: 'subtle',\n onClick: () => toggleAll(false),\n },\n () => o.localization.hideAll,\n ),\n o.enableColumnOrdering &&\n h(\n Button,\n {\n variant: 'subtle',\n onClick: () => table.setColumnOrder(getDefaultColumnOrderIds(o, true)),\n },\n () => o.localization.resetOrder,\n ),\n o.enableColumnPinning &&\n h(\n Button,\n {\n disabled: !table.getIsSomeColumnsPinned(),\n variant: 'subtle',\n onClick: () => table.resetColumnPinning(true),\n },\n () => o.localization.unpinAll,\n ),\n o.enableHiding &&\n h(\n Button,\n {\n disabled: table.getIsAllColumnsVisible(),\n variant: 'subtle',\n onClick: () => toggleAll(true),\n },\n () => o.localization.showAll,\n ),\n ]),\n h(Menu.Divider),\n ...allColumns.value.map((column) =>\n h(MVT_ShowHideColumnsMenuItems, {\n key: column.id,\n allColumns: allColumns.value,\n column,\n hoveredColumn: hoveredColumn.value,\n getHoveredColumn: () => hoveredColumn.value,\n table,\n onHoveredColumnChange: (value: MVT_Column<MVT_RowData> | null) => {\n hoveredColumn.value = value\n },\n } as any),\n ),\n ])\n }\n },\n})\n","import { ActionIcon, Menu, Tooltip } from '@mantine-vue/core'\nimport { defineComponent, h, type PropType } from 'vue'\nimport type { MVT_RowData, MVT_TableInstance } from '../../types'\nimport { MVT_ShowHideColumnsMenu } from '../menus/MVT_ShowHideColumnsMenu'\n\nexport const MVT_ShowHideColumnsButton = defineComponent({\n name: 'MVTShowHideColumnsButton',\n inheritAttrs: false,\n props: { table: { type: Object as PropType<MVT_TableInstance<MVT_RowData>>, required: true } },\n setup(props, { attrs }) {\n return () => {\n const title =\n (attrs.title as string | undefined) ?? props.table.options.localization.showHideColumns\n return h(Menu, { closeOnItemClick: false, withinPortal: true }, () => [\n h(Tooltip, { label: title, withinPortal: true }, () =>\n h(Menu.Target, null, () =>\n h(\n ActionIcon,\n {\n 'aria-label': title,\n color: 'gray',\n size: 'lg',\n variant: 'subtle',\n ...attrs,\n },\n () => h(props.table.options.icons.IconColumns),\n ),\n ),\n ),\n h(MVT_ShowHideColumnsMenu, { table: props.table }),\n ])\n }\n },\n})\n","import { ActionIcon, Tooltip } from '@mantine-vue/core'\nimport { defineComponent, h, type PropType } from 'vue'\nimport type { MVT_DensityState, MVT_RowData, MVT_TableInstance } from '../../types'\n\nconst next: Record<\n Exclude<MVT_DensityState, 'lg' | 'sm'>,\n Exclude<MVT_DensityState, 'lg' | 'sm'>\n> = { md: 'xs', xl: 'md', xs: 'xl' }\nexport const MVT_ToggleDensePaddingButton = defineComponent({\n name: 'MVTToggleDensePaddingButton',\n inheritAttrs: false,\n props: { table: { type: Object as PropType<MVT_TableInstance<MVT_RowData>>, required: true } },\n setup(props, { attrs }) {\n return () => {\n const { table } = props\n const density = table.getState().density\n const { IconBaselineDensityLarge, IconBaselineDensityMedium, IconBaselineDensitySmall } =\n table.options.icons\n const title = (attrs.title as string | undefined) ?? table.options.localization.toggleDensity\n const icon =\n density === 'xs'\n ? IconBaselineDensitySmall\n : density === 'md'\n ? IconBaselineDensityMedium\n : IconBaselineDensityLarge\n return h(Tooltip, { label: title, withinPortal: true }, () =>\n h(\n ActionIcon,\n {\n 'aria-label': title,\n color: 'gray',\n size: 'lg',\n variant: 'subtle',\n ...attrs,\n onClick: () => table.setDensity((current) => next[current as keyof typeof next]),\n },\n () => h(icon),\n ),\n )\n }\n },\n})\n","import { ActionIcon, Tooltip } from '@mantine-vue/core'\nimport { defineComponent, h, type PropType } from 'vue'\n\nimport type { MVT_RowData, MVT_TableInstance } from '../../types'\n\nexport const MVT_ToggleFiltersButton = defineComponent({\n name: 'MVTToggleFiltersButton',\n inheritAttrs: false,\n props: { table: { type: Object as PropType<MVT_TableInstance<MVT_RowData>>, required: true } },\n setup(props, { attrs }) {\n return () => {\n const { table } = props\n const { IconFilter, IconFilterOff } = table.options.icons\n const title =\n (attrs.title as string | undefined) ?? table.options.localization.showHideFilters\n const shown = table.getState().showColumnFilters\n return h(Tooltip, { label: title, withinPortal: true }, () =>\n h(\n ActionIcon,\n {\n 'aria-label': title,\n color: 'gray',\n size: 'lg',\n variant: 'subtle',\n ...attrs,\n onClick: () => table.setShowColumnFilters((current) => !current),\n },\n () => h(shown ? IconFilterOff : IconFilter),\n ),\n )\n }\n },\n})\n","import { ActionIcon, Tooltip } from '@mantine-vue/core'\nimport { defineComponent, h, ref, type PropType } from 'vue'\nimport type { MVT_RowData, MVT_TableInstance } from '../../types'\n\nexport const MVT_ToggleFullScreenButton = defineComponent({\n name: 'MVTToggleFullScreenButton',\n inheritAttrs: false,\n props: { table: { type: Object as PropType<MVT_TableInstance<MVT_RowData>>, required: true } },\n setup(props, { attrs }) {\n const tooltipOpened = ref(false)\n return () => {\n const { table } = props\n const full = table.getState().isFullScreen\n const { IconMaximize, IconMinimize } = table.options.icons\n const title =\n (attrs.title as string | undefined) ?? table.options.localization.toggleFullScreen\n return h(Tooltip, { label: title, opened: tooltipOpened.value, withinPortal: true }, () =>\n h(\n ActionIcon,\n {\n 'aria-label': title,\n color: 'gray',\n size: 'lg',\n variant: 'subtle',\n ...attrs,\n onMouseenter: () => {\n tooltipOpened.value = true\n },\n onMouseleave: () => {\n tooltipOpened.value = false\n },\n onClick: () => {\n tooltipOpened.value = false\n table.setIsFullScreen((current) => !current)\n },\n },\n () => h(full ? IconMinimize : IconMaximize),\n ),\n )\n }\n },\n})\n","import { ActionIcon, Tooltip } from '@mantine-vue/core'\nimport { defineComponent, h, type PropType } from 'vue'\nimport type { MVT_RowData, MVT_TableInstance } from '../../types'\n\nexport const MVT_ToggleGlobalFilterButton = defineComponent({\n name: 'MVTToggleGlobalFilterButton',\n inheritAttrs: false,\n props: { table: { type: Object as PropType<MVT_TableInstance<MVT_RowData>>, required: true } },\n setup(props, { attrs }) {\n return () => {\n const { table } = props\n const state = table.getState()\n const { IconSearch, IconSearchOff } = table.options.icons\n const title = (attrs.title as string | undefined) ?? table.options.localization.showHideSearch\n return h(Tooltip, { label: title, withinPortal: true }, () =>\n h(\n ActionIcon,\n {\n 'aria-label': title,\n color: 'gray',\n disabled: !!state.globalFilter,\n size: 'lg',\n variant: 'subtle',\n ...attrs,\n onClick: () => {\n table.setShowGlobalFilter(!state.showGlobalFilter)\n setTimeout(() => table.refs.searchInputRef.value?.focus(), 100)\n },\n },\n () => h(state.showGlobalFilter ? IconSearchOff : IconSearch),\n ),\n )\n }\n },\n})\n",".root {\n align-items: center;\n gap: 2px;\n z-index: 3;\n margin-left: 4px;\n}\n","import clsx from 'clsx'\nimport { Flex } from '@mantine-vue/core'\nimport { defineComponent, h, type PropType } from 'vue'\nimport type { MVT_RowData, MVT_TableInstance } from '../../types'\nimport { parseFromValuesOrFunc } from '../../utils/utils'\nimport { MVT_ShowHideColumnsButton } from '../buttons/MVT_ShowHideColumnsButton'\nimport { MVT_ToggleDensePaddingButton } from '../buttons/MVT_ToggleDensePaddingButton'\nimport { MVT_ToggleFiltersButton } from '../buttons/MVT_ToggleFiltersButton'\nimport { MVT_ToggleFullScreenButton } from '../buttons/MVT_ToggleFullScreenButton'\nimport { MVT_ToggleGlobalFilterButton } from '../buttons/MVT_ToggleGlobalFilterButton'\nimport classes from './MVT_ToolbarInternalButtons.module.css'\n\nexport const MVT_ToolbarInternalButtons = defineComponent({\n name: 'MVTToolbarInternalButtons',\n inheritAttrs: false,\n props: { table: { type: Object as PropType<MVT_TableInstance<MVT_RowData>>, required: true } },\n setup(props, { attrs }) {\n return () => {\n const { table } = props\n const o = table.options\n const custom = parseFromValuesOrFunc(o.renderToolbarInternalActions, { table })\n const buttons = custom ?? [\n o.enableFilters && o.enableGlobalFilter && !o.initialState?.showGlobalFilter\n ? h(MVT_ToggleGlobalFilterButton, { table })\n : null,\n o.enableFilters && o.enableColumnFilters && o.columnFilterDisplayMode !== 'popover'\n ? h(MVT_ToggleFiltersButton, { table })\n : null,\n o.enableHiding || o.enableColumnOrdering || o.enableColumnPinning\n ? h(MVT_ShowHideColumnsButton, { table })\n : null,\n o.enableDensityToggle ? h(MVT_ToggleDensePaddingButton, { table }) : null,\n o.enableFullScreenToggle ? h(MVT_ToggleFullScreenButton, { table }) : null,\n ]\n return h(\n Flex,\n { ...attrs, class: clsx('mvt-toolbar-internal-buttons', classes.root, attrs.class) },\n () => buttons,\n )\n }\n },\n})\n",".root {\n background-color: var(--mvt-base-background-color);\n position: relative;\n}\n\n.root-fullscreen {\n position: sticky !important;\n top: 0;\n}\n\n.actions-container {\n align-items: flex-start;\n box-sizing: border-box;\n justify-content: space-between;\n padding: rem(8px);\n right: 0;\n top: 0;\n width: 100%;\n position: absolute;\n}\n\n.actions-container-stack-alert {\n position: relative !important;\n}\n","import { defineComponent, h, type PropType } from 'vue'\n\nimport { Box, Flex } from '@mantine-vue/core'\n\nimport clsx from 'clsx'\n\nimport { type MVT_RowData, type MVT_TableInstance } from '../../types'\nimport { parseFromValuesOrFunc } from '../../utils/utils'\nimport { MVT_GlobalFilterTextInput } from '../inputs/MVT_GlobalFilterTextInput'\nimport { MVT_ProgressBar } from './MVT_ProgressBar'\nimport { MVT_TablePagination } from './MVT_TablePagination'\nimport { MVT_ToolbarAlertBanner } from './MVT_ToolbarAlertBanner'\nimport { MVT_ToolbarDropZone } from './MVT_ToolbarDropZone'\nimport { MVT_ToolbarInternalButtons } from './MVT_ToolbarInternalButtons'\nimport commonClasses from './common.styles.module.css'\nimport classes from './MVT_TopToolbar.module.css'\nimport { useMediaQuery } from '@mantine-vue/hooks'\n\nexport const MVT_TopToolbar = defineComponent({\n name: 'MVTTopToolbar',\n inheritAttrs: false,\n props: {\n table: {\n type: Object as PropType<MVT_TableInstance<MVT_RowData>>,\n required: true,\n },\n },\n setup(props, { attrs }) {\n const isMobile = useMediaQuery('(max-width: 720px)')\n const isTablet = useMediaQuery('(max-width: 1024px)')\n\n return () => {\n const { table } = props\n const {\n getState,\n options: {\n enableGlobalFilter,\n enablePagination,\n enableToolbarInternalActions,\n mantineTopToolbarProps,\n positionGlobalFilter,\n positionPagination,\n positionToolbarAlertBanner,\n positionToolbarDropZone,\n renderTopToolbarCustomActions,\n },\n refs: { topToolbarRef },\n } = table\n\n const { isFullScreen, showGlobalFilter } = getState()\n\n const toolbarProps = {\n ...parseFromValuesOrFunc(mantineTopToolbarProps, { table }),\n ...attrs,\n }\n\n const stackAlertBanner =\n isMobile.value || !!renderTopToolbarCustomActions || (showGlobalFilter && isTablet.value)\n\n const globalFilterProps = {\n style: !isTablet.value ? { zIndex: 3 } : undefined,\n table,\n }\n\n return h(\n Box,\n {\n ...toolbarProps,\n class: clsx(\n commonClasses['common-toolbar-styles'],\n classes['root'],\n isFullScreen && classes['root-fullscreen'],\n (toolbarProps as any)?.class,\n ),\n ref: (el: any) => {\n const node = (el?.$el ?? el) as HTMLDivElement\n if (node) {\n topToolbarRef.value = node\n if ((toolbarProps as any)?.ref) {\n ;(toolbarProps as any).ref.value = node\n }\n }\n },\n } as any,\n () => [\n positionToolbarAlertBanner === 'top' &&\n h(MVT_ToolbarAlertBanner, { stackAlertBanner, table } as any),\n ['both', 'top'].includes(positionToolbarDropZone ?? '') &&\n h(MVT_ToolbarDropZone, { table } as any),\n h(\n Flex,\n {\n class: [\n classes['actions-container'],\n stackAlertBanner ? classes['actions-container-stack-alert'] : undefined,\n ],\n } as any,\n () => [\n enableGlobalFilter &&\n positionGlobalFilter === 'left' &&\n h(MVT_GlobalFilterTextInput, globalFilterProps as any),\n parseFromValuesOrFunc(renderTopToolbarCustomActions, { table }) ?? h('span'),\n enableToolbarInternalActions\n ? h(Flex, { justify: 'end', wrap: 'wrap-reverse' } as any, () => [\n enableGlobalFilter &&\n positionGlobalFilter === 'right' &&\n h(MVT_GlobalFilterTextInput, globalFilterProps as any),\n h(MVT_ToolbarInternalButtons, { table } as any),\n ])\n : enableGlobalFilter &&\n positionGlobalFilter === 'right' &&\n h(MVT_GlobalFilterTextInput, globalFilterProps as any),\n ],\n ),\n enablePagination &&\n ['both', 'top'].includes(positionPagination ?? '') &&\n h(Flex, { justify: 'end' } as any, () =>\n h(MVT_TablePagination, { position: 'top', table } as any),\n ),\n h(MVT_ProgressBar, { isTopToolbar: true, table } as any),\n ],\n )\n }\n },\n})\n","import { Flex, Modal, Stack } from '@mantine-vue/core'\nimport { defineComponent, h, type PropType } from 'vue'\nimport type { MVT_RowData, MVT_TableInstance } from '../../types'\nimport { parseFromValuesOrFunc } from '../../utils/utils'\nimport { useMVT_Slots } from '../MVT_TableSlots'\nimport { MVT_EditActionButtons } from '../buttons/MVT_EditActionButtons'\nimport { MVT_EditCellTextInput } from '../inputs/MVT_EditCellTextInput'\n\nexport const MVT_EditRowModal = defineComponent({\n name: 'MVTEditRowModal',\n inheritAttrs: false,\n props: {\n open: { type: Boolean, default: false },\n table: { type: Object as PropType<MVT_TableInstance<MVT_RowData>>, required: true },\n },\n emits: { close: () => true },\n setup(props, { attrs, emit, slots }) {\n const mvtSlots = useMVT_Slots()\n\n return () => {\n const { table } = props\n const state = table.getState()\n const row = state.creatingRow ?? state.editingRow\n if (!row) return null\n const arg = { row, table }\n const modalProps = {\n ...parseFromValuesOrFunc(table.options.mantineEditRowModalProps, arg),\n ...(state.creatingRow\n ? parseFromValuesOrFunc(table.options.mantineCreateRowModalProps, arg)\n : {}),\n ...attrs,\n } as Record<string, any>\n const internalEditComponents = row\n .getAllCells()\n .filter((cell) => cell.column.columnDef.columnDefType === 'data')\n .map((cell) => h(MVT_EditCellTextInput, { key: cell.id, cell, table }))\n const cancel = () => {\n if (state.creatingRow) {\n table.options.onCreatingRowCancel?.({ row, table })\n table.setCreatingRow(null)\n } else {\n table.options.onEditingRowCancel?.({ row, table })\n table.setEditingRow(null)\n }\n row._valuesCache = {}\n modalProps.onClose?.()\n emit('close')\n }\n const slot = state.creatingRow\n ? (slots.create ?? mvtSlots.createRowModalContent ?? slots.default)\n : (slots.edit ?? mvtSlots.editRowModalContent ?? slots.default)\n const custom =\n slot?.({ internalEditComponents, row, table }) ??\n (state.creatingRow\n ? table.options.renderCreateRowModalContent?.({ internalEditComponents, row, table })\n : table.options.renderEditRowModalContent?.({ internalEditComponents, row, table }))\n return h(\n Modal,\n { opened: props.open, withCloseButton: false, ...modalProps, key: row.id, onClose: cancel },\n () =>\n custom ?? [\n h('form', { onSubmit: (e: Event) => e.preventDefault() }, [\n h(Stack, { gap: 'lg', pb: 24, pt: 16 }, () => internalEditComponents),\n ]),\n h(Flex, { justify: 'flex-end' }, () =>\n h(MVT_EditActionButtons, { row, table, variant: 'text' }),\n ),\n ],\n )\n }\n },\n})\n","import { defaultRangeExtractor, type Range } from '@tanstack/vue-virtual'\n\nexport const extraIndexRangeExtractor = (range: Range, draggingIndex?: number) => {\n const newIndexes = defaultRangeExtractor(range)\n if (draggingIndex === undefined) return newIndexes\n if (draggingIndex >= 0 && draggingIndex < Math.max(range.startIndex - range.overscan, 0)) {\n newIndexes.unshift(draggingIndex)\n }\n if (draggingIndex >= 0 && draggingIndex > range.endIndex + range.overscan) {\n newIndexes.push(draggingIndex)\n }\n return newIndexes\n}\n","import { computed, type Ref } from 'vue'\n\nimport { type Range, useVirtualizer } from '@tanstack/vue-virtual'\n\nimport { type MVT_ColumnVirtualizer, type MVT_RowData, type MVT_TableInstance } from '../types'\nimport { parseFromValuesOrFunc } from '../utils/utils'\nimport { extraIndexRangeExtractor } from '../utils/virtualization.utils'\n\nexport const useMVT_ColumnVirtualizer = <\n TData extends MVT_RowData,\n TScrollElement extends Element | Window = HTMLDivElement,\n TItemElement extends Element = HTMLTableCellElement,\n>(\n table: MVT_TableInstance<TData>,\n): Ref<MVT_ColumnVirtualizer> | undefined => {\n const {\n getLeftLeafColumns,\n getRightLeafColumns,\n getState,\n getVisibleLeafColumns,\n options: {\n columnVirtualizerInstanceRef,\n columnVirtualizerOptions,\n enableColumnPinning,\n enableColumnVirtualization,\n },\n refs: { tableContainerRef },\n } = table\n\n if (!enableColumnVirtualization) return undefined\n\n const columnVirtualizerProps = parseFromValuesOrFunc(columnVirtualizerOptions, { table })\n\n const visibleColumns = getVisibleLeafColumns()\n\n const { draggingColumn } = getState()\n\n const [leftPinnedIndexes, rightPinnedIndexes] = enableColumnPinning\n ? [\n getLeftLeafColumns().map((c) => c.getPinnedIndex()),\n getRightLeafColumns()\n .map((column) => visibleColumns.length - column.getPinnedIndex() - 1)\n .sort((a, b) => a - b),\n ]\n : [[] as number[], [] as number[]]\n\n const numPinnedLeft = leftPinnedIndexes.length\n const numPinnedRight = rightPinnedIndexes.length\n\n const draggingColumnIndex = draggingColumn?.id\n ? visibleColumns.findIndex((c) => c.id === draggingColumn?.id)\n : undefined\n\n const columnVirtualizerRef = useVirtualizer<HTMLDivElement, HTMLTableCellElement>(\n computed(() => ({\n count: visibleColumns.length,\n estimateSize: (index: number) => visibleColumns[index].getSize(),\n getScrollElement: () => tableContainerRef.value as any,\n horizontal: true,\n overscan: 3,\n rangeExtractor: (range: Range) => {\n const newIndexes = extraIndexRangeExtractor(range, draggingColumnIndex)\n if (!numPinnedLeft && !numPinnedRight) {\n return newIndexes\n }\n return [...new Set([...leftPinnedIndexes, ...newIndexes, ...rightPinnedIndexes])]\n },\n ...columnVirtualizerProps,\n })) as any,\n )\n\n const columnVirtualizer = columnVirtualizerRef.value as unknown as MVT_ColumnVirtualizer<\n TScrollElement,\n TItemElement\n >\n\n //expose the MVT-augmented properties as live getters\n Object.defineProperties(columnVirtualizer, {\n virtualColumns: {\n configurable: true,\n get() {\n return this.getVirtualItems()\n },\n },\n virtualPaddingLeft: {\n configurable: true,\n get() {\n const virtualColumns = this.getVirtualItems()\n const numColumns = virtualColumns.length\n if (!numColumns) return undefined\n const leftNonPinnedStart = virtualColumns[numPinnedLeft]?.start || 0\n const leftNonPinnedEnd = virtualColumns[leftPinnedIndexes.length - 1]?.end || 0\n return leftNonPinnedStart - leftNonPinnedEnd\n },\n },\n virtualPaddingRight: {\n configurable: true,\n get() {\n const virtualColumns = this.getVirtualItems()\n const numColumns = virtualColumns.length\n if (!numColumns) return undefined\n const totalSize = this.getTotalSize()\n const rightNonPinnedStart = virtualColumns[numColumns - numPinnedRight]?.start || 0\n const rightNonPinnedEnd = virtualColumns[numColumns - numPinnedRight - 1]?.end || 0\n return (\n totalSize - rightNonPinnedEnd - (numPinnedRight ? totalSize - rightNonPinnedStart : 0)\n )\n },\n },\n })\n\n if (columnVirtualizerInstanceRef) {\n columnVirtualizerInstanceRef.value = columnVirtualizer as any\n }\n\n return columnVirtualizerRef as unknown as Ref<MVT_ColumnVirtualizer>\n}\n","import { type MantineTheme } from '@mantine-vue/core'\n\nimport { type MantineShade } from '../types'\n\nexport const parseCSSVarId = (id: string) => id.replace(/[^a-zA-Z0-9]/g, '_')\n\nexport const getPrimaryShade = (theme: MantineTheme): number =>\n typeof theme.primaryShade === 'number' ? theme.primaryShade : (theme.primaryShade?.dark ?? 7)\n\nexport const getPrimaryColor = (theme: MantineTheme, shade?: MantineShade): string =>\n theme.colors[theme.primaryColor][shade ?? getPrimaryShade(theme)]\n\nexport function dataVariable(name: string, value: boolean | number | string | undefined) {\n const key = `data-${name}`\n switch (typeof value) {\n case 'boolean':\n return value ? { [key]: '' } : null\n case 'number':\n return { [key]: `${value}` }\n case 'string':\n return { [key]: value }\n default:\n return null\n }\n}\n","import { computed, type ComputedRef } from 'vue'\n\nimport { type MVT_Row, type MVT_RowData, type MVT_TableInstance } from '../types'\nimport { getMVT_Rows } from '../utils/row.utils'\n\n/**\n * Returns the MVT-adjusted rows (ranking, pinning, and creating-row insertion)\n */\nexport const useMVT_Rows = <TData extends MVT_RowData>(\n table: MVT_TableInstance<TData>,\n): ComputedRef<MVT_Row<TData>[]> => {\n return computed(() => {\n const { creatingRow, expanded, globalFilter, pagination, rowPinning, sorting } =\n table.getState()\n void creatingRow\n void expanded\n void globalFilter\n void pagination.pageIndex\n void pagination.pageSize\n void rowPinning\n void sorting\n void table.getRowModel().rows\n return getMVT_Rows(table)\n })\n}\n","import { computed, type Ref } from 'vue'\n\nimport { type Range, useVirtualizer } from '@tanstack/vue-virtual'\n\nimport {\n type MVT_DensityState,\n type MVT_Row,\n type MVT_RowData,\n type MVT_RowVirtualizer,\n type MVT_TableInstance,\n} from '../types'\nimport { parseFromValuesOrFunc } from '../utils/utils'\nimport { extraIndexRangeExtractor } from '../utils/virtualization.utils'\n\nexport const useMVT_RowVirtualizer = <\n TData extends MVT_RowData,\n TScrollElement extends Element | Window = HTMLDivElement,\n TItemElement extends Element = HTMLTableRowElement,\n>(\n table: MVT_TableInstance<TData>,\n rows?: Ref<MVT_Row<TData>[]>,\n): Ref<MVT_RowVirtualizer<TScrollElement, TItemElement>> | undefined => {\n const {\n getRowModel,\n getState,\n options: {\n enableRowVirtualization,\n renderDetailPanel,\n rowVirtualizerInstanceRef,\n rowVirtualizerOptions,\n },\n refs: { tableContainerRef },\n } = table\n\n if (!enableRowVirtualization) return undefined\n\n const rowVirtualizerProps = parseFromValuesOrFunc(rowVirtualizerOptions, {\n table,\n })\n\n const defaultRowHeightByDensity: Record<MVT_DensityState, number> = {\n lg: 62.7,\n md: 54.7,\n sm: 48.7,\n xl: 70.7,\n xs: 42.7,\n }\n\n const { density, draggingRow, expanded } = getState()\n\n const normalRowHeight = defaultRowHeightByDensity[density] ?? defaultRowHeightByDensity['md']\n\n const rowVirtualizerRef = useVirtualizer<HTMLDivElement, HTMLTableRowElement>(\n computed(() => {\n const rowCount = rows?.value.length ?? getRowModel().rows.length\n return {\n count: renderDetailPanel ? rowCount * 2 : rowCount,\n estimateSize: (index: number) =>\n renderDetailPanel && index % 2 === 1 ? (expanded === true ? 100 : 0) : normalRowHeight,\n getScrollElement: () => tableContainerRef.value as any,\n measureElement:\n typeof window !== 'undefined' && navigator.userAgent.indexOf('Firefox') === -1\n ? (element: any) => element?.getBoundingClientRect().height\n : undefined,\n overscan: 4,\n rangeExtractor: (range: Range) => {\n const current_index = getRowModel().rows.findIndex((row) => row.id === draggingRow?.id)\n return extraIndexRangeExtractor(range, current_index >= 0 ? current_index : 0)\n },\n ...rowVirtualizerProps,\n }\n }) as any,\n )\n\n const rowVirtualizer = rowVirtualizerRef.value as unknown as MVT_RowVirtualizer<\n TScrollElement,\n TItemElement\n >\n\n if (!Object.getOwnPropertyDescriptor(rowVirtualizer, 'virtualRows')) {\n Object.defineProperty(rowVirtualizer, 'virtualRows', {\n configurable: true,\n get() {\n return this.getVirtualItems()\n },\n })\n }\n\n if (rowVirtualizerInstanceRef) {\n rowVirtualizerInstanceRef.value = rowVirtualizer as any\n }\n\n return rowVirtualizerRef as unknown as Ref<MVT_RowVirtualizer<TScrollElement, TItemElement>>\n}\n",".root {\n background-color: transparent;\n border: none;\n border-radius: 4px;\n color: inherit;\n cursor: copy;\n font-family: inherit;\n font-size: inherit;\n font-weight: inherit;\n justify-content: inherit;\n letter-spacing: inherit;\n margin: -4px;\n min-width: unset;\n padding: 4px;\n text-align: inherit;\n text-transform: inherit;\n &:active {\n transform: translateY(1px);\n }\n &:hover {\n background-color: color-mix(\n in srgb,\n var(--mantine-primary-color-filled-hover) 10%,\n transparent\n );\n }\n}\n","import { defineComponent, h, type PropType, ref } from 'vue'\n\nimport { Tooltip, UnstyledButton } from '@mantine-vue/core'\n\nimport clsx from 'clsx'\n\nimport { type MVT_Cell, type MVT_RowData, type MVT_TableInstance } from '../../types'\nimport { parseFromValuesOrFunc } from '../../utils/utils'\nimport classes from './MVT_CopyButton.module.css'\n\nexport const MVT_CopyButton = defineComponent({\n name: 'MVTCopyButton',\n inheritAttrs: false,\n props: {\n cell: {\n type: Object as PropType<MVT_Cell<MVT_RowData>>,\n required: true,\n },\n table: {\n type: Object as PropType<MVT_TableInstance<MVT_RowData>>,\n required: true,\n },\n },\n setup(props, { attrs, slots }) {\n const copied = ref(false)\n return () => {\n const { cell, table } = props\n const {\n options: { localization, mantineCopyButtonProps },\n } = table\n const { column, row } = cell\n\n const copyButtonProps = {\n ...parseFromValuesOrFunc(mantineCopyButtonProps, {\n cell,\n column,\n row,\n table,\n }),\n ...parseFromValuesOrFunc(column.columnDef.mantineCopyButtonProps, {\n cell,\n column,\n row,\n table,\n }),\n ...attrs,\n }\n\n const handleCopy = () => {\n navigator?.clipboard?.writeText(cell.getValue<any>()?.toString())\n copied.value = true\n setTimeout(() => (copied.value = false), 4000)\n }\n\n return h(\n Tooltip,\n {\n color: copied.value ? 'teal' : undefined,\n label: copied.value ? localization.copiedToClipboard : localization.clickToCopy,\n openDelay: 1000,\n withinPortal: true,\n } as any,\n () =>\n h(\n UnstyledButton,\n {\n ...copyButtonProps,\n onClick: (event: MouseEvent) => {\n event.stopPropagation()\n handleCopy()\n ;(copyButtonProps as any)?.onClick?.(event)\n },\n class: clsx(classes.root, (copyButtonProps as any)?.class),\n } as any,\n () => slots.default?.(),\n ),\n )\n }\n },\n})\n","import { defineComponent, h, type PropType } from 'vue'\n\nimport { Highlight } from '@mantine-vue/core'\n\nimport { type MVT_Cell, type MVT_Node, type MVT_RowData, type MVT_TableInstance } from '../../types'\nimport { parseFromValuesOrFunc } from '../../utils/utils'\n\nconst allowedTypes = ['string', 'number']\nconst allowedFilterVariants = ['text', 'autocomplete']\n\nexport const MVT_TableBodyCellValue = defineComponent({\n name: 'MVTTableBodyCellValue',\n props: {\n cell: {\n type: Object as PropType<MVT_Cell<MVT_RowData>>,\n required: true,\n },\n renderedColumnIndex: { type: Number, default: 0 },\n renderedRowIndex: { type: Number, default: 0 },\n table: {\n type: Object as PropType<MVT_TableInstance<MVT_RowData>>,\n required: true,\n },\n },\n setup(props) {\n return () => {\n const { cell, renderedColumnIndex, renderedRowIndex, table } = props\n const {\n getState,\n options: { enableFilterMatchHighlighting, mantineHighlightProps = { size: 'sm' } },\n } = table\n const { column, row } = cell\n const { columnDef } = column\n const { globalFilter, globalFilterFn } = getState()\n const filterValue = column.getFilterValue()\n\n const highlightProps = parseFromValuesOrFunc(mantineHighlightProps, {\n cell,\n column,\n row,\n table,\n }) as Record<string, any>\n\n let renderedCellValue: MVT_Node | number | string | undefined =\n cell.getIsAggregated() && columnDef.AggregatedCell\n ? columnDef.AggregatedCell({ cell, column, row, table })\n : row.getIsGrouped() && !cell.getIsGrouped()\n ? null\n : cell.getIsGrouped() && columnDef.GroupedCell\n ? columnDef.GroupedCell({ cell, column, row, table })\n : undefined\n\n const isGroupedValue = renderedCellValue !== undefined\n\n if (!isGroupedValue) {\n renderedCellValue = cell.renderValue() as number | string\n }\n\n if (\n enableFilterMatchHighlighting &&\n columnDef.enableFilterMatchHighlighting !== false &&\n renderedCellValue &&\n allowedTypes.includes(typeof renderedCellValue) &&\n ((filterValue &&\n allowedTypes.includes(typeof filterValue) &&\n allowedFilterVariants.includes(columnDef.filterVariant as string)) ||\n (globalFilter &&\n allowedTypes.includes(typeof globalFilter) &&\n column.getCanGlobalFilter()))\n ) {\n let highlight: string | string[] = (\n column.getFilterValue() ??\n globalFilter ??\n ''\n ).toString() as string\n if ((filterValue ? columnDef._filterFn : globalFilterFn) === 'fuzzy') {\n highlight = highlight.split(' ')\n }\n const text = renderedCellValue.toString()\n\n renderedCellValue = h(\n Highlight,\n { color: 'yellow.3', highlight, ...highlightProps } as any,\n () => text,\n )\n }\n\n if (columnDef.Cell && !isGroupedValue) {\n renderedCellValue = columnDef.Cell({\n cell,\n column,\n renderedCellValue,\n renderedColumnIndex,\n renderedRowIndex,\n row,\n table,\n })\n }\n\n return renderedCellValue\n }\n },\n})\n",".root {\n --resize-thickness: 2px;\n\n background-clip: padding-box;\n text-align: var(--mvt-cell-align, left);\n overflow: hidden;\n position: relative;\n transition: padding 150ms ease-in-out;\n\n &[data-dragging-column] {\n z-index: 2;\n border-left: var(--drag-thickness) dashed var(--mvt-dragging-drag-border-color);\n border-right: var(--drag-thickness) dashed var(--mvt-dragging-drag-border-color);\n &[data-last-row] {\n border-bottom: var(--drag-thickness) dashed var(--mvt-dragging-drag-border-color);\n }\n }\n\n &[data-hovered-column-target] {\n opacity: 0.5;\n border-left: var(--hover-thickness) dashed var(--mvt-dragging-hovered-border-color);\n border-right: var(--hover-thickness) dashed var(--mvt-dragging-hovered-border-color);\n &[data-last-row] {\n border-bottom: var(--hover-thickness) dashed var(--mvt-dragging-hovered-border-color);\n }\n }\n\n &[data-resizing='ltr'] {\n border-right: var(--resize-thickness) solid var(--mvt-resize-column-border-color);\n }\n\n &[data-resizing='rtl'] {\n border-left: var(--resize-thickness) solid var(--mvt-resize-column-border-color);\n }\n\n &:hover {\n outline-offset: -1px;\n text-overflow: clip;\n }\n}\n\n.root-grid {\n align-items: center;\n justify-content: var(--mvt-cell-align, flex-start);\n display: flex;\n}\n\n.root-virtualized {\n transition: none;\n}\n\n.root-data-col {\n text-overflow: ellipsis;\n}\n\n.root-nowrap {\n white-space: nowrap;\n}\n\n.root-cursor-pointer {\n cursor: pointer;\n}\n\n.root-editable-hover {\n @mixin hover {\n outline: 1px solid var(--mantine-color-gray-7);\n }\n}\n\n.root-cell-hover-reveal {\n overflow: visible;\n}\n\n.cell-hover-reveal {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n text-align: var(--mvt-cell-align);\n}\n\n.cell-hover-reveal.overflowing:hover {\n overflow: visible;\n white-space: normal;\n position: absolute;\n z-index: 2;\n padding: var(--table-vertical-spacing) var(--table-horizontal-spacing, var(--mantine-spacing-xs));\n background-color: var(--mvt-base-background-color);\n box-shadow: var(--mantine-shadow-sm);\n border: 1px solid var(--mantine-primary-color-filled);\n text-indent: -1px;\n width: max-content;\n top: 0;\n left: 0;\n height: 100%;\n display: flex;\n justify-content: center;\n align-items: center;\n}\n","import { type CSSProperties, defineComponent, h, type PropType, ref, type Ref } from 'vue'\n\nimport { Skeleton, TableTd, useDirection, useMantineTheme } from '@mantine-vue/core'\n\nimport clsx from 'clsx'\n\nimport {\n type MVT_Cell,\n type MVT_RowData,\n type MVT_TableInstance,\n type MVT_VirtualItem,\n} from '../../types'\nimport { parseCSSVarId } from '../../utils/style.utils'\nimport { parseFromValuesOrFunc } from '../../utils/utils'\nimport { MVT_CopyButton } from '../buttons/MVT_CopyButton'\nimport { MVT_EditCellTextInput } from '../inputs/MVT_EditCellTextInput'\nimport { MVT_TableBodyCellValue } from './MVT_TableBodyCellValue'\nimport classes from './MVT_TableBodyCell.module.css'\n\nexport const MVT_TableBodyCell = defineComponent({\n name: 'MVTTableBodyCell',\n inheritAttrs: false,\n props: {\n cell: {\n type: Object as PropType<MVT_Cell<MVT_RowData>>,\n required: true,\n },\n numRows: { type: Number, default: 1 },\n renderedColumnIndex: { type: Number, default: 0 },\n renderedRowIndex: { type: Number, default: 0 },\n rowRef: {\n type: Object as PropType<Ref<HTMLTableRowElement | null>>,\n default: undefined,\n },\n table: {\n type: Object as PropType<MVT_TableInstance<MVT_RowData>>,\n required: true,\n },\n virtualCell: {\n type: Object as PropType<MVT_VirtualItem>,\n default: undefined,\n },\n },\n setup(props, { attrs }) {\n const direction = useDirection()\n const theme = useMantineTheme()\n const skeletonWidth = ref(100)\n const isCellContentOverflowing = ref(false)\n const cellHoverRevealDivRef = ref<HTMLDivElement | null>(null)\n\n // compute a stable skeleton width once\n {\n const { cell, table } = props\n const { isLoading, showSkeletons } = table.getState()\n if (isLoading || showSkeletons) {\n const size = cell.column.getSize()\n skeletonWidth.value =\n cell.column.columnDef.columnDefType === 'display'\n ? size / 2\n : Math.round(Math.random() * (size - size / 3) + size / 3)\n }\n }\n\n return () => {\n const { cell, numRows, renderedColumnIndex, renderedRowIndex, rowRef, table, virtualCell } =\n props\n const {\n getState,\n options: {\n columnResizeDirection,\n columnResizeMode,\n createDisplayMode,\n editDisplayMode,\n enableClickToCopy,\n enableColumnOrdering,\n enableColumnPinning,\n enableEditing,\n enableGrouping,\n layoutMode,\n mantineSkeletonProps,\n mantineTableBodyCellProps,\n },\n refs: { editInputRefs },\n setEditingCell,\n setHoveredColumn,\n } = table\n const {\n columnSizingInfo,\n creatingRow,\n density,\n draggingColumn,\n editingCell,\n editingRow,\n hoveredColumn,\n isLoading,\n showSkeletons,\n } = getState()\n const { column, row } = cell\n const { columnDef } = column\n const { columnDefType } = columnDef\n\n const args = {\n cell,\n column,\n renderedColumnIndex,\n renderedRowIndex,\n row,\n table,\n }\n const tableCellProps = {\n ...parseFromValuesOrFunc(mantineTableBodyCellProps, args),\n ...parseFromValuesOrFunc(columnDef.mantineTableBodyCellProps, args),\n ...attrs,\n }\n\n const skeletonProps = parseFromValuesOrFunc(mantineSkeletonProps, args)\n\n const widthStyles: CSSProperties = {\n minWidth: `max(calc(var(--col-${parseCSSVarId(\n column?.id,\n )}-size) * 1px), ${columnDef.minSize ?? 30}px)`,\n width: `calc(var(--col-${parseCSSVarId(column.id)}-size) * 1px)`,\n }\n if (layoutMode === 'grid') {\n widthStyles.flex = `${\n [0, false].includes(columnDef.grow!) ? 0 : `var(--col-${parseCSSVarId(column.id)}-size)`\n } 0 auto`\n } else if (layoutMode === 'grid-no-grow') {\n widthStyles.flex = `${+(columnDef.grow || 0)} 0 auto`\n }\n const isDraggingColumn = draggingColumn?.id === column.id\n const isHoveredColumn = hoveredColumn?.id === column.id\n const isColumnPinned =\n enableColumnPinning && columnDef.columnDefType !== 'group' && column.getIsPinned()\n\n const isEditable =\n !cell.getIsPlaceholder() &&\n parseFromValuesOrFunc(enableEditing, row) &&\n parseFromValuesOrFunc(columnDef.enableEditing, row) !== false\n\n const isEditing =\n isEditable &&\n !['custom', 'modal'].includes(editDisplayMode as string) &&\n (editDisplayMode === 'table' || editingRow?.id === row.id || editingCell?.id === cell.id) &&\n !row.getIsGrouped()\n\n const isCreating = isEditable && createDisplayMode === 'row' && creatingRow?.id === row.id\n\n const showClickToCopyButton =\n parseFromValuesOrFunc(enableClickToCopy, cell) ||\n (parseFromValuesOrFunc(columnDef.enableClickToCopy, cell) &&\n parseFromValuesOrFunc(columnDef.enableClickToCopy, cell) !== false)\n\n const handleDoubleClick = (event: MouseEvent) => {\n ;(tableCellProps as any)?.onDoubleClick?.(event)\n if (isEditable && editDisplayMode === 'cell') {\n setEditingCell(cell)\n setTimeout(() => {\n const textField = editInputRefs.value[cell.id]\n if (textField) {\n textField.focus()\n textField.select?.()\n }\n }, 100)\n }\n }\n\n const handleDragEnter = (e: DragEvent) => {\n ;(tableCellProps as any)?.onDragEnter?.(e)\n const { draggingColumn: dragging, hoveredColumn: hovered } = getState()\n if (enableGrouping && hovered?.id === 'drop-zone') {\n setHoveredColumn(null)\n }\n if (enableColumnOrdering && dragging) {\n setHoveredColumn(columnDef.enableColumnOrdering !== false ? column : null)\n }\n }\n\n const cellValueProps = {\n cell,\n renderedColumnIndex,\n renderedRowIndex,\n table,\n }\n\n const onMouseEnter = () => {\n if (!columnDef.enableCellHoverReveal) return\n const div = cellHoverRevealDivRef.value\n if (div) {\n isCellContentOverflowing.value = div.scrollWidth > div.clientWidth\n }\n }\n const onMouseLeave = () => {\n if (!columnDef.enableCellHoverReveal) return\n isCellContentOverflowing.value = false\n }\n\n const renderCellContent = () => {\n if (cell.getIsPlaceholder()) {\n return columnDef.PlaceholderCell?.({ cell, column, row, table }) ?? null\n }\n\n if (showSkeletons !== false && (isLoading || showSkeletons)) {\n return h(Skeleton, {\n height: 20,\n width: skeletonWidth.value,\n ...skeletonProps,\n } as any)\n }\n\n if (\n columnDefType === 'display' &&\n (['mvt-row-expand', 'mvt-row-numbers', 'mvt-row-select'].includes(column.id) ||\n !row.getIsGrouped())\n ) {\n return columnDef.Cell?.({\n column,\n renderedCellValue: cell.renderValue() as any,\n row,\n rowRef,\n ...cellValueProps,\n })\n }\n\n if (isCreating || isEditing) {\n return h(MVT_EditCellTextInput, { cell, table } as any)\n }\n\n if (showClickToCopyButton && columnDef.enableClickToCopy !== false) {\n return h(MVT_CopyButton, { cell, table } as any, () =>\n h(MVT_TableBodyCellValue, cellValueProps as any),\n )\n }\n\n return h(MVT_TableBodyCellValue, cellValueProps as any)\n }\n\n const groupedSuffix =\n cell.getIsGrouped() && !columnDef.GroupedCell ? ` (${row.subRows?.length})` : null\n\n const inner = columnDef.enableCellHoverReveal\n ? h(\n 'div',\n {\n class: clsx(\n columnDef.enableCellHoverReveal &&\n !(isCreating || isEditing) &&\n classes['cell-hover-reveal'],\n isCellContentOverflowing.value && classes['overflowing'],\n ),\n ref: (el: any) => {\n cellHoverRevealDivRef.value = (el?.$el ?? el) as HTMLDivElement\n },\n },\n [renderCellContent(), groupedSuffix],\n )\n : [renderCellContent(), groupedSuffix]\n\n const style = {\n ...widthStyles,\n '--mvt-cell-align':\n (tableCellProps as any).align ?? (direction.dir.value === 'rtl' ? 'right' : 'left'),\n '--mvt-table-cell-left':\n isColumnPinned === 'left' ? `${column.getStart(isColumnPinned)}` : undefined,\n '--mvt-table-cell-right':\n isColumnPinned === 'right' ? `${column.getAfter(isColumnPinned)}` : undefined,\n ...parseFromValuesOrFunc((tableCellProps as any).style, theme),\n }\n\n const { children: cellChildren, ...tableCellRest } = tableCellProps as any\n\n return h(\n TableTd,\n {\n 'data-column-pinned': isColumnPinned || undefined,\n 'data-dragging-column': isDraggingColumn || undefined,\n 'data-first-right-pinned':\n (isColumnPinned === 'right' && column.getIsFirstColumn(isColumnPinned)) || undefined,\n 'data-hovered-column-target': isHoveredColumn || undefined,\n 'data-index': renderedColumnIndex,\n 'data-last-left-pinned':\n (isColumnPinned === 'left' && column.getIsLastColumn(isColumnPinned)) || undefined,\n 'data-last-row': renderedRowIndex === numRows - 1 || undefined,\n 'data-resizing':\n (columnResizeMode === 'onChange' &&\n columnSizingInfo?.isResizingColumn === column.id &&\n columnResizeDirection) ||\n undefined,\n ...tableCellRest,\n class: clsx(\n classes.root,\n layoutMode?.startsWith('grid') && classes['root-grid'],\n virtualCell && classes['root-virtualized'],\n isEditable && editDisplayMode === 'cell' && classes['root-cursor-pointer'],\n isEditable &&\n ['cell', 'table'].includes(editDisplayMode ?? '') &&\n columnDefType !== 'display' &&\n classes['root-editable-hover'],\n columnDefType === 'data' && classes['root-data-col'],\n density === 'xs' && classes['root-nowrap'],\n columnDef.enableCellHoverReveal && classes['root-cell-hover-reveal'],\n (tableCellProps as any)?.class,\n ),\n onDblclick: handleDoubleClick,\n onDragenter: handleDragEnter,\n onMouseenter: onMouseEnter,\n onMouseleave: onMouseLeave,\n style,\n } as any,\n () => cellChildren ?? inner,\n )\n }\n },\n})\n\nexport const Memo_MVT_TableBodyCell = MVT_TableBodyCell\n",".root {\n display: table-row;\n width: 100%;\n background-color: var(--mvt-base-background-color);\n}\n\n.root-grid {\n display: flex;\n}\n\n.root-virtual-row {\n position: absolute;\n top: var(--mvt-parent-row-height);\n transform: translateY(var(--mvt-virtual-row-start));\n transition: none;\n z-index: 1;\n}\n\n.inner {\n display: table-cell;\n transition: all 150ms ease-in-out;\n width: var(--mvt-inner-width);\n}\n\n.inner-grid {\n display: flex;\n}\n\n.inner-expanded {\n border-bottom: 1px solid var(--_table-border-color);\n}\n\n.inner-virtual {\n transition: none;\n}\n","import { defineComponent, h, type PropType, type Ref } from 'vue'\n\nimport { Collapse, TableTd, TableTr } from '@mantine-vue/core'\n\nimport clsx from 'clsx'\n\nimport {\n type MVT_Row,\n type MVT_RowData,\n type MVT_RowVirtualizer,\n type MVT_TableInstance,\n type MVT_VirtualItem,\n} from '../../types'\nimport { parseFromValuesOrFunc } from '../../utils/utils'\nimport { MVT_EditCellTextInput } from '../inputs/MVT_EditCellTextInput'\nimport { renderMVT_Renderable, useMVT_Slots } from '../MVT_TableSlots'\nimport classes from './MVT_TableDetailPanel.module.css'\n\nexport const MVT_TableDetailPanel = defineComponent({\n name: 'MVTTableDetailPanel',\n inheritAttrs: false,\n props: {\n parentRowRef: {\n type: Object as PropType<Ref<HTMLTableRowElement | null>>,\n required: true,\n },\n renderedRowIndex: { type: Number, default: 0 },\n row: {\n type: Object as PropType<MVT_Row<MVT_RowData>>,\n required: true,\n },\n rowVirtualizer: {\n type: Object as PropType<MVT_RowVirtualizer>,\n default: undefined,\n },\n striped: {\n type: [Boolean, String] as PropType<false | string>,\n default: undefined,\n },\n table: {\n type: Object as PropType<MVT_TableInstance<MVT_RowData>>,\n required: true,\n },\n virtualRow: {\n type: Object as PropType<MVT_VirtualItem>,\n default: undefined,\n },\n },\n setup(props, { attrs }) {\n const mvtSlots = useMVT_Slots()\n return () => {\n const { parentRowRef, renderedRowIndex, row, rowVirtualizer, striped, table, virtualRow } =\n props\n const {\n getState,\n getVisibleLeafColumns,\n options: {\n layoutMode,\n mantineDetailPanelProps,\n mantineTableBodyRowProps,\n renderDetailPanel,\n },\n } = table\n const { isLoading } = getState()\n\n const tableRowProps = parseFromValuesOrFunc(mantineTableBodyRowProps, {\n isDetailPanel: true,\n row,\n table,\n })\n\n const tableCellProps = {\n ...parseFromValuesOrFunc(mantineDetailPanelProps, { row, table }),\n ...attrs,\n }\n\n const internalEditComponents = row\n .getAllCells()\n .filter((cell) => cell.column.columnDef.columnDefType === 'data')\n .map((cell) => h(MVT_EditCellTextInput, { cell, key: cell.id, table } as any))\n\n const DetailPanel =\n !isLoading &&\n row.getIsExpanded() &&\n renderMVT_Renderable(mvtSlots.detailPanel, renderDetailPanel, {\n internalEditComponents,\n row,\n table,\n })\n\n return h(\n TableTr,\n {\n 'data-index': renderDetailPanel ? renderedRowIndex * 2 + 1 : renderedRowIndex,\n 'data-striped': striped,\n ref: (el: any) => {\n const node = (el?.$el ?? el) as HTMLTableRowElement\n if (node) rowVirtualizer?.measureElement?.(node)\n },\n ...tableRowProps,\n style: {\n '--mvt-parent-row-height': virtualRow\n ? `${parentRowRef.value?.getBoundingClientRect()?.height}px`\n : undefined,\n '--mvt-virtual-row-start': virtualRow ? `${virtualRow.start}px` : undefined,\n ...(tableRowProps as any)?.style,\n },\n class: clsx(\n 'mantine-Table-tr-detail-panel',\n classes.root,\n layoutMode?.startsWith('grid') && classes['root-grid'],\n virtualRow && classes['root-virtual-row'],\n (tableRowProps as any)?.class,\n ),\n } as any,\n () =>\n h(\n TableTd,\n {\n colspan: getVisibleLeafColumns().length,\n component: 'td',\n ...tableCellProps,\n style: {\n '--mvt-inner-width': `${table.getTotalSize()}px`,\n },\n class: clsx(\n 'mantine-Table-td-detail-panel',\n classes.inner,\n layoutMode?.startsWith('grid') && classes['inner-grid'],\n row.getIsExpanded() && classes['inner-expanded'],\n virtualRow && classes['inner-virtual'],\n ),\n p: row.getIsExpanded() && DetailPanel ? 'md' : 0,\n } as any,\n () =>\n rowVirtualizer\n ? row.getIsExpanded() && DetailPanel\n : h(Collapse, { expanded: row.getIsExpanded() } as any, () => DetailPanel),\n ),\n )\n }\n },\n})\n",".root {\n --hover-thickness: 3px;\n --drag-thickness: 1px;\n\n box-sizing: border-box;\n transition: all 150ms ease-in-out;\n width: 100%;\n\n /* default background-color */\n &:not([data-striped], [data-striped='false']) {\n background-color: var(--mvt-base-background-color);\n }\n /* striped background-colors (take detail panels and virtualization into account) */\n &:not([data-selected], [data-row-pinned]) {\n &[data-striped='odd'] {\n background-color: var(--mvt-striped-row-background-color);\n }\n &[data-striped='even'] {\n background-color: var(--mvt-striped-row-background-color);\n }\n }\n\n /* column pinning styles */\n &:not([data-selected], [data-row-pinned]) {\n td {\n &[data-column-pinned] {\n &::before {\n background-color: var(--mvt-pinned-column-background-color);\n }\n }\n }\n &[data-striped='odd'] {\n td {\n &[data-column-pinned] {\n &::before {\n background-color: var(--mvt-striped-row-background-color);\n }\n }\n }\n }\n &[data-striped='even'] {\n td {\n &[data-column-pinned] {\n &::before {\n background-color: var(--mvt-striped-row-background-color);\n }\n }\n }\n }\n }\n\n td {\n &[data-column-pinned] {\n background-color: var(--mvt-pinned-column-background-color);\n opacity: 0.97;\n position: sticky;\n z-index: 1;\n\n &::before {\n content: '';\n height: 100%;\n left: 0;\n position: absolute;\n top: 0;\n width: 100%;\n z-index: -1;\n }\n\n &[data-column-pinned='left'] {\n left: calc(var(--mvt-table-cell-left, 0) * 1px);\n &[data-last-left-pinned] {\n &::before {\n box-shadow: -6px 0 6px -6px\n alpha(\n light-dark(var(--mantine-color-gray-outline), var(--mantine-color-dark-outline)),\n 0.5\n )\n inset;\n }\n }\n }\n\n &[data-column-pinned='right'] {\n right: calc(var(--mvt-table-cell-right, 0) * 1px);\n &[data-first-right-pinned] {\n &::before {\n box-shadow: 6px 0 6px -6px\n alpha(\n light-dark(var(--mantine-color-gray-outline), var(--mantine-color-dark-outline)),\n 0.5\n )\n inset;\n }\n }\n }\n }\n }\n /* end column pinning styles */\n /* row pinning styles */\n &[data-row-pinned] {\n background-color: var(--mvt-pinned-row-background-color, --mantine-color-body);\n bottom: calc(var(--mvt-pinned-row-bottom) * 1px);\n opacity: 0.97;\n top: calc(var(--mvt-pinned-row-top) * 1px);\n\n td {\n &::before {\n background-color: var(--mvt-pinned-row-background-color);\n content: '';\n height: 100%;\n left: 0;\n position: absolute;\n top: 0;\n width: 100%;\n z-index: -1;\n }\n &[data-column-pinned] {\n background-color: var(--mvt-pinned-column-background-color);\n\n &::before {\n background-color: var(--mvt-pinned-row-background-color);\n content: '';\n height: 100%;\n left: 0;\n position: absolute;\n top: 0;\n width: 100%;\n z-index: -1;\n }\n }\n }\n }\n\n &[data-row-pinned='sticky'] {\n z-index: 2;\n position: sticky;\n }\n /* end row pinning styles */\n\n /* selection styles */\n &[data-selected] {\n background-color: var(--mvt-selected-row-background-color, --mantine-color-body);\n\n td {\n &[data-column-pinned] {\n background-color: var(--mvt-pinned-column-background-color);\n\n &::before {\n background-color: var(--mvt-selected-row-background-color);\n }\n }\n }\n }\n /* end selection styles */\n\n &[data-hover] {\n &:hover {\n td {\n background-color: var(--mvt-row-hover-background-color);\n &[data-column-pinned] {\n background-color: var(--mvt-base-background-color);\n &::before {\n background-color: var(--mvt-row-hover-background-color);\n }\n }\n }\n &:not([data-selected], [data-row-pinned]) {\n &[data-striped='odd'] {\n td {\n background-color: var(--mvt-striped-row-hover-background-color);\n &[data-column-pinned] {\n background-color: var(--mvt-base-background-color);\n &::before {\n background-color: var(--mvt-striped-row-hover-background-color);\n }\n }\n }\n }\n &[data-striped='even'] {\n td {\n background-color: var(--mvt-striped-row-hover-background-color);\n &[data-column-pinned] {\n background-color: var(--mvt-base-background-color);\n &::before {\n background-color: var(--mvt-striped-row-hover-background-color);\n }\n }\n }\n }\n }\n &[data-selected] {\n td {\n background-color: var(--mvt-selected-row-hover-background-color);\n\n &[data-column-pinned] {\n background-color: var(--mvt-base-background-color);\n\n &::before {\n background-color: var(--mvt-selected-row-hover-background-color);\n }\n }\n }\n }\n }\n }\n\n &[data-dragging-row] {\n opacity: 0.5;\n border-bottom: var(--drag-thickness) dashed var(--drag-color);\n border-top: var(--drag-thickness) dashed var(--drag-color);\n td {\n &:first-child {\n border-left: var(--drag-thickness) dashed var(--drag-color);\n }\n &:last-child {\n border-right: var(--drag-thickness) dashed var(--drag-color);\n }\n }\n }\n\n &[data-hovered-row-target] {\n td {\n opacity: 0.5;\n border-top: var(--hover-thickness) dashed var(--mvt-dragging-hovered-border-color);\n border-bottom: var(--hover-thickness) dashed var(--mvt-dragging-hovered-border-color);\n &:first-child {\n border-left: var(--hover-thickness) dashed var(--mvt-dragging-hovered-border-color);\n }\n &:last-child {\n border-right: var(--hover-thickness) dashed var(--mvt-dragging-hovered-border-color);\n }\n }\n }\n}\n\n.root-grid {\n display: flex;\n}\n\n.root-virtualized {\n position: absolute !important;\n top: 0;\n transition: none !important;\n transform: translateY(calc(var(--mvt-virtual-row-start) * 1px));\n will-change: transform;\n}\n","import { defineComponent, h, type PropType, ref } from 'vue'\n\nimport { Box, TableTr } from '@mantine-vue/core'\n\nimport clsx from 'clsx'\n\nimport {\n type MVT_Cell,\n type MVT_ColumnVirtualizer,\n type MVT_DensityState,\n type MVT_Row,\n type MVT_RowData,\n type MVT_RowVirtualizer,\n type MVT_TableInstance,\n type MVT_VirtualItem,\n} from '../../types'\nimport { getIsRowSelected } from '../../utils/row.utils'\nimport { parseFromValuesOrFunc } from '../../utils/utils'\nimport { useMVT_Slots } from '../MVT_TableSlots'\nimport { MVT_TableBodyCell } from './MVT_TableBodyCell'\nimport { MVT_TableDetailPanel } from './MVT_TableDetailPanel'\nimport classes from './MVT_TableBodyRow.module.css'\n\nexport const MVT_TableBodyRow = defineComponent({\n name: 'MVTTableBodyRow',\n inheritAttrs: false,\n props: {\n columnVirtualizer: {\n type: Object as PropType<MVT_ColumnVirtualizer>,\n default: undefined,\n },\n numRows: { type: Number, default: undefined },\n pinnedRowIds: {\n type: Array as PropType<string[]>,\n default: undefined,\n },\n renderedRowIndex: { type: Number, default: 0 },\n row: {\n type: Object as PropType<MVT_Row<MVT_RowData>>,\n required: true,\n },\n rowVirtualizer: {\n type: Object as PropType<MVT_RowVirtualizer>,\n default: undefined,\n },\n table: {\n type: Object as PropType<MVT_TableInstance<MVT_RowData>>,\n required: true,\n },\n tableProps: {\n type: Object as PropType<Record<string, any>>,\n required: true,\n },\n virtualRow: {\n type: Object as PropType<MVT_VirtualItem>,\n default: undefined,\n },\n },\n setup(props, { attrs, slots }) {\n const rowRef = ref<HTMLTableRowElement | null>(null)\n const mvtSlots = useMVT_Slots()\n\n return () => {\n const {\n columnVirtualizer,\n numRows,\n pinnedRowIds,\n renderedRowIndex,\n row,\n rowVirtualizer,\n table,\n tableProps,\n virtualRow,\n } = props\n const {\n getState,\n options: {\n enableRowOrdering,\n enableRowPinning,\n enableStickyFooter,\n enableStickyHeader,\n layoutMode,\n mantineTableBodyRowProps,\n renderDetailPanel,\n rowPinningDisplayMode,\n },\n refs: { tableFooterRef, tableHeadRef },\n setHoveredRow,\n } = table\n const {\n density,\n // draggingColumn,\n draggingRow,\n // editingCell,\n // editingRow,\n hoveredRow,\n isFullScreen,\n } = getState()\n\n const showDetailPanel = renderDetailPanel || mvtSlots.detailPanel\n\n const visibleCells = row.getVisibleCells()\n\n const { virtualColumns, virtualPaddingLeft, virtualPaddingRight } = columnVirtualizer ?? {}\n\n const isRowSelected = getIsRowSelected({ row, table })\n const isRowPinned = enableRowPinning && row.getIsPinned()\n const isRowStickyPinned = isRowPinned && rowPinningDisplayMode?.includes('sticky') && 'sticky'\n const isDraggingRow = draggingRow?.id === row.id\n const isHoveredRow = hoveredRow?.id === row.id\n\n const tableRowProps = {\n ...parseFromValuesOrFunc(mantineTableBodyRowProps, {\n renderedRowIndex,\n row,\n table,\n }),\n ...attrs,\n }\n\n const [bottomPinnedIndex, topPinnedIndex] =\n !enableRowPinning || !isRowStickyPinned || !pinnedRowIds || !row.getIsPinned()\n ? [undefined, undefined]\n : [[...pinnedRowIds].reverse().indexOf(row.id), pinnedRowIds.indexOf(row.id)]\n\n const tableHeadHeight =\n ((enableStickyHeader || isFullScreen) && tableHeadRef.value?.clientHeight) || 0\n const tableFooterHeight = (enableStickyFooter && tableFooterRef.value?.clientHeight) || 0\n\n const defaultRowHeightByDensity: Record<MVT_DensityState, number> = {\n lg: 61,\n md: 53,\n sm: 45,\n xl: 69,\n xs: 37,\n }\n\n const rowHeight =\n parseInt((tableRowProps as any)?.style?.height, 10) ||\n (defaultRowHeightByDensity[density] ?? defaultRowHeightByDensity['md'])\n\n const handleDragEnter = (_e: DragEvent) => {\n if (enableRowOrdering && getState().draggingRow) {\n setHoveredRow(row)\n }\n }\n\n let striped = tableProps.striped as boolean | string\n if (striped) {\n if (striped === true) striped = 'odd'\n if (striped === 'odd' && renderedRowIndex % 2 !== 0) striped = false\n if (striped === 'even' && renderedRowIndex % 2 === 0) striped = false\n }\n\n const style = {\n ...(tableRowProps as any)?.style,\n '--mvt-pinned-row-bottom':\n !virtualRow && bottomPinnedIndex !== undefined && isRowPinned\n ? `${bottomPinnedIndex * rowHeight + (enableStickyFooter ? tableFooterHeight - 1 : 0)}`\n : undefined,\n '--mvt-pinned-row-top': virtualRow\n ? undefined\n : topPinnedIndex !== undefined && isRowPinned\n ? `${\n topPinnedIndex * rowHeight +\n (enableStickyHeader || isFullScreen ? tableHeadHeight - 1 : 0)\n }`\n : undefined,\n '--mvt-virtual-row-start': virtualRow ? `${virtualRow.start}` : undefined,\n }\n\n const cells = slots.default\n ? slots.default()\n : (virtualColumns ?? row.getVisibleCells()).map(\n (cellOrVirtualCell, renderedColumnIndex) => {\n let cell = cellOrVirtualCell as MVT_Cell<MVT_RowData>\n let index = renderedColumnIndex\n if (columnVirtualizer) {\n index = (cellOrVirtualCell as MVT_VirtualItem).index\n cell = visibleCells[index]\n }\n return h(MVT_TableBodyCell, {\n cell,\n key: cell.id,\n numRows,\n renderedColumnIndex: index,\n renderedRowIndex,\n rowRef,\n table,\n virtualCell: columnVirtualizer ? (cellOrVirtualCell as MVT_VirtualItem) : undefined,\n } as any)\n },\n )\n\n return [\n h(\n TableTr,\n {\n 'data-dragging-row': isDraggingRow || undefined,\n 'data-hovered-row-target': isHoveredRow || undefined,\n 'data-index': showDetailPanel ? renderedRowIndex * 2 : renderedRowIndex,\n 'data-row-pinned': isRowStickyPinned || isRowPinned || undefined,\n 'data-selected': isRowSelected || undefined,\n 'data-striped': striped,\n onDragenter: handleDragEnter,\n ref: (el: any) => {\n const node = (el?.$el ?? el) as HTMLTableRowElement\n if (node) {\n rowRef.value = node\n rowVirtualizer?.measureElement?.(node)\n }\n },\n ...tableRowProps,\n style,\n class: clsx(\n classes.root,\n layoutMode?.startsWith('grid') && classes['root-grid'],\n virtualRow && classes['root-virtualized'],\n (tableRowProps as any)?.class,\n ),\n } as any,\n () => [\n virtualPaddingLeft\n ? h(Box, {\n component: 'td',\n display: 'flex',\n w: virtualPaddingLeft,\n } as any)\n : null,\n cells,\n virtualPaddingRight\n ? h(Box, {\n component: 'td',\n display: 'flex',\n w: virtualPaddingRight,\n } as any)\n : null,\n ],\n ),\n showDetailPanel &&\n !row.getIsGrouped() &&\n h(MVT_TableDetailPanel, {\n parentRowRef: rowRef,\n renderedRowIndex,\n row,\n rowVirtualizer,\n striped,\n table,\n virtualRow,\n } as any),\n ]\n }\n },\n})\n\nexport const Memo_MVT_TableBodyRow = MVT_TableBodyRow\n",".root {\n background-color: var(--mvt-base-background-color);\n position: relative;\n}\n\n.root-grid {\n display: grid;\n}\n\n.root-no-rows {\n min-height: 100px;\n}\n\n.root-virtualized {\n height: var(--mvt-table-body-height);\n}\n\n.empty-row-tr-grid {\n display: grid;\n}\n\n.empty-row-td-grid {\n display: grid;\n width: inherit;\n}\n\n.empty-row-td-content {\n color: var(--mantine-color-dimmed);\n font-style: italic;\n max-width: min(100vw, calc(var(--mvt-paper-width) * 1px));\n padding-bottom: 2rem;\n padding-top: 2rem;\n text-align: center;\n width: 100%;\n}\n\n.pinned {\n bottom: calc(var(--mvt-table-footer-height, 0) * 1px - 1px);\n position: sticky;\n top: calc(var(--mvt-table-head-height, 0) * 1px - 1px);\n z-index: 1;\n}\n","import { defineComponent, h, type PropType } from 'vue'\n\nimport { createRow } from '@tanstack/vue-table'\n\nimport { TableTd, Text } from '@mantine-vue/core'\n\nimport clsx from 'clsx'\n\nimport {\n type MVT_ColumnVirtualizer,\n type MVT_Row,\n type MVT_RowData,\n type MVT_TableInstance,\n} from '../../types'\nimport { MVT_ExpandButton } from '../buttons/MVT_ExpandButton'\nimport { MVT_TableBodyRow } from './MVT_TableBodyRow'\nimport classes from './MVT_TableBody.module.css'\n\nexport const MVT_TableBodyEmptyRow = defineComponent({\n name: 'MVTTableBodyEmptyRow',\n inheritAttrs: false,\n props: {\n columnVirtualizer: {\n type: Object as PropType<MVT_ColumnVirtualizer>,\n default: undefined,\n },\n numRows: { type: Number, default: undefined },\n table: {\n type: Object as PropType<MVT_TableInstance<MVT_RowData>>,\n required: true,\n },\n tableProps: {\n type: Object as PropType<Record<string, any>>,\n required: true,\n },\n },\n setup(props) {\n const emptyRow = createRow(\n props.table as any,\n 'mvt-row-empty',\n {} as MVT_RowData,\n 0,\n 0,\n ) as MVT_Row<MVT_RowData>\n\n return () => {\n const { columnVirtualizer, numRows, table, tableProps } = props\n const {\n getState,\n options: { layoutMode, localization, renderDetailPanel, renderEmptyRowsFallback },\n refs: { tablePaperRef },\n } = table\n const { columnFilters, globalFilter } = getState()\n\n return h(\n MVT_TableBodyRow,\n {\n columnVirtualizer,\n numRows,\n class: clsx(\n 'mvt-table-body-row',\n layoutMode?.startsWith('grid') && classes['empty-row-tr-grid'],\n ),\n renderedRowIndex: 0,\n row: emptyRow,\n table,\n tableProps,\n virtualRow: undefined,\n } as any,\n () => [\n renderDetailPanel &&\n h(\n TableTd,\n {\n class: clsx(\n 'mvt-table-body-cell',\n layoutMode?.startsWith('grid') && classes['empty-row-td-grid'],\n ),\n colspan: 1,\n } as any,\n () => h(MVT_ExpandButton, { row: emptyRow, table } as any),\n ),\n h(\n 'td',\n {\n class: clsx(\n 'mvt-table-body-cell',\n layoutMode?.startsWith('grid') && classes['empty-row-td-grid'],\n ),\n colspan: table.getVisibleLeafColumns().length,\n },\n [\n renderEmptyRowsFallback?.({ table }) ??\n h(\n Text,\n {\n style: {\n '--mvt-paper-width': `${tablePaperRef.value?.clientWidth}`,\n },\n class: clsx(classes['empty-row-td-content']),\n } as any,\n () =>\n globalFilter || columnFilters.length\n ? localization.noResultsFound\n : localization.noRecordsToDisplay,\n ),\n ],\n ),\n ],\n )\n }\n },\n})\n","import { defineComponent, Fragment, h, type PropType } from 'vue'\n\nimport { TableTbody } from '@mantine-vue/core'\n\nimport clsx from 'clsx'\n\nimport { useMVT_Rows } from '../../hooks/useMVT_Rows'\nimport { useMVT_RowVirtualizer } from '../../hooks/useMVT_RowVirtualizer'\nimport {\n type MVT_ColumnVirtualizer,\n type MVT_Row,\n type MVT_RowData,\n type MVT_TableInstance,\n type MVT_VirtualItem,\n} from '../../types'\nimport { parseFromValuesOrFunc } from '../../utils/utils'\nimport { MVT_TableBodyEmptyRow } from './MVT_TableBodyEmptyRow'\nimport { MVT_TableBodyRow } from './MVT_TableBodyRow'\nimport classes from './MVT_TableBody.module.css'\n\nexport const MVT_TableBody = defineComponent({\n name: 'MVTTableBody',\n inheritAttrs: false,\n props: {\n columnVirtualizer: {\n type: Object as PropType<MVT_ColumnVirtualizer>,\n default: undefined,\n },\n table: {\n type: Object as PropType<MVT_TableInstance<MVT_RowData>>,\n required: true,\n },\n tableProps: {\n type: Object as PropType<Record<string, any>>,\n required: true,\n },\n },\n setup(props, { attrs }) {\n const rows = useMVT_Rows(props.table)\n const rowVirtualizerRef = useMVT_RowVirtualizer(props.table, rows)\n\n return () => {\n const { columnVirtualizer, table, tableProps } = props\n\n const rowVirtualizer = rowVirtualizerRef?.value\n const {\n getIsSomeRowsPinned,\n getRowModel,\n getState,\n getTopRows,\n getBottomRows,\n options: {\n enableStickyFooter,\n enableStickyHeader,\n layoutMode,\n mantineTableBodyProps,\n renderDetailPanel,\n rowPinningDisplayMode,\n },\n refs: { tableFooterRef, tableHeadRef },\n } = table\n const { isFullScreen, rowPinning } = getState()\n\n const tableBodyProps = {\n ...parseFromValuesOrFunc(mantineTableBodyProps, { table }),\n ...attrs,\n }\n\n const tableHeadHeight =\n ((enableStickyHeader || isFullScreen) && tableHeadRef.value?.clientHeight) || 0\n const tableFooterHeight = (enableStickyFooter && tableFooterRef.value?.clientHeight) || 0\n\n const pinnedRowIds =\n !rowPinning.bottom?.length && !rowPinning.top?.length\n ? []\n : getRowModel()\n .rows.filter((row) => row.getIsPinned())\n .map((r) => r.id)\n\n const currentRows = rows.value\n const { virtualRows } = rowVirtualizer ?? {}\n\n const commonRowProps = {\n columnVirtualizer,\n numRows: currentRows.length,\n table,\n tableProps,\n }\n\n const renderRow = (\n row: MVT_Row<MVT_RowData>,\n renderedRowIndex: number,\n extra?: Record<string, any>,\n ) =>\n h(MVT_TableBodyRow, {\n ...commonRowProps,\n key: `${row.id}-${row.index}`,\n renderedRowIndex,\n row,\n ...extra,\n } as any)\n\n return h(Fragment, null, [\n !rowPinningDisplayMode?.includes('sticky') &&\n getIsSomeRowsPinned('top') &&\n h(\n TableTbody,\n {\n ...tableBodyProps,\n style: {\n '--mvt-table-head-height': `${tableHeadHeight}`,\n ...(tableBodyProps as any)?.style,\n },\n class: clsx(\n classes.pinned,\n layoutMode?.startsWith('grid') && classes['root-grid'],\n (tableBodyProps as any)?.class,\n ),\n } as any,\n () => getTopRows().map((row, renderedRowIndex) => renderRow(row, renderedRowIndex)),\n ),\n h(\n TableTbody,\n {\n ...tableBodyProps,\n style: {\n '--mvt-table-body-height': rowVirtualizer\n ? `${rowVirtualizer.getTotalSize()}px`\n : undefined,\n ...(tableBodyProps as any)?.style,\n },\n class: clsx(\n classes.root,\n layoutMode?.startsWith('grid') && classes['root-grid'],\n !currentRows.length && classes['root-no-rows'],\n rowVirtualizer && classes['root-virtualized'],\n (tableBodyProps as any)?.class,\n ),\n } as any,\n () =>\n (tableBodyProps as any)?.children ??\n (!currentRows.length\n ? h(MVT_TableBodyEmptyRow, commonRowProps as any)\n : (virtualRows ?? currentRows).map((rowOrVirtualRow, renderedRowIndex) => {\n let index = renderedRowIndex\n if (rowVirtualizer) {\n if (renderDetailPanel) {\n if ((rowOrVirtualRow as MVT_VirtualItem).index % 2 === 1) return null\n index = (rowOrVirtualRow as MVT_VirtualItem).index / 2\n } else {\n index = (rowOrVirtualRow as MVT_VirtualItem).index\n }\n }\n const row = rowVirtualizer\n ? currentRows[index]\n : (rowOrVirtualRow as MVT_Row<MVT_RowData>)\n\n if (!row) return null\n return renderRow(row, index, {\n pinnedRowIds,\n rowVirtualizer,\n virtualRow: rowVirtualizer ? (rowOrVirtualRow as MVT_VirtualItem) : undefined,\n })\n })),\n ),\n !rowPinningDisplayMode?.includes('sticky') &&\n getIsSomeRowsPinned('bottom') &&\n h(\n TableTbody,\n {\n ...tableBodyProps,\n style: {\n '--mvt-table-footer-height': `${tableFooterHeight}`,\n ...(tableBodyProps as any)?.style,\n },\n class: clsx(\n classes.pinned,\n layoutMode?.startsWith('grid') && classes['root-grid'],\n (tableBodyProps as any)?.class,\n ),\n } as any,\n () => getBottomRows().map((row, renderedRowIndex) => renderRow(row, renderedRowIndex)),\n ),\n ])\n }\n },\n})\n\nexport const Memo_MVT_TableBody = MVT_TableBody\n",".root {\n font-size: 0.8rem;\n font-weight: bold;\n padding: 1rem;\n text-align: var(--mvt-cell-align, left);\n vertical-align: top;\n z-index: 1;\n\n &.grid {\n display: flex;\n justify-content: var(--mvt-cell-align, flex-start);\n }\n\n &.group {\n text-align: center;\n justify-content: center;\n }\n\n background-color: var(--mvt-base-background-color);\n\n &[data-column-pinned] {\n position: sticky;\n }\n\n &[data-column-pinned='left'] {\n left: calc(var(--mvt-table-cell-left, 0) * 1px);\n &[data-last-left-pinned] {\n box-shadow: -6px 0 6px -6px\n alpha(light-dark(var(--mantine-color-gray-outline), var(--mantine-color-dark-outline)), 0.5)\n inset;\n }\n }\n\n &[data-column-pinned='right'] {\n right: calc(var(--mvt-table-cell-right, 0) * 1px);\n &[data-first-right-pinned] {\n box-shadow: 6px 0 6px -6px\n alpha(light-dark(var(--mantine-color-gray-outline), var(--mantine-color-dark-outline)), 0.5)\n inset;\n }\n }\n}\n","import { type CSSProperties, defineComponent, h, type PropType } from 'vue'\n\nimport { TableTh, useDirection, useMantineTheme } from '@mantine-vue/core'\n\nimport clsx from 'clsx'\n\nimport { type MVT_Header, type MVT_RowData, type MVT_TableInstance } from '../../types'\nimport { parseCSSVarId } from '../../utils/style.utils'\nimport { parseFromValuesOrFunc } from '../../utils/utils'\nimport classes from './MVT_TableFooterCell.module.css'\n\nexport const MVT_TableFooterCell = defineComponent({\n name: 'MVTTableFooterCell',\n inheritAttrs: false,\n props: {\n footer: {\n type: Object as PropType<MVT_Header<MVT_RowData>>,\n required: true,\n },\n renderedColumnIndex: { type: Number, default: undefined },\n table: {\n type: Object as PropType<MVT_TableInstance<MVT_RowData>>,\n required: true,\n },\n },\n setup(props, { attrs }) {\n const direction = useDirection()\n const theme = useMantineTheme()\n return () => {\n const { footer, renderedColumnIndex, table } = props\n const {\n options: { enableColumnPinning, layoutMode, mantineTableFooterCellProps },\n } = table\n const { column } = footer\n const { columnDef } = column\n const { columnDefType } = columnDef\n\n const isColumnPinned =\n enableColumnPinning && columnDef.columnDefType !== 'group' && column.getIsPinned()\n\n const args = { column, table }\n const tableCellProps = {\n ...parseFromValuesOrFunc(mantineTableFooterCellProps, args),\n ...parseFromValuesOrFunc(columnDef.mantineTableFooterCellProps, args),\n ...attrs,\n }\n\n const widthStyles: CSSProperties = {\n minWidth: `max(calc(var(--header-${parseCSSVarId(\n footer?.id,\n )}-size) * 1px), ${columnDef.minSize ?? 30}px)`,\n width: `calc(var(--header-${parseCSSVarId(footer.id)}-size) * 1px)`,\n }\n if (layoutMode === 'grid') {\n widthStyles.flex = `${\n [0, false].includes(columnDef.grow!)\n ? 0\n : `var(--header-${parseCSSVarId(footer.id)}-size)`\n } 0 auto`\n } else if (layoutMode === 'grid-no-grow') {\n widthStyles.flex = `${+(columnDef.grow || 0)} 0 auto`\n }\n\n const style = {\n ...widthStyles,\n '--mvt-cell-align':\n (tableCellProps as any).align ??\n (columnDefType === 'group' ? 'center' : direction.dir.value === 'rtl' ? 'right' : 'left'),\n '--mvt-table-cell-left':\n isColumnPinned === 'left' ? `${column.getStart(isColumnPinned)}` : undefined,\n '--mvt-table-cell-right':\n isColumnPinned === 'right' ? `${column.getAfter(isColumnPinned)}` : undefined,\n ...parseFromValuesOrFunc((tableCellProps as any).style, theme),\n }\n\n const { children: cellChildren, ...tableCellRest } = tableCellProps as any\n\n return h(\n TableTh,\n {\n colspan: footer.colSpan,\n 'data-column-pinned': isColumnPinned || undefined,\n 'data-first-right-pinned':\n (isColumnPinned === 'right' && column.getIsFirstColumn(isColumnPinned)) || undefined,\n 'data-index': renderedColumnIndex,\n 'data-last-left-pinned':\n (isColumnPinned === 'left' && column.getIsLastColumn(isColumnPinned)) || undefined,\n ...tableCellRest,\n class: clsx(\n classes.root,\n layoutMode?.startsWith('grid') && classes.grid,\n columnDefType === 'group' && classes.group,\n (tableCellProps as any)?.class,\n ),\n style,\n } as any,\n () =>\n cellChildren ??\n (footer.isPlaceholder\n ? null\n : (parseFromValuesOrFunc(columnDef.Footer, {\n column,\n footer,\n table,\n }) ??\n columnDef.footer ??\n null)),\n )\n }\n },\n})\n",".root {\n width: 100%;\n display: table-row;\n &.layout-mode-grid {\n display: flex;\n }\n background-color: light-dark(var(--light-bg-color), var(--dark-bg-color));\n border-top: 1px solid light-dark(var(--mantine-color-gray-3), var(--mantine-color-dark-4));\n}\n","import { defineComponent, h, type PropType } from 'vue'\n\nimport { Box, TableTr } from '@mantine-vue/core'\n\nimport clsx from 'clsx'\n\nimport {\n type MVT_ColumnVirtualizer,\n type MVT_Header,\n type MVT_HeaderGroup,\n type MVT_RowData,\n type MVT_TableInstance,\n type MVT_VirtualItem,\n} from '../../types'\nimport { parseFromValuesOrFunc } from '../../utils/utils'\nimport { MVT_TableFooterCell } from './MVT_TableFooterCell'\nimport classes from './MVT_TableFooterRow.module.css'\n\nexport const MVT_TableFooterRow = defineComponent({\n name: 'MVTTableFooterRow',\n inheritAttrs: false,\n props: {\n columnVirtualizer: {\n type: Object as PropType<MVT_ColumnVirtualizer>,\n default: undefined,\n },\n footerGroup: {\n type: Object as PropType<MVT_HeaderGroup<MVT_RowData>>,\n required: true,\n },\n table: {\n type: Object as PropType<MVT_TableInstance<MVT_RowData>>,\n required: true,\n },\n },\n setup(props, { attrs }) {\n return () => {\n const { columnVirtualizer, footerGroup, table } = props\n const {\n options: { layoutMode, mantineTableFooterRowProps },\n } = table\n\n const { virtualColumns, virtualPaddingLeft, virtualPaddingRight } = columnVirtualizer ?? {}\n\n // if no content in row, skip row\n if (\n !footerGroup.headers?.some(\n (header) =>\n (typeof header.column.columnDef.footer === 'string' &&\n !!header.column.columnDef.footer) ||\n header.column.columnDef.Footer,\n )\n ) {\n return null\n }\n\n const tableRowProps = {\n ...parseFromValuesOrFunc(mantineTableFooterRowProps, {\n footerGroup,\n table,\n }),\n ...attrs,\n }\n\n return h(\n TableTr,\n {\n class: clsx(classes.root, layoutMode?.startsWith('grid') && classes['layout-mode-grid']),\n ...tableRowProps,\n } as any,\n () => [\n virtualPaddingLeft\n ? h(Box, {\n component: 'th',\n display: 'flex',\n w: virtualPaddingLeft,\n } as any)\n : null,\n (virtualColumns ?? footerGroup.headers).map(\n (footerOrVirtualFooter, renderedColumnIndex) => {\n let footer = footerOrVirtualFooter as MVT_Header<MVT_RowData>\n let index = renderedColumnIndex\n if (columnVirtualizer) {\n index = (footerOrVirtualFooter as MVT_VirtualItem).index\n footer = footerGroup.headers[index]\n }\n return h(MVT_TableFooterCell, {\n footer,\n key: footer.id,\n renderedColumnIndex: index,\n table,\n } as any)\n },\n ),\n virtualPaddingRight\n ? h(Box, {\n component: 'th',\n display: 'flex',\n w: virtualPaddingRight,\n } as any)\n : null,\n ],\n )\n }\n },\n})\n",".root {\n background-color: var(--mvt-base-background-color);\n display: table-row-group;\n}\n\n.grid {\n display: grid;\n}\n\n.sticky {\n bottom: 0;\n opacity: 0.97;\n position: sticky;\n z-index: 1;\n outline: 1px solid light-dark(var(--mantine-color-gray-3), var(--mantine-color-gray-7));\n}\n","import { defineComponent, h, type PropType } from 'vue'\n\nimport { TableTfoot } from '@mantine-vue/core'\n\nimport clsx from 'clsx'\n\nimport { type MVT_ColumnVirtualizer, type MVT_RowData, type MVT_TableInstance } from '../../types'\nimport { parseFromValuesOrFunc } from '../../utils/utils'\nimport { MVT_TableFooterRow } from './MVT_TableFooterRow'\nimport classes from './MVT_TableFooter.module.css'\n\nexport const MVT_TableFooter = defineComponent({\n name: 'MVTTableFooter',\n inheritAttrs: false,\n props: {\n columnVirtualizer: {\n type: Object as PropType<MVT_ColumnVirtualizer>,\n default: undefined,\n },\n table: {\n type: Object as PropType<MVT_TableInstance<MVT_RowData>>,\n required: true,\n },\n },\n setup(props, { attrs }) {\n return () => {\n const { columnVirtualizer, table } = props\n const {\n getFooterGroups,\n getState,\n options: { enableStickyFooter, layoutMode, mantineTableFooterProps },\n refs: { tableFooterRef },\n } = table\n const { isFullScreen } = getState()\n\n const tableFooterProps = {\n ...parseFromValuesOrFunc(mantineTableFooterProps, { table }),\n ...attrs,\n }\n\n const stickFooter = (isFullScreen || enableStickyFooter) && enableStickyFooter !== false\n\n return h(\n TableTfoot,\n {\n ...tableFooterProps,\n class: clsx(\n classes.root,\n (tableFooterProps as any)?.class,\n stickFooter && classes.sticky,\n layoutMode?.startsWith('grid') && classes.grid,\n ),\n ref: (el: any) => {\n const node = (el?.$el ?? el) as HTMLTableSectionElement\n tableFooterRef.value = node\n if ((tableFooterProps as any)?.ref) {\n ;(tableFooterProps as any).ref.value = node\n }\n },\n } as any,\n () =>\n getFooterGroups().map((footerGroup) =>\n h(MVT_TableFooterRow, {\n columnVirtualizer,\n footerGroup,\n key: footerGroup.id,\n table,\n } as any),\n ),\n )\n }\n },\n})\n",".left {\n transform: rotate(90deg);\n}\n\n.right {\n transform: rotate(-90deg);\n}\n","import { ActionIcon, Menu, Tooltip } from '@mantine-vue/core'\nimport { defineComponent, h, type PropType, type VNodeChild } from 'vue'\nimport type { MVT_Header, MVT_RowData, MVT_TableInstance } from '../../types'\nimport { parseFromValuesOrFunc } from '../../utils/utils'\nimport { useMVT_Slots } from '../MVT_TableSlots'\nimport classes from './MVT_ColumnActionMenu.module.css'\n\nexport const MVT_ColumnActionMenu = defineComponent({\n name: 'MVTColumnActionMenu',\n inheritAttrs: false,\n props: {\n header: { type: Object as PropType<MVT_Header<MVT_RowData>>, required: true },\n onChange: { type: Function as PropType<(opened: boolean) => void>, default: undefined },\n opened: { type: Boolean, default: undefined },\n table: { type: Object as PropType<MVT_TableInstance<MVT_RowData>>, required: true },\n },\n setup(props, { attrs, slots }) {\n const mvtSlots = useMVT_Slots()\n return () => {\n const { header, table } = props\n const { column } = header\n const def = column.columnDef\n const o = table.options\n const state = table.getState()\n const icons = o.icons\n const l = o.localization\n const actionProps = {\n ...parseFromValuesOrFunc(o.mantineColumnActionsButtonProps, { column, table }),\n ...parseFromValuesOrFunc(def.mantineColumnActionsButtonProps, { column, table }),\n } as Record<string, any>\n const item = (\n label: string,\n icon: any,\n onClick: () => void,\n disabled = false,\n iconClass?: string,\n ) =>\n h(Menu.Item, { disabled, leftSection: h(icon, { class: iconClass }), onClick }, () => label)\n const internal: VNodeChild[] = []\n if (o.enableSorting && column.getCanSort()) {\n if (o.enableSortingRemoval !== false)\n internal.push(\n item(\n l.clearSort,\n icons.IconClearAll,\n () => column.clearSorting(),\n !column.getIsSorted(),\n ),\n )\n internal.push(\n item(\n l.sortByColumnAsc.replace('{column}', String(def.header)),\n icons.IconSortAscending,\n () => column.toggleSorting(false),\n column.getIsSorted() === 'asc',\n ),\n )\n internal.push(\n item(\n l.sortByColumnDesc.replace('{column}', String(def.header)),\n icons.IconSortDescending,\n () => column.toggleSorting(true),\n column.getIsSorted() === 'desc',\n ),\n )\n if (o.enableColumnFilters || o.enableGrouping || o.enableHiding)\n internal.push(h(Menu.Divider))\n }\n if (\n o.enableColumnFilters &&\n o.columnFilterDisplayMode !== 'popover' &&\n column.getCanFilter()\n ) {\n internal.push(\n item(\n l.clearFilter,\n icons.IconFilterOff,\n () => column.setFilterValue(''),\n !column.getFilterValue(),\n ),\n )\n internal.push(\n item(l.filterByColumn.replace('{column}', String(def.header)), icons.IconFilter, () => {\n table.setShowColumnFilters(true)\n setTimeout(() => table.refs.filterInputRefs.value[`${column.id}-0`]?.focus(), 100)\n }),\n )\n if (o.enableGrouping || o.enableHiding) internal.push(h(Menu.Divider))\n }\n if (o.enableGrouping && column.getCanGroup()) {\n internal.push(\n item(\n l[column.getIsGrouped() ? 'ungroupByColumn' : 'groupByColumn'].replace(\n '{column}',\n String(def.header),\n ),\n icons.IconBoxMultiple,\n () => {\n column.toggleGrouping()\n table.setColumnOrder((old: string[]) => ['mvt-row-expand', ...old])\n },\n ),\n )\n if (o.enableColumnPinning) internal.push(h(Menu.Divider))\n }\n if (o.enableColumnPinning && column.getCanPin()) {\n internal.push(\n item(\n l.pinToLeft,\n icons.IconPinned,\n () => column.pin('left'),\n column.getIsPinned() === 'left',\n classes.left,\n ),\n )\n internal.push(\n item(\n l.pinToRight,\n icons.IconPinned,\n () => column.pin('right'),\n column.getIsPinned() === 'right',\n classes.right,\n ),\n )\n internal.push(\n item(l.unpin, icons.IconPinnedOff, () => column.pin(false), !column.getIsPinned()),\n )\n if (o.enableHiding) internal.push(h(Menu.Divider))\n }\n if (o.enableColumnResizing && column.getCanResize())\n internal.push(\n item(\n l.resetColumnSize,\n icons.IconArrowAutofitContent,\n () => {\n table.setColumnSizingInfo((old: typeof state.columnSizingInfo) => ({\n ...old,\n isResizingColumn: false,\n }))\n column.resetSize()\n },\n !state.columnSizing[column.id],\n ),\n )\n if (o.enableHiding) {\n internal.push(\n item(\n l.hideColumn.replace('{column}', String(def.header)),\n icons.IconEyeOff,\n () => column.toggleVisibility(false),\n !column.getCanHide(),\n ),\n )\n internal.push(\n item(\n l.showAllColumns.replace('{column}', String(def.header)),\n icons.IconColumns,\n () => table.toggleAllColumnsVisible(true),\n !Object.values(state.columnVisibility).some((visible) => !visible),\n ),\n )\n }\n\n const menuArg = { column, internalColumnMenuItems: internal, table }\n const custom =\n slots.default?.(menuArg) ??\n mvtSlots.columnActionsMenuItems?.(menuArg) ??\n def.renderColumnActionsMenuItems?.(menuArg) ??\n o.renderColumnActionsMenuItems?.(menuArg)\n return h(\n Menu,\n {\n closeOnItemClick: true,\n position: 'bottom-start',\n withinPortal: true,\n ...attrs,\n opened: props.opened,\n onChange: props.onChange,\n },\n () => [\n h(\n Tooltip,\n { label: actionProps.title ?? l.columnActions, openDelay: 1000, withinPortal: true },\n () =>\n h(Menu.Target, null, () =>\n h(\n ActionIcon,\n {\n 'aria-label': l.columnActions,\n color: 'gray',\n size: 'sm',\n variant: 'subtle',\n ...actionProps,\n },\n () => h(icons.IconDotsVertical, { size: '100%' }),\n ),\n ),\n ),\n h(Menu.Dropdown, null, () => custom ?? internal),\n ],\n )\n }\n },\n})\n",".root {\n font-weight: normal;\n margin-top: 8px;\n}\n","import clsx from 'clsx'\nimport { Checkbox, Tooltip } from '@mantine-vue/core'\nimport { defineComponent, h, type PropType } from 'vue'\nimport type { MVT_Column, MVT_RowData, MVT_TableInstance } from '../../types'\nimport { parseFromValuesOrFunc } from '../../utils/utils'\nimport classes from './MVT_FilterCheckBox.module.css'\n\nexport const MVT_FilterCheckbox = defineComponent({\n name: 'MVTFilterCheckbox',\n inheritAttrs: false,\n props: {\n column: { type: Object as PropType<MVT_Column<MVT_RowData>>, required: true },\n table: { type: Object as PropType<MVT_TableInstance<MVT_RowData>>, required: true },\n },\n setup(props, { attrs }) {\n return () => {\n const { column, table } = props\n const arg = { column, table }\n const checkboxProps = {\n ...parseFromValuesOrFunc(table.options.mantineFilterCheckboxProps, arg),\n ...parseFromValuesOrFunc(column.columnDef.mantineFilterCheckboxProps, arg),\n ...attrs,\n } as Record<string, any>\n const label = table.options.localization.filterByColumn.replace(\n '{column}',\n String(column.columnDef.header),\n )\n const value = column.getFilterValue()\n return h(\n Tooltip,\n { label: checkboxProps.title ?? label, openDelay: 1000, withinPortal: true },\n () =>\n h(Checkbox, {\n checked: value === 'true',\n class: clsx('mvt-filter-checkbox', classes.root, checkboxProps.class),\n indeterminate: value === undefined,\n label: checkboxProps.title ?? label,\n size: table.getState().density === 'xs' ? 'sm' : 'md',\n ...checkboxProps,\n title: undefined,\n onChange: (checked: boolean) => {\n column.setFilterValue(\n value === undefined ? 'true' : value === 'true' ? 'false' : undefined,\n )\n checkboxProps.onChange?.(checked)\n },\n onClick: (e: MouseEvent) => {\n e.stopPropagation()\n checkboxProps.onClick?.(e)\n },\n } as any),\n )\n }\n },\n})\n",".root {\n font-weight: normal;\n border-bottom: 2px solid light-dark(var(--mantine-color-gray-3), var(--mantine-color-gray-7));\n min-width: auto;\n &.date-filter {\n min-width: rem(125px);\n }\n &.range-filter {\n min-width: rem(80px);\n }\n &.not-filter-chip {\n min-width: rem(100px);\n }\n width: 100%;\n & :global(.mantine-TextInput-input) {\n overflow: hidden;\n text-overflow: ellipsis;\n }\n & :global(.mantine-DateInput-input) {\n height: 2.1rem;\n }\n}\n\n.filter-chip-badge {\n margin: 5px;\n}\n","import clsx from 'clsx'\nimport {\n ActionIcon,\n Autocomplete,\n Badge,\n Box,\n MultiSelect,\n Select,\n TextInput,\n} from '@mantine-vue/core'\nimport { DateInput } from '@mantine-vue/dates'\nimport { useDebouncedValue } from '@mantine-vue/hooks'\nimport { defineComponent, h, ref, watch, type PropType } from 'vue'\nimport { localizedFilterOption } from '../../fns/filterFns'\nimport type { MVT_Header, MVT_RowData, MVT_TableInstance } from '../../types'\nimport { parseFromValuesOrFunc } from '../../utils/utils'\nimport classes from './MVT_FilterTextInput.module.css'\n\nexport const MVT_FilterTextInput = defineComponent({\n name: 'MVTFilterTextInput',\n inheritAttrs: false,\n props: {\n header: { type: Object as PropType<MVT_Header<MVT_RowData>>, required: true },\n rangeFilterIndex: { type: Number, default: undefined },\n table: { type: Object as PropType<MVT_TableInstance<MVT_RowData>>, required: true },\n },\n setup(props, { attrs, slots }) {\n const { column } = props.header\n const { filterInputRefs } = props.table.refs\n const def = column.columnDef\n const isRange =\n def.filterVariant === 'range' ||\n def.filterVariant === 'date-range' ||\n props.rangeFilterIndex !== undefined\n const isMulti = def.filterVariant === 'multi-select'\n const read = () =>\n isMulti\n ? ((column.getFilterValue() as unknown[]) ?? [])\n : isRange\n ? ((column.getFilterValue() as [unknown, unknown])?.[props.rangeFilterIndex!] ?? '')\n : (column.getFilterValue() ?? '')\n const filterValue = ref<any>(read())\n const [debounced] = useDebouncedValue(\n filterValue,\n props.table.options.manualFiltering ? 400 : 200,\n )\n watch(debounced, (value) => {\n if (isRange)\n column.setFilterValue((old: [unknown, unknown]) => {\n const next = Array.isArray(old) ? [...old] : ['', '']\n next[props.rangeFilterIndex!] = value\n return next\n })\n else column.setFilterValue(value ?? undefined)\n })\n watch(\n () => column.getFilterValue(),\n (value) => {\n filterValue.value =\n value === undefined\n ? isMulti\n ? []\n : ''\n : isRange\n ? ((value as any[])?.[props.rangeFilterIndex!] ?? '')\n : value\n },\n )\n const assignRef = (el: any) => {\n const node = (el?.$el?.querySelector?.('input') ?? el?.$el ?? el) as HTMLInputElement\n if (node) filterInputRefs.value[`${column.id}-${props.rangeFilterIndex ?? 0}`] = node\n }\n return () => {\n const { table } = props\n const o = table.options\n const arg = { column, rangeFilterIndex: props.rangeFilterIndex, table }\n const textProps = {\n ...parseFromValuesOrFunc(o.mantineFilterTextInputProps, arg),\n ...parseFromValuesOrFunc(def.mantineFilterTextInputProps, arg),\n ...attrs,\n } as Record<string, any>\n const selectProps = {\n ...parseFromValuesOrFunc(o.mantineFilterSelectProps, arg),\n ...parseFromValuesOrFunc(def.mantineFilterSelectProps, arg),\n } as Record<string, any>\n const multiProps = {\n clearable: true,\n ...parseFromValuesOrFunc(o.mantineFilterMultiSelectProps, arg),\n ...parseFromValuesOrFunc(def.mantineFilterMultiSelectProps, arg),\n } as Record<string, any>\n const dateProps = {\n ...parseFromValuesOrFunc(o.mantineFilterDateInputProps, arg),\n ...parseFromValuesOrFunc(def.mantineFilterDateInputProps, arg),\n } as Record<string, any>\n const autoProps = {\n ...parseFromValuesOrFunc(o.mantineFilterAutocompleteProps, arg),\n ...parseFromValuesOrFunc(def.mantineFilterAutocompleteProps, arg),\n } as Record<string, any>\n const isSelect = def.filterVariant === 'select'\n const isDate = def.filterVariant === 'date' || def.filterVariant === 'date-range'\n const isAuto = def.filterVariant === 'autocomplete'\n const modeLabel = ['empty', 'notEmpty'].includes(def._filterFn)\n ? localizedFilterOption(o.localization, def._filterFn)\n : ''\n const placeholder = !isRange\n ? (textProps.placeholder ??\n o.localization.filterByColumn.replace('{column}', String(def.header)))\n : props.rangeFilterIndex === 0\n ? o.localization.min\n : o.localization.max\n const provided = autoProps.data ?? selectProps.data ?? multiProps.data\n const faceted = column.getFacetedUniqueValues()\n const options = (\n provided ??\n ((isAuto || isSelect || isMulti) && faceted\n ? Array.from(faceted.keys())\n .filter((v) => v != null)\n .sort((a, b) => String(a).localeCompare(String(b)))\n : [])\n ).filter((v: unknown) => v != null)\n const clear = () => {\n if (isMulti) {\n filterValue.value = []\n column.setFilterValue([])\n } else if (isRange) {\n filterValue.value = ''\n column.setFilterValue((old: any[]) => {\n const next = Array.isArray(old) ? [...old] : ['', '']\n next[props.rangeFilterIndex!] = undefined\n return next\n })\n } else if (isSelect) {\n filterValue.value = null\n column.setFilterValue(null)\n } else {\n filterValue.value = ''\n column.setFilterValue(undefined)\n }\n }\n const clearButton = filterValue.value\n ? h(\n ActionIcon,\n {\n 'aria-label': o.localization.clearFilter,\n color: 'var(--mantine-color-gray-7)',\n size: 'sm',\n title: o.localization.clearFilter,\n variant: 'transparent',\n onClick: clear,\n },\n () => h(o.icons.IconX),\n )\n : null\n const className = clsx(\n 'mvt-filter-text-input',\n classes.root,\n isDate\n ? classes['date-filter']\n : isRange\n ? classes['range-filter']\n : !modeLabel && classes['not-filter-chip'],\n )\n const common: Record<string, any> = {\n 'aria-label': placeholder,\n disabled: !!modeLabel,\n placeholder,\n title: placeholder,\n value: isMulti && !Array.isArray(filterValue.value) ? [] : filterValue.value,\n variant: 'unstyled',\n onClick: (e: MouseEvent) => e.stopPropagation(),\n }\n const custom =\n slots.default?.({\n column,\n header: props.header,\n rangeFilterIndex: props.rangeFilterIndex,\n table,\n }) ??\n def.Filter?.({\n column,\n header: props.header,\n rangeFilterIndex: props.rangeFilterIndex,\n table,\n })\n if (custom) return custom\n if (modeLabel)\n return h(Box, null, () =>\n h(\n Badge,\n {\n class: classes['filter-chip-badge'],\n rightSection: clearButton,\n size: 'lg',\n onClick: () => {\n clear()\n table.setColumnFilterFns((old) => ({\n ...old,\n [props.header.id]:\n (def.columnFilterModeOptions ?? o.columnFilterModeOptions)?.[0] ?? 'fuzzy',\n }))\n },\n },\n () => modeLabel,\n ),\n )\n if (isMulti)\n return h(MultiSelect, {\n ...common,\n searchable: true,\n ...multiProps,\n class: clsx(className, multiProps.class, multiProps.className),\n data: options,\n rightSection:\n filterValue.value?.toString()?.length && multiProps.clearable ? clearButton : undefined,\n onChange: (value: unknown[]) => {\n filterValue.value = value\n multiProps.onChange?.(value)\n },\n ref: assignRef,\n } as any)\n if (isSelect)\n return h(Select, {\n ...common,\n clearable: true,\n searchable: true,\n ...selectProps,\n class: clsx(className, selectProps.class, selectProps.className),\n clearButtonProps: { size: 'md' },\n data: options,\n onChange: (value: unknown, option: unknown) => {\n filterValue.value = value\n selectProps.onChange?.(value, option)\n },\n ref: assignRef,\n } as any)\n if (isDate)\n return h(DateInput, {\n ...common,\n allowDeselect: true,\n clearable: true,\n popoverProps: { withinPortal: o.columnFilterDisplayMode !== 'popover' },\n ...dateProps,\n class: clsx(className, dateProps.class, dateProps.className),\n onChange: (value: unknown) => {\n filterValue.value = value ?? ''\n dateProps.onChange?.(value)\n },\n ref: assignRef,\n } as any)\n if (isAuto)\n return h(Autocomplete, {\n ...common,\n ...autoProps,\n class: clsx(className, autoProps.class, autoProps.className),\n data: options,\n rightSection: filterValue.value?.toString()?.length ? clearButton : undefined,\n onChange: (value: string) => {\n filterValue.value = value\n autoProps.onChange?.(value)\n },\n ref: assignRef,\n } as any)\n return h(TextInput, {\n ...common,\n ...textProps,\n class: clsx(className, textProps.class, textProps.className),\n mt: 0,\n rightSection: filterValue.value?.toString()?.length ? clearButton : undefined,\n onInput: (event: Event | string) => {\n const value = typeof event === 'string' ? event : (event.target as HTMLInputElement).value\n filterValue.value = value\n textProps.onChange?.(event)\n },\n ref: assignRef,\n } as any)\n }\n },\n})\n",".root {\n display: grid;\n grid-template-columns: 6fr 6fr;\n gap: 16px;\n}\n","import clsx from 'clsx'\nimport { Box } from '@mantine-vue/core'\nimport { defineComponent, h, type PropType } from 'vue'\nimport type { MVT_Header, MVT_RowData, MVT_TableInstance } from '../../types'\nimport { MVT_FilterTextInput } from './MVT_FilterTextInput'\nimport classes from './MVT_FilterRangeFields.module.css'\n\nexport const MVT_FilterRangeFields = defineComponent({\n name: 'MVTFilterRangeFields',\n inheritAttrs: false,\n props: {\n header: { type: Object as PropType<MVT_Header<MVT_RowData>>, required: true },\n table: { type: Object as PropType<MVT_TableInstance<MVT_RowData>>, required: true },\n },\n setup(props, { attrs }) {\n return () =>\n h(\n Box,\n { ...attrs, class: clsx('mvt-filter-range-fields', classes.root, attrs.class) },\n () => [\n h(MVT_FilterTextInput, { header: props.header, rangeFilterIndex: 0, table: props.table }),\n h(MVT_FilterTextInput, { header: props.header, rangeFilterIndex: 1, table: props.table }),\n ],\n )\n },\n})\n",".root {\n margin: auto;\n margin-top: 16px;\n margin-bottom: 6px;\n width: calc(100% - 8px);\n}\n","import clsx from 'clsx'\nimport { RangeSlider } from '@mantine-vue/core'\nimport { defineComponent, h, ref, watch, type PropType } from 'vue'\nimport type { MVT_Header, MVT_RowData, MVT_TableInstance } from '../../types'\nimport { parseFromValuesOrFunc } from '../../utils/utils'\nimport classes from './MVT_FilterRangeSlider.module.css'\n\nexport const MVT_FilterRangeSlider = defineComponent({\n name: 'MVTFilterRangeSlider',\n inheritAttrs: false,\n props: {\n header: { type: Object as PropType<MVT_Header<MVT_RowData>>, required: true },\n table: { type: Object as PropType<MVT_TableInstance<MVT_RowData>>, required: true },\n },\n setup(props, { attrs }) {\n const initial = () => {\n const p = {\n ...parseFromValuesOrFunc(props.table.options.mantineFilterRangeSliderProps, {\n column: props.header.column,\n table: props.table,\n }),\n ...parseFromValuesOrFunc(props.header.column.columnDef.mantineFilterRangeSliderProps, {\n column: props.header.column,\n table: props.table,\n }),\n ...attrs,\n } as Record<string, any>\n let [min, max] =\n p.min !== undefined && p.max !== undefined\n ? [p.min, p.max]\n : (props.header.column.getFacetedMinMaxValues() ?? [0, 1])\n if (Array.isArray(min)) min = min[0]\n if (Array.isArray(max)) max = max[0]\n return [min ?? 0, max ?? 1] as [number, number]\n }\n const values = ref<[number, number]>(\n (props.header.column.getFilterValue() as [number, number]) ?? initial(),\n )\n watch(\n () => props.header.column.getFilterValue(),\n (value) => {\n values.value = Array.isArray(value) ? (value as [number, number]) : initial()\n },\n )\n return () => {\n const [min, max] = initial()\n const { column } = props.header\n const rangeProps = {\n ...parseFromValuesOrFunc(props.table.options.mantineFilterRangeSliderProps, {\n column,\n table: props.table,\n }),\n ...parseFromValuesOrFunc(column.columnDef.mantineFilterRangeSliderProps, {\n column,\n table: props.table,\n }),\n ...attrs,\n } as Record<string, any>\n return h(RangeSlider, {\n class: clsx('mvt-filter-range-slider', classes.root, rangeProps.class),\n min,\n max,\n value: values.value,\n ...rangeProps,\n onChange: (value: [number, number]) => {\n values.value = value\n rangeProps.onChange?.(value)\n },\n onChangeEnd: (value: [number, number]) => {\n column.setFilterValue(value[0] <= min && value[1] >= max ? undefined : value)\n rangeProps.onChangeEnd?.(value)\n },\n } as any)\n }\n },\n})\n",".filter-mode-label {\n white-space: nowrap;\n margin-top: 4px;\n font-size: 10px;\n}\n","import { ActionIcon, Collapse, Flex, Menu, Text, Tooltip } from '@mantine-vue/core'\nimport { defineComponent, h, type PropType } from 'vue'\nimport { localizedFilterOption } from '../../fns/filterFns'\nimport type { MVT_Header, MVT_RowData, MVT_TableInstance } from '../../types'\nimport { MVT_FilterCheckbox } from '../inputs/MVT_FilterCheckbox'\nimport { MVT_FilterRangeFields } from '../inputs/MVT_FilterRangeFields'\nimport { MVT_FilterRangeSlider } from '../inputs/MVT_FilterRangeSlider'\nimport { MVT_FilterTextInput } from '../inputs/MVT_FilterTextInput'\nimport { MVT_FilterOptionMenu } from '../menus/MVT_FilterOptionMenu'\nimport classes from './MVT_TableHeadCellFilterContainer.module.css'\n\nexport const MVT_TableHeadCellFilterContainer = defineComponent({\n name: 'MVTTableHeadCellFilterContainer',\n inheritAttrs: false,\n props: {\n header: { type: Object as PropType<MVT_Header<MVT_RowData>>, required: true },\n table: { type: Object as PropType<MVT_TableInstance<MVT_RowData>>, required: true },\n },\n setup(props, { attrs, slots }) {\n return () => {\n const { header, table } = props\n const { column } = header\n const def = column.columnDef\n const o = table.options\n const allowed = def.columnFilterModeOptions ?? o.columnFilterModeOptions\n const showMode =\n o.enableColumnFilterModes &&\n def.enableColumnFilterModes !== false &&\n (allowed === undefined || !!allowed?.length)\n const input =\n slots.default?.({ column, header, table }) ??\n (def.filterVariant === 'checkbox'\n ? h(MVT_FilterCheckbox, { column, table })\n : def.filterVariant === 'range-slider'\n ? h(MVT_FilterRangeSlider, { header, table })\n : ['date-range', 'range'].includes(def.filterVariant ?? '') ||\n ['between', 'betweenInclusive', 'inNumberRange'].includes(def._filterFn)\n ? h(MVT_FilterRangeFields, { header, table })\n : h(MVT_FilterTextInput, { header, table }))\n const modeMenu = showMode\n ? h(Menu, { withinPortal: o.columnFilterDisplayMode !== 'popover' }, () => [\n h(\n Tooltip,\n {\n label: o.localization.changeFilterMode,\n position: 'bottom-start',\n withinPortal: true,\n },\n () =>\n h(Menu.Target, null, () =>\n h(\n ActionIcon,\n {\n 'aria-label': o.localization.changeFilterMode,\n color: 'gray',\n size: 'md',\n variant: 'subtle',\n },\n () => h(o.icons.IconFilterCog),\n ),\n ),\n ),\n h(MVT_FilterOptionMenu, {\n header,\n table,\n onSelect: () =>\n setTimeout(() => table.refs.filterInputRefs.value[`${column.id}-0`]?.focus(), 100),\n }),\n ])\n : null\n return h(\n Collapse,\n {\n expanded: table.getState().showColumnFilters || o.columnFilterDisplayMode === 'popover',\n } as any,\n () =>\n h(Flex, { direction: 'column', ...attrs }, () => [\n h(Flex, { align: 'flex-end' }, () => [input, modeMenu]),\n showMode\n ? h(\n Text,\n { c: 'dimmed', class: classes['filter-mode-label'], component: 'label' },\n () =>\n o.localization.filterMode.replace(\n '{filterType}',\n localizedFilterOption(o.localization, def._filterFn),\n ),\n )\n : null,\n ]),\n )\n }\n },\n})\n",".root {\n transition: all 150ms ease;\n --ai-size: var(--ai-size-sm);\n --ai-bg: transparent;\n --ai-hover: light-dark(var(--mantine-color-gray-1), var(--mantine-color-dark-6));\n --ai-hover-color: var(--mantine-color-bright);\n color: var(--mantine-color-bright);\n &[data-active] {\n color: var(--mantine-primary-color-filled);\n }\n}\n","import clsx from 'clsx'\nimport { ActionIcon, Popover, Tooltip, Transition } from '@mantine-vue/core'\nimport { defineComponent, h, ref, type PropType } from 'vue'\nimport { localizedFilterOption } from '../../fns/filterFns'\nimport type { MVT_Header, MVT_RowData, MVT_TableInstance } from '../../types'\nimport { dataVariable } from '../../utils/style.utils'\nimport { MVT_TableHeadCellFilterContainer } from './MVT_TableHeadCellFilterContainer'\nimport classes from './MVT_TableHeadCellFilterLabel.module.css'\n\nexport const MVT_TableHeadCellFilterLabel = defineComponent({\n name: 'MVTTableHeadCellFilterLabel',\n inheritAttrs: false,\n props: {\n header: { type: Object as PropType<MVT_Header<MVT_RowData>>, required: true },\n table: { type: Object as PropType<MVT_TableInstance<MVT_RowData>>, required: true },\n },\n setup(props, { attrs }) {\n const popoverOpened = ref(false)\n return () => {\n const { header, table } = props\n const { column } = header\n const def = column.columnDef\n const o = table.options\n const value = column.getFilterValue()\n const active = Array.isArray(value) ? value.some(Boolean) : !!value\n const range =\n def.filterVariant === 'range' ||\n def.filterVariant === 'date-range' ||\n ['between', 'betweenInclusive', 'inNumberRange'].includes(def._filterFn)\n const format =\n def.filterTooltipValueFn ?? ((filterValue: unknown) => String(filterValue ?? ''))\n const displayed = Array.isArray(value)\n ? value\n .map((entry) => format(entry))\n .join(`\" ${range ? o.localization.and : o.localization.or} \"`)\n : format(value)\n const tooltip =\n o.columnFilterDisplayMode === 'popover' && !active\n ? o.localization.filterByColumn.replace('{column}', String(def.header))\n : o.localization.filteringByColumn\n .replace('{column}', String(def.header))\n .replace('{filterType}', localizedFilterOption(o.localization, def._filterFn))\n .replace('{filterValue}', `\"${displayed}\"`)\n .replace('\" \"', '')\n const showIcon =\n o.columnFilterDisplayMode === 'popover' ||\n (!!value && !range) ||\n (range && (!!(value as unknown[])?.[0] || !!(value as unknown[])?.[1]))\n const click = (event: MouseEvent) => {\n event.stopPropagation()\n if (o.columnFilterDisplayMode === 'popover') popoverOpened.value = !popoverOpened.value\n else table.setShowColumnFilters(true)\n setTimeout(() => {\n const input = table.refs.filterInputRefs.value[`${column.id}-0`]\n input?.focus()\n input?.select()\n }, 100)\n }\n return h(\n Popover,\n {\n keepMounted: def.filterVariant === 'range-slider',\n opened: popoverOpened.value,\n position: 'top',\n shadow: 'xl',\n width: 360,\n withinPortal: true,\n onChange: (opened: boolean) => {\n popoverOpened.value = opened\n },\n },\n () => [\n h(Transition, { mounted: showIcon, transition: 'scale' } as any, () =>\n h(Popover.Target, null, () =>\n h(\n Tooltip,\n {\n disabled: popoverOpened.value,\n label: tooltip,\n multiline: true,\n w: tooltip.length > 40 ? 300 : undefined,\n withinPortal: true,\n },\n () =>\n h(\n ActionIcon,\n {\n 'aria-label': tooltip,\n class: clsx('mvt-table-head-cell-filter-label-icon', classes.root),\n size: 18,\n ...dataVariable('active', active),\n ...attrs,\n onClick: click,\n } as any,\n () => h(o.icons.IconFilter, { size: '100%' }),\n ),\n ),\n ),\n ),\n o.columnFilterDisplayMode === 'popover'\n ? h(\n Popover.Dropdown,\n {\n onClick: (event: MouseEvent) => event.stopPropagation(),\n onKeydown: (event: KeyboardEvent) => {\n if (event.key === 'Enter') popoverOpened.value = false\n },\n onMousedown: (event: MouseEvent) => event.stopPropagation(),\n },\n () => h(MVT_TableHeadCellFilterContainer, { header, table }),\n )\n : null,\n ],\n )\n }\n },\n})\n","import { defineComponent, h, type PropType, type Ref } from 'vue'\n\nimport { type MVT_Column, type MVT_RowData, type MVT_TableInstance } from '../../types'\nimport { reorderColumn } from '../../utils/column.utils'\nimport { parseFromValuesOrFunc } from '../../utils/utils'\nimport { MVT_GrabHandleButton } from '../buttons/MVT_GrabHandleButton'\n\nexport const MVT_TableHeadCellGrabHandle = defineComponent({\n name: 'MVTTableHeadCellGrabHandle',\n inheritAttrs: false,\n props: {\n column: {\n type: Object as PropType<MVT_Column<MVT_RowData>>,\n required: true,\n },\n table: {\n type: Object as PropType<MVT_TableInstance<MVT_RowData>>,\n required: true,\n },\n tableHeadCellRef: {\n type: Object as PropType<Ref<HTMLTableCellElement | null>>,\n required: true,\n },\n },\n setup(props, { attrs }) {\n return () => {\n const { column, table, tableHeadCellRef } = props\n const {\n getState,\n options: { enableColumnOrdering, mantineColumnDragHandleProps },\n setColumnOrder,\n setDraggingColumn,\n setHoveredColumn,\n } = table\n const { columnDef } = column\n\n const arg = { column, table }\n const actionIconProps = {\n ...parseFromValuesOrFunc(mantineColumnDragHandleProps, arg),\n ...parseFromValuesOrFunc(columnDef.mantineColumnDragHandleProps, arg),\n ...attrs,\n }\n\n const handleDragStart = (event: DragEvent) => {\n ;(actionIconProps as any)?.onDragStart?.(event)\n setDraggingColumn(column)\n event.dataTransfer?.setDragImage(tableHeadCellRef.value as HTMLElement, 0, 0)\n }\n\n const handleDragEnd = (event: DragEvent) => {\n ;(actionIconProps as any)?.onDragEnd?.(event)\n\n const { columnOrder, draggingColumn, hoveredColumn } = getState()\n if (hoveredColumn?.id === 'drop-zone') {\n column.toggleGrouping()\n } else if (\n enableColumnOrdering &&\n hoveredColumn &&\n hoveredColumn?.id !== draggingColumn?.id\n ) {\n setColumnOrder(\n reorderColumn(column, hoveredColumn as MVT_Column<MVT_RowData>, columnOrder),\n )\n }\n setDraggingColumn(null)\n setHoveredColumn(null)\n }\n\n return h(MVT_GrabHandleButton, {\n actionIconProps,\n onDragEnd: handleDragEnd,\n onDragStart: handleDragStart,\n table,\n } as any)\n }\n },\n})\n",".root {\n --resize-handle-thickness: 4px;\n background: var(--mantine-color-placeholder);\n border-radius: 2px;\n cursor: col-resize;\n height: 24px;\n position: absolute;\n width: var(--resize-handle-thickness);\n &:hover {\n background: var(--mantine-primary-color-filled-hover);\n }\n &:active {\n background: var(--mantine-primary-color-filled);\n }\n transform: var(--mvt-transform);\n}\n\n.root-ltr {\n right: 0px;\n margin-right: -10px;\n &:global(.md) {\n margin-right: -16px;\n }\n &:global(.xl) {\n margin-right: -22px;\n }\n}\n\n.root-rtl {\n left: 0px;\n margin-left: -10px;\n &:global(.md) {\n margin-left: -16px;\n }\n &:global(.xl) {\n margin-left: -22px;\n }\n}\n\n.root-hide {\n &:active {\n opacity: 0;\n }\n}\n","import { defineComponent, h, type PropType } from 'vue'\n\nimport { Box } from '@mantine-vue/core'\n\nimport clsx from 'clsx'\n\nimport { type MVT_Header, type MVT_RowData, type MVT_TableInstance } from '../../types'\nimport classes from './MVT_TableHeadCellResizeHandle.module.css'\n\nexport const MVT_TableHeadCellResizeHandle = defineComponent({\n name: 'MVTTableHeadCellResizeHandle',\n inheritAttrs: false,\n props: {\n header: {\n type: Object as PropType<MVT_Header<MVT_RowData>>,\n required: true,\n },\n table: {\n type: Object as PropType<MVT_TableInstance<MVT_RowData>>,\n required: true,\n },\n },\n setup(props, { attrs }) {\n return () => {\n const { header, table } = props\n const {\n getState,\n options: { columnResizeDirection, columnResizeMode },\n setColumnSizingInfo,\n } = table\n const { density } = getState()\n const { column } = header\n const handler = header.getResizeHandler()\n\n const offset =\n column.getIsResizing() && columnResizeMode === 'onEnd'\n ? `translateX(${\n (columnResizeDirection === 'rtl' ? -1 : 1) *\n (getState().columnSizingInfo.deltaOffset ?? 0)\n }px)`\n : undefined\n\n return h(Box, {\n onDblclick: () => {\n setColumnSizingInfo((old) => ({\n ...old,\n isResizingColumn: false,\n }))\n column.resetSize()\n },\n onMousedown: handler,\n onTouchstart: handler,\n role: 'separator',\n ...attrs,\n style: { '--mvt-transform': offset, ...(attrs as any).style },\n class: clsx(\n 'mvt-table-head-cell-resize-handle',\n classes.root,\n classes[`root-${columnResizeDirection}`],\n !header.subHeaders.length && columnResizeMode === 'onChange' && classes['root-hide'],\n density,\n (attrs as any).class,\n ),\n } as any)\n }\n },\n})\n",".sort-icon {\n transition: all 150ms ease;\n --ai-size: var(--ai-size-xs);\n --ai-bg: transparent;\n --ai-hover: light-dark(var(--mantine-color-gray-1), var(--mantine-color-dark-6));\n --ai-hover-color: var(--mantine-color-bright);\n color: var(--mantine-color-bright);\n &[data-sorted] {\n color: var(--mantine-primary-color-filled);\n }\n margin-left: 1px;\n}\n\n.multi-sort-indicator {\n --indicator-size: rem(16px);\n --indicator-color: transparent;\n --indicator-text-color: var(--mantine-color-bright);\n height: var(--indicator-size);\n}\n","import { defineComponent, h, type PropType } from 'vue'\n\nimport { ActionIcon, Indicator, Tooltip } from '@mantine-vue/core'\n\nimport clsx from 'clsx'\n\nimport { type MVT_Header, type MVT_RowData, type MVT_TableInstance } from '../../types'\nimport { dataVariable } from '../../utils/style.utils'\nimport classes from './MVT_TableHeadCellSortLabel.module.css'\n\nexport const MVT_TableHeadCellSortLabel = defineComponent({\n name: 'MVTTableHeadCellSortLabel',\n inheritAttrs: false,\n props: {\n header: {\n type: Object as PropType<MVT_Header<MVT_RowData>>,\n required: true,\n },\n table: {\n type: Object as PropType<MVT_TableInstance<MVT_RowData>>,\n required: true,\n },\n },\n setup(props, { attrs }) {\n return () => {\n const { header, table } = props\n const {\n getState,\n options: {\n icons: { IconArrowsSort, IconSortAscending, IconSortDescending },\n localization,\n },\n } = table\n const column = header.column\n const { columnDef } = column\n const { sorting } = getState()\n const sorted = column.getIsSorted()\n const sortIndex = column.getSortIndex()\n\n const sortTooltip = sorted\n ? sorted === 'desc'\n ? localization.sortedByColumnDesc.replace('{column}', columnDef.header)\n : localization.sortedByColumnAsc.replace('{column}', columnDef.header)\n : column.getNextSortingOrder() === 'desc'\n ? localization.sortByColumnDesc.replace('{column}', columnDef.header)\n : localization.sortByColumnAsc.replace('{column}', columnDef.header)\n\n const SortActionButton = h(\n ActionIcon,\n {\n 'aria-label': sortTooltip,\n ...dataVariable('sorted', sorted),\n ...attrs,\n class: clsx('mvt-table-head-sort-button', classes['sort-icon'], (attrs as any).class),\n } as any,\n () =>\n sorted === 'desc'\n ? h(IconSortDescending, { size: '100%' })\n : sorted === 'asc'\n ? h(IconSortAscending, { size: '100%' })\n : h(IconArrowsSort, { size: '100%' }),\n )\n\n return h(Tooltip, { label: sortTooltip, openDelay: 1000, withinPortal: true } as any, () =>\n sorting.length < 2 || sortIndex === -1\n ? SortActionButton\n : h(\n Indicator,\n {\n classNames: {\n root: clsx(\n 'mvt-table-head-multi-sort-indicator',\n classes['multi-sort-indicator'],\n ),\n },\n inline: true,\n label: sortIndex + 1,\n offset: 4,\n } as any,\n () => SortActionButton,\n ),\n )\n }\n },\n})\n",".root {\n --resize-border-color: var(--mantine-primary-color-filled);\n --hover-color: var(--mantine-primary-color-filled);\n --drag-color: var(--mantine-color-gray-7);\n --resize-thickness: 2px;\n --hover-thickness: 3px;\n --drag-thickness: 1px;\n\n background-color: var(--mvt-base-background-color);\n background-clip: padding-box;\n font-weight: bold;\n overflow: visible;\n position: relative;\n transition: padding 150ms ease-in-out;\n vertical-align: top;\n z-index: 1;\n\n &:active {\n z-index: 3;\n }\n\n &[data-column-pinned] {\n background-color: var(--mvt-base-background-color);\n opacity: 0.97;\n position: sticky;\n z-index: 4;\n &[data-column-pinned='left'] {\n left: calc(var(--mvt-table-cell-left, 0) * 1px);\n &[data-last-left-pinned] {\n box-shadow: -6px 0 6px -6px\n alpha(\n light-dark(var(--mantine-color-gray-outline), var(--mantine-color-dark-outline)),\n 0.5\n )\n inset;\n }\n }\n\n &[data-column-pinned='right'] {\n right: calc(var(--mvt-table-cell-right, 0) * 1px);\n &[data-first-right-pinned] {\n box-shadow: 6px 0 6px -6px\n alpha(\n light-dark(var(--mantine-color-gray-outline), var(--mantine-color-dark-outline)),\n 0.5\n )\n inset;\n }\n }\n }\n\n &[data-resizing] {\n &[data-resizing='ltr'] {\n border-right: var(--resize-thickness) solid var(--resize-border-color);\n }\n &[data-resizing='rtl'] {\n border-left: var(--resize-thickness) solid var(--resize-border-color);\n }\n }\n\n &[data-dragging-column] {\n border-left: var(--drag-thickness) dashed var(--drag-color);\n border-right: var(--drag-thickness) dashed var(--drag-color);\n border-top: var(--drag-thickness) dashed var(--drag-color);\n opacity: 0.5;\n z-index: 3;\n }\n\n &[data-hovered-column-target] {\n border-left: var(--hover-thickness) dashed var(--hover-color);\n border-right: var(--hover-thickness) dashed var(--hover-color);\n border-top: var(--hover-thickness) dashed var(--hover-color);\n z-index: 2;\n }\n\n :global(.mantine-ActionIcon-root) {\n opacity: 0.7;\n transition: opacity 100ms ease-in-out;\n }\n\n &:hover {\n :global(.mantine-ActionIcon-root) {\n opacity: 1;\n }\n }\n}\n\n.root-grid {\n display: flex;\n flex-direction: column;\n}\n\n.root-virtualized {\n transition: none;\n}\n\n.root-no-select {\n user-select: none;\n}\n\n.content {\n align-items: center;\n justify-content: flex-start;\n position: relative;\n width: 100%;\n height: 100%;\n}\n\n.content-spaced {\n justify-content: space-between;\n}\n\n.content-center {\n justify-content: center;\n}\n\n.content-right {\n flex-direction: row-reverse;\n}\n\n.content-wrapper {\n text-overflow: ellipsis;\n}\n\n.content-wrapper-hidden-overflow {\n overflow: hidden;\n}\n\n.content-wrapper-nowrap {\n white-space: nowrap;\n}\n\n.labels {\n align-items: center;\n gap: rem(2px);\n min-height: rem(22px);\n}\n\n.labels-right {\n flex-direction: row-reverse;\n}\n\n.labels-center {\n padding-left: calc(var(--mvt-table-head-cell-labels-padding-left) * 1rem);\n}\n\n.labels-sortable {\n cursor: pointer;\n}\n\n.labels-data {\n overflow: hidden;\n}\n\n.content-actions {\n align-items: center;\n align-self: center;\n white-space: nowrap;\n gap: rem(2px);\n margin-left: rem(2px);\n}\n","import { type CSSProperties, defineComponent, h, type PropType, ref } from 'vue'\n\nimport { Flex, TableTh, useDirection, useMantineTheme } from '@mantine-vue/core'\n\nimport clsx from 'clsx'\n\nimport {\n type MVT_ColumnVirtualizer,\n type MVT_Header,\n type MVT_RowData,\n type MVT_TableInstance,\n} from '../../types'\nimport { parseCSSVarId } from '../../utils/style.utils'\nimport { parseFromValuesOrFunc } from '../../utils/utils'\nimport { MVT_ColumnActionMenu } from '../menus/MVT_ColumnActionMenu'\nimport { MVT_TableHeadCellFilterContainer } from './MVT_TableHeadCellFilterContainer'\nimport { MVT_TableHeadCellFilterLabel } from './MVT_TableHeadCellFilterLabel'\nimport { MVT_TableHeadCellGrabHandle } from './MVT_TableHeadCellGrabHandle'\nimport { MVT_TableHeadCellResizeHandle } from './MVT_TableHeadCellResizeHandle'\nimport { MVT_TableHeadCellSortLabel } from './MVT_TableHeadCellSortLabel'\nimport classes from './MVT_TableHeadCell.module.css'\n\nexport const MVT_TableHeadCell = defineComponent({\n name: 'MVTTableHeadCell',\n inheritAttrs: false,\n props: {\n columnVirtualizer: {\n type: Object as PropType<MVT_ColumnVirtualizer>,\n default: undefined,\n },\n header: {\n type: Object as PropType<MVT_Header<MVT_RowData>>,\n required: true,\n },\n renderedHeaderIndex: { type: Number, default: 0 },\n table: {\n type: Object as PropType<MVT_TableInstance<MVT_RowData>>,\n required: true,\n },\n },\n setup(props, { attrs }) {\n const direction = useDirection()\n const theme = useMantineTheme()\n const isHoveredHeadCell = ref(false)\n const isOpenedColumnActions = ref(false)\n\n return () => {\n const { columnVirtualizer, header, renderedHeaderIndex, table } = props\n const {\n getState,\n options: {\n columnFilterDisplayMode,\n columnResizeDirection,\n columnResizeMode,\n enableColumnActions,\n enableColumnDragging,\n enableColumnOrdering,\n enableColumnPinning,\n enableGrouping,\n enableHeaderActionsHoverReveal,\n enableMultiSort,\n layoutMode,\n mantineTableHeadCellProps,\n },\n refs: { tableHeadCellRefs },\n setHoveredColumn,\n } = table\n const { columnSizingInfo, draggingColumn, grouping, hoveredColumn } = getState()\n const { column } = header\n const { columnDef } = column\n const { columnDefType } = columnDef\n\n const arg = { column, table }\n const tableCellProps = {\n ...parseFromValuesOrFunc(mantineTableHeadCellProps, arg),\n ...parseFromValuesOrFunc(columnDef.mantineTableHeadCellProps, arg),\n ...attrs,\n }\n\n const widthStyles: CSSProperties = {\n minWidth: `max(calc(var(--header-${parseCSSVarId(\n header?.id,\n )}-size) * 1px), ${columnDef.minSize ?? 30}px)`,\n width: `calc(var(--header-${parseCSSVarId(header.id)}-size) * 1px)`,\n }\n if (layoutMode === 'grid') {\n widthStyles.flex = `${\n [0, false].includes(columnDef.grow!)\n ? 0\n : `var(--header-${parseCSSVarId(header.id)}-size)`\n } 0 auto`\n } else if (layoutMode === 'grid-no-grow') {\n widthStyles.flex = `${+(columnDef.grow || 0)} 0 auto`\n }\n\n const isColumnPinned =\n enableColumnPinning && columnDef.columnDefType !== 'group' && column.getIsPinned()\n\n const isDraggingColumn = draggingColumn?.id === column.id\n const isHoveredColumn = hoveredColumn?.id === column.id\n\n const columnActionsEnabled =\n (enableColumnActions || columnDef.enableColumnActions) &&\n columnDef.enableColumnActions !== false\n\n const showColumnButtons =\n !enableHeaderActionsHoverReveal ||\n isOpenedColumnActions.value ||\n (isHoveredHeadCell.value &&\n !table.getVisibleFlatColumns().find((col) => col.getIsResizing()))\n\n const showDragHandle =\n enableColumnDragging !== false &&\n columnDef.enableColumnDragging !== false &&\n (enableColumnDragging ||\n (enableColumnOrdering && columnDef.enableColumnOrdering !== false) ||\n (enableGrouping &&\n columnDef.enableGrouping !== false &&\n !grouping.includes(column.id))) &&\n showColumnButtons\n\n let headerPL = 0\n if (column.getCanSort()) headerPL++\n if (showColumnButtons && (columnActionsEnabled || showDragHandle)) headerPL += 1.75\n if (showDragHandle) headerPL += 1.25\n\n const handleDragEnter = (_e: DragEvent) => {\n const { draggingColumn: dragging, hoveredColumn: hovered } = getState()\n if (enableGrouping && hovered?.id === 'drop-zone') {\n setHoveredColumn(null)\n }\n if (enableColumnOrdering && dragging && columnDefType !== 'group') {\n setHoveredColumn(columnDef.enableColumnOrdering !== false ? column : null)\n }\n }\n\n const headerElement =\n columnDef?.Header instanceof Function\n ? columnDef?.Header?.({ column, header, table })\n : (columnDef?.Header ?? columnDef.header)\n\n const align =\n columnDefType === 'group' ? 'center' : direction.dir.value === 'rtl' ? 'right' : 'left'\n\n const style = {\n ...widthStyles,\n '--mvt-table-cell-left':\n isColumnPinned === 'left' ? `${column.getStart(isColumnPinned)}` : undefined,\n '--mvt-table-cell-right':\n isColumnPinned === 'right' ? `${column.getAfter(isColumnPinned)}` : undefined,\n ...parseFromValuesOrFunc((tableCellProps as any)?.style, theme),\n }\n\n const { children: cellChildren, ...tableCellRest } = tableCellProps as any\n\n const content = header.isPlaceholder\n ? null\n : (cellChildren ??\n h(\n Flex,\n {\n class: clsx(\n 'mvt-table-head-cell-content',\n classes.content,\n (columnDefType === 'group' || (tableCellProps as any)?.align === 'center') &&\n classes['content-center'],\n (tableCellProps as any)?.align === 'right' && classes['content-right'],\n column.getCanResize() && classes['content-spaced'],\n ),\n } as any,\n () => [\n h(\n Flex,\n {\n style: {\n '--mvt-table-head-cell-labels-padding-left': `${headerPL}`,\n },\n class: clsx(\n 'mvt-table-head-cell-labels',\n classes.labels,\n column.getCanSort() && columnDefType !== 'group' && classes['labels-sortable'],\n (tableCellProps as any)?.align === 'right'\n ? classes['labels-right']\n : (tableCellProps as any)?.align === 'center' && classes['labels-center'],\n columnDefType === 'data' && classes['labels-data'],\n ),\n onClick: column.getToggleSortingHandler(),\n } as any,\n () => [\n h(\n Flex,\n {\n class: clsx(\n 'mvt-table-head-cell-content-wrapper',\n classes['content-wrapper'],\n columnDefType === 'data' && classes['content-wrapper-hidden-overflow'],\n (columnDef.header?.length ?? 0) < 20 && classes['content-wrapper-nowrap'],\n ),\n } as any,\n () => headerElement,\n ),\n column.getCanFilter() &&\n (column.getIsFiltered() || showColumnButtons) &&\n h(MVT_TableHeadCellFilterLabel, { header, table } as any),\n column.getCanSort() &&\n (column.getIsSorted() || showColumnButtons) &&\n h(MVT_TableHeadCellSortLabel, { header, table } as any),\n ],\n ),\n columnDefType !== 'group' &&\n h(\n Flex,\n {\n class: clsx('mvt-table-head-cell-content-actions', classes['content-actions']),\n } as any,\n () => [\n showDragHandle &&\n h(MVT_TableHeadCellGrabHandle, {\n column,\n table,\n tableHeadCellRef: {\n value: tableHeadCellRefs.value[column.id],\n },\n } as any),\n columnActionsEnabled &&\n showColumnButtons &&\n h(MVT_ColumnActionMenu, {\n header,\n onChange: (v: boolean) => {\n isOpenedColumnActions.value = v\n },\n opened: isOpenedColumnActions.value,\n table,\n } as any),\n ],\n ),\n column.getCanResize() && h(MVT_TableHeadCellResizeHandle, { header, table } as any),\n ],\n ))\n\n return h(\n TableTh,\n {\n colspan: header.colSpan,\n 'data-column-pinned': isColumnPinned || undefined,\n 'data-dragging-column': isDraggingColumn || undefined,\n 'data-first-right-pinned':\n (isColumnPinned === 'right' && column.getIsFirstColumn(isColumnPinned)) || undefined,\n 'data-hovered-column-target': isHoveredColumn || undefined,\n 'data-index': renderedHeaderIndex,\n 'data-last-left-pinned':\n (isColumnPinned === 'left' && column.getIsLastColumn(isColumnPinned)) || undefined,\n 'data-resizing':\n (columnResizeMode === 'onChange' &&\n columnSizingInfo?.isResizingColumn === column.id &&\n columnResizeDirection) ||\n undefined,\n ...tableCellRest,\n align,\n class: clsx(\n classes.root,\n layoutMode?.startsWith('grid') && classes['root-grid'],\n enableMultiSort && column.getCanSort() && classes['root-no-select'],\n columnVirtualizer && classes['root-virtualized'],\n (tableCellProps as any)?.class,\n ),\n onDragenter: handleDragEnter,\n onMouseenter: () => {\n isHoveredHeadCell.value = true\n },\n onMouseleave: () => {\n isHoveredHeadCell.value = false\n },\n ref: (el: any) => {\n const node = (el?.$el ?? el) as HTMLTableCellElement\n if (node) {\n tableHeadCellRefs.value[column.id] = node\n if (columnDefType !== 'group') {\n columnVirtualizer?.measureElement?.(node)\n }\n }\n },\n style,\n } as any,\n () => [\n content,\n columnFilterDisplayMode === 'subheader' &&\n column.getCanFilter() &&\n h(MVT_TableHeadCellFilterContainer, { header, table } as any),\n ],\n )\n }\n },\n})\n",".root {\n background-color: var(--mvt-base-background-color);\n display: table-row;\n &.layout-mode-grid {\n display: flex;\n }\n}\n\n.sticky {\n position: sticky;\n top: 0;\n}\n","import { defineComponent, h, type PropType } from 'vue'\n\nimport { Box, TableTr } from '@mantine-vue/core'\n\nimport clsx from 'clsx'\n\nimport {\n type MVT_ColumnVirtualizer,\n type MVT_Header,\n type MVT_HeaderGroup,\n type MVT_RowData,\n type MVT_TableInstance,\n type MVT_VirtualItem,\n} from '../../types'\nimport { parseFromValuesOrFunc } from '../../utils/utils'\nimport { MVT_TableHeadCell } from './MVT_TableHeadCell'\nimport classes from './MVT_TableHeadRow.module.css'\n\nexport const MVT_TableHeadRow = defineComponent({\n name: 'MVTTableHeadRow',\n inheritAttrs: false,\n props: {\n columnVirtualizer: {\n type: Object as PropType<MVT_ColumnVirtualizer>,\n default: undefined,\n },\n headerGroup: {\n type: Object as PropType<MVT_HeaderGroup<MVT_RowData>>,\n required: true,\n },\n table: {\n type: Object as PropType<MVT_TableInstance<MVT_RowData>>,\n required: true,\n },\n },\n setup(props, { attrs }) {\n return () => {\n const { columnVirtualizer, headerGroup, table } = props\n const {\n getState,\n options: { enableStickyHeader, layoutMode, mantineTableHeadRowProps },\n } = table\n const { isFullScreen } = getState()\n\n const { virtualColumns, virtualPaddingLeft, virtualPaddingRight } = columnVirtualizer ?? {}\n\n const tableRowProps = {\n ...parseFromValuesOrFunc(mantineTableHeadRowProps, {\n headerGroup,\n table,\n }),\n ...attrs,\n }\n\n return h(\n TableTr,\n {\n ...tableRowProps,\n class: clsx(\n classes.root,\n (enableStickyHeader || isFullScreen) && classes.sticky,\n layoutMode?.startsWith('grid') && classes['layout-mode-grid'],\n (tableRowProps as any)?.class,\n ),\n } as any,\n () => [\n virtualPaddingLeft\n ? h(Box, {\n component: 'th',\n display: 'flex',\n w: virtualPaddingLeft,\n } as any)\n : null,\n (virtualColumns ?? headerGroup.headers).map(\n (headerOrVirtualHeader, renderedHeaderIndex) => {\n let header = headerOrVirtualHeader as MVT_Header<MVT_RowData>\n let index = renderedHeaderIndex\n if (columnVirtualizer) {\n index = (headerOrVirtualHeader as MVT_VirtualItem).index\n header = headerGroup.headers[index]\n }\n return h(MVT_TableHeadCell, {\n columnVirtualizer,\n header,\n key: header.id,\n renderedHeaderIndex: index,\n table,\n } as any)\n },\n ),\n virtualPaddingRight\n ? h(Box, {\n component: 'th',\n display: 'flex',\n w: virtualPaddingRight,\n } as any)\n : null,\n ],\n )\n }\n },\n})\n",".root {\n background-color: var(--mvt-base-background-color);\n opacity: 0.97;\n position: relative;\n}\n\n.root-grid {\n display: grid;\n}\n\n.root-table-row-group {\n display: table-row-group;\n}\n\n.root-sticky {\n position: sticky;\n top: 0;\n z-index: 3;\n}\n\n.banner-tr {\n display: table-row;\n}\n\n.banner-th {\n display: table-cell;\n padding: 0;\n}\n\n.grid {\n display: grid;\n}\n","import { defineComponent, h, type PropType } from 'vue'\n\nimport { TableTh, TableThead, TableTr } from '@mantine-vue/core'\n\nimport clsx from 'clsx'\n\nimport { type MVT_ColumnVirtualizer, type MVT_RowData, type MVT_TableInstance } from '../../types'\nimport { parseFromValuesOrFunc } from '../../utils/utils'\nimport { MVT_ToolbarAlertBanner } from '../toolbar/MVT_ToolbarAlertBanner'\nimport { MVT_TableHeadRow } from './MVT_TableHeadRow'\nimport classes from './MVT_TableHead.module.css'\n\nexport const MVT_TableHead = defineComponent({\n name: 'MVTTableHead',\n inheritAttrs: false,\n props: {\n columnVirtualizer: {\n type: Object as PropType<MVT_ColumnVirtualizer>,\n default: undefined,\n },\n table: {\n type: Object as PropType<MVT_TableInstance<MVT_RowData>>,\n required: true,\n },\n },\n setup(props, { attrs }) {\n return () => {\n const { columnVirtualizer, table } = props\n const {\n getHeaderGroups,\n getSelectedRowModel,\n getState,\n options: {\n enableStickyHeader,\n layoutMode,\n mantineTableHeadProps,\n positionToolbarAlertBanner,\n },\n refs: { tableHeadRef },\n } = table\n const { isFullScreen, showAlertBanner } = getState()\n\n const tableHeadProps = {\n ...parseFromValuesOrFunc(mantineTableHeadProps, { table }),\n ...attrs,\n }\n\n const stickyHeader = enableStickyHeader || isFullScreen\n\n return h(\n TableThead,\n {\n ...tableHeadProps,\n class: clsx(\n classes.root,\n layoutMode?.startsWith('grid') ? classes['root-grid'] : classes['root-table-row-group'],\n stickyHeader && classes['root-sticky'],\n (tableHeadProps as any)?.class,\n ),\n pos: stickyHeader && layoutMode?.startsWith('grid') ? 'sticky' : 'relative',\n ref: (el: any) => {\n const node = (el?.$el ?? el) as HTMLTableSectionElement\n tableHeadRef.value = node\n if ((tableHeadProps as any)?.ref) {\n ;(tableHeadProps as any).ref.value = node\n }\n },\n } as any,\n () =>\n positionToolbarAlertBanner === 'head-overlay' &&\n (showAlertBanner || getSelectedRowModel().rows.length > 0)\n ? h(\n TableTr,\n {\n class: clsx(classes['banner-tr'], layoutMode?.startsWith('grid') && classes.grid),\n } as any,\n () =>\n h(\n TableTh,\n {\n class: clsx(\n classes['banner-th'],\n layoutMode?.startsWith('grid') && classes.grid,\n ),\n colspan: table.getVisibleLeafColumns().length,\n } as any,\n () => h(MVT_ToolbarAlertBanner, { table } as any),\n ),\n )\n : getHeaderGroups().map((headerGroup) =>\n h(MVT_TableHeadRow, {\n columnVirtualizer,\n headerGroup,\n key: headerGroup.id,\n table,\n } as any),\n ),\n )\n }\n },\n})\n",".root {\n background-color: var(--mvt-base-background-color);\n}\n\n.root-grid {\n display: grid;\n}\n","import { defineComponent, h, type PropType, unref } from 'vue'\n\nimport { darken, lighten, Table, useMantineColorScheme } from '@mantine-vue/core'\n\nimport clsx from 'clsx'\n\nimport { useMVT_ColumnVirtualizer } from '../../hooks/useMVT_ColumnVirtualizer'\nimport { type MVT_RowData, type MVT_TableInstance } from '../../types'\nimport { parseCSSVarId } from '../../utils/style.utils'\nimport { parseFromValuesOrFunc } from '../../utils/utils'\nimport { MVT_TableBody } from '../body/MVT_TableBody'\nimport { MVT_TableFooter } from '../footer/MVT_TableFooter'\nimport { MVT_TableHead } from '../head/MVT_TableHead'\nimport classes from './MVT_Table.module.css'\n\nexport const MVT_Table = defineComponent({\n name: 'MVTTable',\n inheritAttrs: false,\n props: {\n table: {\n type: Object as PropType<MVT_TableInstance<MVT_RowData>>,\n required: true,\n },\n },\n setup(props, { attrs }) {\n const columnVirtualizerRef = useMVT_ColumnVirtualizer(props.table)\n const { colorScheme } = useMantineColorScheme()\n\n return () => {\n const { table } = props\n\n const columnVirtualizer = columnVirtualizerRef?.value\n const {\n getFlatHeaders,\n options: { enableTableFooter, enableTableHead, layoutMode, mantineTableProps },\n } = table\n\n const tableProps = {\n highlightOnHover: true,\n horizontalSpacing: table.getState().density,\n verticalSpacing: table.getState().density,\n ...parseFromValuesOrFunc(mantineTableProps, { table }),\n ...attrs,\n }\n\n const columnSizeVars: Record<string, number> = (() => {\n const headers = getFlatHeaders()\n const colSizes: Record<string, number> = {}\n for (let i = 0; i < headers.length; i++) {\n const header = headers[i]\n const colSize = header.getSize()\n colSizes[`--header-${parseCSSVarId(header.id)}-size`] = colSize\n colSizes[`--col-${parseCSSVarId(header.column.id)}-size`] = colSize\n }\n return colSizes\n })()\n\n const stripedColor = (tableProps as any).stripedColor\n\n const commonTableGroupProps = { columnVirtualizer, table }\n\n return h(\n Table,\n {\n ...tableProps,\n class: clsx(\n 'mvt-table',\n classes.root,\n layoutMode?.startsWith('grid') && classes['root-grid'],\n (tableProps as any).class,\n ),\n style: {\n ...columnSizeVars,\n '--mvt-striped-row-background-color': stripedColor,\n '--mvt-striped-row-hover-background-color': stripedColor\n ? unref(colorScheme) === 'dark'\n ? lighten(stripedColor, 0.08)\n : darken(stripedColor, 0.12)\n : undefined,\n ...(tableProps as any).style,\n },\n } as any,\n () => [\n enableTableHead && h(MVT_TableHead, commonTableGroupProps as any),\n h(MVT_TableBody, {\n ...commonTableGroupProps,\n tableProps,\n } as any),\n enableTableFooter && h(MVT_TableFooter, commonTableGroupProps as any),\n ],\n )\n }\n },\n})\n",".root {\n background-color: var(--mvt-base-background-color);\n max-width: 100%;\n overflow: auto;\n position: relative;\n}\n\n.root-sticky {\n max-height: clamp(350px, calc(100vh - calc(var(--mvt-top-toolbar-height) * 1px)), 9999px);\n}\n\n.root-fullscreen {\n max-height: calc(100vh - calc(var(--mvt-top-toolbar-height) * 1px)) !important;\n}\n","import { defineComponent, h, onMounted, type PropType, ref } from 'vue'\n\nimport { Box, LoadingOverlay } from '@mantine-vue/core'\n\nimport clsx from 'clsx'\n\nimport { type MVT_RowData, type MVT_TableInstance } from '../../types'\nimport { parseFromValuesOrFunc } from '../../utils/utils'\nimport { MVT_EditRowModal } from '../modals/MVT_EditRowModal'\nimport { MVT_Table } from './MVT_Table'\nimport classes from './MVT_TableContainer.module.css'\n\nexport const MVT_TableContainer = defineComponent({\n name: 'MVTTableContainer',\n inheritAttrs: false,\n props: {\n table: {\n type: Object as PropType<MVT_TableInstance<MVT_RowData>>,\n required: true,\n },\n },\n setup(props, { attrs }) {\n const totalToolbarHeight = ref(0)\n\n onMounted(() => {\n const { bottomToolbarRef, topToolbarRef } = props.table.refs\n const topToolbarHeight = topToolbarRef.value?.offsetHeight ?? 0\n const bottomToolbarHeight = bottomToolbarRef.value?.offsetHeight ?? 0\n totalToolbarHeight.value = topToolbarHeight + bottomToolbarHeight\n })\n\n return () => {\n const { table } = props\n const {\n getState,\n options: {\n createDisplayMode,\n editDisplayMode,\n enableStickyHeader,\n mantineLoadingOverlayProps,\n mantineTableContainerProps,\n },\n refs: { tableContainerRef },\n } = table\n const { creatingRow, editingRow, isFullScreen, isLoading, showLoadingOverlay } = getState()\n\n const tableContainerProps = {\n ...parseFromValuesOrFunc(mantineTableContainerProps, { table }),\n ...attrs,\n }\n const loadingOverlayProps = parseFromValuesOrFunc(mantineLoadingOverlayProps, { table })\n\n const createModalOpen = createDisplayMode === 'modal' && creatingRow\n const editModalOpen = editDisplayMode === 'modal' && editingRow\n\n return h(\n Box,\n {\n ...tableContainerProps,\n style: {\n '--mvt-top-toolbar-height': `${totalToolbarHeight.value}`,\n ...(tableContainerProps as any)?.style,\n },\n class: clsx(\n 'mvt-table-container',\n classes.root,\n enableStickyHeader && classes['root-sticky'],\n isFullScreen && classes['root-fullscreen'],\n (tableContainerProps as any)?.class,\n ),\n ref: (el: any) => {\n const node = (el?.$el ?? el) as HTMLDivElement\n if (node) {\n tableContainerRef.value = node\n if ((tableContainerProps as any)?.ref) {\n ;(tableContainerProps as any).ref.value = node\n }\n }\n },\n } as any,\n () => [\n h(LoadingOverlay, {\n visible: isLoading || showLoadingOverlay,\n zIndex: 2,\n ...loadingOverlayProps,\n } as any),\n h(MVT_Table, { table } as any),\n (createModalOpen || editModalOpen) && h(MVT_EditRowModal, { open: true, table } as any),\n ],\n )\n }\n },\n})\n",":root {\n /* default background color for everything */\n --mvt-base-background-color: var(--mantine-color-body);\n\n @mixin light-root {\n --mvt-striped-row-background-color: darken(var(--mvt-base-background-color), 0.05);\n }\n @mixin dark-root {\n --mvt-striped-row-background-color: lighten(var(--mvt-base-background-color), 0.04);\n }\n\n /* row hover */\n @mixin light-root {\n --mvt-row-hover-background-color: darken(var(--mvt-base-background-color), 0.08);\n --mvt-striped-row-hover-background-color: darken(var(--mvt-striped-row-background-color), 0.12);\n }\n @mixin dark-root {\n --mvt-row-hover-background-color: lighten(var(--mvt-base-background-color), 0.08);\n --mvt-striped-row-hover-background-color: lighten(\n var(--mvt-striped-row-background-color),\n 0.08\n );\n }\n\n /* row selection */\n --mvt-selected-row-background-color: alpha(var(--mantine-primary-color-light), 0.8);\n @mixin light-root {\n --mvt-selected-row-hover-background-color: darken(\n var(--mantine-primary-color-light-hover),\n 0.05\n );\n }\n @mixin dark-root {\n --mvt-selected-row-hover-background-color: lighten(\n var(--mantine-primary-color-light-hover),\n 0.05\n );\n }\n\n /* row pinning */\n --mvt-pinned-row-background-color: var(--mvt-selected-row-background-color);\n --mvt-pinned-row-hover-background-color: var(--mvt-selected-row-hover-background-color);\n\n /* column pinning */\n @mixin light-root {\n --mvt-pinned-column-background-color: darken(var(--mvt-base-background-color), 0.01);\n }\n @mixin dark-root {\n --mvt-pinned-column-background-color: darken(var(--mvt-base-background-color), 0.05);\n }\n\n /* cell borders */\n --mvt-dragging-hovered-border-color: var(--mantine-primary-color-filled);\n --mvt-dragging-drag-border-color: var(--mantine-color-gray-7);\n --mvt-resize-column-border-color: var(--mantine-primary-color-filled);\n}\n\n.root {\n background-color: var(--mvt-base-background-color);\n overflow: hidden;\n transition: all 150ms ease-in-out;\n}\n","import { defineComponent, h, onBeforeUnmount, type PropType, Teleport, watch } from 'vue'\n\nimport { Paper, useMantineTheme } from '@mantine-vue/core'\n\nimport clsx from 'clsx'\n\nimport { type MVT_RowData, type MVT_TableInstance } from '../../types'\nimport { parseFromValuesOrFunc } from '../../utils/utils'\nimport { MVT_BottomToolbar } from '../toolbar/MVT_BottomToolbar'\nimport { MVT_TopToolbar } from '../toolbar/MVT_TopToolbar'\nimport { MVT_TableContainer } from './MVT_TableContainer'\nimport classes from './MVT_TablePaper.module.css'\n\nexport const MVT_TablePaper = defineComponent({\n name: 'MVTTablePaper',\n inheritAttrs: false,\n props: {\n table: {\n type: Object as PropType<MVT_TableInstance<MVT_RowData>>,\n required: true,\n },\n },\n setup(props, { attrs }) {\n const theme = useMantineTheme()\n\n // Lock body scroll while full screen so the scrollbar moves the table's own\n // container instead of the page behind it.\n const setBodyScrollLock = (locked: boolean) => {\n if (typeof document === 'undefined') return\n document.body.style.overflow = locked ? 'hidden' : ''\n }\n\n watch(\n () => props.table.getState().isFullScreen,\n (isFullScreen) => setBodyScrollLock(!!isFullScreen),\n )\n\n onBeforeUnmount(() => setBodyScrollLock(false))\n\n return () => {\n const { table } = props\n const {\n getState,\n options: {\n enableBottomToolbar,\n enableTopToolbar,\n mantinePaperProps,\n renderBottomToolbar,\n renderTopToolbar,\n },\n refs: { tablePaperRef },\n } = table\n const { isFullScreen } = getState()\n\n const tablePaperProps = {\n ...parseFromValuesOrFunc(mantinePaperProps, { table }),\n ...attrs,\n }\n\n const style = {\n zIndex: isFullScreen ? 200 : undefined,\n ...parseFromValuesOrFunc(tablePaperProps?.style as any, theme),\n ...(isFullScreen\n ? {\n border: 0,\n borderRadius: 0,\n bottom: 0,\n height: '100vh',\n left: 0,\n margin: 0,\n maxHeight: '100vh',\n maxWidth: '100vw',\n padding: 0,\n position: 'fixed',\n right: 0,\n top: 0,\n width: '100vw',\n }\n : null),\n }\n\n const paper = h(\n Paper,\n {\n shadow: 'xs',\n withBorder: true,\n ...tablePaperProps,\n class: clsx(\n 'mvt-table-paper',\n classes.root,\n isFullScreen && 'mvt-table-paper-fullscreen',\n (tablePaperProps as any)?.class,\n ),\n ref: (el: any) => {\n tablePaperRef.value = (el?.$el ?? el) as HTMLDivElement\n if ((tablePaperProps as any)?.ref) {\n ;(tablePaperProps as any).ref.value = tablePaperRef.value\n }\n },\n style,\n } as any,\n () => [\n enableTopToolbar &&\n (parseFromValuesOrFunc(renderTopToolbar, { table }) ??\n h(MVT_TopToolbar, { table } as any)),\n h(MVT_TableContainer, { table } as any),\n enableBottomToolbar &&\n (parseFromValuesOrFunc(renderBottomToolbar, { table }) ??\n h(MVT_BottomToolbar, { table } as any)),\n ],\n )\n\n // Teleport to <body> while full screen so `position: fixed` is relative to\n // the viewport and lands in the root stacking context. Otherwise a\n // transformed / stacking-context ancestor (common in docs shells and app\n // layouts) traps it, leaving the table behind the page header/sidebar.\n // `disabled` keeps the same instance mounted when toggling in/out.\n return h(Teleport, { disabled: !isFullScreen, to: 'body' }, [paper])\n }\n },\n})\n","import { defineComponent, h, type PropType, type Slots, type SlotsType } from 'vue'\n\nimport { useMantineVueTable } from '../hooks/useMantineVueTable'\nimport { type MVT_RowData, type MVT_TableInstance, type MVT_TableOptions } from '../types'\nimport { type MVT_TableSlots, provideMVT_Slots } from './MVT_TableSlots'\nimport { MVT_TablePaper } from './table/MVT_TablePaper'\n\nexport const MantineVueTable = defineComponent({\n name: 'MantineVueTable',\n inheritAttrs: false,\n props: {\n table: {\n type: Object as PropType<object>,\n default: undefined,\n },\n },\n slots: Object as SlotsType<MVT_TableSlots>,\n setup(props, { attrs, slots }) {\n const table =\n (props.table as MVT_TableInstance<MVT_RowData> | undefined) ??\n useMantineVueTable(attrs as unknown as MVT_TableOptions<MVT_RowData>)\n\n const rawSlots = slots as unknown as Slots\n provideMVT_Slots(rawSlots)\n\n ;(table as any).setMVTSlots?.(rawSlots)\n return () => h(MVT_TablePaper, { table } as any)\n },\n})\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","names":[],"sources":["../src/utils/column.utils.ts","../src/utils/displayColumn.utils.ts","../src/server-grouping/serverGrouping.types.ts","../src/utils/utils.ts","../src/server-grouping/serverGroupingSelection.ts","../src/server-grouping/serverGrouping.utils.ts","../src/server-grouping/useMVT_ServerGrouping.ts","../src/utils/tanstack.helpers.ts","../src/components/MVT_TableSlots.ts","../src/components/menus/MVT_RowActionMenu.ts","../src/components/buttons/MVT_EditActionButtons.module.css","../src/components/buttons/MVT_EditActionButtons.ts","../src/components/buttons/MVT_ToggleRowActionMenuButton.ts","../src/hooks/display-columns/getMVT_RowActionsColumnDef.ts","../src/components/buttons/MVT_GrabHandleButton.module.css","../src/components/buttons/MVT_GrabHandleButton.ts","../src/components/body/MVT_TableBodyRowGrabHandle.ts","../src/hooks/display-columns/getMVT_RowDragColumnDef.ts","../src/components/buttons/MVT_ExpandAllButton.module.css","../src/components/buttons/MVT_ExpandAllButton.ts","../src/components/inputs/MVT_EditCellTextInput.ts","../src/components/buttons/MVT_ExpandButton.module.css","../src/components/buttons/MVT_ExpandButton.ts","../src/hooks/display-columns/getMVT_RowExpandColumnDef.ts","../src/hooks/display-columns/getMVT_RowNumbersColumnDef.ts","../src/components/buttons/MVT_RowPinButton.ts","../src/components/body/MVT_TableBodyRowPinButton.ts","../src/hooks/display-columns/getMVT_RowPinningColumnDef.ts","../src/fns/sortingFns.ts","../src/utils/row.utils.ts","../src/components/inputs/MVT_SelectCheckbox.ts","../src/hooks/display-columns/getMVT_RowSelectColumnDef.ts","../src/fns/aggregationFns.ts","../src/fns/filterFns.ts","../src/icons.ts","../src/locales/en.ts","../src/hooks/useMVT_TableOptions.ts","../src/hooks/display-columns/getMVT_RowSpacerColumnDef.ts","../src/hooks/useMVT_Effects.ts","../src/hooks/useMVT_TableInstance.ts","../src/hooks/useMantineVueTable.ts","../src/components/toolbar/MVT_ProgressBar.module.css","../src/components/toolbar/MVT_ProgressBar.ts","../src/components/toolbar/MVT_TablePagination.module.css","../src/components/toolbar/MVT_TablePagination.ts","../src/components/toolbar/MVT_ToolbarAlertBanner.module.css","../src/components/toolbar/MVT_ToolbarAlertBanner.ts","../src/components/toolbar/MVT_ToolbarDropZone.module.css","../src/components/toolbar/MVT_ToolbarDropZone.ts","../src/components/toolbar/common.styles.module.css","../src/components/toolbar/MVT_BottomToolbar.module.css","../src/components/toolbar/MVT_BottomToolbar.ts","../src/server-grouping/MVT_ServerGrouping.module.css","../src/server-grouping/MVT_ServerGroupingGroupBy.ts","../src/components/menus/MVT_FilterOptionMenu.module.css","../src/components/menus/MVT_FilterOptionMenu.ts","../src/components/inputs/MVT_GlobalFilterTextInput.module.css","../src/components/inputs/MVT_GlobalFilterTextInput.ts","../src/components/buttons/MVT_ColumnPinningButtons.module.css","../src/components/buttons/MVT_ColumnPinningButtons.ts","../src/components/menus/MVT_ShowHideColumnsMenuItems.module.css","../src/components/menus/MVT_ShowHideColumnsMenuItems.ts","../src/components/menus/MVT_ShowHideColumnsMenu.module.css","../src/components/menus/MVT_ShowHideColumnsMenu.ts","../src/components/buttons/MVT_ShowHideColumnsButton.ts","../src/components/buttons/MVT_ToggleDensePaddingButton.ts","../src/components/buttons/MVT_ToggleFiltersButton.ts","../src/components/buttons/MVT_ToggleFullScreenButton.ts","../src/components/buttons/MVT_ToggleGlobalFilterButton.ts","../src/components/toolbar/MVT_ToolbarInternalButtons.module.css","../src/components/toolbar/MVT_ToolbarInternalButtons.ts","../src/components/toolbar/MVT_TopToolbar.module.css","../src/components/toolbar/MVT_TopToolbar.ts","../src/components/modals/MVT_EditRowModal.ts","../src/utils/virtualization.utils.ts","../src/hooks/useMVT_ColumnVirtualizer.ts","../src/utils/style.utils.ts","../src/hooks/useMVT_Rows.ts","../src/hooks/useMVT_RowVirtualizer.ts","../src/components/buttons/MVT_CopyButton.module.css","../src/components/buttons/MVT_CopyButton.ts","../src/components/body/MVT_TableBodyCellValue.ts","../src/components/body/MVT_TableBodyCell.module.css","../src/components/body/MVT_TableBodyCell.ts","../src/components/body/MVT_TableDetailPanel.module.css","../src/components/body/MVT_TableDetailPanel.ts","../src/components/body/MVT_TableBodyRow.module.css","../src/components/body/MVT_TableBodyRow.ts","../src/server-grouping/MVT_ServerGroupingBody.ts","../src/components/body/MVT_TableBody.module.css","../src/components/body/MVT_TableBodyEmptyRow.ts","../src/components/body/MVT_TableBody.ts","../src/components/footer/MVT_TableFooterCell.module.css","../src/components/footer/MVT_TableFooterCell.ts","../src/components/footer/MVT_TableFooterRow.module.css","../src/components/footer/MVT_TableFooterRow.ts","../src/components/footer/MVT_TableFooter.module.css","../src/components/footer/MVT_TableFooter.ts","../src/components/menus/MVT_ColumnActionMenu.module.css","../src/components/menus/MVT_ColumnActionMenu.ts","../src/components/inputs/MVT_FilterCheckBox.module.css","../src/components/inputs/MVT_FilterCheckbox.ts","../src/components/inputs/MVT_FilterTextInput.module.css","../src/components/inputs/MVT_FilterTextInput.ts","../src/components/inputs/MVT_FilterRangeFields.module.css","../src/components/inputs/MVT_FilterRangeFields.ts","../src/components/inputs/MVT_FilterRangeSlider.module.css","../src/components/inputs/MVT_FilterRangeSlider.ts","../src/components/head/MVT_TableHeadCellFilterContainer.module.css","../src/components/head/MVT_TableHeadCellFilterContainer.ts","../src/components/head/MVT_TableHeadCellFilterLabel.module.css","../src/components/head/MVT_TableHeadCellFilterLabel.ts","../src/components/head/MVT_TableHeadCellGrabHandle.ts","../src/components/head/MVT_TableHeadCellResizeHandle.module.css","../src/components/head/MVT_TableHeadCellResizeHandle.ts","../src/components/head/MVT_TableHeadCellSortLabel.module.css","../src/components/head/MVT_TableHeadCellSortLabel.ts","../src/components/head/MVT_TableHeadCell.module.css","../src/components/head/MVT_TableHeadCell.ts","../src/components/head/MVT_TableHeadRow.module.css","../src/components/head/MVT_TableHeadRow.ts","../src/components/head/MVT_TableHead.module.css","../src/components/head/MVT_TableHead.ts","../src/components/table/MVT_Table.module.css","../src/components/table/MVT_Table.ts","../src/components/table/MVT_TableContainer.module.css","../src/components/table/MVT_TableContainer.ts","../src/components/table/MVT_TablePaper.module.css","../src/components/table/MVT_TablePaper.ts","../src/components/MantineVueTable.ts","../src/server-grouping/createServerGroupingProvider.ts"],"sourcesContent":["import { type Row } from '@tanstack/vue-table'\n\nimport {\n type MVT_Column,\n type MVT_ColumnDef,\n type MVT_ColumnOrderState,\n type MVT_DefinedColumnDef,\n type MVT_DefinedTableOptions,\n type MVT_FilterOption,\n type MVT_RowData,\n} from '../types'\n\nexport const getColumnId = <TData extends MVT_RowData>(columnDef: MVT_ColumnDef<TData>): string =>\n columnDef.id ?? columnDef.accessorKey?.toString?.() ?? columnDef.header\n\nexport const getAllLeafColumnDefs = <TData extends MVT_RowData>(\n columns: MVT_ColumnDef<TData>[],\n): MVT_ColumnDef<TData>[] => {\n const allLeafColumnDefs: MVT_ColumnDef<TData>[] = []\n const getLeafColumns = (cols: MVT_ColumnDef<TData>[]) => {\n cols.forEach((col) => {\n if (col.columns) {\n getLeafColumns(col.columns)\n } else {\n allLeafColumnDefs.push(col)\n }\n })\n }\n getLeafColumns(columns)\n return allLeafColumnDefs\n}\n\nexport const prepareColumns = <TData extends MVT_RowData>({\n columnDefs,\n tableOptions,\n}: {\n columnDefs: MVT_ColumnDef<TData>[]\n tableOptions: MVT_DefinedTableOptions<TData>\n}): MVT_DefinedColumnDef<TData>[] => {\n const {\n aggregationFns = {},\n defaultDisplayColumn,\n filterFns = {},\n sortingFns = {},\n state: { columnFilterFns = {} } = {},\n } = tableOptions\n return columnDefs.map((col) => {\n // Local alias so the display-column branch can reassign without mutating the\n // map callback parameter (eslint no-param-reassign).\n let columnDef = col\n //assign columnId\n if (!columnDef.id) columnDef.id = getColumnId(columnDef)\n //assign columnDefType\n if (!columnDef.columnDefType) columnDef.columnDefType = 'data'\n if (columnDef.columns?.length) {\n columnDef.columnDefType = 'group'\n //recursively prepare columns if this is a group column\n columnDef.columns = prepareColumns({\n columnDefs: columnDef.columns,\n tableOptions,\n })\n } else if (columnDef.columnDefType === 'data') {\n //assign aggregationFns if multiple aggregationFns are provided\n if (Array.isArray(columnDef.aggregationFn)) {\n const aggFns = columnDef.aggregationFn as string[]\n columnDef.aggregationFn = (\n columnId: string,\n leafRows: Row<TData>[],\n childRows: Row<TData>[],\n ) => aggFns.map((fn) => aggregationFns[fn]?.(columnId, leafRows, childRows))\n }\n\n //assign filterFns\n if (Object.keys(filterFns).includes(columnFilterFns[columnDef.id])) {\n columnDef.filterFn = filterFns[columnFilterFns[columnDef.id]] ?? filterFns.fuzzy\n ;(columnDef as MVT_DefinedColumnDef<TData>)._filterFn = columnFilterFns[columnDef.id]\n }\n\n //assign sortingFns\n if (Object.keys(sortingFns).includes(columnDef.sortingFn as string)) {\n // @ts-expect-error bla bla bla\n columnDef.sortingFn = sortingFns[columnDef.sortingFn]\n }\n } else if (columnDef.columnDefType === 'display') {\n columnDef = {\n ...(defaultDisplayColumn as MVT_ColumnDef<TData>),\n ...columnDef,\n }\n }\n return columnDef\n }) as MVT_DefinedColumnDef<TData>[]\n}\n\nexport const reorderColumn = <TData extends MVT_RowData>(\n draggedColumn: MVT_Column<TData>,\n targetColumn: MVT_Column<TData>,\n columnOrder: MVT_ColumnOrderState,\n): MVT_ColumnOrderState => {\n if (draggedColumn.getCanPin()) {\n draggedColumn.pin(targetColumn.getIsPinned())\n }\n const newColumnOrder = [...columnOrder]\n newColumnOrder.splice(\n newColumnOrder.indexOf(targetColumn.id),\n 0,\n newColumnOrder.splice(newColumnOrder.indexOf(draggedColumn.id), 1)[0],\n )\n return newColumnOrder\n}\n\nexport const getDefaultColumnFilterFn = <TData extends MVT_RowData>(\n columnDef: MVT_ColumnDef<TData>,\n): MVT_FilterOption => {\n const { filterVariant } = columnDef\n if (filterVariant === 'multi-select') return 'arrIncludesSome'\n if (filterVariant?.includes('range')) return 'betweenInclusive'\n if (['checkbox', 'date', 'select'].includes(filterVariant || '')) return 'equals'\n return 'fuzzy'\n}\n","import {\n type MVT_ColumnDef,\n type MVT_DefinedTableOptions,\n type MVT_DisplayColumnIds,\n type MVT_Localization,\n type MVT_RowData,\n type MVT_StatefulTableOptions,\n} from '../types'\nimport { getAllLeafColumnDefs, getColumnId } from './column.utils'\n\nexport function defaultDisplayColumnProps<TData extends MVT_RowData>({\n header,\n id,\n size,\n tableOptions,\n}: {\n header?: keyof MVT_Localization\n id: MVT_DisplayColumnIds\n size: number\n tableOptions: MVT_DefinedTableOptions<TData>\n}): MVT_ColumnDef<TData> {\n const { defaultDisplayColumn, displayColumnDefOptions, localization } = tableOptions\n return {\n ...defaultDisplayColumn,\n header: header ? localization[header]! : '',\n size,\n ...displayColumnDefOptions?.[id],\n id,\n }\n}\n\nexport const showRowPinningColumn = <TData extends MVT_RowData>(\n tableOptions: MVT_StatefulTableOptions<TData>,\n): boolean => {\n const { enableRowPinning, rowPinningDisplayMode } = tableOptions\n return !!(enableRowPinning && !rowPinningDisplayMode?.startsWith('select'))\n}\n\nexport const showRowDragColumn = <TData extends MVT_RowData>(\n tableOptions: MVT_StatefulTableOptions<TData>,\n): boolean => {\n const { enableRowDragging, enableRowOrdering } = tableOptions\n return !!(enableRowDragging || enableRowOrdering)\n}\n\nexport const showRowExpandColumn = <TData extends MVT_RowData>(\n tableOptions: MVT_StatefulTableOptions<TData>,\n): boolean => {\n const {\n enableExpanding,\n enableGrouping,\n renderDetailPanel,\n state: { grouping },\n } = tableOptions\n\n const hasDetailPanelSlot = !!(tableOptions as any)._mvtSlots?.value?.detailPanel\n return !!(\n enableExpanding ||\n (enableGrouping && grouping?.length) ||\n renderDetailPanel ||\n hasDetailPanelSlot\n )\n}\n\nexport const showRowActionsColumn = <TData extends MVT_RowData>(\n tableOptions: MVT_StatefulTableOptions<TData>,\n): boolean => {\n const {\n createDisplayMode,\n editDisplayMode,\n enableEditing,\n enableRowActions,\n state: { creatingRow },\n } = tableOptions\n return !!(\n enableRowActions ||\n (creatingRow && createDisplayMode === 'row') ||\n (enableEditing && ['modal', 'row'].includes(editDisplayMode ?? ''))\n )\n}\n\nexport const showRowSelectionColumn = <TData extends MVT_RowData>(\n tableOptions: MVT_StatefulTableOptions<TData>,\n): boolean => !!tableOptions.enableRowSelection\n\nexport const showRowNumbersColumn = <TData extends MVT_RowData>(\n tableOptions: MVT_StatefulTableOptions<TData>,\n): boolean => !!tableOptions.enableRowNumbers\n\nexport const showRowSpacerColumn = <TData extends MVT_RowData>(\n tableOptions: MVT_StatefulTableOptions<TData>,\n): boolean => tableOptions.layoutMode === 'grid-no-grow'\n\nexport const getLeadingDisplayColumnIds = <TData extends MVT_RowData>(\n tableOptions: MVT_StatefulTableOptions<TData>,\n) =>\n [\n showRowPinningColumn(tableOptions) && 'mvt-row-pin',\n showRowDragColumn(tableOptions) && 'mvt-row-drag',\n tableOptions.positionActionsColumn === 'first' &&\n showRowActionsColumn(tableOptions) &&\n 'mvt-row-actions',\n tableOptions.positionExpandColumn === 'first' &&\n showRowExpandColumn(tableOptions) &&\n 'mvt-row-expand',\n showRowSelectionColumn(tableOptions) && 'mvt-row-select',\n showRowNumbersColumn(tableOptions) && 'mvt-row-numbers',\n ].filter(Boolean) as MVT_DisplayColumnIds[]\n\nexport const getTrailingDisplayColumnIds = <TData extends MVT_RowData>(\n tableOptions: MVT_StatefulTableOptions<TData>,\n) =>\n [\n tableOptions.positionActionsColumn === 'last' &&\n showRowActionsColumn(tableOptions) &&\n 'mvt-row-actions',\n tableOptions.positionExpandColumn === 'last' &&\n showRowExpandColumn(tableOptions) &&\n 'mvt-row-expand',\n showRowSpacerColumn(tableOptions) && 'mvt-row-spacer',\n ].filter(Boolean) as MVT_DisplayColumnIds[]\n\nexport const getDefaultColumnOrderIds = <TData extends MVT_RowData>(\n tableOptions: MVT_StatefulTableOptions<TData>,\n reset = false,\n) => {\n const {\n state: { columnOrder: currentColumnOrderIds = [] },\n } = tableOptions\n\n const leadingDisplayColIds: string[] = getLeadingDisplayColumnIds(tableOptions)\n const trailingDisplayColIds: string[] = getTrailingDisplayColumnIds(tableOptions)\n\n const defaultColumnDefIds = getAllLeafColumnDefs(tableOptions.columns).map((columnDef) =>\n getColumnId(columnDef),\n )\n\n let allLeafColumnDefIds = reset\n ? defaultColumnDefIds\n : Array.from(new Set([...currentColumnOrderIds, ...defaultColumnDefIds]))\n\n allLeafColumnDefIds = allLeafColumnDefIds.filter(\n (colId) => !leadingDisplayColIds.includes(colId) && !trailingDisplayColIds.includes(colId),\n )\n\n return [...leadingDisplayColIds, ...allLeafColumnDefIds, ...trailingDisplayColIds]\n}\n","import { type Component, type VNodeChild } from 'vue'\n\nimport type {\n HTMLPropsRef,\n MVT_Column,\n MVT_ColumnFiltersState,\n MVT_Node,\n MVT_PaginationState,\n MVT_RowData,\n MVT_SortingState,\n MVT_TableInstance,\n} from '../types'\nimport type { TableTrProps } from '../mantine.types'\n\n/**\n * Stable identifier of a location inside the server-grouping hierarchy.\n *\n * - `'__root__'` — the root level (first group-by field, or the flat record\n * list when `grouping` is empty).\n * - `'country:BH'` — content under the root group `BH` of field `country`.\n * - `'country:BH/salesperson:42'` — content nested one level deeper.\n *\n * Path ids are never derived from row indexes, so they stay stable across\n * pagination, sorting, and reloads. Segment values are escaped, so group ids\n * may safely contain `/` or `:`.\n */\nexport type MVT_ServerGroupPathId = string\n\nexport const MVT_SERVER_GROUPING_ROOT_PATH_ID = '__root__' as const\n\n/**\n * Normalized group node. This is the internal contract between a\n * {@link MVT_ServerGroupingProvider} and the table — the original backend\n * response shape is preserved in `original` and never dictated.\n */\nexport interface MVT_ServerGroupNode<TGroup = unknown> {\n id: string\n label: string\n value?: unknown\n count?: number\n original: TGroup\n meta?: Record<string, unknown>\n hasChildren?: boolean\n}\n\n/** Normalized page of group nodes. */\nexport interface MVT_ServerGroupPage<TGroup = unknown> {\n groups: MVT_ServerGroupNode<TGroup>[]\n rowCount: number\n}\n\n/** Normalized page of final records. */\nexport interface MVT_ServerRecordPage<TData> {\n rows: TData[]\n rowCount: number\n}\n\n/**\n * One resolved ancestor group on the path to the level being loaded. Preserves\n * both the normalized node data and the `original` backend group object so a\n * provider can construct any follow-up request (scope/domain/cursor/…).\n */\nexport interface MVT_ServerGroupPathItem<TGroup = unknown> {\n id: string\n field: string\n depth: number\n label: string\n value?: unknown\n original: TGroup\n meta?: Record<string, unknown>\n}\n\n/**\n * Pagination state for one group path. Extends the standard offset model with\n * an opaque `cursor` slot for cursor-based backends — the provider decides\n * whether `pageIndex * pageSize` or `cursor` drives the actual request.\n */\nexport interface MVT_ServerPageState extends MVT_PaginationState {\n cursor?: unknown\n}\n\nexport type MVT_ServerGroupingSortingMode = 'independent' | 'records-only' | 'shared'\n\nexport type MVT_ServerGroupingFilteringMode = 'independent' | 'records-only' | 'shared'\n\n/** Common request context shared by group and record requests. */\nexport interface MVT_ServerGroupingBaseRequest<TGroup = unknown> {\n /** All active group-by field identifiers (opaque strings, e.g. `'createdAt:month'`). */\n grouping: string[]\n /** Zero-based depth of the level being loaded. */\n depth: number\n /** Stable path id of the level being loaded. */\n pathId: MVT_ServerGroupPathId\n /** Every resolved ancestor group, outermost first. */\n parentGroups: MVT_ServerGroupPathItem<TGroup>[]\n /** The direct parent group (`parentGroups.at(-1)`), if any. */\n parentGroup?: MVT_ServerGroupPathItem<TGroup>\n pagination: MVT_ServerPageState\n sorting: MVT_SortingState\n columnFilters: MVT_ColumnFiltersState\n globalFilter: unknown\n /** Aborted when the request becomes obsolete. Forward it to your HTTP client. */\n signal: AbortSignal\n table: MVT_TableInstance<any>\n}\n\n/** Request context for loading one page of child groups. */\nexport interface MVT_ServerGroupRequest<\n TGroup = unknown,\n> extends MVT_ServerGroupingBaseRequest<TGroup> {\n /** The group-by field identifier for the level being loaded (`grouping[depth]`). */\n groupingField: string\n}\n\n/** Request context for loading one page of final records. */\nexport type MVT_ServerRecordRequest<TGroup = unknown> = MVT_ServerGroupingBaseRequest<TGroup>\n\n/** Context given to the per-group adapter functions of a provider. */\nexport interface MVT_ServerGroupingContext<TGroup = unknown> {\n field: string\n depth: number\n request: MVT_ServerGroupRequest<TGroup>\n}\n\n/**\n * A server-grouping provider loads and normalizes groups and records. It is\n * the only integration point with your backend — REST, GraphQL, RPC,\n * Elasticsearch aggregations, cursor APIs, … anything works, as\n * long as the adapter functions can map the response into the normalized\n * internal model. Use {@link createServerGroupingProvider} for less boilerplate.\n */\nexport interface MVT_ServerGroupingProvider<\n TData extends MVT_RowData = MVT_RowData,\n TGroup = unknown,\n TGroupResponse = unknown,\n TRecordResponse = unknown,\n> {\n /** Stable id of a group within its own level (never a row index). */\n getGroupId: (group: TGroup, context: MVT_ServerGroupingContext<TGroup>) => string\n getGroupLabel: (group: TGroup, context: MVT_ServerGroupingContext<TGroup>) => string\n /** Raw group value. Defaults to the group object itself. */\n getGroupValue?: (group: TGroup, context: MVT_ServerGroupingContext<TGroup>) => unknown\n /** Optional record count shown next to the label. */\n getGroupCount?: (group: TGroup, context: MVT_ServerGroupingContext<TGroup>) => number | undefined\n /** Optional metadata (aggregates, scopes, cursors, …). Defaults to `{}`. */\n getGroupMeta?: (\n group: TGroup,\n context: MVT_ServerGroupingContext<TGroup>,\n ) => Record<string, unknown>\n /** Whether the group can be expanded. Defaults to `true`. */\n hasGroupChildren?: (group: TGroup, context: MVT_ServerGroupingContext<TGroup>) => boolean\n\n loadGroups: (request: MVT_ServerGroupRequest<TGroup>) => Promise<TGroupResponse>\n getGroups: (response: TGroupResponse) => TGroup[]\n getGroupRowCount: (response: TGroupResponse) => number\n\n loadRecords: (request: MVT_ServerRecordRequest<TGroup>) => Promise<TRecordResponse>\n getRecords: (response: TRecordResponse) => TData[]\n getRecordRowCount: (response: TRecordResponse) => number\n\n /** Stable record row id. Falls back to the table's `getRowId`, then to a path-scoped index. */\n getRowId?: (row: TData) => string\n\n /**\n * Customize the cache key for a request. The returned parts are appended to\n * the built-in key (path id, grouping, depth, pagination, sorting, filters).\n */\n getCacheKey?: (\n request: MVT_ServerGroupRequest<TGroup> | MVT_ServerRecordRequest<TGroup>,\n ) => unknown[]\n}\n\n/** Per-path request lifecycle state. */\nexport interface MVT_ServerGroupingRequestState {\n isLoading: boolean\n isFetching: boolean\n error: unknown\n updatedAt?: number\n}\n\n/** Loaded content + query state of one group path. */\nexport interface MVT_ServerGroupingPathState<\n TData extends MVT_RowData = MVT_RowData,\n TGroup = unknown,\n> extends MVT_ServerGroupingRequestState {\n pathId: MVT_ServerGroupPathId\n depth: number\n /** `'groups'` for intermediate levels, `'records'` for the final level. */\n kind: 'groups' | 'records'\n pagination: MVT_ServerPageState\n /** Per-path sorting override (see `sortingMode`). */\n sorting?: MVT_SortingState\n /** Per-path column filters override (see `filteringMode`). */\n columnFilters?: MVT_ColumnFiltersState\n /** Per-path global filter override (see `filteringMode`). */\n globalFilter?: unknown\n rowCount: number\n groups?: MVT_ServerGroupNode<TGroup>[]\n rows?: TData[]\n}\n\nexport type MVT_ServerGroupingExpandedState = Record<MVT_ServerGroupPathId, boolean>\n\n/** Aggregated server-grouping state, returned by `table.getServerGroupingState()`. */\nexport interface MVT_ServerGroupingState<\n TData extends MVT_RowData = MVT_RowData,\n TGroup = unknown,\n> {\n enabled: boolean\n grouping: string[]\n expanded: MVT_ServerGroupingExpandedState\n paths: Record<MVT_ServerGroupPathId, MVT_ServerGroupingPathState<TData, TGroup>>\n}\n\nexport interface MVT_ServerGroupingCacheOptions {\n enabled?: boolean\n /** Milliseconds a cached page is served without refetching. @default 0 */\n staleTime?: number\n /** Milliseconds before an unused cached page is garbage collected. @default 300_000 */\n gcTime?: number\n /** Keep loaded content of collapsed groups. @default true */\n keepCollapsedGroups?: boolean\n}\n\nexport interface MVT_ServerGroupingPaginationOptions {\n enabled?: boolean\n /**\n * Fixed page size applied to every group and record level. Nested levels\n * cannot change their page size at runtime — nested pagination bars show\n * only page navigation and row-count info.\n *\n * @default 10 (or `serverGrouping.initialPageSize`)\n */\n defaultPageSize?: number\n /**\n * Render an inline pagination row for the root level inside the table body.\n * Defaults to `false` because the root level is paginated by the regular\n * bottom toolbar (`positionPagination`, `mantinePaginationProps`), exactly\n * like an ungrouped server-side table; it defaults to `true` when the\n * toolbar pagination is turned off.\n */\n showAtRoot?: boolean\n /** @default true */\n showForGroups?: boolean\n /** @default true */\n showForRecords?: boolean\n /** Extra Mantine props for the nested prev/next `ActionIcon`s (merged safely). */\n mantineActionIconProps?: Record<string, any>\n}\n\n/** Request context of `selection.loadAllMatchingRowIds`. */\nexport interface MVT_ServerGroupingSelectAllRequest {\n grouping: string[]\n sorting: MVT_SortingState\n columnFilters: MVT_ColumnFiltersState\n globalFilter: unknown\n table: MVT_TableInstance<any>\n}\n\n/**\n * \"Select all matching records\" state.\n *\n * Selecting a filtered dataset of millions of rows must never materialize row\n * ids. Instead the selection flips to *exclude mode*: it means \"everything\n * matching the current query\", and only the rows the user explicitly unchecks\n * afterwards are tracked. Bulk actions then send the query + exclusions.\n */\nexport interface MVT_ServerGroupingSelectAllState {\n /** Whether \"all matching records\" is active (exclude mode). */\n active: boolean\n /** Row ids explicitly deselected while exclude mode is active. */\n excludedRowIds: string[]\n}\n\n/**\n * What a bulk action should send to the server.\n *\n * - `'include'`: act on `rowIds` (the classic, explicit selection).\n * - `'exclude'`: act on every record matching `grouping`/`sorting`/filters,\n * except `excludedRowIds`. No id list is ever transferred.\n */\nexport interface MVT_ServerGroupingSelectionPayload {\n mode: 'exclude' | 'include'\n rowIds: string[]\n excludedRowIds: string[]\n grouping: string[]\n sorting: MVT_SortingState\n columnFilters: MVT_ColumnFiltersState\n globalFilter: unknown\n}\n\n/** Header-checkbox / selection state of a server-grouped table. */\nexport interface MVT_ServerGroupingSelectionSummary {\n /** Every selectable loaded record inside expanded groups is selected. */\n isAll: boolean\n /** Some — but not all — are selected (indeterminate header checkbox). */\n isSome: boolean\n /** How many loaded records are currently selectable. */\n selectableCount: number\n /** How many of those are selected. */\n selectedCount: number\n /** Explicitly selected row ids (empty in exclude mode). */\n selectedRowIds: string[]\n /** `'exclude'` while \"all matching records\" is active. */\n mode: 'exclude' | 'include'\n /** Convenience flag: `mode === 'exclude'`. */\n isSelectAllMatching: boolean\n /** Rows unchecked after \"select all matching records\". */\n excludedRowIds: string[]\n}\n\nexport interface MVT_ServerGroupingSelectionOptions {\n /**\n * Deselect a group's records when it is collapsed.\n *\n * Defaults to `false`: collapsing is a view operation, so selections survive\n * it (the toolbar alert keeps counting them, and unchecking the header\n * checkbox clears everything). Set to `true` for a strictly\n * \"what you see is what is selected\" behavior.\n *\n * @default false\n */\n clearOnCollapse?: boolean\n /**\n * Show a built-in \"select all matching records\" action in the toolbar alert\n * banner once every loaded record is selected.\n */\n enableSelectAllMatching?: boolean\n /**\n * How \"select all matching records\" represents the selection.\n *\n * - `'query'` (default, recommended): flips to exclude mode — no request, no\n * ids transferred, works with millions of rows. Send\n * `table.getServerGroupingSelectionPayload()` to your bulk endpoint.\n * - `'ids'`: materializes every matching row id through\n * {@link MVT_ServerGroupingSelectionOptions.loadAllMatchingRowIds}. Only\n * suitable for small, bounded datasets.\n *\n * @default 'query'\n */\n selectAllMode?: 'ids' | 'query'\n /**\n * Resolve every row id matching the current filters. Only used (and\n * required) when `selectAllMode: 'ids'`.\n */\n loadAllMatchingRowIds?: (request: MVT_ServerGroupingSelectAllRequest) => Promise<string[]>\n}\n\n/** A column offered by the built-in group-by toolbar control. */\nexport interface MVT_ServerGroupableColumn {\n /** Grouping field id sent to the provider. */\n id: string\n /** Display label (column header, or the raw id for custom descriptors). */\n label: string\n}\n\n/** Scoped argument of the group-by control slot / render callback. */\nexport interface MVT_ServerGroupingGroupByContext {\n /** Active grouping fields, outermost first. */\n grouping: string[]\n /** Columns/fields the user may group by. */\n groupableColumns: MVT_ServerGroupableColumn[]\n addGroup: (field: string) => void\n removeGroup: (field: string) => void\n /** Move an active level up (`-1`) or down (`1`). */\n moveGroup: (field: string, direction: -1 | 1) => void\n clearGrouping: () => void\n table: MVT_TableInstance<any>\n}\n\n/**\n * Built-in group-by toolbar control. Rendered in the top toolbar whenever\n * server grouping is active and grouping is driven by the table's `grouping`\n * state (with a static `serverGrouping.grouping` array the control is hidden\n * unless `enabled: true` is forced, since it could not change anything).\n */\nexport interface MVT_ServerGroupingGroupByOptions {\n /** @default true */\n enabled?: boolean\n /** Show the per-level reorder arrows. @default true */\n allowReorder?: boolean\n /**\n * Also offer \"Group by\" / \"Ungroup by\" / \"Clear grouping\" in each groupable\n * column's action menu.\n *\n * @default true\n */\n showInColumnActions?: boolean\n /** Show the \"clear grouping\" action. @default true */\n allowClearAll?: boolean\n /**\n * Explicit whitelist of groupable field ids (may include custom descriptors\n * like `'createdAt:month'`). When omitted, every `data` column whose\n * `enableGrouping` is not `false` is offered.\n */\n columns?: string[]\n /** Resolve the display label of a field. Defaults to the column header, or the raw id. */\n getFieldLabel?: (field: string, table: MVT_TableInstance<any>) => string\n /**\n * Replace the entire default control. A `#serverGroupByControl` slot takes\n * precedence over this callback; both receive the same context.\n */\n renderControl?: (context: MVT_ServerGroupingGroupByContext) => MVT_Node\n /** Extra Mantine props for the \"Group by\" `Button` (merged safely). */\n mantineButtonProps?: Record<string, any>\n /** Extra Mantine props for the `Menu` (merged safely). */\n mantineMenuProps?: Record<string, any>\n /** Extra Mantine props for each active-level `Pill` (merged safely). */\n mantinePillProps?:\n | ((context: { field: string; index: number }) => Record<string, any>)\n | Record<string, any>\n}\n\n/** Scoped argument of group-row render callbacks and slots. */\nexport interface MVT_ServerGroupRowContext<TGroup = unknown> {\n group: MVT_ServerGroupNode<TGroup>\n field: string\n depth: number\n pathId: MVT_ServerGroupPathId\n parentGroups: MVT_ServerGroupPathItem<TGroup>[]\n isExpanded: boolean\n table: MVT_TableInstance<any>\n}\n\n/** Scoped argument of per-column aggregate cell rendering. */\nexport interface MVT_ServerGroupCellContext<\n TGroup = unknown,\n> extends MVT_ServerGroupRowContext<TGroup> {\n column: MVT_Column<any>\n value: unknown\n}\n\ntype MVT_ServerGroupingRenderCallback<TContext, TResult> = {\n bivarianceHack(context: TContext): TResult\n}['bivarianceHack']\n\n/** Column-level options for resolving/rendering server aggregate values in group rows. */\nexport interface MVT_ColumnServerGroupingOptions<TGroup = unknown> {\n /** Resolve this column's value for a group row (commonly from `group.meta`). */\n getValue?: MVT_ServerGroupingRenderCallback<\n Omit<MVT_ServerGroupCellContext<TGroup>, 'value'>,\n unknown\n >\n /** Render the resolved value. Receives the full cell context including `value`. */\n Cell?:\n | Component\n | MVT_ServerGroupingRenderCallback<MVT_ServerGroupCellContext<TGroup>, VNodeChild>\n /** Show this column's aggregate cell in group rows. @default true when `getValue` is set */\n visible?: boolean\n}\n\nexport interface MVT_ServerGroupingEventPayload<TGroup = unknown> {\n pathId: MVT_ServerGroupPathId\n path: MVT_ServerGroupPathItem<TGroup>[]\n}\n\nexport interface MVT_ServerGroupingOptions<\n TData extends MVT_RowData = MVT_RowData,\n TGroup = unknown,\n TGroupResponse = unknown,\n TRecordResponse = unknown,\n> {\n /** @default true when a provider is set */\n enabled?: boolean\n /**\n * Group-by field identifiers, outermost first. Treated as opaque strings —\n * custom descriptors like `'createdAt:month'` are passed through to the\n * provider untouched. When omitted, the table's regular `grouping` state is\n * used, so `state.grouping` / `onGroupingChange` keep working.\n */\n grouping?: string[]\n /**\n * Initial grouping fields used when neither `serverGrouping.grouping` nor a\n * controlled/initial table `grouping` state is provided. An empty or omitted\n * value starts the table in normal (ungrouped) server-side mode — the user\n * can still add levels from the group-by toolbar. Controlled grouping state\n * always takes precedence.\n */\n defaultGrouping?: string[]\n provider: MVT_ServerGroupingProvider<TData, TGroup, TGroupResponse, TRecordResponse>\n\n /** Initial page size for every level. @default 10 */\n initialPageSize?: number\n pagination?: MVT_ServerGroupingPaginationOptions\n /** Built-in group-by toolbar control. Enabled by default. */\n groupBy?: MVT_ServerGroupingGroupByOptions\n /** Row-selection behavior for grouped tables. */\n selection?: MVT_ServerGroupingSelectionOptions\n cache?: MVT_ServerGroupingCacheOptions\n\n /** @default 'independent' */\n sortingMode?: MVT_ServerGroupingSortingMode\n /** @default 'shared' */\n filteringMode?: MVT_ServerGroupingFilteringMode\n\n /** Reset expansion when grouping fields change. @default true */\n resetExpansionOnGroupingChange?: boolean\n\n renderGroupLabel?: (context: MVT_ServerGroupRowContext<TGroup>) => MVT_Node\n renderGroupCount?: (context: MVT_ServerGroupRowContext<TGroup>) => MVT_Node\n renderGroupError?: (context: {\n error: unknown\n pathId: MVT_ServerGroupPathId\n retry: () => void\n table: MVT_TableInstance<any>\n }) => MVT_Node\n renderGroupEmpty?: (context: {\n field?: string\n parentGroup?: MVT_ServerGroupPathItem<TGroup>\n pathId: MVT_ServerGroupPathId\n table: MVT_TableInstance<any>\n }) => MVT_Node\n renderGroupLoading?: (context: {\n depth: number\n pathId: MVT_ServerGroupPathId\n table: MVT_TableInstance<any>\n }) => MVT_Node\n\n mantineGroupRowProps?:\n | ((\n context: MVT_ServerGroupRowContext<TGroup>,\n ) => HTMLPropsRef<HTMLTableRowElement> & TableTrProps)\n | (HTMLPropsRef<HTMLTableRowElement> & TableTrProps)\n\n onGroupExpand?: (\n payload: { group: MVT_ServerGroupNode<TGroup> } & MVT_ServerGroupingEventPayload<TGroup>,\n ) => void\n onGroupCollapse?: (\n payload: { group: MVT_ServerGroupNode<TGroup> } & MVT_ServerGroupingEventPayload<TGroup>,\n ) => void\n onGroupLoadStart?: (\n payload: {\n request: MVT_ServerGroupRequest<TGroup> | MVT_ServerRecordRequest<TGroup>\n } & MVT_ServerGroupingEventPayload<TGroup>,\n ) => void\n onGroupLoadSuccess?: (\n payload: {\n groups: MVT_ServerGroupNode<TGroup>[]\n request: MVT_ServerGroupRequest<TGroup>\n response: TGroupResponse\n } & MVT_ServerGroupingEventPayload<TGroup>,\n ) => void\n onRecordLoadSuccess?: (\n payload: {\n request: MVT_ServerRecordRequest<TGroup>\n response: TRecordResponse\n rows: TData[]\n } & MVT_ServerGroupingEventPayload<TGroup>,\n ) => void\n onError?: (\n payload: {\n error: unknown\n request: MVT_ServerGroupRequest<TGroup> | MVT_ServerRecordRequest<TGroup>\n } & MVT_ServerGroupingEventPayload<TGroup>,\n ) => void\n}\n\n/** Server-grouping methods exposed on the table instance. */\nexport interface MVT_ServerGroupingTableApi<TData extends MVT_RowData = MVT_RowData> {\n getServerGroupingState: () => MVT_ServerGroupingState<TData>\n getServerGroupingPathState: (\n pathId: MVT_ServerGroupPathId,\n ) => MVT_ServerGroupingPathState<TData> | undefined\n expandServerGroup: (pathId: MVT_ServerGroupPathId) => void\n collapseServerGroup: (pathId: MVT_ServerGroupPathId) => void\n toggleServerGroup: (pathId: MVT_ServerGroupPathId) => void\n reloadServerGrouping: () => void\n reloadServerGroupingPath: (pathId: MVT_ServerGroupPathId) => void\n invalidateServerGrouping: () => void\n invalidateServerGroupingPath: (pathId: MVT_ServerGroupPathId) => void\n resetServerGroupingState: () => void\n setServerGroupingExpanded: (\n updaterOrValue:\n | ((prev: MVT_ServerGroupingExpandedState) => MVT_ServerGroupingExpandedState)\n | MVT_ServerGroupingExpandedState,\n ) => void\n setServerGroupingPagination: (\n pathId: MVT_ServerGroupPathId,\n pagination: ((prev: MVT_ServerPageState) => MVT_ServerPageState) | Partial<MVT_ServerPageState>,\n ) => void\n setServerGroupingSorting: (\n pathId: MVT_ServerGroupPathId,\n sorting: ((prev: MVT_SortingState) => MVT_SortingState) | MVT_SortingState,\n ) => void\n setServerGroupingColumnFilters: (\n pathId: MVT_ServerGroupPathId,\n columnFilters:\n | ((prev: MVT_ColumnFiltersState) => MVT_ColumnFiltersState)\n | MVT_ColumnFiltersState,\n ) => void\n setServerGroupingGlobalFilter: (pathId: MVT_ServerGroupPathId, globalFilter: unknown) => void\n /** Header-checkbox / selection state over loaded records in expanded groups. */\n getServerGroupingSelectionSummary: () => MVT_ServerGroupingSelectionSummary\n /** Select or deselect every loaded record inside expanded groups. */\n toggleAllServerGroupingRecordsSelected: (value?: boolean) => void\n /**\n * Select every record matching the current filters. With the default\n * `selectAllMode: 'query'` this is synchronous and transfers nothing.\n */\n selectAllMatchingServerGroupingRecords: () => Promise<void>\n /** Raw \"all matching\" state (exclude mode + its exclusions). */\n getServerGroupingSelectAllState: () => MVT_ServerGroupingSelectAllState\n setServerGroupingSelectAllState: (\n updaterOrValue:\n | ((prev: MVT_ServerGroupingSelectAllState) => MVT_ServerGroupingSelectAllState)\n | MVT_ServerGroupingSelectAllState,\n ) => void\n /** Everything a bulk action needs to send to the server. */\n getServerGroupingSelectionPayload: () => MVT_ServerGroupingSelectionPayload\n}\n","export const parseFromValuesOrFunc = <T, U>(\n fn: ((arg: U) => T) | T | undefined,\n arg: U,\n): T | undefined => (fn instanceof Function ? fn(arg) : fn)\n","import type { MVT_Row, MVT_RowData, MVT_TableInstance } from '../types'\nimport { parseFromValuesOrFunc } from '../utils/utils'\nimport type {\n MVT_ServerGroupingSelectionPayload,\n MVT_ServerGroupingSelectionSummary,\n} from './serverGrouping.types'\nimport type { MVT_ServerGroupingManager } from './useMVT_ServerGrouping'\n\n/** Any MVT table instance — selection helpers never depend on the row type. */\ntype AnyTable = MVT_TableInstance<any>\n\n/** The server-grouping engine of a table, when server grouping is active. */\nexport const getServerGroupingManager = (\n table: AnyTable,\n): MVT_ServerGroupingManager<MVT_RowData> | undefined =>\n (table as any)._serverGrouping as MVT_ServerGroupingManager<MVT_RowData> | undefined\n\n/**\n * Record rows that the user may currently select: loaded records inside\n * expanded groups only (never group rows, never collapsed or unloaded\n * groups), filtered by `enableRowSelection`.\n */\nexport const getServerGroupingSelectableRows = (table: AnyTable): MVT_Row<MVT_RowData>[] => {\n const manager = getServerGroupingManager(table)\n if (!manager) return []\n const { enableRowSelection } = table.options\n return manager\n .getVisibleRecordRows()\n .filter((row) => parseFromValuesOrFunc(enableRowSelection, row) !== false)\n}\n\n/** Whether one record row is selected, honoring exclude mode. */\nexport const isServerGroupingRecordSelected = (\n table: AnyTable,\n row: MVT_Row<MVT_RowData>,\n): boolean => {\n const selectAll = getServerGroupingManager(table)?.getSelectAll()\n if (selectAll?.active) return !selectAll.excludedRowIds.includes(row.id)\n return !!table.getState().rowSelection?.[row.id]\n}\n\n/**\n * Header-checkbox state for a server-grouped table.\n *\n * In *include* mode `isAll` means \"every selectable loaded record is\n * selected\". In *exclude* mode (\"all matching records\") the selection is a\n * query, so the checkbox is checked, and turns indeterminate as soon as the\n * user unchecks individual rows.\n */\nexport const getServerGroupingSelectionSummary = (\n table: AnyTable,\n): MVT_ServerGroupingSelectionSummary => {\n const rows = getServerGroupingSelectableRows(table)\n const selectAll = getServerGroupingManager(table)?.getSelectAll() ?? {\n active: false,\n excludedRowIds: [],\n }\n\n if (selectAll.active) {\n const excludedVisible = rows.filter((row) => selectAll.excludedRowIds.includes(row.id)).length\n return {\n excludedRowIds: selectAll.excludedRowIds,\n isAll: selectAll.excludedRowIds.length === 0,\n isSelectAllMatching: true,\n isSome: selectAll.excludedRowIds.length > 0,\n mode: 'exclude',\n selectableCount: rows.length,\n selectedCount: rows.length - excludedVisible,\n selectedRowIds: [],\n }\n }\n\n const rowSelection = table.getState().rowSelection ?? {}\n const selectedCount = rows.filter((row) => rowSelection[row.id]).length\n // Include selected ids whose groups have since collapsed.\n const selectedRowIds = Object.keys(rowSelection).filter((rowId) => rowSelection[rowId])\n const isAll = rows.length > 0 && selectedCount === rows.length\n return {\n excludedRowIds: [],\n isAll,\n isSelectAllMatching: false,\n // Keep off-screen selections visible through the indeterminate state.\n isSome: !isAll && selectedRowIds.length > 0,\n mode: 'include',\n selectableCount: rows.length,\n selectedCount,\n selectedRowIds,\n }\n}\n\n/**\n * Everything a bulk action needs to send to the server.\n *\n * In exclude mode this is the query plus the user's deselections — no row ids\n * are transferred, so it scales to millions of matching records.\n */\nexport const getServerGroupingSelectionPayload = (\n table: AnyTable,\n): MVT_ServerGroupingSelectionPayload => {\n const manager = getServerGroupingManager(table)\n const summary = getServerGroupingSelectionSummary(table)\n const tableState = table.getState()\n return {\n columnFilters: tableState.columnFilters ?? [],\n excludedRowIds: summary.excludedRowIds,\n globalFilter: tableState.globalFilter,\n grouping: manager?.getGroupingFields() ?? [],\n mode: summary.mode,\n rowIds: summary.selectedRowIds,\n sorting: tableState.sorting ?? [],\n }\n}\n\n/**\n * Header-checkbox toggle.\n *\n * - **Checking** selects every loaded record inside expanded groups. Records in\n * collapsed or unloaded groups are never implicitly selected.\n * - **Unchecking** clears the *entire* selection — including records whose\n * group was collapsed since, and everything added by \"select all matching\n * records\". Removing only the on-screen ids would leave invisible records\n * selected while the header checkbox reads unchecked.\n */\nexport const toggleAllServerGroupingRecordsSelected = (table: AnyTable, value?: boolean): void => {\n const manager = getServerGroupingManager(table)\n const summary = getServerGroupingSelectionSummary(table)\n const next = value ?? !(summary.isAll || summary.isSelectAllMatching)\n if (!next) {\n // Unchecking leaves exclude mode, so an all-matching selection never survives.\n manager?.setSelectAll({ active: false, excludedRowIds: [] })\n table.setRowSelection({})\n return\n }\n // Rechecking in exclude mode removes the corresponding exclusions.\n if (summary.isSelectAllMatching) {\n manager?.setSelectAll({ active: true, excludedRowIds: [] })\n return\n }\n const rows = getServerGroupingSelectableRows(table)\n table.setRowSelection((prev: Record<string, boolean>) => {\n const selection = { ...prev }\n rows.forEach((row) => {\n selection[row.id] = true\n })\n return selection\n })\n}\n\n/** Deselect the given record ids (used by `selection.clearOnCollapse`). */\nexport const deselectServerGroupingRecords = (table: AnyTable, rowIds: string[]): void => {\n if (!rowIds.length) return\n table.setRowSelection((prev: Record<string, boolean>) => {\n const selection = { ...prev }\n rowIds.forEach((rowId) => delete selection[rowId])\n return selection\n })\n}\n\n/**\n * Toggle a single server-grouping record.\n *\n * Provider rows live outside the table's row model (`data` is empty), so\n * `row.toggleSelected()` — which resolves the row through `table.getRow()` —\n * would throw. Selection state is mutated directly instead.\n *\n * Supports shift-click range selection across the loaded records currently on\n * screen, matching the behavior of a regular MVT table.\n */\nexport const toggleServerGroupingRecordSelected = (\n table: AnyTable,\n row: MVT_Row<MVT_RowData>,\n value: boolean,\n options?: { batch?: boolean; lastSelectedRowId?: null | string },\n): void => {\n const manager = getServerGroupingManager(table)\n const rows = getServerGroupingSelectableRows(table)\n const targetIds = new Set<string>([row.id])\n\n if (options?.batch && options.lastSelectedRowId) {\n const lastIndex = rows.findIndex((candidate) => candidate.id === options.lastSelectedRowId)\n const currentIndex = rows.findIndex((candidate) => candidate.id === row.id)\n if (lastIndex !== -1 && currentIndex !== -1) {\n const [start, end] =\n lastIndex < currentIndex ? [lastIndex, currentIndex] : [currentIndex, lastIndex]\n for (let index = start; index <= end; index++) targetIds.add(rows[index].id)\n }\n }\n\n // Exclude mode tracks deselections instead of selections.\n const selectAll = manager?.getSelectAll()\n if (selectAll?.active) {\n const excluded = new Set(selectAll.excludedRowIds)\n targetIds.forEach((rowId) => {\n if (value) excluded.delete(rowId)\n else excluded.add(rowId)\n })\n manager!.setSelectAll({ active: true, excludedRowIds: [...excluded] })\n return\n }\n\n table.setRowSelection((prev: Record<string, boolean>) => {\n const selection = { ...prev }\n targetIds.forEach((rowId) => {\n if (value) selection[rowId] = true\n else delete selection[rowId]\n })\n return selection\n })\n}\n\n/**\n * Opt-in \"select all matching records\" action: asks the consumer-provided\n * `serverGrouping.selection.loadAllMatchingRowIds` for every row id matching\n * the current filters (across all groups and pages) and selects them.\n */\nexport const selectAllMatchingServerGroupingRecords = async (table: AnyTable): Promise<void> => {\n const manager = getServerGroupingManager(table)\n if (!manager) return\n const selectionOptions = manager.options.selection\n\n // Query mode transfers no ids and scales independently of the result count.\n if ((selectionOptions?.selectAllMode ?? 'query') === 'query') {\n table.setRowSelection({})\n manager.setSelectAll({ active: true, excludedRowIds: [] })\n return\n }\n\n // Explicit-id mode is intended only for small, bounded datasets.\n const loadAllMatchingRowIds = selectionOptions?.loadAllMatchingRowIds\n if (!loadAllMatchingRowIds) return\n const tableState = table.getState()\n const rowIds = await loadAllMatchingRowIds({\n columnFilters: tableState.columnFilters ?? [],\n globalFilter: tableState.globalFilter,\n grouping: manager.getGroupingFields(),\n sorting: tableState.sorting ?? [],\n table,\n })\n table.setRowSelection((prev: Record<string, boolean>) => {\n const selection = { ...prev }\n rowIds.forEach((rowId) => {\n selection[rowId] = true\n })\n return selection\n })\n}\n","import {\n MVT_SERVER_GROUPING_ROOT_PATH_ID,\n type MVT_ServerGroupPathId,\n} from './serverGrouping.types'\n\n/**\n * Escape a path segment part so group ids may safely contain the reserved\n * characters `/` and `:` (and `%`, used for escaping).\n */\nexport const escapeServerGroupPathPart = (part: string): string =>\n part.replace(/%/g, '%25').replace(/:/g, '%3A').replace(/\\//g, '%2F')\n\nexport const unescapeServerGroupPathPart = (part: string): string =>\n part.replace(/%2F/g, '/').replace(/%3A/g, ':').replace(/%25/g, '%')\n\n/**\n * Build the stable path id of a group's content, e.g.\n * `createServerGroupPathId('__root__', 'country', 'BH')` → `'country:BH'` and\n * `createServerGroupPathId('country:BH', 'salesperson', '42')` →\n * `'country:BH/salesperson:42'`. Never derived from row indexes.\n */\nexport const createServerGroupPathId = (\n parentPathId: MVT_ServerGroupPathId,\n field: string,\n groupId: string,\n): MVT_ServerGroupPathId => {\n const segment = `${escapeServerGroupPathPart(field)}:${escapeServerGroupPathPart(groupId)}`\n return parentPathId === MVT_SERVER_GROUPING_ROOT_PATH_ID ? segment : `${parentPathId}/${segment}`\n}\n\nexport interface MVT_ServerGroupPathSegment {\n field: string\n groupId: string\n}\n\n/** Parse a path id back into its `{ field, groupId }` segments. Root → `[]`. */\nexport const parseServerGroupPathId = (\n pathId: MVT_ServerGroupPathId,\n): MVT_ServerGroupPathSegment[] => {\n if (pathId === MVT_SERVER_GROUPING_ROOT_PATH_ID) return []\n return pathId.split('/').map((segment) => {\n const separatorIndex = segment.indexOf(':')\n return {\n field: unescapeServerGroupPathPart(segment.slice(0, separatorIndex)),\n groupId: unescapeServerGroupPathPart(segment.slice(separatorIndex + 1)),\n }\n })\n}\n\n/** Depth of the content addressed by a path id (root → 0). */\nexport const getServerGroupPathDepth = (pathId: MVT_ServerGroupPathId): number =>\n pathId === MVT_SERVER_GROUPING_ROOT_PATH_ID ? 0 : pathId.split('/').length\n\n/** Whether `pathId` equals `ancestorPathId` or is nested anywhere below it. */\nexport const isServerGroupPathOrDescendant = (\n pathId: MVT_ServerGroupPathId,\n ancestorPathId: MVT_ServerGroupPathId,\n): boolean =>\n ancestorPathId === MVT_SERVER_GROUPING_ROOT_PATH_ID ||\n pathId === ancestorPathId ||\n pathId.startsWith(`${ancestorPathId}/`)\n\n/** JSON replacer producing deterministic output for plain objects. */\nconst stableReplacer = (_key: string, value: unknown): unknown => {\n if (value && typeof value === 'object' && !Array.isArray(value)) {\n return Object.keys(value as Record<string, unknown>)\n .sort()\n .reduce<Record<string, unknown>>((acc, key) => {\n acc[key] = (value as Record<string, unknown>)[key]\n return acc\n }, {})\n }\n return value\n}\n\n/**\n * Serialize cache key parts deterministically (object key order does not\n * affect the result).\n */\nexport const serializeServerGroupingCacheKey = (parts: unknown[]): string =>\n JSON.stringify(parts, stableReplacer)\n\n/** Whether an error was caused by request cancellation (never shown as an error). */\nexport const isAbortError = (error: unknown): boolean =>\n error instanceof DOMException\n ? error.name === 'AbortError'\n : (error as { name?: string } | null | undefined)?.name === 'AbortError'\n","import { getCurrentScope, onScopeDispose, ref, watch } from 'vue'\n\nimport { createRow as createTanstackRow } from '@tanstack/vue-table'\n\nimport type {\n MVT_ColumnFiltersState,\n MVT_Row,\n MVT_RowData,\n MVT_SortingState,\n MVT_TableInstance,\n MVT_Updater,\n} from '../types'\nimport {\n MVT_SERVER_GROUPING_ROOT_PATH_ID,\n type MVT_ServerGroupNode,\n type MVT_ServerGroupPathId,\n type MVT_ServerGroupPathItem,\n type MVT_ServerGroupRequest,\n type MVT_ServerGroupingExpandedState,\n type MVT_ServerGroupingOptions,\n type MVT_ServerGroupingPathState,\n type MVT_ServerGroupingSelectAllState,\n type MVT_ServerGroupingState,\n type MVT_ServerPageState,\n type MVT_ServerRecordRequest,\n} from './serverGrouping.types'\nimport {\n createServerGroupPathId,\n getServerGroupPathDepth,\n isAbortError,\n isServerGroupPathOrDescendant,\n serializeServerGroupingCacheKey,\n} from './serverGrouping.utils'\nimport { deselectServerGroupingRecords } from './serverGroupingSelection'\n\ninterface CacheEntry {\n pathId: MVT_ServerGroupPathId\n payload: Pick<MVT_ServerGroupingPathState, 'groups' | 'kind' | 'rowCount' | 'rows'>\n updatedAt: number\n}\n\n/**\n * Internal server-grouping engine. Owns per-path query state (pagination,\n * sorting, filters, loading, errors), lazy loading, request cancellation,\n * stale-response protection, the optional cache, and expansion state.\n *\n * Created by `useMVT_TableInstance` when `serverGrouping.provider` is set; the\n * public surface is exposed through the `table.*ServerGrouping*` instance\n * methods and the `<MantineVueTable>` built-in rendering.\n */\nexport interface MVT_ServerGroupingManager<TData extends MVT_RowData = MVT_RowData> {\n options: MVT_ServerGroupingOptions<TData, any, any, any>\n getGroupingFields: () => string[]\n getExpanded: () => MVT_ServerGroupingExpandedState\n setExpanded: (updater: MVT_Updater<MVT_ServerGroupingExpandedState>) => void\n /** \"All matching records\" (exclude-mode) selection state. */\n getSelectAll: () => MVT_ServerGroupingSelectAllState\n setSelectAll: (updater: MVT_Updater<MVT_ServerGroupingSelectAllState>) => void\n isExpanded: (pathId: MVT_ServerGroupPathId) => boolean\n getState: () => MVT_ServerGroupingState<TData>\n getPathState: (pathId: MVT_ServerGroupPathId) => MVT_ServerGroupingPathState<TData> | undefined\n /** Table rows of one loaded record page (created once, cached per page). */\n getRecordRows: (pathId: MVT_ServerGroupPathId) => MVT_Row<TData>[]\n /** All loaded record rows inside currently expanded groups. */\n getVisibleRecordRows: () => MVT_Row<TData>[]\n getNode: (pathId: MVT_ServerGroupPathId) => MVT_ServerGroupNode | undefined\n getParentItems: (pathId: MVT_ServerGroupPathId) => MVT_ServerGroupPathItem[]\n expand: (pathId: MVT_ServerGroupPathId) => void\n collapse: (pathId: MVT_ServerGroupPathId) => void\n toggle: (pathId: MVT_ServerGroupPathId) => void\n ensureLoaded: (pathId: MVT_ServerGroupPathId) => void\n reload: (pathId?: MVT_ServerGroupPathId) => void\n invalidate: (pathId?: MVT_ServerGroupPathId) => void\n retry: (pathId: MVT_ServerGroupPathId) => void\n reset: () => void\n setPagination: (\n pathId: MVT_ServerGroupPathId,\n updater: ((prev: MVT_ServerPageState) => MVT_ServerPageState) | Partial<MVT_ServerPageState>,\n ) => void\n setSorting: (pathId: MVT_ServerGroupPathId, updater: MVT_Updater<MVT_SortingState>) => void\n setColumnFilters: (\n pathId: MVT_ServerGroupPathId,\n updater: MVT_Updater<MVT_ColumnFiltersState>,\n ) => void\n setGlobalFilter: (pathId: MVT_ServerGroupPathId, value: unknown) => void\n}\n\nexport const createMVT_ServerGroupingManager = <TData extends MVT_RowData>(\n table: MVT_TableInstance<TData>,\n /**\n * Reader for the user-controlled `state.serverGroupingExpanded` slice.\n * Injected by `useMVT_TableInstance` to avoid reading back the merged state\n * object (which would recurse); defaults to reading `table.options.state`.\n */\n controlledExpandedReader?: () => MVT_ServerGroupingExpandedState | undefined,\n /** Same, for the controlled `state.serverGroupingSelectAll` slice. */\n controlledSelectAllReader?: () => MVT_ServerGroupingSelectAllState | undefined,\n): MVT_ServerGroupingManager<TData> | undefined => {\n const serverGroupingOptions = table.options.serverGrouping\n if (!serverGroupingOptions?.provider || serverGroupingOptions.enabled === false) {\n return undefined\n }\n const options = serverGroupingOptions as MVT_ServerGroupingOptions<TData, any, any, any>\n const provider = options.provider\n const sortingMode = options.sortingMode ?? 'independent'\n const filteringMode = options.filteringMode ?? 'shared'\n const cacheOptions = {\n enabled: options.cache?.enabled ?? false,\n gcTime: options.cache?.gcTime ?? 300_000,\n keepCollapsedGroups: options.cache?.keepCollapsedGroups ?? true,\n staleTime: options.cache?.staleTime ?? 0,\n }\n const configuredPageSize = options.pagination?.defaultPageSize ?? options.initialPageSize ?? 10\n let defaultPageSize = configuredPageSize\n if (!Number.isInteger(configuredPageSize) || configuredPageSize <= 0) {\n // oxlint-disable-next-line no-console\n console.warn(\n `[mantine-vue-table] serverGrouping page size ${JSON.stringify(configuredPageSize)} ` +\n 'is invalid — expected a positive integer. Falling back to 10.',\n )\n defaultPageSize = 10\n }\n\n const pathStates = ref<Record<MVT_ServerGroupPathId, MVT_ServerGroupingPathState<TData>>>({})\n const internalExpanded = ref<MVT_ServerGroupingExpandedState>(\n (table.options.initialState as any)?.serverGroupingExpanded ?? {},\n )\n const internalSelectAll = ref<MVT_ServerGroupingSelectAllState>(\n (table.options.initialState as any)?.serverGroupingSelectAll ?? {\n active: false,\n excludedRowIds: [],\n },\n )\n const nodeRegistry = new Map<MVT_ServerGroupPathId, MVT_ServerGroupPathItem>()\n const controllers = new Map<MVT_ServerGroupPathId, AbortController>()\n const versions = new Map<MVT_ServerGroupPathId, number>()\n const cache = new Map<string, CacheEntry>()\n const rowCache = new Map<MVT_ServerGroupPathId, { rows: MVT_Row<TData>[]; source: TData[] }>()\n\n const readControlledExpanded: () => MVT_ServerGroupingExpandedState | undefined =\n controlledExpandedReader ??\n (() =>\n (table.options.state as any)?.serverGroupingExpanded as\n | MVT_ServerGroupingExpandedState\n | undefined)\n\n const isExpandedControlled = readControlledExpanded() !== undefined\n\n const getExpanded = (): MVT_ServerGroupingExpandedState =>\n readControlledExpanded() ?? internalExpanded.value\n\n const setExpanded = (updater: MVT_Updater<MVT_ServerGroupingExpandedState>) => {\n const next = updater instanceof Function ? updater(getExpanded()) : updater\n const onChange = (table.options as any).onServerGroupingExpandedChange\n if (onChange) {\n onChange(next)\n }\n if (!isExpandedControlled) {\n internalExpanded.value = next\n }\n }\n\n const isExpanded = (pathId: MVT_ServerGroupPathId) => getExpanded()[pathId] === true\n\n // Falling back from an injected reader to `table.options.state` would recurse\n // through the merged state getter.\n const readControlledSelectAll: () => MVT_ServerGroupingSelectAllState | undefined =\n controlledSelectAllReader ??\n (() =>\n (table.options.state as any)?.serverGroupingSelectAll as\n | MVT_ServerGroupingSelectAllState\n | undefined)\n\n const isSelectAllControlled = readControlledSelectAll() !== undefined\n\n const getSelectAll = (): MVT_ServerGroupingSelectAllState =>\n readControlledSelectAll() ?? internalSelectAll.value\n\n const setSelectAll = (updater: MVT_Updater<MVT_ServerGroupingSelectAllState>) => {\n const next = updater instanceof Function ? updater(getSelectAll()) : updater\n ;(table.options as any).onServerGroupingSelectAllChange?.(next)\n if (!isSelectAllControlled) {\n internalSelectAll.value = next\n }\n }\n\n /** The \"all matching\" selection is tied to the query it was made under. */\n const resetSelectAll = () => {\n if (getSelectAll().active || getSelectAll().excludedRowIds.length) {\n setSelectAll({ active: false, excludedRowIds: [] })\n }\n }\n\n const getGroupingFields = (): string[] =>\n options.grouping ?? (table.getState().grouping as string[] | undefined) ?? []\n\n const setPathState = (\n pathId: MVT_ServerGroupPathId,\n state: MVT_ServerGroupingPathState<TData>,\n ) => {\n pathStates.value = { ...pathStates.value, [pathId]: state }\n }\n\n const getPathState = (pathId: MVT_ServerGroupPathId) => pathStates.value[pathId]\n\n /**\n * Table rows for one loaded record page. Rows are created (and cached) here\n * rather than in the renderer so row ids — and therefore selection state —\n * have a single source of truth shared by the body, the header checkbox, and\n * the public selection APIs.\n */\n const getRecordRows = (pathId: MVT_ServerGroupPathId): MVT_Row<TData>[] => {\n const state = getPathState(pathId)\n if (!state || state.kind !== 'records' || !state.rows) return []\n const cached = rowCache.get(pathId)\n if (cached && cached.source === state.rows) return cached.rows as MVT_Row<TData>[]\n const depth = getServerGroupPathDepth(pathId)\n const rows = state.rows.map((original, index) => {\n const rowId =\n provider.getRowId?.(original) ??\n table.options.getRowId?.(original, index, undefined as any) ??\n `${pathId}::${index}`\n return createTanstackRow(\n table as any,\n rowId,\n original,\n index,\n depth,\n ) as unknown as MVT_Row<TData>\n })\n rowCache.set(pathId, { rows, source: state.rows })\n return rows\n }\n\n /**\n * Every loaded record row that is currently visible — i.e. inside expanded\n * groups on the current pages. Records in collapsed or never-loaded groups\n * are deliberately excluded, so selection can never reach them.\n */\n const getVisibleRecordRows = (): MVT_Row<TData>[] =>\n Object.keys(pathStates.value)\n .filter((pathId) => pathStates.value[pathId]?.kind === 'records' && isPathVisible(pathId))\n .flatMap((pathId) => getRecordRows(pathId))\n\n const getNode = (pathId: MVT_ServerGroupPathId): MVT_ServerGroupNode | undefined => {\n const item = nodeRegistry.get(pathId)\n if (!item) return undefined\n return {\n count: undefined,\n id: item.id,\n label: item.label,\n meta: item.meta,\n original: item.original,\n value: item.value,\n ...(item as any).__node,\n }\n }\n\n const getParentItems = (pathId: MVT_ServerGroupPathId): MVT_ServerGroupPathItem[] => {\n if (pathId === MVT_SERVER_GROUPING_ROOT_PATH_ID) return []\n const segments = pathId.split('/')\n const items: MVT_ServerGroupPathItem[] = []\n for (let index = 0; index < segments.length; index++) {\n const ancestorPathId = segments.slice(0, index + 1).join('/')\n const item = nodeRegistry.get(ancestorPathId)\n if (item) items.push(item)\n }\n return items\n }\n\n const getEffectiveSorting = (\n pathId: MVT_ServerGroupPathId,\n kind: 'groups' | 'records',\n ): MVT_SortingState => {\n const override = getPathState(pathId)?.sorting\n if (override) return override\n const tableSorting = (table.getState().sorting as MVT_SortingState | undefined) ?? []\n if (sortingMode === 'shared') return tableSorting\n if (sortingMode === 'records-only') return kind === 'records' ? tableSorting : []\n // In independent mode, table-header sorting drives only the root level.\n return pathId === MVT_SERVER_GROUPING_ROOT_PATH_ID ? tableSorting : []\n }\n\n const getEffectiveFilters = (\n pathId: MVT_ServerGroupPathId,\n kind: 'groups' | 'records',\n ): { columnFilters: MVT_ColumnFiltersState; globalFilter: unknown } => {\n const state = getPathState(pathId)\n if (state?.columnFilters || state?.globalFilter !== undefined) {\n return {\n columnFilters: state.columnFilters ?? [],\n globalFilter: state.globalFilter,\n }\n }\n if (filteringMode === 'independent') {\n return { columnFilters: [], globalFilter: undefined }\n }\n if (filteringMode === 'records-only' && kind !== 'records') {\n return { columnFilters: [], globalFilter: undefined }\n }\n const tableState = table.getState()\n return {\n columnFilters: (tableState.columnFilters as MVT_ColumnFiltersState | undefined) ?? [],\n globalFilter: tableState.globalFilter,\n }\n }\n\n const isRootPath = (pathId: MVT_ServerGroupPathId) => pathId === MVT_SERVER_GROUPING_ROOT_PATH_ID\n\n const getDefaultPagination = (): MVT_ServerPageState => ({\n pageIndex: 0,\n pageSize: defaultPageSize,\n })\n\n /**\n * Effective pagination of a path. The root level is driven by the table's\n * own `pagination` state, so the standard bottom toolbar (page navigation +\n * rows-per-page) controls it exactly like an ungrouped server-side table.\n * Nested levels keep their own independent, fixed-page-size state.\n */\n const getEffectivePagination = (pathId: MVT_ServerGroupPathId): MVT_ServerPageState => {\n if (isRootPath(pathId)) {\n const { pageIndex, pageSize } = table.getState().pagination\n return { ...getPathState(pathId)?.pagination, pageIndex, pageSize }\n }\n return getPathState(pathId)?.pagination ?? getDefaultPagination()\n }\n\n /** Reset a path to page 0. Returns `true` when it triggered a root reload. */\n const resetPageIndex = (pathId: MVT_ServerGroupPathId): boolean => {\n if (isRootPath(pathId)) {\n const { pageIndex } = table.getState().pagination\n if (pageIndex === 0) return false\n table.setPageIndex(0)\n return true\n }\n const state = getPathState(pathId)\n if (state) {\n setPathState(pathId, {\n ...state,\n pagination: { ...state.pagination, cursor: undefined, pageIndex: 0 },\n })\n }\n return false\n }\n\n const buildRequest = (\n pathId: MVT_ServerGroupPathId,\n kind: 'groups' | 'records',\n signal: AbortSignal,\n ): MVT_ServerGroupRequest<any> | MVT_ServerRecordRequest<any> => {\n const grouping = getGroupingFields()\n const depth = getServerGroupPathDepth(pathId)\n const parentGroups = getParentItems(pathId)\n const { columnFilters, globalFilter } = getEffectiveFilters(pathId, kind)\n const base = {\n columnFilters,\n depth,\n globalFilter,\n grouping,\n pagination: getEffectivePagination(pathId),\n parentGroup: parentGroups.at(-1),\n parentGroups,\n pathId,\n signal,\n sorting: getEffectiveSorting(pathId, kind),\n table: table as MVT_TableInstance<any>,\n }\n return kind === 'groups' ? { ...base, groupingField: grouping[depth] } : base\n }\n\n const getCacheKey = (\n request: MVT_ServerGroupRequest<any> | MVT_ServerRecordRequest<any>,\n ): string =>\n serializeServerGroupingCacheKey([\n request.pathId,\n request.grouping,\n request.depth,\n request.pagination,\n request.sorting,\n request.columnFilters,\n request.globalFilter ?? null,\n ...(provider.getCacheKey?.(request) ?? []),\n ])\n\n const gcCache = () => {\n const now = Date.now()\n cache.forEach((entry, key) => {\n if (now - entry.updatedAt > cacheOptions.gcTime) cache.delete(key)\n })\n }\n\n const load = (pathId: MVT_ServerGroupPathId) => {\n const grouping = getGroupingFields()\n const depth = getServerGroupPathDepth(pathId)\n const kind: 'groups' | 'records' = depth >= grouping.length ? 'records' : 'groups'\n const previous = getPathState(pathId)\n const hasData = previous?.groups !== undefined || previous?.rows !== undefined\n\n controllers.get(pathId)?.abort()\n const controller = new AbortController()\n controllers.set(pathId, controller)\n const version = (versions.get(pathId) ?? 0) + 1\n versions.set(pathId, version)\n\n const request = buildRequest(pathId, kind, controller.signal)\n const isCurrent = () => versions.get(pathId) === version && !controller.signal.aborted\n\n let servedFromCache = false\n let cacheKey: string | undefined\n if (cacheOptions.enabled) {\n cacheKey = getCacheKey(request)\n const entry = cache.get(cacheKey)\n if (entry) {\n servedFromCache = true\n const fresh = Date.now() - entry.updatedAt <= cacheOptions.staleTime\n setPathState(pathId, {\n ...entry.payload,\n columnFilters: previous?.columnFilters,\n depth,\n error: null,\n globalFilter: previous?.globalFilter,\n isFetching: !fresh,\n isLoading: false,\n pagination: request.pagination,\n pathId,\n sorting: previous?.sorting,\n updatedAt: entry.updatedAt,\n } as MVT_ServerGroupingPathState<TData>)\n if (entry.payload.kind === 'groups') {\n registerGroups(pathId, entry.payload.groups ?? [], grouping[depth], depth)\n }\n if (fresh) return //fresh cache hit — no request\n }\n }\n\n if (!servedFromCache) {\n setPathState(pathId, {\n ...previous,\n columnFilters: previous?.columnFilters,\n depth,\n error: null,\n groups: kind === 'groups' ? previous?.groups : undefined,\n isFetching: true,\n isLoading: !hasData,\n kind,\n pagination: request.pagination,\n pathId,\n rowCount: previous?.rowCount ?? 0,\n rows: kind === 'records' ? previous?.rows : undefined,\n sorting: previous?.sorting,\n } as MVT_ServerGroupingPathState<TData>)\n }\n\n const eventPayload = { path: request.parentGroups, pathId }\n options.onGroupLoadStart?.({ ...eventPayload, request })\n\n const promise =\n kind === 'groups'\n ? provider.loadGroups(request as MVT_ServerGroupRequest<any>)\n : provider.loadRecords(request as MVT_ServerRecordRequest<any>)\n\n Promise.resolve(promise)\n .then((response) => {\n if (!isCurrent()) return //stale response , a newer request owns this path\n const updatedAt = Date.now()\n let payload: CacheEntry['payload']\n if (kind === 'groups') {\n const context = {\n depth,\n field: grouping[depth],\n request: request as MVT_ServerGroupRequest<any>,\n }\n const rawGroups = provider.getGroups(response) ?? []\n const groups: MVT_ServerGroupNode[] = rawGroups.map((group: any) => ({\n count: provider.getGroupCount?.(group, context),\n hasChildren: provider.hasGroupChildren?.(group, context) ?? true,\n id: provider.getGroupId(group, context),\n label: provider.getGroupLabel(group, context),\n meta: provider.getGroupMeta?.(group, context) ?? {},\n original: group,\n value: provider.getGroupValue ? provider.getGroupValue(group, context) : group,\n }))\n registerGroups(pathId, groups, grouping[depth], depth)\n payload = { groups, kind, rowCount: provider.getGroupRowCount(response) }\n options.onGroupLoadSuccess?.({\n ...eventPayload,\n groups,\n request: request as MVT_ServerGroupRequest<any>,\n response,\n })\n } else {\n const rows = provider.getRecords(response) ?? []\n payload = { kind, rowCount: provider.getRecordRowCount(response), rows }\n options.onRecordLoadSuccess?.({\n ...eventPayload,\n request: request as MVT_ServerRecordRequest<any>,\n response,\n rows,\n })\n }\n setPathState(pathId, {\n ...getPathState(pathId)!,\n ...payload,\n error: null,\n isFetching: false,\n isLoading: false,\n updatedAt,\n } as MVT_ServerGroupingPathState<TData>)\n if (cacheOptions.enabled && cacheKey) {\n cache.set(cacheKey, { pathId, payload, updatedAt })\n gcCache()\n }\n })\n .catch((error) => {\n if (!isCurrent() || isAbortError(error)) return\n setPathState(pathId, {\n ...getPathState(pathId)!,\n error,\n isFetching: false,\n isLoading: false,\n })\n options.onError?.({ ...eventPayload, error, request })\n })\n }\n\n const registerGroups = (\n parentPathId: MVT_ServerGroupPathId,\n groups: MVT_ServerGroupNode[],\n field: string,\n depth: number,\n ) => {\n groups.forEach((node) => {\n const childPathId = createServerGroupPathId(parentPathId, field, node.id)\n const item: MVT_ServerGroupPathItem = {\n depth,\n field,\n id: node.id,\n label: node.label,\n meta: node.meta,\n original: node.original,\n value: node.value,\n }\n ;(item as any).__node = node\n nodeRegistry.set(childPathId, item)\n })\n }\n\n const ensureLoaded = (pathId: MVT_ServerGroupPathId) => {\n const state = getPathState(pathId)\n if (!state || (state.groups === undefined && state.rows === undefined && !state.isFetching)) {\n load(pathId)\n }\n }\n\n const isPathVisible = (pathId: MVT_ServerGroupPathId): boolean => {\n if (pathId === MVT_SERVER_GROUPING_ROOT_PATH_ID) return true\n const segments = pathId.split('/')\n // Every segment, including the path that owns the content, must be expanded.\n for (let index = 0; index < segments.length; index++) {\n const ancestor = segments.slice(0, index + 1).join('/')\n if (!isExpanded(ancestor)) return false\n }\n return true\n }\n\n const getLoadedVisiblePaths = (): MVT_ServerGroupPathId[] =>\n Object.keys(pathStates.value).filter(isPathVisible)\n\n const abortPathAndDescendants = (pathId: MVT_ServerGroupPathId) => {\n controllers.forEach((controller, key) => {\n if (!isServerGroupPathOrDescendant(key, pathId)) return\n controller.abort()\n // Clear the fetching flags that the ignored abort would otherwise leave behind.\n const state = getPathState(key)\n if (state?.isFetching || state?.isLoading) {\n setPathState(key, { ...state, isFetching: false, isLoading: false })\n }\n })\n }\n\n const dropPathAndDescendants = (pathId: MVT_ServerGroupPathId) => {\n const next = { ...pathStates.value }\n Object.keys(next).forEach((key) => {\n if (isServerGroupPathOrDescendant(key, pathId)) delete next[key]\n })\n pathStates.value = next\n cache.forEach((entry, key) => {\n if (isServerGroupPathOrDescendant(entry.pathId, pathId)) cache.delete(key)\n })\n rowCache.forEach((_entry, key) => {\n if (isServerGroupPathOrDescendant(key, pathId)) rowCache.delete(key)\n })\n }\n\n const expand = (pathId: MVT_ServerGroupPathId) => {\n if (isExpanded(pathId)) return\n setExpanded((prev) => ({ ...prev, [pathId]: true }))\n }\n\n const collapse = (pathId: MVT_ServerGroupPathId) => {\n if (!isExpanded(pathId)) return\n setExpanded((prev) => ({ ...prev, [pathId]: false }))\n }\n\n const toggle = (pathId: MVT_ServerGroupPathId) => {\n if (isExpanded(pathId)) collapse(pathId)\n else expand(pathId)\n }\n\n const invalidate = (pathId?: MVT_ServerGroupPathId) => {\n if (pathId === undefined) {\n cache.clear()\n } else {\n cache.forEach((entry, key) => {\n if (isServerGroupPathOrDescendant(entry.pathId, pathId)) cache.delete(key)\n })\n }\n }\n\n const reload = (pathId?: MVT_ServerGroupPathId) => {\n if (pathId !== undefined) {\n invalidate(pathId)\n if (getPathState(pathId)) load(pathId)\n return\n }\n invalidate()\n getLoadedVisiblePaths().forEach((visiblePathId) => load(visiblePathId))\n }\n\n const retry = (pathId: MVT_ServerGroupPathId) => {\n load(pathId)\n }\n\n const reset = () => {\n controllers.forEach((controller) => controller.abort())\n controllers.clear()\n versions.clear()\n nodeRegistry.clear()\n cache.clear()\n rowCache.clear()\n pathStates.value = {}\n if (options.resetExpansionOnGroupingChange !== false) {\n setExpanded({})\n }\n load(MVT_SERVER_GROUPING_ROOT_PATH_ID)\n }\n\n const setPagination: MVT_ServerGroupingManager<TData>['setPagination'] = (pathId, updater) => {\n const previous = getEffectivePagination(pathId)\n const next = updater instanceof Function ? updater(previous) : { ...previous, ...updater }\n // Root pagination comes from the table; provider cursor metadata stays per path.\n if (isRootPath(pathId)) {\n const state = getPathState(pathId)\n if (state) setPathState(pathId, { ...state, pagination: next })\n const current = table.getState().pagination\n if (current.pageIndex === next.pageIndex && current.pageSize === next.pageSize) {\n load(pathId) //only the cursor changed — the watcher would not fire\n } else {\n table.setPagination({ pageIndex: next.pageIndex, pageSize: next.pageSize })\n }\n return\n }\n const state = getPathState(pathId)\n if (state) {\n setPathState(pathId, { ...state, pagination: next })\n } else {\n setPathState(pathId, {\n depth: getServerGroupPathDepth(pathId),\n error: null,\n isFetching: false,\n isLoading: false,\n kind: getServerGroupPathDepth(pathId) >= getGroupingFields().length ? 'records' : 'groups',\n pagination: next,\n pathId,\n rowCount: 0,\n })\n }\n load(pathId)\n }\n\n const setSorting: MVT_ServerGroupingManager<TData>['setSorting'] = (pathId, updater) => {\n const state = getPathState(pathId)\n const previous = state?.sorting ?? []\n const next = updater instanceof Function ? updater(previous) : updater\n if (!state) return\n setPathState(pathId, { ...state, sorting: next })\n if (!resetPageIndex(pathId)) load(pathId)\n }\n\n const setColumnFilters: MVT_ServerGroupingManager<TData>['setColumnFilters'] = (\n pathId,\n updater,\n ) => {\n const state = getPathState(pathId)\n if (!state) return\n const previous = state.columnFilters ?? []\n const next = updater instanceof Function ? updater(previous) : updater\n setPathState(pathId, { ...state, columnFilters: next })\n if (!resetPageIndex(pathId)) load(pathId)\n }\n\n const setGlobalFilter: MVT_ServerGroupingManager<TData>['setGlobalFilter'] = (pathId, value) => {\n const state = getPathState(pathId)\n if (!state) return\n setPathState(pathId, { ...state, globalFilter: value })\n if (!resetPageIndex(pathId)) load(pathId)\n }\n\n const getState = (): MVT_ServerGroupingState<TData> => ({\n enabled: true,\n expanded: getExpanded(),\n grouping: getGroupingFields(),\n paths: pathStates.value,\n })\n\n watch(\n () => ({ ...getExpanded() }),\n (next, prev) => {\n Object.keys(next).forEach((pathId) => {\n if (next[pathId] && !prev?.[pathId]) {\n options.onGroupExpand?.({\n group: getNode(pathId)!,\n path: getParentItems(pathId),\n pathId,\n })\n ensureLoaded(pathId)\n }\n })\n Object.keys(prev ?? {}).forEach((pathId) => {\n if (prev?.[pathId] && !next[pathId]) {\n options.onGroupCollapse?.({\n group: getNode(pathId)!,\n path: getParentItems(pathId),\n pathId,\n })\n abortPathAndDescendants(pathId)\n // Opt-in: collapsing also drops the selection of descendant records.\n if (options.selection?.clearOnCollapse) {\n deselectServerGroupingRecords(\n table as MVT_TableInstance<any>,\n Object.keys(pathStates.value)\n .filter(\n (key) =>\n pathStates.value[key]?.kind === 'records' &&\n isServerGroupPathOrDescendant(key, pathId),\n )\n .flatMap((key) => getRecordRows(key).map((row) => row.id)),\n )\n }\n if (!cacheOptions.keepCollapsedGroups) {\n dropPathAndDescendants(pathId)\n }\n }\n })\n },\n )\n\n watch(\n () => JSON.stringify(getGroupingFields()),\n (next, prev) => {\n if (next !== prev) {\n resetSelectAll()\n reset()\n }\n },\n )\n\n watch(\n () =>\n JSON.stringify([table.getState().columnFilters ?? [], table.getState().globalFilter ?? null]),\n (next, prev) => {\n if (next === prev || filteringMode === 'independent') return\n // An all-matching selection belongs to the query under which it was created.\n resetSelectAll()\n invalidate()\n const affected = getLoadedVisiblePaths().filter(\n (pathId) => filteringMode === 'shared' || getPathState(pathId)?.kind === 'records',\n )\n affected.forEach((pathId) => {\n const state = getPathState(pathId)!\n // Avoid displaying results from the previous filter state.\n setPathState(pathId, { ...state, groups: undefined, rows: undefined })\n // Avoid a duplicate reload when resetting the root page triggers its watcher.\n if (!resetPageIndex(pathId)) load(pathId)\n })\n },\n )\n\n watch(\n () => JSON.stringify(table.getState().sorting ?? []),\n (next, prev) => {\n if (next === prev) return\n const affected = getLoadedVisiblePaths().filter((pathId) => {\n if (getPathState(pathId)?.sorting) return false //per-path override wins\n if (sortingMode === 'shared') return true\n if (sortingMode === 'records-only') return getPathState(pathId)?.kind === 'records'\n return pathId === MVT_SERVER_GROUPING_ROOT_PATH_ID\n })\n affected.forEach((pathId) => {\n if (!resetPageIndex(pathId)) load(pathId)\n })\n },\n )\n\n // Root pagination follows the table state so the standard bottom toolbar drives it.\n watch(\n () => {\n const { pageIndex, pageSize } = table.getState().pagination\n return `${pageIndex}:${pageSize}`\n },\n (next, prev) => {\n if (next !== prev) load(MVT_SERVER_GROUPING_ROOT_PATH_ID)\n },\n )\n\n load(MVT_SERVER_GROUPING_ROOT_PATH_ID)\n\n if (getCurrentScope()) {\n onScopeDispose(() => {\n controllers.forEach((controller) => controller.abort())\n controllers.clear()\n })\n }\n\n return {\n collapse,\n ensureLoaded,\n expand,\n getExpanded,\n getGroupingFields,\n getNode,\n getParentItems,\n getPathState,\n getRecordRows,\n getSelectAll,\n getState,\n getVisibleRecordRows,\n invalidate,\n isExpanded,\n options,\n reload,\n reset,\n retry,\n setColumnFilters,\n setExpanded,\n setGlobalFilter,\n setSelectAll,\n setPagination,\n setSorting,\n toggle,\n }\n}\n","import { type Component, h, type VNodeChild } from 'vue'\n\nimport { createRow as _createRow } from '@tanstack/vue-table'\n\nimport {\n type MVT_ColumnHelper,\n type MVT_DisplayColumnDef,\n type MVT_GroupColumnDef,\n type MVT_Node,\n type MVT_Row,\n type MVT_RowData,\n type MVT_TableInstance,\n} from '../types'\nimport { getAllLeafColumnDefs, getColumnId } from './column.utils'\n\n/**\n * A renderable passed to {@link flexRender}.\n */\nexport type Renderable<TProps> = ((props: TProps) => VNodeChild) | Component | VNodeChild\n\n/**\n * Vue equivalent of `@tanstack/react-table`'s `flexRender`.\n *\n * `@tanstack/vue-table` only ships a `FlexRender` component\n */\nexport const flexRender = <TProps extends object>(\n Comp: Renderable<TProps>,\n props: TProps,\n): MVT_Node => {\n if (Comp === null || Comp === undefined || Comp === false) {\n return null\n }\n if (typeof Comp === 'function') {\n return (Comp as (props: TProps) => VNodeChild)(props)\n }\n if (typeof Comp === 'object') {\n return h(Comp as Component, props as Record<string, any>)\n }\n return Comp\n}\n\nexport function createMVTColumnHelper<TData extends MVT_RowData>(): MVT_ColumnHelper<TData> {\n return {\n accessor: (accessor, column) => {\n return typeof accessor === 'function'\n ? ({\n ...column,\n accessorFn: accessor,\n } as any)\n : {\n ...column,\n accessorKey: accessor,\n }\n },\n display: (column) => column as MVT_DisplayColumnDef<TData>,\n group: (column) => column as MVT_GroupColumnDef<TData>,\n }\n}\n\nexport const createRow = <TData extends MVT_RowData>(\n table: MVT_TableInstance<TData>,\n originalRow?: TData,\n rowIndex = -1,\n depth = 0,\n subRows?: MVT_Row<TData>[],\n parentId?: string,\n): MVT_Row<TData> =>\n _createRow(\n table as any,\n 'mvt-row-create',\n originalRow ??\n Object.assign(\n {},\n ...getAllLeafColumnDefs(table.options.columns).map((col) => ({\n [getColumnId(col)]: '',\n })),\n ),\n rowIndex,\n depth,\n subRows as any,\n parentId,\n ) as MVT_Row<TData>\n","import { inject, type InjectionKey, provide, type Slots, type VNodeChild } from 'vue'\n\nimport {\n type MVT_Cell,\n type MVT_Column,\n type MVT_InternalFilterOption,\n type MVT_Node,\n type MVT_Row,\n type MVT_RowData,\n type MVT_TableInstance,\n} from '../types'\nimport type {\n MVT_ServerGroupCellContext,\n MVT_ServerGroupPathId,\n MVT_ServerGroupPathItem,\n MVT_ServerGroupRowContext,\n MVT_ServerGroupingGroupByContext,\n} from '../server-grouping/serverGrouping.types'\nimport { parseFromValuesOrFunc } from '../utils/utils'\n\n/**\n * Scoped named slots supported on `<MantineVueTable>`.\n *\n * Each slot mirrors the equivalent `renderX` table option and receives the same\n * scoped argument object. A provided named slot takes precedence over the option\n * (see {@link renderMVT_Renderable})\n *\n * ```vue\n * <MantineVueTable :table=\"table\">\n * <template #detailPanel=\"{ row }\">Age: {{ row.original.age }}</template>\n * <template #rowActionMenuItems=\"{ row }\">\n * <MenuItem @click=\"() => edit(row)\">Edit</MenuItem>\n * </template>\n * </MantineVueTable>\n * ```\n */\nexport interface MVT_TableSlots<TData extends MVT_RowData = MVT_RowData> {\n bottomToolbar?: (arg: { table: MVT_TableInstance<TData> }) => VNodeChild\n bottomToolbarCustomActions?: (arg: { table: MVT_TableInstance<TData> }) => VNodeChild\n columnActionsMenuItems?: (arg: {\n column: MVT_Column<TData>\n internalColumnMenuItems: MVT_Node\n table: MVT_TableInstance<TData>\n }) => VNodeChild\n columnFilterModeMenuItems?: (arg: {\n column: MVT_Column<TData>\n internalFilterOptions: MVT_InternalFilterOption[]\n onSelectFilterMode: (filterMode: string) => void\n table: MVT_TableInstance<TData>\n }) => VNodeChild\n createRowModalContent?: (arg: {\n internalEditComponents: MVT_Node[]\n row: MVT_Row<TData>\n table: MVT_TableInstance<TData>\n }) => VNodeChild\n detailPanel?: (arg: {\n internalEditComponents: MVT_Node[]\n row: MVT_Row<TData>\n table: MVT_TableInstance<TData>\n }) => VNodeChild\n editRowModalContent?: (arg: {\n internalEditComponents: MVT_Node[]\n row: MVT_Row<TData>\n table: MVT_TableInstance<TData>\n }) => VNodeChild\n emptyRowsFallback?: (arg: { table: MVT_TableInstance<TData> }) => VNodeChild\n globalFilterModeMenuItems?: (arg: {\n internalFilterOptions: MVT_InternalFilterOption[]\n onSelectFilterMode: (filterMode: string) => void\n table: MVT_TableInstance<TData>\n }) => VNodeChild\n /**\n * Replaces the built-in group-by toolbar control entirely (takes precedence\n * over `serverGrouping.groupBy.renderControl`). Use the provided context to\n * build your own UI; disable the default independently via\n * `serverGrouping.groupBy.enabled: false`.\n */\n serverGroupByControl?: (arg: MVT_ServerGroupingGroupByContext) => VNodeChild\n serverGroupCell?: (arg: MVT_ServerGroupCellContext) => VNodeChild\n serverGroupCount?: (arg: MVT_ServerGroupRowContext) => VNodeChild\n serverGroupEmpty?: (arg: {\n field?: string\n parentGroup?: MVT_ServerGroupPathItem\n pathId: MVT_ServerGroupPathId\n table: MVT_TableInstance<TData>\n }) => VNodeChild\n serverGroupError?: (arg: {\n error: unknown\n pathId: MVT_ServerGroupPathId\n retry: () => void\n table: MVT_TableInstance<TData>\n }) => VNodeChild\n serverGroupLabel?: (arg: MVT_ServerGroupRowContext) => VNodeChild\n serverGroupLoading?: (arg: {\n depth: number\n pathId: MVT_ServerGroupPathId\n table: MVT_TableInstance<TData>\n }) => VNodeChild\n rowActionMenuItems?: (arg: {\n renderedRowIndex?: number\n row: MVT_Row<TData>\n table: MVT_TableInstance<TData>\n }) => VNodeChild\n rowActions?: (arg: {\n cell: MVT_Cell<TData>\n renderedRowIndex?: number\n row: MVT_Row<TData>\n table: MVT_TableInstance<TData>\n }) => VNodeChild\n toolbarAlertBannerContent?: (arg: {\n groupedAlert: MVT_Node | null\n selectedAlert: MVT_Node | null\n table: MVT_TableInstance<TData>\n }) => VNodeChild\n toolbarInternalActions?: (arg: { table: MVT_TableInstance<TData> }) => VNodeChild\n topToolbar?: (arg: { table: MVT_TableInstance<TData> }) => VNodeChild\n topToolbarCustomActions?: (arg: { table: MVT_TableInstance<TData> }) => VNodeChild\n}\n\n/** Union of the named-slot keys `<MantineVueTable>` understands. */\nexport type MVT_TableSlotName = keyof MVT_TableSlots\n\nconst MVT_SLOTS_KEY: InjectionKey<Slots> = Symbol('MVT_Slots')\n\n/**\n * Provide the top-level `<MantineVueTable>` slots to every descendant section.\n * Called once, from the root component's `setup`.\n */\nexport const provideMVT_Slots = (slots: Slots): void => {\n provide(MVT_SLOTS_KEY, slots)\n}\n\n/**\n * Inject the top-level `<MantineVueTable>` slots inside a deep section\n * component (detail panel, row/column action menus, toolbars, …).\n */\nexport const useMVT_Slots = (): Slots => inject(MVT_SLOTS_KEY, {})\n\n/**\n * Resolve a renderable section. A named slot takes precedence over the\n * equivalent `renderX` option/prop; both receive the same scoped argument, so a\n * section can be customized either way with identical semantics.\n */\nexport const renderMVT_Renderable = <TArg extends Record<string, any>>(\n slot: ((arg: TArg) => VNodeChild) | undefined,\n renderProp: ((arg: TArg) => VNodeChild) | MVT_Node | undefined,\n arg: TArg,\n): VNodeChild => (slot ? slot(arg) : parseFromValuesOrFunc(renderProp as any, arg))\n","import { ActionIcon, Menu, Tooltip } from '@mantine-vue/core'\nimport { defineComponent, h, type PropType } from 'vue'\nimport type { MVT_Row, MVT_RowData, MVT_TableInstance } from '../../types'\nimport { renderMVT_Renderable, useMVT_Slots } from '../MVT_TableSlots'\n\nexport const MVT_RowActionMenu = defineComponent({\n name: 'MVTRowActionMenu',\n inheritAttrs: false,\n props: {\n handleEdit: { type: Function as PropType<(event: MouseEvent) => void>, required: true },\n row: { type: Object as PropType<MVT_Row<MVT_RowData>>, required: true },\n table: { type: Object as PropType<MVT_TableInstance<MVT_RowData>>, required: true },\n },\n setup(props, { attrs, slots }) {\n const mvtSlots = useMVT_Slots()\n return () => {\n const { table, row } = props\n const o = table.options\n\n const custom =\n slots.default?.({ row, table }) ??\n renderMVT_Renderable(mvtSlots.rowActionMenuItems, o.renderRowActionMenuItems, {\n row,\n table,\n })\n return h(\n Menu,\n {\n closeOnItemClick: true,\n position:\n o.positionActionsColumn === 'first'\n ? 'bottom-start'\n : o.positionActionsColumn === 'last'\n ? 'bottom-end'\n : undefined,\n withinPortal: true,\n },\n () => [\n h(\n Tooltip,\n { label: o.localization.rowActions, openDelay: 1000, withinPortal: true },\n () =>\n h(Menu.Target, null, () =>\n h(\n ActionIcon,\n {\n 'aria-label': o.localization.rowActions,\n color: 'gray',\n size: 'sm',\n variant: 'subtle',\n ...attrs,\n onClick: (e: MouseEvent) => e.stopPropagation(),\n },\n () => h(o.icons.IconDots),\n ),\n ),\n ),\n h(Menu.Dropdown, { onClick: (e: MouseEvent) => e.stopPropagation() }, () => [\n o.enableEditing &&\n o.editDisplayMode !== 'table' &&\n h(\n Menu.Item,\n { leftSection: h(o.icons.IconEdit), onClick: props.handleEdit },\n () => o.localization.edit,\n ),\n custom,\n ]),\n ],\n )\n }\n },\n})\n",".root {\n display: flex;\n gap: var(--mantine-spacing-xs);\n}\n","import clsx from 'clsx'\nimport { ActionIcon, Box, Button, Tooltip } from '@mantine-vue/core'\nimport { defineComponent, h, type PropType } from 'vue'\nimport classes from './MVT_EditActionButtons.module.css'\nimport type { MVT_Row, MVT_RowData, MVT_TableInstance } from '../../types'\n\nexport const MVT_EditActionButtons = defineComponent({\n name: 'MVTEditActionButtons',\n inheritAttrs: false,\n props: {\n row: { type: Object as PropType<MVT_Row<MVT_RowData>>, required: true },\n table: { type: Object as PropType<MVT_TableInstance<MVT_RowData>>, required: true },\n variant: { type: String as PropType<'icon' | 'text'>, default: 'icon' },\n },\n setup(props, { attrs }) {\n return () => {\n const { row, table } = props\n const state = table.getState()\n const l = table.options.localization\n const creating = state.creatingRow?.id === row.id\n const editing = state.editingRow?.id === row.id\n const cancel = () => {\n if (creating) {\n table.options.onCreatingRowCancel?.({ row, table })\n table.setCreatingRow(null)\n } else if (editing) {\n table.options.onEditingRowCancel?.({ row, table })\n table.setEditingRow(null)\n }\n row._valuesCache = {}\n }\n const save = () => {\n Object.values(table.refs.editInputRefs.value)\n .filter((input) => row.id === input?.name?.split('_')?.[0])\n .forEach((input) => {\n if (input.value !== undefined && Object.hasOwn(row._valuesCache as object, input.name))\n row._valuesCache[input.name] = input.value\n })\n if (creating)\n table.options.onCreatingRowSave?.({\n exitCreatingMode: () => table.setCreatingRow(null),\n row,\n table,\n values: row._valuesCache,\n })\n else if (editing)\n table.options.onEditingRowSave?.({\n exitEditingMode: () => table.setEditingRow(null),\n row,\n table,\n values: row._valuesCache,\n })\n }\n const buttons =\n props.variant === 'icon'\n ? [\n h(Tooltip, { label: l.cancel, withinPortal: true }, () =>\n h(\n ActionIcon,\n { 'aria-label': l.cancel, color: 'red', variant: 'subtle', onClick: cancel },\n () => h(table.options.icons.IconCircleX),\n ),\n ),\n h(Tooltip, { label: l.save, withinPortal: true }, () =>\n h(\n ActionIcon,\n {\n 'aria-label': l.save,\n color: 'blue',\n loading: state.isSaving,\n variant: 'subtle',\n onClick: save,\n },\n () => h(table.options.icons.IconDeviceFloppy),\n ),\n ),\n ]\n : [\n h(Button, { variant: 'subtle', onClick: cancel }, () => l.cancel),\n h(\n Button,\n { loading: state.isSaving, variant: 'filled', onClick: save },\n () => l.save,\n ),\n ]\n return h(\n Box,\n {\n ...attrs,\n class: clsx('mvt-edit-action-buttons', classes.root, attrs.class),\n onClick: (e: MouseEvent) => e.stopPropagation(),\n },\n () => buttons,\n )\n }\n },\n})\n","import { ActionIcon, Tooltip } from '@mantine-vue/core'\nimport { defineComponent, h, type PropType } from 'vue'\nimport type { MVT_Cell, MVT_Row, MVT_RowData, MVT_TableInstance } from '../../types'\nimport { parseFromValuesOrFunc } from '../../utils/utils'\nimport { MVT_RowActionMenu } from '../menus/MVT_RowActionMenu'\nimport { useMVT_Slots } from '../MVT_TableSlots'\nimport { MVT_EditActionButtons } from './MVT_EditActionButtons'\n\nexport const MVT_ToggleRowActionMenuButton = defineComponent({\n name: 'MVTToggleRowActionMenuButton',\n props: {\n cell: { type: Object as PropType<MVT_Cell<MVT_RowData>>, required: true },\n row: { type: Object as PropType<MVT_Row<MVT_RowData>>, required: true },\n table: { type: Object as PropType<MVT_TableInstance<MVT_RowData>>, required: true },\n },\n setup(props, { slots }) {\n const mvtSlots = useMVT_Slots()\n return () => {\n const { cell, row, table } = props\n const o = table.options\n const hasRowActions = slots.default || mvtSlots.rowActions || o.renderRowActions\n const hasRowActionMenuItems = mvtSlots.rowActionMenuItems || o.renderRowActionMenuItems\n const state = table.getState()\n const creating = state.creatingRow?.id === row.id\n const editing = state.editingRow?.id === row.id\n const showEdit =\n (creating && o.createDisplayMode === 'row') || (editing && o.editDisplayMode === 'row')\n const startEdit = (event: MouseEvent) => {\n event.stopPropagation()\n table.setEditingRow({ ...row })\n }\n if (showEdit) return h(MVT_EditActionButtons, { row, table })\n if (hasRowActions)\n return (\n slots.default?.({ cell, row, table }) ??\n (mvtSlots.rowActions ?? o.renderRowActions)?.({ cell, row, table })\n )\n if (!hasRowActionMenuItems && parseFromValuesOrFunc(o.enableEditing, row))\n return h(\n Tooltip,\n { label: o.localization.edit, openDelay: 1000, position: 'right', withinPortal: true },\n () =>\n h(\n ActionIcon,\n {\n 'aria-label': o.localization.edit,\n color: 'gray',\n disabled: !!state.editingRow && state.editingRow.id !== row.id,\n size: 'md',\n variant: 'subtle',\n onClick: startEdit,\n },\n () => h(o.icons.IconEdit),\n ),\n )\n return hasRowActionMenuItems\n ? h(MVT_RowActionMenu, { handleEdit: startEdit, row, table })\n : null\n }\n },\n})\n","import { h } from 'vue'\n\nimport { MVT_ToggleRowActionMenuButton } from '../../components/buttons/MVT_ToggleRowActionMenuButton'\nimport { type MVT_ColumnDef, type MVT_RowData, type MVT_StatefulTableOptions } from '../../types'\nimport { defaultDisplayColumnProps } from '../../utils/displayColumn.utils'\n\nexport const getMVT_RowActionsColumnDef = <TData extends MVT_RowData>(\n tableOptions: MVT_StatefulTableOptions<TData>,\n): MVT_ColumnDef<TData> | null => {\n return {\n Cell: ({ cell, row, table }) => h(MVT_ToggleRowActionMenuButton, { cell, row, table } as any),\n ...defaultDisplayColumnProps({\n header: 'actions',\n id: 'mvt-row-actions',\n size: 70,\n tableOptions,\n }),\n }\n}\n",".grab-icon {\n cursor: grab;\n &:active {\n cursor: grabbing;\n }\n}\n","import clsx from 'clsx'\nimport { ActionIcon, Tooltip } from '@mantine-vue/core'\nimport { defineComponent, h, type PropType } from 'vue'\nimport type { MVT_RowData, MVT_TableInstance } from '../../types'\nimport classes from './MVT_GrabHandleButton.module.css'\n\nexport const MVT_GrabHandleButton = defineComponent({\n name: 'MVTGrabHandleButton',\n props: {\n actionIconProps: { type: Object as PropType<Record<string, any>>, default: () => ({}) },\n onDragEnd: { type: Function as PropType<(event: DragEvent) => void>, required: true },\n onDragStart: { type: Function as PropType<(event: DragEvent) => void>, required: true },\n table: { type: Object as PropType<MVT_TableInstance<MVT_RowData>>, required: true },\n },\n setup(props, { slots }) {\n return () => {\n const { actionIconProps, table } = props\n const label = actionIconProps.title ?? table.options.localization.move\n return h(Tooltip, { label, openDelay: 1000, withinPortal: true }, () =>\n h(\n ActionIcon,\n {\n 'aria-label': label,\n draggable: true,\n ...actionIconProps,\n class: clsx('mvt-grab-handle-button', classes['grab-icon'], actionIconProps.class),\n color: 'gray',\n size: 'sm',\n title: undefined,\n variant: 'transparent',\n onClick: (event: MouseEvent) => {\n event.stopPropagation()\n actionIconProps.onClick?.(event)\n },\n onDragend: props.onDragEnd,\n onDragstart: props.onDragStart,\n } as any,\n () =>\n slots.default?.({ table }) ??\n h(table.options.icons.IconGripHorizontal, { size: '100%' }),\n ),\n )\n }\n },\n})\n","import { defineComponent, h, type PropType, type Ref } from 'vue'\nimport type { MVT_Row, MVT_RowData, MVT_TableInstance } from '../../types'\nimport { parseFromValuesOrFunc } from '../../utils/utils'\nimport { MVT_GrabHandleButton } from '../buttons/MVT_GrabHandleButton'\n\nexport const MVT_TableBodyRowGrabHandle = defineComponent({\n name: 'MVTTableBodyRowGrabHandle',\n inheritAttrs: false,\n props: {\n row: { type: Object as PropType<MVT_Row<MVT_RowData>>, required: true },\n rowRef: { type: Object as PropType<Ref<HTMLTableRowElement | null>>, required: true },\n table: { type: Object as PropType<MVT_TableInstance<MVT_RowData>>, required: true },\n },\n setup(props, { attrs }) {\n return () => {\n const { row, table } = props\n const actionIconProps = {\n ...parseFromValuesOrFunc(table.options.mantineRowDragHandleProps, { row, table }),\n ...attrs,\n }\n return h(MVT_GrabHandleButton, {\n actionIconProps,\n table,\n onDragStart: (event: DragEvent) => {\n actionIconProps.onDragStart?.(event)\n if (props.rowRef.value) event.dataTransfer?.setDragImage(props.rowRef.value, 0, 0)\n table.setDraggingRow(row)\n },\n onDragEnd: (event: DragEvent) => {\n actionIconProps.onDragEnd?.(event)\n table.setDraggingRow(null)\n table.setHoveredRow(null)\n },\n } as any)\n }\n },\n})\n","import { h, type Ref } from 'vue'\n\nimport { MVT_TableBodyRowGrabHandle } from '../../components/body/MVT_TableBodyRowGrabHandle'\nimport { type MVT_ColumnDef, type MVT_RowData, type MVT_StatefulTableOptions } from '../../types'\nimport { defaultDisplayColumnProps } from '../../utils/displayColumn.utils'\n\nexport const getMVT_RowDragColumnDef = <TData extends MVT_RowData>(\n tableOptions: MVT_StatefulTableOptions<TData>,\n): MVT_ColumnDef<TData> | null => {\n return {\n Cell: ({ row, rowRef, table }) =>\n h(MVT_TableBodyRowGrabHandle, {\n row,\n rowRef: rowRef as Ref<HTMLTableRowElement | null>,\n table,\n } as any),\n grow: false,\n ...defaultDisplayColumnProps({\n header: 'move',\n id: 'mvt-row-drag',\n size: 60,\n tableOptions,\n }),\n }\n}\n",".root {\n margin-left: 6px;\n opacity: 0.8;\n &:disabled {\n background-color: transparent;\n border: none;\n }\n &:hover {\n opacity: 1;\n }\n &:global(.xl) {\n margin-left: -6px;\n }\n &:global(.md) {\n margin-left: 0;\n }\n .chevron {\n transition: transform 150ms;\n &.up {\n transform: rotate(-180deg);\n }\n &.right {\n transform: rotate(-90deg);\n }\n }\n}\n","import clsx from 'clsx'\nimport { ActionIcon, Tooltip } from '@mantine-vue/core'\nimport { defineComponent, h, type PropType } from 'vue'\nimport type { MVT_RowData, MVT_TableInstance } from '../../types'\nimport { parseFromValuesOrFunc } from '../../utils/utils'\nimport { useMVT_Slots } from '../MVT_TableSlots'\nimport classes from './MVT_ExpandAllButton.module.css'\n\nexport const MVT_ExpandAllButton = defineComponent({\n name: 'MVTExpandAllButton',\n inheritAttrs: false,\n props: { table: { type: Object as PropType<MVT_TableInstance<MVT_RowData>>, required: true } },\n setup(props, { attrs, slots }) {\n const mvtSlots = useMVT_Slots()\n return () => {\n const { table } = props\n const o = table.options\n const hasDetailPanel = !!o.renderDetailPanel || !!mvtSlots.detailPanel\n const state = table.getState()\n const actionProps = {\n ...parseFromValuesOrFunc(o.mantineExpandAllButtonProps, { table }),\n ...attrs,\n } as Record<string, any>\n const expanded = table.getIsAllRowsExpanded()\n const label =\n actionProps.title ?? (expanded ? o.localization.collapseAll : o.localization.expandAll)\n return h(Tooltip, { label, openDelay: 1000, withinPortal: true }, () =>\n h(\n ActionIcon,\n {\n 'aria-label': o.localization.expandAll,\n color: 'gray',\n variant: 'subtle',\n ...actionProps,\n class: clsx('mvt-expand-all-button', classes.root, actionProps.class, state.density),\n disabled: state.isLoading || (!hasDetailPanel && !table.getCanSomeRowsExpand()),\n title: undefined,\n onClick: () => table.toggleAllRowsExpanded(!expanded),\n } as any,\n () =>\n slots.default?.({ expanded, table }) ??\n h(o.icons.IconChevronsDown, {\n class: clsx(\n classes.chevron,\n expanded ? classes.up : table.getIsSomeRowsExpanded() ? classes.right : undefined,\n ),\n }),\n ),\n )\n }\n },\n})\n","import { MultiSelect, Select, TextInput } from '@mantine-vue/core'\nimport { defineComponent, h, ref, type PropType } from 'vue'\nimport type { MVT_Cell, MVT_RowData, MVT_TableInstance } from '../../types'\nimport { parseFromValuesOrFunc } from '../../utils/utils'\n\nexport const MVT_EditCellTextInput = defineComponent({\n name: 'MVTEditCellTextInput',\n inheritAttrs: false,\n props: {\n cell: { type: Object as PropType<MVT_Cell<MVT_RowData>>, required: true },\n table: { type: Object as PropType<MVT_TableInstance<MVT_RowData>>, required: true },\n },\n setup(props, { attrs, slots }) {\n const value = ref<any>(props.cell.getValue())\n return () => {\n const { cell, table } = props\n const { column, row } = cell\n const def = column.columnDef\n const state = table.getState()\n const creating = state.creatingRow?.id === row.id\n const editing = state.editingRow?.id === row.id\n const arg = { cell, column, row, table }\n const textProps = {\n ...parseFromValuesOrFunc(table.options.mantineEditTextInputProps, arg),\n ...parseFromValuesOrFunc(def.mantineEditTextInputProps, arg),\n ...attrs,\n } as Record<string, any>\n const selectProps = {\n ...parseFromValuesOrFunc(table.options.mantineEditSelectProps, arg),\n ...parseFromValuesOrFunc(def.mantineEditSelectProps, arg),\n ...attrs,\n } as Record<string, any>\n const custom = slots.default?.(arg) ?? def.Edit?.(arg)\n if (custom) return custom\n const save = (newValue: any) => {\n row._valuesCache[column.id] = newValue\n if (creating) table.setCreatingRow(row)\n else if (editing) table.setEditingRow(row)\n }\n const blur = (event: FocusEvent) => {\n textProps.onBlur?.(event)\n save(value.value)\n table.setEditingCell(null)\n }\n const setRef = (el: any) => {\n const node = (el?.$el?.querySelector?.('input') ?? el?.$el ?? el) as HTMLInputElement\n if (node) table.refs.editInputRefs.value[cell.id] = node\n }\n const modal = ['custom', 'modal'].includes(\n (creating ? table.options.createDisplayMode : table.options.editDisplayMode) as string,\n )\n const common = {\n disabled: parseFromValuesOrFunc(def.enableEditing, row) === false,\n label: modal ? def.header : undefined,\n name: cell.id,\n placeholder: !modal ? def.header : undefined,\n modelValue: value.value,\n variant: table.options.editDisplayMode === 'table' ? 'unstyled' : 'default',\n onClick: (e: MouseEvent) => e.stopPropagation(),\n ref: setRef,\n }\n if (def.editVariant === 'select')\n return h(Select, {\n ...common,\n searchable: true,\n ...selectProps,\n 'onUpdate:modelValue': (newValue: any) => {\n value.value = newValue\n },\n onChange: selectProps.onChange,\n onBlur: blur,\n } as any)\n if (def.editVariant === 'multi-select')\n return h(MultiSelect, {\n ...common,\n searchable: true,\n ...selectProps,\n 'onUpdate:modelValue': (newValue: any[]) => {\n value.value = newValue\n },\n onChange: selectProps.onChange,\n onBlur: blur,\n } as any)\n return h(TextInput, {\n ...common,\n modelValue: value.value ?? '',\n ...textProps,\n 'onUpdate:modelValue': (nextValue: string) => {\n value.value = nextValue\n },\n onChange: textProps.onChange,\n onBlur: blur,\n onKeydown: (event: KeyboardEvent) => {\n textProps.onKeyDown?.(event)\n if (event.key === 'Enter') table.refs.editInputRefs.value[cell.id]?.blur()\n },\n } as any)\n }\n },\n})\n",".root {\n opacity: 0.8;\n &:disabled {\n background-color: transparent;\n border: none;\n opacity: 0.3;\n }\n &:hover {\n opacity: 1;\n }\n}\n\n.root-ltr {\n margin-left: calc(calc(var(--mvt-row-depth, 0)) * 16px);\n .chevron {\n transition: transform 200ms;\n &.right {\n transform: rotate(270deg);\n }\n &.up {\n transform: rotate(-180deg);\n }\n }\n}\n\n.root-rtl {\n margin-right: calc(calc(var(--mvt-row-depth, 0)) * 16px);\n .chevron {\n transition: transform 200ms;\n &.right {\n transform: rotate(-270deg);\n }\n &.up {\n transform: rotate(180deg);\n }\n }\n}\n","import clsx from 'clsx'\nimport { ActionIcon, Tooltip, useDirection } from '@mantine-vue/core'\nimport { defineComponent, h, type PropType } from 'vue'\nimport type { MVT_Row, MVT_RowData, MVT_TableInstance } from '../../types'\nimport { parseFromValuesOrFunc } from '../../utils/utils'\nimport { MVT_EditCellTextInput } from '../inputs/MVT_EditCellTextInput'\nimport { useMVT_Slots } from '../MVT_TableSlots'\nimport classes from './MVT_ExpandButton.module.css'\n\nexport const MVT_ExpandButton = defineComponent({\n name: 'MVTExpandButton',\n inheritAttrs: false,\n props: {\n row: { type: Object as PropType<MVT_Row<MVT_RowData>>, required: true },\n table: { type: Object as PropType<MVT_TableInstance<MVT_RowData>>, required: true },\n },\n setup(props, { attrs, slots }) {\n const direction = useDirection()\n const mvtSlots = useMVT_Slots()\n return () => {\n const { row, table } = props\n const o = table.options\n const actionProps = {\n ...parseFromValuesOrFunc(o.mantineExpandButtonProps, { row, table }),\n ...attrs,\n } as Record<string, any>\n const edits = row\n .getAllCells()\n .filter((cell) => cell.column.columnDef.columnDefType === 'data')\n .map((cell) => h(MVT_EditCellTextInput, { key: cell.id, cell, table }))\n const canExpand = row.getCanExpand()\n const expanded = row.getIsExpanded()\n const detail =\n !!mvtSlots.detailPanel ||\n !!o.renderDetailPanel?.({ internalEditComponents: edits, row, table })\n const rtl = direction.dir.value === 'rtl' || o.positionExpandColumn === 'last'\n const label =\n actionProps.title ?? (expanded ? o.localization.collapse : o.localization.expand)\n return h(\n Tooltip,\n { disabled: !canExpand && !detail, label, openDelay: 1000, withinPortal: true },\n () =>\n h(\n ActionIcon,\n {\n 'aria-label': o.localization.expand,\n color: 'gray',\n disabled: !canExpand && !detail,\n variant: 'subtle',\n ...actionProps,\n class: clsx(\n 'mvt-expand-button',\n classes.root,\n classes[`root-${rtl ? 'rtl' : 'ltr'}`],\n actionProps.class,\n ),\n style: { '--mvt-row-depth': `${row.depth}`, ...actionProps.style },\n title: undefined,\n onClick: (event: MouseEvent) => {\n event.stopPropagation()\n row.toggleExpanded()\n actionProps.onClick?.(event)\n },\n } as any,\n () =>\n slots.default?.({ row, table }) ??\n h(o.icons.IconChevronDown, {\n class: clsx(\n 'mvt-expand-button-chevron',\n classes.chevron,\n !canExpand && !detail ? classes.right : expanded ? classes.up : undefined,\n ),\n }),\n ),\n )\n }\n },\n})\n","import { Fragment, h } from 'vue'\n\nimport { Flex, Tooltip } from '@mantine-vue/core'\n\nimport { MVT_ExpandAllButton } from '../../components/buttons/MVT_ExpandAllButton'\nimport { MVT_ExpandButton } from '../../components/buttons/MVT_ExpandButton'\nimport { type MVT_ColumnDef, type MVT_RowData, type MVT_StatefulTableOptions } from '../../types'\nimport { defaultDisplayColumnProps } from '../../utils/displayColumn.utils'\n\nexport const getMVT_RowExpandColumnDef = <TData extends MVT_RowData>(\n tableOptions: MVT_StatefulTableOptions<TData>,\n): MVT_ColumnDef<TData> | null => {\n const {\n defaultColumn,\n enableExpandAll,\n groupedColumnMode,\n positionExpandColumn,\n renderDetailPanel,\n state: { grouping },\n } = tableOptions\n\n const alignProps =\n positionExpandColumn === 'last'\n ? ({\n align: 'right',\n } as const)\n : undefined\n\n return {\n Cell: ({ cell, column, row, table }) => {\n const expandButtonProps = { row, table }\n const subRowsLength = row.subRows?.length\n if (tableOptions.groupedColumnMode === 'remove' && row.groupingColumnId) {\n return h(Flex, { align: 'center', gap: '0.25rem' } as any, () => [\n h(MVT_ExpandButton, expandButtonProps as any),\n h(\n Tooltip,\n {\n label: table.getColumn(row.groupingColumnId!).columnDef.header,\n openDelay: 1000,\n position: 'right',\n } as any,\n () => h('span', row.groupingValue as any),\n ),\n subRowsLength ? h('span', `(${subRowsLength})`) : null,\n ])\n }\n return h(Fragment, null, [\n h(MVT_ExpandButton, expandButtonProps as any),\n column.columnDef.GroupedCell?.({ cell, column, row, table }),\n ])\n },\n Header: enableExpandAll\n ? ({ table }) => {\n return h(Flex, { align: 'center' } as any, () => [\n h(MVT_ExpandAllButton, { table } as any),\n groupedColumnMode === 'remove'\n ? grouping\n ?.map((groupedColumnId) => table.getColumn(groupedColumnId).columnDef.header)\n ?.join(', ')\n : null,\n ])\n }\n : undefined,\n mantineTableBodyCellProps: alignProps,\n mantineTableHeadCellProps: alignProps,\n ...defaultDisplayColumnProps({\n header: 'expand',\n id: 'mvt-row-expand',\n size:\n groupedColumnMode === 'remove'\n ? (defaultColumn?.size ?? 180)\n : renderDetailPanel\n ? enableExpandAll\n ? 60\n : 70\n : 100,\n tableOptions,\n }),\n }\n}\n","import { type MVT_ColumnDef, type MVT_RowData, type MVT_StatefulTableOptions } from '../../types'\nimport { defaultDisplayColumnProps } from '../../utils/displayColumn.utils'\n\nexport const getMVT_RowNumbersColumnDef = <TData extends MVT_RowData>(\n tableOptions: MVT_StatefulTableOptions<TData>,\n): MVT_ColumnDef<TData> | null => {\n const { localization, rowNumberDisplayMode } = tableOptions\n const {\n pagination: { pageIndex, pageSize },\n } = tableOptions.state\n\n return {\n Cell: ({ renderedRowIndex = 0, row }) =>\n ((rowNumberDisplayMode === 'static' ? renderedRowIndex + pageSize * pageIndex : row.index) ??\n 0) + 1,\n grow: false,\n Header: () => localization.rowNumber,\n ...defaultDisplayColumnProps({\n header: 'rowNumbers',\n id: 'mvt-row-numbers',\n size: 50,\n tableOptions,\n }),\n }\n}\n","import { ActionIcon, Tooltip } from '@mantine-vue/core'\nimport { defineComponent, h, ref, type PropType } from 'vue'\nimport type { MVT_Row, MVT_RowData, MVT_TableInstance } from '../../types'\n\nexport const MVT_RowPinButton = defineComponent({\n name: 'MVTRowPinButton',\n inheritAttrs: false,\n props: {\n pinningPosition: { type: String as PropType<'bottom' | 'top'>, required: true },\n row: { type: Object as PropType<MVT_Row<MVT_RowData>>, required: true },\n table: { type: Object as PropType<MVT_TableInstance<MVT_RowData>>, required: true },\n },\n setup(props, { attrs }) {\n const opened = ref(false)\n return () => {\n const { row, table } = props\n const pinned = row.getIsPinned()\n const label = pinned ? table.options.localization.unpin : table.options.localization.pin\n return h(Tooltip, { label, openDelay: 1000, opened: opened.value }, () =>\n h(\n ActionIcon,\n {\n 'aria-label': table.options.localization.pin,\n color: 'gray',\n size: 'xs',\n style: { height: '24px', width: '24px' },\n variant: 'subtle',\n ...attrs,\n onMouseenter: () => {\n opened.value = true\n },\n onMouseleave: () => {\n opened.value = false\n },\n onClick: (event: MouseEvent) => {\n opened.value = false\n event.stopPropagation()\n row.pin(pinned ? false : props.pinningPosition)\n },\n } as any,\n () =>\n pinned\n ? h(table.options.icons.IconX)\n : h(table.options.icons.IconPinned, {\n style: {\n transform: `rotate(${table.options.rowPinningDisplayMode === 'sticky' ? 135 : props.pinningPosition === 'top' ? 180 : 0}deg)`,\n },\n }),\n ),\n )\n }\n },\n})\n","import { Box } from '@mantine-vue/core'\nimport { defineComponent, h, type PropType } from 'vue'\nimport type { MVT_Row, MVT_RowData, MVT_TableInstance } from '../../types'\nimport { parseFromValuesOrFunc } from '../../utils/utils'\nimport { MVT_RowPinButton } from '../buttons/MVT_RowPinButton'\n\nexport const MVT_TableBodyRowPinButton = defineComponent({\n name: 'MVTTableBodyRowPinButton',\n inheritAttrs: false,\n props: {\n row: { type: Object as PropType<MVT_Row<MVT_RowData>>, required: true },\n table: { type: Object as PropType<MVT_TableInstance<MVT_RowData>>, required: true },\n },\n setup(props, { attrs }) {\n return () => {\n const { row, table } = props\n if (!parseFromValuesOrFunc(table.options.enableRowPinning, row as any)) return null\n const common = { ...attrs, row, table }\n if (table.options.rowPinningDisplayMode === 'top-and-bottom' && !row.getIsPinned()) {\n return h(\n Box,\n {\n style: {\n display: 'flex',\n flexDirection: table.getState().density === 'xs' ? 'row' : 'column',\n },\n },\n () => [\n h(MVT_RowPinButton, { ...common, pinningPosition: 'top' } as any),\n h(MVT_RowPinButton, { ...common, pinningPosition: 'bottom' } as any),\n ],\n )\n }\n return h(MVT_RowPinButton, {\n ...common,\n pinningPosition: table.options.rowPinningDisplayMode === 'bottom' ? 'bottom' : 'top',\n } as any)\n }\n },\n})\n","import { h } from 'vue'\n\nimport { MVT_TableBodyRowPinButton } from '../../components/body/MVT_TableBodyRowPinButton'\nimport { type MVT_ColumnDef, type MVT_RowData, type MVT_StatefulTableOptions } from '../../types'\nimport { defaultDisplayColumnProps } from '../../utils/displayColumn.utils'\n\nexport const getMVT_RowPinningColumnDef = <TData extends MVT_RowData>(\n tableOptions: MVT_StatefulTableOptions<TData>,\n): MVT_ColumnDef<TData> | null => {\n return {\n Cell: ({ row, table }) => h(MVT_TableBodyRowPinButton, { row, table } as any),\n grow: false,\n ...defaultDisplayColumnProps({\n header: 'pin',\n id: 'mvt-row-pin',\n size: 60,\n tableOptions,\n }),\n }\n}\n","import { compareItems, type RankingInfo } from '@tanstack/match-sorter-utils'\nimport { type Row, sortingFns } from '@tanstack/vue-table'\n\nimport { type MVT_Row, type MVT_RowData } from '../types'\n\nconst fuzzy = <TData extends MVT_RowData>(rowA: Row<TData>, rowB: Row<TData>, columnId: string) => {\n let dir = 0\n if (rowA.columnFiltersMeta[columnId]) {\n dir = compareItems(\n rowA.columnFiltersMeta[columnId] as RankingInfo,\n rowB.columnFiltersMeta[columnId] as RankingInfo,\n )\n }\n // Provide a fallback for when the item ranks are equal\n return dir === 0 ? sortingFns.alphanumeric(rowA as Row<any>, rowB as Row<any>, columnId) : dir\n}\n\nexport const MVT_SortingFns = {\n ...sortingFns,\n fuzzy,\n}\n\nexport const rankGlobalFuzzy = <TData extends MVT_RowData>(\n rowA: MVT_Row<TData>,\n rowB: MVT_Row<TData>,\n) =>\n Math.max(...Object.values(rowB.columnFiltersMeta).map((v: any) => v.rank)) -\n Math.max(...Object.values(rowA.columnFiltersMeta).map((v: any) => v.rank))\n","import { rankGlobalFuzzy } from '../fns/sortingFns'\nimport {\n getServerGroupingManager,\n isServerGroupingRecordSelected,\n toggleServerGroupingRecordSelected,\n} from '../server-grouping/serverGroupingSelection'\nimport { type MVT_Row, type MVT_RowData, type MVT_TableInstance } from '../types'\nimport { parseFromValuesOrFunc } from './utils'\n\nexport const getMVT_Rows = <TData extends MVT_RowData>(\n table: MVT_TableInstance<TData>,\n all?: boolean,\n): MVT_Row<TData>[] => {\n const {\n getCenterRows,\n getPrePaginationRowModel,\n getRowModel,\n getState,\n getTopRows,\n options: {\n createDisplayMode,\n enablePagination,\n enableRowPinning,\n manualPagination,\n positionCreatingRow,\n rowPinningDisplayMode,\n },\n } = table\n const { creatingRow, pagination } = getState()\n\n const isRankingRows = getIsRankingRows(table)\n\n let rows: MVT_Row<TData>[] = []\n if (!isRankingRows) {\n rows =\n !enableRowPinning || rowPinningDisplayMode?.includes('sticky')\n ? all\n ? getPrePaginationRowModel().rows\n : getRowModel().rows\n : getCenterRows()\n } else {\n // fuzzy ranking adjustments\n rows = getPrePaginationRowModel().rows.sort((a, b) => rankGlobalFuzzy(a, b))\n if (enablePagination && !manualPagination && !all) {\n const start = pagination.pageIndex * pagination.pageSize\n rows = rows.slice(start, start + pagination.pageSize)\n }\n if (enableRowPinning && !rowPinningDisplayMode?.includes('sticky')) {\n // \"re-center-ize\" the rows (no top or bottom pinned rows unless sticky)\n rows = rows.filter((row) => !row.getIsPinned())\n }\n }\n // row pinning adjustments\n if (enableRowPinning && rowPinningDisplayMode?.includes('sticky')) {\n const centerPinnedRowIds = rows.filter((row) => row.getIsPinned()).map((r) => r.id)\n\n rows = [...getTopRows().filter((row) => !centerPinnedRowIds.includes(row.id)), ...rows]\n }\n // blank inserted creating row adjustments\n if (positionCreatingRow !== undefined && creatingRow && createDisplayMode === 'row') {\n const creatingRowIndex = !isNaN(+positionCreatingRow)\n ? +positionCreatingRow\n : positionCreatingRow === 'top'\n ? 0\n : rows.length\n rows = [...rows.slice(0, creatingRowIndex), creatingRow, ...rows.slice(creatingRowIndex)]\n }\n\n return rows\n}\n\nexport const getCanRankRows = <TData extends MVT_RowData>(table: MVT_TableInstance<TData>) => {\n const {\n getState,\n options: {\n enableGlobalFilterRankedResults,\n manualExpanding,\n manualFiltering,\n manualGrouping,\n manualSorting,\n },\n } = table\n const { expanded, globalFilterFn } = getState()\n\n return (\n !manualExpanding &&\n !manualFiltering &&\n !manualGrouping &&\n !manualSorting &&\n enableGlobalFilterRankedResults &&\n globalFilterFn === 'fuzzy' &&\n expanded !== true &&\n !Object.values(expanded).some(Boolean)\n )\n}\n\nexport const getIsRankingRows = <TData extends MVT_RowData>(table: MVT_TableInstance<TData>) => {\n const { globalFilter, sorting } = table.getState()\n\n return getCanRankRows(table) && globalFilter && !Object.values(sorting).some(Boolean)\n}\n\nexport const getIsRowSelected = <TData extends MVT_RowData>({\n row,\n table,\n}: {\n row: MVT_Row<TData>\n table: MVT_TableInstance<TData>\n}) => {\n const {\n options: { enableRowSelection },\n } = table\n\n // Server-grouping records may be selected through an all-matching query.\n if (getServerGroupingManager(table as MVT_TableInstance<any>)) {\n return isServerGroupingRecordSelected(\n table as MVT_TableInstance<any>,\n row as MVT_Row<MVT_RowData>,\n )\n }\n\n return (\n row.getIsSelected() ||\n (parseFromValuesOrFunc(enableRowSelection, row) &&\n row.getCanSelectSubRows() &&\n row.getIsAllSubRowsSelected())\n )\n}\n\nexport const getMVT_RowSelectionHandler =\n <TData extends MVT_RowData>({\n renderedRowIndex = 0,\n row,\n table,\n }: {\n renderedRowIndex?: number\n row: MVT_Row<TData>\n table: MVT_TableInstance<TData>\n }) =>\n (event: Event, value?: boolean) => {\n const {\n getState,\n options: {\n enableBatchRowSelection,\n enableMultiRowSelection,\n enableRowPinning,\n manualPagination,\n rowPinningDisplayMode,\n },\n refs: { lastSelectedRowId },\n } = table\n const {\n pagination: { pageIndex, pageSize },\n } = getState()\n\n const paginationOffset = manualPagination ? 0 : pageSize * pageIndex\n\n const wasCurrentRowChecked = getIsRowSelected({ row, table })\n\n // Provider rows require direct selection-state updates.\n if (getServerGroupingManager(table as MVT_TableInstance<any>)) {\n toggleServerGroupingRecordSelected(\n table as MVT_TableInstance<any>,\n row as MVT_Row<MVT_RowData>,\n value ?? !wasCurrentRowChecked,\n {\n batch:\n !!enableBatchRowSelection &&\n enableMultiRowSelection !== false &&\n (event as MouseEvent).shiftKey,\n lastSelectedRowId: lastSelectedRowId.value,\n },\n )\n lastSelectedRowId.value = row.id\n return\n }\n\n // toggle selection of this row\n row.toggleSelected(value ?? !wasCurrentRowChecked)\n\n const changedRowIds = new Set<string>([row.id])\n\n // if shift key is pressed, select all rows between last selected and this one\n if (\n enableBatchRowSelection &&\n enableMultiRowSelection &&\n (event as MouseEvent).shiftKey &&\n lastSelectedRowId.value !== null\n ) {\n const rows = getMVT_Rows(table, true)\n\n const lastIndex = rows.findIndex((r) => r.id === lastSelectedRowId.value)\n\n if (lastIndex !== -1) {\n const isLastIndexChecked = getIsRowSelected({\n row: rows?.[lastIndex],\n table,\n })\n\n const currentIndex = renderedRowIndex + paginationOffset\n const [start, end] =\n lastIndex < currentIndex ? [lastIndex, currentIndex] : [currentIndex, lastIndex]\n\n // toggle selection of all rows between last selected and this one\n // but only if the last selected row is not the same as the current one\n if (wasCurrentRowChecked !== isLastIndexChecked) {\n for (let i = start; i <= end; i++) {\n rows[i].toggleSelected(!wasCurrentRowChecked)\n changedRowIds.add(rows[i].id)\n }\n }\n }\n }\n\n // record the last selected row id\n lastSelectedRowId.value = row.id\n\n // if all sub rows were selected, unselect them\n if (row.getCanSelectSubRows() && row.getIsAllSubRowsSelected()) {\n row.subRows?.forEach((r) => r.toggleSelected(false))\n }\n\n if (enableRowPinning && rowPinningDisplayMode?.includes('select')) {\n changedRowIds.forEach((rowId) => {\n const rowToTogglePin = table.getRow(rowId)\n rowToTogglePin.pin(\n !wasCurrentRowChecked //was not previously pinned or selected\n ? rowPinningDisplayMode?.includes('bottom')\n ? 'bottom'\n : 'top'\n : false,\n )\n })\n }\n }\n\nexport const getMVT_SelectAllHandler =\n <TData extends MVT_RowData>({ table }: { table: MVT_TableInstance<TData> }) =>\n (event: Event, value?: boolean, forceAll?: boolean) => {\n const {\n options: { enableRowPinning, rowPinningDisplayMode, selectAllMode },\n refs: { lastSelectedRowId },\n } = table\n\n if (selectAllMode === 'all' || forceAll) {\n table.toggleAllRowsSelected(value ?? (event.target as HTMLInputElement).checked)\n } else {\n table.toggleAllPageRowsSelected(value ?? (event.target as HTMLInputElement).checked)\n }\n if (enableRowPinning && rowPinningDisplayMode?.includes('select')) {\n table.setRowPinning({ bottom: [], top: [] })\n }\n lastSelectedRowId.value = null\n }\n","import { Checkbox, Radio, Switch, Tooltip } from '@mantine-vue/core'\nimport { defineComponent, h, type PropType } from 'vue'\nimport type { MVT_Row, MVT_RowData, MVT_TableInstance } from '../../types'\nimport {\n getIsRowSelected,\n getMVT_RowSelectionHandler,\n getMVT_SelectAllHandler,\n} from '../../utils/row.utils'\nimport {\n getServerGroupingManager,\n getServerGroupingSelectionSummary,\n isServerGroupingRecordSelected,\n toggleAllServerGroupingRecordsSelected,\n} from '../../server-grouping/serverGroupingSelection'\nimport { parseFromValuesOrFunc } from '../../utils/utils'\n\nexport const MVT_SelectCheckbox = defineComponent({\n name: 'MVTSelectCheckbox',\n inheritAttrs: false,\n props: {\n renderedRowIndex: { type: Number, default: 0 },\n row: { type: Object as PropType<MVT_Row<MVT_RowData>>, default: undefined },\n table: { type: Object as PropType<MVT_TableInstance<MVT_RowData>>, required: true },\n },\n setup(props, { attrs }) {\n let lastShiftKey = false\n return () => {\n const { row, table } = props\n const o = table.options\n const state = table.getState()\n const selectAll = !row\n // Provider rows live outside TanStack's row model.\n const anyTable = table as MVT_TableInstance<any>\n const serverGroupingSummary =\n selectAll && getServerGroupingManager(anyTable)\n ? getServerGroupingSelectionSummary(anyTable)\n : undefined\n const isServerGrouping = !!getServerGroupingManager(anyTable)\n const checked = serverGroupingSummary\n ? serverGroupingSummary.isAll\n : selectAll\n ? o.selectAllMode === 'page'\n ? table.getIsAllPageRowsSelected()\n : table.getIsAllRowsSelected()\n : //record rows honor exclude mode (\"all matching records\")\n isServerGrouping && row\n ? isServerGroupingRecordSelected(anyTable, row)\n : getIsRowSelected({ row, table })\n const checkboxProps = {\n ...(selectAll\n ? parseFromValuesOrFunc(o.mantineSelectAllCheckboxProps, { table })\n : parseFromValuesOrFunc(o.mantineSelectCheckboxProps, { row, table })),\n ...attrs,\n } as Record<string, any>\n const label =\n checkboxProps.title ??\n (selectAll ? o.localization.toggleSelectAll : o.localization.toggleSelectRow)\n const selection = row\n ? getMVT_RowSelectionHandler({ renderedRowIndex: props.renderedRowIndex, row, table })\n : serverGroupingSummary\n ? (event: Event) =>\n toggleAllServerGroupingRecordsSelected(\n anyTable,\n (event.target as HTMLInputElement)?.checked ?? !serverGroupingSummary.isAll,\n )\n : getMVT_SelectAllHandler({ table })\n const common = {\n 'aria-label': label,\n checked,\n disabled:\n state.isLoading ||\n (row && !row.getCanSelect()) ||\n row?.id === 'mvt-row-create' ||\n // Keep the control enabled when it can clear an off-screen selection.\n (serverGroupingSummary?.selectableCount === 0 &&\n serverGroupingSummary.selectedRowIds.length === 0),\n size: state.density === 'xs' ? 'sm' : 'md',\n ...checkboxProps,\n title: undefined,\n onChange: (nextChecked: boolean) => {\n selection({ shiftKey: lastShiftKey } as unknown as Event, nextChecked)\n checkboxProps.onChange?.(nextChecked)\n lastShiftKey = false\n },\n onClick: (event: MouseEvent) => {\n event.stopPropagation()\n lastShiftKey = event.shiftKey\n checkboxProps.onClick?.(event)\n },\n }\n const control =\n o.selectDisplayMode === 'switch'\n ? h(Switch, common as any)\n : o.selectDisplayMode === 'radio' || o.enableMultiRowSelection === false\n ? h(Radio, common as any)\n : h(Checkbox, {\n indeterminate: serverGroupingSummary\n ? serverGroupingSummary.isSome\n : !checked && selectAll\n ? table.getIsSomeRowsSelected()\n : row?.getIsSomeSelected() && row.getCanSelectSubRows(),\n ...common,\n } as any)\n return h(Tooltip, { label, openDelay: 1000, withinPortal: true }, () =>\n h('span', null, control),\n )\n }\n },\n})\n","import { h } from 'vue'\n\nimport { MVT_SelectCheckbox } from '../../components/inputs/MVT_SelectCheckbox'\nimport { type MVT_ColumnDef, type MVT_RowData, type MVT_StatefulTableOptions } from '../../types'\nimport { defaultDisplayColumnProps } from '../../utils/displayColumn.utils'\n\nexport const getMVT_RowSelectColumnDef = <TData extends MVT_RowData>(\n tableOptions: MVT_StatefulTableOptions<TData>,\n): MVT_ColumnDef<TData> | null => {\n const { enableMultiRowSelection, enableSelectAll } = tableOptions\n\n return {\n Cell: ({ renderedRowIndex, row, table }) =>\n h(MVT_SelectCheckbox, { renderedRowIndex, row, table } as any),\n grow: false,\n Header:\n enableSelectAll && enableMultiRowSelection\n ? ({ table }) => h(MVT_SelectCheckbox, { table } as any)\n : undefined,\n ...defaultDisplayColumnProps({\n header: 'select',\n id: 'mvt-row-select',\n size: enableSelectAll ? 60 : 70,\n tableOptions,\n }),\n }\n}\n","import { aggregationFns } from '@tanstack/vue-table'\n\nexport const MVT_AggregationFns = { ...aggregationFns }\n","import { type RankingInfo, rankings, rankItem } from '@tanstack/match-sorter-utils'\nimport { filterFns, type Row } from '@tanstack/vue-table'\n\nimport { type MVT_FilterOption, type MVT_Localization, type MVT_RowData } from '../types'\n\nconst fuzzy = <TData extends MVT_RowData>(\n row: Row<TData>,\n columnId: string,\n filterValue: number | string,\n addMeta: (item: RankingInfo) => void,\n) => {\n const itemRank = rankItem(row.getValue(columnId), filterValue as string, {\n threshold: rankings.MATCHES,\n })\n addMeta(itemRank)\n return itemRank.passed\n}\n\nfuzzy.autoRemove = (val: any) => !val\n\nconst contains = <TData extends MVT_RowData>(\n row: Row<TData>,\n id: string,\n filterValue: number | string,\n) =>\n row\n .getValue<number | string>(id)\n ?.toString()\n .toLowerCase()\n .trim()\n .includes(filterValue.toString().toLowerCase().trim())\n\ncontains.autoRemove = (val: any) => !val\n\nconst startsWith = <TData extends MVT_RowData>(\n row: Row<TData>,\n id: string,\n filterValue: number | string,\n) =>\n row\n .getValue<number | string>(id)\n ?.toString()\n .toLowerCase()\n .trim()\n .startsWith(filterValue.toString().toLowerCase().trim())\n\nstartsWith.autoRemove = (val: any) => !val\n\nconst endsWith = <TData extends MVT_RowData>(\n row: Row<TData>,\n id: string,\n filterValue: number | string,\n) =>\n row\n .getValue<number | string>(id)\n ?.toString()\n .toLowerCase()\n .trim()\n .endsWith(filterValue.toString().toLowerCase().trim())\n\nendsWith.autoRemove = (val: any) => !val\n\nconst equals = <TData extends MVT_RowData>(\n row: Row<TData>,\n id: string,\n filterValue: number | string,\n) =>\n row.getValue<number | string>(id)?.toString().toLowerCase().trim() ===\n filterValue?.toString().toLowerCase().trim()\n\nequals.autoRemove = (val: any) => !val\n\nconst notEquals = <TData extends MVT_RowData>(\n row: Row<TData>,\n id: string,\n filterValue: number | string,\n) =>\n row.getValue<number | string>(id)?.toString().toLowerCase().trim() !==\n filterValue.toString().toLowerCase().trim()\n\nnotEquals.autoRemove = (val: any) => !val\n\nconst greaterThan = <TData extends MVT_RowData>(\n row: Row<TData>,\n id: string,\n filterValue: number | string,\n) =>\n !isNaN(+filterValue) && !isNaN(+row.getValue<number | string>(id))\n ? +row.getValue<number | string>(id) > +filterValue\n : row.getValue<number | string>(id)?.toString().toLowerCase().trim() >\n filterValue?.toString().toLowerCase().trim()\n\ngreaterThan.autoRemove = (val: any) => !val\n\nconst greaterThanOrEqualTo = <TData extends MVT_RowData>(\n row: Row<TData>,\n id: string,\n filterValue: number | string,\n) => equals(row, id, filterValue) || greaterThan(row, id, filterValue)\n\ngreaterThanOrEqualTo.autoRemove = (val: any) => !val\n\nconst lessThan = <TData extends MVT_RowData>(\n row: Row<TData>,\n id: string,\n filterValue: number | string,\n) =>\n !isNaN(+filterValue) && !isNaN(+row.getValue<number | string>(id))\n ? +row.getValue<number | string>(id) < +filterValue\n : row.getValue<number | string>(id)?.toString().toLowerCase().trim() <\n filterValue?.toString().toLowerCase().trim()\n\nlessThan.autoRemove = (val: any) => !val\n\nconst lessThanOrEqualTo = <TData extends MVT_RowData>(\n row: Row<TData>,\n id: string,\n filterValue: number | string,\n) => equals(row, id, filterValue) || lessThan(row, id, filterValue)\n\nlessThanOrEqualTo.autoRemove = (val: any) => !val\n\nconst between = <TData extends MVT_RowData>(\n row: Row<TData>,\n id: string,\n filterValues: [number | string, number | string],\n) =>\n ((['', undefined] as any[]).includes(filterValues[0]) || greaterThan(row, id, filterValues[0])) &&\n ((!isNaN(+filterValues[0]) && !isNaN(+filterValues[1]) && +filterValues[0] > +filterValues[1]) ||\n (['', undefined] as any[]).includes(filterValues[1]) ||\n lessThan(row, id, filterValues[1]))\n\nbetween.autoRemove = (val: any) => !val\n\nconst betweenInclusive = <TData extends MVT_RowData>(\n row: Row<TData>,\n id: string,\n filterValues: [number | string, number | string],\n) =>\n ((['', undefined] as any[]).includes(filterValues[0]) ||\n greaterThanOrEqualTo(row, id, filterValues[0])) &&\n ((!isNaN(+filterValues[0]) && !isNaN(+filterValues[1]) && +filterValues[0] > +filterValues[1]) ||\n (['', undefined] as any[]).includes(filterValues[1]) ||\n lessThanOrEqualTo(row, id, filterValues[1]))\n\nbetweenInclusive.autoRemove = (val: any) => !val\n\nconst empty = <TData extends MVT_RowData>(\n row: Row<TData>,\n id: string,\n _filterValue: number | string,\n) => !row.getValue<number | string>(id)?.toString().trim()\n\nempty.autoRemove = (val: any) => !val\n\nconst notEmpty = <TData extends MVT_RowData>(\n row: Row<TData>,\n id: string,\n _filterValue: number | string,\n) => !!row.getValue<number | string>(id)?.toString().trim()\n\nnotEmpty.autoRemove = (val: any) => !val\n\nexport const MVT_FilterFns = {\n ...filterFns,\n between,\n betweenInclusive,\n contains,\n empty,\n endsWith,\n equals,\n fuzzy,\n greaterThan,\n greaterThanOrEqualTo,\n lessThan,\n lessThanOrEqualTo,\n notEmpty,\n notEquals,\n startsWith,\n}\n\nexport function localizedFilterOption(localization: MVT_Localization, option: MVT_FilterOption) {\n if (!option) {\n return ''\n }\n const key = `filter${option[0].toUpperCase()}${option.slice(1)}`\n return localization[key as keyof MVT_Localization] ?? ''\n}\n","import {\n IconArrowAutofitContent,\n IconArrowsSort,\n IconBaselineDensityLarge,\n IconBaselineDensityMedium,\n IconBaselineDensitySmall,\n IconBoxMultiple,\n IconChevronDown,\n IconChevronLeft,\n IconChevronLeftPipe,\n IconChevronRight,\n IconChevronRightPipe,\n IconChevronsDown,\n IconCircleX,\n IconClearAll,\n IconColumns,\n IconDeviceFloppy,\n IconDots,\n IconDotsVertical,\n IconEdit,\n IconEyeOff,\n IconFilter,\n IconFilterCog,\n IconFilterOff,\n IconGripHorizontal,\n IconMaximize,\n IconMinimize,\n IconPinned,\n IconPinnedOff,\n IconSearch,\n IconSearchOff,\n IconSortAscending,\n IconSortDescending,\n IconX,\n} from '@tabler/icons-vue'\n\nexport const MVT_Default_Icons = {\n IconArrowAutofitContent,\n IconArrowsSort,\n IconBaselineDensityLarge,\n IconBaselineDensityMedium,\n IconBaselineDensitySmall,\n IconBoxMultiple,\n IconChevronDown,\n IconChevronLeft,\n IconChevronLeftPipe,\n IconChevronRight,\n IconChevronRightPipe,\n IconChevronsDown,\n IconCircleX,\n IconClearAll,\n IconColumns,\n IconDeviceFloppy,\n IconDots,\n IconDotsVertical,\n IconEdit,\n IconEyeOff,\n IconFilter,\n IconFilterCog,\n IconFilterOff,\n IconGripHorizontal,\n IconMaximize,\n IconMinimize,\n IconPinned,\n IconPinnedOff,\n IconSearch,\n IconSearchOff,\n IconSortAscending,\n IconSortDescending,\n IconX,\n} as const\n\nexport type MVT_Icons = Record<keyof typeof MVT_Default_Icons, any>\n","import { type MVT_Localization } from '..'\n\nexport const MVT_Localization_EN: MVT_Localization = {\n actions: 'Actions',\n allMatchingRecordsSelected: 'All records matching the current filters are selected',\n and: 'and',\n cancel: 'Cancel',\n changeFilterMode: 'Change filter mode',\n changeSearchMode: 'Change search mode',\n clearFilter: 'Clear filter',\n clearSearch: 'Clear search',\n clearGrouping: 'Clear grouping',\n clearSelection: 'Clear selection',\n clearSort: 'Clear sort',\n clickToCopy: 'Click to copy',\n copy: 'Copy',\n collapse: 'Collapse',\n collapseAll: 'Collapse all',\n columnActions: 'Column Actions',\n copiedToClipboard: 'Copied to clipboard',\n dropToGroupBy: 'Drop to group by {column}',\n edit: 'Edit',\n errorLoadingData: 'Error loading data',\n expand: 'Expand',\n expandAll: 'Expand all',\n filterArrIncludes: 'Includes',\n filterArrIncludesAll: 'Includes all',\n filterArrIncludesSome: 'Includes',\n filterBetween: 'Between',\n filterBetweenInclusive: 'Between Inclusive',\n filterByColumn: 'Filter by {column}',\n filterContains: 'Contains',\n filterEmpty: 'Empty',\n filterEndsWith: 'Ends With',\n filterEquals: 'Equals',\n filterEqualsString: 'Equals',\n filterFuzzy: 'Fuzzy',\n filterGreaterThan: 'Greater Than',\n filterGreaterThanOrEqualTo: 'Greater Than Or Equal To',\n filterInNumberRange: 'Between',\n filterIncludesString: 'Contains',\n filterIncludesStringSensitive: 'Contains',\n filterLessThan: 'Less Than',\n filterLessThanOrEqualTo: 'Less Than Or Equal To',\n filterMode: 'Filter Mode: {filterType}',\n filterNotEmpty: 'Not Empty',\n filterNotEquals: 'Not Equals',\n filterStartsWith: 'Starts With',\n filterWeakEquals: 'Equals',\n filteringByColumn: 'Filtering by {column} - {filterType} {filterValue}',\n goToFirstPage: 'Go to first page',\n goToLastPage: 'Go to last page',\n goToNextPage: 'Go to next page',\n goToPreviousPage: 'Go to previous page',\n grab: 'Grab',\n groupBy: 'Group by',\n groupByColumn: 'Group by {column}',\n groupedBy: 'Grouped by ',\n hideAll: 'Hide all',\n hideColumn: 'Hide {column} column',\n loading: 'Loading…',\n max: 'Max',\n min: 'Min',\n move: 'Move',\n moveDown: 'Move down',\n moveUp: 'Move up',\n noGroupableColumns: 'No groupable columns',\n noRecordsToDisplay: 'No records to display',\n noResultsFound: 'No results found',\n of: 'of',\n or: 'or',\n pin: 'Pin',\n pinToLeft: 'Pin to left',\n pinToRight: 'Pin to right',\n resetColumnSize: 'Reset column size',\n resetOrder: 'Reset order',\n retry: 'Retry',\n rowActions: 'Row Actions',\n rowNumber: '#',\n rowNumbers: 'Row Numbers',\n rowsPerPage: 'Rows per page',\n save: 'Save',\n search: 'Search',\n selectedCountOfRowCountRowsSelected: '{selectedCount} of {rowCount} row(s) selected',\n selectedCountRowsSelected: '{selectedCount} row(s) selected',\n select: 'Select',\n selectAllMatching: 'Select all matching records',\n showAll: 'Show all',\n showAllColumns: 'Show all columns',\n showHideColumns: 'Show/Hide columns',\n showHideFilters: 'Show/Hide filters',\n showHideSearch: 'Show/Hide search',\n sortByColumnAsc: 'Sort by {column} ascending',\n sortByColumnDesc: 'Sort by {column} descending',\n sortedByColumnAsc: 'Sorted by {column} ascending',\n sortedByColumnDesc: 'Sorted by {column} descending',\n thenBy: ', then by ',\n toggleDensity: 'Toggle density',\n toggleFullScreen: 'Toggle full screen',\n toggleSelectAll: 'Toggle select all',\n toggleSelectRow: 'Toggle select row',\n toggleVisibility: 'Toggle visibility',\n ungroupByColumn: 'Ungroup by {column}',\n unpin: 'Unpin',\n unpinAll: 'Unpin all',\n}\n","/* oxlint-disable prefer-const */\n\nimport {\n getCoreRowModel,\n getExpandedRowModel,\n getFacetedMinMaxValues,\n getFacetedRowModel,\n getFacetedUniqueValues,\n getFilteredRowModel,\n getGroupedRowModel,\n getPaginationRowModel,\n getSortedRowModel,\n} from '@tanstack/vue-table'\n\nimport { useDirection } from '@mantine-vue/core'\n\nimport { MVT_AggregationFns } from '../fns/aggregationFns'\nimport { MVT_FilterFns } from '../fns/filterFns'\nimport { MVT_SortingFns } from '../fns/sortingFns'\nimport { MVT_Default_Icons } from '../icons'\nimport { MVT_Localization_EN } from '../locales/en'\nimport { type MVT_DefinedTableOptions, type MVT_RowData, type MVT_TableOptions } from '../types'\nimport { getAllLeafColumnDefs, getColumnId } from '../utils/column.utils'\n\nexport const MVT_DefaultColumn = {\n filterVariant: 'text',\n maxSize: 1000,\n minSize: 40,\n size: 180,\n} as const\n\nexport const MVT_DefaultDisplayColumn = {\n columnDefType: 'display',\n enableClickToCopy: false,\n enableColumnActions: false,\n enableColumnDragging: false,\n enableColumnFilter: false,\n enableColumnOrdering: false,\n enableEditing: false,\n enableGlobalFilter: false,\n enableGrouping: false,\n enableHiding: false,\n enableResizing: false,\n enableSorting: false,\n} as const\n\n/**\n * Applies MVT's option defaults\n */\nexport const useMVT_TableOptions: <TData extends MVT_RowData>(\n tableOptions: MVT_TableOptions<TData>,\n) => MVT_DefinedTableOptions<TData> = <TData extends MVT_RowData>(\n rawOptions: MVT_TableOptions<TData>,\n) => {\n let {\n aggregationFns,\n autoResetExpanded = false,\n columnFilterDisplayMode = 'subheader',\n columnResizeDirection,\n columnResizeMode = 'onChange',\n createDisplayMode = 'modal',\n defaultColumn,\n defaultDisplayColumn,\n editDisplayMode = 'modal',\n enableBatchRowSelection = true,\n enableBottomToolbar = true,\n enableColumnActions = true,\n enableColumnFilters = true,\n enableColumnOrdering = false,\n enableColumnPinning = false,\n enableColumnResizing = false,\n enableColumnVirtualization,\n enableDensityToggle = true,\n enableExpandAll = true,\n enableExpanding,\n enableFacetedValues = false,\n enableFilterMatchHighlighting = true,\n enableFilters = true,\n enableFullScreenToggle = true,\n enableGlobalFilter = true,\n enableGlobalFilterRankedResults = true,\n enableGrouping = false,\n enableHeaderActionsHoverReveal = false,\n enableHiding = true,\n enableMultiRowSelection = true,\n enableMultiSort = true,\n enablePagination = true,\n enableRowPinning = false,\n enableRowSelection = false,\n enableRowVirtualization,\n enableSelectAll = true,\n enableSorting = true,\n enableStickyHeader = false,\n enableTableFooter = true,\n enableTableHead = true,\n enableToolbarInternalActions = true,\n enableTopToolbar = true,\n filterFns,\n icons,\n layoutMode,\n localization,\n manualFiltering,\n manualGrouping,\n manualPagination,\n manualSorting,\n paginationDisplayMode = 'default',\n positionActionsColumn = 'first',\n positionCreatingRow = 'top',\n positionExpandColumn = 'first',\n positionGlobalFilter = 'right',\n positionPagination = 'bottom',\n positionToolbarAlertBanner = 'top',\n positionToolbarDropZone = 'top',\n rowNumberDisplayMode = 'static',\n rowPinningDisplayMode = 'sticky',\n selectAllMode = 'page',\n sortingFns,\n ...rest\n } = rawOptions\n\n const direction = useDirection()\n\n icons = { ...MVT_Default_Icons, ...icons }\n localization = {\n ...MVT_Localization_EN,\n ...localization,\n }\n aggregationFns = { ...MVT_AggregationFns, ...aggregationFns }\n filterFns = { ...MVT_FilterFns, ...filterFns }\n sortingFns = { ...MVT_SortingFns, ...sortingFns }\n defaultColumn = { ...MVT_DefaultColumn, ...defaultColumn }\n defaultDisplayColumn = {\n ...MVT_DefaultDisplayColumn,\n ...defaultDisplayColumn,\n }\n\n if (!columnResizeDirection) {\n columnResizeDirection = direction.dir.value || 'ltr'\n }\n\n layoutMode = layoutMode || (enableColumnResizing ? 'grid-no-grow' : 'semantic')\n if (layoutMode === 'semantic' && (enableRowVirtualization || enableColumnVirtualization)) {\n layoutMode = 'grid'\n }\n\n if (enableRowVirtualization) {\n enableStickyHeader = true\n }\n\n if (enablePagination === false && manualPagination === undefined) {\n manualPagination = true\n }\n\n if (!rest.data?.length) {\n manualFiltering = true\n manualGrouping = true\n manualPagination = true\n manualSorting = true\n }\n\n // The provider owns server-grouped pagination, sorting, and filtering.\n if (rest.serverGrouping?.provider && rest.serverGrouping.enabled !== false) {\n if (enableGrouping || rawOptions.manualGrouping) {\n // oxlint-disable-next-line no-console\n console.warn(\n '[mantine-vue-table] `serverGrouping` cannot be combined with client-side ' +\n '`enableGrouping` or `manualGrouping`. Disable one of them — ' +\n '`serverGrouping` will take precedence for rendering.',\n )\n }\n manualFiltering = true\n manualPagination = true\n manualSorting = true\n\n // Server-grouping fields must not trigger TanStack's client-side column reorder.\n if (rawOptions.groupedColumnMode === undefined) {\n ;(rest as any).groupedColumnMode = false\n }\n\n // Seed the root toolbar from the fixed nested page size.\n const configuredPageSize =\n rest.serverGrouping.pagination?.defaultPageSize ?? rest.serverGrouping.initialPageSize\n const seededPageSize =\n Number.isInteger(configuredPageSize) && (configuredPageSize as number) > 0\n ? configuredPageSize\n : undefined\n if (seededPageSize && rawOptions.state?.pagination === undefined) {\n rest.initialState = {\n ...rest.initialState,\n pagination: {\n pageIndex: rest.initialState?.pagination?.pageIndex ?? 0,\n pageSize: rest.initialState?.pagination?.pageSize ?? seededPageSize,\n },\n }\n }\n\n // Controlled, initial, and static grouping values take precedence over the default.\n const { defaultGrouping } = rest.serverGrouping\n if (\n defaultGrouping?.length &&\n !rest.serverGrouping.grouping &&\n rawOptions.state?.grouping === undefined &&\n rest.initialState?.grouping === undefined\n ) {\n rest.initialState = { ...rest.initialState, grouping: [...defaultGrouping] }\n }\n\n // Custom backend descriptors may not correspond to table columns, so only warn.\n const configuredFields = [...(rest.serverGrouping.grouping ?? []), ...(defaultGrouping ?? [])]\n if (configuredFields.length) {\n const knownFields = new Set<string>([\n ...getAllLeafColumnDefs(rawOptions.columns).map((col) => getColumnId(col)),\n ...(rest.serverGrouping.groupBy?.columns ?? []),\n ])\n const unknownFields = [...new Set(configuredFields)].filter(\n (field) => !knownFields.has(field),\n )\n if (unknownFields.length) {\n // oxlint-disable-next-line no-console\n console.warn(\n `[mantine-vue-table] serverGrouping field(s) ${unknownFields\n .map((field) => `\"${field}\"`)\n .join(', ')} do not match any column id. ` +\n 'Custom backend descriptors are supported — declare them in ' +\n '`serverGrouping.groupBy.columns` to silence this warning and make ' +\n 'them selectable in the group-by toolbar.',\n )\n }\n }\n }\n\n const definedOptions = {\n aggregationFns,\n autoResetExpanded,\n columnFilterDisplayMode,\n columnResizeDirection,\n columnResizeMode,\n createDisplayMode,\n defaultColumn,\n defaultDisplayColumn,\n editDisplayMode,\n enableBatchRowSelection,\n enableBottomToolbar,\n enableColumnActions,\n enableColumnFilters,\n enableColumnOrdering,\n enableColumnPinning,\n enableColumnResizing,\n enableColumnVirtualization,\n enableDensityToggle,\n enableExpandAll,\n enableExpanding,\n enableFacetedValues,\n enableFilterMatchHighlighting,\n enableFilters,\n enableFullScreenToggle,\n enableGlobalFilter,\n enableGlobalFilterRankedResults,\n enableGrouping,\n enableHeaderActionsHoverReveal,\n enableHiding,\n enableMultiRowSelection,\n enableMultiSort,\n enablePagination,\n enableRowPinning,\n enableRowSelection,\n enableRowVirtualization,\n enableSelectAll,\n enableSorting,\n enableStickyHeader,\n enableTableFooter,\n enableTableHead,\n enableToolbarInternalActions,\n enableTopToolbar,\n filterFns,\n getCoreRowModel: getCoreRowModel(),\n getExpandedRowModel: enableExpanding || enableGrouping ? getExpandedRowModel() : undefined,\n getFacetedMinMaxValues: enableFacetedValues ? getFacetedMinMaxValues() : undefined,\n getFacetedRowModel: enableFacetedValues ? getFacetedRowModel() : undefined,\n getFacetedUniqueValues: enableFacetedValues ? getFacetedUniqueValues() : undefined,\n getFilteredRowModel:\n enableColumnFilters || enableGlobalFilter || enableFilters\n ? getFilteredRowModel()\n : undefined,\n getGroupedRowModel: enableGrouping ? getGroupedRowModel() : undefined,\n getPaginationRowModel: enablePagination ? getPaginationRowModel() : undefined,\n getSortedRowModel: enableSorting ? getSortedRowModel() : undefined,\n getSubRows: (row) => row?.subRows,\n icons,\n layoutMode,\n localization,\n manualFiltering,\n manualGrouping,\n manualPagination,\n manualSorting,\n paginationDisplayMode,\n positionActionsColumn,\n positionCreatingRow,\n positionExpandColumn,\n positionGlobalFilter,\n positionPagination,\n positionToolbarAlertBanner,\n positionToolbarDropZone,\n rowNumberDisplayMode,\n rowPinningDisplayMode,\n selectAllMode,\n sortingFns,\n ...rest,\n } as MVT_DefinedTableOptions<TData>\n\n Object.defineProperty(definedOptions, 'data', {\n configurable: true,\n enumerable: true,\n get: () => rawOptions.data,\n })\n Object.defineProperty(definedOptions, 'columns', {\n configurable: true,\n enumerable: true,\n get: () => rawOptions.columns,\n })\n Object.defineProperty(definedOptions, 'state', {\n configurable: true,\n enumerable: true,\n get: () => rawOptions.state,\n })\n Object.defineProperty(definedOptions, 'rowCount', {\n configurable: true,\n enumerable: true,\n get: () => rawOptions.rowCount,\n })\n\n return definedOptions\n}\n","import { MVT_DefaultDisplayColumn } from '../useMVT_TableOptions'\n\nimport { type MVT_ColumnDef, type MVT_RowData, type MVT_StatefulTableOptions } from '../../types'\nimport { defaultDisplayColumnProps } from '../../utils/displayColumn.utils'\n\nconst blankColProps = {\n children: null,\n style: {\n minWidth: 0,\n padding: 0,\n width: 0,\n },\n}\n\nexport const getMVT_RowSpacerColumnDef = <TData extends MVT_RowData>(\n tableOptions: MVT_StatefulTableOptions<TData>,\n): MVT_ColumnDef<TData> | null => {\n return {\n ...defaultDisplayColumnProps({\n id: 'mvt-row-spacer',\n size: 0,\n tableOptions,\n }),\n grow: true,\n ...MVT_DefaultDisplayColumn,\n mantineTableBodyCellProps: blankColProps,\n mantineTableFooterCellProps: blankColProps,\n mantineTableHeadCellProps: blankColProps,\n }\n}\n","import { onMounted, ref, watch } from 'vue'\n\nimport { type MVT_RowData, type MVT_SortingState, type MVT_TableInstance } from '../types'\nimport { getDefaultColumnOrderIds } from '../utils/displayColumn.utils'\nimport { getCanRankRows } from '../utils/row.utils'\n\n/**\n * Side effects for the table instance.\n */\nexport const useMVT_Effects = <TData extends MVT_RowData>(table: MVT_TableInstance<TData>) => {\n const {\n getIsSomeRowsPinned,\n getPrePaginationRowModel,\n getState,\n options: { enablePagination, enableRowPinning, rowCount },\n } = table\n\n const initialBodyHeight = ref<string>()\n const previousTop = ref<number>()\n const appliedSort = ref<MVT_SortingState>(getState().sorting)\n\n onMounted(() => {\n if (typeof window !== 'undefined') {\n initialBodyHeight.value = document.body.style.height\n }\n })\n\n //hide scrollbars when table is in full screen mode, preserve body scroll position after full screen exit\n watch(\n () => getState().isFullScreen,\n (isFullScreen) => {\n if (typeof window !== 'undefined') {\n if (isFullScreen) {\n previousTop.value = document.body.getBoundingClientRect().top //save scroll position\n document.body.style.height = '100dvh' //hide page scrollbars when table is in full screen mode\n } else {\n document.body.style.height = initialBodyHeight.value as string\n if (!previousTop.value) return\n //restore scroll position\n window.scrollTo({\n behavior: 'instant',\n top: -1 * (previousTop.value as number),\n })\n }\n }\n },\n { flush: 'post' },\n )\n\n //recalculate column order when columns change or features are toggled on/off\n watch(\n () => table.options.columns.length,\n (totalColumnCount) => {\n if (totalColumnCount !== getState().columnOrder.length) {\n table.setColumnOrder(getDefaultColumnOrderIds(table.options as any))\n }\n },\n { flush: 'post' },\n )\n\n //if page index is out of bounds, set it to the last page\n watch(\n () => rowCount ?? getPrePaginationRowModel().rows.length,\n (totalRowCount) => {\n const { isLoading, pagination, showSkeletons } = getState()\n if (!enablePagination || isLoading || showSkeletons) return\n const { pageIndex, pageSize } = pagination\n const firstVisibleRowIndex = pageIndex * pageSize\n if (firstVisibleRowIndex >= totalRowCount && firstVisibleRowIndex > 0) {\n table.setPageIndex(Math.ceil(totalRowCount / pageSize) - 1)\n }\n },\n { flush: 'post' },\n )\n\n //track the last applied sort\n watch(\n () => getState().sorting,\n (sorting) => {\n if (sorting.length) {\n appliedSort.value = sorting\n }\n },\n { flush: 'post' },\n )\n\n //turn off sort when global filter is looking for ranked results\n watch(\n () => getState().globalFilter,\n () => {\n if (!getCanRankRows(table)) return\n if (getState().globalFilter) {\n table.setSorting([])\n } else {\n table.setSorting(() => appliedSort.value || [])\n }\n },\n { flush: 'post' },\n )\n\n //fix pinned row top style when density changes\n watch(\n () => getState().density,\n () => {\n if (enableRowPinning && getIsSomeRowsPinned()) {\n setTimeout(() => {\n //touch a reactive dependency to force a re-render, used here to recompute pinned-row offsets\n table.setDensity((d) => d)\n }, 150)\n }\n },\n { flush: 'post' },\n )\n}\n","import { computed, ref, shallowRef } from 'vue'\n\nimport { useVueTable } from '@tanstack/vue-table'\n\nimport {\n type MVT_Cell,\n type MVT_Column,\n type MVT_ColumnDef,\n type MVT_ColumnFilterFnsState,\n type MVT_ColumnOrderState,\n type MVT_ColumnSizingInfoState,\n type MVT_DefinedTableOptions,\n type MVT_DensityState,\n type MVT_FilterOption,\n type MVT_GroupingState,\n type MVT_PaginationState,\n type MVT_Row,\n type MVT_RowData,\n type MVT_StatefulTableOptions,\n type MVT_TableInstance,\n type MVT_TableState,\n type MVT_Updater,\n} from '../types'\nimport {\n getAllLeafColumnDefs,\n getColumnId,\n getDefaultColumnFilterFn,\n prepareColumns,\n} from '../utils/column.utils'\nimport {\n getDefaultColumnOrderIds,\n showRowActionsColumn,\n showRowDragColumn,\n showRowExpandColumn,\n showRowNumbersColumn,\n showRowPinningColumn,\n showRowSelectionColumn,\n showRowSpacerColumn,\n} from '../utils/displayColumn.utils'\nimport { MVT_SERVER_GROUPING_ROOT_PATH_ID } from '../server-grouping/serverGrouping.types'\nimport {\n getServerGroupingSelectionPayload,\n getServerGroupingSelectionSummary,\n selectAllMatchingServerGroupingRecords,\n toggleAllServerGroupingRecordsSelected,\n} from '../server-grouping/serverGroupingSelection'\nimport {\n createMVT_ServerGroupingManager,\n type MVT_ServerGroupingManager,\n} from '../server-grouping/useMVT_ServerGrouping'\nimport { createRow } from '../utils/tanstack.helpers'\nimport { getMVT_RowActionsColumnDef } from './display-columns/getMVT_RowActionsColumnDef'\nimport { getMVT_RowDragColumnDef } from './display-columns/getMVT_RowDragColumnDef'\nimport { getMVT_RowExpandColumnDef } from './display-columns/getMVT_RowExpandColumnDef'\nimport { getMVT_RowNumbersColumnDef } from './display-columns/getMVT_RowNumbersColumnDef'\nimport { getMVT_RowPinningColumnDef } from './display-columns/getMVT_RowPinningColumnDef'\nimport { getMVT_RowSelectColumnDef } from './display-columns/getMVT_RowSelectColumnDef'\nimport { getMVT_RowSpacerColumnDef } from './display-columns/getMVT_RowSpacerColumnDef'\nimport { useMVT_Effects } from './useMVT_Effects'\n\nconst applyUpdater = <T>(target: { value: T }, updater: MVT_Updater<T>) => {\n target.value = updater instanceof Function ? (updater as (prev: T) => T)(target.value) : updater\n}\n\n/**\n * The MVT composable that wraps TanStack's `useVueTable` and adds MVT\n * functionality. MVT-managed state slices are held in Vue refs and injected\n * into the table via reactive getters\n *\n * @param definedTableOptions - table options with proper defaults set\n * @returns the MVT table instance\n */\nexport const useMVT_TableInstance = <TData extends MVT_RowData>(\n definedTableOptions: MVT_DefinedTableOptions<TData>,\n): MVT_TableInstance<TData> => {\n //DOM refs\n const lastSelectedRowId = ref<null | string>(null)\n const bottomToolbarRef = ref<HTMLDivElement | null>(null)\n const editInputRefs = ref<Record<string, HTMLInputElement>>({})\n const filterInputRefs = ref<Record<string, HTMLInputElement>>({})\n const searchInputRef = ref<HTMLInputElement | null>(null)\n const tableContainerRef = ref<HTMLDivElement | null>(null)\n const tableHeadCellRefs = ref<Record<string, HTMLTableCellElement>>({})\n const tablePaperRef = ref<HTMLDivElement | null>(null)\n const topToolbarRef = ref<HTMLDivElement | null>(null)\n const tableHeadRef = ref<HTMLTableSectionElement | null>(null)\n const tableFooterRef = ref<HTMLTableSectionElement | null>(null)\n\n //transform initial state with proper column order\n const initialState: Partial<MVT_TableState<TData>> = definedTableOptions.initialState ?? {}\n initialState.columnOrder =\n initialState.columnOrder ??\n getDefaultColumnOrderIds({\n ...definedTableOptions,\n state: {\n ...definedTableOptions.initialState,\n ...definedTableOptions.state,\n },\n } as MVT_StatefulTableOptions<TData>)\n initialState.globalFilterFn = definedTableOptions.globalFilterFn ?? 'fuzzy'\n\n definedTableOptions.initialState = initialState\n\n const mvtSlots = shallowRef<Record<string, unknown>>({})\n ;(definedTableOptions as any)._mvtSlots = mvtSlots\n\n const creatingRow = shallowRef<MVT_Row<TData> | null>(initialState.creatingRow ?? null)\n const columnFilterFns = ref<MVT_ColumnFilterFnsState>(\n Object.assign(\n {},\n ...getAllLeafColumnDefs(definedTableOptions.columns as MVT_ColumnDef<TData>[]).map((col) => ({\n [getColumnId(col)]:\n col.filterFn instanceof Function\n ? (col.filterFn.name ?? 'custom')\n : (col.filterFn ??\n initialState?.columnFilterFns?.[getColumnId(col)] ??\n getDefaultColumnFilterFn(col)),\n })),\n ),\n )\n const columnOrder = ref<MVT_ColumnOrderState>(initialState.columnOrder ?? [])\n const columnSizingInfo = shallowRef<MVT_ColumnSizingInfoState>(\n initialState.columnSizingInfo ?? ({} as MVT_ColumnSizingInfoState),\n )\n const density = ref<MVT_DensityState>(initialState?.density ?? 'md')\n const draggingColumn = shallowRef<MVT_Column<TData> | null>(initialState.draggingColumn ?? null)\n const draggingRow = shallowRef<MVT_Row<TData> | null>(initialState.draggingRow ?? null)\n const editingCell = shallowRef<MVT_Cell<TData> | null>(initialState.editingCell ?? null)\n const editingRow = shallowRef<MVT_Row<TData> | null>(initialState.editingRow ?? null)\n const globalFilterFn = ref<MVT_FilterOption>(initialState.globalFilterFn ?? 'fuzzy')\n const grouping = ref<MVT_GroupingState>(initialState.grouping ?? [])\n const hoveredColumn = shallowRef<null | Partial<MVT_Column<TData>>>(\n initialState.hoveredColumn ?? null,\n )\n const hoveredRow = shallowRef<null | Partial<MVT_Row<TData>>>(initialState.hoveredRow ?? null)\n const isFullScreen = ref<boolean>(initialState?.isFullScreen ?? false)\n const pagination = ref<MVT_PaginationState>(\n initialState?.pagination ?? { pageIndex: 0, pageSize: 10 },\n )\n const showAlertBanner = ref<boolean>(initialState?.showAlertBanner ?? false)\n const showColumnFilters = ref<boolean>(initialState?.showColumnFilters ?? false)\n const showGlobalFilter = ref<boolean>(initialState?.showGlobalFilter ?? false)\n const showToolbarDropZone = ref<boolean>(initialState?.showToolbarDropZone ?? false)\n\n //User-provided state slices stay reactive via\n //getters over the live source (controlled pagination/sorting/filters update instead of freezing at their initial value);\n const stateDescriptor = Object.getOwnPropertyDescriptor(definedTableOptions, 'state')\n const readUserState = (): Partial<MVT_TableState<TData>> =>\n ((stateDescriptor?.get\n ? stateDescriptor.get.call(definedTableOptions)\n : stateDescriptor?.value) as Partial<MVT_TableState<TData>> | undefined) ?? {}\n const userStateKeys = new Set(Object.keys(readUserState()))\n\n const state = {} as MVT_TableState<TData>\n userStateKeys.forEach((key) => {\n Object.defineProperty(state, key, {\n configurable: true,\n enumerable: true,\n get: () => (readUserState() as Record<string, unknown>)[key],\n })\n })\n const defineState = <K extends keyof MVT_TableState<TData>>(\n key: K,\n getter: () => MVT_TableState<TData>[K],\n ) => {\n if (!userStateKeys.has(key as string)) {\n Object.defineProperty(state, key, { configurable: true, enumerable: true, get: getter })\n }\n }\n // Assigned after table creation; the getter below must remain lazy.\n // oxlint-disable-next-line prefer-const\n let serverGroupingManager: MVT_ServerGroupingManager<TData> | undefined\n defineState('serverGroupingExpanded', () => serverGroupingManager?.getExpanded() ?? {})\n defineState(\n 'serverGroupingSelectAll',\n () => serverGroupingManager?.getSelectAll() ?? { active: false, excludedRowIds: [] },\n )\n\n defineState('columnFilterFns', () => columnFilterFns.value)\n defineState('columnOrder', () => columnOrder.value)\n defineState('columnSizingInfo', () => columnSizingInfo.value)\n defineState('creatingRow', () => creatingRow.value)\n defineState('density', () => density.value)\n defineState('draggingColumn', () => draggingColumn.value)\n defineState('draggingRow', () => draggingRow.value)\n defineState('editingCell', () => editingCell.value)\n defineState('editingRow', () => editingRow.value)\n defineState('globalFilterFn', () => globalFilterFn.value)\n defineState('grouping', () => grouping.value)\n defineState('hoveredColumn', () => hoveredColumn.value)\n defineState('hoveredRow', () => hoveredRow.value)\n defineState('isFullScreen', () => isFullScreen.value)\n defineState('pagination', () => pagination.value)\n defineState('showAlertBanner', () => showAlertBanner.value)\n defineState('showColumnFilters', () => showColumnFilters.value)\n defineState('showGlobalFilter', () => showGlobalFilter.value)\n defineState('showToolbarDropZone', () => showToolbarDropZone.value)\n\n Object.defineProperty(definedTableOptions, 'state', {\n configurable: true,\n enumerable: true,\n writable: true,\n value: state,\n })\n\n //The table options now include all state needed to help determine column\n //visibility and order logic\n const statefulTableOptions = definedTableOptions as MVT_StatefulTableOptions<TData>\n\n //don't recompute columnDefs while resizing column or dragging column/row\n let columnDefsCache: MVT_ColumnDef<TData>[] = []\n const columns = computed<MVT_ColumnDef<TData>[]>(() => {\n if (\n statefulTableOptions.state.columnSizingInfo.isResizingColumn ||\n statefulTableOptions.state.draggingColumn ||\n statefulTableOptions.state.draggingRow\n ) {\n return columnDefsCache\n }\n const prepared = prepareColumns({\n columnDefs: [\n ...([\n showRowPinningColumn(statefulTableOptions) &&\n getMVT_RowPinningColumnDef(statefulTableOptions),\n showRowDragColumn(statefulTableOptions) && getMVT_RowDragColumnDef(statefulTableOptions),\n showRowActionsColumn(statefulTableOptions) &&\n getMVT_RowActionsColumnDef(statefulTableOptions),\n showRowExpandColumn(statefulTableOptions) &&\n getMVT_RowExpandColumnDef(statefulTableOptions),\n showRowSelectionColumn(statefulTableOptions) &&\n getMVT_RowSelectColumnDef(statefulTableOptions),\n showRowNumbersColumn(statefulTableOptions) &&\n getMVT_RowNumbersColumnDef(statefulTableOptions),\n ].filter(Boolean) as MVT_ColumnDef<TData>[]),\n ...statefulTableOptions.columns,\n ...([\n showRowSpacerColumn(statefulTableOptions) &&\n getMVT_RowSpacerColumnDef(statefulTableOptions),\n ].filter(Boolean) as MVT_ColumnDef<TData>[]),\n ],\n tableOptions: statefulTableOptions,\n }) as unknown as MVT_ColumnDef<TData>[]\n columnDefsCache = prepared\n return prepared\n })\n\n //if loading, generate blank rows to show skeleton loaders\n const data = computed<TData[]>(() => {\n const s = statefulTableOptions.state\n return (s.isLoading || s.showSkeletons) && !definedTableOptions.data.length\n ? [...Array(Math.min(s.pagination.pageSize, 20)).fill(null)].map(() =>\n Object.assign(\n {},\n ...getAllLeafColumnDefs(columns.value).map((col) => ({\n [getColumnId(col)]: null,\n })),\n ),\n )\n : definedTableOptions.data\n })\n\n const {\n columns: _columns,\n data: _data,\n rowCount: _rowCount,\n ...restOptions\n } = statefulTableOptions\n\n const table = useVueTable<TData>({\n onColumnOrderChange: (updater: MVT_Updater<MVT_ColumnOrderState>) =>\n applyUpdater(columnOrder, updater),\n onColumnSizingInfoChange: (updater: MVT_Updater<MVT_ColumnSizingInfoState>) =>\n applyUpdater(columnSizingInfo, updater),\n onGroupingChange: (updater: MVT_Updater<MVT_GroupingState>) => applyUpdater(grouping, updater),\n onPaginationChange: (updater: MVT_Updater<MVT_PaginationState>) =>\n applyUpdater(pagination, updater),\n ...(restOptions as any),\n get columns() {\n return columns.value as any\n },\n get data() {\n return data.value\n },\n get rowCount() {\n return definedTableOptions.rowCount\n },\n globalFilterFn: statefulTableOptions.filterFns?.[globalFilterFn.value ?? 'fuzzy'],\n } as any) as unknown as MVT_TableInstance<TData>\n\n table.refs = {\n bottomToolbarRef,\n editInputRefs,\n filterInputRefs,\n lastSelectedRowId,\n searchInputRef,\n tableContainerRef,\n tableFooterRef,\n tableHeadCellRefs,\n tableHeadRef,\n tablePaperRef,\n topToolbarRef,\n }\n\n table.setCreatingRow = (row) => {\n let _row = row\n if (row === true) {\n _row = createRow(table)\n }\n if (statefulTableOptions?.onCreatingRowChange) {\n statefulTableOptions.onCreatingRowChange(_row as MVT_Row<TData> | null)\n } else {\n applyUpdater(creatingRow, _row as MVT_Row<TData> | null)\n }\n }\n table.setColumnFilterFns =\n statefulTableOptions.onColumnFilterFnsChange ??\n ((updater) => applyUpdater(columnFilterFns, updater))\n table.setDensity =\n statefulTableOptions.onDensityChange ?? ((updater) => applyUpdater(density, updater))\n table.setDraggingColumn =\n statefulTableOptions.onDraggingColumnChange ??\n ((updater) => applyUpdater(draggingColumn, updater))\n table.setDraggingRow =\n statefulTableOptions.onDraggingRowChange ?? ((updater) => applyUpdater(draggingRow, updater))\n table.setEditingCell =\n statefulTableOptions.onEditingCellChange ?? ((updater) => applyUpdater(editingCell, updater))\n table.setEditingRow =\n statefulTableOptions.onEditingRowChange ?? ((updater) => applyUpdater(editingRow, updater))\n table.setGlobalFilterFn =\n statefulTableOptions.onGlobalFilterFnChange ??\n ((updater) => applyUpdater(globalFilterFn, updater))\n table.setHoveredColumn =\n statefulTableOptions.onHoveredColumnChange ??\n ((updater) => applyUpdater(hoveredColumn, updater))\n table.setHoveredRow =\n statefulTableOptions.onHoveredRowChange ?? ((updater) => applyUpdater(hoveredRow, updater))\n table.setIsFullScreen =\n statefulTableOptions.onIsFullScreenChange ?? ((updater) => applyUpdater(isFullScreen, updater))\n table.setShowAlertBanner =\n statefulTableOptions.onShowAlertBannerChange ??\n ((updater) => applyUpdater(showAlertBanner, updater))\n table.setShowColumnFilters =\n statefulTableOptions.onShowColumnFiltersChange ??\n ((updater) => applyUpdater(showColumnFilters, updater))\n table.setShowGlobalFilter =\n statefulTableOptions.onShowGlobalFilterChange ??\n ((updater) => applyUpdater(showGlobalFilter, updater))\n table.setShowToolbarDropZone =\n statefulTableOptions.onShowToolbarDropZoneChange ??\n ((updater) => applyUpdater(showToolbarDropZone, updater))\n\n serverGroupingManager = createMVT_ServerGroupingManager(\n table,\n () =>\n userStateKeys.has('serverGroupingExpanded')\n ? (readUserState() as any).serverGroupingExpanded\n : undefined,\n () =>\n userStateKeys.has('serverGroupingSelectAll')\n ? (readUserState() as any).serverGroupingSelectAll\n : undefined,\n )\n ;(table as any)._serverGrouping = serverGroupingManager\n if (serverGroupingManager) {\n // The toolbar needs the root path's server-reported total.\n const readUserRowCount = Object.getOwnPropertyDescriptor(definedTableOptions, 'rowCount')?.get\n Object.defineProperty(definedTableOptions, 'rowCount', {\n configurable: true,\n enumerable: true,\n get: () =>\n readUserRowCount?.call(definedTableOptions) ??\n serverGroupingManager?.getPathState(MVT_SERVER_GROUPING_ROOT_PATH_ID)?.rowCount,\n })\n }\n table.getServerGroupingState = () =>\n serverGroupingManager?.getState() ?? { enabled: false, expanded: {}, grouping: [], paths: {} }\n table.getServerGroupingPathState = (pathId) => serverGroupingManager?.getPathState(pathId)\n table.expandServerGroup = (pathId) => serverGroupingManager?.expand(pathId)\n table.collapseServerGroup = (pathId) => serverGroupingManager?.collapse(pathId)\n table.toggleServerGroup = (pathId) => serverGroupingManager?.toggle(pathId)\n table.reloadServerGrouping = () => serverGroupingManager?.reload()\n table.reloadServerGroupingPath = (pathId) => serverGroupingManager?.reload(pathId)\n table.invalidateServerGrouping = () => serverGroupingManager?.invalidate()\n table.invalidateServerGroupingPath = (pathId) => serverGroupingManager?.invalidate(pathId)\n table.resetServerGroupingState = () => serverGroupingManager?.reset()\n table.setServerGroupingExpanded = (updater) => serverGroupingManager?.setExpanded(updater)\n table.setServerGroupingPagination = (pathId, pagination) =>\n serverGroupingManager?.setPagination(pathId, pagination)\n table.setServerGroupingSorting = (pathId, sorting) =>\n serverGroupingManager?.setSorting(pathId, sorting)\n table.setServerGroupingColumnFilters = (pathId, columnFilters) =>\n serverGroupingManager?.setColumnFilters(pathId, columnFilters)\n table.setServerGroupingGlobalFilter = (pathId, globalFilter) =>\n serverGroupingManager?.setGlobalFilter(pathId, globalFilter)\n table.getServerGroupingSelectionSummary = () =>\n serverGroupingManager\n ? getServerGroupingSelectionSummary(table as MVT_TableInstance<any>)\n : {\n excludedRowIds: [],\n isAll: false,\n isSelectAllMatching: false,\n isSome: false,\n mode: 'include',\n selectableCount: 0,\n selectedCount: 0,\n selectedRowIds: [],\n }\n table.toggleAllServerGroupingRecordsSelected = (value) => {\n if (serverGroupingManager) {\n toggleAllServerGroupingRecordsSelected(table as MVT_TableInstance<any>, value)\n }\n }\n table.selectAllMatchingServerGroupingRecords = async () => {\n if (serverGroupingManager) {\n await selectAllMatchingServerGroupingRecords(table as MVT_TableInstance<any>)\n }\n }\n table.getServerGroupingSelectAllState = () =>\n serverGroupingManager?.getSelectAll() ?? { active: false, excludedRowIds: [] }\n table.setServerGroupingSelectAllState = (updater) => serverGroupingManager?.setSelectAll(updater)\n table.getServerGroupingSelectionPayload = () =>\n getServerGroupingSelectionPayload(table as MVT_TableInstance<any>)\n\n // Expose the reactive slot registry + setter so `<MantineVueTable>` can\n // publish its named slots into the instance\n ;(table as any)._mvtSlots = mvtSlots\n ;(table as any).setMVTSlots = (slots: Record<string, unknown>) => {\n mvtSlots.value = slots\n }\n\n useMVT_Effects(table)\n\n return table\n}\n","import { type MVT_RowData, type MVT_TableInstance, type MVT_TableOptions } from '../types'\nimport { useMVT_TableInstance } from './useMVT_TableInstance'\nimport { useMVT_TableOptions } from './useMVT_TableOptions'\n\nexport const useMantineVueTable = <TData extends MVT_RowData>(\n tableOptions: MVT_TableOptions<TData>,\n): MVT_TableInstance<TData> => useMVT_TableInstance(useMVT_TableOptions(tableOptions))\n",".collapse {\n position: absolute;\n width: 100%;\n top: 0;\n}\n\n.collapse-top {\n bottom: 0;\n top: unset;\n}\n","import clsx from 'clsx'\nimport { Collapse, Progress } from '@mantine-vue/core'\nimport { defineComponent, h, type PropType } from 'vue'\nimport type { MVT_RowData, MVT_TableInstance } from '../../types'\nimport { parseFromValuesOrFunc } from '../../utils/utils'\nimport classes from './MVT_ProgressBar.module.css'\n\nexport const MVT_ProgressBar = defineComponent({\n name: 'MVTProgressBar',\n inheritAttrs: false,\n props: {\n isTopToolbar: { type: Boolean, required: true },\n table: { type: Object as PropType<MVT_TableInstance<MVT_RowData>>, required: true },\n },\n setup(props, { attrs }) {\n return () => {\n const { table, isTopToolbar } = props\n const state = table.getState()\n const progressProps = {\n ...parseFromValuesOrFunc(table.options.mantineProgressProps, { isTopToolbar, table }),\n ...attrs,\n }\n\n return h(\n Collapse,\n {\n class: clsx(classes.collapse, isTopToolbar && classes['collapse-top']),\n expanded: Boolean(state.isSaving || state.showProgressBars),\n } as any,\n () =>\n h(Progress, {\n animated: true,\n 'aria-busy': 'true',\n 'aria-label': 'Loading',\n radius: 0,\n value: 100,\n ...progressProps,\n } as any),\n )\n }\n },\n})\n",".root {\n display: flex;\n z-index: 2;\n gap: var(--mantine-spacing-lg);\n align-items: center;\n justify-content: space-between;\n padding-right: var(--mantine-spacing-sm);\n padding-left: var(--mantine-spacing-sm);\n padding-top: var(--mantine-spacing-xs);\n padding-bottom: var(--mantine-spacing-xs);\n .pagesize {\n input {\n width: calc(5rem * var(--mantine-scale));\n }\n }\n}\n\n.with-top-margin {\n margin-top: 3rem;\n}\n","import clsx from 'clsx'\nimport { ActionIcon, Box, Group, Pagination, Select, Text } from '@mantine-vue/core'\nimport { defineComponent, h, type PropType } from 'vue'\nimport type { MVT_RowData, MVT_TableInstance } from '../../types'\nimport { parseFromValuesOrFunc } from '../../utils/utils'\nimport classes from './MVT_TablePagination.module.css'\n\nconst defaultRowsPerPage = [5, 10, 15, 20, 25, 30, 50, 100].map(String)\nexport const MVT_TablePagination = defineComponent({\n name: 'MVTTablePagination',\n inheritAttrs: false,\n props: {\n position: { type: String as PropType<'bottom' | 'top'>, default: 'bottom' },\n table: { type: Object as PropType<MVT_TableInstance<MVT_RowData>>, required: true },\n },\n setup(props, { attrs }) {\n return () => {\n const { table } = props\n const o = table.options\n const state = table.getState()\n const { pageIndex = 0, pageSize = 10 } = state.pagination\n const paginationProps = {\n ...parseFromValuesOrFunc(o.mantinePaginationProps, { table }),\n ...attrs,\n } as Record<string, any>\n const totalRowCount = o.rowCount ?? table.getPrePaginationRowModel().rows.length\n const numberOfPages = Math.ceil(totalRowCount / pageSize)\n const firstRowIndex = pageIndex * pageSize\n const lastRowIndex = Math.min(firstRowIndex + pageSize, totalRowCount)\n const showEdges = numberOfPages > 2\n const {\n rowsPerPageOptions = defaultRowsPerPage,\n showRowsPerPage = true,\n withEdges = showEdges,\n ...rest\n } = paginationProps\n const controls =\n o.paginationDisplayMode === 'pages'\n ? h(Pagination, {\n total: numberOfPages,\n modelValue: pageIndex + 1,\n withEdges,\n ...rest,\n 'onUpdate:modelValue': (page: number) => table.setPageIndex(page - 1),\n } as any)\n : o.paginationDisplayMode === 'default'\n ? [\n h(\n Text,\n null,\n () =>\n `${lastRowIndex === 0 ? 0 : (firstRowIndex + 1).toLocaleString()}-${lastRowIndex.toLocaleString()} ${o.localization.of} ${totalRowCount.toLocaleString()}`,\n ),\n h(Group, { gap: 6 }, () => [\n withEdges &&\n h(\n ActionIcon,\n {\n 'aria-label': o.localization.goToFirstPage,\n color: 'gray',\n disabled: pageIndex <= 0,\n variant: 'subtle',\n onClick: () => table.setPageIndex(0),\n },\n () => h(o.icons.IconChevronLeftPipe),\n ),\n h(\n ActionIcon,\n {\n 'aria-label': o.localization.goToPreviousPage,\n color: 'gray',\n disabled: pageIndex <= 0,\n variant: 'subtle',\n onClick: () => table.setPageIndex(pageIndex - 1),\n },\n () => h(o.icons.IconChevronLeft),\n ),\n h(\n ActionIcon,\n {\n 'aria-label': o.localization.goToNextPage,\n color: 'gray',\n disabled: lastRowIndex >= totalRowCount,\n variant: 'subtle',\n onClick: () => table.setPageIndex(pageIndex + 1),\n },\n () => h(o.icons.IconChevronRight),\n ),\n withEdges &&\n h(\n ActionIcon,\n {\n 'aria-label': o.localization.goToLastPage,\n color: 'gray',\n disabled: lastRowIndex >= totalRowCount,\n variant: 'subtle',\n onClick: () => table.setPageIndex(Math.max(0, numberOfPages - 1)),\n },\n () => h(o.icons.IconChevronRightPipe),\n ),\n ]),\n ]\n : null\n return h(\n Box,\n {\n class: clsx(\n 'mvt-table-pagination',\n classes.root,\n props.position === 'top' &&\n o.enableToolbarInternalActions &&\n !state.showGlobalFilter &&\n classes['with-top-margin'],\n ),\n },\n () => [\n showRowsPerPage &&\n h(Group, { gap: 'xs' }, () => [\n h(Text, { id: 'rpp-label' }, () => o.localization.rowsPerPage),\n h(Select, {\n allowDeselect: false,\n 'aria-labelledby': 'rpp-label',\n class: classes.pagesize,\n data: rowsPerPageOptions,\n modelValue: pageSize.toString(),\n 'onUpdate:modelValue': (value: null | string) => value && table.setPageSize(+value),\n } as any),\n ]),\n controls,\n ],\n )\n }\n },\n})\n",".alert {\n border-radius: 0;\n font-size: 1rem;\n left: 0;\n position: relative;\n padding: rem(8px);\n right: 0;\n top: 0;\n width: 100%;\n z-index: 2;\n}\n\n.alert-stacked {\n margin-bottom: 0;\n}\n\n.alert-bottom {\n margin-bottom: -16px;\n}\n\n.alert-badge {\n margin-left: 1ch;\n}\n\n.toolbar-alert {\n gap: var(--mantine-spacing-sm);\n padding: 8px 16px;\n &.head-overlay {\n padding: 2px;\n &:global(.xl) {\n padding: 16px;\n }\n &:global(.md) {\n padding: 8px;\n }\n }\n}\n","import clsx from 'clsx'\nimport { ActionIcon, Alert, Badge, Button, Collapse, Flex, Stack } from '@mantine-vue/core'\nimport { defineComponent, h, type PropType } from 'vue'\nimport type { MVT_RowData, MVT_TableInstance } from '../../types'\nimport { MVT_SERVER_GROUPING_ROOT_PATH_ID } from '../../server-grouping/serverGrouping.types'\nimport { getMVT_SelectAllHandler } from '../../utils/row.utils'\nimport { parseFromValuesOrFunc } from '../../utils/utils'\nimport { MVT_SelectCheckbox } from '../inputs/MVT_SelectCheckbox'\nimport classes from './MVT_ToolbarAlertBanner.module.css'\n\nexport const MVT_ToolbarAlertBanner = defineComponent({\n name: 'MVTToolbarAlertBanner',\n inheritAttrs: false,\n props: {\n stackAlertBanner: { type: Boolean, default: false },\n table: { type: Object as PropType<MVT_TableInstance<MVT_RowData>>, required: true },\n },\n setup(props, { attrs, slots }) {\n return () => {\n const { table } = props\n const state = table.getState()\n const o = table.options\n const alertProps = {\n ...parseFromValuesOrFunc(o.mantineToolbarAlertBannerProps, { table }),\n ...attrs,\n } as Record<string, any>\n const badgeProps = parseFromValuesOrFunc(o.mantineToolbarAlertBannerBadgeProps, { table })\n const total = o.rowCount ?? table.getPrePaginationRowModel().flatRows.length\n const selectedCount = o.manualPagination\n ? Object.values(state.rowSelection).filter(Boolean).length\n : table.getFilteredSelectedRowModel().rows.length\n const serverGroupingSelection = o.serverGrouping?.selection\n const serverGroupingSummary = (table as any)._serverGrouping\n ? table.getServerGroupingSelectionSummary()\n : undefined\n const showSelectAllMatching =\n !!serverGroupingSelection?.enableSelectAllMatching &&\n ((serverGroupingSelection.selectAllMode ?? 'query') === 'query' ||\n !!serverGroupingSelection.loadAllMatchingRowIds) &&\n !!serverGroupingSummary?.isAll &&\n !serverGroupingSummary.isSelectAllMatching\n\n // In grouped mode, rowCount represents root groups rather than records.\n const serverGroupingListsRecords =\n !serverGroupingSummary ||\n table.getServerGroupingPathState(MVT_SERVER_GROUPING_ROOT_PATH_ID)?.kind === 'records'\n const selectedText = serverGroupingSummary?.isSelectAllMatching\n ? (o.localization.allMatchingRecordsSelected ??\n 'All records matching the current filters are selected') +\n (serverGroupingSummary.excludedRowIds.length\n ? ` (${serverGroupingSummary.excludedRowIds.length} excluded)`\n : '')\n : serverGroupingListsRecords\n ? o.localization.selectedCountOfRowCountRowsSelected\n .replace('{selectedCount}', String(selectedCount))\n .replace('{rowCount}', String(total))\n : (o.localization.selectedCountRowsSelected ?? '{selectedCount} row(s) selected').replace(\n '{selectedCount}',\n String(selectedCount),\n )\n\n const selectedAlert =\n selectedCount || serverGroupingSummary?.isSelectAllMatching\n ? h(Flex, { align: 'center', gap: 'sm' }, () => [\n selectedText,\n showSelectAllMatching &&\n h(\n Button,\n {\n size: 'compact-xs',\n variant: 'subtle',\n onClick: () => void table.selectAllMatchingServerGroupingRecords(),\n },\n () => o.localization.selectAllMatching ?? 'Select all matching records',\n ),\n h(\n Button,\n {\n size: 'compact-xs',\n variant: 'subtle',\n onClick: (event: Event) => {\n if (serverGroupingSummary) {\n table.toggleAllServerGroupingRecordsSelected(false)\n return\n }\n getMVT_SelectAllHandler({ table })(event, false, true)\n },\n },\n () => o.localization.clearSelection,\n ),\n ])\n : null\n const groupedAlert = state.grouping.length\n ? h(Flex, null, () => [\n `${o.localization.groupedBy} `,\n ...state.grouping.flatMap((columnId, index) => {\n // Backend grouping descriptors may not have a matching table column.\n const column = table.getAllLeafColumns().find((col) => col.id === columnId)\n const header = column?.columnDef.header\n const label = typeof header === 'string' && header.length ? header : columnId\n return [\n index > 0 ? o.localization.thenBy : null,\n h(\n Badge,\n {\n key: columnId,\n class: classes['alert-badge'],\n variant: 'filled',\n ...badgeProps,\n rightSection: h(\n ActionIcon,\n {\n color: 'white',\n size: 'xs',\n variant: 'subtle',\n onClick: () =>\n column\n ? column.toggleGrouping()\n : table.setGrouping((prev) =>\n prev.filter((field) => field !== columnId),\n ),\n },\n () => h(o.icons.IconX, { style: { transform: 'scale(0.8)' } }),\n ),\n } as any,\n () => `${label} `,\n ),\n ]\n }),\n ])\n : null\n const custom =\n slots.default?.({ groupedAlert, selectedAlert, table }) ??\n o.renderToolbarAlertBannerContent?.({ groupedAlert, selectedAlert, table })\n return h(\n Collapse,\n {\n expanded: state.showAlertBanner || !!selectedAlert || !!groupedAlert,\n transitionDuration: props.stackAlertBanner ? 200 : 0,\n } as any,\n () =>\n h(\n Alert,\n {\n color: 'blue',\n icon: false,\n ...alertProps,\n class: clsx(\n classes.alert,\n props.stackAlertBanner && !o.positionToolbarAlertBanner && classes['alert-stacked'],\n !props.stackAlertBanner &&\n o.positionToolbarAlertBanner === 'bottom' &&\n classes['alert-bottom'],\n alertProps.class,\n ),\n },\n () =>\n custom ??\n h(\n Flex,\n {\n class: clsx(\n classes['toolbar-alert'],\n o.positionToolbarAlertBanner === 'head-overlay' && classes['head-overlay'],\n state.density,\n ),\n },\n () => [\n o.enableRowSelection &&\n o.enableSelectAll &&\n o.positionToolbarAlertBanner === 'head-overlay'\n ? h(MVT_SelectCheckbox, { table })\n : null,\n h(Stack, null, () => [alertProps.children, selectedAlert, groupedAlert]),\n ],\n ),\n ),\n )\n }\n },\n})\n",".root {\n align-items: center;\n\n border: dashed var(--mantine-primary-color-filled) 2px;\n justify-content: center;\n height: 100%;\n width: 100%;\n position: absolute;\n z-index: 2;\n background-color: color-mix(in srgb, var(--mantine-primary-color-filled) 10%, transparent);\n}\n\n.hovered {\n background-color: color-mix(in srgb, var(--mantine-primary-color-filled) 20%, transparent);\n}\n","import clsx from 'clsx'\nimport { Flex, Text, Transition } from '@mantine-vue/core'\nimport { defineComponent, h, watch, type PropType } from 'vue'\nimport type { MVT_RowData, MVT_TableInstance } from '../../types'\nimport classes from './MVT_ToolbarDropZone.module.css'\n\nexport const MVT_ToolbarDropZone = defineComponent({\n name: 'MVTToolbarDropZone',\n inheritAttrs: false,\n props: { table: { type: Object as PropType<MVT_TableInstance<MVT_RowData>>, required: true } },\n setup(props, { attrs }) {\n watch(\n () => {\n const state = props.table.getState()\n return [props.table.options.enableGrouping, state.draggingColumn, state.grouping] as const\n },\n ([enableGrouping, draggingColumn, grouping]) => {\n if (props.table.options.state?.showToolbarDropZone !== undefined) {\n props.table.setShowToolbarDropZone(\n !!enableGrouping &&\n !!draggingColumn &&\n draggingColumn.columnDef.enableGrouping !== false &&\n !grouping.includes(draggingColumn.id),\n )\n }\n },\n { deep: true },\n )\n return () => {\n const { table } = props\n const state = table.getState()\n return h(Transition, { mounted: state.showToolbarDropZone, transition: 'fade' } as any, () =>\n h(\n Flex,\n {\n class: clsx(\n 'mvt-toolbar-dropzone',\n classes.root,\n state.hoveredColumn?.id === 'drop-zone' && classes.hovered,\n ),\n ...attrs,\n onDragenter: () => table.setHoveredColumn({ id: 'drop-zone' }),\n },\n () =>\n h(Text, null, () =>\n table.options.localization.dropToGroupBy.replace(\n '{column}',\n String(state.draggingColumn?.columnDef?.header ?? ''),\n ),\n ),\n ),\n )\n }\n },\n})\n",".common-toolbar-styles {\n align-items: flex-start;\n display: grid;\n flex-wrap: wrap-reverse;\n min-height: calc(3.5rem * var(--mantine-scale));\n overflow: visible;\n padding: 0;\n transition: all 150ms ease-in-out;\n z-index: 3;\n}\n",".root {\n background-color: var(--mvt-base-background-color);\n border-top: 1px solid light-dark(var(--mantine-color-gray-3), var(--mantine-color-dark-4));\n bottom: var(--mvt-bottom-toolbar-bottom);\n box-shadow: 0 1px 2px -1px color-mix(in srgb, var(--mantine-color-black) 10%, transparent) inset;\n left: 0;\n right: 0;\n position: relative;\n}\n\n.root-fullscreen {\n position: fixed !important;\n bottom: 0;\n}\n\n.custom-toolbar-container {\n align-items: center;\n box-sizing: border-box;\n display: flex;\n justify-content: space-between;\n padding: rem(8px);\n width: 100%;\n}\n\n.paginator-container {\n display: flex;\n justify-content: flex-end;\n right: 0;\n top: 0;\n position: absolute;\n}\n\n.paginator-container-alert-banner {\n position: relative !important;\n}\n","import { defineComponent, h, type PropType } from 'vue'\n\nimport { Box } from '@mantine-vue/core'\n\nimport clsx from 'clsx'\n\nimport { type MVT_RowData, type MVT_TableInstance } from '../../types'\nimport { parseFromValuesOrFunc } from '../../utils/utils'\nimport { MVT_ProgressBar } from './MVT_ProgressBar'\nimport { MVT_TablePagination } from './MVT_TablePagination'\nimport { MVT_ToolbarAlertBanner } from './MVT_ToolbarAlertBanner'\nimport { MVT_ToolbarDropZone } from './MVT_ToolbarDropZone'\nimport commonClasses from './common.styles.module.css'\nimport classes from './MVT_BottomToolbar.module.css'\nimport { useMediaQuery } from '@mantine-vue/hooks'\n\nexport const MVT_BottomToolbar = defineComponent({\n name: 'MVTBottomToolbar',\n inheritAttrs: false,\n props: {\n table: {\n type: Object as PropType<MVT_TableInstance<MVT_RowData>>,\n required: true,\n },\n },\n setup(props, { attrs }) {\n const isMobile = useMediaQuery('(max-width: 720px)')\n\n return () => {\n const { table } = props\n const {\n getState,\n options: {\n enablePagination,\n mantineBottomToolbarProps,\n positionPagination,\n positionToolbarAlertBanner,\n positionToolbarDropZone,\n renderBottomToolbarCustomActions,\n },\n refs: { bottomToolbarRef },\n } = table\n const { isFullScreen } = getState()\n\n const toolbarProps = {\n ...parseFromValuesOrFunc(mantineBottomToolbarProps, { table }),\n ...attrs,\n }\n\n const stackAlertBanner = isMobile.value || !!renderBottomToolbarCustomActions\n\n return h(\n Box,\n {\n ...toolbarProps,\n class: clsx(\n 'mvt-bottom-toolbar',\n classes.root,\n commonClasses['common-toolbar-styles'],\n isFullScreen && classes['root-fullscreen'],\n (toolbarProps as any)?.class,\n ),\n ref: (el: any) => {\n const node = (el?.$el ?? el) as HTMLDivElement\n if (node) {\n bottomToolbarRef.value = node\n if ((toolbarProps as any)?.ref) {\n ;(toolbarProps as any).ref.value = node\n }\n }\n },\n } as any,\n () => [\n h(MVT_ProgressBar, { isTopToolbar: false, table } as any),\n positionToolbarAlertBanner === 'bottom' &&\n h(MVT_ToolbarAlertBanner, { stackAlertBanner, table } as any),\n ['both', 'bottom'].includes(positionToolbarDropZone ?? '') &&\n h(MVT_ToolbarDropZone, { table } as any),\n h(Box, { class: classes['custom-toolbar-container'] } as any, () => [\n parseFromValuesOrFunc(renderBottomToolbarCustomActions, {\n table,\n }) ?? h('span'),\n h(\n Box,\n {\n class: clsx(\n classes['paginator-container'],\n stackAlertBanner && classes['paginator-container-alert-banner'],\n ),\n } as any,\n () =>\n enablePagination &&\n ['both', 'bottom'].includes(positionPagination ?? '') &&\n h(MVT_TablePagination, { position: 'bottom', table } as any),\n ),\n ]),\n ],\n )\n }\n },\n})\n",".group-row {\n background-color: light-dark(var(--mantine-color-gray-0), var(--mantine-color-dark-6));\n width: 100%;\n}\n\n/* grid layout modes (used when column resizing is enabled) */\n.row-grid {\n display: flex;\n}\n\n.group-cell {\n white-space: nowrap;\n}\n\n.aggregate-cell {\n font-weight: 600;\n}\n\n.expand-spacer {\n display: inline-block;\n width: 26px;\n}\n\n.aux-row {\n background-color: transparent;\n}\n\n.aux-cell {\n padding-block: 6px;\n}\n\n.pagination {\n justify-content: flex-start;\n}\n\n.pagesize {\n width: 80px;\n}\n\n.groupby-control {\n align-items: center;\n flex-wrap: wrap;\n}\n\n.groupby-active-row {\n display: flex;\n align-items: center;\n gap: 4px;\n padding: 2px 10px;\n}\n\n.groupby-active-label {\n flex: 1;\n min-width: 80px;\n}\n","import { defineComponent, h, type PropType, type VNodeChild } from 'vue'\n\nimport { ActionIcon, Box, Button, Menu, Pill, PillGroup, Text } from '@mantine-vue/core'\n\nimport clsx from 'clsx'\n\nimport { type MVT_RowData, type MVT_TableInstance } from '../types'\nimport { parseFromValuesOrFunc } from '../utils/utils'\nimport { useMVT_Slots } from '../components/MVT_TableSlots'\nimport {\n type MVT_ServerGroupableColumn,\n type MVT_ServerGroupingGroupByContext,\n} from './serverGrouping.types'\nimport { type MVT_ServerGroupingManager } from './useMVT_ServerGrouping'\nimport classes from './MVT_ServerGrouping.module.css'\n\n/**\n * Resolve the columns/fields offered by the group-by toolbar control.\n *\n * With `serverGrouping.groupBy.columns` set, exactly that whitelist is used\n * (entries may be custom descriptors like `'createdAt:month'`). Otherwise\n * every leaf `data` column whose `enableGrouping` is not `false` is offered —\n * display columns and columns with `enableGrouping: false` never appear.\n */\nexport const getServerGroupableColumns = (\n table: MVT_TableInstance<any>,\n): MVT_ServerGroupableColumn[] => {\n const groupByOptions = table.options.serverGrouping?.groupBy\n const getFieldLabel = groupByOptions?.getFieldLabel\n\n const labelFor = (field: string): string => {\n if (getFieldLabel) return getFieldLabel(field, table)\n const column = table.getAllLeafColumns().find((leafColumn) => leafColumn.id === field)\n const header = column?.columnDef.header\n return typeof header === 'string' && header.length ? header : field\n }\n\n if (groupByOptions?.columns) {\n return groupByOptions.columns.map((field) => ({ id: field, label: labelFor(field) }))\n }\n return table\n .getAllLeafColumns()\n .filter(\n (column) =>\n (column.columnDef as any).columnDefType === 'data' &&\n column.columnDef.enableGrouping !== false,\n )\n .map((column) => ({ id: column.id, label: labelFor(column.id) }))\n}\n\n/** Build the scoped context handed to the group-by slot / render callback. */\nexport const getServerGroupingGroupByContext = (\n table: MVT_TableInstance<any>,\n manager: MVT_ServerGroupingManager<MVT_RowData>,\n): MVT_ServerGroupingGroupByContext => {\n const grouping = manager.getGroupingFields()\n const setGrouping = (next: string[]) => (table as any).setGrouping(next)\n return {\n addGroup: (field) => {\n if (!grouping.includes(field)) setGrouping([...grouping, field])\n },\n clearGrouping: () => setGrouping([]),\n groupableColumns: getServerGroupableColumns(table),\n grouping,\n moveGroup: (field, direction) => {\n const index = grouping.indexOf(field)\n const target = index + direction\n if (index === -1 || target < 0 || target >= grouping.length) return\n const next = [...grouping]\n ;[next[index], next[target]] = [next[target], next[index]]\n setGrouping(next)\n },\n removeGroup: (field) => setGrouping(grouping.filter((activeField) => activeField !== field)),\n table,\n }\n}\n\n/**\n * Grouping actions for one column's action menu, or `undefined` when the\n * column cannot be grouped by.\n *\n * Uses exactly the same rules as the toolbar \"Group by\" control: server\n * grouping must be active and driven by the table's `grouping` state, the\n * control must not be disabled, and the column must be offered by\n * {@link getServerGroupableColumns}.\n */\nexport const getServerGroupingColumnActions = (\n table: MVT_TableInstance<any>,\n columnId: string,\n): MVT_ServerGroupingGroupByContext | undefined => {\n const manager = (table as any)._serverGrouping as\n | MVT_ServerGroupingManager<MVT_RowData>\n | undefined\n if (!manager) return undefined\n const groupByOptions = manager.options.groupBy ?? {}\n if (groupByOptions.enabled === false || groupByOptions.showInColumnActions === false) {\n return undefined\n }\n if (manager.options.grouping && groupByOptions.enabled !== true) return undefined\n\n const context = getServerGroupingGroupByContext(table, manager)\n return context.groupableColumns.some((column) => column.id === columnId) ? context : undefined\n}\n\n/**\n * Built-in group-by toolbar control for server-side grouping. Renders a\n * \"Group by\" menu (add / reorder / remove / clear levels) plus the active\n * levels as removable pills. Hidden when server grouping is inactive, when\n * `groupBy.enabled` is `false`, or when grouping is a static\n * `serverGrouping.grouping` array (which the control could not change).\n */\nexport const MVT_ServerGroupingGroupBy = defineComponent({\n name: 'MVTServerGroupingGroupBy',\n inheritAttrs: false,\n props: {\n table: {\n type: Object as PropType<MVT_TableInstance<MVT_RowData>>,\n required: true,\n },\n },\n setup(props) {\n const mvtSlots = useMVT_Slots()\n\n return () => {\n const table = props.table as MVT_TableInstance<any>\n const manager = (table as any)._serverGrouping as\n | MVT_ServerGroupingManager<MVT_RowData>\n | undefined\n if (!manager) return null\n\n const sgOptions = manager.options\n const groupByOptions = sgOptions.groupBy ?? {}\n if (groupByOptions.enabled === false) return null\n if (sgOptions.grouping && groupByOptions.enabled !== true) return null\n\n const localization = table.options.localization as unknown as Record<string, string>\n const icons = table.options.icons\n const allowReorder = groupByOptions.allowReorder ?? true\n const allowClearAll = groupByOptions.allowClearAll ?? true\n\n const context = getServerGroupingGroupByContext(table, manager)\n const { addGroup, clearGrouping, groupableColumns, grouping, moveGroup, removeGroup } =\n context\n\n const custom =\n (mvtSlots as any).serverGroupByControl?.(context) ??\n parseFromValuesOrFunc(groupByOptions.renderControl, context)\n if (custom !== undefined && custom !== null) return custom as VNodeChild\n\n const labelFor = (field: string) =>\n groupableColumns.find((column) => column.id === field)?.label ?? field\n\n const activeRows = grouping.map((field, index) =>\n // Vue warns when component slots are passed as array children.\n h(Box, { class: classes['groupby-active-row'], key: field } as any, () => [\n allowReorder &&\n h(\n ActionIcon,\n {\n 'aria-label': `${localization.moveUp ?? 'Move up'} ${labelFor(field)}`,\n color: 'gray',\n disabled: index === 0,\n onClick: () => moveGroup(field, -1),\n size: 'xs',\n variant: 'subtle',\n } as any,\n () => h(icons.IconChevronDown, { style: { transform: 'rotate(180deg)' } }),\n ),\n allowReorder &&\n h(\n ActionIcon,\n {\n 'aria-label': `${localization.moveDown ?? 'Move down'} ${labelFor(field)}`,\n color: 'gray',\n disabled: index === grouping.length - 1,\n onClick: () => moveGroup(field, 1),\n size: 'xs',\n variant: 'subtle',\n } as any,\n () => h(icons.IconChevronDown),\n ),\n h(\n Text,\n { class: classes['groupby-active-label'], size: 'sm' } as any,\n () => `${index + 1}. ${labelFor(field)}`,\n ),\n h(\n ActionIcon,\n {\n 'aria-label': (localization.ungroupByColumn ?? 'Ungroup by {column}').replace(\n '{column}',\n labelFor(field),\n ),\n color: 'gray',\n onClick: () => removeGroup(field),\n size: 'xs',\n variant: 'subtle',\n } as any,\n () => h(icons.IconX),\n ),\n ]),\n )\n\n const menu = h(\n Menu,\n {\n closeOnItemClick: false,\n position: 'bottom-start',\n shadow: 'md',\n width: 260,\n ...groupByOptions.mantineMenuProps,\n } as any,\n () => [\n h(Menu.Target, null, () =>\n h(\n Button,\n {\n size: 'xs',\n variant: 'default',\n ...groupByOptions.mantineButtonProps,\n leftSection: groupByOptions.mantineButtonProps?.leftSection ?? h(icons.IconColumns),\n } as any,\n () => localization.groupBy ?? 'Group by',\n ),\n ),\n h(Menu.Dropdown, null, () => [\n groupableColumns.length\n ? groupableColumns.map((column) =>\n h(\n Menu.Item,\n {\n disabled: grouping.includes(column.id),\n key: column.id,\n onClick: () => addGroup(column.id),\n } as any,\n () => column.label,\n ),\n )\n : h(\n Menu.Label,\n null,\n () => localization.noGroupableColumns ?? 'No groupable columns',\n ),\n grouping.length > 0 && [\n h(Menu.Divider),\n h(Menu.Label, null, () => (localization.groupedBy ?? 'Grouped by ').trim()),\n ...activeRows,\n ],\n allowClearAll &&\n grouping.length > 0 && [\n h(Menu.Divider),\n h(\n Menu.Item,\n { color: 'red', onClick: () => clearGrouping() } as any,\n () => localization.clearGrouping ?? 'Clear grouping',\n ),\n ],\n ]),\n ],\n )\n\n const pills =\n grouping.length > 0 &&\n h(PillGroup, { gap: 4 } as any, () =>\n grouping.map((field, index) => {\n const pillProps =\n parseFromValuesOrFunc(groupByOptions.mantinePillProps, { field, index }) ?? {}\n return h(\n Pill,\n {\n size: 'sm',\n withRemoveButton: true,\n ...pillProps,\n key: field,\n onRemove: () => removeGroup(field),\n removeButtonProps: {\n 'aria-label': (localization.ungroupByColumn ?? 'Ungroup by {column}').replace(\n '{column}',\n labelFor(field),\n ),\n ...pillProps?.removeButtonProps,\n },\n } as any,\n () => `${index + 1}. ${labelFor(field)}`,\n )\n }),\n )\n\n return h(\n Box,\n {\n class: clsx('mvt-server-groupby-control', classes['groupby-control']),\n style: { display: 'flex', gap: '8px' },\n } as any,\n () => [menu, pills],\n )\n }\n },\n})\n",".symbol {\n font-size: var(--mantine-font-size-xl);\n text-align: center;\n width: 2ch;\n transform: translateY(-0.1em);\n}\n","import { Menu } from '@mantine-vue/core'\nimport { defineComponent, h, type PropType } from 'vue'\nimport type {\n MVT_FilterOption,\n MVT_Header,\n MVT_InternalFilterOption,\n MVT_Localization,\n MVT_RowData,\n MVT_TableInstance,\n} from '../../types'\nimport classes from './MVT_FilterOptionMenu.module.css'\n\nexport const mrtFilterOptions = (l: MVT_Localization): MVT_InternalFilterOption[] => [\n { divider: false, label: l.filterFuzzy, option: 'fuzzy', symbol: '≈' },\n { divider: false, label: l.filterContains, option: 'contains', symbol: '*' },\n { divider: false, label: l.filterStartsWith, option: 'startsWith', symbol: 'a' },\n { divider: true, label: l.filterEndsWith, option: 'endsWith', symbol: 'z' },\n { divider: false, label: l.filterEquals, option: 'equals', symbol: '=' },\n { divider: true, label: l.filterNotEquals, option: 'notEquals', symbol: '≠' },\n { divider: false, label: l.filterBetween, option: 'between', symbol: '⇿' },\n { divider: true, label: l.filterBetweenInclusive, option: 'betweenInclusive', symbol: '⬌' },\n { divider: false, label: l.filterGreaterThan, option: 'greaterThan', symbol: '>' },\n {\n divider: false,\n label: l.filterGreaterThanOrEqualTo,\n option: 'greaterThanOrEqualTo',\n symbol: '≥',\n },\n { divider: false, label: l.filterLessThan, option: 'lessThan', symbol: '<' },\n { divider: true, label: l.filterLessThanOrEqualTo, option: 'lessThanOrEqualTo', symbol: '≤' },\n { divider: false, label: l.filterEmpty, option: 'empty', symbol: '∅' },\n { divider: false, label: l.filterNotEmpty, option: 'notEmpty', symbol: '!∅' },\n]\nconst rangeModes = ['between', 'betweenInclusive', 'inNumberRange']\nconst emptyModes = ['empty', 'notEmpty']\nconst arrModes = ['arrIncludesSome', 'arrIncludesAll', 'arrIncludes']\nconst rangeVariants = ['range-slider', 'date-range', 'range']\n\nexport const MVT_FilterOptionMenu = defineComponent({\n name: 'MVTFilterOptionMenu',\n props: {\n header: { type: Object as PropType<MVT_Header<MVT_RowData>>, default: undefined },\n onSelect: { type: Function as PropType<() => void>, default: undefined },\n table: { type: Object as PropType<MVT_TableInstance<MVT_RowData>>, required: true },\n },\n setup(props, { slots }) {\n return () => {\n const { table, header } = props\n const o = table.options\n const column = header?.column\n const def = column?.columnDef\n const current = column?.getFilterValue()\n let allowed = def?.columnFilterModeOptions ?? o.columnFilterModeOptions\n if (rangeVariants.includes(def?.filterVariant ?? ''))\n allowed = [...rangeModes, ...(allowed ?? [])].filter(\n (v, i, a) => rangeModes.includes(v) && a.indexOf(v) === i,\n ) as MVT_FilterOption[]\n const options = mrtFilterOptions(o.localization).filter((entry) =>\n def\n ? allowed === undefined || allowed?.includes(entry.option as MVT_FilterOption)\n : (!o.globalFilterModeOptions ||\n o.globalFilterModeOptions.includes(entry.option as MVT_FilterOption)) &&\n ['contains', 'fuzzy', 'startsWith'].includes(entry.option),\n )\n if (options.at(-1)?.divider) options[options.length - 1].divider = false\n const select = (option: MVT_FilterOption) => {\n const previous = def?._filterFn ?? ''\n if (!header || !column) table.setGlobalFilterFn(option)\n else if (option !== previous) {\n table.setColumnFilterFns((old) => ({ ...old, [header.id]: option }))\n if (emptyModes.includes(option)) {\n if (current !== ' ' && !emptyModes.includes(previous)) column.setFilterValue(' ')\n else if (current) column.setFilterValue(current)\n } else if (def?.filterVariant === 'multi-select' || arrModes.includes(option)) {\n if (typeof current === 'string' || (current as unknown[])?.length)\n column.setFilterValue([])\n else if (current) column.setFilterValue(current)\n } else if (\n rangeVariants.includes(def?.filterVariant ?? '') ||\n rangeModes.includes(option)\n ) {\n if (\n !Array.isArray(current) ||\n (!current.every((v) => v === '') && !rangeModes.includes(previous))\n )\n column.setFilterValue(['', ''])\n else column.setFilterValue(current)\n } else if (Array.isArray(current)) column.setFilterValue('')\n else if (current === ' ' && emptyModes.includes(previous))\n column.setFilterValue(undefined)\n else column.setFilterValue(current)\n }\n props.onSelect?.()\n }\n const custom =\n slots.default?.({\n internalFilterOptions: options,\n onSelectFilterMode: select,\n column,\n table,\n }) ??\n (def\n ? (def.renderColumnFilterModeMenuItems?.({\n column: column!,\n internalFilterOptions: options,\n onSelectFilterMode: select,\n table,\n }) ??\n o.renderColumnFilterModeMenuItems?.({\n column: column!,\n internalFilterOptions: options,\n onSelectFilterMode: select,\n table,\n }))\n : o.renderGlobalFilterModeMenuItems?.({\n internalFilterOptions: options,\n onSelectFilterMode: select,\n table,\n }))\n const selected = header && def ? def._filterFn : table.getState().globalFilterFn\n return h(\n Menu.Dropdown,\n null,\n () =>\n custom ??\n options.flatMap((entry) => [\n h(\n Menu.Item,\n {\n color: entry.option === selected ? 'blue' : undefined,\n leftSection: h('span', { class: classes.symbol }, entry.symbol),\n value: entry.option,\n onClick: () => select(entry.option as MVT_FilterOption),\n },\n () => entry.label,\n ),\n entry.divider ? h(Menu.Divider) : null,\n ]),\n )\n }\n },\n})\n",".root {\n z-index: 2;\n position: relative;\n}\n\n.collapse {\n display: flex;\n align-items: center;\n gap: 4px;\n flex-wrap: nowrap;\n}\n","import clsx from 'clsx'\nimport { ActionIcon, Collapse, Menu, TextInput, Tooltip } from '@mantine-vue/core'\nimport { useDebouncedValue } from '@mantine-vue/hooks'\nimport { defineComponent, h, ref, watch, type PropType } from 'vue'\nimport type { MVT_RowData, MVT_TableInstance } from '../../types'\nimport { parseFromValuesOrFunc } from '../../utils/utils'\nimport { MVT_FilterOptionMenu } from '../menus/MVT_FilterOptionMenu'\nimport classes from './MVT_GlobalFilterTextInput.module.css'\n\nexport const MVT_GlobalFilterTextInput = defineComponent({\n name: 'MVTGlobalFilterTextInput',\n inheritAttrs: false,\n props: { table: { type: Object as PropType<MVT_TableInstance<MVT_RowData>>, required: true } },\n setup(props, { attrs }) {\n const searchValue = ref(props.table.getState().globalFilter ?? '')\n const [debounced] = useDebouncedValue(\n searchValue,\n props.table.options.manualFiltering ? 500 : 250,\n )\n watch(debounced, (value) => props.table.setGlobalFilter(value || undefined))\n watch(\n () => props.table.getState().globalFilter,\n (value) => {\n searchValue.value = value ?? ''\n },\n )\n const clear = () => {\n searchValue.value = ''\n props.table.setGlobalFilter(undefined)\n }\n return () => {\n const { table } = props\n const o = table.options\n const inputProps = {\n ...parseFromValuesOrFunc(o.mantineSearchTextInputProps, { table }),\n ...attrs,\n } as Record<string, any>\n\n return h(\n Collapse,\n { class: classes.collapse, expanded: table.getState().showGlobalFilter } as any,\n () => [\n o.enableGlobalFilterModes &&\n h(Menu, { withinPortal: true }, () => [\n h(Menu.Target, null, () =>\n h(\n ActionIcon,\n {\n 'aria-label': o.localization.changeSearchMode,\n color: 'gray',\n size: 'sm',\n variant: 'transparent',\n },\n () => h(o.icons.IconSearch),\n ),\n ),\n h(MVT_FilterOptionMenu, { table, onSelect: clear }),\n ]),\n h(TextInput, {\n leftSection: !o.enableGlobalFilterModes ? h(o.icons.IconSearch) : undefined,\n mt: 0,\n mx: o.positionGlobalFilter !== 'left' ? 'mx' : undefined,\n placeholder: o.localization.search,\n value: searchValue.value,\n variant: 'filled',\n ...inputProps,\n class: clsx('mvt-global-filter-text-input', classes.root, inputProps.class),\n onInput: (event: Event | string) => {\n searchValue.value =\n typeof event === 'string' ? event : (event.target as HTMLInputElement).value\n inputProps.onChange?.(event)\n },\n rightSection: h(\n ActionIcon<'button'>,\n {\n 'aria-label': o.localization.clearSearch,\n color: 'gray',\n disabled: !searchValue.value.length,\n hidden: !searchValue.value,\n size: 'sm',\n style: { visibility: !searchValue.value ? 'hidden' : undefined },\n variant: 'transparent',\n onClick: clear,\n },\n () =>\n h(Tooltip, { label: o.localization.clearSearch, withinPortal: true }, () =>\n h(o.icons.IconX),\n ),\n ),\n ref: (el: any) => {\n const node = (el?.$el?.querySelector?.('input') ?? el?.$el ?? el) as HTMLInputElement\n if (node) table.refs.searchInputRef.value = node\n },\n } as any),\n ],\n )\n }\n },\n})\n",".root {\n min-width: 70px;\n align-content: center;\n justify-content: center;\n .left {\n transform: rotate(90deg);\n }\n .right {\n transform: rotate(-90deg);\n }\n}\n","import clsx from 'clsx'\nimport { ActionIcon, Flex, Tooltip } from '@mantine-vue/core'\nimport { defineComponent, h, type PropType } from 'vue'\nimport type { MVT_Column, MVT_RowData, MVT_TableInstance } from '../../types'\nimport classes from './MVT_ColumnPinningButtons.module.css'\n\nexport const MVT_ColumnPinningButtons = defineComponent({\n name: 'MVTColumnPinningButtons',\n props: {\n column: { type: Object as PropType<MVT_Column<MVT_RowData>>, required: true },\n table: { type: Object as PropType<MVT_TableInstance<MVT_RowData>>, required: true },\n },\n setup(props) {\n return () => {\n const { column, table } = props\n const l = table.options.localization\n const icons = table.options.icons\n const button = (\n label: string,\n side: 'left' | 'right' | false,\n icon: any,\n className?: string,\n ) =>\n h(Tooltip, { label, withinPortal: true }, () =>\n h(\n ActionIcon,\n {\n 'aria-label': label,\n color: 'gray',\n size: 'md',\n variant: 'subtle',\n onClick: () => column.pin(side),\n },\n () => h(icon, { class: className }),\n ),\n )\n return h(Flex, { class: clsx('mvt-column-pinning-buttons', classes.root) }, () =>\n column.getIsPinned()\n ? button(l.unpin, false, icons.IconPinnedOff)\n : [\n button(l.pinToLeft, 'left', icons.IconPinned, classes.left),\n button(l.pinToRight, 'right', icons.IconPinned, classes.right),\n ],\n )\n }\n },\n})\n",".root {\n align-items: center;\n cursor: default;\n justify-content: flex-start;\n opacity: 1;\n outline: none;\n padding-left: var(--_column-depth);\n padding-top: rem(6px);\n padding-bottom: rem(6);\n &[data-dragging] {\n opacity: 0.5;\n outline: 1px dashed var(--mantine-color-gray-7);\n }\n &[data-order-hovered]:not(&[data-dragging]) {\n outline: 2px dashed var(--_hover-color);\n }\n}\n.menu {\n display: flex;\n align-items: center;\n flex-wrap: nowrap;\n gap: rem(8px);\n}\n.grab {\n width: rem(28px);\n}\n.pin {\n width: rem(70px);\n}\n.switch {\n cursor: pointer !important;\n}\n.header {\n align-self: center;\n}\n","import clsx from 'clsx'\nimport { Box, Menu, Switch, Text, Tooltip } from '@mantine-vue/core'\nimport { defineComponent, h, ref, resolveComponent, type PropType, type VNodeChild } from 'vue'\nimport type { MVT_Column, MVT_RowData, MVT_TableInstance } from '../../types'\nimport { reorderColumn } from '../../utils/column.utils'\nimport { MVT_ColumnPinningButtons } from '../buttons/MVT_ColumnPinningButtons'\nimport { MVT_GrabHandleButton } from '../buttons/MVT_GrabHandleButton'\nimport classes from './MVT_ShowHideColumnsMenuItems.module.css'\n\nexport const MVT_ShowHideColumnsMenuItems = defineComponent({\n name: 'MVTShowHideColumnsMenuItems',\n props: {\n allColumns: { type: Array as PropType<MVT_Column<MVT_RowData>[]>, required: true },\n column: { type: Object as PropType<MVT_Column<MVT_RowData>>, required: true },\n hoveredColumn: { type: Object as PropType<MVT_Column<MVT_RowData> | null>, default: null },\n getHoveredColumn: {\n type: Function as PropType<() => MVT_Column<MVT_RowData> | null>,\n default: undefined,\n },\n table: { type: Object as PropType<MVT_TableInstance<MVT_RowData>>, required: true },\n },\n emits: { hoveredColumnChange: (_value: MVT_Column<MVT_RowData> | null) => true },\n setup(props, { emit }) {\n const menuItemRef = ref<HTMLElement | null>(null)\n const dragging = ref(false)\n return () => {\n const { column, table } = props\n const def = column.columnDef\n const group = def.columnDefType === 'group'\n if (!def.header || def.visibleInShowHideMenu === false) return null\n const checked = !group\n ? column.getIsVisible()\n : column.getLeafColumns().some((c) => c.getIsVisible())\n const toggle = () =>\n group\n ? column.columns?.forEach((c) => c.toggleVisibility(!checked))\n : column.toggleVisibility()\n const children: VNodeChild[] =\n column.columns?.map((child) =>\n h(resolveComponent('MVT_ShowHideColumnsMenuItems'), {\n key: child.id,\n ...props,\n column: child,\n onHoveredColumnChange: (value: MVT_Column<MVT_RowData> | null) =>\n emit('hoveredColumnChange', value),\n }),\n ) ?? []\n return [\n h(\n Menu.Item,\n {\n class: clsx(classes.root),\n component: 'span',\n ref: (el: any) => {\n menuItemRef.value = el?.$el ?? el\n },\n style: { '--_column-depth': `${(column.depth + 0.5) * 2}rem` },\n 'data-dragging': dragging.value || undefined,\n 'data-order-hovered': props.hoveredColumn?.id === column.id || undefined,\n onDragenter: () => {\n if (!dragging.value && def.enableColumnOrdering !== false)\n emit('hoveredColumnChange', column)\n },\n },\n () =>\n h(Box, { class: classes.menu }, () => [\n !group &&\n table.options.enableColumnOrdering &&\n !props.allColumns.some((c) => c.columnDef.columnDefType === 'group')\n ? def.enableColumnOrdering !== false\n ? h(MVT_GrabHandleButton, {\n table,\n onDragStart: (e: DragEvent) => {\n dragging.value = true\n if (menuItemRef.value) e.dataTransfer?.setDragImage(menuItemRef.value, 0, 0)\n },\n onDragEnd: () => {\n dragging.value = false\n\n const hovered = props.getHoveredColumn?.() ?? props.hoveredColumn\n if (hovered)\n table.setColumnOrder(\n reorderColumn(column, hovered, table.getState().columnOrder),\n )\n emit('hoveredColumnChange', null)\n },\n } as any)\n : h(Box, { class: classes.grab })\n : null,\n table.options.enableColumnPinning\n ? column.getCanPin()\n ? h(MVT_ColumnPinningButtons, { column, table })\n : h(Box, { class: classes.pin })\n : null,\n table.options.enableHiding\n ? h(\n Tooltip,\n {\n label: table.options.localization.toggleVisibility,\n openDelay: 1000,\n withinPortal: true,\n },\n () =>\n h(Switch, {\n modelValue: checked,\n class: classes.switch,\n disabled: !column.getCanHide(),\n label: def.header,\n onChange: toggle,\n }),\n )\n : h(Text, { class: classes.header }, () => def.header),\n ]),\n ),\n ...children,\n ]\n }\n },\n})\n",".root {\n max-height: calc(80vh - 100px);\n overflow-y: auto;\n .content {\n padding-top: rem(4px);\n padding-bottom: rem(4px);\n gap: rem(8px);\n justify-content: space-between;\n }\n}\n","import clsx from 'clsx'\nimport { Button, Flex, Menu } from '@mantine-vue/core'\nimport { computed, defineComponent, h, ref, type PropType } from 'vue'\nimport type { MVT_Column, MVT_RowData, MVT_TableInstance } from '../../types'\nimport { getDefaultColumnOrderIds } from '../../utils/displayColumn.utils'\nimport { MVT_ShowHideColumnsMenuItems } from './MVT_ShowHideColumnsMenuItems'\nimport classes from './MVT_ShowHideColumnsMenu.module.css'\n\nexport const MVT_ShowHideColumnsMenu = defineComponent({\n name: 'MVTShowHideColumnsMenu',\n props: { table: { type: Object as PropType<MVT_TableInstance<MVT_RowData>>, required: true } },\n setup(props) {\n const hoveredColumn = ref<MVT_Column<MVT_RowData> | null>(null)\n const allColumns = computed(() => {\n const { table } = props\n const columns = table.getAllColumns()\n const order = table.getState().columnOrder\n if (order.length && !columns.some((c) => c.columnDef.columnDefType === 'group'))\n return [\n ...table.getLeftLeafColumns(),\n ...Array.from(new Set(order)).map((id) =>\n table.getCenterLeafColumns().find((c) => c.id === id),\n ),\n ...table.getRightLeafColumns(),\n ].filter(Boolean) as MVT_Column<MVT_RowData>[]\n return columns\n })\n return () => {\n const { table } = props\n const o = table.options\n const toggleAll = (value: boolean) =>\n table\n .getAllLeafColumns()\n .filter((c) => c.columnDef.enableHiding !== false)\n .forEach((c) => c.toggleVisibility(value))\n return h(Menu.Dropdown, { class: clsx('mvt-show-hide-columns-menu', classes.root) }, () => [\n h(Flex, { class: classes.content }, () => [\n o.enableHiding &&\n h(\n Button,\n {\n disabled: !table.getIsSomeColumnsVisible(),\n variant: 'subtle',\n onClick: () => toggleAll(false),\n },\n () => o.localization.hideAll,\n ),\n o.enableColumnOrdering &&\n h(\n Button,\n {\n variant: 'subtle',\n onClick: () => table.setColumnOrder(getDefaultColumnOrderIds(o, true)),\n },\n () => o.localization.resetOrder,\n ),\n o.enableColumnPinning &&\n h(\n Button,\n {\n disabled: !table.getIsSomeColumnsPinned(),\n variant: 'subtle',\n onClick: () => table.resetColumnPinning(true),\n },\n () => o.localization.unpinAll,\n ),\n o.enableHiding &&\n h(\n Button,\n {\n disabled: table.getIsAllColumnsVisible(),\n variant: 'subtle',\n onClick: () => toggleAll(true),\n },\n () => o.localization.showAll,\n ),\n ]),\n h(Menu.Divider),\n ...allColumns.value.map((column) =>\n h(MVT_ShowHideColumnsMenuItems, {\n key: column.id,\n allColumns: allColumns.value,\n column,\n hoveredColumn: hoveredColumn.value,\n getHoveredColumn: () => hoveredColumn.value,\n table,\n onHoveredColumnChange: (value: MVT_Column<MVT_RowData> | null) => {\n hoveredColumn.value = value\n },\n } as any),\n ),\n ])\n }\n },\n})\n","import { ActionIcon, Menu, Tooltip } from '@mantine-vue/core'\nimport { defineComponent, h, type PropType } from 'vue'\nimport type { MVT_RowData, MVT_TableInstance } from '../../types'\nimport { MVT_ShowHideColumnsMenu } from '../menus/MVT_ShowHideColumnsMenu'\n\nexport const MVT_ShowHideColumnsButton = defineComponent({\n name: 'MVTShowHideColumnsButton',\n inheritAttrs: false,\n props: { table: { type: Object as PropType<MVT_TableInstance<MVT_RowData>>, required: true } },\n setup(props, { attrs }) {\n return () => {\n const title =\n (attrs.title as string | undefined) ?? props.table.options.localization.showHideColumns\n return h(Menu, { closeOnItemClick: false, withinPortal: true }, () => [\n h(Tooltip, { label: title, withinPortal: true }, () =>\n h(Menu.Target, null, () =>\n h(\n ActionIcon,\n {\n 'aria-label': title,\n color: 'gray',\n size: 'lg',\n variant: 'subtle',\n ...attrs,\n },\n () => h(props.table.options.icons.IconColumns),\n ),\n ),\n ),\n h(MVT_ShowHideColumnsMenu, { table: props.table }),\n ])\n }\n },\n})\n","import { ActionIcon, Tooltip } from '@mantine-vue/core'\nimport { defineComponent, h, type PropType } from 'vue'\nimport type { MVT_DensityState, MVT_RowData, MVT_TableInstance } from '../../types'\n\nconst next: Record<\n Exclude<MVT_DensityState, 'lg' | 'sm'>,\n Exclude<MVT_DensityState, 'lg' | 'sm'>\n> = { md: 'xs', xl: 'md', xs: 'xl' }\nexport const MVT_ToggleDensePaddingButton = defineComponent({\n name: 'MVTToggleDensePaddingButton',\n inheritAttrs: false,\n props: { table: { type: Object as PropType<MVT_TableInstance<MVT_RowData>>, required: true } },\n setup(props, { attrs }) {\n return () => {\n const { table } = props\n const density = table.getState().density\n const { IconBaselineDensityLarge, IconBaselineDensityMedium, IconBaselineDensitySmall } =\n table.options.icons\n const title = (attrs.title as string | undefined) ?? table.options.localization.toggleDensity\n const icon =\n density === 'xs'\n ? IconBaselineDensitySmall\n : density === 'md'\n ? IconBaselineDensityMedium\n : IconBaselineDensityLarge\n return h(Tooltip, { label: title, withinPortal: true }, () =>\n h(\n ActionIcon,\n {\n 'aria-label': title,\n color: 'gray',\n size: 'lg',\n variant: 'subtle',\n ...attrs,\n onClick: () => table.setDensity((current) => next[current as keyof typeof next]),\n },\n () => h(icon),\n ),\n )\n }\n },\n})\n","import { ActionIcon, Tooltip } from '@mantine-vue/core'\nimport { defineComponent, h, type PropType } from 'vue'\n\nimport type { MVT_RowData, MVT_TableInstance } from '../../types'\n\nexport const MVT_ToggleFiltersButton = defineComponent({\n name: 'MVTToggleFiltersButton',\n inheritAttrs: false,\n props: { table: { type: Object as PropType<MVT_TableInstance<MVT_RowData>>, required: true } },\n setup(props, { attrs }) {\n return () => {\n const { table } = props\n const { IconFilter, IconFilterOff } = table.options.icons\n const title =\n (attrs.title as string | undefined) ?? table.options.localization.showHideFilters\n const shown = table.getState().showColumnFilters\n return h(Tooltip, { label: title, withinPortal: true }, () =>\n h(\n ActionIcon,\n {\n 'aria-label': title,\n color: 'gray',\n size: 'lg',\n variant: 'subtle',\n ...attrs,\n onClick: () => table.setShowColumnFilters((current) => !current),\n },\n () => h(shown ? IconFilterOff : IconFilter),\n ),\n )\n }\n },\n})\n","import { ActionIcon, Tooltip } from '@mantine-vue/core'\nimport { defineComponent, h, ref, type PropType } from 'vue'\nimport type { MVT_RowData, MVT_TableInstance } from '../../types'\n\nexport const MVT_ToggleFullScreenButton = defineComponent({\n name: 'MVTToggleFullScreenButton',\n inheritAttrs: false,\n props: { table: { type: Object as PropType<MVT_TableInstance<MVT_RowData>>, required: true } },\n setup(props, { attrs }) {\n const tooltipOpened = ref(false)\n return () => {\n const { table } = props\n const full = table.getState().isFullScreen\n const { IconMaximize, IconMinimize } = table.options.icons\n const title =\n (attrs.title as string | undefined) ?? table.options.localization.toggleFullScreen\n return h(Tooltip, { label: title, opened: tooltipOpened.value, withinPortal: true }, () =>\n h(\n ActionIcon,\n {\n 'aria-label': title,\n color: 'gray',\n size: 'lg',\n variant: 'subtle',\n ...attrs,\n onMouseenter: () => {\n tooltipOpened.value = true\n },\n onMouseleave: () => {\n tooltipOpened.value = false\n },\n onClick: () => {\n tooltipOpened.value = false\n table.setIsFullScreen((current) => !current)\n },\n },\n () => h(full ? IconMinimize : IconMaximize),\n ),\n )\n }\n },\n})\n","import { ActionIcon, Tooltip } from '@mantine-vue/core'\nimport { defineComponent, h, type PropType } from 'vue'\nimport type { MVT_RowData, MVT_TableInstance } from '../../types'\n\nexport const MVT_ToggleGlobalFilterButton = defineComponent({\n name: 'MVTToggleGlobalFilterButton',\n inheritAttrs: false,\n props: { table: { type: Object as PropType<MVT_TableInstance<MVT_RowData>>, required: true } },\n setup(props, { attrs }) {\n return () => {\n const { table } = props\n const state = table.getState()\n const { IconSearch, IconSearchOff } = table.options.icons\n const title = (attrs.title as string | undefined) ?? table.options.localization.showHideSearch\n return h(Tooltip, { label: title, withinPortal: true }, () =>\n h(\n ActionIcon,\n {\n 'aria-label': title,\n color: 'gray',\n disabled: !!state.globalFilter,\n size: 'lg',\n variant: 'subtle',\n ...attrs,\n onClick: () => {\n table.setShowGlobalFilter(!state.showGlobalFilter)\n setTimeout(() => table.refs.searchInputRef.value?.focus(), 100)\n },\n },\n () => h(state.showGlobalFilter ? IconSearchOff : IconSearch),\n ),\n )\n }\n },\n})\n",".root {\n align-items: center;\n gap: 2px;\n z-index: 3;\n margin-left: 4px;\n}\n","import clsx from 'clsx'\nimport { Flex } from '@mantine-vue/core'\nimport { defineComponent, h, type PropType } from 'vue'\nimport type { MVT_RowData, MVT_TableInstance } from '../../types'\nimport { parseFromValuesOrFunc } from '../../utils/utils'\nimport { MVT_ShowHideColumnsButton } from '../buttons/MVT_ShowHideColumnsButton'\nimport { MVT_ToggleDensePaddingButton } from '../buttons/MVT_ToggleDensePaddingButton'\nimport { MVT_ToggleFiltersButton } from '../buttons/MVT_ToggleFiltersButton'\nimport { MVT_ToggleFullScreenButton } from '../buttons/MVT_ToggleFullScreenButton'\nimport { MVT_ToggleGlobalFilterButton } from '../buttons/MVT_ToggleGlobalFilterButton'\nimport classes from './MVT_ToolbarInternalButtons.module.css'\n\nexport const MVT_ToolbarInternalButtons = defineComponent({\n name: 'MVTToolbarInternalButtons',\n inheritAttrs: false,\n props: { table: { type: Object as PropType<MVT_TableInstance<MVT_RowData>>, required: true } },\n setup(props, { attrs }) {\n return () => {\n const { table } = props\n const o = table.options\n const custom = parseFromValuesOrFunc(o.renderToolbarInternalActions, { table })\n const buttons = custom ?? [\n o.enableFilters && o.enableGlobalFilter && !o.initialState?.showGlobalFilter\n ? h(MVT_ToggleGlobalFilterButton, { table })\n : null,\n o.enableFilters && o.enableColumnFilters && o.columnFilterDisplayMode !== 'popover'\n ? h(MVT_ToggleFiltersButton, { table })\n : null,\n o.enableHiding || o.enableColumnOrdering || o.enableColumnPinning\n ? h(MVT_ShowHideColumnsButton, { table })\n : null,\n o.enableDensityToggle ? h(MVT_ToggleDensePaddingButton, { table }) : null,\n o.enableFullScreenToggle ? h(MVT_ToggleFullScreenButton, { table }) : null,\n ]\n return h(\n Flex,\n { ...attrs, class: clsx('mvt-toolbar-internal-buttons', classes.root, attrs.class) },\n () => buttons,\n )\n }\n },\n})\n",".root {\n background-color: var(--mvt-base-background-color);\n position: relative;\n}\n\n.root-fullscreen {\n position: sticky !important;\n top: 0;\n}\n\n.actions-container {\n align-items: flex-start;\n box-sizing: border-box;\n justify-content: space-between;\n padding: rem(8px);\n right: 0;\n top: 0;\n width: 100%;\n position: absolute;\n}\n\n.actions-container-stack-alert {\n position: relative !important;\n}\n","import { defineComponent, h, type PropType } from 'vue'\n\nimport { Box, Flex } from '@mantine-vue/core'\n\nimport clsx from 'clsx'\n\nimport { type MVT_RowData, type MVT_TableInstance } from '../../types'\nimport { parseFromValuesOrFunc } from '../../utils/utils'\nimport { MVT_ServerGroupingGroupBy } from '../../server-grouping/MVT_ServerGroupingGroupBy'\nimport { MVT_GlobalFilterTextInput } from '../inputs/MVT_GlobalFilterTextInput'\nimport { MVT_ProgressBar } from './MVT_ProgressBar'\nimport { MVT_TablePagination } from './MVT_TablePagination'\nimport { MVT_ToolbarAlertBanner } from './MVT_ToolbarAlertBanner'\nimport { MVT_ToolbarDropZone } from './MVT_ToolbarDropZone'\nimport { MVT_ToolbarInternalButtons } from './MVT_ToolbarInternalButtons'\nimport commonClasses from './common.styles.module.css'\nimport classes from './MVT_TopToolbar.module.css'\nimport { useMediaQuery } from '@mantine-vue/hooks'\n\nexport const MVT_TopToolbar = defineComponent({\n name: 'MVTTopToolbar',\n inheritAttrs: false,\n props: {\n table: {\n type: Object as PropType<MVT_TableInstance<MVT_RowData>>,\n required: true,\n },\n },\n setup(props, { attrs }) {\n const isMobile = useMediaQuery('(max-width: 720px)')\n const isTablet = useMediaQuery('(max-width: 1024px)')\n\n return () => {\n const { table } = props\n const {\n getState,\n options: {\n enableGlobalFilter,\n enablePagination,\n enableToolbarInternalActions,\n mantineTopToolbarProps,\n positionGlobalFilter,\n positionPagination,\n positionToolbarAlertBanner,\n positionToolbarDropZone,\n renderTopToolbarCustomActions,\n },\n refs: { topToolbarRef },\n } = table\n\n const { isFullScreen, showGlobalFilter } = getState()\n\n const toolbarProps = {\n ...parseFromValuesOrFunc(mantineTopToolbarProps, { table }),\n ...attrs,\n }\n\n const stackAlertBanner =\n isMobile.value || !!renderTopToolbarCustomActions || (showGlobalFilter && isTablet.value)\n\n const globalFilterProps = {\n style: !isTablet.value ? { zIndex: 3 } : undefined,\n table,\n }\n\n return h(\n Box,\n {\n ...toolbarProps,\n class: clsx(\n commonClasses['common-toolbar-styles'],\n classes['root'],\n isFullScreen && classes['root-fullscreen'],\n (toolbarProps as any)?.class,\n ),\n ref: (el: any) => {\n const node = (el?.$el ?? el) as HTMLDivElement\n if (node) {\n topToolbarRef.value = node\n if ((toolbarProps as any)?.ref) {\n ;(toolbarProps as any).ref.value = node\n }\n }\n },\n } as any,\n () => [\n positionToolbarAlertBanner === 'top' &&\n h(MVT_ToolbarAlertBanner, { stackAlertBanner, table } as any),\n ['both', 'top'].includes(positionToolbarDropZone ?? '') &&\n h(MVT_ToolbarDropZone, { table } as any),\n h(\n Flex,\n {\n class: [\n classes['actions-container'],\n stackAlertBanner ? classes['actions-container-stack-alert'] : undefined,\n ],\n } as any,\n () => [\n enableGlobalFilter &&\n positionGlobalFilter === 'left' &&\n h(MVT_GlobalFilterTextInput, globalFilterProps as any),\n (table as any)._serverGrouping && h(MVT_ServerGroupingGroupBy, { table } as any),\n parseFromValuesOrFunc(renderTopToolbarCustomActions, { table }) ?? h('span'),\n enableToolbarInternalActions\n ? h(Flex, { justify: 'end', wrap: 'wrap-reverse' } as any, () => [\n enableGlobalFilter &&\n positionGlobalFilter === 'right' &&\n h(MVT_GlobalFilterTextInput, globalFilterProps as any),\n h(MVT_ToolbarInternalButtons, { table } as any),\n ])\n : enableGlobalFilter &&\n positionGlobalFilter === 'right' &&\n h(MVT_GlobalFilterTextInput, globalFilterProps as any),\n ],\n ),\n enablePagination &&\n ['both', 'top'].includes(positionPagination ?? '') &&\n h(Flex, { justify: 'end' } as any, () =>\n h(MVT_TablePagination, { position: 'top', table } as any),\n ),\n h(MVT_ProgressBar, { isTopToolbar: true, table } as any),\n ],\n )\n }\n },\n})\n","import { Flex, Modal, Stack } from '@mantine-vue/core'\nimport { defineComponent, h, type PropType } from 'vue'\nimport type { MVT_RowData, MVT_TableInstance } from '../../types'\nimport { parseFromValuesOrFunc } from '../../utils/utils'\nimport { useMVT_Slots } from '../MVT_TableSlots'\nimport { MVT_EditActionButtons } from '../buttons/MVT_EditActionButtons'\nimport { MVT_EditCellTextInput } from '../inputs/MVT_EditCellTextInput'\n\nexport const MVT_EditRowModal = defineComponent({\n name: 'MVTEditRowModal',\n inheritAttrs: false,\n props: {\n open: { type: Boolean, default: false },\n table: { type: Object as PropType<MVT_TableInstance<MVT_RowData>>, required: true },\n },\n emits: { close: () => true },\n setup(props, { attrs, emit, slots }) {\n const mvtSlots = useMVT_Slots()\n\n return () => {\n const { table } = props\n const state = table.getState()\n const row = state.creatingRow ?? state.editingRow\n if (!row) return null\n const arg = { row, table }\n const modalProps = {\n ...parseFromValuesOrFunc(table.options.mantineEditRowModalProps, arg),\n ...(state.creatingRow\n ? parseFromValuesOrFunc(table.options.mantineCreateRowModalProps, arg)\n : {}),\n ...attrs,\n } as Record<string, any>\n const internalEditComponents = row\n .getAllCells()\n .filter((cell) => cell.column.columnDef.columnDefType === 'data')\n .map((cell) => h(MVT_EditCellTextInput, { key: cell.id, cell, table }))\n const cancel = () => {\n if (state.creatingRow) {\n table.options.onCreatingRowCancel?.({ row, table })\n table.setCreatingRow(null)\n } else {\n table.options.onEditingRowCancel?.({ row, table })\n table.setEditingRow(null)\n }\n row._valuesCache = {}\n modalProps.onClose?.()\n emit('close')\n }\n const slot = state.creatingRow\n ? (slots.create ?? mvtSlots.createRowModalContent ?? slots.default)\n : (slots.edit ?? mvtSlots.editRowModalContent ?? slots.default)\n const custom =\n slot?.({ internalEditComponents, row, table }) ??\n (state.creatingRow\n ? table.options.renderCreateRowModalContent?.({ internalEditComponents, row, table })\n : table.options.renderEditRowModalContent?.({ internalEditComponents, row, table }))\n return h(\n Modal,\n { opened: props.open, withCloseButton: false, ...modalProps, key: row.id, onClose: cancel },\n () =>\n custom ?? [\n h('form', { onSubmit: (e: Event) => e.preventDefault() }, [\n h(Stack, { gap: 'lg', pb: 24, pt: 16 }, () => internalEditComponents),\n ]),\n h(Flex, { justify: 'flex-end' }, () =>\n h(MVT_EditActionButtons, { row, table, variant: 'text' }),\n ),\n ],\n )\n }\n },\n})\n","import { defaultRangeExtractor, type Range } from '@tanstack/vue-virtual'\n\nexport const extraIndexRangeExtractor = (range: Range, draggingIndex?: number) => {\n const newIndexes = defaultRangeExtractor(range)\n if (draggingIndex === undefined) return newIndexes\n if (draggingIndex >= 0 && draggingIndex < Math.max(range.startIndex - range.overscan, 0)) {\n newIndexes.unshift(draggingIndex)\n }\n if (draggingIndex >= 0 && draggingIndex > range.endIndex + range.overscan) {\n newIndexes.push(draggingIndex)\n }\n return newIndexes\n}\n","import { computed, type Ref } from 'vue'\n\nimport { type Range, useVirtualizer } from '@tanstack/vue-virtual'\n\nimport { type MVT_ColumnVirtualizer, type MVT_RowData, type MVT_TableInstance } from '../types'\nimport { parseFromValuesOrFunc } from '../utils/utils'\nimport { extraIndexRangeExtractor } from '../utils/virtualization.utils'\n\nexport const useMVT_ColumnVirtualizer = <\n TData extends MVT_RowData,\n TScrollElement extends Element | Window = HTMLDivElement,\n TItemElement extends Element = HTMLTableCellElement,\n>(\n table: MVT_TableInstance<TData>,\n): Ref<MVT_ColumnVirtualizer> | undefined => {\n const {\n getLeftLeafColumns,\n getRightLeafColumns,\n getState,\n getVisibleLeafColumns,\n options: {\n columnVirtualizerInstanceRef,\n columnVirtualizerOptions,\n enableColumnPinning,\n enableColumnVirtualization,\n },\n refs: { tableContainerRef },\n } = table\n\n if (!enableColumnVirtualization) return undefined\n\n const columnVirtualizerProps = parseFromValuesOrFunc(columnVirtualizerOptions, { table })\n\n const visibleColumns = getVisibleLeafColumns()\n\n const { draggingColumn } = getState()\n\n const [leftPinnedIndexes, rightPinnedIndexes] = enableColumnPinning\n ? [\n getLeftLeafColumns().map((c) => c.getPinnedIndex()),\n getRightLeafColumns()\n .map((column) => visibleColumns.length - column.getPinnedIndex() - 1)\n .sort((a, b) => a - b),\n ]\n : [[] as number[], [] as number[]]\n\n const numPinnedLeft = leftPinnedIndexes.length\n const numPinnedRight = rightPinnedIndexes.length\n\n const draggingColumnIndex = draggingColumn?.id\n ? visibleColumns.findIndex((c) => c.id === draggingColumn?.id)\n : undefined\n\n const columnVirtualizerRef = useVirtualizer<HTMLDivElement, HTMLTableCellElement>(\n computed(() => ({\n count: visibleColumns.length,\n estimateSize: (index: number) => visibleColumns[index].getSize(),\n getScrollElement: () => tableContainerRef.value as any,\n horizontal: true,\n overscan: 3,\n rangeExtractor: (range: Range) => {\n const newIndexes = extraIndexRangeExtractor(range, draggingColumnIndex)\n if (!numPinnedLeft && !numPinnedRight) {\n return newIndexes\n }\n return [...new Set([...leftPinnedIndexes, ...newIndexes, ...rightPinnedIndexes])]\n },\n ...columnVirtualizerProps,\n })) as any,\n )\n\n const columnVirtualizer = columnVirtualizerRef.value as unknown as MVT_ColumnVirtualizer<\n TScrollElement,\n TItemElement\n >\n\n //expose the MVT-augmented properties as live getters\n Object.defineProperties(columnVirtualizer, {\n virtualColumns: {\n configurable: true,\n get() {\n return this.getVirtualItems()\n },\n },\n virtualPaddingLeft: {\n configurable: true,\n get() {\n const virtualColumns = this.getVirtualItems()\n const numColumns = virtualColumns.length\n if (!numColumns) return undefined\n const leftNonPinnedStart = virtualColumns[numPinnedLeft]?.start || 0\n const leftNonPinnedEnd = virtualColumns[leftPinnedIndexes.length - 1]?.end || 0\n return leftNonPinnedStart - leftNonPinnedEnd\n },\n },\n virtualPaddingRight: {\n configurable: true,\n get() {\n const virtualColumns = this.getVirtualItems()\n const numColumns = virtualColumns.length\n if (!numColumns) return undefined\n const totalSize = this.getTotalSize()\n const rightNonPinnedStart = virtualColumns[numColumns - numPinnedRight]?.start || 0\n const rightNonPinnedEnd = virtualColumns[numColumns - numPinnedRight - 1]?.end || 0\n return (\n totalSize - rightNonPinnedEnd - (numPinnedRight ? totalSize - rightNonPinnedStart : 0)\n )\n },\n },\n })\n\n if (columnVirtualizerInstanceRef) {\n columnVirtualizerInstanceRef.value = columnVirtualizer as any\n }\n\n return columnVirtualizerRef as unknown as Ref<MVT_ColumnVirtualizer>\n}\n","import { type CSSProperties } from 'vue'\n\nimport { type MantineTheme } from '@mantine-vue/core'\n\nimport { type MantineShade } from '../types'\n\nexport const parseCSSVarId = (id: string) => id.replace(/[^a-zA-Z0-9]/g, '_')\n\n/**\n * Width/flex styles that bind a cell to its column's live size variables, so\n * custom cells (server-grouping group rows, …) stay aligned with the root\n * table while columns are resized or reordered.\n */\nexport const getMVT_ColumnWidthStyles = ({\n columnId,\n grow,\n layoutMode,\n minSize,\n}: {\n columnId: string\n grow?: boolean | number\n layoutMode?: 'grid' | 'grid-no-grow' | 'semantic'\n minSize?: number\n}): CSSProperties => {\n const cssVar = `--col-${parseCSSVarId(columnId)}-size`\n const styles: CSSProperties = {\n minWidth: `max(calc(var(${cssVar}) * 1px), ${minSize ?? 30}px)`,\n width: `calc(var(${cssVar}) * 1px)`,\n }\n if (layoutMode === 'grid') {\n styles.flex = `${[0, false].includes(grow as any) ? 0 : `var(${cssVar})`} 0 auto`\n } else if (layoutMode === 'grid-no-grow') {\n styles.flex = `${+(grow || 0)} 0 auto`\n }\n return styles\n}\n\nexport const getPrimaryShade = (theme: MantineTheme): number =>\n typeof theme.primaryShade === 'number' ? theme.primaryShade : (theme.primaryShade?.dark ?? 7)\n\nexport const getPrimaryColor = (theme: MantineTheme, shade?: MantineShade): string =>\n theme.colors[theme.primaryColor][shade ?? getPrimaryShade(theme)]\n\nexport function dataVariable(name: string, value: boolean | number | string | undefined) {\n const key = `data-${name}`\n switch (typeof value) {\n case 'boolean':\n return value ? { [key]: '' } : null\n case 'number':\n return { [key]: `${value}` }\n case 'string':\n return { [key]: value }\n default:\n return null\n }\n}\n","import { computed, type ComputedRef } from 'vue'\n\nimport { type MVT_Row, type MVT_RowData, type MVT_TableInstance } from '../types'\nimport { getMVT_Rows } from '../utils/row.utils'\n\n/**\n * Returns the MVT-adjusted rows (ranking, pinning, and creating-row insertion)\n */\nexport const useMVT_Rows = <TData extends MVT_RowData>(\n table: MVT_TableInstance<TData>,\n): ComputedRef<MVT_Row<TData>[]> => {\n return computed(() => {\n const { creatingRow, expanded, globalFilter, pagination, rowPinning, sorting } =\n table.getState()\n void creatingRow\n void expanded\n void globalFilter\n void pagination.pageIndex\n void pagination.pageSize\n void rowPinning\n void sorting\n void table.getRowModel().rows\n return getMVT_Rows(table)\n })\n}\n","import { computed, type Ref } from 'vue'\n\nimport { type Range, useVirtualizer } from '@tanstack/vue-virtual'\n\nimport {\n type MVT_DensityState,\n type MVT_Row,\n type MVT_RowData,\n type MVT_RowVirtualizer,\n type MVT_TableInstance,\n} from '../types'\nimport { parseFromValuesOrFunc } from '../utils/utils'\nimport { extraIndexRangeExtractor } from '../utils/virtualization.utils'\n\nexport const useMVT_RowVirtualizer = <\n TData extends MVT_RowData,\n TScrollElement extends Element | Window = HTMLDivElement,\n TItemElement extends Element = HTMLTableRowElement,\n>(\n table: MVT_TableInstance<TData>,\n rows?: Ref<MVT_Row<TData>[]>,\n): Ref<MVT_RowVirtualizer<TScrollElement, TItemElement>> | undefined => {\n const {\n getRowModel,\n getState,\n options: {\n enableRowVirtualization,\n renderDetailPanel,\n rowVirtualizerInstanceRef,\n rowVirtualizerOptions,\n },\n refs: { tableContainerRef },\n } = table\n\n if (!enableRowVirtualization) return undefined\n\n const rowVirtualizerProps = parseFromValuesOrFunc(rowVirtualizerOptions, {\n table,\n })\n\n const defaultRowHeightByDensity: Record<MVT_DensityState, number> = {\n lg: 62.7,\n md: 54.7,\n sm: 48.7,\n xl: 70.7,\n xs: 42.7,\n }\n\n const { density, draggingRow, expanded } = getState()\n\n const normalRowHeight = defaultRowHeightByDensity[density] ?? defaultRowHeightByDensity['md']\n\n const rowVirtualizerRef = useVirtualizer<HTMLDivElement, HTMLTableRowElement>(\n computed(() => {\n const rowCount = rows?.value.length ?? getRowModel().rows.length\n return {\n count: renderDetailPanel ? rowCount * 2 : rowCount,\n estimateSize: (index: number) =>\n renderDetailPanel && index % 2 === 1 ? (expanded === true ? 100 : 0) : normalRowHeight,\n getScrollElement: () => tableContainerRef.value as any,\n measureElement:\n typeof window !== 'undefined' && navigator.userAgent.indexOf('Firefox') === -1\n ? (element: any) => element?.getBoundingClientRect().height\n : undefined,\n overscan: 4,\n rangeExtractor: (range: Range) => {\n const current_index = getRowModel().rows.findIndex((row) => row.id === draggingRow?.id)\n return extraIndexRangeExtractor(range, current_index >= 0 ? current_index : 0)\n },\n ...rowVirtualizerProps,\n }\n }) as any,\n )\n\n const rowVirtualizer = rowVirtualizerRef.value as unknown as MVT_RowVirtualizer<\n TScrollElement,\n TItemElement\n >\n\n if (!Object.getOwnPropertyDescriptor(rowVirtualizer, 'virtualRows')) {\n Object.defineProperty(rowVirtualizer, 'virtualRows', {\n configurable: true,\n get() {\n return this.getVirtualItems()\n },\n })\n }\n\n if (rowVirtualizerInstanceRef) {\n rowVirtualizerInstanceRef.value = rowVirtualizer as any\n }\n\n return rowVirtualizerRef as unknown as Ref<MVT_RowVirtualizer<TScrollElement, TItemElement>>\n}\n",".root {\n background-color: transparent;\n border: none;\n border-radius: 4px;\n color: inherit;\n cursor: copy;\n font-family: inherit;\n font-size: inherit;\n font-weight: inherit;\n justify-content: inherit;\n letter-spacing: inherit;\n margin: -4px;\n min-width: unset;\n padding: 4px;\n text-align: inherit;\n text-transform: inherit;\n &:active {\n transform: translateY(1px);\n }\n &:hover {\n background-color: color-mix(\n in srgb,\n var(--mantine-primary-color-filled-hover) 10%,\n transparent\n );\n }\n}\n","import { defineComponent, h, type PropType, ref } from 'vue'\n\nimport { Tooltip, UnstyledButton } from '@mantine-vue/core'\n\nimport clsx from 'clsx'\n\nimport { type MVT_Cell, type MVT_RowData, type MVT_TableInstance } from '../../types'\nimport { parseFromValuesOrFunc } from '../../utils/utils'\nimport classes from './MVT_CopyButton.module.css'\n\nexport const MVT_CopyButton = defineComponent({\n name: 'MVTCopyButton',\n inheritAttrs: false,\n props: {\n cell: {\n type: Object as PropType<MVT_Cell<MVT_RowData>>,\n required: true,\n },\n table: {\n type: Object as PropType<MVT_TableInstance<MVT_RowData>>,\n required: true,\n },\n },\n setup(props, { attrs, slots }) {\n const copied = ref(false)\n return () => {\n const { cell, table } = props\n const {\n options: { localization, mantineCopyButtonProps },\n } = table\n const { column, row } = cell\n\n const copyButtonProps = {\n ...parseFromValuesOrFunc(mantineCopyButtonProps, {\n cell,\n column,\n row,\n table,\n }),\n ...parseFromValuesOrFunc(column.columnDef.mantineCopyButtonProps, {\n cell,\n column,\n row,\n table,\n }),\n ...attrs,\n }\n\n const handleCopy = () => {\n navigator?.clipboard?.writeText(cell.getValue<any>()?.toString())\n copied.value = true\n setTimeout(() => (copied.value = false), 4000)\n }\n\n return h(\n Tooltip,\n {\n color: copied.value ? 'teal' : undefined,\n label: copied.value ? localization.copiedToClipboard : localization.clickToCopy,\n openDelay: 1000,\n withinPortal: true,\n } as any,\n () =>\n h(\n UnstyledButton,\n {\n ...copyButtonProps,\n onClick: (event: MouseEvent) => {\n event.stopPropagation()\n handleCopy()\n ;(copyButtonProps as any)?.onClick?.(event)\n },\n class: clsx(classes.root, (copyButtonProps as any)?.class),\n } as any,\n () => slots.default?.(),\n ),\n )\n }\n },\n})\n","import { defineComponent, h, type PropType } from 'vue'\n\nimport { Highlight } from '@mantine-vue/core'\n\nimport { type MVT_Cell, type MVT_Node, type MVT_RowData, type MVT_TableInstance } from '../../types'\nimport { parseFromValuesOrFunc } from '../../utils/utils'\n\nconst allowedTypes = ['string', 'number']\nconst allowedFilterVariants = ['text', 'autocomplete']\n\nexport const MVT_TableBodyCellValue = defineComponent({\n name: 'MVTTableBodyCellValue',\n props: {\n cell: {\n type: Object as PropType<MVT_Cell<MVT_RowData>>,\n required: true,\n },\n renderedColumnIndex: { type: Number, default: 0 },\n renderedRowIndex: { type: Number, default: 0 },\n table: {\n type: Object as PropType<MVT_TableInstance<MVT_RowData>>,\n required: true,\n },\n },\n setup(props) {\n return () => {\n const { cell, renderedColumnIndex, renderedRowIndex, table } = props\n const {\n getState,\n options: { enableFilterMatchHighlighting, mantineHighlightProps = { size: 'sm' } },\n } = table\n const { column, row } = cell\n const { columnDef } = column\n const { globalFilter, globalFilterFn } = getState()\n const filterValue = column.getFilterValue()\n\n const highlightProps = parseFromValuesOrFunc(mantineHighlightProps, {\n cell,\n column,\n row,\n table,\n }) as Record<string, any>\n\n let renderedCellValue: MVT_Node | number | string | undefined =\n cell.getIsAggregated() && columnDef.AggregatedCell\n ? columnDef.AggregatedCell({ cell, column, row, table })\n : row.getIsGrouped() && !cell.getIsGrouped()\n ? null\n : cell.getIsGrouped() && columnDef.GroupedCell\n ? columnDef.GroupedCell({ cell, column, row, table })\n : undefined\n\n const isGroupedValue = renderedCellValue !== undefined\n\n if (!isGroupedValue) {\n renderedCellValue = cell.renderValue() as number | string\n }\n\n if (\n enableFilterMatchHighlighting &&\n columnDef.enableFilterMatchHighlighting !== false &&\n renderedCellValue &&\n allowedTypes.includes(typeof renderedCellValue) &&\n ((filterValue &&\n allowedTypes.includes(typeof filterValue) &&\n allowedFilterVariants.includes(columnDef.filterVariant as string)) ||\n (globalFilter &&\n allowedTypes.includes(typeof globalFilter) &&\n column.getCanGlobalFilter()))\n ) {\n let highlight: string | string[] = (\n column.getFilterValue() ??\n globalFilter ??\n ''\n ).toString() as string\n if ((filterValue ? columnDef._filterFn : globalFilterFn) === 'fuzzy') {\n highlight = highlight.split(' ')\n }\n const text = renderedCellValue.toString()\n\n renderedCellValue = h(\n Highlight,\n { color: 'yellow.3', highlight, ...highlightProps } as any,\n () => text,\n )\n }\n\n if (columnDef.Cell && !isGroupedValue) {\n renderedCellValue = columnDef.Cell({\n cell,\n column,\n renderedCellValue,\n renderedColumnIndex,\n renderedRowIndex,\n row,\n table,\n })\n }\n\n return renderedCellValue\n }\n },\n})\n",".root {\n --resize-thickness: 2px;\n\n background-clip: padding-box;\n text-align: var(--mvt-cell-align, left);\n overflow: hidden;\n position: relative;\n transition: padding 150ms ease-in-out;\n\n &[data-dragging-column] {\n z-index: 2;\n border-left: var(--drag-thickness) dashed var(--mvt-dragging-drag-border-color);\n border-right: var(--drag-thickness) dashed var(--mvt-dragging-drag-border-color);\n &[data-last-row] {\n border-bottom: var(--drag-thickness) dashed var(--mvt-dragging-drag-border-color);\n }\n }\n\n &[data-hovered-column-target] {\n opacity: 0.5;\n border-left: var(--hover-thickness) dashed var(--mvt-dragging-hovered-border-color);\n border-right: var(--hover-thickness) dashed var(--mvt-dragging-hovered-border-color);\n &[data-last-row] {\n border-bottom: var(--hover-thickness) dashed var(--mvt-dragging-hovered-border-color);\n }\n }\n\n &[data-resizing='ltr'] {\n border-right: var(--resize-thickness) solid var(--mvt-resize-column-border-color);\n }\n\n &[data-resizing='rtl'] {\n border-left: var(--resize-thickness) solid var(--mvt-resize-column-border-color);\n }\n\n &:hover {\n outline-offset: -1px;\n text-overflow: clip;\n }\n}\n\n.root-grid {\n align-items: center;\n justify-content: var(--mvt-cell-align, flex-start);\n display: flex;\n}\n\n.root-virtualized {\n transition: none;\n}\n\n.root-data-col {\n text-overflow: ellipsis;\n}\n\n.root-nowrap {\n white-space: nowrap;\n}\n\n.root-cursor-pointer {\n cursor: pointer;\n}\n\n.root-editable-hover {\n @mixin hover {\n outline: 1px solid var(--mantine-color-gray-7);\n }\n}\n\n.root-cell-hover-reveal {\n overflow: visible;\n}\n\n.cell-hover-reveal {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n text-align: var(--mvt-cell-align);\n}\n\n.cell-hover-reveal.overflowing:hover {\n overflow: visible;\n white-space: normal;\n position: absolute;\n z-index: 2;\n padding: var(--table-vertical-spacing) var(--table-horizontal-spacing, var(--mantine-spacing-xs));\n background-color: var(--mvt-base-background-color);\n box-shadow: var(--mantine-shadow-sm);\n border: 1px solid var(--mantine-primary-color-filled);\n text-indent: -1px;\n width: max-content;\n top: 0;\n left: 0;\n height: 100%;\n display: flex;\n justify-content: center;\n align-items: center;\n}\n","import { type CSSProperties, defineComponent, h, type PropType, ref, type Ref } from 'vue'\n\nimport { Skeleton, TableTd, useDirection, useMantineTheme } from '@mantine-vue/core'\n\nimport clsx from 'clsx'\n\nimport {\n type MVT_Cell,\n type MVT_RowData,\n type MVT_TableInstance,\n type MVT_VirtualItem,\n} from '../../types'\nimport { parseCSSVarId } from '../../utils/style.utils'\nimport { parseFromValuesOrFunc } from '../../utils/utils'\nimport { MVT_CopyButton } from '../buttons/MVT_CopyButton'\nimport { MVT_EditCellTextInput } from '../inputs/MVT_EditCellTextInput'\nimport { MVT_TableBodyCellValue } from './MVT_TableBodyCellValue'\nimport classes from './MVT_TableBodyCell.module.css'\n\nexport const MVT_TableBodyCell = defineComponent({\n name: 'MVTTableBodyCell',\n inheritAttrs: false,\n props: {\n cell: {\n type: Object as PropType<MVT_Cell<MVT_RowData>>,\n required: true,\n },\n numRows: { type: Number, default: 1 },\n renderedColumnIndex: { type: Number, default: 0 },\n renderedRowIndex: { type: Number, default: 0 },\n rowRef: {\n type: Object as PropType<Ref<HTMLTableRowElement | null>>,\n default: undefined,\n },\n table: {\n type: Object as PropType<MVT_TableInstance<MVT_RowData>>,\n required: true,\n },\n virtualCell: {\n type: Object as PropType<MVT_VirtualItem>,\n default: undefined,\n },\n },\n setup(props, { attrs }) {\n const direction = useDirection()\n const theme = useMantineTheme()\n const skeletonWidth = ref(100)\n const isCellContentOverflowing = ref(false)\n const cellHoverRevealDivRef = ref<HTMLDivElement | null>(null)\n\n // compute a stable skeleton width once\n {\n const { cell, table } = props\n const { isLoading, showSkeletons } = table.getState()\n if (isLoading || showSkeletons) {\n const size = cell.column.getSize()\n skeletonWidth.value =\n cell.column.columnDef.columnDefType === 'display'\n ? size / 2\n : Math.round(Math.random() * (size - size / 3) + size / 3)\n }\n }\n\n return () => {\n const { cell, numRows, renderedColumnIndex, renderedRowIndex, rowRef, table, virtualCell } =\n props\n const {\n getState,\n options: {\n columnResizeDirection,\n columnResizeMode,\n createDisplayMode,\n editDisplayMode,\n enableClickToCopy,\n enableColumnOrdering,\n enableColumnPinning,\n enableEditing,\n enableGrouping,\n layoutMode,\n mantineSkeletonProps,\n mantineTableBodyCellProps,\n },\n refs: { editInputRefs },\n setEditingCell,\n setHoveredColumn,\n } = table\n const {\n columnSizingInfo,\n creatingRow,\n density,\n draggingColumn,\n editingCell,\n editingRow,\n hoveredColumn,\n isLoading,\n showSkeletons,\n } = getState()\n const { column, row } = cell\n const { columnDef } = column\n const { columnDefType } = columnDef\n\n const args = {\n cell,\n column,\n renderedColumnIndex,\n renderedRowIndex,\n row,\n table,\n }\n const tableCellProps = {\n ...parseFromValuesOrFunc(mantineTableBodyCellProps, args),\n ...parseFromValuesOrFunc(columnDef.mantineTableBodyCellProps, args),\n ...attrs,\n }\n\n const skeletonProps = parseFromValuesOrFunc(mantineSkeletonProps, args)\n\n const widthStyles: CSSProperties = {\n minWidth: `max(calc(var(--col-${parseCSSVarId(\n column?.id,\n )}-size) * 1px), ${columnDef.minSize ?? 30}px)`,\n width: `calc(var(--col-${parseCSSVarId(column.id)}-size) * 1px)`,\n }\n if (layoutMode === 'grid') {\n widthStyles.flex = `${\n [0, false].includes(columnDef.grow!) ? 0 : `var(--col-${parseCSSVarId(column.id)}-size)`\n } 0 auto`\n } else if (layoutMode === 'grid-no-grow') {\n widthStyles.flex = `${+(columnDef.grow || 0)} 0 auto`\n }\n const isDraggingColumn = draggingColumn?.id === column.id\n const isHoveredColumn = hoveredColumn?.id === column.id\n const isColumnPinned =\n enableColumnPinning && columnDef.columnDefType !== 'group' && column.getIsPinned()\n\n const isEditable =\n !cell.getIsPlaceholder() &&\n parseFromValuesOrFunc(enableEditing, row) &&\n parseFromValuesOrFunc(columnDef.enableEditing, row) !== false\n\n const isEditing =\n isEditable &&\n !['custom', 'modal'].includes(editDisplayMode as string) &&\n (editDisplayMode === 'table' || editingRow?.id === row.id || editingCell?.id === cell.id) &&\n !row.getIsGrouped()\n\n const isCreating = isEditable && createDisplayMode === 'row' && creatingRow?.id === row.id\n\n const showClickToCopyButton =\n parseFromValuesOrFunc(enableClickToCopy, cell) ||\n (parseFromValuesOrFunc(columnDef.enableClickToCopy, cell) &&\n parseFromValuesOrFunc(columnDef.enableClickToCopy, cell) !== false)\n\n const handleDoubleClick = (event: MouseEvent) => {\n ;(tableCellProps as any)?.onDoubleClick?.(event)\n if (isEditable && editDisplayMode === 'cell') {\n setEditingCell(cell)\n setTimeout(() => {\n const textField = editInputRefs.value[cell.id]\n if (textField) {\n textField.focus()\n textField.select?.()\n }\n }, 100)\n }\n }\n\n const handleDragEnter = (e: DragEvent) => {\n ;(tableCellProps as any)?.onDragEnter?.(e)\n const { draggingColumn: dragging, hoveredColumn: hovered } = getState()\n if (enableGrouping && hovered?.id === 'drop-zone') {\n setHoveredColumn(null)\n }\n if (enableColumnOrdering && dragging) {\n setHoveredColumn(columnDef.enableColumnOrdering !== false ? column : null)\n }\n }\n\n const cellValueProps = {\n cell,\n renderedColumnIndex,\n renderedRowIndex,\n table,\n }\n\n const onMouseEnter = () => {\n if (!columnDef.enableCellHoverReveal) return\n const div = cellHoverRevealDivRef.value\n if (div) {\n isCellContentOverflowing.value = div.scrollWidth > div.clientWidth\n }\n }\n const onMouseLeave = () => {\n if (!columnDef.enableCellHoverReveal) return\n isCellContentOverflowing.value = false\n }\n\n // Server grouping fields are not TanStack client-grouped columns.\n const isServerGrouping = !!(table as any)._serverGrouping\n\n const renderCellContent = () => {\n if (!isServerGrouping && cell.getIsPlaceholder()) {\n return columnDef.PlaceholderCell?.({ cell, column, row, table }) ?? null\n }\n\n if (showSkeletons !== false && (isLoading || showSkeletons)) {\n return h(Skeleton, {\n height: 20,\n width: skeletonWidth.value,\n ...skeletonProps,\n } as any)\n }\n\n if (\n columnDefType === 'display' &&\n (['mvt-row-expand', 'mvt-row-numbers', 'mvt-row-select'].includes(column.id) ||\n !row.getIsGrouped())\n ) {\n return columnDef.Cell?.({\n column,\n renderedCellValue: cell.renderValue() as any,\n row,\n rowRef,\n ...cellValueProps,\n })\n }\n\n if (isCreating || isEditing) {\n return h(MVT_EditCellTextInput, { cell, table } as any)\n }\n\n if (showClickToCopyButton && columnDef.enableClickToCopy !== false) {\n return h(MVT_CopyButton, { cell, table } as any, () =>\n h(MVT_TableBodyCellValue, cellValueProps as any),\n )\n }\n\n return h(MVT_TableBodyCellValue, cellValueProps as any)\n }\n\n const groupedSuffix =\n cell.getIsGrouped() && !columnDef.GroupedCell ? ` (${row.subRows?.length})` : null\n\n const inner = columnDef.enableCellHoverReveal\n ? h(\n 'div',\n {\n class: clsx(\n columnDef.enableCellHoverReveal &&\n !(isCreating || isEditing) &&\n classes['cell-hover-reveal'],\n isCellContentOverflowing.value && classes['overflowing'],\n ),\n ref: (el: any) => {\n cellHoverRevealDivRef.value = (el?.$el ?? el) as HTMLDivElement\n },\n },\n [renderCellContent(), groupedSuffix],\n )\n : [renderCellContent(), groupedSuffix]\n\n const style = {\n ...widthStyles,\n '--mvt-cell-align':\n (tableCellProps as any).align ?? (direction.dir.value === 'rtl' ? 'right' : 'left'),\n '--mvt-table-cell-left':\n isColumnPinned === 'left' ? `${column.getStart(isColumnPinned)}` : undefined,\n '--mvt-table-cell-right':\n isColumnPinned === 'right' ? `${column.getAfter(isColumnPinned)}` : undefined,\n ...parseFromValuesOrFunc((tableCellProps as any).style, theme),\n }\n\n const { children: cellChildren, ...tableCellRest } = tableCellProps as any\n\n return h(\n TableTd,\n {\n 'data-column-pinned': isColumnPinned || undefined,\n 'data-dragging-column': isDraggingColumn || undefined,\n 'data-first-right-pinned':\n (isColumnPinned === 'right' && column.getIsFirstColumn(isColumnPinned)) || undefined,\n 'data-hovered-column-target': isHoveredColumn || undefined,\n 'data-index': renderedColumnIndex,\n 'data-last-left-pinned':\n (isColumnPinned === 'left' && column.getIsLastColumn(isColumnPinned)) || undefined,\n 'data-last-row': renderedRowIndex === numRows - 1 || undefined,\n 'data-resizing':\n (columnResizeMode === 'onChange' &&\n columnSizingInfo?.isResizingColumn === column.id &&\n columnResizeDirection) ||\n undefined,\n ...tableCellRest,\n class: clsx(\n classes.root,\n layoutMode?.startsWith('grid') && classes['root-grid'],\n virtualCell && classes['root-virtualized'],\n isEditable && editDisplayMode === 'cell' && classes['root-cursor-pointer'],\n isEditable &&\n ['cell', 'table'].includes(editDisplayMode ?? '') &&\n columnDefType !== 'display' &&\n classes['root-editable-hover'],\n columnDefType === 'data' && classes['root-data-col'],\n density === 'xs' && classes['root-nowrap'],\n columnDef.enableCellHoverReveal && classes['root-cell-hover-reveal'],\n (tableCellProps as any)?.class,\n ),\n onDblclick: handleDoubleClick,\n onDragenter: handleDragEnter,\n onMouseenter: onMouseEnter,\n onMouseleave: onMouseLeave,\n style,\n } as any,\n () => cellChildren ?? inner,\n )\n }\n },\n})\n\nexport const Memo_MVT_TableBodyCell = MVT_TableBodyCell\n",".root {\n display: table-row;\n width: 100%;\n background-color: var(--mvt-base-background-color);\n}\n\n.root-grid {\n display: flex;\n}\n\n.root-virtual-row {\n position: absolute;\n top: var(--mvt-parent-row-height);\n transform: translateY(var(--mvt-virtual-row-start));\n transition: none;\n z-index: 1;\n}\n\n.inner {\n display: table-cell;\n transition: all 150ms ease-in-out;\n width: var(--mvt-inner-width);\n}\n\n.inner-grid {\n display: flex;\n}\n\n.inner-expanded {\n border-bottom: 1px solid var(--_table-border-color);\n}\n\n.inner-virtual {\n transition: none;\n}\n","import { defineComponent, h, type PropType, type Ref } from 'vue'\n\nimport { Collapse, TableTd, TableTr } from '@mantine-vue/core'\n\nimport clsx from 'clsx'\n\nimport {\n type MVT_Row,\n type MVT_RowData,\n type MVT_RowVirtualizer,\n type MVT_TableInstance,\n type MVT_VirtualItem,\n} from '../../types'\nimport { parseFromValuesOrFunc } from '../../utils/utils'\nimport { MVT_EditCellTextInput } from '../inputs/MVT_EditCellTextInput'\nimport { renderMVT_Renderable, useMVT_Slots } from '../MVT_TableSlots'\nimport classes from './MVT_TableDetailPanel.module.css'\n\nexport const MVT_TableDetailPanel = defineComponent({\n name: 'MVTTableDetailPanel',\n inheritAttrs: false,\n props: {\n parentRowRef: {\n type: Object as PropType<Ref<HTMLTableRowElement | null>>,\n required: true,\n },\n renderedRowIndex: { type: Number, default: 0 },\n row: {\n type: Object as PropType<MVT_Row<MVT_RowData>>,\n required: true,\n },\n rowVirtualizer: {\n type: Object as PropType<MVT_RowVirtualizer>,\n default: undefined,\n },\n striped: {\n type: [Boolean, String] as PropType<false | string>,\n default: undefined,\n },\n table: {\n type: Object as PropType<MVT_TableInstance<MVT_RowData>>,\n required: true,\n },\n virtualRow: {\n type: Object as PropType<MVT_VirtualItem>,\n default: undefined,\n },\n },\n setup(props, { attrs }) {\n const mvtSlots = useMVT_Slots()\n return () => {\n const { parentRowRef, renderedRowIndex, row, rowVirtualizer, striped, table, virtualRow } =\n props\n const {\n getState,\n getVisibleLeafColumns,\n options: {\n layoutMode,\n mantineDetailPanelProps,\n mantineTableBodyRowProps,\n renderDetailPanel,\n },\n } = table\n const { isLoading } = getState()\n\n const tableRowProps = parseFromValuesOrFunc(mantineTableBodyRowProps, {\n isDetailPanel: true,\n row,\n table,\n })\n\n const tableCellProps = {\n ...parseFromValuesOrFunc(mantineDetailPanelProps, { row, table }),\n ...attrs,\n }\n\n const internalEditComponents = row\n .getAllCells()\n .filter((cell) => cell.column.columnDef.columnDefType === 'data')\n .map((cell) => h(MVT_EditCellTextInput, { cell, key: cell.id, table } as any))\n\n const DetailPanel =\n !isLoading &&\n row.getIsExpanded() &&\n renderMVT_Renderable(mvtSlots.detailPanel, renderDetailPanel, {\n internalEditComponents,\n row,\n table,\n })\n\n return h(\n TableTr,\n {\n 'data-index': renderDetailPanel ? renderedRowIndex * 2 + 1 : renderedRowIndex,\n 'data-striped': striped,\n ref: (el: any) => {\n const node = (el?.$el ?? el) as HTMLTableRowElement\n if (node) rowVirtualizer?.measureElement?.(node)\n },\n ...tableRowProps,\n style: {\n '--mvt-parent-row-height': virtualRow\n ? `${parentRowRef.value?.getBoundingClientRect()?.height}px`\n : undefined,\n '--mvt-virtual-row-start': virtualRow ? `${virtualRow.start}px` : undefined,\n ...(tableRowProps as any)?.style,\n },\n class: clsx(\n 'mantine-Table-tr-detail-panel',\n classes.root,\n layoutMode?.startsWith('grid') && classes['root-grid'],\n virtualRow && classes['root-virtual-row'],\n (tableRowProps as any)?.class,\n ),\n } as any,\n () =>\n h(\n TableTd,\n {\n colspan: getVisibleLeafColumns().length,\n component: 'td',\n ...tableCellProps,\n style: {\n '--mvt-inner-width': `${table.getTotalSize()}px`,\n },\n class: clsx(\n 'mantine-Table-td-detail-panel',\n classes.inner,\n layoutMode?.startsWith('grid') && classes['inner-grid'],\n row.getIsExpanded() && classes['inner-expanded'],\n virtualRow && classes['inner-virtual'],\n ),\n p: row.getIsExpanded() && DetailPanel ? 'md' : 0,\n } as any,\n () =>\n rowVirtualizer\n ? row.getIsExpanded() && DetailPanel\n : h(Collapse, { expanded: row.getIsExpanded() } as any, () => DetailPanel),\n ),\n )\n }\n },\n})\n",".root {\n --hover-thickness: 3px;\n --drag-thickness: 1px;\n\n box-sizing: border-box;\n transition: all 150ms ease-in-out;\n width: 100%;\n\n /* default background-color */\n &:not([data-striped], [data-striped='false']) {\n background-color: var(--mvt-base-background-color);\n }\n /* striped background-colors (take detail panels and virtualization into account) */\n &:not([data-selected], [data-row-pinned]) {\n &[data-striped='odd'] {\n background-color: var(--mvt-striped-row-background-color);\n }\n &[data-striped='even'] {\n background-color: var(--mvt-striped-row-background-color);\n }\n }\n\n /* column pinning styles */\n &:not([data-selected], [data-row-pinned]) {\n td {\n &[data-column-pinned] {\n &::before {\n background-color: var(--mvt-pinned-column-background-color);\n }\n }\n }\n &[data-striped='odd'] {\n td {\n &[data-column-pinned] {\n &::before {\n background-color: var(--mvt-striped-row-background-color);\n }\n }\n }\n }\n &[data-striped='even'] {\n td {\n &[data-column-pinned] {\n &::before {\n background-color: var(--mvt-striped-row-background-color);\n }\n }\n }\n }\n }\n\n td {\n &[data-column-pinned] {\n background-color: var(--mvt-pinned-column-background-color);\n opacity: 0.97;\n position: sticky;\n z-index: 1;\n\n &::before {\n content: '';\n height: 100%;\n left: 0;\n position: absolute;\n top: 0;\n width: 100%;\n z-index: -1;\n }\n\n &[data-column-pinned='left'] {\n left: calc(var(--mvt-table-cell-left, 0) * 1px);\n &[data-last-left-pinned] {\n &::before {\n box-shadow: -6px 0 6px -6px\n alpha(\n light-dark(var(--mantine-color-gray-outline), var(--mantine-color-dark-outline)),\n 0.5\n )\n inset;\n }\n }\n }\n\n &[data-column-pinned='right'] {\n right: calc(var(--mvt-table-cell-right, 0) * 1px);\n &[data-first-right-pinned] {\n &::before {\n box-shadow: 6px 0 6px -6px\n alpha(\n light-dark(var(--mantine-color-gray-outline), var(--mantine-color-dark-outline)),\n 0.5\n )\n inset;\n }\n }\n }\n }\n }\n /* end column pinning styles */\n /* row pinning styles */\n &[data-row-pinned] {\n background-color: var(--mvt-pinned-row-background-color, --mantine-color-body);\n bottom: calc(var(--mvt-pinned-row-bottom) * 1px);\n opacity: 0.97;\n top: calc(var(--mvt-pinned-row-top) * 1px);\n\n td {\n &::before {\n background-color: var(--mvt-pinned-row-background-color);\n content: '';\n height: 100%;\n left: 0;\n position: absolute;\n top: 0;\n width: 100%;\n z-index: -1;\n }\n &[data-column-pinned] {\n background-color: var(--mvt-pinned-column-background-color);\n\n &::before {\n background-color: var(--mvt-pinned-row-background-color);\n content: '';\n height: 100%;\n left: 0;\n position: absolute;\n top: 0;\n width: 100%;\n z-index: -1;\n }\n }\n }\n }\n\n &[data-row-pinned='sticky'] {\n z-index: 2;\n position: sticky;\n }\n /* end row pinning styles */\n\n /* selection styles */\n &[data-selected] {\n background-color: var(--mvt-selected-row-background-color, --mantine-color-body);\n\n td {\n &[data-column-pinned] {\n background-color: var(--mvt-pinned-column-background-color);\n\n &::before {\n background-color: var(--mvt-selected-row-background-color);\n }\n }\n }\n }\n /* end selection styles */\n\n &[data-hover] {\n &:hover {\n td {\n background-color: var(--mvt-row-hover-background-color);\n &[data-column-pinned] {\n background-color: var(--mvt-base-background-color);\n &::before {\n background-color: var(--mvt-row-hover-background-color);\n }\n }\n }\n &:not([data-selected], [data-row-pinned]) {\n &[data-striped='odd'] {\n td {\n background-color: var(--mvt-striped-row-hover-background-color);\n &[data-column-pinned] {\n background-color: var(--mvt-base-background-color);\n &::before {\n background-color: var(--mvt-striped-row-hover-background-color);\n }\n }\n }\n }\n &[data-striped='even'] {\n td {\n background-color: var(--mvt-striped-row-hover-background-color);\n &[data-column-pinned] {\n background-color: var(--mvt-base-background-color);\n &::before {\n background-color: var(--mvt-striped-row-hover-background-color);\n }\n }\n }\n }\n }\n &[data-selected] {\n td {\n background-color: var(--mvt-selected-row-hover-background-color);\n\n &[data-column-pinned] {\n background-color: var(--mvt-base-background-color);\n\n &::before {\n background-color: var(--mvt-selected-row-hover-background-color);\n }\n }\n }\n }\n }\n }\n\n &[data-dragging-row] {\n opacity: 0.5;\n border-bottom: var(--drag-thickness) dashed var(--drag-color);\n border-top: var(--drag-thickness) dashed var(--drag-color);\n td {\n &:first-child {\n border-left: var(--drag-thickness) dashed var(--drag-color);\n }\n &:last-child {\n border-right: var(--drag-thickness) dashed var(--drag-color);\n }\n }\n }\n\n &[data-hovered-row-target] {\n td {\n opacity: 0.5;\n border-top: var(--hover-thickness) dashed var(--mvt-dragging-hovered-border-color);\n border-bottom: var(--hover-thickness) dashed var(--mvt-dragging-hovered-border-color);\n &:first-child {\n border-left: var(--hover-thickness) dashed var(--mvt-dragging-hovered-border-color);\n }\n &:last-child {\n border-right: var(--hover-thickness) dashed var(--mvt-dragging-hovered-border-color);\n }\n }\n }\n}\n\n.root-grid {\n display: flex;\n}\n\n.root-virtualized {\n position: absolute !important;\n top: 0;\n transition: none !important;\n transform: translateY(calc(var(--mvt-virtual-row-start) * 1px));\n will-change: transform;\n}\n","import { defineComponent, h, type PropType, ref } from 'vue'\n\nimport { Box, TableTr } from '@mantine-vue/core'\n\nimport clsx from 'clsx'\n\nimport {\n type MVT_Cell,\n type MVT_ColumnVirtualizer,\n type MVT_DensityState,\n type MVT_Row,\n type MVT_RowData,\n type MVT_RowVirtualizer,\n type MVT_TableInstance,\n type MVT_VirtualItem,\n} from '../../types'\nimport { getIsRowSelected } from '../../utils/row.utils'\nimport { parseFromValuesOrFunc } from '../../utils/utils'\nimport { useMVT_Slots } from '../MVT_TableSlots'\nimport { MVT_TableBodyCell } from './MVT_TableBodyCell'\nimport { MVT_TableDetailPanel } from './MVT_TableDetailPanel'\nimport classes from './MVT_TableBodyRow.module.css'\n\nexport const MVT_TableBodyRow = defineComponent({\n name: 'MVTTableBodyRow',\n inheritAttrs: false,\n props: {\n columnVirtualizer: {\n type: Object as PropType<MVT_ColumnVirtualizer>,\n default: undefined,\n },\n numRows: { type: Number, default: undefined },\n pinnedRowIds: {\n type: Array as PropType<string[]>,\n default: undefined,\n },\n renderedRowIndex: { type: Number, default: 0 },\n row: {\n type: Object as PropType<MVT_Row<MVT_RowData>>,\n required: true,\n },\n rowVirtualizer: {\n type: Object as PropType<MVT_RowVirtualizer>,\n default: undefined,\n },\n table: {\n type: Object as PropType<MVT_TableInstance<MVT_RowData>>,\n required: true,\n },\n tableProps: {\n type: Object as PropType<Record<string, any>>,\n required: true,\n },\n virtualRow: {\n type: Object as PropType<MVT_VirtualItem>,\n default: undefined,\n },\n },\n setup(props, { attrs, slots }) {\n const rowRef = ref<HTMLTableRowElement | null>(null)\n const mvtSlots = useMVT_Slots()\n\n return () => {\n const {\n columnVirtualizer,\n numRows,\n pinnedRowIds,\n renderedRowIndex,\n row,\n rowVirtualizer,\n table,\n tableProps,\n virtualRow,\n } = props\n const {\n getState,\n options: {\n enableRowOrdering,\n enableRowPinning,\n enableStickyFooter,\n enableStickyHeader,\n layoutMode,\n mantineTableBodyRowProps,\n renderDetailPanel,\n rowPinningDisplayMode,\n },\n refs: { tableFooterRef, tableHeadRef },\n setHoveredRow,\n } = table\n const {\n density,\n // draggingColumn,\n draggingRow,\n // editingCell,\n // editingRow,\n hoveredRow,\n isFullScreen,\n } = getState()\n\n const showDetailPanel = renderDetailPanel || mvtSlots.detailPanel\n\n const visibleCells = row.getVisibleCells()\n\n const { virtualColumns, virtualPaddingLeft, virtualPaddingRight } = columnVirtualizer ?? {}\n\n const isRowSelected = getIsRowSelected({ row, table })\n const isRowPinned = enableRowPinning && row.getIsPinned()\n const isRowStickyPinned = isRowPinned && rowPinningDisplayMode?.includes('sticky') && 'sticky'\n const isDraggingRow = draggingRow?.id === row.id\n const isHoveredRow = hoveredRow?.id === row.id\n\n const tableRowProps = {\n ...parseFromValuesOrFunc(mantineTableBodyRowProps, {\n renderedRowIndex,\n row,\n table,\n }),\n ...attrs,\n }\n\n const [bottomPinnedIndex, topPinnedIndex] =\n !enableRowPinning || !isRowStickyPinned || !pinnedRowIds || !row.getIsPinned()\n ? [undefined, undefined]\n : [[...pinnedRowIds].reverse().indexOf(row.id), pinnedRowIds.indexOf(row.id)]\n\n const tableHeadHeight =\n ((enableStickyHeader || isFullScreen) && tableHeadRef.value?.clientHeight) || 0\n const tableFooterHeight = (enableStickyFooter && tableFooterRef.value?.clientHeight) || 0\n\n const defaultRowHeightByDensity: Record<MVT_DensityState, number> = {\n lg: 61,\n md: 53,\n sm: 45,\n xl: 69,\n xs: 37,\n }\n\n const rowHeight =\n parseInt((tableRowProps as any)?.style?.height, 10) ||\n (defaultRowHeightByDensity[density] ?? defaultRowHeightByDensity['md'])\n\n const handleDragEnter = (_e: DragEvent) => {\n if (enableRowOrdering && getState().draggingRow) {\n setHoveredRow(row)\n }\n }\n\n let striped = tableProps.striped as boolean | string\n if (striped) {\n if (striped === true) striped = 'odd'\n if (striped === 'odd' && renderedRowIndex % 2 !== 0) striped = false\n if (striped === 'even' && renderedRowIndex % 2 === 0) striped = false\n }\n\n const style = {\n ...(tableRowProps as any)?.style,\n '--mvt-pinned-row-bottom':\n !virtualRow && bottomPinnedIndex !== undefined && isRowPinned\n ? `${bottomPinnedIndex * rowHeight + (enableStickyFooter ? tableFooterHeight - 1 : 0)}`\n : undefined,\n '--mvt-pinned-row-top': virtualRow\n ? undefined\n : topPinnedIndex !== undefined && isRowPinned\n ? `${\n topPinnedIndex * rowHeight +\n (enableStickyHeader || isFullScreen ? tableHeadHeight - 1 : 0)\n }`\n : undefined,\n '--mvt-virtual-row-start': virtualRow ? `${virtualRow.start}` : undefined,\n }\n\n const cells = slots.default\n ? slots.default()\n : (virtualColumns ?? row.getVisibleCells()).map(\n (cellOrVirtualCell, renderedColumnIndex) => {\n let cell = cellOrVirtualCell as MVT_Cell<MVT_RowData>\n let index = renderedColumnIndex\n if (columnVirtualizer) {\n index = (cellOrVirtualCell as MVT_VirtualItem).index\n cell = visibleCells[index]\n }\n return h(MVT_TableBodyCell, {\n cell,\n key: cell.id,\n numRows,\n renderedColumnIndex: index,\n renderedRowIndex,\n rowRef,\n table,\n virtualCell: columnVirtualizer ? (cellOrVirtualCell as MVT_VirtualItem) : undefined,\n } as any)\n },\n )\n\n return [\n h(\n TableTr,\n {\n 'data-dragging-row': isDraggingRow || undefined,\n 'data-hovered-row-target': isHoveredRow || undefined,\n 'data-index': showDetailPanel ? renderedRowIndex * 2 : renderedRowIndex,\n 'data-row-pinned': isRowStickyPinned || isRowPinned || undefined,\n 'data-selected': isRowSelected || undefined,\n 'data-striped': striped,\n onDragenter: handleDragEnter,\n ref: (el: any) => {\n const node = (el?.$el ?? el) as HTMLTableRowElement\n if (node) {\n rowRef.value = node\n rowVirtualizer?.measureElement?.(node)\n }\n },\n ...tableRowProps,\n style,\n class: clsx(\n classes.root,\n layoutMode?.startsWith('grid') && classes['root-grid'],\n virtualRow && classes['root-virtualized'],\n (tableRowProps as any)?.class,\n ),\n } as any,\n () => [\n virtualPaddingLeft\n ? h(Box, {\n component: 'td',\n display: 'flex',\n w: virtualPaddingLeft,\n } as any)\n : null,\n cells,\n virtualPaddingRight\n ? h(Box, {\n component: 'td',\n display: 'flex',\n w: virtualPaddingRight,\n } as any)\n : null,\n ],\n ),\n showDetailPanel &&\n !row.getIsGrouped() &&\n h(MVT_TableDetailPanel, {\n parentRowRef: rowRef,\n renderedRowIndex,\n row,\n rowVirtualizer,\n striped,\n table,\n virtualRow,\n } as any),\n ]\n }\n },\n})\n\nexport const Memo_MVT_TableBodyRow = MVT_TableBodyRow\n","import { defineComponent, Fragment, h, type PropType, type VNodeChild } from 'vue'\n\nimport { ActionIcon, Alert, Button, Group, Loader, TableTd, TableTr, Text } from '@mantine-vue/core'\n\nimport clsx from 'clsx'\n\nimport { type MVT_Column, type MVT_RowData, type MVT_TableInstance } from '../types'\nimport { parseFromValuesOrFunc } from '../utils/utils'\nimport { getMVT_ColumnWidthStyles } from '../utils/style.utils'\nimport { flexRender } from '../utils/tanstack.helpers'\nimport { useMVT_Slots } from '../components/MVT_TableSlots'\nimport { MVT_TableBodyRow } from '../components/body/MVT_TableBodyRow'\nimport {\n MVT_SERVER_GROUPING_ROOT_PATH_ID,\n type MVT_ServerGroupNode,\n type MVT_ServerGroupPathId,\n type MVT_ServerGroupRowContext,\n type MVT_ServerGroupingPathState,\n} from './serverGrouping.types'\nimport { createServerGroupPathId, getServerGroupPathDepth } from './serverGrouping.utils'\nimport { type MVT_ServerGroupingManager } from './useMVT_ServerGrouping'\nimport classes from './MVT_ServerGrouping.module.css'\n\nconst INDENT_PX = 24\n\n/** Renders the server-grouping hierarchy as rows of the root table body. */\nexport const MVT_ServerGroupingBody = defineComponent({\n name: 'MVTServerGroupingBody',\n inheritAttrs: false,\n props: {\n table: {\n type: Object as PropType<MVT_TableInstance<MVT_RowData>>,\n required: true,\n },\n tableProps: {\n type: Object as PropType<Record<string, any>>,\n required: true,\n },\n },\n setup(props) {\n const mvtSlots = useMVT_Slots()\n\n return () => {\n const { tableProps } = props\n const table = props.table as MVT_TableInstance<any>\n const manager = (table as any)._serverGrouping as\n | MVT_ServerGroupingManager<MVT_RowData>\n | undefined\n if (!manager) return null\n\n const { options: sgOptions } = manager\n const tableOptions = table.options\n const localization = tableOptions.localization as unknown as Record<string, string>\n const icons = tableOptions.icons\n const visibleColumns = (table as any).getVisibleLeafColumns() as MVT_Column<MVT_RowData>[]\n const colSpan = visibleColumns.length || 1\n\n const layoutMode = tableOptions.layoutMode\n const paginationOptions = {\n enabled: sgOptions.pagination?.enabled ?? true,\n mantineActionIconProps: sgOptions.pagination?.mantineActionIconProps ?? {},\n showAtRoot:\n sgOptions.pagination?.showAtRoot ??\n (tableOptions.enablePagination === false || tableOptions.positionPagination === 'none'),\n showForGroups: sgOptions.pagination?.showForGroups ?? true,\n showForRecords: sgOptions.pagination?.showForRecords ?? true,\n }\n\n const indentStyle = (depth: number) => ({\n paddingInlineStart: `${8 + depth * INDENT_PX}px`,\n })\n\n const columnStyle = (column: MVT_Column<MVT_RowData>, extra?: Record<string, any>) => ({\n ...getMVT_ColumnWidthStyles({\n columnId: column.id,\n grow: column.columnDef.grow,\n layoutMode,\n minSize: column.columnDef.minSize,\n }),\n ...extra,\n })\n\n const auxRow = (key: string, depth: number, children: VNodeChild) =>\n h(\n TableTr,\n {\n class: clsx(classes['aux-row'], layoutMode?.startsWith('grid') && classes['row-grid']),\n key,\n } as any,\n () =>\n h(\n TableTd,\n {\n class: classes['aux-cell'],\n colspan: colSpan,\n style: {\n ...indentStyle(depth),\n ...(layoutMode?.startsWith('grid') ? { flex: '1 0 auto', width: '100%' } : {}),\n },\n } as any,\n () => children,\n ),\n )\n\n const loadingContent = (pathId: MVT_ServerGroupPathId, depth: number) =>\n (mvtSlots as any).serverGroupLoading?.({ depth, pathId, table }) ??\n parseFromValuesOrFunc(sgOptions.renderGroupLoading, { depth, pathId, table }) ??\n h(Group, { gap: 'xs' } as any, () => [\n h(Loader, { size: 'xs' } as any),\n h(Text, { c: 'dimmed', size: 'sm' } as any, () => localization.loading ?? 'Loading…'),\n ])\n\n const errorContent = (pathId: MVT_ServerGroupPathId, error: unknown, retry: () => void) =>\n (mvtSlots as any).serverGroupError?.({ error, pathId, retry, table }) ??\n parseFromValuesOrFunc(sgOptions.renderGroupError, { error, pathId, retry, table }) ??\n h(Alert, { color: 'red', role: 'alert', variant: 'light' } as any, () =>\n h(Group, { gap: 'sm' } as any, () => [\n h(\n Text,\n { size: 'sm' } as any,\n () =>\n localization.errorLoadingData ??\n (error instanceof Error && error.message) ??\n 'Error loading data',\n ),\n h(\n Button,\n { color: 'red', onClick: retry, size: 'compact-xs', variant: 'outline' } as any,\n () => localization.retry ?? 'Retry',\n ),\n ]),\n )\n\n const emptyContent = (pathId: MVT_ServerGroupPathId, field: string | undefined) => {\n const parentGroup = manager.getParentItems(pathId).at(-1)\n return (\n (mvtSlots as any).serverGroupEmpty?.({ field, parentGroup, pathId, table }) ??\n parseFromValuesOrFunc(sgOptions.renderGroupEmpty, {\n field,\n parentGroup,\n pathId,\n table,\n }) ??\n h(\n Text,\n { c: 'dimmed', size: 'sm' } as any,\n () => localization.noRecordsToDisplay ?? 'No records to display',\n )\n )\n }\n\n const paginationRow = (\n pathId: MVT_ServerGroupPathId,\n depth: number,\n state: MVT_ServerGroupingPathState<MVT_RowData>,\n ): VNodeChild | null => {\n const isRoot = pathId === MVT_SERVER_GROUPING_ROOT_PATH_ID\n const { pageIndex, pageSize } = state.pagination\n const totalRowCount = state.rowCount\n const show =\n paginationOptions.enabled &&\n (state.kind === 'groups'\n ? paginationOptions.showForGroups\n : paginationOptions.showForRecords) &&\n (!isRoot || paginationOptions.showAtRoot) &&\n (totalRowCount > pageSize || pageIndex > 0)\n if (!show) return null\n const firstRowIndex = pageIndex * pageSize\n const lastRowIndex = Math.min(firstRowIndex + pageSize, totalRowCount)\n const setPageIndex = (nextPageIndex: number) =>\n manager.setPagination(pathId, { pageIndex: nextPageIndex })\n return auxRow(\n `${pathId}:pagination`,\n depth,\n h(Group, { class: classes.pagination, gap: 'xs', wrap: 'nowrap' } as any, () => [\n h(\n Text,\n { c: 'dimmed', size: 'sm' } as any,\n () =>\n `${totalRowCount === 0 ? 0 : (firstRowIndex + 1).toLocaleString()}-${lastRowIndex.toLocaleString()} ${localization.of} ${totalRowCount.toLocaleString()}`,\n ),\n h(\n ActionIcon,\n {\n color: 'gray',\n size: 'sm',\n variant: 'subtle',\n ...paginationOptions.mantineActionIconProps,\n 'aria-label': localization.goToPreviousPage,\n disabled: pageIndex <= 0 || state.isFetching,\n onClick: () => setPageIndex(pageIndex - 1),\n } as any,\n () => h(icons.IconChevronLeft),\n ),\n h(\n ActionIcon,\n {\n color: 'gray',\n size: 'sm',\n variant: 'subtle',\n ...paginationOptions.mantineActionIconProps,\n 'aria-label': localization.goToNextPage,\n disabled: lastRowIndex >= totalRowCount || state.isFetching,\n onClick: () => setPageIndex(pageIndex + 1),\n } as any,\n () => h(icons.IconChevronRight),\n ),\n ]),\n )\n }\n\n const groupRow = (\n node: MVT_ServerGroupNode,\n parentPathId: MVT_ServerGroupPathId,\n field: string,\n depth: number,\n ): VNodeChild[] => {\n const pathId = createServerGroupPathId(parentPathId, field, node.id)\n const expanded = manager.isExpanded(pathId)\n const childState = manager.getPathState(pathId)\n const context: MVT_ServerGroupRowContext = {\n depth,\n field,\n group: node,\n isExpanded: expanded,\n parentGroups: manager.getParentItems(pathId).slice(0, -1),\n pathId,\n table,\n }\n const hasChildren = node.hasChildren !== false\n\n const rowProps = parseFromValuesOrFunc(sgOptions.mantineGroupRowProps, context) ?? {}\n\n const label =\n (mvtSlots as any).serverGroupLabel?.(context) ??\n parseFromValuesOrFunc(sgOptions.renderGroupLabel, context) ??\n node.label\n const count =\n (mvtSlots as any).serverGroupCount?.(context) ??\n parseFromValuesOrFunc(sgOptions.renderGroupCount, context) ??\n (node.count !== undefined ? `(${node.count.toLocaleString()})` : null)\n\n // Group labels occupy the first data column; display columns remain empty.\n const labelColumn = visibleColumns.find(\n (column) => (column.columnDef as any).columnDefType !== 'display',\n )\n const labelCell = (column?: MVT_Column<MVT_RowData>) =>\n h(\n TableTd,\n {\n class: classes['group-cell'],\n key: column?.id ?? 'mvt-server-group-label',\n style: column ? columnStyle(column, indentStyle(depth)) : indentStyle(depth),\n } as any,\n () =>\n h(Group, { gap: 'xs', wrap: 'nowrap' } as any, () => [\n hasChildren\n ? h(\n ActionIcon,\n {\n 'aria-expanded': String(expanded),\n 'aria-label': `${expanded ? localization.collapse : localization.expand} ${node.label}`,\n color: 'gray',\n onClick: () => manager.toggle(pathId),\n size: 'sm',\n variant: 'subtle',\n } as any,\n () => h(expanded ? icons.IconChevronDown : icons.IconChevronRight),\n )\n : h('span', { class: classes['expand-spacer'] }),\n h(Text, { fw: 600, size: 'sm' } as any, () => [label]),\n count !== null && h(Text, { c: 'dimmed', size: 'sm' } as any, () => [count]),\n expanded &&\n childState?.isFetching &&\n !childState.isLoading &&\n h(Loader, { size: 'xs' } as any),\n ]),\n )\n\n const aggregateCell = (column: MVT_Column<MVT_RowData>) => {\n const columnServerGrouping = (column.columnDef as any).serverGrouping\n let content: VNodeChild = null\n if (columnServerGrouping?.visible !== false && columnServerGrouping?.getValue) {\n const value = columnServerGrouping.getValue({ ...context, column })\n const cellContext = { ...context, column, value }\n content =\n (mvtSlots as any).serverGroupCell?.(cellContext) ??\n (columnServerGrouping.Cell\n ? flexRender(columnServerGrouping.Cell, cellContext)\n : ((value ?? null) as VNodeChild))\n } else if ((mvtSlots as any).serverGroupCell) {\n content = (mvtSlots as any).serverGroupCell({ ...context, column, value: undefined })\n }\n return h(\n TableTd,\n {\n class: classes['aggregate-cell'],\n key: column.id,\n style: columnStyle(column),\n } as any,\n () => [content],\n )\n }\n\n const spacerCell = (column: MVT_Column<MVT_RowData>) =>\n h(TableTd, { key: column.id, style: columnStyle(column) } as any, () => null)\n\n const cells = visibleColumns.length\n ? visibleColumns.map((column) =>\n column.id === labelColumn?.id\n ? labelCell(column)\n : (column.columnDef as any).columnDefType === 'display'\n ? spacerCell(column)\n : aggregateCell(column),\n )\n : [labelCell()]\n\n const rows: VNodeChild[] = [\n h(\n TableTr,\n {\n 'aria-expanded': hasChildren ? String(expanded) : undefined,\n 'aria-level': depth + 1,\n 'data-depth': depth,\n 'data-expanded': expanded || undefined,\n key: pathId,\n ...(rowProps as any),\n class: clsx(\n classes['group-row'],\n layoutMode?.startsWith('grid') && classes['row-grid'],\n (rowProps as any)?.class,\n ),\n } as any,\n () => cells,\n ),\n ]\n if (expanded) {\n rows.push(...levelRows(pathId, depth + 1))\n }\n return rows\n }\n\n const recordRows = (pathId: MVT_ServerGroupPathId) => {\n // Reuse manager-cached rows so rendering and selection share stable ids.\n const rows = manager.getRecordRows(pathId)\n return rows.map((row, index) =>\n h(MVT_TableBodyRow, {\n key: row.id,\n numRows: rows.length,\n renderedRowIndex: index,\n row,\n table,\n tableProps,\n } as any),\n )\n }\n\n const levelRows = (pathId: MVT_ServerGroupPathId, depth: number): VNodeChild[] => {\n const state = manager.getPathState(pathId)\n const groupingFields = manager.getGroupingFields()\n const field = groupingFields[getServerGroupPathDepth(pathId)]\n\n if (!state || state.isLoading) {\n return [auxRow(`${pathId}:loading`, depth, loadingContent(pathId, depth))]\n }\n if (state.error != null) {\n return [\n auxRow(\n `${pathId}:error`,\n depth,\n errorContent(pathId, state.error, () => manager.retry(pathId)),\n ),\n ]\n }\n const out: VNodeChild[] = []\n if (state.kind === 'groups') {\n const groups = state.groups ?? []\n if (!groups.length) {\n out.push(auxRow(`${pathId}:empty`, depth, emptyContent(pathId, field)))\n } else {\n groups.forEach((node) => out.push(...groupRow(node, pathId, field, depth)))\n }\n } else {\n const rows = state.rows ?? []\n if (!rows.length) {\n out.push(auxRow(`${pathId}:empty`, depth, emptyContent(pathId, field)))\n } else {\n out.push(...recordRows(pathId))\n }\n }\n const pagination = paginationRow(pathId, depth, state)\n if (pagination) out.push(pagination)\n return out\n }\n\n return h(Fragment, null, levelRows(MVT_SERVER_GROUPING_ROOT_PATH_ID, 0))\n }\n },\n})\n",".root {\n background-color: var(--mvt-base-background-color);\n position: relative;\n}\n\n.root-grid {\n display: grid;\n}\n\n.root-no-rows {\n min-height: 100px;\n}\n\n.root-virtualized {\n height: var(--mvt-table-body-height);\n}\n\n.empty-row-tr-grid {\n display: grid;\n}\n\n.empty-row-td-grid {\n display: grid;\n width: inherit;\n}\n\n.empty-row-td-content {\n color: var(--mantine-color-dimmed);\n font-style: italic;\n max-width: min(100vw, calc(var(--mvt-paper-width) * 1px));\n padding-bottom: 2rem;\n padding-top: 2rem;\n text-align: center;\n width: 100%;\n}\n\n.pinned {\n bottom: calc(var(--mvt-table-footer-height, 0) * 1px - 1px);\n position: sticky;\n top: calc(var(--mvt-table-head-height, 0) * 1px - 1px);\n z-index: 1;\n}\n","import { defineComponent, h, type PropType } from 'vue'\n\nimport { createRow } from '@tanstack/vue-table'\n\nimport { TableTd, Text } from '@mantine-vue/core'\n\nimport clsx from 'clsx'\n\nimport {\n type MVT_ColumnVirtualizer,\n type MVT_Row,\n type MVT_RowData,\n type MVT_TableInstance,\n} from '../../types'\nimport { MVT_ExpandButton } from '../buttons/MVT_ExpandButton'\nimport { MVT_TableBodyRow } from './MVT_TableBodyRow'\nimport classes from './MVT_TableBody.module.css'\n\nexport const MVT_TableBodyEmptyRow = defineComponent({\n name: 'MVTTableBodyEmptyRow',\n inheritAttrs: false,\n props: {\n columnVirtualizer: {\n type: Object as PropType<MVT_ColumnVirtualizer>,\n default: undefined,\n },\n numRows: { type: Number, default: undefined },\n table: {\n type: Object as PropType<MVT_TableInstance<MVT_RowData>>,\n required: true,\n },\n tableProps: {\n type: Object as PropType<Record<string, any>>,\n required: true,\n },\n },\n setup(props) {\n const emptyRow = createRow(\n props.table as any,\n 'mvt-row-empty',\n {} as MVT_RowData,\n 0,\n 0,\n ) as MVT_Row<MVT_RowData>\n\n return () => {\n const { columnVirtualizer, numRows, table, tableProps } = props\n const {\n getState,\n options: { layoutMode, localization, renderDetailPanel, renderEmptyRowsFallback },\n refs: { tablePaperRef },\n } = table\n const { columnFilters, globalFilter } = getState()\n\n return h(\n MVT_TableBodyRow,\n {\n columnVirtualizer,\n numRows,\n class: clsx(\n 'mvt-table-body-row',\n layoutMode?.startsWith('grid') && classes['empty-row-tr-grid'],\n ),\n renderedRowIndex: 0,\n row: emptyRow,\n table,\n tableProps,\n virtualRow: undefined,\n } as any,\n () => [\n renderDetailPanel &&\n h(\n TableTd,\n {\n class: clsx(\n 'mvt-table-body-cell',\n layoutMode?.startsWith('grid') && classes['empty-row-td-grid'],\n ),\n colspan: 1,\n } as any,\n () => h(MVT_ExpandButton, { row: emptyRow, table } as any),\n ),\n h(\n 'td',\n {\n class: clsx(\n 'mvt-table-body-cell',\n layoutMode?.startsWith('grid') && classes['empty-row-td-grid'],\n ),\n colspan: table.getVisibleLeafColumns().length,\n },\n [\n renderEmptyRowsFallback?.({ table }) ??\n h(\n Text,\n {\n style: {\n '--mvt-paper-width': `${tablePaperRef.value?.clientWidth}`,\n },\n class: clsx(classes['empty-row-td-content']),\n } as any,\n () =>\n globalFilter || columnFilters.length\n ? localization.noResultsFound\n : localization.noRecordsToDisplay,\n ),\n ],\n ),\n ],\n )\n }\n },\n})\n","import { defineComponent, Fragment, h, type PropType } from 'vue'\n\nimport { TableTbody } from '@mantine-vue/core'\n\nimport clsx from 'clsx'\n\nimport { useMVT_Rows } from '../../hooks/useMVT_Rows'\nimport { useMVT_RowVirtualizer } from '../../hooks/useMVT_RowVirtualizer'\nimport {\n type MVT_ColumnVirtualizer,\n type MVT_Row,\n type MVT_RowData,\n type MVT_TableInstance,\n type MVT_VirtualItem,\n} from '../../types'\nimport { parseFromValuesOrFunc } from '../../utils/utils'\nimport { MVT_ServerGroupingBody } from '../../server-grouping/MVT_ServerGroupingBody'\nimport { MVT_TableBodyEmptyRow } from './MVT_TableBodyEmptyRow'\nimport { MVT_TableBodyRow } from './MVT_TableBodyRow'\nimport classes from './MVT_TableBody.module.css'\n\nexport const MVT_TableBody = defineComponent({\n name: 'MVTTableBody',\n inheritAttrs: false,\n props: {\n columnVirtualizer: {\n type: Object as PropType<MVT_ColumnVirtualizer>,\n default: undefined,\n },\n table: {\n type: Object as PropType<MVT_TableInstance<MVT_RowData>>,\n required: true,\n },\n tableProps: {\n type: Object as PropType<Record<string, any>>,\n required: true,\n },\n },\n setup(props, { attrs }) {\n const rows = useMVT_Rows(props.table)\n const rowVirtualizerRef = useMVT_RowVirtualizer(props.table, rows)\n\n return () => {\n const { columnVirtualizer, table, tableProps } = props\n\n const rowVirtualizer = rowVirtualizerRef?.value\n const {\n getIsSomeRowsPinned,\n getRowModel,\n getState,\n getTopRows,\n getBottomRows,\n options: {\n enableStickyFooter,\n enableStickyHeader,\n layoutMode,\n mantineTableBodyProps,\n renderDetailPanel,\n rowPinningDisplayMode,\n },\n refs: { tableFooterRef, tableHeadRef },\n } = table\n const { isFullScreen, rowPinning } = getState()\n\n const tableBodyProps = {\n ...parseFromValuesOrFunc(mantineTableBodyProps, { table }),\n ...attrs,\n }\n\n const tableHeadHeight =\n ((enableStickyHeader || isFullScreen) && tableHeadRef.value?.clientHeight) || 0\n const tableFooterHeight = (enableStickyFooter && tableFooterRef.value?.clientHeight) || 0\n\n const pinnedRowIds =\n !rowPinning.bottom?.length && !rowPinning.top?.length\n ? []\n : getRowModel()\n .rows.filter((row) => row.getIsPinned())\n .map((r) => r.id)\n\n const currentRows = rows.value\n const { virtualRows } = rowVirtualizer ?? {}\n\n const commonRowProps = {\n columnVirtualizer,\n numRows: currentRows.length,\n table,\n tableProps,\n }\n\n const renderRow = (\n row: MVT_Row<MVT_RowData>,\n renderedRowIndex: number,\n extra?: Record<string, any>,\n ) =>\n h(MVT_TableBodyRow, {\n ...commonRowProps,\n key: `${row.id}-${row.index}`,\n renderedRowIndex,\n row,\n ...extra,\n } as any)\n\n return h(Fragment, null, [\n !rowPinningDisplayMode?.includes('sticky') &&\n getIsSomeRowsPinned('top') &&\n h(\n TableTbody,\n {\n ...tableBodyProps,\n style: {\n '--mvt-table-head-height': `${tableHeadHeight}`,\n ...(tableBodyProps as any)?.style,\n },\n class: clsx(\n classes.pinned,\n layoutMode?.startsWith('grid') && classes['root-grid'],\n (tableBodyProps as any)?.class,\n ),\n } as any,\n () => getTopRows().map((row, renderedRowIndex) => renderRow(row, renderedRowIndex)),\n ),\n h(\n TableTbody,\n {\n ...tableBodyProps,\n style: {\n '--mvt-table-body-height': rowVirtualizer\n ? `${rowVirtualizer.getTotalSize()}px`\n : undefined,\n ...(tableBodyProps as any)?.style,\n },\n class: clsx(\n classes.root,\n layoutMode?.startsWith('grid') && classes['root-grid'],\n !currentRows.length && classes['root-no-rows'],\n rowVirtualizer && classes['root-virtualized'],\n (tableBodyProps as any)?.class,\n ),\n } as any,\n () =>\n (tableBodyProps as any)?.children ??\n ((table as any)._serverGrouping\n ? h(MVT_ServerGroupingBody, { table, tableProps } as any)\n : null) ??\n (!currentRows.length\n ? h(MVT_TableBodyEmptyRow, commonRowProps as any)\n : (virtualRows ?? currentRows).map((rowOrVirtualRow, renderedRowIndex) => {\n let index = renderedRowIndex\n if (rowVirtualizer) {\n if (renderDetailPanel) {\n if ((rowOrVirtualRow as MVT_VirtualItem).index % 2 === 1) return null\n index = (rowOrVirtualRow as MVT_VirtualItem).index / 2\n } else {\n index = (rowOrVirtualRow as MVT_VirtualItem).index\n }\n }\n const row = rowVirtualizer\n ? currentRows[index]\n : (rowOrVirtualRow as MVT_Row<MVT_RowData>)\n\n if (!row) return null\n return renderRow(row, index, {\n pinnedRowIds,\n rowVirtualizer,\n virtualRow: rowVirtualizer ? (rowOrVirtualRow as MVT_VirtualItem) : undefined,\n })\n })),\n ),\n !rowPinningDisplayMode?.includes('sticky') &&\n getIsSomeRowsPinned('bottom') &&\n h(\n TableTbody,\n {\n ...tableBodyProps,\n style: {\n '--mvt-table-footer-height': `${tableFooterHeight}`,\n ...(tableBodyProps as any)?.style,\n },\n class: clsx(\n classes.pinned,\n layoutMode?.startsWith('grid') && classes['root-grid'],\n (tableBodyProps as any)?.class,\n ),\n } as any,\n () => getBottomRows().map((row, renderedRowIndex) => renderRow(row, renderedRowIndex)),\n ),\n ])\n }\n },\n})\n\nexport const Memo_MVT_TableBody = MVT_TableBody\n",".root {\n font-size: 0.8rem;\n font-weight: bold;\n padding: 1rem;\n text-align: var(--mvt-cell-align, left);\n vertical-align: top;\n z-index: 1;\n\n &.grid {\n display: flex;\n justify-content: var(--mvt-cell-align, flex-start);\n }\n\n &.group {\n text-align: center;\n justify-content: center;\n }\n\n background-color: var(--mvt-base-background-color);\n\n &[data-column-pinned] {\n position: sticky;\n }\n\n &[data-column-pinned='left'] {\n left: calc(var(--mvt-table-cell-left, 0) * 1px);\n &[data-last-left-pinned] {\n box-shadow: -6px 0 6px -6px\n alpha(light-dark(var(--mantine-color-gray-outline), var(--mantine-color-dark-outline)), 0.5)\n inset;\n }\n }\n\n &[data-column-pinned='right'] {\n right: calc(var(--mvt-table-cell-right, 0) * 1px);\n &[data-first-right-pinned] {\n box-shadow: 6px 0 6px -6px\n alpha(light-dark(var(--mantine-color-gray-outline), var(--mantine-color-dark-outline)), 0.5)\n inset;\n }\n }\n}\n","import { type CSSProperties, defineComponent, h, type PropType } from 'vue'\n\nimport { TableTh, useDirection, useMantineTheme } from '@mantine-vue/core'\n\nimport clsx from 'clsx'\n\nimport { type MVT_Header, type MVT_RowData, type MVT_TableInstance } from '../../types'\nimport { parseCSSVarId } from '../../utils/style.utils'\nimport { parseFromValuesOrFunc } from '../../utils/utils'\nimport classes from './MVT_TableFooterCell.module.css'\n\nexport const MVT_TableFooterCell = defineComponent({\n name: 'MVTTableFooterCell',\n inheritAttrs: false,\n props: {\n footer: {\n type: Object as PropType<MVT_Header<MVT_RowData>>,\n required: true,\n },\n renderedColumnIndex: { type: Number, default: undefined },\n table: {\n type: Object as PropType<MVT_TableInstance<MVT_RowData>>,\n required: true,\n },\n },\n setup(props, { attrs }) {\n const direction = useDirection()\n const theme = useMantineTheme()\n return () => {\n const { footer, renderedColumnIndex, table } = props\n const {\n options: { enableColumnPinning, layoutMode, mantineTableFooterCellProps },\n } = table\n const { column } = footer\n const { columnDef } = column\n const { columnDefType } = columnDef\n\n const isColumnPinned =\n enableColumnPinning && columnDef.columnDefType !== 'group' && column.getIsPinned()\n\n const args = { column, table }\n const tableCellProps = {\n ...parseFromValuesOrFunc(mantineTableFooterCellProps, args),\n ...parseFromValuesOrFunc(columnDef.mantineTableFooterCellProps, args),\n ...attrs,\n }\n\n const widthStyles: CSSProperties = {\n minWidth: `max(calc(var(--header-${parseCSSVarId(\n footer?.id,\n )}-size) * 1px), ${columnDef.minSize ?? 30}px)`,\n width: `calc(var(--header-${parseCSSVarId(footer.id)}-size) * 1px)`,\n }\n if (layoutMode === 'grid') {\n widthStyles.flex = `${\n [0, false].includes(columnDef.grow!)\n ? 0\n : `var(--header-${parseCSSVarId(footer.id)}-size)`\n } 0 auto`\n } else if (layoutMode === 'grid-no-grow') {\n widthStyles.flex = `${+(columnDef.grow || 0)} 0 auto`\n }\n\n const style = {\n ...widthStyles,\n '--mvt-cell-align':\n (tableCellProps as any).align ??\n (columnDefType === 'group' ? 'center' : direction.dir.value === 'rtl' ? 'right' : 'left'),\n '--mvt-table-cell-left':\n isColumnPinned === 'left' ? `${column.getStart(isColumnPinned)}` : undefined,\n '--mvt-table-cell-right':\n isColumnPinned === 'right' ? `${column.getAfter(isColumnPinned)}` : undefined,\n ...parseFromValuesOrFunc((tableCellProps as any).style, theme),\n }\n\n const { children: cellChildren, ...tableCellRest } = tableCellProps as any\n\n return h(\n TableTh,\n {\n colspan: footer.colSpan,\n 'data-column-pinned': isColumnPinned || undefined,\n 'data-first-right-pinned':\n (isColumnPinned === 'right' && column.getIsFirstColumn(isColumnPinned)) || undefined,\n 'data-index': renderedColumnIndex,\n 'data-last-left-pinned':\n (isColumnPinned === 'left' && column.getIsLastColumn(isColumnPinned)) || undefined,\n ...tableCellRest,\n class: clsx(\n classes.root,\n layoutMode?.startsWith('grid') && classes.grid,\n columnDefType === 'group' && classes.group,\n (tableCellProps as any)?.class,\n ),\n style,\n } as any,\n () =>\n cellChildren ??\n (footer.isPlaceholder\n ? null\n : (parseFromValuesOrFunc(columnDef.Footer, {\n column,\n footer,\n table,\n }) ??\n columnDef.footer ??\n null)),\n )\n }\n },\n})\n",".root {\n width: 100%;\n display: table-row;\n &.layout-mode-grid {\n display: flex;\n }\n background-color: light-dark(var(--light-bg-color), var(--dark-bg-color));\n border-top: 1px solid light-dark(var(--mantine-color-gray-3), var(--mantine-color-dark-4));\n}\n","import { defineComponent, h, type PropType } from 'vue'\n\nimport { Box, TableTr } from '@mantine-vue/core'\n\nimport clsx from 'clsx'\n\nimport {\n type MVT_ColumnVirtualizer,\n type MVT_Header,\n type MVT_HeaderGroup,\n type MVT_RowData,\n type MVT_TableInstance,\n type MVT_VirtualItem,\n} from '../../types'\nimport { parseFromValuesOrFunc } from '../../utils/utils'\nimport { MVT_TableFooterCell } from './MVT_TableFooterCell'\nimport classes from './MVT_TableFooterRow.module.css'\n\nexport const MVT_TableFooterRow = defineComponent({\n name: 'MVTTableFooterRow',\n inheritAttrs: false,\n props: {\n columnVirtualizer: {\n type: Object as PropType<MVT_ColumnVirtualizer>,\n default: undefined,\n },\n footerGroup: {\n type: Object as PropType<MVT_HeaderGroup<MVT_RowData>>,\n required: true,\n },\n table: {\n type: Object as PropType<MVT_TableInstance<MVT_RowData>>,\n required: true,\n },\n },\n setup(props, { attrs }) {\n return () => {\n const { columnVirtualizer, footerGroup, table } = props\n const {\n options: { layoutMode, mantineTableFooterRowProps },\n } = table\n\n const { virtualColumns, virtualPaddingLeft, virtualPaddingRight } = columnVirtualizer ?? {}\n\n // if no content in row, skip row\n if (\n !footerGroup.headers?.some(\n (header) =>\n (typeof header.column.columnDef.footer === 'string' &&\n !!header.column.columnDef.footer) ||\n header.column.columnDef.Footer,\n )\n ) {\n return null\n }\n\n const tableRowProps = {\n ...parseFromValuesOrFunc(mantineTableFooterRowProps, {\n footerGroup,\n table,\n }),\n ...attrs,\n }\n\n return h(\n TableTr,\n {\n class: clsx(classes.root, layoutMode?.startsWith('grid') && classes['layout-mode-grid']),\n ...tableRowProps,\n } as any,\n () => [\n virtualPaddingLeft\n ? h(Box, {\n component: 'th',\n display: 'flex',\n w: virtualPaddingLeft,\n } as any)\n : null,\n (virtualColumns ?? footerGroup.headers).map(\n (footerOrVirtualFooter, renderedColumnIndex) => {\n let footer = footerOrVirtualFooter as MVT_Header<MVT_RowData>\n let index = renderedColumnIndex\n if (columnVirtualizer) {\n index = (footerOrVirtualFooter as MVT_VirtualItem).index\n footer = footerGroup.headers[index]\n }\n return h(MVT_TableFooterCell, {\n footer,\n key: footer.id,\n renderedColumnIndex: index,\n table,\n } as any)\n },\n ),\n virtualPaddingRight\n ? h(Box, {\n component: 'th',\n display: 'flex',\n w: virtualPaddingRight,\n } as any)\n : null,\n ],\n )\n }\n },\n})\n",".root {\n background-color: var(--mvt-base-background-color);\n display: table-row-group;\n}\n\n.grid {\n display: grid;\n}\n\n.sticky {\n bottom: 0;\n opacity: 0.97;\n position: sticky;\n z-index: 1;\n outline: 1px solid light-dark(var(--mantine-color-gray-3), var(--mantine-color-gray-7));\n}\n","import { defineComponent, h, type PropType } from 'vue'\n\nimport { TableTfoot } from '@mantine-vue/core'\n\nimport clsx from 'clsx'\n\nimport { type MVT_ColumnVirtualizer, type MVT_RowData, type MVT_TableInstance } from '../../types'\nimport { parseFromValuesOrFunc } from '../../utils/utils'\nimport { MVT_TableFooterRow } from './MVT_TableFooterRow'\nimport classes from './MVT_TableFooter.module.css'\n\nexport const MVT_TableFooter = defineComponent({\n name: 'MVTTableFooter',\n inheritAttrs: false,\n props: {\n columnVirtualizer: {\n type: Object as PropType<MVT_ColumnVirtualizer>,\n default: undefined,\n },\n table: {\n type: Object as PropType<MVT_TableInstance<MVT_RowData>>,\n required: true,\n },\n },\n setup(props, { attrs }) {\n return () => {\n const { columnVirtualizer, table } = props\n const {\n getFooterGroups,\n getState,\n options: { enableStickyFooter, layoutMode, mantineTableFooterProps },\n refs: { tableFooterRef },\n } = table\n const { isFullScreen } = getState()\n\n const tableFooterProps = {\n ...parseFromValuesOrFunc(mantineTableFooterProps, { table }),\n ...attrs,\n }\n\n const stickFooter = (isFullScreen || enableStickyFooter) && enableStickyFooter !== false\n\n return h(\n TableTfoot,\n {\n ...tableFooterProps,\n class: clsx(\n classes.root,\n (tableFooterProps as any)?.class,\n stickFooter && classes.sticky,\n layoutMode?.startsWith('grid') && classes.grid,\n ),\n ref: (el: any) => {\n const node = (el?.$el ?? el) as HTMLTableSectionElement\n tableFooterRef.value = node\n if ((tableFooterProps as any)?.ref) {\n ;(tableFooterProps as any).ref.value = node\n }\n },\n } as any,\n () =>\n getFooterGroups().map((footerGroup) =>\n h(MVT_TableFooterRow, {\n columnVirtualizer,\n footerGroup,\n key: footerGroup.id,\n table,\n } as any),\n ),\n )\n }\n },\n})\n",".left {\n transform: rotate(90deg);\n}\n\n.right {\n transform: rotate(-90deg);\n}\n","import { ActionIcon, Menu, Tooltip } from '@mantine-vue/core'\nimport { defineComponent, h, type PropType, type VNodeChild } from 'vue'\nimport { getServerGroupingColumnActions } from '../../server-grouping/MVT_ServerGroupingGroupBy'\nimport type { MVT_Header, MVT_RowData, MVT_TableInstance } from '../../types'\nimport { parseFromValuesOrFunc } from '../../utils/utils'\nimport { useMVT_Slots } from '../MVT_TableSlots'\nimport classes from './MVT_ColumnActionMenu.module.css'\n\nexport const MVT_ColumnActionMenu = defineComponent({\n name: 'MVTColumnActionMenu',\n inheritAttrs: false,\n props: {\n header: { type: Object as PropType<MVT_Header<MVT_RowData>>, required: true },\n onChange: { type: Function as PropType<(opened: boolean) => void>, default: undefined },\n opened: { type: Boolean, default: undefined },\n table: { type: Object as PropType<MVT_TableInstance<MVT_RowData>>, required: true },\n },\n setup(props, { attrs, slots }) {\n const mvtSlots = useMVT_Slots()\n return () => {\n const { header, table } = props\n const { column } = header\n const def = column.columnDef\n const o = table.options\n const state = table.getState()\n const icons = o.icons\n const l = o.localization\n const actionProps = {\n ...parseFromValuesOrFunc(o.mantineColumnActionsButtonProps, { column, table }),\n ...parseFromValuesOrFunc(def.mantineColumnActionsButtonProps, { column, table }),\n } as Record<string, any>\n const item = (\n label: string,\n icon: any,\n onClick: () => void,\n disabled = false,\n iconClass?: string,\n ) =>\n h(Menu.Item, { disabled, leftSection: h(icon, { class: iconClass }), onClick }, () => label)\n\n const serverGroupBy = getServerGroupingColumnActions(\n table as MVT_TableInstance<any>,\n column.id,\n )\n\n const internal: VNodeChild[] = []\n if (o.enableSorting && column.getCanSort()) {\n if (o.enableSortingRemoval !== false)\n internal.push(\n item(\n l.clearSort,\n icons.IconClearAll,\n () => column.clearSorting(),\n !column.getIsSorted(),\n ),\n )\n internal.push(\n item(\n l.sortByColumnAsc.replace('{column}', String(def.header)),\n icons.IconSortAscending,\n () => column.toggleSorting(false),\n column.getIsSorted() === 'asc',\n ),\n )\n internal.push(\n item(\n l.sortByColumnDesc.replace('{column}', String(def.header)),\n icons.IconSortDescending,\n () => column.toggleSorting(true),\n column.getIsSorted() === 'desc',\n ),\n )\n if (o.enableColumnFilters || o.enableGrouping || o.enableHiding)\n internal.push(h(Menu.Divider))\n }\n if (\n o.enableColumnFilters &&\n o.columnFilterDisplayMode !== 'popover' &&\n column.getCanFilter()\n ) {\n internal.push(\n item(\n l.clearFilter,\n icons.IconFilterOff,\n () => column.setFilterValue(''),\n !column.getFilterValue(),\n ),\n )\n internal.push(\n item(l.filterByColumn.replace('{column}', String(def.header)), icons.IconFilter, () => {\n table.setShowColumnFilters(true)\n setTimeout(() => table.refs.filterInputRefs.value[`${column.id}-0`]?.focus(), 100)\n }),\n )\n if (o.enableGrouping || o.enableHiding) internal.push(h(Menu.Divider))\n }\n if (o.enableGrouping && column.getCanGroup()) {\n internal.push(\n item(\n l[column.getIsGrouped() ? 'ungroupByColumn' : 'groupByColumn'].replace(\n '{column}',\n String(def.header),\n ),\n icons.IconBoxMultiple,\n () => {\n column.toggleGrouping()\n table.setColumnOrder((old: string[]) => ['mvt-row-expand', ...old])\n },\n ),\n )\n if (o.enableColumnPinning) internal.push(h(Menu.Divider))\n } else if (serverGroupBy) {\n const { addGroup, grouping, removeGroup } = serverGroupBy\n const isGrouped = grouping.includes(column.id)\n internal.push(\n isGrouped\n ? item(l.clearGrouping ?? 'Clear grouping', icons.IconClearAll, () =>\n removeGroup(column.id),\n )\n : item(\n l.groupByColumn.replace('{column}', String(def.header)),\n icons.IconBoxMultiple,\n () => addGroup(column.id),\n ),\n )\n if (o.enableColumnPinning) internal.push(h(Menu.Divider))\n }\n if (o.enableColumnPinning && column.getCanPin()) {\n internal.push(\n item(\n l.pinToLeft,\n icons.IconPinned,\n () => column.pin('left'),\n column.getIsPinned() === 'left',\n classes.left,\n ),\n )\n internal.push(\n item(\n l.pinToRight,\n icons.IconPinned,\n () => column.pin('right'),\n column.getIsPinned() === 'right',\n classes.right,\n ),\n )\n internal.push(\n item(l.unpin, icons.IconPinnedOff, () => column.pin(false), !column.getIsPinned()),\n )\n if (o.enableHiding) internal.push(h(Menu.Divider))\n }\n if (o.enableColumnResizing && column.getCanResize())\n internal.push(\n item(\n l.resetColumnSize,\n icons.IconArrowAutofitContent,\n () => {\n table.setColumnSizingInfo((old: typeof state.columnSizingInfo) => ({\n ...old,\n isResizingColumn: false,\n }))\n column.resetSize()\n },\n !state.columnSizing[column.id],\n ),\n )\n if (o.enableHiding) {\n internal.push(\n item(\n l.hideColumn.replace('{column}', String(def.header)),\n icons.IconEyeOff,\n () => column.toggleVisibility(false),\n !column.getCanHide(),\n ),\n )\n internal.push(\n item(\n l.showAllColumns.replace('{column}', String(def.header)),\n icons.IconColumns,\n () => table.toggleAllColumnsVisible(true),\n !Object.values(state.columnVisibility).some((visible) => !visible),\n ),\n )\n }\n\n const menuArg = { column, internalColumnMenuItems: internal, table }\n const custom =\n slots.default?.(menuArg) ??\n mvtSlots.columnActionsMenuItems?.(menuArg) ??\n def.renderColumnActionsMenuItems?.(menuArg) ??\n o.renderColumnActionsMenuItems?.(menuArg)\n return h(\n Menu,\n {\n closeOnItemClick: true,\n position: 'bottom-start',\n withinPortal: true,\n ...attrs,\n opened: props.opened,\n 'onUpdate:opened': props.onChange,\n },\n () => [\n h(\n Tooltip,\n { label: actionProps.title ?? l.columnActions, openDelay: 1000, withinPortal: true },\n () =>\n h(Menu.Target, null, () =>\n h(\n ActionIcon,\n {\n 'aria-label': l.columnActions,\n color: 'gray',\n size: 'sm',\n variant: 'subtle',\n ...actionProps,\n },\n () => h(icons.IconDotsVertical, { size: '100%' }),\n ),\n ),\n ),\n h(Menu.Dropdown, null, () => custom ?? internal),\n ],\n )\n }\n },\n})\n",".root {\n font-weight: normal;\n margin-top: 8px;\n}\n","import clsx from 'clsx'\nimport { Checkbox, Tooltip } from '@mantine-vue/core'\nimport { defineComponent, h, type PropType } from 'vue'\nimport type { MVT_Column, MVT_RowData, MVT_TableInstance } from '../../types'\nimport { parseFromValuesOrFunc } from '../../utils/utils'\nimport classes from './MVT_FilterCheckBox.module.css'\n\nexport const MVT_FilterCheckbox = defineComponent({\n name: 'MVTFilterCheckbox',\n inheritAttrs: false,\n props: {\n column: { type: Object as PropType<MVT_Column<MVT_RowData>>, required: true },\n table: { type: Object as PropType<MVT_TableInstance<MVT_RowData>>, required: true },\n },\n setup(props, { attrs }) {\n return () => {\n const { column, table } = props\n const arg = { column, table }\n const checkboxProps = {\n ...parseFromValuesOrFunc(table.options.mantineFilterCheckboxProps, arg),\n ...parseFromValuesOrFunc(column.columnDef.mantineFilterCheckboxProps, arg),\n ...attrs,\n } as Record<string, any>\n const label = table.options.localization.filterByColumn.replace(\n '{column}',\n String(column.columnDef.header),\n )\n const value = column.getFilterValue()\n return h(\n Tooltip,\n { label: checkboxProps.title ?? label, openDelay: 1000, withinPortal: true },\n () =>\n h(Checkbox, {\n checked: value === 'true',\n class: clsx('mvt-filter-checkbox', classes.root, checkboxProps.class),\n indeterminate: value === undefined,\n label: checkboxProps.title ?? label,\n size: table.getState().density === 'xs' ? 'sm' : 'md',\n ...checkboxProps,\n title: undefined,\n onChange: (checked: boolean) => {\n column.setFilterValue(\n value === undefined ? 'true' : value === 'true' ? 'false' : undefined,\n )\n checkboxProps.onChange?.(checked)\n },\n onClick: (e: MouseEvent) => {\n e.stopPropagation()\n checkboxProps.onClick?.(e)\n },\n } as any),\n )\n }\n },\n})\n",".root {\n font-weight: normal;\n border-bottom: 2px solid light-dark(var(--mantine-color-gray-3), var(--mantine-color-gray-7));\n min-width: auto;\n &.date-filter {\n min-width: rem(125px);\n }\n &.range-filter {\n min-width: rem(80px);\n }\n &.not-filter-chip {\n min-width: rem(100px);\n }\n width: 100%;\n & :global(.mantine-TextInput-input) {\n overflow: hidden;\n text-overflow: ellipsis;\n }\n & :global(.mantine-DateInput-input) {\n height: 2.1rem;\n }\n}\n\n.filter-chip-badge {\n margin: 5px;\n}\n","import clsx from 'clsx'\nimport {\n ActionIcon,\n Autocomplete,\n Badge,\n Box,\n MultiSelect,\n Select,\n TextInput,\n} from '@mantine-vue/core'\nimport { DateInput } from '@mantine-vue/dates'\nimport { useDebouncedValue } from '@mantine-vue/hooks'\nimport { defineComponent, h, ref, watch, type PropType } from 'vue'\nimport { localizedFilterOption } from '../../fns/filterFns'\nimport type { MVT_Header, MVT_RowData, MVT_TableInstance } from '../../types'\nimport { parseFromValuesOrFunc } from '../../utils/utils'\nimport classes from './MVT_FilterTextInput.module.css'\n\nexport const MVT_FilterTextInput = defineComponent({\n name: 'MVTFilterTextInput',\n inheritAttrs: false,\n props: {\n header: { type: Object as PropType<MVT_Header<MVT_RowData>>, required: true },\n rangeFilterIndex: { type: Number, default: undefined },\n table: { type: Object as PropType<MVT_TableInstance<MVT_RowData>>, required: true },\n },\n setup(props, { attrs, slots }) {\n const { column } = props.header\n const { filterInputRefs } = props.table.refs\n const def = column.columnDef\n const isRange =\n def.filterVariant === 'range' ||\n def.filterVariant === 'date-range' ||\n props.rangeFilterIndex !== undefined\n const isMulti = def.filterVariant === 'multi-select'\n const read = () =>\n isMulti\n ? ((column.getFilterValue() as unknown[]) ?? [])\n : isRange\n ? ((column.getFilterValue() as [unknown, unknown])?.[props.rangeFilterIndex!] ?? '')\n : (column.getFilterValue() ?? '')\n const filterValue = ref<any>(read())\n const [debounced] = useDebouncedValue(\n filterValue,\n props.table.options.manualFiltering ? 400 : 200,\n )\n watch(debounced, (value) => {\n if (isRange)\n column.setFilterValue((old: [unknown, unknown]) => {\n const next = Array.isArray(old) ? [...old] : ['', '']\n next[props.rangeFilterIndex!] = value\n return next\n })\n else column.setFilterValue(value ?? undefined)\n })\n watch(\n () => column.getFilterValue(),\n (value) => {\n filterValue.value =\n value === undefined\n ? isMulti\n ? []\n : ''\n : isRange\n ? ((value as any[])?.[props.rangeFilterIndex!] ?? '')\n : value\n },\n )\n const assignRef = (el: any) => {\n const node = (el?.$el?.querySelector?.('input') ?? el?.$el ?? el) as HTMLInputElement\n if (node) filterInputRefs.value[`${column.id}-${props.rangeFilterIndex ?? 0}`] = node\n }\n return () => {\n const { table } = props\n const o = table.options\n const arg = { column, rangeFilterIndex: props.rangeFilterIndex, table }\n const textProps = {\n ...parseFromValuesOrFunc(o.mantineFilterTextInputProps, arg),\n ...parseFromValuesOrFunc(def.mantineFilterTextInputProps, arg),\n ...attrs,\n } as Record<string, any>\n const selectProps = {\n ...parseFromValuesOrFunc(o.mantineFilterSelectProps, arg),\n ...parseFromValuesOrFunc(def.mantineFilterSelectProps, arg),\n } as Record<string, any>\n const multiProps = {\n clearable: true,\n ...parseFromValuesOrFunc(o.mantineFilterMultiSelectProps, arg),\n ...parseFromValuesOrFunc(def.mantineFilterMultiSelectProps, arg),\n } as Record<string, any>\n const dateProps = {\n ...parseFromValuesOrFunc(o.mantineFilterDateInputProps, arg),\n ...parseFromValuesOrFunc(def.mantineFilterDateInputProps, arg),\n } as Record<string, any>\n const autoProps = {\n ...parseFromValuesOrFunc(o.mantineFilterAutocompleteProps, arg),\n ...parseFromValuesOrFunc(def.mantineFilterAutocompleteProps, arg),\n } as Record<string, any>\n const isSelect = def.filterVariant === 'select'\n const isDate = def.filterVariant === 'date' || def.filterVariant === 'date-range'\n const isAuto = def.filterVariant === 'autocomplete'\n const modeLabel = ['empty', 'notEmpty'].includes(def._filterFn)\n ? localizedFilterOption(o.localization, def._filterFn)\n : ''\n const placeholder = !isRange\n ? (textProps.placeholder ??\n o.localization.filterByColumn.replace('{column}', String(def.header)))\n : props.rangeFilterIndex === 0\n ? o.localization.min\n : o.localization.max\n const provided = autoProps.data ?? selectProps.data ?? multiProps.data\n const faceted = column.getFacetedUniqueValues()\n const options = (\n provided ??\n ((isAuto || isSelect || isMulti) && faceted\n ? Array.from(faceted.keys())\n .filter((v) => v != null)\n .sort((a, b) => String(a).localeCompare(String(b)))\n : [])\n ).filter((v: unknown) => v != null)\n const clear = () => {\n if (isMulti) {\n filterValue.value = []\n column.setFilterValue([])\n } else if (isRange) {\n filterValue.value = ''\n column.setFilterValue((old: any[]) => {\n const next = Array.isArray(old) ? [...old] : ['', '']\n next[props.rangeFilterIndex!] = undefined\n return next\n })\n } else if (isSelect) {\n filterValue.value = null\n column.setFilterValue(null)\n } else {\n filterValue.value = ''\n column.setFilterValue(undefined)\n }\n }\n const clearButton = filterValue.value\n ? h(\n ActionIcon,\n {\n 'aria-label': o.localization.clearFilter,\n color: 'var(--mantine-color-gray-7)',\n size: 'sm',\n title: o.localization.clearFilter,\n variant: 'transparent',\n onClick: clear,\n },\n () => h(o.icons.IconX),\n )\n : null\n const className = clsx(\n 'mvt-filter-text-input',\n classes.root,\n isDate\n ? classes['date-filter']\n : isRange\n ? classes['range-filter']\n : !modeLabel && classes['not-filter-chip'],\n )\n const common: Record<string, any> = {\n 'aria-label': placeholder,\n disabled: !!modeLabel,\n placeholder,\n title: placeholder,\n value: isMulti && !Array.isArray(filterValue.value) ? [] : filterValue.value,\n variant: 'unstyled',\n onClick: (e: MouseEvent) => e.stopPropagation(),\n }\n const custom =\n slots.default?.({\n column,\n header: props.header,\n rangeFilterIndex: props.rangeFilterIndex,\n table,\n }) ??\n def.Filter?.({\n column,\n header: props.header,\n rangeFilterIndex: props.rangeFilterIndex,\n table,\n })\n if (custom) return custom\n if (modeLabel)\n return h(Box, null, () =>\n h(\n Badge,\n {\n class: classes['filter-chip-badge'],\n rightSection: clearButton,\n size: 'lg',\n onClick: () => {\n clear()\n table.setColumnFilterFns((old) => ({\n ...old,\n [props.header.id]:\n (def.columnFilterModeOptions ?? o.columnFilterModeOptions)?.[0] ?? 'fuzzy',\n }))\n },\n },\n () => modeLabel,\n ),\n )\n if (isMulti)\n return h(MultiSelect, {\n ...common,\n searchable: true,\n ...multiProps,\n class: clsx(className, multiProps.class, multiProps.className),\n data: options,\n rightSection:\n filterValue.value?.toString()?.length && multiProps.clearable ? clearButton : undefined,\n onChange: (value: unknown[]) => {\n filterValue.value = value\n multiProps.onChange?.(value)\n },\n ref: assignRef,\n } as any)\n if (isSelect)\n return h(Select, {\n ...common,\n clearable: true,\n searchable: true,\n ...selectProps,\n class: clsx(className, selectProps.class, selectProps.className),\n clearButtonProps: { size: 'md' },\n data: options,\n onChange: (value: unknown, option: unknown) => {\n filterValue.value = value\n selectProps.onChange?.(value, option)\n },\n ref: assignRef,\n } as any)\n if (isDate)\n return h(DateInput, {\n ...common,\n allowDeselect: true,\n clearable: true,\n popoverProps: { withinPortal: o.columnFilterDisplayMode !== 'popover' },\n ...dateProps,\n class: clsx(className, dateProps.class, dateProps.className),\n onChange: (value: unknown) => {\n filterValue.value = value ?? ''\n dateProps.onChange?.(value)\n },\n ref: assignRef,\n } as any)\n if (isAuto)\n return h(Autocomplete, {\n ...common,\n ...autoProps,\n class: clsx(className, autoProps.class, autoProps.className),\n data: options,\n rightSection: filterValue.value?.toString()?.length ? clearButton : undefined,\n onChange: (value: string) => {\n filterValue.value = value\n autoProps.onChange?.(value)\n },\n ref: assignRef,\n } as any)\n return h(TextInput, {\n ...common,\n ...textProps,\n class: clsx(className, textProps.class, textProps.className),\n mt: 0,\n rightSection: filterValue.value?.toString()?.length ? clearButton : undefined,\n onInput: (event: Event | string) => {\n const value = typeof event === 'string' ? event : (event.target as HTMLInputElement).value\n filterValue.value = value\n textProps.onChange?.(event)\n },\n ref: assignRef,\n } as any)\n }\n },\n})\n",".root {\n display: grid;\n grid-template-columns: 6fr 6fr;\n gap: 16px;\n}\n","import clsx from 'clsx'\nimport { Box } from '@mantine-vue/core'\nimport { defineComponent, h, type PropType } from 'vue'\nimport type { MVT_Header, MVT_RowData, MVT_TableInstance } from '../../types'\nimport { MVT_FilterTextInput } from './MVT_FilterTextInput'\nimport classes from './MVT_FilterRangeFields.module.css'\n\nexport const MVT_FilterRangeFields = defineComponent({\n name: 'MVTFilterRangeFields',\n inheritAttrs: false,\n props: {\n header: { type: Object as PropType<MVT_Header<MVT_RowData>>, required: true },\n table: { type: Object as PropType<MVT_TableInstance<MVT_RowData>>, required: true },\n },\n setup(props, { attrs }) {\n return () =>\n h(\n Box,\n { ...attrs, class: clsx('mvt-filter-range-fields', classes.root, attrs.class) },\n () => [\n h(MVT_FilterTextInput, { header: props.header, rangeFilterIndex: 0, table: props.table }),\n h(MVT_FilterTextInput, { header: props.header, rangeFilterIndex: 1, table: props.table }),\n ],\n )\n },\n})\n",".root {\n margin: auto;\n margin-top: 16px;\n margin-bottom: 6px;\n width: calc(100% - 8px);\n}\n","import clsx from 'clsx'\nimport { RangeSlider } from '@mantine-vue/core'\nimport { defineComponent, h, ref, watch, type PropType } from 'vue'\nimport type { MVT_Header, MVT_RowData, MVT_TableInstance } from '../../types'\nimport { parseFromValuesOrFunc } from '../../utils/utils'\nimport classes from './MVT_FilterRangeSlider.module.css'\n\nexport const MVT_FilterRangeSlider = defineComponent({\n name: 'MVTFilterRangeSlider',\n inheritAttrs: false,\n props: {\n header: { type: Object as PropType<MVT_Header<MVT_RowData>>, required: true },\n table: { type: Object as PropType<MVT_TableInstance<MVT_RowData>>, required: true },\n },\n setup(props, { attrs }) {\n const initial = () => {\n const p = {\n ...parseFromValuesOrFunc(props.table.options.mantineFilterRangeSliderProps, {\n column: props.header.column,\n table: props.table,\n }),\n ...parseFromValuesOrFunc(props.header.column.columnDef.mantineFilterRangeSliderProps, {\n column: props.header.column,\n table: props.table,\n }),\n ...attrs,\n } as Record<string, any>\n let [min, max] =\n p.min !== undefined && p.max !== undefined\n ? [p.min, p.max]\n : (props.header.column.getFacetedMinMaxValues() ?? [0, 1])\n if (Array.isArray(min)) min = min[0]\n if (Array.isArray(max)) max = max[0]\n return [min ?? 0, max ?? 1] as [number, number]\n }\n const values = ref<[number, number]>(\n (props.header.column.getFilterValue() as [number, number]) ?? initial(),\n )\n watch(\n () => props.header.column.getFilterValue(),\n (value) => {\n values.value = Array.isArray(value) ? (value as [number, number]) : initial()\n },\n )\n return () => {\n const [min, max] = initial()\n const { column } = props.header\n const rangeProps = {\n ...parseFromValuesOrFunc(props.table.options.mantineFilterRangeSliderProps, {\n column,\n table: props.table,\n }),\n ...parseFromValuesOrFunc(column.columnDef.mantineFilterRangeSliderProps, {\n column,\n table: props.table,\n }),\n ...attrs,\n } as Record<string, any>\n return h(RangeSlider, {\n class: clsx('mvt-filter-range-slider', classes.root, rangeProps.class),\n min,\n max,\n modelValue: values.value,\n ...rangeProps,\n onChange: (value: [number, number]) => {\n values.value = value\n rangeProps.onChange?.(value)\n },\n onChangeEnd: (value: [number, number]) => {\n column.setFilterValue(value[0] <= min && value[1] >= max ? undefined : value)\n rangeProps.onChangeEnd?.(value)\n },\n } as any)\n }\n },\n})\n",".filter-mode-label {\n white-space: nowrap;\n margin-top: 4px;\n font-size: 10px;\n}\n","import { ActionIcon, Collapse, Flex, Menu, Text, Tooltip } from '@mantine-vue/core'\nimport { defineComponent, h, type PropType } from 'vue'\nimport { localizedFilterOption } from '../../fns/filterFns'\nimport type { MVT_Header, MVT_RowData, MVT_TableInstance } from '../../types'\nimport { MVT_FilterCheckbox } from '../inputs/MVT_FilterCheckbox'\nimport { MVT_FilterRangeFields } from '../inputs/MVT_FilterRangeFields'\nimport { MVT_FilterRangeSlider } from '../inputs/MVT_FilterRangeSlider'\nimport { MVT_FilterTextInput } from '../inputs/MVT_FilterTextInput'\nimport { MVT_FilterOptionMenu } from '../menus/MVT_FilterOptionMenu'\nimport classes from './MVT_TableHeadCellFilterContainer.module.css'\n\nexport const MVT_TableHeadCellFilterContainer = defineComponent({\n name: 'MVTTableHeadCellFilterContainer',\n inheritAttrs: false,\n props: {\n header: { type: Object as PropType<MVT_Header<MVT_RowData>>, required: true },\n table: { type: Object as PropType<MVT_TableInstance<MVT_RowData>>, required: true },\n },\n setup(props, { attrs, slots }) {\n return () => {\n const { header, table } = props\n const { column } = header\n const def = column.columnDef\n const o = table.options\n const allowed = def.columnFilterModeOptions ?? o.columnFilterModeOptions\n const showMode =\n o.enableColumnFilterModes &&\n def.enableColumnFilterModes !== false &&\n (allowed === undefined || !!allowed?.length)\n const input =\n slots.default?.({ column, header, table }) ??\n (def.filterVariant === 'checkbox'\n ? h(MVT_FilterCheckbox, { column, table })\n : def.filterVariant === 'range-slider'\n ? h(MVT_FilterRangeSlider, { header, table })\n : ['date-range', 'range'].includes(def.filterVariant ?? '') ||\n ['between', 'betweenInclusive', 'inNumberRange'].includes(def._filterFn)\n ? h(MVT_FilterRangeFields, { header, table })\n : h(MVT_FilterTextInput, { header, table }))\n const modeMenu = showMode\n ? h(Menu, { withinPortal: o.columnFilterDisplayMode !== 'popover' }, () => [\n h(\n Tooltip,\n {\n label: o.localization.changeFilterMode,\n position: 'bottom-start',\n withinPortal: true,\n },\n () =>\n h(Menu.Target, null, () =>\n h(\n ActionIcon,\n {\n 'aria-label': o.localization.changeFilterMode,\n color: 'gray',\n size: 'md',\n variant: 'subtle',\n },\n () => h(o.icons.IconFilterCog),\n ),\n ),\n ),\n h(MVT_FilterOptionMenu, {\n header,\n table,\n onSelect: () =>\n setTimeout(() => table.refs.filterInputRefs.value[`${column.id}-0`]?.focus(), 100),\n }),\n ])\n : null\n return h(\n Collapse,\n {\n expanded: table.getState().showColumnFilters || o.columnFilterDisplayMode === 'popover',\n } as any,\n () =>\n h(Flex, { direction: 'column', ...attrs }, () => [\n h(Flex, { align: 'flex-end' }, () => [input, modeMenu]),\n showMode\n ? h(\n Text,\n { c: 'dimmed', class: classes['filter-mode-label'], component: 'label' },\n () =>\n o.localization.filterMode.replace(\n '{filterType}',\n localizedFilterOption(o.localization, def._filterFn),\n ),\n )\n : null,\n ]),\n )\n }\n },\n})\n",".root {\n transition: all 150ms ease;\n --ai-size: var(--ai-size-sm);\n --ai-bg: transparent;\n --ai-hover: light-dark(var(--mantine-color-gray-1), var(--mantine-color-dark-6));\n --ai-hover-color: var(--mantine-color-bright);\n color: var(--mantine-color-bright);\n &[data-active] {\n color: var(--mantine-primary-color-filled);\n }\n}\n","import clsx from 'clsx'\nimport { ActionIcon, Popover, Tooltip, Transition } from '@mantine-vue/core'\nimport { defineComponent, h, ref, type PropType } from 'vue'\nimport { localizedFilterOption } from '../../fns/filterFns'\nimport type { MVT_Header, MVT_RowData, MVT_TableInstance } from '../../types'\nimport { dataVariable } from '../../utils/style.utils'\nimport { MVT_TableHeadCellFilterContainer } from './MVT_TableHeadCellFilterContainer'\nimport classes from './MVT_TableHeadCellFilterLabel.module.css'\n\nexport const MVT_TableHeadCellFilterLabel = defineComponent({\n name: 'MVTTableHeadCellFilterLabel',\n inheritAttrs: false,\n props: {\n header: { type: Object as PropType<MVT_Header<MVT_RowData>>, required: true },\n table: { type: Object as PropType<MVT_TableInstance<MVT_RowData>>, required: true },\n },\n setup(props, { attrs }) {\n const popoverOpened = ref(false)\n return () => {\n const { header, table } = props\n const { column } = header\n const def = column.columnDef\n const o = table.options\n const value = column.getFilterValue()\n const active = Array.isArray(value) ? value.some(Boolean) : !!value\n const range =\n def.filterVariant === 'range' ||\n def.filterVariant === 'date-range' ||\n ['between', 'betweenInclusive', 'inNumberRange'].includes(def._filterFn)\n const format =\n def.filterTooltipValueFn ?? ((filterValue: unknown) => String(filterValue ?? ''))\n const displayed = Array.isArray(value)\n ? value\n .map((entry) => format(entry))\n .join(`\" ${range ? o.localization.and : o.localization.or} \"`)\n : format(value)\n const tooltip =\n o.columnFilterDisplayMode === 'popover' && !active\n ? o.localization.filterByColumn.replace('{column}', String(def.header))\n : o.localization.filteringByColumn\n .replace('{column}', String(def.header))\n .replace('{filterType}', localizedFilterOption(o.localization, def._filterFn))\n .replace('{filterValue}', `\"${displayed}\"`)\n .replace('\" \"', '')\n const showIcon =\n o.columnFilterDisplayMode === 'popover' ||\n (!!value && !range) ||\n (range && (!!(value as unknown[])?.[0] || !!(value as unknown[])?.[1]))\n const click = (event: MouseEvent) => {\n event.stopPropagation()\n if (o.columnFilterDisplayMode === 'popover') popoverOpened.value = !popoverOpened.value\n else table.setShowColumnFilters(true)\n setTimeout(() => {\n const input = table.refs.filterInputRefs.value[`${column.id}-0`]\n input?.focus()\n input?.select()\n }, 100)\n }\n return h(\n Popover,\n {\n keepMounted: def.filterVariant === 'range-slider',\n opened: popoverOpened.value,\n position: 'top',\n shadow: 'xl',\n width: 360,\n withinPortal: true,\n onChange: (opened: boolean) => {\n popoverOpened.value = opened\n },\n },\n () => [\n h(Transition, { mounted: showIcon, transition: 'scale' } as any, () =>\n h(Popover.Target, null, () =>\n h(\n Tooltip,\n {\n disabled: popoverOpened.value,\n label: tooltip,\n multiline: true,\n w: tooltip.length > 40 ? 300 : undefined,\n withinPortal: true,\n },\n () =>\n h(\n ActionIcon,\n {\n 'aria-label': tooltip,\n class: clsx('mvt-table-head-cell-filter-label-icon', classes.root),\n size: 18,\n ...dataVariable('active', active),\n ...attrs,\n onClick: click,\n } as any,\n () => h(o.icons.IconFilter, { size: '100%' }),\n ),\n ),\n ),\n ),\n o.columnFilterDisplayMode === 'popover'\n ? h(\n Popover.Dropdown,\n {\n onClick: (event: MouseEvent) => event.stopPropagation(),\n onKeydown: (event: KeyboardEvent) => {\n if (event.key === 'Enter') popoverOpened.value = false\n },\n onMousedown: (event: MouseEvent) => event.stopPropagation(),\n },\n () => h(MVT_TableHeadCellFilterContainer, { header, table }),\n )\n : null,\n ],\n )\n }\n },\n})\n","import { defineComponent, h, type PropType, type Ref } from 'vue'\n\nimport { type MVT_Column, type MVT_RowData, type MVT_TableInstance } from '../../types'\nimport { reorderColumn } from '../../utils/column.utils'\nimport { parseFromValuesOrFunc } from '../../utils/utils'\nimport { MVT_GrabHandleButton } from '../buttons/MVT_GrabHandleButton'\n\nexport const MVT_TableHeadCellGrabHandle = defineComponent({\n name: 'MVTTableHeadCellGrabHandle',\n inheritAttrs: false,\n props: {\n column: {\n type: Object as PropType<MVT_Column<MVT_RowData>>,\n required: true,\n },\n table: {\n type: Object as PropType<MVT_TableInstance<MVT_RowData>>,\n required: true,\n },\n tableHeadCellRef: {\n type: Object as PropType<Ref<HTMLTableCellElement | null>>,\n required: true,\n },\n },\n setup(props, { attrs }) {\n return () => {\n const { column, table, tableHeadCellRef } = props\n const {\n getState,\n options: { enableColumnOrdering, mantineColumnDragHandleProps },\n setColumnOrder,\n setDraggingColumn,\n setHoveredColumn,\n } = table\n const { columnDef } = column\n\n const arg = { column, table }\n const actionIconProps = {\n ...parseFromValuesOrFunc(mantineColumnDragHandleProps, arg),\n ...parseFromValuesOrFunc(columnDef.mantineColumnDragHandleProps, arg),\n ...attrs,\n }\n\n const handleDragStart = (event: DragEvent) => {\n ;(actionIconProps as any)?.onDragStart?.(event)\n setDraggingColumn(column)\n event.dataTransfer?.setDragImage(tableHeadCellRef.value as HTMLElement, 0, 0)\n }\n\n const handleDragEnd = (event: DragEvent) => {\n ;(actionIconProps as any)?.onDragEnd?.(event)\n\n const { columnOrder, draggingColumn, hoveredColumn } = getState()\n if (hoveredColumn?.id === 'drop-zone') {\n column.toggleGrouping()\n } else if (\n enableColumnOrdering &&\n hoveredColumn &&\n hoveredColumn?.id !== draggingColumn?.id\n ) {\n setColumnOrder(\n reorderColumn(column, hoveredColumn as MVT_Column<MVT_RowData>, columnOrder),\n )\n }\n setDraggingColumn(null)\n setHoveredColumn(null)\n }\n\n return h(MVT_GrabHandleButton, {\n actionIconProps,\n onDragEnd: handleDragEnd,\n onDragStart: handleDragStart,\n table,\n } as any)\n }\n },\n})\n",".root {\n --resize-handle-thickness: 4px;\n background: var(--mantine-color-placeholder);\n border-radius: 2px;\n cursor: col-resize;\n height: 24px;\n position: absolute;\n width: var(--resize-handle-thickness);\n &:hover {\n background: var(--mantine-primary-color-filled-hover);\n }\n &:active {\n background: var(--mantine-primary-color-filled);\n }\n transform: var(--mvt-transform);\n}\n\n.root-ltr {\n right: 0px;\n margin-right: -10px;\n &:global(.md) {\n margin-right: -16px;\n }\n &:global(.xl) {\n margin-right: -22px;\n }\n}\n\n.root-rtl {\n left: 0px;\n margin-left: -10px;\n &:global(.md) {\n margin-left: -16px;\n }\n &:global(.xl) {\n margin-left: -22px;\n }\n}\n\n.root-hide {\n &:active {\n opacity: 0;\n }\n}\n","import { defineComponent, h, type PropType } from 'vue'\n\nimport { Box } from '@mantine-vue/core'\n\nimport clsx from 'clsx'\n\nimport { type MVT_Header, type MVT_RowData, type MVT_TableInstance } from '../../types'\nimport classes from './MVT_TableHeadCellResizeHandle.module.css'\n\nexport const MVT_TableHeadCellResizeHandle = defineComponent({\n name: 'MVTTableHeadCellResizeHandle',\n inheritAttrs: false,\n props: {\n header: {\n type: Object as PropType<MVT_Header<MVT_RowData>>,\n required: true,\n },\n table: {\n type: Object as PropType<MVT_TableInstance<MVT_RowData>>,\n required: true,\n },\n },\n setup(props, { attrs }) {\n return () => {\n const { header, table } = props\n const {\n getState,\n options: { columnResizeDirection, columnResizeMode },\n setColumnSizingInfo,\n } = table\n const { density } = getState()\n const { column } = header\n const handler = header.getResizeHandler()\n\n const offset =\n column.getIsResizing() && columnResizeMode === 'onEnd'\n ? `translateX(${\n (columnResizeDirection === 'rtl' ? -1 : 1) *\n (getState().columnSizingInfo.deltaOffset ?? 0)\n }px)`\n : undefined\n\n return h(Box, {\n onDblclick: () => {\n setColumnSizingInfo((old) => ({\n ...old,\n isResizingColumn: false,\n }))\n column.resetSize()\n },\n onMousedown: handler,\n onTouchstart: handler,\n role: 'separator',\n ...attrs,\n style: { '--mvt-transform': offset, ...(attrs as any).style },\n class: clsx(\n 'mvt-table-head-cell-resize-handle',\n classes.root,\n classes[`root-${columnResizeDirection}`],\n !header.subHeaders.length && columnResizeMode === 'onChange' && classes['root-hide'],\n density,\n (attrs as any).class,\n ),\n } as any)\n }\n },\n})\n",".sort-icon {\n transition: all 150ms ease;\n --ai-size: var(--ai-size-xs);\n --ai-bg: transparent;\n --ai-hover: light-dark(var(--mantine-color-gray-1), var(--mantine-color-dark-6));\n --ai-hover-color: var(--mantine-color-bright);\n color: var(--mantine-color-bright);\n &[data-sorted] {\n color: var(--mantine-primary-color-filled);\n }\n margin-left: 1px;\n}\n\n.multi-sort-indicator {\n --indicator-size: rem(16px);\n --indicator-color: transparent;\n --indicator-text-color: var(--mantine-color-bright);\n height: var(--indicator-size);\n}\n","import { defineComponent, h, type PropType } from 'vue'\n\nimport { ActionIcon, Indicator, Tooltip } from '@mantine-vue/core'\n\nimport clsx from 'clsx'\n\nimport { type MVT_Header, type MVT_RowData, type MVT_TableInstance } from '../../types'\nimport { dataVariable } from '../../utils/style.utils'\nimport classes from './MVT_TableHeadCellSortLabel.module.css'\n\nexport const MVT_TableHeadCellSortLabel = defineComponent({\n name: 'MVTTableHeadCellSortLabel',\n inheritAttrs: false,\n props: {\n header: {\n type: Object as PropType<MVT_Header<MVT_RowData>>,\n required: true,\n },\n table: {\n type: Object as PropType<MVT_TableInstance<MVT_RowData>>,\n required: true,\n },\n },\n setup(props, { attrs }) {\n return () => {\n const { header, table } = props\n const {\n getState,\n options: {\n icons: { IconArrowsSort, IconSortAscending, IconSortDescending },\n localization,\n },\n } = table\n const column = header.column\n const { columnDef } = column\n const { sorting } = getState()\n const sorted = column.getIsSorted()\n const sortIndex = column.getSortIndex()\n\n const sortTooltip = sorted\n ? sorted === 'desc'\n ? localization.sortedByColumnDesc.replace('{column}', columnDef.header)\n : localization.sortedByColumnAsc.replace('{column}', columnDef.header)\n : column.getNextSortingOrder() === 'desc'\n ? localization.sortByColumnDesc.replace('{column}', columnDef.header)\n : localization.sortByColumnAsc.replace('{column}', columnDef.header)\n\n const SortActionButton = h(\n ActionIcon,\n {\n 'aria-label': sortTooltip,\n ...dataVariable('sorted', sorted),\n ...attrs,\n class: clsx('mvt-table-head-sort-button', classes['sort-icon'], (attrs as any).class),\n } as any,\n () =>\n sorted === 'desc'\n ? h(IconSortDescending, { size: '100%' })\n : sorted === 'asc'\n ? h(IconSortAscending, { size: '100%' })\n : h(IconArrowsSort, { size: '100%' }),\n )\n\n return h(Tooltip, { label: sortTooltip, openDelay: 1000, withinPortal: true } as any, () =>\n sorting.length < 2 || sortIndex === -1\n ? SortActionButton\n : h(\n Indicator,\n {\n classNames: {\n root: clsx(\n 'mvt-table-head-multi-sort-indicator',\n classes['multi-sort-indicator'],\n ),\n },\n inline: true,\n label: sortIndex + 1,\n offset: 4,\n } as any,\n () => SortActionButton,\n ),\n )\n }\n },\n})\n",".root {\n --resize-border-color: var(--mantine-primary-color-filled);\n --hover-color: var(--mantine-primary-color-filled);\n --drag-color: var(--mantine-color-gray-7);\n --resize-thickness: 2px;\n --hover-thickness: 3px;\n --drag-thickness: 1px;\n\n background-color: var(--mvt-base-background-color);\n background-clip: padding-box;\n font-weight: bold;\n overflow: visible;\n position: relative;\n transition: padding 150ms ease-in-out;\n vertical-align: top;\n z-index: 1;\n\n &:active {\n z-index: 3;\n }\n\n &[data-column-pinned] {\n background-color: var(--mvt-base-background-color);\n opacity: 0.97;\n position: sticky;\n z-index: 4;\n &[data-column-pinned='left'] {\n left: calc(var(--mvt-table-cell-left, 0) * 1px);\n &[data-last-left-pinned] {\n box-shadow: -6px 0 6px -6px\n alpha(\n light-dark(var(--mantine-color-gray-outline), var(--mantine-color-dark-outline)),\n 0.5\n )\n inset;\n }\n }\n\n &[data-column-pinned='right'] {\n right: calc(var(--mvt-table-cell-right, 0) * 1px);\n &[data-first-right-pinned] {\n box-shadow: 6px 0 6px -6px\n alpha(\n light-dark(var(--mantine-color-gray-outline), var(--mantine-color-dark-outline)),\n 0.5\n )\n inset;\n }\n }\n }\n\n &[data-resizing] {\n &[data-resizing='ltr'] {\n border-right: var(--resize-thickness) solid var(--resize-border-color);\n }\n &[data-resizing='rtl'] {\n border-left: var(--resize-thickness) solid var(--resize-border-color);\n }\n }\n\n &[data-dragging-column] {\n border-left: var(--drag-thickness) dashed var(--drag-color);\n border-right: var(--drag-thickness) dashed var(--drag-color);\n border-top: var(--drag-thickness) dashed var(--drag-color);\n opacity: 0.5;\n z-index: 3;\n }\n\n &[data-hovered-column-target] {\n border-left: var(--hover-thickness) dashed var(--hover-color);\n border-right: var(--hover-thickness) dashed var(--hover-color);\n border-top: var(--hover-thickness) dashed var(--hover-color);\n z-index: 2;\n }\n\n :global(.mantine-ActionIcon-root) {\n opacity: 0.7;\n transition: opacity 100ms ease-in-out;\n }\n\n &:hover {\n :global(.mantine-ActionIcon-root) {\n opacity: 1;\n }\n }\n}\n\n.root-grid {\n display: flex;\n flex-direction: column;\n}\n\n.root-virtualized {\n transition: none;\n}\n\n.root-no-select {\n user-select: none;\n}\n\n.content {\n align-items: center;\n justify-content: flex-start;\n position: relative;\n width: 100%;\n height: 100%;\n}\n\n.content-spaced {\n justify-content: space-between;\n}\n\n.content-center {\n justify-content: center;\n}\n\n.content-right {\n flex-direction: row-reverse;\n}\n\n.content-wrapper {\n text-overflow: ellipsis;\n}\n\n.content-wrapper-hidden-overflow {\n overflow: hidden;\n}\n\n.content-wrapper-nowrap {\n white-space: nowrap;\n}\n\n.labels {\n align-items: center;\n gap: rem(2px);\n min-height: rem(22px);\n}\n\n.labels-right {\n flex-direction: row-reverse;\n}\n\n.labels-center {\n padding-left: calc(var(--mvt-table-head-cell-labels-padding-left) * 1rem);\n}\n\n.labels-sortable {\n cursor: pointer;\n}\n\n.labels-data {\n overflow: hidden;\n}\n\n.content-actions {\n align-items: center;\n align-self: center;\n white-space: nowrap;\n gap: rem(2px);\n margin-left: rem(2px);\n}\n","import { type CSSProperties, defineComponent, h, type PropType, ref } from 'vue'\n\nimport { Flex, TableTh, useDirection, useMantineTheme } from '@mantine-vue/core'\n\nimport clsx from 'clsx'\n\nimport {\n type MVT_ColumnVirtualizer,\n type MVT_Header,\n type MVT_RowData,\n type MVT_TableInstance,\n} from '../../types'\nimport { parseCSSVarId } from '../../utils/style.utils'\nimport { parseFromValuesOrFunc } from '../../utils/utils'\nimport { MVT_ColumnActionMenu } from '../menus/MVT_ColumnActionMenu'\nimport { MVT_TableHeadCellFilterContainer } from './MVT_TableHeadCellFilterContainer'\nimport { MVT_TableHeadCellFilterLabel } from './MVT_TableHeadCellFilterLabel'\nimport { MVT_TableHeadCellGrabHandle } from './MVT_TableHeadCellGrabHandle'\nimport { MVT_TableHeadCellResizeHandle } from './MVT_TableHeadCellResizeHandle'\nimport { MVT_TableHeadCellSortLabel } from './MVT_TableHeadCellSortLabel'\nimport classes from './MVT_TableHeadCell.module.css'\n\nexport const MVT_TableHeadCell = defineComponent({\n name: 'MVTTableHeadCell',\n inheritAttrs: false,\n props: {\n columnVirtualizer: {\n type: Object as PropType<MVT_ColumnVirtualizer>,\n default: undefined,\n },\n header: {\n type: Object as PropType<MVT_Header<MVT_RowData>>,\n required: true,\n },\n renderedHeaderIndex: { type: Number, default: 0 },\n table: {\n type: Object as PropType<MVT_TableInstance<MVT_RowData>>,\n required: true,\n },\n },\n setup(props, { attrs }) {\n const direction = useDirection()\n const theme = useMantineTheme()\n const isHoveredHeadCell = ref(false)\n const isOpenedColumnActions = ref(false)\n\n return () => {\n const { columnVirtualizer, header, renderedHeaderIndex, table } = props\n const {\n getState,\n options: {\n columnFilterDisplayMode,\n columnResizeDirection,\n columnResizeMode,\n enableColumnActions,\n enableColumnDragging,\n enableColumnOrdering,\n enableColumnPinning,\n enableGrouping,\n enableHeaderActionsHoverReveal,\n enableMultiSort,\n layoutMode,\n mantineTableHeadCellProps,\n },\n refs: { tableHeadCellRefs },\n setHoveredColumn,\n } = table\n const { columnSizingInfo, draggingColumn, grouping, hoveredColumn } = getState()\n const { column } = header\n const { columnDef } = column\n const { columnDefType } = columnDef\n\n const arg = { column, table }\n const tableCellProps = {\n ...parseFromValuesOrFunc(mantineTableHeadCellProps, arg),\n ...parseFromValuesOrFunc(columnDef.mantineTableHeadCellProps, arg),\n ...attrs,\n }\n\n const widthStyles: CSSProperties = {\n minWidth: `max(calc(var(--header-${parseCSSVarId(\n header?.id,\n )}-size) * 1px), ${columnDef.minSize ?? 30}px)`,\n width: `calc(var(--header-${parseCSSVarId(header.id)}-size) * 1px)`,\n }\n if (layoutMode === 'grid') {\n widthStyles.flex = `${\n [0, false].includes(columnDef.grow!)\n ? 0\n : `var(--header-${parseCSSVarId(header.id)}-size)`\n } 0 auto`\n } else if (layoutMode === 'grid-no-grow') {\n widthStyles.flex = `${+(columnDef.grow || 0)} 0 auto`\n }\n\n const isColumnPinned =\n enableColumnPinning && columnDef.columnDefType !== 'group' && column.getIsPinned()\n\n const isDraggingColumn = draggingColumn?.id === column.id\n const isHoveredColumn = hoveredColumn?.id === column.id\n\n const columnActionsEnabled =\n (enableColumnActions || columnDef.enableColumnActions) &&\n columnDef.enableColumnActions !== false\n\n const showColumnButtons =\n !enableHeaderActionsHoverReveal ||\n isOpenedColumnActions.value ||\n (isHoveredHeadCell.value &&\n !table.getVisibleFlatColumns().find((col) => col.getIsResizing()))\n\n const showDragHandle =\n enableColumnDragging !== false &&\n columnDef.enableColumnDragging !== false &&\n (enableColumnDragging ||\n (enableColumnOrdering && columnDef.enableColumnOrdering !== false) ||\n (enableGrouping &&\n columnDef.enableGrouping !== false &&\n !grouping.includes(column.id))) &&\n showColumnButtons\n\n let headerPL = 0\n if (column.getCanSort()) headerPL++\n if (showColumnButtons && (columnActionsEnabled || showDragHandle)) headerPL += 1.75\n if (showDragHandle) headerPL += 1.25\n\n const handleDragEnter = (_e: DragEvent) => {\n const { draggingColumn: dragging, hoveredColumn: hovered } = getState()\n if (enableGrouping && hovered?.id === 'drop-zone') {\n setHoveredColumn(null)\n }\n if (enableColumnOrdering && dragging && columnDefType !== 'group') {\n setHoveredColumn(columnDef.enableColumnOrdering !== false ? column : null)\n }\n }\n\n const headerElement =\n columnDef?.Header instanceof Function\n ? columnDef?.Header?.({ column, header, table })\n : (columnDef?.Header ?? columnDef.header)\n\n const align =\n columnDefType === 'group' ? 'center' : direction.dir.value === 'rtl' ? 'right' : 'left'\n\n const style = {\n ...widthStyles,\n '--mvt-table-cell-left':\n isColumnPinned === 'left' ? `${column.getStart(isColumnPinned)}` : undefined,\n '--mvt-table-cell-right':\n isColumnPinned === 'right' ? `${column.getAfter(isColumnPinned)}` : undefined,\n ...parseFromValuesOrFunc((tableCellProps as any)?.style, theme),\n }\n\n const { children: cellChildren, ...tableCellRest } = tableCellProps as any\n\n const content = header.isPlaceholder\n ? null\n : (cellChildren ??\n h(\n Flex,\n {\n class: clsx(\n 'mvt-table-head-cell-content',\n classes.content,\n (columnDefType === 'group' || (tableCellProps as any)?.align === 'center') &&\n classes['content-center'],\n (tableCellProps as any)?.align === 'right' && classes['content-right'],\n column.getCanResize() && classes['content-spaced'],\n ),\n } as any,\n () => [\n h(\n Flex,\n {\n style: {\n '--mvt-table-head-cell-labels-padding-left': `${headerPL}`,\n },\n class: clsx(\n 'mvt-table-head-cell-labels',\n classes.labels,\n column.getCanSort() && columnDefType !== 'group' && classes['labels-sortable'],\n (tableCellProps as any)?.align === 'right'\n ? classes['labels-right']\n : (tableCellProps as any)?.align === 'center' && classes['labels-center'],\n columnDefType === 'data' && classes['labels-data'],\n ),\n onClick: column.getToggleSortingHandler(),\n } as any,\n () => [\n h(\n Flex,\n {\n class: clsx(\n 'mvt-table-head-cell-content-wrapper',\n classes['content-wrapper'],\n columnDefType === 'data' && classes['content-wrapper-hidden-overflow'],\n (columnDef.header?.length ?? 0) < 20 && classes['content-wrapper-nowrap'],\n ),\n } as any,\n () => headerElement,\n ),\n column.getCanFilter() &&\n (column.getIsFiltered() || showColumnButtons) &&\n h(MVT_TableHeadCellFilterLabel, { header, table } as any),\n column.getCanSort() &&\n (column.getIsSorted() || showColumnButtons) &&\n h(MVT_TableHeadCellSortLabel, { header, table } as any),\n ],\n ),\n columnDefType !== 'group' &&\n h(\n Flex,\n {\n class: clsx('mvt-table-head-cell-content-actions', classes['content-actions']),\n } as any,\n () => [\n showDragHandle &&\n h(MVT_TableHeadCellGrabHandle, {\n column,\n table,\n tableHeadCellRef: {\n value: tableHeadCellRefs.value[column.id],\n },\n } as any),\n columnActionsEnabled &&\n showColumnButtons &&\n h(MVT_ColumnActionMenu, {\n header,\n onChange: (v: boolean) => {\n isOpenedColumnActions.value = v\n },\n opened: isOpenedColumnActions.value,\n table,\n } as any),\n ],\n ),\n column.getCanResize() && h(MVT_TableHeadCellResizeHandle, { header, table } as any),\n ],\n ))\n\n return h(\n TableTh,\n {\n colspan: header.colSpan,\n 'data-column-pinned': isColumnPinned || undefined,\n 'data-dragging-column': isDraggingColumn || undefined,\n 'data-first-right-pinned':\n (isColumnPinned === 'right' && column.getIsFirstColumn(isColumnPinned)) || undefined,\n 'data-hovered-column-target': isHoveredColumn || undefined,\n 'data-index': renderedHeaderIndex,\n 'data-last-left-pinned':\n (isColumnPinned === 'left' && column.getIsLastColumn(isColumnPinned)) || undefined,\n 'data-resizing':\n (columnResizeMode === 'onChange' &&\n columnSizingInfo?.isResizingColumn === column.id &&\n columnResizeDirection) ||\n undefined,\n ...tableCellRest,\n align,\n class: clsx(\n classes.root,\n layoutMode?.startsWith('grid') && classes['root-grid'],\n enableMultiSort && column.getCanSort() && classes['root-no-select'],\n columnVirtualizer && classes['root-virtualized'],\n (tableCellProps as any)?.class,\n ),\n onDragenter: handleDragEnter,\n onMouseenter: () => {\n isHoveredHeadCell.value = true\n },\n onMouseleave: () => {\n isHoveredHeadCell.value = false\n },\n ref: (el: any) => {\n const node = (el?.$el ?? el) as HTMLTableCellElement\n if (node) {\n tableHeadCellRefs.value[column.id] = node\n if (columnDefType !== 'group') {\n columnVirtualizer?.measureElement?.(node)\n }\n }\n },\n style,\n } as any,\n () => [\n content,\n columnFilterDisplayMode === 'subheader' &&\n column.getCanFilter() &&\n h(MVT_TableHeadCellFilterContainer, { header, table } as any),\n ],\n )\n }\n },\n})\n",".root {\n background-color: var(--mvt-base-background-color);\n display: table-row;\n &.layout-mode-grid {\n display: flex;\n }\n}\n\n.sticky {\n position: sticky;\n top: 0;\n}\n","import { defineComponent, h, type PropType } from 'vue'\n\nimport { Box, TableTr } from '@mantine-vue/core'\n\nimport clsx from 'clsx'\n\nimport {\n type MVT_ColumnVirtualizer,\n type MVT_Header,\n type MVT_HeaderGroup,\n type MVT_RowData,\n type MVT_TableInstance,\n type MVT_VirtualItem,\n} from '../../types'\nimport { parseFromValuesOrFunc } from '../../utils/utils'\nimport { MVT_TableHeadCell } from './MVT_TableHeadCell'\nimport classes from './MVT_TableHeadRow.module.css'\n\nexport const MVT_TableHeadRow = defineComponent({\n name: 'MVTTableHeadRow',\n inheritAttrs: false,\n props: {\n columnVirtualizer: {\n type: Object as PropType<MVT_ColumnVirtualizer>,\n default: undefined,\n },\n headerGroup: {\n type: Object as PropType<MVT_HeaderGroup<MVT_RowData>>,\n required: true,\n },\n table: {\n type: Object as PropType<MVT_TableInstance<MVT_RowData>>,\n required: true,\n },\n },\n setup(props, { attrs }) {\n return () => {\n const { columnVirtualizer, headerGroup, table } = props\n const {\n getState,\n options: { enableStickyHeader, layoutMode, mantineTableHeadRowProps },\n } = table\n const { isFullScreen } = getState()\n\n const { virtualColumns, virtualPaddingLeft, virtualPaddingRight } = columnVirtualizer ?? {}\n\n const tableRowProps = {\n ...parseFromValuesOrFunc(mantineTableHeadRowProps, {\n headerGroup,\n table,\n }),\n ...attrs,\n }\n\n return h(\n TableTr,\n {\n ...tableRowProps,\n class: clsx(\n classes.root,\n (enableStickyHeader || isFullScreen) && classes.sticky,\n layoutMode?.startsWith('grid') && classes['layout-mode-grid'],\n (tableRowProps as any)?.class,\n ),\n } as any,\n () => [\n virtualPaddingLeft\n ? h(Box, {\n component: 'th',\n display: 'flex',\n w: virtualPaddingLeft,\n } as any)\n : null,\n (virtualColumns ?? headerGroup.headers).map(\n (headerOrVirtualHeader, renderedHeaderIndex) => {\n let header = headerOrVirtualHeader as MVT_Header<MVT_RowData>\n let index = renderedHeaderIndex\n if (columnVirtualizer) {\n index = (headerOrVirtualHeader as MVT_VirtualItem).index\n header = headerGroup.headers[index]\n }\n return h(MVT_TableHeadCell, {\n columnVirtualizer,\n header,\n key: header.id,\n renderedHeaderIndex: index,\n table,\n } as any)\n },\n ),\n virtualPaddingRight\n ? h(Box, {\n component: 'th',\n display: 'flex',\n w: virtualPaddingRight,\n } as any)\n : null,\n ],\n )\n }\n },\n})\n",".root {\n background-color: var(--mvt-base-background-color);\n opacity: 0.97;\n position: relative;\n}\n\n.root-grid {\n display: grid;\n}\n\n.root-table-row-group {\n display: table-row-group;\n}\n\n.root-sticky {\n position: sticky;\n top: 0;\n z-index: 3;\n}\n\n.banner-tr {\n display: table-row;\n}\n\n.banner-th {\n display: table-cell;\n padding: 0;\n}\n\n.grid {\n display: grid;\n}\n","import { defineComponent, h, type PropType } from 'vue'\n\nimport { TableTh, TableThead, TableTr } from '@mantine-vue/core'\n\nimport clsx from 'clsx'\n\nimport { type MVT_ColumnVirtualizer, type MVT_RowData, type MVT_TableInstance } from '../../types'\nimport { parseFromValuesOrFunc } from '../../utils/utils'\nimport { MVT_ToolbarAlertBanner } from '../toolbar/MVT_ToolbarAlertBanner'\nimport { MVT_TableHeadRow } from './MVT_TableHeadRow'\nimport classes from './MVT_TableHead.module.css'\n\nexport const MVT_TableHead = defineComponent({\n name: 'MVTTableHead',\n inheritAttrs: false,\n props: {\n columnVirtualizer: {\n type: Object as PropType<MVT_ColumnVirtualizer>,\n default: undefined,\n },\n table: {\n type: Object as PropType<MVT_TableInstance<MVT_RowData>>,\n required: true,\n },\n },\n setup(props, { attrs }) {\n return () => {\n const { columnVirtualizer, table } = props\n const {\n getHeaderGroups,\n getSelectedRowModel,\n getState,\n options: {\n enableStickyHeader,\n layoutMode,\n mantineTableHeadProps,\n positionToolbarAlertBanner,\n },\n refs: { tableHeadRef },\n } = table\n const { isFullScreen, showAlertBanner } = getState()\n\n const tableHeadProps = {\n ...parseFromValuesOrFunc(mantineTableHeadProps, { table }),\n ...attrs,\n }\n\n const stickyHeader = enableStickyHeader || isFullScreen\n\n return h(\n TableThead,\n {\n ...tableHeadProps,\n class: clsx(\n classes.root,\n layoutMode?.startsWith('grid') ? classes['root-grid'] : classes['root-table-row-group'],\n stickyHeader && classes['root-sticky'],\n (tableHeadProps as any)?.class,\n ),\n pos: stickyHeader && layoutMode?.startsWith('grid') ? 'sticky' : 'relative',\n ref: (el: any) => {\n const node = (el?.$el ?? el) as HTMLTableSectionElement\n tableHeadRef.value = node\n if ((tableHeadProps as any)?.ref) {\n ;(tableHeadProps as any).ref.value = node\n }\n },\n } as any,\n () =>\n positionToolbarAlertBanner === 'head-overlay' &&\n (showAlertBanner || getSelectedRowModel().rows.length > 0)\n ? h(\n TableTr,\n {\n class: clsx(classes['banner-tr'], layoutMode?.startsWith('grid') && classes.grid),\n } as any,\n () =>\n h(\n TableTh,\n {\n class: clsx(\n classes['banner-th'],\n layoutMode?.startsWith('grid') && classes.grid,\n ),\n colspan: table.getVisibleLeafColumns().length,\n } as any,\n () => h(MVT_ToolbarAlertBanner, { table } as any),\n ),\n )\n : getHeaderGroups().map((headerGroup) =>\n h(MVT_TableHeadRow, {\n columnVirtualizer,\n headerGroup,\n key: headerGroup.id,\n table,\n } as any),\n ),\n )\n }\n },\n})\n",".root {\n background-color: var(--mvt-base-background-color);\n}\n\n.root-grid {\n display: grid;\n}\n","import { defineComponent, h, type PropType, unref } from 'vue'\n\nimport { darken, lighten, Table, useMantineColorScheme } from '@mantine-vue/core'\n\nimport clsx from 'clsx'\n\nimport { useMVT_ColumnVirtualizer } from '../../hooks/useMVT_ColumnVirtualizer'\nimport { type MVT_RowData, type MVT_TableInstance } from '../../types'\nimport { parseCSSVarId } from '../../utils/style.utils'\nimport { parseFromValuesOrFunc } from '../../utils/utils'\nimport { MVT_TableBody } from '../body/MVT_TableBody'\nimport { MVT_TableFooter } from '../footer/MVT_TableFooter'\nimport { MVT_TableHead } from '../head/MVT_TableHead'\nimport classes from './MVT_Table.module.css'\n\nexport const MVT_Table = defineComponent({\n name: 'MVTTable',\n inheritAttrs: false,\n props: {\n table: {\n type: Object as PropType<MVT_TableInstance<MVT_RowData>>,\n required: true,\n },\n },\n setup(props, { attrs }) {\n const columnVirtualizerRef = useMVT_ColumnVirtualizer(props.table)\n const { colorScheme } = useMantineColorScheme()\n\n return () => {\n const { table } = props\n\n const columnVirtualizer = columnVirtualizerRef?.value\n const {\n getFlatHeaders,\n options: { enableTableFooter, enableTableHead, layoutMode, mantineTableProps },\n } = table\n\n const tableProps = {\n highlightOnHover: true,\n horizontalSpacing: table.getState().density,\n verticalSpacing: table.getState().density,\n ...parseFromValuesOrFunc(mantineTableProps, { table }),\n ...attrs,\n }\n\n const columnSizeVars: Record<string, number> = (() => {\n const headers = getFlatHeaders()\n const colSizes: Record<string, number> = {}\n for (let i = 0; i < headers.length; i++) {\n const header = headers[i]\n const colSize = header.getSize()\n colSizes[`--header-${parseCSSVarId(header.id)}-size`] = colSize\n colSizes[`--col-${parseCSSVarId(header.column.id)}-size`] = colSize\n }\n return colSizes\n })()\n\n const stripedColor = (tableProps as any).stripedColor\n\n const commonTableGroupProps = { columnVirtualizer, table }\n\n return h(\n Table,\n {\n ...tableProps,\n class: clsx(\n 'mvt-table',\n classes.root,\n layoutMode?.startsWith('grid') && classes['root-grid'],\n (tableProps as any).class,\n ),\n style: {\n ...columnSizeVars,\n '--mvt-striped-row-background-color': stripedColor,\n '--mvt-striped-row-hover-background-color': stripedColor\n ? unref(colorScheme) === 'dark'\n ? lighten(stripedColor, 0.08)\n : darken(stripedColor, 0.12)\n : undefined,\n ...(tableProps as any).style,\n },\n } as any,\n () => [\n enableTableHead && h(MVT_TableHead, commonTableGroupProps as any),\n h(MVT_TableBody, {\n ...commonTableGroupProps,\n tableProps,\n } as any),\n enableTableFooter && h(MVT_TableFooter, commonTableGroupProps as any),\n ],\n )\n }\n },\n})\n",".root {\n background-color: var(--mvt-base-background-color);\n max-width: 100%;\n overflow: auto;\n position: relative;\n}\n\n.root-sticky {\n max-height: clamp(350px, calc(100vh - calc(var(--mvt-top-toolbar-height) * 1px)), 9999px);\n}\n\n.root-fullscreen {\n max-height: calc(100vh - calc(var(--mvt-top-toolbar-height) * 1px)) !important;\n}\n","import { defineComponent, h, onMounted, type PropType, ref } from 'vue'\n\nimport { Box, LoadingOverlay } from '@mantine-vue/core'\n\nimport clsx from 'clsx'\n\nimport { type MVT_RowData, type MVT_TableInstance } from '../../types'\nimport { parseFromValuesOrFunc } from '../../utils/utils'\nimport { MVT_EditRowModal } from '../modals/MVT_EditRowModal'\nimport { MVT_Table } from './MVT_Table'\nimport classes from './MVT_TableContainer.module.css'\n\nexport const MVT_TableContainer = defineComponent({\n name: 'MVTTableContainer',\n inheritAttrs: false,\n props: {\n table: {\n type: Object as PropType<MVT_TableInstance<MVT_RowData>>,\n required: true,\n },\n },\n setup(props, { attrs }) {\n const totalToolbarHeight = ref(0)\n\n onMounted(() => {\n const { bottomToolbarRef, topToolbarRef } = props.table.refs\n const topToolbarHeight = topToolbarRef.value?.offsetHeight ?? 0\n const bottomToolbarHeight = bottomToolbarRef.value?.offsetHeight ?? 0\n totalToolbarHeight.value = topToolbarHeight + bottomToolbarHeight\n })\n\n return () => {\n const { table } = props\n const {\n getState,\n options: {\n createDisplayMode,\n editDisplayMode,\n enableStickyHeader,\n mantineLoadingOverlayProps,\n mantineTableContainerProps,\n },\n refs: { tableContainerRef },\n } = table\n const { creatingRow, editingRow, isFullScreen, isLoading, showLoadingOverlay } = getState()\n\n const tableContainerProps = {\n ...parseFromValuesOrFunc(mantineTableContainerProps, { table }),\n ...attrs,\n }\n const loadingOverlayProps = parseFromValuesOrFunc(mantineLoadingOverlayProps, { table })\n\n const createModalOpen = createDisplayMode === 'modal' && creatingRow\n const editModalOpen = editDisplayMode === 'modal' && editingRow\n\n return h(\n Box,\n {\n ...tableContainerProps,\n style: {\n '--mvt-top-toolbar-height': `${totalToolbarHeight.value}`,\n ...(tableContainerProps as any)?.style,\n },\n class: clsx(\n 'mvt-table-container',\n classes.root,\n enableStickyHeader && classes['root-sticky'],\n isFullScreen && classes['root-fullscreen'],\n (tableContainerProps as any)?.class,\n ),\n ref: (el: any) => {\n const node = (el?.$el ?? el) as HTMLDivElement\n if (node) {\n tableContainerRef.value = node\n if ((tableContainerProps as any)?.ref) {\n ;(tableContainerProps as any).ref.value = node\n }\n }\n },\n } as any,\n () => [\n h(LoadingOverlay, {\n visible: isLoading || showLoadingOverlay,\n zIndex: 2,\n ...loadingOverlayProps,\n } as any),\n h(MVT_Table, { table } as any),\n (createModalOpen || editModalOpen) && h(MVT_EditRowModal, { open: true, table } as any),\n ],\n )\n }\n },\n})\n",":root {\n /* default background color for everything */\n --mvt-base-background-color: var(--mantine-color-body);\n\n @mixin light-root {\n --mvt-striped-row-background-color: darken(var(--mvt-base-background-color), 0.05);\n }\n @mixin dark-root {\n --mvt-striped-row-background-color: lighten(var(--mvt-base-background-color), 0.04);\n }\n\n /* row hover */\n @mixin light-root {\n --mvt-row-hover-background-color: darken(var(--mvt-base-background-color), 0.08);\n --mvt-striped-row-hover-background-color: darken(var(--mvt-striped-row-background-color), 0.12);\n }\n @mixin dark-root {\n --mvt-row-hover-background-color: lighten(var(--mvt-base-background-color), 0.08);\n --mvt-striped-row-hover-background-color: lighten(\n var(--mvt-striped-row-background-color),\n 0.08\n );\n }\n\n /* row selection */\n --mvt-selected-row-background-color: alpha(var(--mantine-primary-color-light), 0.8);\n @mixin light-root {\n --mvt-selected-row-hover-background-color: darken(\n var(--mantine-primary-color-light-hover),\n 0.05\n );\n }\n @mixin dark-root {\n --mvt-selected-row-hover-background-color: lighten(\n var(--mantine-primary-color-light-hover),\n 0.05\n );\n }\n\n /* row pinning */\n --mvt-pinned-row-background-color: var(--mvt-selected-row-background-color);\n --mvt-pinned-row-hover-background-color: var(--mvt-selected-row-hover-background-color);\n\n /* column pinning */\n @mixin light-root {\n --mvt-pinned-column-background-color: darken(var(--mvt-base-background-color), 0.01);\n }\n @mixin dark-root {\n --mvt-pinned-column-background-color: darken(var(--mvt-base-background-color), 0.05);\n }\n\n /* cell borders */\n --mvt-dragging-hovered-border-color: var(--mantine-primary-color-filled);\n --mvt-dragging-drag-border-color: var(--mantine-color-gray-7);\n --mvt-resize-column-border-color: var(--mantine-primary-color-filled);\n}\n\n.root {\n background-color: var(--mvt-base-background-color);\n overflow: hidden;\n transition: all 150ms ease-in-out;\n}\n","import { defineComponent, h, onBeforeUnmount, type PropType, Teleport, watch } from 'vue'\n\nimport { Paper, useMantineTheme } from '@mantine-vue/core'\n\nimport clsx from 'clsx'\n\nimport { type MVT_RowData, type MVT_TableInstance } from '../../types'\nimport { parseFromValuesOrFunc } from '../../utils/utils'\nimport { MVT_BottomToolbar } from '../toolbar/MVT_BottomToolbar'\nimport { MVT_TopToolbar } from '../toolbar/MVT_TopToolbar'\nimport { MVT_TableContainer } from './MVT_TableContainer'\nimport classes from './MVT_TablePaper.module.css'\n\nexport const MVT_TablePaper = defineComponent({\n name: 'MVTTablePaper',\n inheritAttrs: false,\n props: {\n table: {\n type: Object as PropType<MVT_TableInstance<MVT_RowData>>,\n required: true,\n },\n },\n setup(props, { attrs }) {\n const theme = useMantineTheme()\n\n // Lock body scroll while full screen so the scrollbar moves the table's own\n // container instead of the page behind it.\n const setBodyScrollLock = (locked: boolean) => {\n if (typeof document === 'undefined') return\n document.body.style.overflow = locked ? 'hidden' : ''\n }\n\n watch(\n () => props.table.getState().isFullScreen,\n (isFullScreen) => setBodyScrollLock(!!isFullScreen),\n )\n\n onBeforeUnmount(() => setBodyScrollLock(false))\n\n return () => {\n const { table } = props\n const {\n getState,\n options: {\n enableBottomToolbar,\n enableTopToolbar,\n mantinePaperProps,\n renderBottomToolbar,\n renderTopToolbar,\n },\n refs: { tablePaperRef },\n } = table\n const { isFullScreen } = getState()\n\n const tablePaperProps = {\n ...parseFromValuesOrFunc(mantinePaperProps, { table }),\n ...attrs,\n }\n\n const style = {\n zIndex: isFullScreen ? 200 : undefined,\n ...parseFromValuesOrFunc(tablePaperProps?.style as any, theme),\n ...(isFullScreen\n ? {\n border: 0,\n borderRadius: 0,\n bottom: 0,\n height: '100vh',\n left: 0,\n margin: 0,\n maxHeight: '100vh',\n maxWidth: '100vw',\n padding: 0,\n position: 'fixed',\n right: 0,\n top: 0,\n width: '100vw',\n }\n : null),\n }\n\n const paper = h(\n Paper,\n {\n shadow: 'xs',\n withBorder: true,\n ...tablePaperProps,\n class: clsx(\n 'mvt-table-paper',\n classes.root,\n isFullScreen && 'mvt-table-paper-fullscreen',\n (tablePaperProps as any)?.class,\n ),\n ref: (el: any) => {\n tablePaperRef.value = (el?.$el ?? el) as HTMLDivElement\n if ((tablePaperProps as any)?.ref) {\n ;(tablePaperProps as any).ref.value = tablePaperRef.value\n }\n },\n style,\n } as any,\n () => [\n enableTopToolbar &&\n (parseFromValuesOrFunc(renderTopToolbar, { table }) ??\n h(MVT_TopToolbar, { table } as any)),\n h(MVT_TableContainer, { table } as any),\n enableBottomToolbar &&\n (parseFromValuesOrFunc(renderBottomToolbar, { table }) ??\n h(MVT_BottomToolbar, { table } as any)),\n ],\n )\n\n // Teleport to <body> while full screen so `position: fixed` is relative to\n // the viewport and lands in the root stacking context. Otherwise a\n // transformed / stacking-context ancestor (common in docs shells and app\n // layouts) traps it, leaving the table behind the page header/sidebar.\n // `disabled` keeps the same instance mounted when toggling in/out.\n return h(Teleport, { disabled: !isFullScreen, to: 'body' }, [paper])\n }\n },\n})\n","import { defineComponent, h, type PropType, type Slots, type SlotsType } from 'vue'\n\nimport { useMantineVueTable } from '../hooks/useMantineVueTable'\nimport { type MVT_RowData, type MVT_TableInstance, type MVT_TableOptions } from '../types'\nimport { type MVT_TableSlots, provideMVT_Slots } from './MVT_TableSlots'\nimport { MVT_TablePaper } from './table/MVT_TablePaper'\n\nexport const MantineVueTable = defineComponent({\n name: 'MantineVueTable',\n inheritAttrs: false,\n props: {\n table: {\n type: Object as PropType<object>,\n default: undefined,\n },\n },\n slots: Object as SlotsType<MVT_TableSlots>,\n setup(props, { attrs, slots }) {\n const table =\n (props.table as MVT_TableInstance<MVT_RowData> | undefined) ??\n useMantineVueTable(attrs as unknown as MVT_TableOptions<MVT_RowData>)\n\n const rawSlots = slots as unknown as Slots\n provideMVT_Slots(rawSlots)\n\n ;(table as any).setMVTSlots?.(rawSlots)\n return () => h(MVT_TablePaper, { table } as any)\n },\n})\n","import type { MVT_RowData } from '../types'\nimport type {\n MVT_ServerGroupingContext,\n MVT_ServerGroupingProvider,\n MVT_ServerGroupRequest,\n MVT_ServerRecordRequest,\n} from './serverGrouping.types'\n\n/**\n * Config for {@link createServerGroupingProvider}. Accepts concise property\n * names (`groups`, `groupId`, `records`, …) in addition to the explicit\n * adapter names of {@link MVT_ServerGroupingProvider} (`getGroups`,\n * `getGroupId`, `getRecords`, …). Explicit names win when both are given.\n */\nexport interface MVT_CreateServerGroupingProviderOptions<\n TData extends MVT_RowData = MVT_RowData,\n TGroup = unknown,\n TGroupResponse = unknown,\n TRecordResponse = unknown,\n> extends Partial<\n Omit<\n MVT_ServerGroupingProvider<TData, TGroup, TGroupResponse, TRecordResponse>,\n 'loadGroups' | 'loadRecords'\n >\n> {\n loadGroups: (request: MVT_ServerGroupRequest<TGroup>) => Promise<TGroupResponse>\n loadRecords: (request: MVT_ServerRecordRequest<TGroup>) => Promise<TRecordResponse>\n\n groups?: (response: TGroupResponse) => TGroup[]\n groupRowCount?: (response: TGroupResponse) => number\n groupId?: (group: TGroup, context: MVT_ServerGroupingContext<TGroup>) => string\n groupLabel?: (group: TGroup, context: MVT_ServerGroupingContext<TGroup>) => string\n groupValue?: (group: TGroup, context: MVT_ServerGroupingContext<TGroup>) => unknown\n groupCount?: (group: TGroup, context: MVT_ServerGroupingContext<TGroup>) => number | undefined\n groupMeta?: (group: TGroup, context: MVT_ServerGroupingContext<TGroup>) => Record<string, unknown>\n hasChildren?: (group: TGroup, context: MVT_ServerGroupingContext<TGroup>) => boolean\n records?: (response: TRecordResponse) => TData[]\n recordRowCount?: (response: TRecordResponse) => number\n rowId?: (row: TData) => string\n cacheKey?: (\n request: MVT_ServerGroupRequest<TGroup> | MVT_ServerRecordRequest<TGroup>,\n ) => unknown[]\n}\n\nconst asString = (value: unknown): string =>\n value === null || value === undefined ? '' : String(value)\n\n/**\n * Build a {@link MVT_ServerGroupingProvider} with sensible defaults for common\n * response formats:\n *\n * - `groups`/`records` default to the response itself when it is an array.\n * - `groupRowCount`/`recordRowCount` default to the mapped array length.\n * - `groupId`/`groupLabel` default to stringifying `groupValue` (or the group\n * itself when it is a primitive).\n * - `groupValue` defaults to the group object itself.\n * - `groupMeta` defaults to `{}`; `groupCount` and aggregates stay optional.\n * - `hasChildren` defaults to `true` (every level up to and including the last\n * grouping level is expandable).\n * - `rowId` falls back to the table's existing `getRowId` logic.\n */\nexport const createServerGroupingProvider = <\n TData extends MVT_RowData = MVT_RowData,\n TGroup = unknown,\n TGroupResponse = unknown,\n TRecordResponse = unknown,\n>(\n options: MVT_CreateServerGroupingProviderOptions<TData, TGroup, TGroupResponse, TRecordResponse>,\n): MVT_ServerGroupingProvider<TData, TGroup, TGroupResponse, TRecordResponse> => {\n const getGroups =\n options.getGroups ??\n options.groups ??\n ((response: TGroupResponse) => (Array.isArray(response) ? (response as TGroup[]) : []))\n const getRecords =\n options.getRecords ??\n options.records ??\n ((response: TRecordResponse) => (Array.isArray(response) ? (response as TData[]) : []))\n\n const getGroupValue =\n options.getGroupValue ?? options.groupValue ?? ((group: TGroup) => group as unknown)\n\n const getGroupId =\n options.getGroupId ??\n options.groupId ??\n ((group: TGroup, context: MVT_ServerGroupingContext<TGroup>) =>\n asString(getGroupValue(group, context)))\n\n const getGroupLabel =\n options.getGroupLabel ??\n options.groupLabel ??\n ((group: TGroup, context: MVT_ServerGroupingContext<TGroup>) =>\n asString(getGroupValue(group, context)))\n\n return {\n getGroupId,\n getGroupLabel,\n getGroupValue,\n getGroupCount: options.getGroupCount ?? options.groupCount,\n getGroupMeta: options.getGroupMeta ?? options.groupMeta ?? (() => ({})),\n hasGroupChildren: options.hasGroupChildren ?? options.hasChildren,\n loadGroups: options.loadGroups,\n getGroups,\n getGroupRowCount:\n options.getGroupRowCount ??\n options.groupRowCount ??\n ((response: TGroupResponse) => getGroups(response).length),\n loadRecords: options.loadRecords,\n getRecords,\n getRecordRowCount:\n options.getRecordRowCount ??\n options.recordRowCount ??\n ((response: TRecordResponse) => getRecords(response).length),\n getRowId: options.getRowId ?? options.rowId,\n getCacheKey: options.getCacheKey ?? options.cacheKey,\n }\n}\n"],"mappings":"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"}