@ethanhann/mantine-dataview 0.2.0 → 0.3.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/README.md CHANGED
@@ -18,13 +18,16 @@ Built on [Mantine](https://mantine.dev) v9 and [TanStack Table](https://tanstack
18
18
  - Column data types (`text`, `number`, `currency`, `date`, `boolean`) with automatic Intl-based formatting.
19
19
  - Seven filter variants with smart controls: `SegmentedControl` for booleans, `RangeSlider` for bounded numbers,
20
20
  `DatePickerInput` for dates.
21
- - Custom filter components bring your own UI per column.
21
+ - Custom filter components. Bring your own UI per column.
22
22
  - Column pinning (left/right) with sticky positioning.
23
23
  - CSV export with optional formatted output.
24
24
  - Router-agnostic URL state sync with a default History-API adapter.
25
25
  - Cross-page row selection + a shared bulk-action bar.
26
26
  - Column-meta card composition (`title`/`subtitle`/`media`/`badge`/`meta`) + a `renderCard` escape hatch.
27
27
  - Responsive: force-to-cards below a breakpoint, filters collapse to a bottom drawer on mobile.
28
+ - Faceted search with server-provided counts on filter options and range buckets with dynamic totals.
29
+ - External parameters (`params`) for scope selectors, toggles, and other non-column filters.
30
+ - Controls automatically disabled while data is loading (opt-out with `disableWhileLoading`).
28
31
  - Loading / empty / filtered-empty / error states, consistent across both views.
29
32
  - Dark mode support via Mantine's color scheme system.
30
33
  - Strongly typed end to end; ships its own `.d.ts`. No icon dependency.
@@ -169,10 +172,54 @@ Or use the standalone components directly for full control:
169
172
  <DataPagination view={view}/>
170
173
  ```
171
174
 
175
+ ### Toolbar sections
176
+
177
+ Inject controls into the toolbar without rebuilding it from scratch using `leftSection`
178
+ and `rightSection`:
179
+
180
+ ```tsx
181
+ <DataView.Toolbar
182
+ leftSection={<Text fw={600}>Users</Text>}
183
+ rightSection={
184
+ <Group gap="xs">
185
+ <Button size="xs" onClick={() => view.exportCsv()}>Export</Button>
186
+ <Button size="xs" onClick={() => view.refetch()}>Refresh</Button>
187
+ </Group>
188
+ }
189
+ />
190
+ ```
191
+
192
+ - `leftSection` renders before the search input (start of the left group).
193
+ - `rightSection` renders after the view switcher (end of the right group).
194
+
195
+ Both sections are disabled during loading along with the other toolbar controls.
196
+
197
+ ### View switcher
198
+
199
+ The `ViewSwitcher` is exported for standalone use with customizable labels:
200
+
201
+ ```tsx
202
+ import { ViewSwitcher } from "@ethanhann/mantine-dataview";
203
+
204
+ // Default
205
+ <ViewSwitcher view={view} />
206
+
207
+ // Custom labels (text or icons)
208
+ <ViewSwitcher view={view} tableLabel="List" cardsLabel="Grid" />
209
+ <ViewSwitcher view={view} tableLabel={<IconList />} cardsLabel={<IconGrid />} />
210
+ ```
211
+
212
+ Or drive the view programmatically:
213
+
214
+ ```tsx
215
+ view.setView("cards"); // switch to cards
216
+ view.view; // current view: "table" | "cards"
217
+ ```
218
+
172
219
  ## Controlled (bring your own data layer)
173
220
 
174
- `useDataViewFetcher` is a thin convenience wrapper. The core, `useDataView`, is fully controlled
175
- you supply `rows`/`rowCount`/`status` and respond to `onRequestChange`:
221
+ `useDataViewFetcher` is a thin convenience wrapper. The core, `useDataView`, is fully controlled.
222
+ You supply `rows`/`rowCount`/`status` and respond to `onRequestChange`:
176
223
 
177
224
  ```tsx
178
225
  const [resp, setResp] = useState({rows: [], rowCount: 0});
@@ -198,21 +245,50 @@ const view = useDataView<User>({
198
245
 
199
246
  The request is emitted immediately for pagination/sorting and debounced for search/filters.
200
247
 
248
+ ### External parameters
249
+
250
+ Pass arbitrary parameters that aren't tied to a column. They're included in every
251
+ `DataViewRequest`, trigger a refetch when they change, and reset pagination to page 1:
252
+
253
+ ```tsx
254
+ const [tenantId, setTenantId] = useState("acme");
255
+ const [showArchived, setShowArchived] = useState(false);
256
+
257
+ const view = useDataViewFetcher<User>({
258
+ columns,
259
+ getRowId,
260
+ fetcher: async (request) => {
261
+ // request.params = { tenantId: "acme", showArchived: false }
262
+ const res = await api.list(request);
263
+ return {rows: res.items, rowCount: res.total};
264
+ },
265
+ params: {tenantId, showArchived},
266
+ });
267
+
268
+ // Render your own controls...
269
+ <Select data={tenants} value={tenantId} onChange={setTenantId}/>
270
+ <Switch checked={showArchived} onChange={(e) => setShowArchived(e.currentTarget.checked)}/>
271
+ ```
272
+
273
+ Values are typed as `FilterParam` (`string | number | boolean | null | string[] | number[]`).
274
+
201
275
  ### Refetching on external changes
202
276
 
203
- When state outside the dataview (e.g. a tenant selector, date range from another component)
204
- should trigger a refetch, pass it in `deps`:
277
+ For cases where external state affects the fetcher but isn't a named parameter (e.g. it's
278
+ baked into the closure), use `deps` to trigger a refetch:
205
279
 
206
280
  ```tsx
207
281
  const view = useDataViewFetcher<User>({
208
282
  columns,
209
283
  getRowId,
210
284
  fetcher,
211
- deps: [selectedTenantId, externalDateRange],
285
+ deps: [selectedTenantId],
212
286
  });
213
287
  ```
214
288
 
215
289
  When any value in `deps` changes, the current request is re-emitted to the fetcher.
290
+ Prefer `params` when the server needs to see the values; use `deps` when they're already
291
+ in the fetcher closure.
216
292
 
217
293
  ### Manual refresh
218
294
 
@@ -230,7 +306,7 @@ error retry button uses.
230
306
  Set `dataType` on a column's meta to enable automatic value formatting. When no explicit
231
307
  `cell` renderer is provided, the library formats values using `Intl.NumberFormat` or
232
308
  `Intl.DateTimeFormat` based on the data type. Raw values are preserved for server requests,
233
- sorting, and filtering formatting is display-only.
309
+ sorting, and filtering. Formatting is display-only.
234
310
 
235
311
  ```tsx
236
312
  col.accessor("price", {
@@ -254,9 +330,9 @@ col.accessor("createdAt", {
254
330
 
255
331
  ### Format overrides (three levels)
256
332
 
257
- 1. **Library defaults** built-in formatters per data type (above).
258
- 2. **Table-scoped** `formatDefaults` on the hook options, keyed by data type.
259
- 3. **Column-scoped** `format` on `ColumnMeta`, overrides everything for that column.
333
+ 1. **Library defaults**, the built-in formatters per data type (above).
334
+ 2. **Table-scoped**, `formatDefaults` on the hook options, keyed by data type.
335
+ 3. **Column-scoped**, `format` on `ColumnMeta`, overrides everything for that column.
260
336
 
261
337
  ```tsx
262
338
  const view = useDataViewFetcher({
@@ -315,7 +391,7 @@ col.accessor("avatar", {header: "Avatar", enableSorting: false});
315
391
 
316
392
  ## Custom headers
317
393
 
318
- Column headers support the same render function pattern as cells pass a component or
394
+ Column headers support the same render function pattern as cells. Pass a component or
319
395
  function to the `header` property:
320
396
 
321
397
  ```tsx
@@ -399,7 +475,7 @@ Define filters declaratively on column meta. Seven variants are built in:
399
475
  | `dateRange` | `DatePickerInput` (range) | Two-date calendar picker |
400
476
 
401
477
  ```tsx
402
- // Boolean renders as a segmented control
478
+ // Boolean, renders as a segmented control
403
479
  meta: {
404
480
  filter: {
405
481
  variant: "boolean"
@@ -477,7 +553,7 @@ import {FilterControl} from "@ethanhann/mantine-dataview";
477
553
 
478
554
  ### Programmatic filter control
479
555
 
480
- Reset all filters or clear a specific column from anywhere no need to be inside the toolbar:
556
+ Reset all filters or clear a specific column from anywhere, no need to be inside the toolbar:
481
557
 
482
558
  ```tsx
483
559
  // Reset all filters
@@ -494,6 +570,73 @@ Reset all filters or clear a specific column from anywhere — no need to be ins
494
570
  - **Mobile** (below `sm` breakpoint): always collapsed into a bottom drawer.
495
571
  - A "Reset filters" button appears automatically when any filter is active.
496
572
 
573
+ ## Faceted search
574
+
575
+ When the server returns `facets` in the response, filter controls automatically adapt to show
576
+ dynamic counts, disable zero-result options, and render clickable range buckets.
577
+
578
+ ### Server response with facets
579
+
580
+ ```tsx
581
+ fetcher: async (request) => {
582
+ const res = await api.list(request);
583
+ return {
584
+ rows: res.items,
585
+ rowCount: res.total,
586
+ facets: {
587
+ size: {
588
+ type: "values",
589
+ values: [
590
+ { value: "S", label: "Small", count: 12 },
591
+ { value: "M", label: "Medium", count: 34 },
592
+ { value: "L", label: "Large", count: 0 },
593
+ ],
594
+ },
595
+ price: {
596
+ type: "ranges",
597
+ ranges: [
598
+ { label: "Under $25", from: 0, to: 25, count: 15 },
599
+ { label: "$25-$50", from: 25, to: 50, count: 28 },
600
+ { label: "$50+", from: 50, to: 999, count: 7 },
601
+ ],
602
+ min: 5,
603
+ max: 249,
604
+ },
605
+ },
606
+ };
607
+ };
608
+ ```
609
+
610
+ ### How controls adapt
611
+
612
+ | Filter type | Without facets | With value facets | With range facets |
613
+ |------------|---------------|-------------------|-------------------|
614
+ | Select | Static options | Options with counts, zero-count dimmed | - |
615
+ | Boolean | All / Yes / No | All / Yes (12) / No (3) | - |
616
+ | Number range | Slider or inputs | Slider (bounds from facet) | Clickable range buckets + slider |
617
+ | Date range | Date picker | Date picker | Clickable range buckets + picker |
618
+
619
+ Facets are optional and backward compatible. Facet data updates on every fetch, creating the
620
+ classic faceted search loop where filtering one dimension updates counts on all others.
621
+
622
+ ### Facet types
623
+
624
+ ```ts
625
+ // Discrete values - for select, multiselect, boolean filters
626
+ type ValueFacet = {
627
+ type: "values";
628
+ values: { value: string; label?: string; count: number }[];
629
+ };
630
+
631
+ // Bucketed ranges - for numberRange, dateRange filters
632
+ type RangeFacet = {
633
+ type: "ranges";
634
+ ranges: { label: string; from: number | string; to: number | string; count: number }[];
635
+ min?: number | string;
636
+ max?: number | string;
637
+ };
638
+ ```
639
+
497
640
  ## Card composition
498
641
 
499
642
  In card view, each visible column is placed by its `meta.card.role`:
@@ -594,7 +737,7 @@ Override loading, empty, and error states:
594
737
  />
595
738
  ```
596
739
 
597
- A filtered-empty state is handled automatically it shows a "clear filters" action so
740
+ A filtered-empty state is handled automatically. It shows a "clear filters" action so
598
741
  users can reset without manually removing each filter.
599
742
 
600
743
  ## URL state sync
@@ -700,17 +843,50 @@ When `forceCardsBelow` is set and the viewport is below that breakpoint:
700
843
  - The view switcher is disabled (or hidden entirely with `lockSwitcherOnMobile`).
701
844
  - Filters always open in a bottom drawer on mobile.
702
845
 
846
+ ## Loading behavior
847
+
848
+ By default, filter controls, sort controls, and column visibility/pinning menus are disabled
849
+ while data is loading. Sort headers in the table also become non-interactive, with a dimmed
850
+ appearance showing the current sort state. The search input stays enabled so users can keep
851
+ typing during debounced search.
852
+
853
+ Opt out per component:
854
+
855
+ ```tsx
856
+ <DataTable view={view} disableWhileLoading={false} />
857
+ <DataToolbar view={view} disableWhileLoading={false} />
858
+ ```
859
+
860
+ ### Animated row transitions
861
+
862
+ Instead of skeleton loading, rows can animate in and out with CSS transitions. New rows
863
+ fade and slide in, removed rows fade out, and unchanged rows stay in place:
864
+
865
+ ```tsx
866
+ <DataView view={view} animateRows />
867
+ ```
868
+
869
+ When `animateRows` is enabled:
870
+ - Previous rows stay visible while new data loads (no skeleton flash).
871
+ - New rows enter with a slide-down fade-in animation (200ms).
872
+ - Removed rows fade out (150ms) before being removed from the DOM.
873
+ - Works in both table and card views.
874
+
875
+ This is opt-in. The default behavior (skeleton loading) is unchanged.
876
+
703
877
  ## API overview
704
878
 
705
879
  | Export | Purpose |
706
880
  |----------------------------------------------------------------------|-----------------------------------------------|
707
- | `useDataView` | Headless core owns all feature state |
881
+ | `useDataView` | Headless core, owns all feature state |
708
882
  | `useDataViewFetcher` | Convenience wrapper that manages the fetch |
709
883
  | `DataView` (+ `.Toolbar` / `.BulkActions` / `.Body` / `.Pagination`) | Orchestrator + compound parts |
710
884
  | `DataTable`, `DataCards` | The two presentations (usable standalone) |
711
885
  | `DataToolbar`, `DataPagination`, `DataBulkActions` | Standalone affordances |
712
886
  | `FilterControl` | Individual filter control (place anywhere) |
887
+ | `ViewSwitcher` | Table/Cards toggle (customizable labels) |
713
888
  | `exportCsv` | Standalone CSV export utility |
889
+ | `col` | Fluent column builder factory |
714
890
  | `createColumnHelper`, `composeCardLayout`, `resolveColumnLabel` | Column helpers |
715
891
  | `@ethanhann/mantine-dataview/url` | `windowHistoryAdapter` + serializer utilities |
716
892
 
@@ -20,5 +20,7 @@ export interface DataCardsProps<TData> extends Omit<SimpleGridProps, "children">
20
20
  enableSelection?: boolean;
21
21
  /** Skeleton cards shown while loading. It defaults to the current page size, capped at 6. */
22
22
  loadingCardCount?: number;
23
+ /** Animate card enter/exit instead of showing skeletons. Default: false. */
24
+ animateRows?: boolean;
23
25
  }
24
- export declare function DataCards<TData>({ view, slots, renderCard, fallbackRole, enableSelection, loadingCardCount, cols, ...gridProps }: DataCardsProps<TData>): string | number | bigint | boolean | Iterable<ReactNode> | Promise<string | number | bigint | boolean | import('react').ReactPortal | import('react').ReactElement<unknown, string | import('react').JSXElementConstructor<any>> | Iterable<ReactNode> | null | undefined> | import("react").JSX.Element | null | undefined;
26
+ export declare function DataCards<TData>({ view, slots, renderCard, fallbackRole, enableSelection, loadingCardCount, animateRows, cols, ...gridProps }: DataCardsProps<TData>): string | number | bigint | boolean | Iterable<ReactNode> | Promise<string | number | bigint | boolean | import('react').ReactPortal | import('react').ReactElement<unknown, string | import('react').JSXElementConstructor<any>> | Iterable<ReactNode> | null | undefined> | import("react").JSX.Element | null | undefined;
@@ -9,5 +9,9 @@ export interface DataTableProps<TData> extends Omit<TableProps, "data" | "childr
9
9
  enableSelection?: boolean;
10
10
  /** Skeleton rows shown while loading. It defaults to the current page size, capped at 8. */
11
11
  loadingRowCount?: number;
12
+ /** Disable sorting interactions while data is loading. Default: true. */
13
+ disableWhileLoading?: boolean;
14
+ /** Animate row enter/exit instead of showing skeletons. Default: false. */
15
+ animateRows?: boolean;
12
16
  }
13
- export declare function DataTable<TData>({ view, slots, enableSelection, loadingRowCount, ...tableProps }: DataTableProps<TData>): import("react").JSX.Element;
17
+ export declare function DataTable<TData>({ view, slots, enableSelection, loadingRowCount, disableWhileLoading, animateRows, ...tableProps }: DataTableProps<TData>): import("react").JSX.Element;
@@ -1,4 +1,5 @@
1
1
  import { GroupProps } from '@mantine/core';
2
+ import { ReactNode } from 'react';
2
3
  import { UseDataViewReturn } from '../../types/options';
3
4
  export interface DataToolbarProps<TData> extends Omit<GroupProps, "children"> {
4
5
  /** The `useDataView` instance to drive. */
@@ -12,5 +13,11 @@ export interface DataToolbarProps<TData> extends Omit<GroupProps, "children"> {
12
13
  showSort?: boolean;
13
14
  showVisibility?: boolean;
14
15
  showViewSwitcher?: boolean;
16
+ /** Disable search, filter, and sort controls while data is loading. Default: true. */
17
+ disableWhileLoading?: boolean;
18
+ /** Content injected at the start of the left control group (before search). */
19
+ leftSection?: ReactNode;
20
+ /** Content injected at the end of the right control group (after view switcher). */
21
+ rightSection?: ReactNode;
15
22
  }
16
- export declare function DataToolbar<TData>({ view, searchPlaceholder, filterInlineThreshold, lockSwitcherOnMobile, showSearch, showFilters, showSort, showVisibility, showViewSwitcher, ...groupProps }: DataToolbarProps<TData>): import("react").JSX.Element;
23
+ export declare function DataToolbar<TData>({ view, searchPlaceholder, filterInlineThreshold, lockSwitcherOnMobile, showSearch, showFilters, showSort, showVisibility, showViewSwitcher, disableWhileLoading, leftSection, rightSection, ...groupProps }: DataToolbarProps<TData>): import("react").JSX.Element;
@@ -1,5 +1,11 @@
1
+ import { ReactNode } from 'react';
1
2
  import { UseDataViewReturn } from '../../types/options';
2
- export declare function ViewSwitcher<TData>({ view, lockSwitcherOnMobile, }: {
3
+ export interface ViewSwitcherProps<TData> {
3
4
  view: UseDataViewReturn<TData>;
4
5
  lockSwitcherOnMobile?: boolean;
5
- }): import("react").JSX.Element | null;
6
+ /** Custom label for the table option. Default: "Table". */
7
+ tableLabel?: ReactNode;
8
+ /** Custom label for the cards option. Default: "Cards". */
9
+ cardsLabel?: ReactNode;
10
+ }
11
+ export declare function ViewSwitcher<TData>({ view, lockSwitcherOnMobile, tableLabel, cardsLabel, }: ViewSwitcherProps<TData>): import("react").JSX.Element | null;
@@ -1,2 +1,3 @@
1
1
  export { DataToolbar, type DataToolbarProps } from './DataToolbar';
2
2
  export { FilterControl } from './FilterControl';
3
+ export { ViewSwitcher, type ViewSwitcherProps } from './ViewSwitcher';
@@ -14,10 +14,12 @@ export interface DataViewProps<TData> extends Omit<StackProps, "children"> {
14
14
  renderCard?: DataCardsProps<TData>["renderCard"];
15
15
  fallbackRole?: DataCardsProps<TData>["fallbackRole"];
16
16
  lockSwitcherOnMobile?: boolean;
17
+ /** Animate row enter/exit instead of showing skeletons. Default: false. */
18
+ animateRows?: boolean;
17
19
  /** Custom composition. It defaults to Toolbar, BulkActions, Body, and Pagination. */
18
20
  children?: ReactNode;
19
21
  }
20
- export declare function DataView<TData>({ view, slots, renderCard, fallbackRole, lockSwitcherOnMobile, children, ...stackProps }: DataViewProps<TData>): import("react").JSX.Element;
22
+ export declare function DataView<TData>({ view, slots, renderCard, fallbackRole, lockSwitcherOnMobile, animateRows, children, ...stackProps }: DataViewProps<TData>): import("react").JSX.Element;
21
23
  export declare namespace DataView {
22
24
  var Toolbar: typeof DataViewToolbar;
23
25
  var BulkActions: typeof DataViewBulkActions;
@@ -8,6 +8,7 @@ export interface DataViewContextValue<TData> {
8
8
  renderCard?: DataCardsProps<TData>["renderCard"];
9
9
  fallbackRole?: ComposeCardOptions["fallbackRole"];
10
10
  lockSwitcherOnMobile?: boolean;
11
+ animateRows?: boolean;
11
12
  }
12
13
  export declare const DataViewProvider: import('react').Provider<DataViewContextValue<unknown> | null>;
13
14
  export declare function useDataViewContext<TData>(): DataViewContextValue<TData>;
@@ -0,0 +1,8 @@
1
+ import { Row } from '@tanstack/react-table';
2
+ export interface RowTransitionResult<TData> {
3
+ rows: Row<TData>[];
4
+ entering: Set<string>;
5
+ /** Increments each time the row set or order changes. Use as a CSS animation key. */
6
+ generation: number;
7
+ }
8
+ export declare function useRowTransition<TData>(currentRows: Row<TData>[], enabled: boolean): RowTransitionResult<TData>;
package/dist/index.cjs CHANGED
@@ -1,4 +1,4 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./serializer-CGmBq-Jz.cjs");let t=require("@tanstack/react-table"),n=require("@mantine/core"),r=require("react/jsx-runtime"),i=require("react"),a=require("@mantine/hooks"),o=require("@mantine/dates");require("@mantine/dates/styles.css");function s({view:e,slots:t,...i}){let{selection:a}=e;return a.count===0?null:(0,r.jsx)(n.Paper,{withBorder:!0,p:`xs`,radius:`sm`,role:`region`,"aria-label":`Bulk actions`,...i,children:(0,r.jsxs)(n.Group,{justify:`space-between`,wrap:`wrap`,gap:`sm`,children:[(0,r.jsxs)(n.Group,{gap:`sm`,children:[(0,r.jsxs)(n.Text,{size:`sm`,fw:500,children:[a.count,` selected`]}),(0,r.jsx)(n.Button,{variant:`subtle`,size:`xs`,onClick:a.clear,children:`Clear`})]}),t?.BulkActions&&(0,r.jsx)(n.Group,{gap:`xs`,children:t.BulkActions(a)})]})})}function c(e){let{meta:t,header:n}=e.columnDef;return t?.label?t.label:typeof n==`string`?n:e.id}function l(e,t,n){return t?t===`hidden`?null:t:e.accessorFn==null||n===`hidden`?null:n}function u(e,t={}){let n=t.fallbackRole??`meta`,r={title:[],subtitle:[],media:[],badge:[],meta:[]};e.getVisibleLeafColumns().forEach((e,t)=>{let i=e.columnDef.meta?.card,a=l(e,i?.role,n);a&&r[a].push({order:i?.order??t,index:t,field:{id:e.id,column:e,label:c(e),showLabel:i?.showLabel??a===`meta`}})});let i=e=>e.sort((e,t)=>e.order-t.order||e.index-t.index).map(e=>e.field);return{title:i(r.title),subtitle:i(r.subtitle),media:i(r.media),badge:i(r.badge),meta:i(r.meta)}}function d(e){e.resetColumnFilters(),e.setGlobalFilter(``)}function f({view:e,slots:t}){return t?.ErrorState?(0,r.jsx)(r.Fragment,{children:t.ErrorState({error:e.error,retry:e.refetch})}):(0,r.jsxs)(n.Stack,{align:`center`,gap:`xs`,children:[(0,r.jsx)(n.Text,{c:`red`,children:`Something went wrong.`}),(0,r.jsx)(n.Button,{variant:`light`,size:`xs`,onClick:e.refetch,children:`Retry`})]})}function p({view:e,slots:t}){let i=e.renderStatus.phase===`empty-filtered`,a=()=>d(e.table);return t?.Empty?(0,r.jsx)(r.Fragment,{children:t.Empty({filtered:i,clearFilters:a})}):i?(0,r.jsxs)(n.Stack,{align:`center`,gap:`xs`,children:[(0,r.jsx)(n.Text,{c:`dimmed`,children:`No matches.`}),(0,r.jsx)(n.Button,{variant:`subtle`,size:`xs`,onClick:a,children:`Clear filters`})]}):(0,r.jsx)(n.Text,{c:`dimmed`,children:`No results.`})}var m={base:1,sm:2,lg:3};function h({view:e,slots:t,renderCard:i,fallbackRole:a,enableSelection:o,loadingCardCount:s,cols:c=m,...l}){let{table:d,renderStatus:h}=e,v=o??d.options.enableRowSelection!==!1,y=s??Math.min(e.state.pagination.pageSize,6),b={cols:c,...l};switch(h.phase){case`loading`:return t?.LoadingCards?t.LoadingCards():(0,r.jsx)(n.SimpleGrid,{...b,children:Array.from({length:y},(e,t)=>(0,r.jsx)(n.Card,{withBorder:!0,padding:`md`,children:(0,r.jsxs)(n.Stack,{gap:`xs`,children:[(0,r.jsx)(n.Skeleton,{height:20,width:`60%`}),(0,r.jsx)(n.Skeleton,{height:12,width:`40%`}),(0,r.jsx)(n.Skeleton,{height:12})]})},t))});case`error`:return(0,r.jsx)(n.Center,{p:`xl`,children:(0,r.jsx)(f,{view:e,slots:t})});case`empty`:case`empty-filtered`:return(0,r.jsx)(n.Center,{p:`xl`,children:(0,r.jsx)(p,{view:e,slots:t})});default:{let e=u(d,{fallbackRole:a});return(0,r.jsx)(n.SimpleGrid,{...b,children:d.getRowModel().rows.map(a=>{let o=a.getIsSelected(),s={row:a,data:a.original,selected:o,toggleSelected:()=>a.toggleSelected()};if(i)return(0,r.jsx)(g,{children:i(s)},a.id);let c=(0,r.jsx)(_,{row:a,layout:e,selectionEnabled:v});return t?.Card?(0,r.jsx)(g,{children:t.Card({...s,children:c})},a.id):(0,r.jsx)(n.Card,{withBorder:!0,padding:`lg`,pos:`relative`,"data-selected":o||void 0,children:c},a.id)})})}}}function g({children:e}){return(0,r.jsx)(r.Fragment,{children:e})}function _({row:e,layout:a,selectionEnabled:o}){let s=new Map(e.getAllCells().map(e=>[e.column.id,e])),c=e=>{let n=s.get(e.id);return n?(0,t.flexRender)(n.column.columnDef.cell,n.getContext()):null};return(0,r.jsxs)(r.Fragment,{children:[o&&(0,r.jsx)(n.Checkbox,{"aria-label":`Select card`,checked:e.getIsSelected(),disabled:!e.getCanSelect(),onChange:e.getToggleSelectedHandler(),style:{position:`absolute`,top:8,right:8,zIndex:1}}),a.media.length>0&&(0,r.jsx)(n.Card.Section,{mb:`xs`,children:a.media.map(e=>(0,r.jsx)(n.Box,{children:c(e)},e.id))}),(0,r.jsxs)(n.Stack,{gap:`md`,children:[(a.title.length>0||a.subtitle.length>0)&&(0,r.jsxs)(n.Stack,{gap:4,children:[a.title.map(e=>(0,r.jsx)(n.Text,{fw:600,size:`lg`,lh:1.2,pr:o?28:0,children:c(e)},e.id)),a.subtitle.map(e=>(0,r.jsx)(n.Text,{size:`sm`,c:`dimmed`,children:c(e)},e.id))]}),a.badge.length>0&&(0,r.jsx)(n.Group,{gap:`xs`,children:a.badge.map(e=>(0,r.jsx)(i.Fragment,{children:c(e)},e.id))}),a.meta.length>0&&(0,r.jsx)(n.Stack,{gap:4,children:a.meta.map(e=>(0,r.jsxs)(n.Group,{justify:`space-between`,gap:`xs`,wrap:`nowrap`,children:[e.showLabel&&(0,r.jsx)(n.Text,{size:`sm`,c:`dimmed`,children:e.label}),(0,r.jsx)(n.Text,{size:`sm`,children:c(e)})]},e.id))})]})]})}function v({view:e,pageSizeOptions:t,showPageSize:i=!0,showRange:a=!0,pageSizeLabel:o=`Rows per page`,...s}){let{table:c}=e,{pageIndex:l,pageSize:u}=e.state.pagination,d=c.getRowCount(),f=c.getPageCount(),p=t??e.pageSizeOptions,m=d===0?0:l*u+1,h=Math.min((l+1)*u,d);return(0,r.jsxs)(n.Group,{justify:`space-between`,wrap:`wrap`,gap:`sm`,...s,children:[(0,r.jsxs)(n.Group,{gap:`sm`,wrap:`wrap`,children:[i&&(0,r.jsx)(n.Select,{"aria-label":o,data:p.map(String),value:String(u),onChange:e=>e&&c.setPageSize(Number(e)),w:80,comboboxProps:{withinPortal:!0}}),a&&(0,r.jsxs)(n.Text,{size:`sm`,c:`dimmed`,children:[m,`–`,h,` of `,d]})]}),(0,r.jsx)(n.Pagination,{value:l+1,total:Math.max(f,1),onChange:e=>c.setPageIndex(e-1),getControlProps:e=>({"aria-label":`${e} page`})})]})}function y({direction:e}){return(0,r.jsxs)(`svg`,{width:`14`,height:`14`,viewBox:`0 0 24 24`,fill:`none`,"aria-hidden":`true`,focusable:`false`,style:{flexShrink:0},children:[(0,r.jsx)(`title`,{children:`sort`}),(0,r.jsx)(`path`,{d:`M8 10l4-4 4 4`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,opacity:e===`asc`?1:.35}),(0,r.jsx)(`path`,{d:`M8 14l4 4 4-4`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,opacity:e===`desc`?1:.35})]})}function b({d:e,title:t}){return(0,r.jsxs)(`svg`,{width:`16`,height:`16`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,"aria-hidden":`true`,focusable:`false`,style:{flexShrink:0},children:[(0,r.jsx)(`title`,{children:t}),(0,r.jsx)(`path`,{d:e})]})}function x(){return(0,r.jsx)(b,{title:`search`,d:`M21 21l-4.3-4.3M11 19a8 8 0 110-16 8 8 0 010 16z`})}function S(){return(0,r.jsx)(b,{title:`filter`,d:`M3 5h18M7 12h10M10 19h4`})}function ee(){return(0,r.jsx)(b,{title:`open`,d:`M6 9l6 6 6-6`})}function C(){return(0,r.jsx)(b,{title:`close`,d:`M18 6L6 18M6 6l12 12`})}function w(){return(0,r.jsx)(b,{title:`pin left`,d:`M4 4v16M9 8h8M9 12h6M9 16h8`})}function T(){return(0,r.jsx)(b,{title:`pin right`,d:`M20 4v16M7 8h8M9 12h6M7 16h8`})}function E(e){let t=e.getIsPinned();if(t)return{position:`sticky`,[t]:t===`left`?e.getStart(`left`):e.getAfter(`right`),zIndex:1,backgroundColor:`var(--mantine-color-body)`}}function D({view:e,slots:i,enableSelection:a,loadingRowCount:o,...s}){let{table:c,renderStatus:l}=e,u=c.getVisibleLeafColumns(),d=a??c.options.enableRowSelection!==!1,m=u.length+ +!!d,h=o??Math.min(e.state.pagination.pageSize,8),g=()=>{switch(l.phase){case`loading`:return i?.LoadingTable?i.LoadingTable():(0,r.jsx)(n.Table.Tbody,{children:Array.from({length:h},(e,t)=>(0,r.jsxs)(n.Table.Tr,{children:[d&&(0,r.jsx)(n.Table.Td,{children:(0,r.jsx)(n.Skeleton,{height:16,width:16})}),u.map(e=>(0,r.jsx)(n.Table.Td,{children:(0,r.jsx)(n.Skeleton,{height:12})},e.id))]},t))});case`error`:return(0,r.jsx)(k,{colSpan:m,children:(0,r.jsx)(f,{view:e,slots:i})});case`empty`:case`empty-filtered`:return(0,r.jsx)(k,{colSpan:m,children:(0,r.jsx)(p,{view:e,slots:i})});default:return(0,r.jsx)(n.Table.Tbody,{children:c.getRowModel().rows.map(e=>{let a=(0,r.jsxs)(r.Fragment,{children:[d&&(0,r.jsx)(n.Table.Td,{children:(0,r.jsx)(n.Checkbox,{"aria-label":`Select row`,checked:e.getIsSelected(),disabled:!e.getCanSelect(),indeterminate:e.getIsSomeSelected(),onChange:e.getToggleSelectedHandler()})}),e.getVisibleCells().map(e=>{let i=e.column.columnDef.meta?.align;return(0,r.jsx)(n.Table.Td,{style:{...E(e.column),...i?{textAlign:i}:void 0},children:(0,t.flexRender)(e.column.columnDef.cell,e.getContext())},e.id)})]});return i?.Row?(0,r.jsx)(O,{children:i.Row({row:e,cells:a})},e.id):(0,r.jsx)(n.Table.Tr,{"data-selected":e.getIsSelected()||void 0,children:a},e.id)})})}};return(0,r.jsx)(`div`,{style:c.getIsSomeColumnsPinned()?{overflowX:`auto`}:void 0,children:(0,r.jsxs)(n.Table,{layout:`fixed`,...s,children:[(0,r.jsx)(n.Table.Thead,{children:c.getHeaderGroups().map(e=>(0,r.jsxs)(n.Table.Tr,{children:[d&&(0,r.jsx)(n.Table.Th,{style:{width:40},children:(0,r.jsx)(n.Checkbox,{"aria-label":`Select all rows on this page`,checked:c.getIsAllPageRowsSelected(),indeterminate:c.getIsSomePageRowsSelected()&&!c.getIsAllPageRowsSelected(),onChange:c.getToggleAllPageRowsSelectedHandler()})}),e.headers.map(e=>(0,r.jsx)(te,{header:e},e.id))]},e.id))}),g()]})})}function O({children:e}){return(0,r.jsx)(r.Fragment,{children:e})}function k({colSpan:e,children:t}){return(0,r.jsx)(n.Table.Tbody,{children:(0,r.jsx)(n.Table.Tr,{children:(0,r.jsx)(n.Table.Td,{colSpan:e,children:(0,r.jsx)(n.Center,{p:`xl`,children:t})})})})}function te({header:e}){let{column:i}=e,a=i.columnDef.meta?.align,o=i.getIsSorted(),s=i.getSortIndex(),c=s>0,l=e.isPlaceholder?null:(0,t.flexRender)(i.columnDef.header,e.getContext());return(0,r.jsx)(n.Table.Th,{style:{...E(i),...a?{textAlign:a}:void 0},"aria-sort":o===`asc`?`ascending`:o===`desc`?`descending`:void 0,children:i.getCanSort()?(0,r.jsxs)(n.UnstyledButton,{onClick:i.getToggleSortingHandler(),style:{display:`inline-flex`,alignItems:`center`,gap:4,font:`inherit`},children:[l,(0,r.jsx)(y,{direction:o}),c&&(0,r.jsx)(`span`,{role:`note`,style:{fontSize:`0.7em`,opacity:.6},"aria-label":`Sort priority ${s+1}`,children:s+1})]}):l})}var A=`(max-width: 0px)`;function j(e){let t=/^([\d.]+)(\D*)$/.exec(e.trim());if(!t)return`(max-width: ${e})`;let n=Number(t[1]),r=t[2]||`px`;return`(max-width: ${n-(r===`em`||r===`rem`?.01:.1)}${r})`}function ne(e){let t=(0,n.useMantineTheme)(),r=e?.forceCardsBelow,i=r?t.breakpoints[r]:void 0,o=(0,a.useMediaQuery)(i?j(i):A,!1);return!!i&&!!o}var M={text:e=>e==null?``:String(e),number:e=>e==null?``:new Intl.NumberFormat().format(Number(e)),currency:e=>e==null?``:new Intl.NumberFormat(void 0,{style:`currency`,currency:`USD`}).format(Number(e)),date:e=>{if(e==null)return``;let t=e instanceof Date?e:new Date(String(e));return Number.isNaN(t.getTime())?String(e):new Intl.DateTimeFormat().format(t)},boolean:e=>e==null?``:e?`Yes`:`No`};function N(e,t){if(e===`number`||e===`currency`){let n=new Intl.NumberFormat(void 0,e===`currency`?{style:`currency`,...t}:t);return e=>e==null?``:n.format(Number(e))}if(e===`date`){let e=new Intl.DateTimeFormat(void 0,t);return t=>{if(t==null)return``;let n=t instanceof Date?t:new Date(String(t));return Number.isNaN(n.getTime())?String(t):e.format(n)}}return M[e]}function P(e,t,n){let r=t??n?.[e];return r?typeof r==`function`?r:N(e,r):M[e]}function F({facet:e,value:t,onChange:i}){let a=Array.isArray(t)?t:null;return(0,r.jsx)(n.Stack,{gap:4,children:e.ranges.map(e=>{let t=a!=null&&a[0]===e.from&&a[1]===e.to;return(0,r.jsx)(n.UnstyledButton,{onClick:()=>i(t?void 0:[e.from,e.to]),style:{padding:`4px 8px`,borderRadius:4,background:t?`var(--mantine-color-blue-light)`:void 0},children:(0,r.jsxs)(n.Group,{gap:`xs`,justify:`space-between`,wrap:`nowrap`,children:[(0,r.jsx)(n.Text,{size:`sm`,children:e.label}),(0,r.jsx)(n.Badge,{size:`sm`,variant:`light`,color:e.count===0?`gray`:`blue`,children:e.count})]})},e.label)})})}function I({label:e,onClear:t}){return(0,r.jsxs)(n.Group,{justify:`space-between`,wrap:`nowrap`,children:[(0,r.jsx)(n.Text,{size:`sm`,fw:500,children:e}),(0,r.jsx)(n.Anchor,{component:`button`,type:`button`,size:`xs`,c:`dimmed`,onClick:t,children:`clear`})]})}function L(e){return e?typeof e==`string`?e:e.toISOString().split(`T`)[0]??null:null}function R(e){return Array.isArray(e)?[e[0],e[1]]:[null,null]}function z(e,t){return e.values.length>0?e.values.map(e=>({value:e.value,label:`${e.label??e.value} (${e.count})`,disabled:e.count===0})):t??[]}function B({column:e,facet:t}){let i=e.columnDef.meta?.filter;if(!i)return null;let a=c(e),s=i.placeholder??a,l=e.getFilterValue(),u=t=>e.setFilterValue(t);if(i.component){let t=i.component;return(0,r.jsx)(n.Input.Wrapper,{label:a,children:(0,r.jsx)(t,{value:l,onChange:u,column:e})})}let d=t?.type===`values`?t:void 0,f=t?.type===`ranges`?t:void 0;switch(i.variant){case`select`:return(0,r.jsx)(n.Select,{label:a,placeholder:s,clearable:!0,data:d?z(d,i.options):i.options??[],value:l??null,onChange:e=>u(e??void 0)});case`multiselect`:return(0,r.jsx)(n.MultiSelect,{label:a,placeholder:s,data:d?z(d,i.options):i.options??[],value:l??[],onChange:e=>u(e.length>0?e:void 0)});case`boolean`:{let e=l==null?`all`:l?`yes`:`no`,t=d?.values.find(e=>e.value===`true`),i=d?.values.find(e=>e.value===`false`),o=t?`Yes (${t.count})`:`Yes`,s=i?`No (${i.count})`:`No`;return(0,r.jsx)(n.Input.Wrapper,{label:a,children:(0,r.jsx)(n.SegmentedControl,{fullWidth:!0,size:`xs`,data:[{value:`all`,label:`All`},{value:`yes`,label:o},{value:`no`,label:s}],value:e,onChange:e=>{u(e===`all`?void 0:e===`yes`)}})})}case`numberRange`:{let[t,o]=R(l),s=i.min??f?.min,c=i.max??f?.max,d=s!=null&&c!=null,p=l!=null,m=f?(0,r.jsx)(F,{facet:f,value:l,onChange:u}):null,h=p?(0,r.jsx)(I,{label:a,onClear:()=>u(void 0)}):a;if(d){let l=[t??s,o??c],d=e.columnDef.meta?.dataType,f=d?P(d,e.columnDef.meta?.format,void 0):e=>String(e);return(0,r.jsx)(n.Input.Wrapper,{label:h,children:(0,r.jsxs)(n.Stack,{gap:`xs`,children:[m,(0,r.jsx)(n.RangeSlider,{min:s,max:c,step:i.step??1,value:l,onChange:([e,t])=>{u(e===s&&t===c?void 0:[e,t])},label:e=>f(e),minRange:i.step??1,"aria-label":a})]})})}if(m)return(0,r.jsx)(n.Input.Wrapper,{label:h,children:m});let g=e=>u(e[0]==null&&e[1]==null?void 0:e),_=e=>e===``||e==null?null:Number(e);return(0,r.jsx)(n.Input.Wrapper,{label:a,children:(0,r.jsxs)(n.Group,{gap:4,wrap:`nowrap`,children:[(0,r.jsx)(n.NumberInput,{"aria-label":`${a} minimum`,placeholder:`Min`,value:t??``,onChange:e=>g([_(e),o]),w:90}),(0,r.jsx)(n.NumberInput,{"aria-label":`${a} maximum`,placeholder:`Max`,value:o??``,onChange:e=>g([t,_(e)]),w:90})]})})}case`date`:return(0,r.jsx)(o.DatePickerInput,{label:a,placeholder:s,clearable:!0,popoverProps:{withinPortal:!1},value:l?new Date(l):null,onChange:e=>u(L(e)??void 0)});case`dateRange`:{let[e,t]=R(l),i=[e?new Date(e):null,t?new Date(t):null],c=l==null?a:(0,r.jsx)(I,{label:a,onClear:()=>u(void 0)});return(0,r.jsx)(n.Input.Wrapper,{label:c,children:(0,r.jsxs)(n.Stack,{gap:`xs`,children:[f&&(0,r.jsx)(F,{facet:f,value:l,onChange:u}),(0,r.jsx)(o.DatePickerInput,{type:`range`,popoverProps:{withinPortal:!1},placeholder:s,clearable:!0,value:i,onChange:([e,t])=>{let n=L(e),r=L(t);u(n==null&&r==null?void 0:[n,r])}})]})})}default:return(0,r.jsx)(n.TextInput,{label:a,placeholder:s,value:l??``,onChange:e=>u(e.currentTarget.value||void 0)})}}function V({view:e}){return e.state.columnFilters.length>0?(0,r.jsx)(n.Button,{variant:`subtle`,size:`compact-sm`,color:`gray`,leftSection:(0,r.jsx)(C,{}),onClick:()=>e.table.resetColumnFilters(),children:`Reset filters`}):null}function H(e){return e>0?`Filters (${e})`:`Filters`}function U({view:e,controls:t}){return(0,r.jsxs)(n.Stack,{gap:`sm`,style:{minWidth:240},children:[t,(0,r.jsx)(n.Group,{justify:`flex-end`,children:(0,r.jsx)(V,{view:e})})]})}function W({view:e,inlineThreshold:t}){let i=e.filterableColumns,o=(0,a.useMediaQuery)(j((0,n.useMantineTheme)().breakpoints.sm),!1),[s,{open:c,close:l}]=(0,a.useDisclosure)(!1);if(i.length===0)return null;let u=i.map(t=>(0,r.jsx)(B,{column:t,facet:e.facets[t.id]},t.id)),d=e.state.columnFilters.length;return o?(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.Button,{variant:`default`,leftSection:(0,r.jsx)(S,{}),onClick:c,children:H(d)}),(0,r.jsx)(n.Drawer,{opened:s,onClose:l,title:`Filters`,position:`bottom`,size:`auto`,children:(0,r.jsx)(U,{view:e,controls:u})})]}):i.length<=t?(0,r.jsxs)(r.Fragment,{children:[u,(0,r.jsx)(V,{view:e})]}):(0,r.jsxs)(n.Popover,{position:`bottom-start`,closeOnClickOutside:!1,children:[(0,r.jsx)(n.Popover.Target,{children:(0,r.jsx)(n.Button,{variant:`default`,leftSection:(0,r.jsx)(S,{}),children:H(d)})}),(0,r.jsx)(n.Popover.Dropdown,{children:(0,r.jsx)(U,{view:e,controls:u})})]})}function re({view:e}){let{sortableColumns:t,state:i,table:a}=e,o=i.sorting[0];return(0,r.jsxs)(n.Group,{gap:4,wrap:`nowrap`,children:[(0,r.jsx)(n.Select,{"aria-label":`Sort by`,placeholder:`Sort by`,clearable:!0,data:t.map(e=>({value:e.id,label:c(e)})),value:o?.id??null,onChange:e=>a.setSorting(e?[{id:e,desc:o?.desc??!1}]:[])}),(0,r.jsx)(n.ActionIcon,{"aria-label":`Toggle sort direction`,variant:`default`,size:`lg`,disabled:!o,onClick:()=>o&&a.setSorting([{id:o.id,desc:!o.desc}]),children:(0,r.jsx)(y,{direction:o?o.desc?`desc`:`asc`:!1})})]})}function ie({view:e,lockSwitcherOnMobile:t}){return e.isMobileForced&&t?null:(0,r.jsx)(n.SegmentedControl,{"aria-label":`View`,value:e.view,disabled:e.isMobileForced,onChange:t=>{(t===`table`||t===`cards`)&&e.setView(t)},data:[{value:`table`,label:`Table`},{value:`cards`,label:`Cards`}]})}function G({column:e}){if(!e.getCanPin())return null;let t=e.getIsPinned();return(0,r.jsxs)(n.Group,{gap:2,children:[(0,r.jsx)(n.ActionIcon,{size:`xs`,variant:t===`left`?`filled`:`subtle`,color:t===`left`?`blue`:`gray`,"aria-label":`Pin ${c(e)} left`,onClick:()=>e.pin(t===`left`?!1:`left`),children:(0,r.jsx)(w,{})}),(0,r.jsx)(n.ActionIcon,{size:`xs`,variant:t===`right`?`filled`:`subtle`,color:t===`right`?`blue`:`gray`,"aria-label":`Pin ${c(e)} right`,onClick:()=>e.pin(t===`right`?!1:`right`),children:(0,r.jsx)(T,{})})]})}function K({view:e}){let t=e.table.getAllLeafColumns().filter(e=>e.getCanHide());return t.length===0?null:(0,r.jsxs)(n.Menu,{closeOnItemClick:!1,withinPortal:!0,position:`bottom-end`,children:[(0,r.jsx)(n.Menu.Target,{children:(0,r.jsx)(n.Button,{variant:`default`,rightSection:(0,r.jsx)(ee,{}),children:`Columns`})}),(0,r.jsx)(n.Menu.Dropdown,{children:(0,r.jsx)(n.Stack,{gap:`xs`,p:`xs`,children:t.map(e=>(0,r.jsxs)(n.Group,{gap:`xs`,justify:`space-between`,wrap:`nowrap`,children:[(0,r.jsx)(n.Checkbox,{label:c(e),checked:e.getIsVisible(),onChange:t=>e.toggleVisibility(t.currentTarget.checked)}),(0,r.jsx)(G,{column:e})]},e.id))})})]})}function q({view:e,searchPlaceholder:t=`Search…`,filterInlineThreshold:i=3,lockSwitcherOnMobile:a,showSearch:o,showFilters:s,showSort:c,showVisibility:l,showViewSwitcher:u,...d}){let{table:f,state:p}=e,m=o??f.options.enableGlobalFilter!==!1,h=s??e.filterableColumns.length>0,g=c??e.sortableColumns.length>0,_=l??!0,v=u??!0;return(0,r.jsxs)(n.Group,{justify:`space-between`,wrap:`wrap`,gap:`sm`,...d,children:[(0,r.jsxs)(n.Group,{wrap:`wrap`,gap:`sm`,children:[m&&(0,r.jsx)(n.TextInput,{"aria-label":`Search`,placeholder:t,leftSection:(0,r.jsx)(x,{}),value:p.globalFilter,onChange:e=>f.setGlobalFilter(e.currentTarget.value),rightSection:p.globalFilter?(0,r.jsx)(n.CloseButton,{size:`sm`,"aria-label":`Clear search`,onClick:()=>f.setGlobalFilter(``)}):void 0}),h&&(0,r.jsx)(W,{view:e,inlineThreshold:i}),g&&(0,r.jsx)(re,{view:e})]}),(0,r.jsxs)(n.Group,{wrap:`wrap`,gap:`sm`,children:[_&&(0,r.jsx)(K,{view:e}),v&&(0,r.jsx)(ie,{view:e,lockSwitcherOnMobile:a})]})]})}var J=(0,i.createContext)(null),ae=J.Provider;function Y(){let e=(0,i.useContext)(J);if(!e)throw Error(`DataView.Toolbar / DataView.Body / DataView.Pagination must be rendered inside <DataView>.`);return e}function X({view:e,slots:t,renderCard:a,fallbackRole:o,lockSwitcherOnMobile:s,children:c,...l}){return(0,r.jsx)(ae,{value:(0,i.useMemo)(()=>({view:e,slots:t,renderCard:a,fallbackRole:o,lockSwitcherOnMobile:s}),[e,t,a,o,s]),children:(0,r.jsx)(n.Stack,{...l,children:c??(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(oe,{}),(0,r.jsx)(ce,{}),(0,r.jsx)(se,{}),(0,r.jsx)(Z,{})]})})})}function oe(e){let{view:t,lockSwitcherOnMobile:n}=Y();return(0,r.jsx)(q,{view:t,lockSwitcherOnMobile:n,...e})}function se({tableProps:e,cardsProps:t}){let{view:n,slots:i,renderCard:a,fallbackRole:o}=Y();return n.view===`cards`?(0,r.jsx)(h,{view:n,slots:i,renderCard:a,fallbackRole:o,...t}):(0,r.jsx)(D,{view:n,slots:i,...e})}function Z(e){let{view:t}=Y();return(0,r.jsx)(v,{view:t,...e})}function ce(e){let{view:t,slots:n}=Y();return(0,r.jsx)(s,{view:t,slots:n,...e})}X.Toolbar=oe,X.BulkActions=ce,X.Body=se,X.Pagination=Z;function le(e){return e.replace(/_/g,` `).replace(/([a-z])([A-Z])/g,`$1 $2`).replace(/\b\w/g,e=>e.toUpperCase())}var ue={text:{dataType:`text`,filterVariant:`text`},number:{dataType:`number`,filterVariant:`numberRange`,align:`right`},currency:{dataType:`currency`,filterVariant:`numberRange`,align:`right`},date:{dataType:`date`,filterVariant:`dateRange`},boolean:{dataType:`boolean`,filterVariant:`boolean`},select:{filterVariant:`select`},multiselect:{filterVariant:`multiselect`}},de=class{cols=[];helper=(0,t.createColumnHelper)();add(e,t,n){let r=ue[e];if(!r)throw Error(`Unknown preset: ${e}`);let i=n?.header??le(t),a=n?.align??r.align,o;if(n?.filter===!1)o=void 0;else{let e={variant:r.filterVariant,...n?.options?{options:n.options}:{}};o=n?.filter?{...e,...n.filter}:e}let s=this.helper.accessor(t,{header:i,...n?.cell?{cell:n.cell}:{},...n?.enableSorting===!1?{enableSorting:!1}:{},meta:{label:i,...r.dataType?{dataType:r.dataType}:{},...a?{align:a}:{},...o?{filter:o}:{},...n?.format?{format:n.format}:{},...n?.card?{card:{role:n.card,...n.cardOrder==null?{}:{order:n.cardOrder}}}:{}}});return this.cols.push(s),this}text(e,t){return this.add(`text`,e,t)}number(e,t){return this.add(`number`,e,t)}currency(e,t){return this.add(`currency`,e,t)}date(e,t){return this.add(`date`,e,t)}boolean(e,t){return this.add(`boolean`,e,t)}select(e,t){return this.add(`select`,e,t)}multiselect(e,t){return this.add(`multiselect`,e,t)}custom(e){return this.cols.push(e),this}build(){return this.cols}};function fe(){return new de}function Q(e){let t=e==null?``:String(e);return t.includes(`,`)||t.includes(`"`)||t.includes(`
2
- `)?`"${t.replace(/"/g,`""`)}"`:t}function pe(e,t){let{filename:n=`export.csv`,separator:r=`,`,formatted:i=!1,formatDefaults:a}=t??{},o=e.getVisibleLeafColumns().filter(e=>e.id!==`_select`),s=[o.map(e=>Q(c(e))),...e.getRowModel().rows.map(e=>o.map(t=>{let n=e.getAllCells().find(e=>e.column.id===t.id)?.getValue();return i&&t.columnDef.meta?.dataType?Q(P(t.columnDef.meta.dataType,t.columnDef.meta.format,a)(n)):Q(n)}))].map(e=>e.join(r)).join(`
3
- `),l=new Blob([s],{type:`text/csv;charset=utf-8;`}),u=URL.createObjectURL(l),d=document.createElement(`a`);d.href=u,d.download=n,d.click(),URL.revokeObjectURL(u)}function me(t){return t?{adapter:t.adapter,serializer:{...e.t,...t.serialize},include:e.r(t.include)}:null}function he(t,n,r){if(!t)return{};try{return e.n(t.adapter.read(),{serializer:t.serializer,include:t.include,getFilterMeta:r,current:n})}catch{return{}}}function ge({config:t,state:n,applyPatch:r,getFilterMeta:a}){let o=(0,i.useRef)(n);o.current=n;let s=(0,i.useRef)(r);s.current=r;let c=(0,i.useRef)(a);c.current=a;let l=(0,i.useRef)(t);l.current=t;let u=t?e.i(n,{serializer:t.serializer,include:t.include,getFilterMeta:a}):null;(0,i.useEffect)(()=>{let t=l.current;if(!t||!u)return;let n=e.a(t.adapter.read(),t.serializer,t.include);t.adapter.write({...n,...u},{replace:!0})},[u?JSON.stringify(u):``]),(0,i.useEffect)(()=>{if(!t)return;let{adapter:n,serializer:r,include:i}=t;return n.subscribe?.(()=>{let t=e.n(n.read(),{serializer:r,include:i,getFilterMeta:c.current,current:o.current});s.current(t)})},[t])}function _e(e){return e.columnFilters.length>0||e.globalFilter.trim()!==``}function ve({status:e,error:t,pageRowCount:n,state:r}){return e===`error`?{phase:`error`,error:t}:e===`loading`||e===`idle`?{phase:`loading`}:n===0?_e(r)?{phase:`empty-filtered`}:{phase:`empty`}:{phase:`ready`}}var $=300,ye=[10,25,50,100],be=10;function xe(e){return e==null?{globalFilter:$,columnFilters:$}:typeof e==`number`?{globalFilter:e,columnFilters:e}:{globalFilter:e.globalFilter??$,columnFilters:e.columnFilters??$}}function Se(e){if(e.id)return e.id;if(`accessorKey`in e&&e.accessorKey!=null)return String(e.accessorKey)}function Ce(e){let t=new Map;for(let n of e){let e=Se(n),r=n.meta?.filter;e&&r&&t.set(e,r)}return e=>t.get(e)}function we(e){return{pagination:{pageIndex:0,pageSize:e.pageSizeOptions?.[0]??be},sorting:[],columnFilters:[],globalFilter:``,rowSelection:{},columnVisibility:{},columnPinning:{left:[],right:[]},view:e.defaultView??`table`,...e.initialState}}function Te(e){let{columns:n,rows:r,rowCount:a,status:o,error:s,getRowId:c,onRequestChange:l,state:u,onStateChange:d,enableRowSelection:f,enableGlobalFilter:p=!0,debounce:m,responsive:h,formatDefaults:g,facets:_}=e,v=_??{},y=(0,i.useMemo)(()=>n.map(e=>{let t=e.meta?.dataType;if(!t||e.cell)return e;let n=P(t,e.meta?.format,g);return{...e,cell:e=>n(e.getValue())}}),[n,g]),b=(0,i.useMemo)(()=>Ce(y),[y]),x=(0,i.useMemo)(()=>me(e.urlSync),[e.urlSync]),[S,ee]=(0,i.useState)(()=>{let t=we(e);return{...t,...he(x,t,b)}}),C=(0,i.useMemo)(()=>({...S,...u}),[S,u]),w=(0,i.useRef)(C);w.current=C;let T=(0,i.useCallback)(e=>{ee(t=>({...t,...e})),d?.({...w.current,...e})},[d]);ge({config:x,state:C,applyPatch:T,getFilterMeta:b});let E=(0,i.useCallback)(()=>({...w.current.pagination,pageIndex:0}),[]),D=(0,i.useCallback)(e=>{T({pagination:(0,t.functionalUpdate)(e,w.current.pagination)})},[T]),O=(0,i.useCallback)(e=>{T({sorting:(0,t.functionalUpdate)(e,w.current.sorting),pagination:E()})},[T,E]),k=(0,i.useCallback)(e=>{T({columnFilters:(0,t.functionalUpdate)(e,w.current.columnFilters),pagination:E()})},[T,E]),te=(0,i.useCallback)(e=>{T({globalFilter:(0,t.functionalUpdate)(e,w.current.globalFilter),pagination:E()})},[T,E]),A=(0,i.useCallback)(e=>{T({rowSelection:(0,t.functionalUpdate)(e,w.current.rowSelection)})},[T]),j=(0,i.useCallback)(e=>{T({columnVisibility:(0,t.functionalUpdate)(e,w.current.columnVisibility)})},[T]),M=(0,i.useCallback)(e=>{T({columnPinning:(0,t.functionalUpdate)(e,w.current.columnPinning)})},[T]),N=(0,t.useReactTable)({data:r,columns:y,getCoreRowModel:(0,t.getCoreRowModel)(),manualPagination:!0,manualSorting:!0,manualFiltering:!0,autoResetPageIndex:!1,rowCount:a,getRowId:e=>c(e),enableRowSelection:typeof f==`function`?e=>f(e.original):f??!0,enableGlobalFilter:p,state:{pagination:C.pagination,sorting:C.sorting,columnFilters:C.columnFilters,globalFilter:C.globalFilter,rowSelection:C.rowSelection,columnVisibility:C.columnVisibility,columnPinning:C.columnPinning},onPaginationChange:D,onSortingChange:O,onColumnFiltersChange:k,onGlobalFilterChange:te,onRowSelectionChange:A,onColumnVisibilityChange:j,onColumnPinningChange:M}),F=(0,i.useMemo)(()=>({pagination:C.pagination,sorting:C.sorting,filters:C.columnFilters,globalFilter:C.globalFilter}),[C.pagination,C.sorting,C.columnFilters,C.globalFilter]),I=(0,i.useRef)(l);I.current=l;let L=(0,i.useRef)(xe(m));L.current=xe(m);let R=(0,i.useRef)(null),z=(0,i.useRef)(void 0);(0,i.useEffect)(()=>{let e=R.current,t=e===null,n=!e||e.globalFilter!==F.globalFilter,r=!e||e.filters!==F.filters,i=()=>{R.current=F,I.current?.(F)},a=0;n&&(a=Math.max(a,L.current.globalFilter)),r&&(a=Math.max(a,L.current.columnFilters));let o=!t&&(n||r)&&a>0;return clearTimeout(z.current),o?z.current=setTimeout(i,a):i(),()=>clearTimeout(z.current)},[F]);let B=(0,i.useRef)(F);B.current=F;let V=(0,i.useCallback)(()=>{I.current?.(B.current)},[]),H=(0,i.useMemo)(()=>ve({status:o,error:s,pageRowCount:r.length,state:C}),[o,s,r.length,C]),U=ne(h),W=U?`cards`:C.view,re=(0,i.useCallback)(e=>T({view:e}),[T]),ie=e.pageSizeOptions??ye,G=N.getAllColumns(),K=G.filter(e=>e.getCanSort()),q=G.filter(e=>e.columnDef.meta?.filter!=null),J=(0,i.useCallback)(()=>T({rowSelection:{}}),[T]);return{table:N,request:F,state:C,view:W,setView:re,isMobileForced:U,status:o,error:s,renderStatus:H,refetch:V,pageSizeOptions:ie,sortableColumns:K,filterableColumns:q,selection:(0,i.useMemo)(()=>{let e=C.rowSelection,t=Object.keys(e).filter(t=>e[t]),n=r.filter(t=>e[c(t)]===!0);return{count:t.length,ids:t,rows:n,clear:J}},[C.rowSelection,r,c,J]),exportCsv:(0,i.useCallback)(e=>pe(N,e),[N]),facets:v,resetFilter:(0,i.useCallback)(e=>N.getColumn(e)?.setFilterValue(void 0),[N]),resetAllFilters:(0,i.useCallback)(()=>N.resetColumnFilters(),[N])}}function Ee({fetcher:e,deps:t,...n}){let[r,a]=(0,i.useState)({rows:[],rowCount:0}),[o,s]=(0,i.useState)(`idle`),[c,l]=(0,i.useState)(void 0),u=(0,i.useRef)(e);u.current=e;let d=(0,i.useRef)(0),f=(0,i.useRef)(null),p=(0,i.useCallback)(async e=>{f.current=e;let t=++d.current;s(`loading`);try{let n=await u.current(e);t===d.current&&(a(n),l(void 0),s(`success`))}catch(e){t===d.current&&(l(e),s(`error`))}},[]),m=t?JSON.stringify(t):``,h=(0,i.useRef)(m);return(0,i.useEffect)(()=>{h.current!==m&&(h.current=m,f.current&&p(f.current))}),Te({...n,rows:r.rows,rowCount:r.rowCount,facets:r.facets,status:o,error:c,onRequestChange:p})}exports.ColumnBuilder=de,exports.DataBulkActions=s,exports.DataCards=h,exports.DataPagination=v,exports.DataTable=D,exports.DataToolbar=q,exports.DataView=X,exports.FilterControl=B,exports.col=fe,exports.composeCardLayout=u,Object.defineProperty(exports,"createColumnHelper",{enumerable:!0,get:function(){return t.createColumnHelper}}),exports.exportCsv=pe,exports.resolveColumnLabel=c,exports.useDataView=Te,exports.useDataViewContext=Y,exports.useDataViewFetcher=Ee;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./serializer-CGmBq-Jz.cjs");let t=require("@tanstack/react-table"),n=require("@mantine/core"),r=require("react/jsx-runtime"),i=require("react"),a=require("@mantine/hooks"),o=require("@mantine/dates");require("@mantine/dates/styles.css");function s({view:e,slots:t,...i}){let{selection:a}=e;return a.count===0?null:(0,r.jsx)(n.Paper,{withBorder:!0,p:`xs`,radius:`sm`,role:`region`,"aria-label":`Bulk actions`,...i,children:(0,r.jsxs)(n.Group,{justify:`space-between`,wrap:`wrap`,gap:`sm`,children:[(0,r.jsxs)(n.Group,{gap:`sm`,children:[(0,r.jsxs)(n.Text,{size:`sm`,fw:500,children:[a.count,` selected`]}),(0,r.jsx)(n.Button,{variant:`subtle`,size:`xs`,onClick:a.clear,children:`Clear`})]}),t?.BulkActions&&(0,r.jsx)(n.Group,{gap:`xs`,children:t.BulkActions(a)})]})})}function c(e){let{meta:t,header:n}=e.columnDef;return t?.label?t.label:typeof n==`string`?n:e.id}function l(e,t,n){return t?t===`hidden`?null:t:e.accessorFn==null||n===`hidden`?null:n}function u(e,t={}){let n=t.fallbackRole??`meta`,r={title:[],subtitle:[],media:[],badge:[],meta:[]};e.getVisibleLeafColumns().forEach((e,t)=>{let i=e.columnDef.meta?.card,a=l(e,i?.role,n);a&&r[a].push({order:i?.order??t,index:t,field:{id:e.id,column:e,label:c(e),showLabel:i?.showLabel??a===`meta`}})});let i=e=>e.sort((e,t)=>e.order-t.order||e.index-t.index).map(e=>e.field);return{title:i(r.title),subtitle:i(r.subtitle),media:i(r.media),badge:i(r.badge),meta:i(r.meta)}}function d(e,t){let n=(0,i.useRef)([]),r=(0,i.useRef)(!1),a=(0,i.useRef)(0),o=e.map(e=>e.id),s=new Set;if(t&&r.current){let e=n.current,t=new Set(e);if(o.length!==e.length||o.some((t,n)=>t!==e[n]))if(a.current++,o.length===e.length&&o.every(e=>t.has(e)))for(let e of o)s.add(e);else for(let e of o)t.has(e)||s.add(e)}return n.current=o,r.current=!0,{rows:e,entering:s,generation:a.current}}function f(e){e.resetColumnFilters(),e.setGlobalFilter(``)}function p({view:e,slots:t}){return t?.ErrorState?(0,r.jsx)(r.Fragment,{children:t.ErrorState({error:e.error,retry:e.refetch})}):(0,r.jsxs)(n.Stack,{align:`center`,gap:`xs`,children:[(0,r.jsx)(n.Text,{c:`red`,children:`Something went wrong.`}),(0,r.jsx)(n.Button,{variant:`light`,size:`xs`,onClick:e.refetch,children:`Retry`})]})}function m({view:e,slots:t}){let i=e.renderStatus.phase===`empty-filtered`,a=()=>f(e.table);return t?.Empty?(0,r.jsx)(r.Fragment,{children:t.Empty({filtered:i,clearFilters:a})}):i?(0,r.jsxs)(n.Stack,{align:`center`,gap:`xs`,children:[(0,r.jsx)(n.Text,{c:`dimmed`,children:`No matches.`}),(0,r.jsx)(n.Button,{variant:`subtle`,size:`xs`,onClick:a,children:`Clear filters`})]}):(0,r.jsx)(n.Text,{c:`dimmed`,children:`No results.`})}var h={base:1,sm:2,lg:3};function g({view:e,slots:t,renderCard:i,fallbackRole:a,enableSelection:o,loadingCardCount:s,animateRows:c=!1,cols:l=h,...f}){let{table:g,renderStatus:v}=e,y=o??g.options.enableRowSelection!==!1,b=s??Math.min(e.state.pagination.pageSize,6),x={cols:l,...f},S=d(g.getRowModel().rows,c),C=e=>{let o=u(g,{fallbackRole:a});return(0,r.jsx)(n.SimpleGrid,{"data-changed":c||void 0,...x,children:e.map(e=>{let a=e.getIsSelected(),s={row:e,data:e.original,selected:a,toggleSelected:()=>e.toggleSelected()},c=S.entering.has(e.id)||void 0;if(i)return(0,r.jsx)(`div`,{"data-entering":c,children:i(s)},e.id);let l=(0,r.jsx)(_,{row:e,layout:o,selectionEnabled:y});return t?.Card?(0,r.jsx)(`div`,{"data-entering":c,children:t.Card({...s,children:l})},e.id):(0,r.jsx)(n.Card,{withBorder:!0,padding:`lg`,pos:`relative`,"data-selected":a||void 0,"data-entering":c,children:l},e.id)})},S.generation)};if(c&&v.phase===`loading`&&S.rows.length>0)return C(S.rows);switch(v.phase){case`loading`:return t?.LoadingCards?t.LoadingCards():(0,r.jsx)(n.SimpleGrid,{...x,children:Array.from({length:b},(e,t)=>(0,r.jsx)(n.Card,{withBorder:!0,padding:`md`,children:(0,r.jsxs)(n.Stack,{gap:`xs`,children:[(0,r.jsx)(n.Skeleton,{height:20,width:`60%`}),(0,r.jsx)(n.Skeleton,{height:12,width:`40%`}),(0,r.jsx)(n.Skeleton,{height:12})]})},t))});case`error`:return(0,r.jsx)(n.Center,{p:`xl`,children:(0,r.jsx)(p,{view:e,slots:t})});case`empty`:case`empty-filtered`:return(0,r.jsx)(n.Center,{p:`xl`,children:(0,r.jsx)(m,{view:e,slots:t})});default:return C(S.rows)}}function _({row:e,layout:a,selectionEnabled:o}){let s=new Map(e.getAllCells().map(e=>[e.column.id,e])),c=e=>{let n=s.get(e.id);return n?(0,t.flexRender)(n.column.columnDef.cell,n.getContext()):null};return(0,r.jsxs)(r.Fragment,{children:[o&&(0,r.jsx)(n.Checkbox,{"aria-label":`Select card`,checked:e.getIsSelected(),disabled:!e.getCanSelect(),onChange:e.getToggleSelectedHandler(),style:{position:`absolute`,top:8,right:8,zIndex:1}}),a.media.length>0&&(0,r.jsx)(n.Card.Section,{mb:`xs`,children:a.media.map(e=>(0,r.jsx)(n.Box,{children:c(e)},e.id))}),(0,r.jsxs)(n.Stack,{gap:`md`,children:[(a.title.length>0||a.subtitle.length>0)&&(0,r.jsxs)(n.Stack,{gap:4,children:[a.title.map(e=>(0,r.jsx)(n.Text,{fw:600,size:`lg`,lh:1.2,pr:o?28:0,children:c(e)},e.id)),a.subtitle.map(e=>(0,r.jsx)(n.Text,{size:`sm`,c:`dimmed`,children:c(e)},e.id))]}),a.badge.length>0&&(0,r.jsx)(n.Group,{gap:`xs`,children:a.badge.map(e=>(0,r.jsx)(i.Fragment,{children:c(e)},e.id))}),a.meta.length>0&&(0,r.jsx)(n.Stack,{gap:4,children:a.meta.map(e=>(0,r.jsxs)(n.Group,{justify:`space-between`,gap:`xs`,wrap:`nowrap`,children:[e.showLabel&&(0,r.jsx)(n.Text,{size:`sm`,c:`dimmed`,children:e.label}),(0,r.jsx)(n.Text,{size:`sm`,children:c(e)})]},e.id))})]})]})}function v({view:e,pageSizeOptions:t,showPageSize:i=!0,showRange:a=!0,pageSizeLabel:o=`Rows per page`,...s}){let{table:c}=e,{pageIndex:l,pageSize:u}=e.state.pagination,d=c.getRowCount(),f=c.getPageCount(),p=t??e.pageSizeOptions,m=d===0?0:l*u+1,h=Math.min((l+1)*u,d);return(0,r.jsxs)(n.Group,{justify:`space-between`,wrap:`wrap`,gap:`sm`,...s,children:[(0,r.jsxs)(n.Group,{gap:`sm`,wrap:`wrap`,children:[i&&(0,r.jsx)(n.Select,{"aria-label":o,data:p.map(String),value:String(u),onChange:e=>e&&c.setPageSize(Number(e)),w:80,comboboxProps:{withinPortal:!0}}),a&&(0,r.jsxs)(n.Text,{size:`sm`,c:`dimmed`,children:[m,`–`,h,` of `,d]})]}),(0,r.jsx)(n.Pagination,{value:l+1,total:Math.max(f,1),onChange:e=>c.setPageIndex(e-1),getControlProps:e=>({"aria-label":`${e} page`})})]})}function y({direction:e}){return(0,r.jsxs)(`svg`,{width:`14`,height:`14`,viewBox:`0 0 24 24`,fill:`none`,"aria-hidden":`true`,focusable:`false`,style:{flexShrink:0},children:[(0,r.jsx)(`title`,{children:`sort`}),(0,r.jsx)(`path`,{d:`M8 10l4-4 4 4`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,opacity:e===`asc`?1:.35}),(0,r.jsx)(`path`,{d:`M8 14l4 4 4-4`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,opacity:e===`desc`?1:.35})]})}function b({d:e,title:t}){return(0,r.jsxs)(`svg`,{width:`16`,height:`16`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,"aria-hidden":`true`,focusable:`false`,style:{flexShrink:0},children:[(0,r.jsx)(`title`,{children:t}),(0,r.jsx)(`path`,{d:e})]})}function x(){return(0,r.jsx)(b,{title:`search`,d:`M21 21l-4.3-4.3M11 19a8 8 0 110-16 8 8 0 010 16z`})}function S(){return(0,r.jsx)(b,{title:`filter`,d:`M3 5h18M7 12h10M10 19h4`})}function C(){return(0,r.jsx)(b,{title:`open`,d:`M6 9l6 6 6-6`})}function w(){return(0,r.jsx)(b,{title:`close`,d:`M18 6L6 18M6 6l12 12`})}function T(){return(0,r.jsx)(b,{title:`pin left`,d:`M4 4v16M9 8h8M9 12h6M9 16h8`})}function ee(){return(0,r.jsx)(b,{title:`pin right`,d:`M20 4v16M7 8h8M9 12h6M7 16h8`})}function E(e){let t=e.getIsPinned();if(t)return{position:`sticky`,[t]:t===`left`?e.getStart(`left`):e.getAfter(`right`),zIndex:1,backgroundColor:`var(--mantine-color-body)`}}function D({view:e,slots:i,enableSelection:a,loadingRowCount:o,disableWhileLoading:s=!0,animateRows:c=!1,...l}){let{table:u,renderStatus:f}=e,h=s&&e.status===`loading`,g=d(u.getRowModel().rows,c),_=u.getVisibleLeafColumns(),v=a??u.options.enableRowSelection!==!1,y=_.length+ +!!v,b=o??Math.min(e.state.pagination.pageSize,8),x=e=>(0,r.jsx)(n.Table.Tbody,{"data-changed":c||void 0,children:e.map(e=>{let a=g.entering.has(e.id)||void 0,o=(0,r.jsxs)(r.Fragment,{children:[v&&(0,r.jsx)(n.Table.Td,{children:(0,r.jsx)(n.Checkbox,{"aria-label":`Select row`,checked:e.getIsSelected(),disabled:!e.getCanSelect(),indeterminate:e.getIsSomeSelected(),onChange:e.getToggleSelectedHandler()})}),e.getVisibleCells().map(e=>{let i=e.column.columnDef.meta?.align;return(0,r.jsx)(n.Table.Td,{style:{...E(e.column),...i?{textAlign:i}:void 0},children:(0,t.flexRender)(e.column.columnDef.cell,e.getContext())},e.id)})]});return i?.Row?(0,r.jsx)(O,{children:i.Row({row:e,cells:o})},e.id):(0,r.jsx)(n.Table.Tr,{"data-selected":e.getIsSelected()||void 0,"data-entering":a,children:o},e.id)})},g.generation),S=()=>{if(c&&f.phase===`loading`&&g.rows.length>0)return x(g.rows);switch(f.phase){case`loading`:return i?.LoadingTable?i.LoadingTable():(0,r.jsx)(n.Table.Tbody,{children:Array.from({length:b},(e,t)=>(0,r.jsxs)(n.Table.Tr,{children:[v&&(0,r.jsx)(n.Table.Td,{children:(0,r.jsx)(n.Skeleton,{height:16,width:16})}),_.map(e=>(0,r.jsx)(n.Table.Td,{children:(0,r.jsx)(n.Skeleton,{height:12})},e.id))]},t))});case`error`:return(0,r.jsx)(k,{colSpan:y,children:(0,r.jsx)(p,{view:e,slots:i})});case`empty`:case`empty-filtered`:return(0,r.jsx)(k,{colSpan:y,children:(0,r.jsx)(m,{view:e,slots:i})});default:return x(g.rows)}};return(0,r.jsx)(`div`,{style:u.getIsSomeColumnsPinned()?{overflowX:`auto`}:void 0,children:(0,r.jsxs)(n.Table,{layout:`fixed`,...l,children:[(0,r.jsx)(n.Table.Thead,{children:u.getHeaderGroups().map(e=>(0,r.jsxs)(n.Table.Tr,{children:[v&&(0,r.jsx)(n.Table.Th,{style:{width:40},children:(0,r.jsx)(n.Checkbox,{"aria-label":`Select all rows on this page`,checked:u.getIsAllPageRowsSelected(),indeterminate:u.getIsSomePageRowsSelected()&&!u.getIsAllPageRowsSelected(),onChange:u.getToggleAllPageRowsSelectedHandler()})}),e.headers.map(e=>(0,r.jsx)(A,{header:e,disabled:h},e.id))]},e.id))}),S()]})})}function O({children:e}){return(0,r.jsx)(r.Fragment,{children:e})}function k({colSpan:e,children:t}){return(0,r.jsx)(n.Table.Tbody,{children:(0,r.jsx)(n.Table.Tr,{children:(0,r.jsx)(n.Table.Td,{colSpan:e,children:(0,r.jsx)(n.Center,{p:`xl`,children:t})})})})}function A({header:e,disabled:i}){let{column:a}=e,o=a.columnDef.meta?.align,s=a.getIsSorted(),c=a.getSortIndex(),l=c>0,u=e.isPlaceholder?null:(0,t.flexRender)(a.columnDef.header,e.getContext()),d=a.getCanSort()&&!i;return(0,r.jsx)(n.Table.Th,{style:{...E(a),...o?{textAlign:o}:void 0},"aria-sort":s===`asc`?`ascending`:s===`desc`?`descending`:void 0,children:d?(0,r.jsxs)(n.UnstyledButton,{onClick:a.getToggleSortingHandler(),style:{display:`inline-flex`,alignItems:`center`,gap:4,font:`inherit`},children:[u,(0,r.jsx)(y,{direction:s}),l&&(0,r.jsx)(`span`,{role:`note`,style:{fontSize:`0.7em`,opacity:.6},"aria-label":`Sort priority ${c+1}`,children:c+1})]}):(0,r.jsxs)(`span`,{style:{display:`inline-flex`,alignItems:`center`,gap:4,...i?{opacity:.5}:{}},children:[u,s&&(0,r.jsx)(y,{direction:s})]})})}var te=`(max-width: 0px)`;function j(e){let t=/^([\d.]+)(\D*)$/.exec(e.trim());if(!t)return`(max-width: ${e})`;let n=Number(t[1]),r=t[2]||`px`;return`(max-width: ${n-(r===`em`||r===`rem`?.01:.1)}${r})`}function ne(e){let t=(0,n.useMantineTheme)(),r=e?.forceCardsBelow,i=r?t.breakpoints[r]:void 0,o=(0,a.useMediaQuery)(i?j(i):te,!1);return!!i&&!!o}var M={text:e=>e==null?``:String(e),number:e=>e==null?``:new Intl.NumberFormat().format(Number(e)),currency:e=>e==null?``:new Intl.NumberFormat(void 0,{style:`currency`,currency:`USD`}).format(Number(e)),date:e=>{if(e==null)return``;let t=e instanceof Date?e:new Date(String(e));return Number.isNaN(t.getTime())?String(e):new Intl.DateTimeFormat().format(t)},boolean:e=>e==null?``:e?`Yes`:`No`};function re(e,t){if(e===`number`||e===`currency`){let n=new Intl.NumberFormat(void 0,e===`currency`?{style:`currency`,...t}:t);return e=>e==null?``:n.format(Number(e))}if(e===`date`){let e=new Intl.DateTimeFormat(void 0,t);return t=>{if(t==null)return``;let n=t instanceof Date?t:new Date(String(t));return Number.isNaN(n.getTime())?String(t):e.format(n)}}return M[e]}function N(e,t,n){let r=t??n?.[e];return r?typeof r==`function`?r:re(e,r):M[e]}function P({facet:e,value:t,onChange:i}){let a=Array.isArray(t)?t:null;return(0,r.jsx)(n.Stack,{gap:4,children:e.ranges.map(e=>{let t=a!=null&&a[0]===e.from&&a[1]===e.to;return(0,r.jsx)(n.UnstyledButton,{onClick:()=>i(t?void 0:[e.from,e.to]),style:{padding:`4px 8px`,borderRadius:4,background:t?`var(--mantine-color-blue-light)`:void 0},children:(0,r.jsxs)(n.Group,{gap:`xs`,justify:`space-between`,wrap:`nowrap`,children:[(0,r.jsx)(n.Text,{size:`sm`,children:e.label}),(0,r.jsx)(n.Badge,{size:`sm`,variant:`light`,color:e.count===0?`gray`:`blue`,children:e.count})]})},e.label)})})}function F({label:e,onClear:t}){return(0,r.jsxs)(n.Group,{justify:`space-between`,wrap:`nowrap`,children:[(0,r.jsx)(n.Text,{size:`sm`,fw:500,children:e}),(0,r.jsx)(n.Anchor,{component:`button`,type:`button`,size:`xs`,c:`dimmed`,onClick:t,children:`clear`})]})}function I(e){return e?typeof e==`string`?e:e.toISOString().split(`T`)[0]??null:null}function L(e){return Array.isArray(e)?[e[0],e[1]]:[null,null]}function R(e,t){return e.values.length>0?e.values.map(e=>({value:e.value,label:`${e.label??e.value} (${e.count})`,disabled:e.count===0})):t??[]}function z({column:e,facet:t}){let i=e.columnDef.meta?.filter;if(!i)return null;let a=c(e),s=i.placeholder??a,l=e.getFilterValue(),u=t=>e.setFilterValue(t);if(i.component){let t=i.component;return(0,r.jsx)(n.Input.Wrapper,{label:a,children:(0,r.jsx)(t,{value:l,onChange:u,column:e})})}let d=t?.type===`values`?t:void 0,f=t?.type===`ranges`?t:void 0;switch(i.variant){case`select`:return(0,r.jsx)(n.Select,{label:a,placeholder:s,clearable:!0,data:d?R(d,i.options):i.options??[],value:l??null,onChange:e=>u(e??void 0)});case`multiselect`:return(0,r.jsx)(n.MultiSelect,{label:a,placeholder:s,data:d?R(d,i.options):i.options??[],value:l??[],onChange:e=>u(e.length>0?e:void 0)});case`boolean`:{let e=l==null?`all`:l?`yes`:`no`,t=d?.values.find(e=>e.value===`true`),i=d?.values.find(e=>e.value===`false`),o=t?`Yes (${t.count})`:`Yes`,s=i?`No (${i.count})`:`No`;return(0,r.jsx)(n.Input.Wrapper,{label:a,children:(0,r.jsx)(n.SegmentedControl,{fullWidth:!0,size:`xs`,data:[{value:`all`,label:`All`},{value:`yes`,label:o},{value:`no`,label:s}],value:e,onChange:e=>{u(e===`all`?void 0:e===`yes`)}})})}case`numberRange`:{let[t,o]=L(l),s=i.min??f?.min,c=i.max??f?.max,d=s!=null&&c!=null,p=l!=null,m=f?(0,r.jsx)(P,{facet:f,value:l,onChange:u}):null,h=p?(0,r.jsx)(F,{label:a,onClear:()=>u(void 0)}):a;if(d){let l=[t??s,o??c],d=e.columnDef.meta?.dataType,f=d?N(d,e.columnDef.meta?.format,void 0):e=>String(e);return(0,r.jsx)(n.Input.Wrapper,{label:h,children:(0,r.jsxs)(n.Stack,{gap:`xs`,children:[m,(0,r.jsx)(n.RangeSlider,{min:s,max:c,step:i.step??1,value:l,onChange:([e,t])=>{u(e===s&&t===c?void 0:[e,t])},label:e=>f(e),minRange:i.step??1,"aria-label":a})]})})}if(m)return(0,r.jsx)(n.Input.Wrapper,{label:h,children:m});let g=e=>u(e[0]==null&&e[1]==null?void 0:e),_=e=>e===``||e==null?null:Number(e);return(0,r.jsx)(n.Input.Wrapper,{label:a,children:(0,r.jsxs)(n.Group,{gap:4,wrap:`nowrap`,children:[(0,r.jsx)(n.NumberInput,{"aria-label":`${a} minimum`,placeholder:`Min`,value:t??``,onChange:e=>g([_(e),o]),w:90}),(0,r.jsx)(n.NumberInput,{"aria-label":`${a} maximum`,placeholder:`Max`,value:o??``,onChange:e=>g([t,_(e)]),w:90})]})})}case`date`:return(0,r.jsx)(o.DatePickerInput,{label:a,placeholder:s,clearable:!0,popoverProps:{withinPortal:!1},value:l?new Date(l):null,onChange:e=>u(I(e)??void 0)});case`dateRange`:{let[e,t]=L(l),i=[e?new Date(e):null,t?new Date(t):null],c=l==null?a:(0,r.jsx)(F,{label:a,onClear:()=>u(void 0)});return(0,r.jsx)(n.Input.Wrapper,{label:c,children:(0,r.jsxs)(n.Stack,{gap:`xs`,children:[f&&(0,r.jsx)(P,{facet:f,value:l,onChange:u}),(0,r.jsx)(o.DatePickerInput,{type:`range`,popoverProps:{withinPortal:!1},placeholder:s,clearable:!0,value:i,onChange:([e,t])=>{let n=I(e),r=I(t);u(n==null&&r==null?void 0:[n,r])}})]})})}default:return(0,r.jsx)(n.TextInput,{label:a,placeholder:s,value:l??``,onChange:e=>u(e.currentTarget.value||void 0)})}}function B({view:e}){return e.state.columnFilters.length>0?(0,r.jsx)(n.Button,{variant:`subtle`,size:`compact-sm`,color:`gray`,leftSection:(0,r.jsx)(w,{}),onClick:()=>e.table.resetColumnFilters(),children:`Reset filters`}):null}function V(e){return e>0?`Filters (${e})`:`Filters`}function H({view:e,controls:t}){return(0,r.jsxs)(n.Stack,{gap:`sm`,style:{minWidth:240},children:[t,(0,r.jsx)(n.Group,{justify:`flex-end`,children:(0,r.jsx)(B,{view:e})})]})}function U({view:e,inlineThreshold:t}){let i=e.filterableColumns,o=(0,a.useMediaQuery)(j((0,n.useMantineTheme)().breakpoints.sm),!1),[s,{open:c,close:l}]=(0,a.useDisclosure)(!1);if(i.length===0)return null;let u=i.map(t=>(0,r.jsx)(z,{column:t,facet:e.facets[t.id]},t.id)),d=e.state.columnFilters.length;return o?(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.Button,{variant:`default`,leftSection:(0,r.jsx)(S,{}),onClick:c,children:V(d)}),(0,r.jsx)(n.Drawer,{opened:s,onClose:l,title:`Filters`,position:`bottom`,size:`auto`,children:(0,r.jsx)(H,{view:e,controls:u})})]}):i.length<=t?(0,r.jsxs)(r.Fragment,{children:[u,(0,r.jsx)(B,{view:e})]}):(0,r.jsxs)(n.Popover,{position:`bottom-start`,closeOnClickOutside:!1,children:[(0,r.jsx)(n.Popover.Target,{children:(0,r.jsx)(n.Button,{variant:`default`,leftSection:(0,r.jsx)(S,{}),children:V(d)})}),(0,r.jsx)(n.Popover.Dropdown,{children:(0,r.jsx)(H,{view:e,controls:u})})]})}function ie({view:e}){let{sortableColumns:t,state:i,table:a}=e,o=i.sorting[0];return(0,r.jsxs)(n.Group,{gap:4,wrap:`nowrap`,children:[(0,r.jsx)(n.Select,{"aria-label":`Sort by`,placeholder:`Sort by`,clearable:!0,data:t.map(e=>({value:e.id,label:c(e)})),value:o?.id??null,onChange:e=>a.setSorting(e?[{id:e,desc:o?.desc??!1}]:[])}),(0,r.jsx)(n.ActionIcon,{"aria-label":`Toggle sort direction`,variant:`default`,size:`lg`,disabled:!o,onClick:()=>o&&a.setSorting([{id:o.id,desc:!o.desc}]),children:(0,r.jsx)(y,{direction:o?o.desc?`desc`:`asc`:!1})})]})}function W({view:e,lockSwitcherOnMobile:t,tableLabel:i=`Table`,cardsLabel:a=`Cards`}){return e.isMobileForced&&t?null:(0,r.jsx)(n.SegmentedControl,{"aria-label":`View`,value:e.view,disabled:e.isMobileForced,onChange:t=>{(t===`table`||t===`cards`)&&e.setView(t)},data:[{value:`table`,label:i},{value:`cards`,label:a}]})}function G({column:e}){if(!e.getCanPin())return null;let t=e.getIsPinned();return(0,r.jsxs)(n.Group,{gap:2,children:[(0,r.jsx)(n.ActionIcon,{size:`xs`,variant:t===`left`?`filled`:`subtle`,color:t===`left`?`blue`:`gray`,"aria-label":`Pin ${c(e)} left`,onClick:()=>e.pin(t===`left`?!1:`left`),children:(0,r.jsx)(T,{})}),(0,r.jsx)(n.ActionIcon,{size:`xs`,variant:t===`right`?`filled`:`subtle`,color:t===`right`?`blue`:`gray`,"aria-label":`Pin ${c(e)} right`,onClick:()=>e.pin(t===`right`?!1:`right`),children:(0,r.jsx)(ee,{})})]})}function ae({view:e}){let t=e.table.getAllLeafColumns().filter(e=>e.getCanHide());return t.length===0?null:(0,r.jsxs)(n.Menu,{closeOnItemClick:!1,withinPortal:!0,position:`bottom-end`,children:[(0,r.jsx)(n.Menu.Target,{children:(0,r.jsx)(n.Button,{variant:`default`,rightSection:(0,r.jsx)(C,{}),children:`Columns`})}),(0,r.jsx)(n.Menu.Dropdown,{children:(0,r.jsx)(n.Stack,{gap:`xs`,p:`xs`,children:t.map(e=>(0,r.jsxs)(n.Group,{gap:`xs`,justify:`space-between`,wrap:`nowrap`,children:[(0,r.jsx)(n.Checkbox,{label:c(e),checked:e.getIsVisible(),onChange:t=>e.toggleVisibility(t.currentTarget.checked)}),(0,r.jsx)(G,{column:e})]},e.id))})})]})}function K({view:e,searchPlaceholder:t=`Search…`,filterInlineThreshold:i=3,lockSwitcherOnMobile:a,showSearch:o,showFilters:s,showSort:c,showVisibility:l,showViewSwitcher:u,disableWhileLoading:d=!0,leftSection:f,rightSection:p,...m}){let{table:h,state:g}=e,_=d&&e.status===`loading`,v=o??h.options.enableGlobalFilter!==!1,y=s??e.filterableColumns.length>0,b=c??e.sortableColumns.length>0,S=l??!0,C=u??!0;return(0,r.jsxs)(n.Group,{justify:`space-between`,wrap:`wrap`,gap:`sm`,...m,children:[(0,r.jsxs)(n.Group,{wrap:`wrap`,gap:`sm`,children:[f,v&&(0,r.jsx)(n.TextInput,{"aria-label":`Search`,placeholder:t,leftSection:(0,r.jsx)(x,{}),value:g.globalFilter,onChange:e=>h.setGlobalFilter(e.currentTarget.value),rightSection:g.globalFilter?(0,r.jsx)(n.CloseButton,{size:`sm`,"aria-label":`Clear search`,onClick:()=>h.setGlobalFilter(``)}):void 0}),(0,r.jsxs)(`fieldset`,{disabled:_,style:{display:`contents`,border:`none`,padding:0,margin:0},children:[y&&(0,r.jsx)(U,{view:e,inlineThreshold:i}),b&&(0,r.jsx)(ie,{view:e})]})]}),(0,r.jsx)(`fieldset`,{disabled:_,style:{display:`contents`,border:`none`,padding:0,margin:0},children:(0,r.jsxs)(n.Group,{wrap:`wrap`,gap:`sm`,children:[S&&(0,r.jsx)(ae,{view:e}),C&&(0,r.jsx)(W,{view:e,lockSwitcherOnMobile:a}),p]})})]})}var q=(0,i.createContext)(null),J=q.Provider;function Y(){let e=(0,i.useContext)(q);if(!e)throw Error(`DataView.Toolbar / DataView.Body / DataView.Pagination must be rendered inside <DataView>.`);return e}function X({view:e,slots:t,renderCard:a,fallbackRole:o,lockSwitcherOnMobile:s,animateRows:c,children:l,...u}){return(0,r.jsx)(J,{value:(0,i.useMemo)(()=>({view:e,slots:t,renderCard:a,fallbackRole:o,lockSwitcherOnMobile:s,animateRows:c}),[e,t,a,o,s,c]),children:(0,r.jsx)(n.Stack,{...u,children:l??(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(Z,{}),(0,r.jsx)(ce,{}),(0,r.jsx)(oe,{}),(0,r.jsx)(se,{})]})})})}function Z(e){let{view:t,lockSwitcherOnMobile:n}=Y();return(0,r.jsx)(K,{view:t,lockSwitcherOnMobile:n,...e})}function oe({tableProps:e,cardsProps:t}){let{view:n,slots:i,renderCard:a,fallbackRole:o,animateRows:s}=Y();return n.view===`cards`?(0,r.jsx)(g,{view:n,slots:i,renderCard:a,fallbackRole:o,animateRows:s,...t}):(0,r.jsx)(D,{view:n,slots:i,animateRows:s,...e})}function se(e){let{view:t}=Y();return(0,r.jsx)(v,{view:t,...e})}function ce(e){let{view:t,slots:n}=Y();return(0,r.jsx)(s,{view:t,slots:n,...e})}X.Toolbar=Z,X.BulkActions=ce,X.Body=oe,X.Pagination=se;function le(e){return e.replace(/_/g,` `).replace(/([a-z])([A-Z])/g,`$1 $2`).replace(/\b\w/g,e=>e.toUpperCase())}var ue={text:{dataType:`text`,filterVariant:`text`},number:{dataType:`number`,filterVariant:`numberRange`,align:`right`},currency:{dataType:`currency`,filterVariant:`numberRange`,align:`right`},date:{dataType:`date`,filterVariant:`dateRange`},boolean:{dataType:`boolean`,filterVariant:`boolean`},select:{filterVariant:`select`},multiselect:{filterVariant:`multiselect`}},de=class{cols=[];helper=(0,t.createColumnHelper)();add(e,t,n){let r=ue[e];if(!r)throw Error(`Unknown preset: ${e}`);let i=n?.header??le(t),a=n?.align??r.align,o;if(n?.filter===!1)o=void 0;else{let e={variant:r.filterVariant,...n?.options?{options:n.options}:{}};o=n?.filter?{...e,...n.filter}:e}let s=this.helper.accessor(t,{header:i,...n?.cell?{cell:n.cell}:{},...n?.enableSorting===!1?{enableSorting:!1}:{},meta:{label:i,...r.dataType?{dataType:r.dataType}:{},...a?{align:a}:{},...o?{filter:o}:{},...n?.format?{format:n.format}:{},...n?.card?{card:{role:n.card,...n.cardOrder==null?{}:{order:n.cardOrder}}}:{}}});return this.cols.push(s),this}text(e,t){return this.add(`text`,e,t)}number(e,t){return this.add(`number`,e,t)}currency(e,t){return this.add(`currency`,e,t)}date(e,t){return this.add(`date`,e,t)}boolean(e,t){return this.add(`boolean`,e,t)}select(e,t){return this.add(`select`,e,t)}multiselect(e,t){return this.add(`multiselect`,e,t)}custom(e){return this.cols.push(e),this}build(){return this.cols}};function fe(){return new de}function Q(e){let t=e==null?``:String(e);return t.includes(`,`)||t.includes(`"`)||t.includes(`
2
+ `)?`"${t.replace(/"/g,`""`)}"`:t}function pe(e,t){let{filename:n=`export.csv`,separator:r=`,`,formatted:i=!1,formatDefaults:a}=t??{},o=e.getVisibleLeafColumns().filter(e=>e.id!==`_select`),s=[o.map(e=>Q(c(e))),...e.getRowModel().rows.map(e=>o.map(t=>{let n=e.getAllCells().find(e=>e.column.id===t.id)?.getValue();return i&&t.columnDef.meta?.dataType?Q(N(t.columnDef.meta.dataType,t.columnDef.meta.format,a)(n)):Q(n)}))].map(e=>e.join(r)).join(`
3
+ `),l=new Blob([s],{type:`text/csv;charset=utf-8;`}),u=URL.createObjectURL(l),d=document.createElement(`a`);d.href=u,d.download=n,d.click(),URL.revokeObjectURL(u)}function me(t){return t?{adapter:t.adapter,serializer:{...e.t,...t.serialize},include:e.r(t.include)}:null}function he(t,n,r){if(!t)return{};try{return e.n(t.adapter.read(),{serializer:t.serializer,include:t.include,getFilterMeta:r,current:n})}catch{return{}}}function ge({config:t,state:n,applyPatch:r,getFilterMeta:a}){let o=(0,i.useRef)(n);o.current=n;let s=(0,i.useRef)(r);s.current=r;let c=(0,i.useRef)(a);c.current=a;let l=(0,i.useRef)(t);l.current=t;let u=t?e.i(n,{serializer:t.serializer,include:t.include,getFilterMeta:a}):null;(0,i.useEffect)(()=>{let t=l.current;if(!t||!u)return;let n=e.a(t.adapter.read(),t.serializer,t.include);t.adapter.write({...n,...u},{replace:!0})},[u?JSON.stringify(u):``]),(0,i.useEffect)(()=>{if(!t)return;let{adapter:n,serializer:r,include:i}=t;return n.subscribe?.(()=>{let t=e.n(n.read(),{serializer:r,include:i,getFilterMeta:c.current,current:o.current});s.current(t)})},[t])}function _e(e){return e.columnFilters.length>0||e.globalFilter.trim()!==``}function ve({status:e,error:t,pageRowCount:n,state:r}){return e===`error`?{phase:`error`,error:t}:e===`loading`||e===`idle`?{phase:`loading`}:n===0?_e(r)?{phase:`empty-filtered`}:{phase:`empty`}:{phase:`ready`}}var $=300,ye=[10,25,50,100],be=10;function xe(e){return e==null?{globalFilter:$,columnFilters:$}:typeof e==`number`?{globalFilter:e,columnFilters:e}:{globalFilter:e.globalFilter??$,columnFilters:e.columnFilters??$}}function Se(e){if(e.id)return e.id;if(`accessorKey`in e&&e.accessorKey!=null)return String(e.accessorKey)}function Ce(e){let t=new Map;for(let n of e){let e=Se(n),r=n.meta?.filter;e&&r&&t.set(e,r)}return e=>t.get(e)}function we(e){return{pagination:{pageIndex:0,pageSize:e.pageSizeOptions?.[0]??be},sorting:[],columnFilters:[],globalFilter:``,rowSelection:{},columnVisibility:{},columnPinning:{left:[],right:[]},view:e.defaultView??`table`,...e.initialState}}function Te(e){let{columns:n,rows:r,rowCount:a,status:o,error:s,getRowId:c,onRequestChange:l,state:u,onStateChange:d,enableRowSelection:f,enableGlobalFilter:p=!0,debounce:m,responsive:h,formatDefaults:g,facets:_,params:v}=e,y=_??{},b=v?JSON.stringify(v):``,x=v??{},S=(0,i.useMemo)(()=>n.map(e=>{let t=e.meta?.dataType;if(!t||e.cell)return e;let n=N(t,e.meta?.format,g);return{...e,cell:e=>n(e.getValue())}}),[n,g]),C=(0,i.useMemo)(()=>Ce(S),[S]),w=(0,i.useMemo)(()=>me(e.urlSync),[e.urlSync]),[T,ee]=(0,i.useState)(()=>{let t=we(e);return{...t,...he(w,t,C)}}),E=(0,i.useMemo)(()=>({...T,...u}),[T,u]),D=(0,i.useRef)(E);D.current=E;let O=(0,i.useCallback)(e=>{ee(t=>({...t,...e})),d?.({...D.current,...e})},[d]);ge({config:w,state:E,applyPatch:O,getFilterMeta:C});let k=(0,i.useCallback)(()=>({...D.current.pagination,pageIndex:0}),[]),A=(0,i.useRef)(b);(0,i.useEffect)(()=>{A.current!==b&&(A.current=b,O({pagination:k()}))});let te=(0,i.useCallback)(e=>{O({pagination:(0,t.functionalUpdate)(e,D.current.pagination)})},[O]),j=(0,i.useCallback)(e=>{O({sorting:(0,t.functionalUpdate)(e,D.current.sorting),pagination:k()})},[O,k]),M=(0,i.useCallback)(e=>{O({columnFilters:(0,t.functionalUpdate)(e,D.current.columnFilters),pagination:k()})},[O,k]),re=(0,i.useCallback)(e=>{O({globalFilter:(0,t.functionalUpdate)(e,D.current.globalFilter),pagination:k()})},[O,k]),P=(0,i.useCallback)(e=>{O({rowSelection:(0,t.functionalUpdate)(e,D.current.rowSelection)})},[O]),F=(0,i.useCallback)(e=>{O({columnVisibility:(0,t.functionalUpdate)(e,D.current.columnVisibility)})},[O]),I=(0,i.useCallback)(e=>{O({columnPinning:(0,t.functionalUpdate)(e,D.current.columnPinning)})},[O]),L=(0,t.useReactTable)({data:r,columns:S,getCoreRowModel:(0,t.getCoreRowModel)(),manualPagination:!0,manualSorting:!0,manualFiltering:!0,autoResetPageIndex:!1,rowCount:a,getRowId:e=>c(e),enableRowSelection:typeof f==`function`?e=>f(e.original):f??!0,enableGlobalFilter:p,state:{pagination:E.pagination,sorting:E.sorting,columnFilters:E.columnFilters,globalFilter:E.globalFilter,rowSelection:E.rowSelection,columnVisibility:E.columnVisibility,columnPinning:E.columnPinning},onPaginationChange:te,onSortingChange:j,onColumnFiltersChange:M,onGlobalFilterChange:re,onRowSelectionChange:P,onColumnVisibilityChange:F,onColumnPinningChange:I}),R=(0,i.useMemo)(()=>({pagination:E.pagination,sorting:E.sorting,filters:E.columnFilters,globalFilter:E.globalFilter,params:x}),[E.pagination,E.sorting,E.columnFilters,E.globalFilter,b]),z=(0,i.useRef)(l);z.current=l;let B=(0,i.useRef)(xe(m));B.current=xe(m);let V=(0,i.useRef)(null),H=(0,i.useRef)(void 0);(0,i.useEffect)(()=>{let e=V.current,t=e===null,n=!e||e.globalFilter!==R.globalFilter,r=!e||e.filters!==R.filters,i=()=>{V.current=R,z.current?.(R)},a=0;n&&(a=Math.max(a,B.current.globalFilter)),r&&(a=Math.max(a,B.current.columnFilters));let o=!t&&(n||r)&&a>0;return clearTimeout(H.current),o?H.current=setTimeout(i,a):i(),()=>clearTimeout(H.current)},[R]);let U=(0,i.useRef)(R);U.current=R;let ie=(0,i.useCallback)(()=>{z.current?.(U.current)},[]),W=(0,i.useMemo)(()=>ve({status:o,error:s,pageRowCount:r.length,state:E}),[o,s,r.length,E]),G=ne(h),ae=G?`cards`:E.view,K=(0,i.useCallback)(e=>O({view:e}),[O]),q=e.pageSizeOptions??ye,J=L.getAllColumns(),Y=J.filter(e=>e.getCanSort()),X=J.filter(e=>e.columnDef.meta?.filter!=null),Z=(0,i.useCallback)(()=>O({rowSelection:{}}),[O]);return{table:L,request:R,state:E,view:ae,setView:K,isMobileForced:G,status:o,error:s,renderStatus:W,refetch:ie,pageSizeOptions:q,sortableColumns:Y,filterableColumns:X,selection:(0,i.useMemo)(()=>{let e=E.rowSelection,t=Object.keys(e).filter(t=>e[t]),n=r.filter(t=>e[c(t)]===!0);return{count:t.length,ids:t,rows:n,clear:Z}},[E.rowSelection,r,c,Z]),exportCsv:(0,i.useCallback)(e=>pe(L,e),[L]),facets:y,resetFilter:(0,i.useCallback)(e=>L.getColumn(e)?.setFilterValue(void 0),[L]),resetAllFilters:(0,i.useCallback)(()=>L.resetColumnFilters(),[L])}}function Ee({fetcher:e,deps:t,...n}){let[r,a]=(0,i.useState)({rows:[],rowCount:0}),[o,s]=(0,i.useState)(`idle`),[c,l]=(0,i.useState)(void 0),u=(0,i.useRef)(e);u.current=e;let d=(0,i.useRef)(0),f=(0,i.useRef)(null),p=(0,i.useCallback)(async e=>{f.current=e;let t=++d.current;s(`loading`);try{let n=await u.current(e);t===d.current&&(a(n),l(void 0),s(`success`))}catch(e){t===d.current&&(l(e),s(`error`))}},[]),m=t?JSON.stringify(t):``,h=(0,i.useRef)(m);return(0,i.useEffect)(()=>{h.current!==m&&(h.current=m,f.current&&p(f.current))}),Te({...n,rows:r.rows,rowCount:r.rowCount,facets:r.facets,status:o,error:c,onRequestChange:p})}exports.ColumnBuilder=de,exports.DataBulkActions=s,exports.DataCards=g,exports.DataPagination=v,exports.DataTable=D,exports.DataToolbar=K,exports.DataView=X,exports.FilterControl=z,exports.ViewSwitcher=W,exports.col=fe,exports.composeCardLayout=u,Object.defineProperty(exports,"createColumnHelper",{enumerable:!0,get:function(){return t.createColumnHelper}}),exports.exportCsv=pe,exports.resolveColumnLabel=c,exports.useDataView=Te,exports.useDataViewContext=Y,exports.useDataViewFetcher=Ee;
4
4
  //# sourceMappingURL=index.cjs.map