better-table 1.2.0 → 1.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 +90 -120
- package/dist/better-table.cjs.js +1 -1
- package/dist/better-table.cjs.js.map +1 -1
- package/dist/better-table.css +1 -1
- package/dist/better-table.es.js +1643 -1331
- package/dist/better-table.es.js.map +1 -1
- package/dist/components/BetterTable/__tests__/helpers/test-data.d.ts +96 -96
- package/dist/components/BetterTable/components/TableExpandedRow.d.ts +8 -0
- package/dist/components/BetterTable/components/TableRow.d.ts +2 -1
- package/dist/components/BetterTable/components/TableVirtualBody.d.ts +10 -0
- package/dist/components/BetterTable/components/index.d.ts +2 -0
- package/dist/components/BetterTable/constants.d.ts +20 -0
- package/dist/components/BetterTable/context/TableContext.d.ts +15 -80
- package/dist/components/BetterTable/context/TableDataContext.d.ts +18 -0
- package/dist/components/BetterTable/context/TableFilterContext.d.ts +17 -0
- package/dist/components/BetterTable/context/TablePaginationContext.d.ts +19 -0
- package/dist/components/BetterTable/context/TableSelectionContext.d.ts +15 -0
- package/dist/components/BetterTable/context/TableSortContext.d.ts +10 -0
- package/dist/components/BetterTable/context/TableUIContext.d.ts +33 -0
- package/dist/components/BetterTable/context/index.d.ts +14 -2
- package/dist/components/BetterTable/hooks/index.d.ts +4 -0
- package/dist/components/BetterTable/hooks/useColumnResize.d.ts +23 -0
- package/dist/components/BetterTable/hooks/useExpandableRows.d.ts +19 -0
- package/dist/components/BetterTable/hooks/useFocusTrap.d.ts +6 -0
- package/dist/components/BetterTable/hooks/useTableFilter.d.ts +3 -1
- package/dist/components/BetterTable/hooks/useTablePagination.d.ts +3 -1
- package/dist/components/BetterTable/hooks/useTableSearch.d.ts +3 -1
- package/dist/components/BetterTable/hooks/useTableSort.d.ts +3 -1
- package/dist/components/BetterTable/hooks/useVirtualization.d.ts +25 -0
- package/dist/components/BetterTable/index.d.ts +2 -2
- package/dist/components/BetterTable/types.d.ts +58 -0
- package/dist/index.d.ts +4 -4
- package/package.json +19 -14
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { Column, TableData } from '../types';
|
|
2
|
+
interface UseColumnResizeOptions<T extends TableData> {
|
|
3
|
+
columns: Column<T>[];
|
|
4
|
+
enabled: boolean;
|
|
5
|
+
minWidth?: number;
|
|
6
|
+
maxWidth?: number;
|
|
7
|
+
onColumnResize?: (columnId: string, width: number) => void;
|
|
8
|
+
tableRef: React.RefObject<HTMLTableElement | null>;
|
|
9
|
+
}
|
|
10
|
+
interface UseColumnResizeReturn {
|
|
11
|
+
/** Current column widths (only populated for resized columns) */
|
|
12
|
+
columnWidths: Record<string, number>;
|
|
13
|
+
/** Whether a resize is currently in progress */
|
|
14
|
+
isResizing: boolean;
|
|
15
|
+
/** Start resizing a column */
|
|
16
|
+
startResize: (columnId: string, startX: number) => void;
|
|
17
|
+
/** Get effective width for a column (resized width or initial width) */
|
|
18
|
+
getColumnWidth: (columnId: string) => number | undefined;
|
|
19
|
+
/** Reset all column widths to initial */
|
|
20
|
+
resetColumnWidths: () => void;
|
|
21
|
+
}
|
|
22
|
+
export declare function useColumnResize<T extends TableData>({ columns, enabled, minWidth, maxWidth, onColumnResize, tableRef, }: UseColumnResizeOptions<T>): UseColumnResizeReturn;
|
|
23
|
+
export {};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export interface UseExpandableRowsOptions {
|
|
2
|
+
/** Controlled expanded row keys */
|
|
3
|
+
controlledExpandedRows?: string[];
|
|
4
|
+
/** Callback when expanded rows change */
|
|
5
|
+
onExpandChange?: (expandedRows: string[]) => void;
|
|
6
|
+
/** Only allow one row expanded at a time */
|
|
7
|
+
accordion?: boolean;
|
|
8
|
+
}
|
|
9
|
+
export interface UseExpandableRowsReturn {
|
|
10
|
+
/** Set of currently expanded row keys */
|
|
11
|
+
expandedRowKeys: Set<string>;
|
|
12
|
+
/** Check if a row is expanded */
|
|
13
|
+
isExpanded: (rowKey: string) => boolean;
|
|
14
|
+
/** Toggle a row's expanded state */
|
|
15
|
+
toggleExpand: (rowKey: string) => void;
|
|
16
|
+
/** Collapse all rows */
|
|
17
|
+
collapseAll: () => void;
|
|
18
|
+
}
|
|
19
|
+
export declare function useExpandableRows({ controlledExpandedRows, onExpandChange, accordion, }: UseExpandableRowsOptions): UseExpandableRowsReturn;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Traps focus within a container element while active.
|
|
3
|
+
* On activate: stores previously focused element and focuses first focusable child.
|
|
4
|
+
* On deactivate: restores focus to the previously focused element.
|
|
5
|
+
*/
|
|
6
|
+
export declare function useFocusTrap(containerRef: React.RefObject<HTMLElement | null>, isActive: boolean): void;
|
|
@@ -5,6 +5,8 @@ interface UseTableFilterOptions<T extends TableData> {
|
|
|
5
5
|
initialFilters?: FilterState;
|
|
6
6
|
controlledFilters?: FilterState;
|
|
7
7
|
onFilterChange?: (filters: FilterState) => void;
|
|
8
|
+
/** When true, skip client-side filtering — data is returned as-is */
|
|
9
|
+
manual?: boolean;
|
|
8
10
|
}
|
|
9
11
|
interface UseTableFilterReturn<T extends TableData> {
|
|
10
12
|
filteredData: T[];
|
|
@@ -13,5 +15,5 @@ interface UseTableFilterReturn<T extends TableData> {
|
|
|
13
15
|
clearFilters: () => void;
|
|
14
16
|
clearFilter: (columnId: string) => void;
|
|
15
17
|
}
|
|
16
|
-
export declare function useTableFilter<T extends TableData>({ data, columns, initialFilters, controlledFilters, onFilterChange, }: UseTableFilterOptions<T>): UseTableFilterReturn<T>;
|
|
18
|
+
export declare function useTableFilter<T extends TableData>({ data, columns, initialFilters, controlledFilters, onFilterChange, manual, }: UseTableFilterOptions<T>): UseTableFilterReturn<T>;
|
|
17
19
|
export {};
|
|
@@ -3,6 +3,8 @@ interface UseTablePaginationOptions<T extends TableData> {
|
|
|
3
3
|
data: T[];
|
|
4
4
|
config?: PaginationConfig | false;
|
|
5
5
|
onPageChange?: (page: number, pageSize: number) => void;
|
|
6
|
+
/** When true, skip client-side pagination — data represents the current page from the server */
|
|
7
|
+
manual?: boolean;
|
|
6
8
|
}
|
|
7
9
|
interface UseTablePaginationReturn<T extends TableData> {
|
|
8
10
|
paginatedData: T[];
|
|
@@ -19,5 +21,5 @@ interface UseTablePaginationReturn<T extends TableData> {
|
|
|
19
21
|
startIndex: number;
|
|
20
22
|
endIndex: number;
|
|
21
23
|
}
|
|
22
|
-
export declare function useTablePagination<T extends TableData>({ data, config, onPageChange, }: UseTablePaginationOptions<T>): UseTablePaginationReturn<T>;
|
|
24
|
+
export declare function useTablePagination<T extends TableData>({ data, config, onPageChange, manual, }: UseTablePaginationOptions<T>): UseTablePaginationReturn<T>;
|
|
23
25
|
export {};
|
|
@@ -7,6 +7,8 @@ interface UseTableSearchOptions<T extends TableData> {
|
|
|
7
7
|
controlledValue?: string;
|
|
8
8
|
onSearchChange?: (value: string) => void;
|
|
9
9
|
debounceMs?: number;
|
|
10
|
+
/** When true, skip client-side search — data is returned as-is */
|
|
11
|
+
manual?: boolean;
|
|
10
12
|
}
|
|
11
13
|
interface UseTableSearchReturn<T extends TableData> {
|
|
12
14
|
searchedData: T[];
|
|
@@ -14,5 +16,5 @@ interface UseTableSearchReturn<T extends TableData> {
|
|
|
14
16
|
handleSearch: (value: string) => void;
|
|
15
17
|
clearSearch: () => void;
|
|
16
18
|
}
|
|
17
|
-
export declare function useTableSearch<T extends TableData>({ data, columns, searchColumns, initialValue, controlledValue, onSearchChange, debounceMs, }: UseTableSearchOptions<T>): UseTableSearchReturn<T>;
|
|
19
|
+
export declare function useTableSearch<T extends TableData>({ data, columns, searchColumns, initialValue, controlledValue, onSearchChange, debounceMs, manual, }: UseTableSearchOptions<T>): UseTableSearchReturn<T>;
|
|
18
20
|
export {};
|
|
@@ -10,6 +10,8 @@ interface UseTableSortOptions<T extends TableData> {
|
|
|
10
10
|
controlledMultiSort?: MultiSortState;
|
|
11
11
|
/** Callback when multi-sort changes */
|
|
12
12
|
onMultiSortChange?: (sorts: MultiSortState) => void;
|
|
13
|
+
/** When true, skip client-side sorting — data is returned as-is */
|
|
14
|
+
manual?: boolean;
|
|
13
15
|
}
|
|
14
16
|
interface UseTableSortReturn<T extends TableData> {
|
|
15
17
|
sortedData: T[];
|
|
@@ -21,5 +23,5 @@ interface UseTableSortReturn<T extends TableData> {
|
|
|
21
23
|
/** Whether multi-sort is enabled */
|
|
22
24
|
isMultiSort: boolean;
|
|
23
25
|
}
|
|
24
|
-
export declare function useTableSort<T extends TableData>({ data, initialSort, controlledSort, onSortChange, multiSort, controlledMultiSort, onMultiSortChange, }: UseTableSortOptions<T>): UseTableSortReturn<T>;
|
|
26
|
+
export declare function useTableSort<T extends TableData>({ data, initialSort, controlledSort, onSortChange, multiSort, controlledMultiSort, onMultiSortChange, manual, }: UseTableSortOptions<T>): UseTableSortReturn<T>;
|
|
25
27
|
export {};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { RefObject } from 'react';
|
|
2
|
+
interface UseVirtualizationOptions {
|
|
3
|
+
/** Ref to the scrollable container */
|
|
4
|
+
containerRef: RefObject<HTMLElement | null>;
|
|
5
|
+
/** Total number of items */
|
|
6
|
+
itemCount: number;
|
|
7
|
+
/** Fixed height per row in pixels */
|
|
8
|
+
rowHeight: number;
|
|
9
|
+
/** Extra rows to render above/below the viewport */
|
|
10
|
+
buffer: number;
|
|
11
|
+
/** Whether virtualization is active */
|
|
12
|
+
enabled: boolean;
|
|
13
|
+
}
|
|
14
|
+
interface UseVirtualizationResult {
|
|
15
|
+
/** Total height of the virtualized content (px) */
|
|
16
|
+
totalHeight: number;
|
|
17
|
+
/** Index of the first row to render */
|
|
18
|
+
startIndex: number;
|
|
19
|
+
/** Index of the last row to render (exclusive) */
|
|
20
|
+
endIndex: number;
|
|
21
|
+
/** Top offset for the first rendered row (px) */
|
|
22
|
+
offsetTop: number;
|
|
23
|
+
}
|
|
24
|
+
export declare function useVirtualization({ containerRef, itemCount, rowHeight, buffer, enabled, }: UseVirtualizationOptions): UseVirtualizationResult;
|
|
25
|
+
export {};
|
|
@@ -7,8 +7,8 @@ export { useTablePagination } from './hooks/useTablePagination';
|
|
|
7
7
|
export { useTableSelection } from './hooks/useTableSelection';
|
|
8
8
|
export { useTableSearch } from './hooks/useTableSearch';
|
|
9
9
|
export { useColumnVisibility } from './hooks/useColumnVisibility';
|
|
10
|
-
export {
|
|
11
|
-
export type {
|
|
10
|
+
export { TableProvider, useTableData, useTableSortContext, useTableFilterContext, useTableSelectionContext, useTablePaginationContext, useTableUI, } from './context';
|
|
11
|
+
export type { TableProviderProps, TableDataContextValue, TableSortContextValue, TableFilterContextValue, TableSelectionContextValue, TablePaginationContextValue, TableUIContextValue, } from './context';
|
|
12
12
|
export { getValueFromPath } from './utils/getValueFromPath';
|
|
13
13
|
export { sortData } from './utils/sortData';
|
|
14
14
|
export { filterData, searchData } from './utils/filterData';
|
|
@@ -26,6 +26,12 @@ export interface Column<T extends TableData = TableData> {
|
|
|
26
26
|
filterable?: boolean;
|
|
27
27
|
/** Ancho de columna */
|
|
28
28
|
width?: string | number;
|
|
29
|
+
/** Ancho mínimo de columna en px (default: 50) */
|
|
30
|
+
minWidth?: number;
|
|
31
|
+
/** Ancho máximo de columna en px */
|
|
32
|
+
maxWidth?: number;
|
|
33
|
+
/** Whether this column can be resized (default: inherits from table-level resizable) */
|
|
34
|
+
resizable?: boolean;
|
|
29
35
|
/** Alineación del contenido */
|
|
30
36
|
align?: "left" | "center" | "right";
|
|
31
37
|
/** Columna oculta */
|
|
@@ -93,6 +99,15 @@ export interface PaginationConfig {
|
|
|
93
99
|
/** Mostrar salto a página */
|
|
94
100
|
showQuickJumper?: boolean;
|
|
95
101
|
}
|
|
102
|
+
/**
|
|
103
|
+
* Configuration for expandable rows
|
|
104
|
+
*/
|
|
105
|
+
export interface ExpandableConfig<T extends TableData = TableData> {
|
|
106
|
+
/** Render function for the expanded row content */
|
|
107
|
+
render: (row: T, rowIndex: number) => ReactNode;
|
|
108
|
+
/** Whether only one row can be expanded at a time (default: false) */
|
|
109
|
+
accordion?: boolean;
|
|
110
|
+
}
|
|
96
111
|
/**
|
|
97
112
|
* Estado de ordenamiento
|
|
98
113
|
*/
|
|
@@ -172,6 +187,13 @@ export interface TableLocale {
|
|
|
172
187
|
hideColumn?: string;
|
|
173
188
|
sortPriority?: string;
|
|
174
189
|
clearSort?: string;
|
|
190
|
+
/** aria-live announcements */
|
|
191
|
+
resultsFound?: string;
|
|
192
|
+
noResultsFound?: string;
|
|
193
|
+
rowsSelected?: string;
|
|
194
|
+
/** Expandable rows */
|
|
195
|
+
expandRow?: string;
|
|
196
|
+
collapseRow?: string;
|
|
175
197
|
}
|
|
176
198
|
/**
|
|
177
199
|
* Locale por defecto (Inglés)
|
|
@@ -213,6 +235,11 @@ export declare const locales: {
|
|
|
213
235
|
hideColumn: string;
|
|
214
236
|
sortPriority: string;
|
|
215
237
|
clearSort: string;
|
|
238
|
+
resultsFound: string;
|
|
239
|
+
noResultsFound: string;
|
|
240
|
+
rowsSelected: string;
|
|
241
|
+
expandRow: string;
|
|
242
|
+
collapseRow: string;
|
|
216
243
|
};
|
|
217
244
|
readonly pt: {
|
|
218
245
|
search: string;
|
|
@@ -245,6 +272,11 @@ export declare const locales: {
|
|
|
245
272
|
hideColumn: string;
|
|
246
273
|
sortPriority: string;
|
|
247
274
|
clearSort: string;
|
|
275
|
+
resultsFound: string;
|
|
276
|
+
noResultsFound: string;
|
|
277
|
+
rowsSelected: string;
|
|
278
|
+
expandRow: string;
|
|
279
|
+
collapseRow: string;
|
|
248
280
|
};
|
|
249
281
|
};
|
|
250
282
|
/** Claves de locales predefinidos */
|
|
@@ -295,6 +327,12 @@ export interface BetterTableProps<T extends TableData = TableData> {
|
|
|
295
327
|
searchColumns?: string[];
|
|
296
328
|
/** Milisegundos de debounce en la búsqueda (default: 300) */
|
|
297
329
|
searchDebounceMs?: number;
|
|
330
|
+
/** Skip client-side sorting — data is assumed pre-sorted by the server (default: false) */
|
|
331
|
+
manualSorting?: boolean;
|
|
332
|
+
/** Skip client-side filtering and search — data is assumed pre-filtered by the server (default: false) */
|
|
333
|
+
manualFiltering?: boolean;
|
|
334
|
+
/** Skip client-side pagination — data represents the current page from the server (default: false) */
|
|
335
|
+
manualPagination?: boolean;
|
|
298
336
|
/** Habilitar selección de filas */
|
|
299
337
|
selectable?: boolean;
|
|
300
338
|
/** Filas seleccionadas (controlado) */
|
|
@@ -340,6 +378,14 @@ export interface BetterTableProps<T extends TableData = TableData> {
|
|
|
340
378
|
hoverable?: boolean;
|
|
341
379
|
/** Tamaño de la tabla */
|
|
342
380
|
size?: "small" | "medium" | "large";
|
|
381
|
+
/** Enable column resizing via drag (default: false) */
|
|
382
|
+
resizable?: boolean;
|
|
383
|
+
/** Callback when a column is resized */
|
|
384
|
+
onColumnResize?: (columnId: string, width: number) => void;
|
|
385
|
+
/** Minimum column width in px when resizing (default: 50) */
|
|
386
|
+
minColumnWidth?: number;
|
|
387
|
+
/** Maximum column width in px when resizing */
|
|
388
|
+
maxColumnWidth?: number;
|
|
343
389
|
/** Callback al hacer click en una fila */
|
|
344
390
|
onRowClick?: (row: T, rowIndex: number) => void;
|
|
345
391
|
/** Callback al hacer doble click en una fila */
|
|
@@ -348,4 +394,16 @@ export interface BetterTableProps<T extends TableData = TableData> {
|
|
|
348
394
|
ariaLabel?: string;
|
|
349
395
|
/** ID del elemento que describe la tabla */
|
|
350
396
|
ariaDescribedBy?: string;
|
|
397
|
+
/** Configuration for expandable rows (render function for expanded content) */
|
|
398
|
+
expandable?: ExpandableConfig<T>;
|
|
399
|
+
/** Array of expanded row keys (controlled mode) */
|
|
400
|
+
expandedRows?: string[];
|
|
401
|
+
/** Callback when expanded rows change */
|
|
402
|
+
onExpandChange?: (expandedRows: string[]) => void;
|
|
403
|
+
/** Force-enable virtualization (auto-enabled when pagination is off and dataset > VIRTUALIZATION_THRESHOLD) */
|
|
404
|
+
virtualize?: boolean;
|
|
405
|
+
/** Fixed row height in px for virtualized rendering (default: 48) */
|
|
406
|
+
rowHeight?: number;
|
|
407
|
+
/** Extra rows rendered above/below the viewport as scroll buffer (default: 5) */
|
|
408
|
+
virtualBuffer?: number;
|
|
351
409
|
}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* better-table
|
|
3
3
|
* A modern, flexible, and fully typed React data table component
|
|
4
4
|
*
|
|
5
5
|
* @packageDocumentation
|
|
6
6
|
*/
|
|
7
7
|
export { BetterTable } from './components/BetterTable';
|
|
8
8
|
export { defaultLocale, locales } from './components/BetterTable/types';
|
|
9
|
-
export type { BetterTableProps, Column, RowAction, GlobalAction, PaginationConfig, SortState, MultiSortState, FilterState, DateFilterRange, TableClassNames, TableLocale, TableData, LocaleKey, } from './components/BetterTable/types';
|
|
9
|
+
export type { BetterTableProps, Column, RowAction, GlobalAction, ExpandableConfig, PaginationConfig, SortState, MultiSortState, FilterState, DateFilterRange, TableClassNames, TableLocale, TableData, LocaleKey, } from './components/BetterTable/types';
|
|
10
10
|
export { useTableSort } from './components/BetterTable/hooks/useTableSort';
|
|
11
11
|
export { useTableFilter } from './components/BetterTable/hooks/useTableFilter';
|
|
12
12
|
export { useTablePagination } from './components/BetterTable/hooks/useTablePagination';
|
|
13
13
|
export { useTableSelection } from './components/BetterTable/hooks/useTableSelection';
|
|
14
14
|
export { useTableSearch } from './components/BetterTable/hooks/useTableSearch';
|
|
15
15
|
export { useColumnVisibility } from './components/BetterTable/hooks/useColumnVisibility';
|
|
16
|
-
export {
|
|
17
|
-
export type {
|
|
16
|
+
export { TableProvider, useTableData, useTableSortContext, useTableFilterContext, useTableSelectionContext, useTablePaginationContext, useTableUI, } from './components/BetterTable/context';
|
|
17
|
+
export type { TableProviderProps, TableDataContextValue, TableSortContextValue, TableFilterContextValue, TableSelectionContextValue, TablePaginationContextValue, TableUIContextValue, } from './components/BetterTable/context';
|
|
18
18
|
export { getValueFromPath } from './components/BetterTable/utils/getValueFromPath';
|
|
19
19
|
export { sortData } from './components/BetterTable/utils/sortData';
|
|
20
20
|
export { filterData, searchData, } from './components/BetterTable/utils/filterData';
|
package/package.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "better-table",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.3.0",
|
|
4
4
|
"description": "A modern, flexible, and fully typed React data table component",
|
|
5
|
-
"author": "
|
|
5
|
+
"author": "jrodrigopuca",
|
|
6
6
|
"license": "Apache-2.0",
|
|
7
7
|
"type": "module",
|
|
8
8
|
"main": "./dist/better-table.cjs.js",
|
|
@@ -41,6 +41,12 @@
|
|
|
41
41
|
"pagination",
|
|
42
42
|
"selection",
|
|
43
43
|
"column-visibility",
|
|
44
|
+
"column-resize",
|
|
45
|
+
"expandable-rows",
|
|
46
|
+
"virtualization",
|
|
47
|
+
"sticky-header",
|
|
48
|
+
"server-side",
|
|
49
|
+
"accessible",
|
|
44
50
|
"responsive",
|
|
45
51
|
"i18n"
|
|
46
52
|
],
|
|
@@ -77,17 +83,6 @@
|
|
|
77
83
|
"vite-plugin-dts": "^4.5.0",
|
|
78
84
|
"vitest": "^4.0.18"
|
|
79
85
|
},
|
|
80
|
-
"scripts": {
|
|
81
|
-
"dev": "vite --config demo/vite.config.ts",
|
|
82
|
-
"build": "vite build",
|
|
83
|
-
"build:types": "tsc -p tsconfig.build.json",
|
|
84
|
-
"preview": "vite preview",
|
|
85
|
-
"test": "vitest --config vitest.config.ts",
|
|
86
|
-
"test:run": "vitest run --config vitest.config.ts",
|
|
87
|
-
"test:coverage": "vitest run --coverage --config vitest.config.ts",
|
|
88
|
-
"lint": "tsc --noEmit",
|
|
89
|
-
"prepublishOnly": "npm run build"
|
|
90
|
-
},
|
|
91
86
|
"browserslist": {
|
|
92
87
|
"production": [
|
|
93
88
|
">0.2%",
|
|
@@ -99,5 +94,15 @@
|
|
|
99
94
|
"last 1 firefox version",
|
|
100
95
|
"last 1 safari version"
|
|
101
96
|
]
|
|
97
|
+
},
|
|
98
|
+
"scripts": {
|
|
99
|
+
"dev": "vite --config demo/vite.config.ts",
|
|
100
|
+
"build": "vite build",
|
|
101
|
+
"build:types": "tsc -p tsconfig.build.json",
|
|
102
|
+
"preview": "vite preview",
|
|
103
|
+
"test": "vitest --config vitest.config.ts",
|
|
104
|
+
"test:run": "vitest run --config vitest.config.ts",
|
|
105
|
+
"test:coverage": "vitest run --coverage --config vitest.config.ts",
|
|
106
|
+
"lint": "tsc --noEmit"
|
|
102
107
|
}
|
|
103
|
-
}
|
|
108
|
+
}
|