mig-schema-table 1.0.1 → 1.0.3

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
@@ -35,6 +35,7 @@ const userSchema ={
35
35
  ```typescript jsx
36
36
  import React from 'react';
37
37
  import { SchemaTableComponent, IColumnConfig } from "mig-schema-table";
38
+ import "mig-schema-table/index.css";
38
39
 
39
40
  const config:{[keyName: string]: IColumnConfig} ={
40
41
  "id":{
@@ -0,0 +1,21 @@
1
+ import { oas31 } from "openapi3-ts";
2
+ import { CSSProperties, Dispatch, SetStateAction } from "react";
3
+ import { IColumnConfig } from "../../../types/type";
4
+ interface IThProps {
5
+ columnFilters?: {
6
+ [prop: string]: any;
7
+ };
8
+ config?: IColumnConfig<any>;
9
+ isSortable: boolean;
10
+ name: string;
11
+ schema: oas31.SchemaObject;
12
+ setColumnFilters?: Dispatch<SetStateAction<{
13
+ [prop: string]: any;
14
+ } | undefined>>;
15
+ setSortAsc: Dispatch<SetStateAction<boolean>>;
16
+ setSortColumn: Dispatch<SetStateAction<string>>;
17
+ sortAsc?: boolean;
18
+ style: CSSProperties;
19
+ }
20
+ declare const _default: ({ columnFilters, config, isSortable, name, schema, setColumnFilters, setSortAsc, setSortColumn, sortAsc, style, }: IThProps) => import("react/jsx-runtime").JSX.Element;
21
+ export default _default;
@@ -0,0 +1,44 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import React from "react";
3
+ import { camelTextToTitleText } from "../../../inc/string";
4
+ const Th = ({ columnFilters, config, isSortable, name, schema, setColumnFilters, setSortAsc, setSortColumn, sortAsc, style, }) => {
5
+ const thDivProps = {
6
+ style,
7
+ className: `schema-table__th ${isSortable ? "schema-table__th--sortable" : "schema-table__th--unsortable"}`,
8
+ };
9
+ const onFilterButtonClick = React.useCallback((e) => {
10
+ if (!setColumnFilters) {
11
+ return;
12
+ }
13
+ if (columnFilters) {
14
+ setColumnFilters(undefined);
15
+ return;
16
+ }
17
+ }, [columnFilters, setColumnFilters]);
18
+ const onSortButtonClick = React.useCallback(() => {
19
+ if (sortAsc === undefined) {
20
+ setSortColumn(name);
21
+ setSortAsc(!(config === null || config === void 0 ? void 0 : config.defaultSortDesc));
22
+ return;
23
+ }
24
+ setSortAsc((sortAsc) => !sortAsc);
25
+ }, [config === null || config === void 0 ? void 0 : config.defaultSortDesc, name, setSortAsc, setSortColumn, sortAsc]);
26
+ if (!schema) {
27
+ return _jsx("div", Object.assign({}, thDivProps));
28
+ }
29
+ switch (schema.type) {
30
+ case "boolean":
31
+ thDivProps.className += ` text-${(config === null || config === void 0 ? void 0 : config.align) || "center"}`;
32
+ break;
33
+ case "integer":
34
+ case "number":
35
+ thDivProps.className += ` text-${(config === null || config === void 0 ? void 0 : config.align) || "end"}`;
36
+ break;
37
+ case "string":
38
+ if (schema.format && ["date", "date-time"].indexOf(schema.format) >= 0) {
39
+ thDivProps.className += ` text-${(config === null || config === void 0 ? void 0 : config.align) || "end"}`;
40
+ }
41
+ }
42
+ return (_jsxs("div", Object.assign({}, thDivProps, { children: [isSortable ? (_jsxs("button", Object.assign({ className: "px-0", disabled: (config === null || config === void 0 ? void 0 : config.sortable) === false, onClick: onSortButtonClick }, { children: [(config === null || config === void 0 ? void 0 : config.title) || camelTextToTitleText(name), sortAsc === undefined ? null : sortAsc ? "▲" : "▼"] }))) : (_jsx("div", Object.assign({ style: { lineHeight: "44px" } }, { children: (config === null || config === void 0 ? void 0 : config.title) || camelTextToTitleText(name) }))), (config === null || config === void 0 ? void 0 : config.isFilterable) ? (_jsx("button", Object.assign({ onClick: onFilterButtonClick }, { children: _jsx("svg", Object.assign({ viewBox: "0 0 36 36", xmlns: "http://www.w3.org/2000/svg", height: 16, width: 16, style: { display: "block" } }, { children: _jsx("polygon", { fill: "#231F20", points: "14,30 22,25 22,17 35.999,0 17.988,0 0,0 14,17 " }) })) }))) : null] })));
43
+ };
44
+ export default React.memo(Th);
@@ -0,0 +1,27 @@
1
+ import React from "react";
2
+ import { oas31 } from "openapi3-ts";
3
+ import { IColumnConfig, IRenderData } from "../../types/type";
4
+ import "../../index.scss";
5
+ export interface ISchemaTableComponentProps<T> {
6
+ config?: {
7
+ [propName: string]: IColumnConfig<T>;
8
+ };
9
+ data: T[];
10
+ defaultSortColumn?: keyof T;
11
+ defaultSortAsc?: boolean;
12
+ getRowSelected?: (rowData: T) => boolean;
13
+ Heading?: any;
14
+ isSearchable?: boolean;
15
+ isSortable?: boolean;
16
+ onRowClick?: (rowData: T, rowIndex: number, event: React.MouseEvent) => void;
17
+ getRowClassName?: (rowData: T, filteredSortedRows: IRenderData[]) => string;
18
+ rowHeight?: number;
19
+ schema: oas31.SchemaObject;
20
+ style?: React.CSSProperties;
21
+ width: number;
22
+ height: number;
23
+ customElement?: React.ReactNode;
24
+ tableTitle?: string;
25
+ searchPlaceholder?: string;
26
+ }
27
+ export default function SchemaTableComponent<T>(props: ISchemaTableComponentProps<T>): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,265 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import React from "react";
3
+ import { VariableSizeList, VariableSizeGrid } from "react-window";
4
+ import { localeFormat } from "../../inc/date";
5
+ import { camelTextToTitleText } from "../../inc/string";
6
+ import Th from "./Th";
7
+ import "../../index.scss";
8
+ export default function SchemaTableComponent(props) {
9
+ const { config, data, defaultSortColumn, defaultSortAsc = false, Heading = VariableSizeList, isSearchable, isSortable, onRowClick, getRowClassName, getRowSelected, rowHeight = 36, schema, style, customElement, tableTitle, searchPlaceholder } = props;
10
+ const [sortColumn, setSortColumn] = React.useState(defaultSortColumn);
11
+ const [sortAsc, setSortAsc] = React.useState(defaultSortAsc);
12
+ const [searchQuery, setSearchQuery] = React.useState("");
13
+ const [columnFilters, setColumnFilters] = React.useState();
14
+ const { properties = {} } = schema;
15
+ const columnNames = React.useMemo(() => {
16
+ const columns = Object.keys(properties);
17
+ if (!config) {
18
+ return columns;
19
+ }
20
+ const invisibleColumns = Object.entries(config).reduce((prev, [propName, propConfig]) => {
21
+ if (propConfig.hidden) {
22
+ prev.push(propName);
23
+ }
24
+ return prev;
25
+ }, []);
26
+ return columns
27
+ .filter((key) => !invisibleColumns.includes(key))
28
+ .sort((columnA, columnB) => {
29
+ let orderA = config[columnA] ? config[columnA].order : undefined;
30
+ if (orderA === undefined) {
31
+ orderA = Object.keys(properties).findIndex((propName) => propName === columnA);
32
+ }
33
+ let orderB = config[columnB] ? config[columnB].order : undefined;
34
+ if (orderB === undefined) {
35
+ orderB = Object.keys(properties).findIndex((propName) => propName === columnB);
36
+ }
37
+ if (orderA === -1) {
38
+ return 1;
39
+ }
40
+ if (orderB === -1) {
41
+ return -1;
42
+ }
43
+ return orderA - orderB;
44
+ });
45
+ }, [config, properties]);
46
+ const renderData = React.useMemo(() => data
47
+ ? data.map((object, rowIndex) => columnNames.reduce((prev, propName) => {
48
+ const schema = properties[propName];
49
+ const propConfig = config ? config[propName] : undefined;
50
+ if (propConfig === null || propConfig === void 0 ? void 0 : propConfig.renderData) {
51
+ prev[propName] = propConfig.renderData(object, rowIndex);
52
+ return prev;
53
+ }
54
+ if (!schema) {
55
+ prev[propName] = "?";
56
+ return prev;
57
+ }
58
+ const rawValue = object[propName];
59
+ switch (schema.type) {
60
+ case "array":
61
+ prev[propName] = JSON.stringify(rawValue);
62
+ return prev;
63
+ case "boolean":
64
+ prev[propName] = rawValue ? "✓" : "✕";
65
+ return prev;
66
+ case "integer":
67
+ prev[propName] = [undefined, null].includes(rawValue)
68
+ ? ""
69
+ : `${rawValue}`;
70
+ return prev;
71
+ // @ts-ignore
72
+ case "string":
73
+ if (schema.format === "date" && rawValue) {
74
+ prev[propName] =
75
+ rawValue === "2999-12-31"
76
+ ? "-"
77
+ : localeFormat(new Date(rawValue), "dd MMM yyyy");
78
+ return prev;
79
+ }
80
+ if (schema.format === "date-time" && rawValue) {
81
+ prev[propName] = localeFormat(new Date(rawValue), "dd MMM yyyy hh:mm");
82
+ return prev;
83
+ }
84
+ if (schema.enum) {
85
+ prev[propName] = camelTextToTitleText(rawValue);
86
+ return prev;
87
+ }
88
+ // fallthrough
89
+ default:
90
+ prev[propName] = rawValue ? `${rawValue}` : "";
91
+ return prev;
92
+ }
93
+ }, { _index: rowIndex }))
94
+ : undefined, [columnNames, config, data, properties]);
95
+ const gridWidth = props.width;
96
+ const columnCount = columnNames.length;
97
+ const { columnWidths, dynamicWidthColumnCount, fixedWidthColumnsWidth } = React.useMemo(() => {
98
+ let fixedWidthColumnsWidth = 0;
99
+ let dynamicWidthColumnCount = 0;
100
+ columnNames.forEach((propName) => {
101
+ const propConfig = config ? config[propName] : undefined;
102
+ if (propConfig === null || propConfig === void 0 ? void 0 : propConfig.width) {
103
+ fixedWidthColumnsWidth += propConfig.width;
104
+ }
105
+ else {
106
+ dynamicWidthColumnCount += 1;
107
+ }
108
+ }, 0);
109
+ const dynamicColumnWidth = Math.floor((gridWidth - 16 - fixedWidthColumnsWidth) / dynamicWidthColumnCount);
110
+ const columnWidths = columnNames.map((propName) => {
111
+ const propConfig = config ? config[propName] : undefined;
112
+ return (propConfig === null || propConfig === void 0 ? void 0 : propConfig.width) || dynamicColumnWidth;
113
+ });
114
+ return { columnWidths, dynamicWidthColumnCount, fixedWidthColumnsWidth };
115
+ }, [columnNames, config, gridWidth]);
116
+ const getColumnWidth = React.useCallback((columnIndex) => columnWidths[columnIndex], [columnWidths]);
117
+ const SchemaTableTh = React.useCallback(({ style, index }) => {
118
+ const propName = columnNames[index];
119
+ return (_jsx(Th, { columnFilters: columnFilters, config: config ? config[propName] : undefined, isSortable: !!isSortable, name: propName, schema: properties[propName], setColumnFilters: setColumnFilters, setSortColumn: setSortColumn, setSortAsc: setSortAsc, sortAsc: sortColumn === propName ? sortAsc : undefined, style: style }));
120
+ }, [
121
+ columnFilters,
122
+ columnNames,
123
+ config,
124
+ isSortable,
125
+ properties,
126
+ sortAsc,
127
+ sortColumn,
128
+ ]);
129
+ const filteredRenderData = React.useMemo(() => {
130
+ let result = renderData;
131
+ if (!result) {
132
+ return result;
133
+ }
134
+ if (searchQuery) {
135
+ const lcQuery = searchQuery.toLowerCase();
136
+ result = result.filter((item) => !!columnNames.find((columnName) =>
137
+ // @ts-ignore
138
+ `${item[columnName]}`.toLowerCase().includes(lcQuery)));
139
+ }
140
+ if (!columnFilters) {
141
+ return result;
142
+ }
143
+ const columnFilterEntries = Object.entries(columnFilters);
144
+ return result.filter((item) => columnFilterEntries.find(([columnName, columnFilterValue]) =>
145
+ // @ts-ignore
146
+ data[item._index][columnName] === columnFilterValue));
147
+ }, [columnFilters, columnNames, data, renderData, searchQuery]);
148
+ // Sort the filtered data
149
+ const sortedRenderData = React.useMemo(() => {
150
+ if (!sortColumn || !filteredRenderData) {
151
+ return filteredRenderData;
152
+ }
153
+ const sortSchema = properties[sortColumn];
154
+ const propConfig = config ? config[sortColumn] : undefined;
155
+ const columnSort = propConfig === null || propConfig === void 0 ? void 0 : propConfig.sort;
156
+ if (columnSort) {
157
+ return filteredRenderData.sort((a, b) => {
158
+ const aData = data[a._index];
159
+ const bData = data[b._index];
160
+ if (!aData) {
161
+ return 1;
162
+ }
163
+ if (!bData) {
164
+ return -1;
165
+ }
166
+ return columnSort(aData, bData, sortAsc);
167
+ });
168
+ }
169
+ return filteredRenderData.sort((a, b) => {
170
+ const sortByValue = (propConfig === null || propConfig === void 0 ? void 0 : propConfig.sortByValue) === undefined
171
+ ? !sortSchema ||
172
+ sortSchema.type === "boolean" ||
173
+ sortSchema.type === "integer" ||
174
+ sortSchema.format === "date" ||
175
+ sortSchema.format === "date-time" ||
176
+ (propConfig === null || propConfig === void 0 ? void 0 : propConfig.renderCell)
177
+ : propConfig.sortByValue;
178
+ const x = sortByValue && data[a._index]
179
+ ? // @ts-ignore
180
+ data[a._index][sortColumn]
181
+ : a[sortColumn].toLowerCase();
182
+ const y = sortByValue && data[b._index]
183
+ ? // @ts-ignore
184
+ data[b._index][sortColumn]
185
+ : b[sortColumn].toLowerCase();
186
+ if (x === y) {
187
+ return 0;
188
+ }
189
+ return (x < y ? 1 : -1) * (sortAsc ? -1 : 1);
190
+ });
191
+ }, [config, data, filteredRenderData, properties, sortAsc, sortColumn]);
192
+ const onTdClick = React.useCallback((e) => {
193
+ if (!sortedRenderData || !onRowClick) {
194
+ return;
195
+ }
196
+ const { rowIndex } = e.currentTarget.dataset;
197
+ if (!rowIndex) {
198
+ return;
199
+ }
200
+ const row = sortedRenderData[parseInt(rowIndex, 10)];
201
+ onRowClick(data[row._index], row._index, e);
202
+ }, [data, onRowClick, sortedRenderData]);
203
+ const Td = React.useCallback(({ columnIndex, rowIndex, style }) => {
204
+ if (!sortedRenderData) {
205
+ return null;
206
+ }
207
+ const propName = columnNames[columnIndex];
208
+ const propConfig = config ? config[propName] : undefined;
209
+ const row = sortedRenderData[rowIndex];
210
+ const schema = properties[propName];
211
+ const tdDivProps = {
212
+ "data-row-index": rowIndex,
213
+ "data-column-index": columnIndex,
214
+ key: propName,
215
+ style,
216
+ onClick: !(propConfig === null || propConfig === void 0 ? void 0 : propConfig.renderCell) ? onTdClick : undefined,
217
+ className: `schema-table__td schema-table__td--${rowIndex % 2 ? "odd" : "even"}${row && getRowSelected && getRowSelected(data[row._index])
218
+ ? " schema-table__td--selected"
219
+ : ""} ${row && getRowClassName
220
+ ? getRowClassName(data[row._index], sortedRenderData)
221
+ : ""}`,
222
+ };
223
+ if (propConfig === null || propConfig === void 0 ? void 0 : propConfig.renderCell) {
224
+ return (_jsx("div", Object.assign({}, tdDivProps, { children: propConfig.renderCell(data[row._index], rowIndex) })));
225
+ }
226
+ if (!schema) {
227
+ return null;
228
+ }
229
+ // @ts-ignore
230
+ switch (schema.type) {
231
+ case "boolean":
232
+ tdDivProps.className += ` text-${(propConfig === null || propConfig === void 0 ? void 0 : propConfig.align) || "center"}`;
233
+ break;
234
+ case "number":
235
+ case "integer":
236
+ tdDivProps.className += ` text-${(propConfig === null || propConfig === void 0 ? void 0 : propConfig.align) || "end"}`;
237
+ break;
238
+ case "string":
239
+ // @ts-ignore
240
+ tdDivProps.title = row[propName];
241
+ if (schema.format === "date" || schema.format === "date-time") {
242
+ tdDivProps.className += ` text-${(propConfig === null || propConfig === void 0 ? void 0 : propConfig.align) || "end"}`;
243
+ }
244
+ }
245
+ return _jsx("div", Object.assign({}, tdDivProps, { children: row[propName] }));
246
+ }, [
247
+ sortedRenderData,
248
+ columnNames,
249
+ config,
250
+ properties,
251
+ onTdClick,
252
+ getRowSelected,
253
+ data,
254
+ getRowClassName,
255
+ ]);
256
+ const onSearchChange = React.useCallback((e) => {
257
+ setSearchQuery(e.currentTarget.value);
258
+ }, []);
259
+ const getRowHeight = React.useCallback(() => rowHeight, [rowHeight]);
260
+ const width = dynamicWidthColumnCount ? gridWidth : fixedWidthColumnsWidth;
261
+ const totalWidth = React.useMemo(() => columnWidths.reduce((a, b) => {
262
+ return a + b;
263
+ }, 0), [columnWidths]);
264
+ return (_jsxs("div", Object.assign({ className: `schema-table${onRowClick ? " schema-table--clickable-rows" : ""}`, style: Object.assign(Object.assign({}, style), { width: dynamicWidthColumnCount ? gridWidth : fixedWidthColumnsWidth }) }, { children: [_jsx("div", Object.assign({ className: "tableTitle" }, { children: tableTitle })), _jsxs("div", Object.assign({ className: "form-action-container" }, { children: [_jsx("div", Object.assign({ className: "flex-1" }, { children: isSearchable ? (_jsx("input", { id: "input-filter", type: "text", placeholder: searchPlaceholder, value: searchQuery, onChange: onSearchChange, autoFocus: true })) : null })), customElement] })), _jsx(Heading, Object.assign({ height: 50, itemCount: columnCount, itemSize: getColumnWidth, layout: "horizontal", width: width, sortAsc: sortAsc, setSortAsc: setSortAsc, setSortColumn: setSortColumn, sortColumn: sortColumn, sortedRenderData: sortedRenderData }, { children: SchemaTableTh }), `thead_${width}_${sortColumn}_${sortAsc}_${searchQuery}`), _jsx(VariableSizeGrid, Object.assign({ className: "schema-table__tbody", height: props.height - (isSearchable ? 50 : 0), width: totalWidth, columnWidth: getColumnWidth, rowHeight: getRowHeight, columnCount: columnCount, rowCount: sortedRenderData ? sortedRenderData.length : 0 }, { children: Td }), `tbody_${width}_${sortColumn}_${sortAsc}_${searchQuery}_${columnCount}`)] })));
265
+ }
@@ -0,0 +1 @@
1
+ export declare const localeFormat: (date: Date | number, dateFormat: string) => string;
@@ -0,0 +1,3 @@
1
+ import { format } from "date-fns";
2
+ import nl from "date-fns/locale/nl";
3
+ export const localeFormat = (date, dateFormat) => format(date, dateFormat, { locale: nl });
@@ -0,0 +1,2 @@
1
+ import { oas31 } from "openapi3-ts";
2
+ export declare function getEmptyObject<T>(schema: oas31.SchemaObject): T;
@@ -0,0 +1,32 @@
1
+ export function getEmptyObject(schema) {
2
+ const { properties = {} } = schema;
3
+ return Object.keys(properties).reduce((prev, propName) => {
4
+ const prop = properties[propName];
5
+ let propValue;
6
+ switch (prop.type) {
7
+ case "string":
8
+ propValue = prop.enum ? prop.enum[0] : prop.default || "";
9
+ break;
10
+ case "array":
11
+ propValue = prop.default || [];
12
+ break;
13
+ case "number":
14
+ case "integer":
15
+ propValue = prop.default || 0;
16
+ break;
17
+ case "boolean":
18
+ propValue = prop.default || false;
19
+ break;
20
+ case "object":
21
+ propValue = prop.default || getEmptyObject(prop);
22
+ break;
23
+ // eslint-disable-next-line no-fallthrough
24
+ default:
25
+ console.log(prop);
26
+ throw new Error("Unsupported property");
27
+ }
28
+ // @ts-ignore
29
+ prev[propName] = propValue;
30
+ return prev;
31
+ }, {});
32
+ }
@@ -0,0 +1 @@
1
+ export declare const camelTextToTitleText: (keyName: string) => string;
@@ -0,0 +1,4 @@
1
+ export const camelTextToTitleText = (keyName) => {
2
+ const titleText = keyName.replace(/([A-Z])/g, " $1");
3
+ return titleText.charAt(0).toUpperCase() + titleText.slice(1);
4
+ };
@@ -0,0 +1,132 @@
1
+ table {
2
+ border-collapse: collapse;
3
+ width: 100%;
4
+ cursor: pointer;
5
+ margin-top: 5px;
6
+ }
7
+ table thead {
8
+ width: calc(100% - 1em);
9
+ }
10
+ table thead, table tbody tr {
11
+ display: table;
12
+ width: 100%;
13
+ table-layout: fixed;
14
+ }
15
+ table tbody {
16
+ display: block;
17
+ overflow: auto;
18
+ max-height: 80vh;
19
+ }
20
+ table th {
21
+ background-color: lightgray;
22
+ text-align: left;
23
+ position: sticky;
24
+ top: 0;
25
+ }
26
+ table th .arrow {
27
+ border: solid black;
28
+ border-width: 0 3px 3px 0;
29
+ display: inline-block;
30
+ padding: 3px;
31
+ position: absolute;
32
+ right: 0;
33
+ margin: 6px;
34
+ }
35
+ table th, table td {
36
+ border-right: 1px solid #ddd;
37
+ border-left: 1px solid #ddd;
38
+ padding: 8px;
39
+ }
40
+ table td div {
41
+ text-overflow: ellipsis;
42
+ width: 100%;
43
+ white-space: nowrap;
44
+ overflow: hidden;
45
+ }
46
+ table tbody tr {
47
+ height: 50px;
48
+ }
49
+ table tbody tr:hover {
50
+ background-color: #858585;
51
+ }
52
+ table tr:nth-child(even) {
53
+ background-color: #f2f2f2;
54
+ }
55
+
56
+ .ASC {
57
+ transform: rotate(45deg);
58
+ -webkit-transform: rotate(45deg);
59
+ transition: 0.5s;
60
+ }
61
+
62
+ .DSC {
63
+ transform: rotate(-135deg);
64
+ -webkit-transform: rotate(-135deg);
65
+ transition: 0.5s;
66
+ }
67
+
68
+ .tableTitle {
69
+ margin-top: 10px;
70
+ margin-bottom: 20px;
71
+ font-size: 25px;
72
+ font-weight: bold;
73
+ }
74
+
75
+ .schema-table {
76
+ overflow: hidden;
77
+ }
78
+ .schema-table__tbody {
79
+ overflow-x: hidden !important;
80
+ border-collapse: collapse;
81
+ width: 100%;
82
+ cursor: pointer;
83
+ }
84
+ .schema-table__th-row {
85
+ overflow: hidden !important;
86
+ }
87
+ .schema-table__th {
88
+ overflow: hidden;
89
+ background-color: #eee;
90
+ }
91
+ .schema-table__th,
92
+ .schema-table__th button {
93
+ font-weight: bold;
94
+ margin-top: 10px;
95
+ display: flex;
96
+ }
97
+ .schema-table__th--unsortable {
98
+ padding-left: 1rem;
99
+ }
100
+ .schema-table__td {
101
+ overflow: hidden;
102
+ white-space: nowrap;
103
+ text-overflow: ellipsis;
104
+ padding-left: 8px;
105
+ align-items: center;
106
+ line-height: 40px;
107
+ }
108
+ .schema-table__td--odd {
109
+ background-color: #ddd;
110
+ }
111
+ .schema-table__td--even {
112
+ background-color: #fff;
113
+ }
114
+ .schema-table__td--selected {
115
+ background-color: #bbb;
116
+ }
117
+ .schema-table__search {
118
+ margin: 1rem;
119
+ padding-right: 1rem;
120
+ }
121
+ .schema-table__search input {
122
+ width: 100%;
123
+ line-height: 20px;
124
+ }
125
+ .schema-table--clickable-rows .schema-table__td {
126
+ cursor: pointer;
127
+ }
128
+ .schema-table button {
129
+ border: 1px solid transparent;
130
+ }
131
+
132
+ /*# sourceMappingURL=index.css.map */
@@ -0,0 +1 @@
1
+ {"version":3,"sourceRoot":"","sources":["../src/index.scss"],"names":[],"mappings":"AAAA;EACE;EACA;EACA;EACA;;AAEA;EACE;;AAGF;EACE;EACA;EACA;;AAGF;EACE;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;;AACA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAIJ;EACE;EACA;EACA;;AAIA;EACE;EACA;EACA;EACA;;AAKF;EACE;;AACA;EACE;;AAKN;EACE;;;AAIJ;EACE;EACA;EACA;;;AAGF;EACE;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;;;AAIF;EAgEE;;AA/DA;EACE;EACA;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAEA;AAAA;EAEE;EACA;EACA;;AAGF;EACE;;AAIJ;EACE;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAGF;EACE;;AAEF;EACE;;AAIJ;EACE;EACA;;AAEA;EACE;EACA;;AAIJ;EACE;;AAEF;EACE","file":"index.css"}
@@ -0,0 +1,4 @@
1
+ import SchemaTableComponent from "./component/SchemaTable";
2
+ import { IColumnConfig, IRenderData } from "./types/type";
3
+ export type { IColumnConfig, IRenderData };
4
+ export { SchemaTableComponent };
package/build/index.js ADDED
@@ -0,0 +1,2 @@
1
+ import SchemaTableComponent from "./component/SchemaTable";
2
+ export { SchemaTableComponent };
@@ -0,0 +1,3 @@
1
+ import { ReportHandler } from 'web-vitals';
2
+ declare const reportWebVitals: (onPerfEntry?: ReportHandler) => void;
3
+ export default reportWebVitals;
@@ -0,0 +1,12 @@
1
+ const reportWebVitals = (onPerfEntry) => {
2
+ if (onPerfEntry && onPerfEntry instanceof Function) {
3
+ import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {
4
+ getCLS(onPerfEntry);
5
+ getFID(onPerfEntry);
6
+ getFCP(onPerfEntry);
7
+ getLCP(onPerfEntry);
8
+ getTTFB(onPerfEntry);
9
+ });
10
+ }
11
+ };
12
+ export default reportWebVitals;
@@ -0,0 +1 @@
1
+ import '@testing-library/jest-dom';
@@ -0,0 +1,5 @@
1
+ // jest-dom adds custom jest matchers for asserting on DOM nodes.
2
+ // allows you to do things like:
3
+ // expect(element).toHaveTextContent(/react/i)
4
+ // learn more: https://github.com/testing-library/jest-dom
5
+ import '@testing-library/jest-dom';
@@ -0,0 +1,20 @@
1
+ import React from "react";
2
+ export interface IColumnConfig<T> {
3
+ align?: "start" | "center" | "end";
4
+ defaultSortDesc?: boolean;
5
+ hidden?: boolean;
6
+ hoverTitle?: string;
7
+ isFilterable?: boolean;
8
+ renderCell?: (rowData: T, index: number) => React.ReactElement | null;
9
+ renderData?: (rowData: T, index: number) => string;
10
+ sort?: (a: T, b: T, sortAsc: boolean) => number;
11
+ sortByValue?: boolean;
12
+ sortable?: boolean;
13
+ title?: string | React.ReactElement;
14
+ width?: number;
15
+ order?: number;
16
+ }
17
+ export interface IRenderData {
18
+ _index: number;
19
+ [key: string]: any;
20
+ }
@@ -0,0 +1 @@
1
+ export {};
package/package.json CHANGED
@@ -1,10 +1,11 @@
1
1
  {
2
2
  "name": "mig-schema-table",
3
- "version": "1.0.1",
3
+ "version": "1.0.3",
4
4
  "main": "build/static/js/main.js",
5
5
  "files": [
6
6
  "build/"
7
7
  ],
8
+ "types": "./build/index.d.ts",
8
9
  "private": false,
9
10
  "dependencies": {
10
11
  "@testing-library/jest-dom": "^5.16.5",
@@ -28,7 +29,7 @@
28
29
  },
29
30
  "scripts": {
30
31
  "start": "react-scripts start",
31
- "build": "react-scripts build && mv build/static/js/*.js build/static/js/main.js"
32
+ "build": "tsc; sass src/index.scss build/index.css"
32
33
  },
33
34
  "eslintConfig": {
34
35
  "extends": [
@@ -1,13 +0,0 @@
1
- {
2
- "files": {
3
- "main.css": "/static/css/main.bea5aade.css",
4
- "main.js": "/static/js/main.7ff6957d.js",
5
- "index.html": "/index.html",
6
- "main.bea5aade.css.map": "/static/css/main.bea5aade.css.map",
7
- "main.7ff6957d.js.map": "/static/js/main.7ff6957d.js.map"
8
- },
9
- "entrypoints": [
10
- "static/css/main.bea5aade.css",
11
- "static/js/main.7ff6957d.js"
12
- ]
13
- }
package/build/favicon.ico DELETED
Binary file
package/build/index.html DELETED
@@ -1 +0,0 @@
1
- <!doctype html><html lang="en"><head><meta charset="utf-8"/><link rel="icon" href="/favicon.ico"/><meta name="viewport" content="width=device-width,initial-scale=1"/><meta name="theme-color" content="#000000"/><meta name="description" content="Web site created using create-react-app"/><link rel="apple-touch-icon" href="/logo192.png"/><link rel="manifest" href="/manifest.json"/><title>React App</title><script defer="defer" src="/static/js/main.7ff6957d.js"></script><link href="/static/css/main.bea5aade.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div></body></html>
package/build/logo192.png DELETED
Binary file
package/build/logo512.png DELETED
Binary file
@@ -1,25 +0,0 @@
1
- {
2
- "short_name": "React App",
3
- "name": "Create React App Sample",
4
- "icons": [
5
- {
6
- "src": "favicon.ico",
7
- "sizes": "64x64 32x32 24x24 16x16",
8
- "type": "image/x-icon"
9
- },
10
- {
11
- "src": "logo192.png",
12
- "type": "image/png",
13
- "sizes": "192x192"
14
- },
15
- {
16
- "src": "logo512.png",
17
- "type": "image/png",
18
- "sizes": "512x512"
19
- }
20
- ],
21
- "start_url": ".",
22
- "display": "standalone",
23
- "theme_color": "#000000",
24
- "background_color": "#ffffff"
25
- }
package/build/robots.txt DELETED
@@ -1,3 +0,0 @@
1
- # https://www.robotstxt.org/robotstxt.html
2
- User-agent: *
3
- Disallow:
@@ -1,2 +0,0 @@
1
- table{border-collapse:collapse;cursor:pointer;margin-top:5px;width:100%}table thead{width:calc(100% - 1em)}table tbody tr,table thead{display:table;table-layout:fixed;width:100%}table tbody{display:block;max-height:80vh;overflow:auto}table th{background-color:#d3d3d3;position:-webkit-sticky;position:sticky;text-align:left;top:0}table th .arrow{border:solid #000;border-width:0 3px 3px 0;display:inline-block;margin:6px;padding:3px;position:absolute;right:0}table td,table th{border-left:1px solid #ddd;border-right:1px solid #ddd;padding:8px}table td div{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:100%}table tbody tr{height:50px}table tbody tr:hover{background-color:#858585}table tr:nth-child(2n){background-color:#f2f2f2}.ASC{transform:rotate(45deg);-webkit-transform:rotate(45deg)}.ASC,.DSC{transition:.5s}.DSC{transform:rotate(-135deg);-webkit-transform:rotate(-135deg)}.tableTitle{font-size:25px;font-weight:700;margin-bottom:20px;margin-top:10px}.schema-table{overflow:hidden}.schema-table__tbody{border-collapse:collapse;cursor:pointer;overflow-x:hidden!important;width:100%}.schema-table__th-row{overflow:hidden!important}.schema-table__th{background-color:#eee;overflow:hidden}.schema-table__th,.schema-table__th button{display:flex;font-weight:700;margin-top:10px}.schema-table__th--unsortable{padding-left:1rem}.schema-table__td{align-items:center;line-height:40px;overflow:hidden;padding-left:8px;text-overflow:ellipsis;white-space:nowrap}.schema-table__td--odd{background-color:#ddd}.schema-table__td--even{background-color:#fff}.schema-table__td--selected{background-color:#bbb}.schema-table__search{margin:1rem;padding-right:1rem}.schema-table__search input{line-height:20px;width:100%}.schema-table--clickable-rows .schema-table__td{cursor:pointer}.schema-table button{border:1px solid transparent}
2
- /*# sourceMappingURL=main.bea5aade.css.map*/
@@ -1 +0,0 @@
1
- {"version":3,"file":"static/css/main.bea5aade.css","mappings":"AAAA,MACE,yBAEA,eACA,eAFA,UAEA,CAEA,YACE,uBAGF,2BACE,cAEA,mBADA,UACA,CAGF,YACE,cAEA,gBADA,aACA,CAGF,SACE,yBAEA,wCADA,gBAEA,MACA,gBAEE,2CACA,qBAIA,WAHA,YACA,kBACA,OACA,CAIJ,kBAEE,2BADA,4BAEA,YAIA,aAIE,gBAHA,uBAEA,mBADA,UAEA,CAKF,eACE,YACA,qBACE,yBAKN,uBACE,yBAIJ,KACE,wBACA,+BACA,CAGF,UAHE,cAMA,CAHF,KACE,0BACA,iCACA,CAGF,YAGE,eACA,gBAFA,mBADA,eAGA,CAIF,cAgEE,gBA/DA,qBAEE,yBAEA,eAHA,4BAEA,UACA,CAGF,sBACE,0BAGF,kBAEE,sBADA,eACA,CAEA,2CAIE,aAFA,gBACA,eACA,CAGF,8BACE,kBAIJ,kBAKE,mBACA,iBALA,gBAGA,iBADA,uBADA,kBAIA,CAEA,uBACE,sBAGF,wBACE,sBAEF,4BACE,sBAIJ,sBACE,YACA,mBAEA,4BAEE,iBADA,UACA,CAIJ,gDACE,eAEF,qBACE","sources":["component/SchemaTable/index.scss"],"sourcesContent":["table {\n border-collapse: collapse;\n width: 100%;\n cursor: pointer;\n margin-top: 5px;\n\n thead {\n width: calc( 100% - 1em )\n }\n\n thead, tbody tr {\n display: table;\n width: 100%;\n table-layout: fixed;\n }\n\n tbody {\n display: block;\n overflow: auto;\n max-height: 80vh;\n }\n\n & th{\n background-color: lightgray;\n text-align: left;\n position: sticky;\n top: 0;\n .arrow {\n border: solid black;\n border-width: 0 3px 3px 0;\n display: inline-block;\n padding: 3px;\n position: absolute;\n right: 0;\n margin: 6px;\n }\n }\n\n th,td{\n border-right: 1px solid #ddd;\n border-left: 1px solid #ddd;\n padding: 8px;\n }\n\n td{\n div{\n text-overflow: ellipsis;\n width: 100%;\n white-space: nowrap;\n overflow: hidden;\n }\n }\n\n & tbody{\n & tr{\n height: 50px;\n &:hover{\n background-color: #858585;\n }\n }\n }\n\n & tr:nth-child(even) {\n background-color: #f2f2f2;\n }\n}\n\n.ASC {\n transform: rotate(45deg);\n -webkit-transform: rotate(45deg);\n transition: 0.5s;\n}\n\n.DSC {\n transform: rotate(-135deg);\n -webkit-transform: rotate(-135deg);\n transition: 0.5s;\n}\n\n.tableTitle {\n margin-top: 10px;\n margin-bottom: 20px;\n font-size: 25px;\n font-weight: bold;\n}\n\n// New style from reference\n.schema-table {\n &__tbody {\n overflow-x: hidden !important;\n border-collapse: collapse;\n width: 100%;\n cursor: pointer;\n }\n\n &__th-row {\n overflow: hidden !important;\n }\n\n &__th {\n overflow: hidden;\n background-color: #eee;\n\n &,\n button {\n font-weight: bold;\n margin-top: 10px;\n display: flex;\n }\n\n &--unsortable {\n padding-left: 1rem;\n }\n }\n\n &__td {\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n padding-left: 8px;\n align-items: center;\n line-height: 40px;\n\n &--odd {\n background-color: #ddd;\n }\n\n &--even {\n background-color: #fff;\n }\n &--selected {\n background-color: #bbb;\n }\n }\n\n &__search {\n margin: 1rem;\n padding-right: 1rem;\n\n input {\n width: 100%;\n line-height: 20px;\n }\n }\n\n &--clickable-rows .schema-table__td {\n cursor: pointer;\n }\n button {\n border:1px solid transparent;\n }\n overflow: hidden;\n}\n"],"names":[],"sourceRoot":""}
@@ -1,19 +0,0 @@
1
- /**
2
- * @license React
3
- * react-jsx-runtime.production.min.js
4
- *
5
- * Copyright (c) Facebook, Inc. and its affiliates.
6
- *
7
- * This source code is licensed under the MIT license found in the
8
- * LICENSE file in the root directory of this source tree.
9
- */
10
-
11
- /**
12
- * @license React
13
- * react.production.min.js
14
- *
15
- * Copyright (c) Facebook, Inc. and its affiliates.
16
- *
17
- * This source code is licensed under the MIT license found in the
18
- * LICENSE file in the root directory of this source tree.
19
- */
@@ -1 +0,0 @@
1
- {"version":3,"file":"static/js/main.7ff6957d.js","mappings":"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","sources":["../node_modules/react/cjs/react-jsx-runtime.production.min.js","../node_modules/react/cjs/react.production.min.js","../node_modules/react/index.js","../node_modules/react/jsx-runtime.js","../webpack/bootstrap"],"sourcesContent":["/**\n * @license React\n * react-jsx-runtime.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var f=require(\"react\"),k=Symbol.for(\"react.element\"),l=Symbol.for(\"react.fragment\"),m=Object.prototype.hasOwnProperty,n=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,p={key:!0,ref:!0,__self:!0,__source:!0};\nfunction q(c,a,g){var b,d={},e=null,h=null;void 0!==g&&(e=\"\"+g);void 0!==a.key&&(e=\"\"+a.key);void 0!==a.ref&&(h=a.ref);for(b in a)m.call(a,b)&&!p.hasOwnProperty(b)&&(d[b]=a[b]);if(c&&c.defaultProps)for(b in a=c.defaultProps,a)void 0===d[b]&&(d[b]=a[b]);return{$$typeof:k,type:c,key:e,ref:h,props:d,_owner:n.current}}exports.Fragment=l;exports.jsx=q;exports.jsxs=q;\n","/**\n * @license React\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var l=Symbol.for(\"react.element\"),n=Symbol.for(\"react.portal\"),p=Symbol.for(\"react.fragment\"),q=Symbol.for(\"react.strict_mode\"),r=Symbol.for(\"react.profiler\"),t=Symbol.for(\"react.provider\"),u=Symbol.for(\"react.context\"),v=Symbol.for(\"react.forward_ref\"),w=Symbol.for(\"react.suspense\"),x=Symbol.for(\"react.memo\"),y=Symbol.for(\"react.lazy\"),z=Symbol.iterator;function A(a){if(null===a||\"object\"!==typeof a)return null;a=z&&a[z]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}\nvar B={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},C=Object.assign,D={};function E(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}E.prototype.isReactComponent={};\nE.prototype.setState=function(a,b){if(\"object\"!==typeof a&&\"function\"!==typeof a&&null!=a)throw Error(\"setState(...): takes an object of state variables to update or a function which returns an object of state variables.\");this.updater.enqueueSetState(this,a,b,\"setState\")};E.prototype.forceUpdate=function(a){this.updater.enqueueForceUpdate(this,a,\"forceUpdate\")};function F(){}F.prototype=E.prototype;function G(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}var H=G.prototype=new F;\nH.constructor=G;C(H,E.prototype);H.isPureReactComponent=!0;var I=Array.isArray,J=Object.prototype.hasOwnProperty,K={current:null},L={key:!0,ref:!0,__self:!0,__source:!0};\nfunction M(a,b,e){var d,c={},k=null,h=null;if(null!=b)for(d in void 0!==b.ref&&(h=b.ref),void 0!==b.key&&(k=\"\"+b.key),b)J.call(b,d)&&!L.hasOwnProperty(d)&&(c[d]=b[d]);var g=arguments.length-2;if(1===g)c.children=e;else if(1<g){for(var f=Array(g),m=0;m<g;m++)f[m]=arguments[m+2];c.children=f}if(a&&a.defaultProps)for(d in g=a.defaultProps,g)void 0===c[d]&&(c[d]=g[d]);return{$$typeof:l,type:a,key:k,ref:h,props:c,_owner:K.current}}\nfunction N(a,b){return{$$typeof:l,type:a.type,key:b,ref:a.ref,props:a.props,_owner:a._owner}}function O(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===l}function escape(a){var b={\"=\":\"=0\",\":\":\"=2\"};return\"$\"+a.replace(/[=:]/g,function(a){return b[a]})}var P=/\\/+/g;function Q(a,b){return\"object\"===typeof a&&null!==a&&null!=a.key?escape(\"\"+a.key):b.toString(36)}\nfunction R(a,b,e,d,c){var k=typeof a;if(\"undefined\"===k||\"boolean\"===k)a=null;var h=!1;if(null===a)h=!0;else switch(k){case \"string\":case \"number\":h=!0;break;case \"object\":switch(a.$$typeof){case l:case n:h=!0}}if(h)return h=a,c=c(h),a=\"\"===d?\".\"+Q(h,0):d,I(c)?(e=\"\",null!=a&&(e=a.replace(P,\"$&/\")+\"/\"),R(c,b,e,\"\",function(a){return a})):null!=c&&(O(c)&&(c=N(c,e+(!c.key||h&&h.key===c.key?\"\":(\"\"+c.key).replace(P,\"$&/\")+\"/\")+a)),b.push(c)),1;h=0;d=\"\"===d?\".\":d+\":\";if(I(a))for(var g=0;g<a.length;g++){k=\na[g];var f=d+Q(k,g);h+=R(k,b,e,f,c)}else if(f=A(a),\"function\"===typeof f)for(a=f.call(a),g=0;!(k=a.next()).done;)k=k.value,f=d+Q(k,g++),h+=R(k,b,e,f,c);else if(\"object\"===k)throw b=String(a),Error(\"Objects are not valid as a React child (found: \"+(\"[object Object]\"===b?\"object with keys {\"+Object.keys(a).join(\", \")+\"}\":b)+\"). If you meant to render a collection of children, use an array instead.\");return h}\nfunction S(a,b,e){if(null==a)return a;var d=[],c=0;R(a,d,\"\",\"\",function(a){return b.call(e,a,c++)});return d}function T(a){if(-1===a._status){var b=a._result;b=b();b.then(function(b){if(0===a._status||-1===a._status)a._status=1,a._result=b},function(b){if(0===a._status||-1===a._status)a._status=2,a._result=b});-1===a._status&&(a._status=0,a._result=b)}if(1===a._status)return a._result.default;throw a._result;}\nvar U={current:null},V={transition:null},W={ReactCurrentDispatcher:U,ReactCurrentBatchConfig:V,ReactCurrentOwner:K};exports.Children={map:S,forEach:function(a,b,e){S(a,function(){b.apply(this,arguments)},e)},count:function(a){var b=0;S(a,function(){b++});return b},toArray:function(a){return S(a,function(a){return a})||[]},only:function(a){if(!O(a))throw Error(\"React.Children.only expected to receive a single React element child.\");return a}};exports.Component=E;exports.Fragment=p;\nexports.Profiler=r;exports.PureComponent=G;exports.StrictMode=q;exports.Suspense=w;exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=W;\nexports.cloneElement=function(a,b,e){if(null===a||void 0===a)throw Error(\"React.cloneElement(...): The argument must be a React element, but you passed \"+a+\".\");var d=C({},a.props),c=a.key,k=a.ref,h=a._owner;if(null!=b){void 0!==b.ref&&(k=b.ref,h=K.current);void 0!==b.key&&(c=\"\"+b.key);if(a.type&&a.type.defaultProps)var g=a.type.defaultProps;for(f in b)J.call(b,f)&&!L.hasOwnProperty(f)&&(d[f]=void 0===b[f]&&void 0!==g?g[f]:b[f])}var f=arguments.length-2;if(1===f)d.children=e;else if(1<f){g=Array(f);\nfor(var m=0;m<f;m++)g[m]=arguments[m+2];d.children=g}return{$$typeof:l,type:a.type,key:c,ref:k,props:d,_owner:h}};exports.createContext=function(a){a={$$typeof:u,_currentValue:a,_currentValue2:a,_threadCount:0,Provider:null,Consumer:null,_defaultValue:null,_globalName:null};a.Provider={$$typeof:t,_context:a};return a.Consumer=a};exports.createElement=M;exports.createFactory=function(a){var b=M.bind(null,a);b.type=a;return b};exports.createRef=function(){return{current:null}};\nexports.forwardRef=function(a){return{$$typeof:v,render:a}};exports.isValidElement=O;exports.lazy=function(a){return{$$typeof:y,_payload:{_status:-1,_result:a},_init:T}};exports.memo=function(a,b){return{$$typeof:x,type:a,compare:void 0===b?null:b}};exports.startTransition=function(a){var b=V.transition;V.transition={};try{a()}finally{V.transition=b}};exports.unstable_act=function(){throw Error(\"act(...) is not supported in production builds of React.\");};\nexports.useCallback=function(a,b){return U.current.useCallback(a,b)};exports.useContext=function(a){return U.current.useContext(a)};exports.useDebugValue=function(){};exports.useDeferredValue=function(a){return U.current.useDeferredValue(a)};exports.useEffect=function(a,b){return U.current.useEffect(a,b)};exports.useId=function(){return U.current.useId()};exports.useImperativeHandle=function(a,b,e){return U.current.useImperativeHandle(a,b,e)};\nexports.useInsertionEffect=function(a,b){return U.current.useInsertionEffect(a,b)};exports.useLayoutEffect=function(a,b){return U.current.useLayoutEffect(a,b)};exports.useMemo=function(a,b){return U.current.useMemo(a,b)};exports.useReducer=function(a,b,e){return U.current.useReducer(a,b,e)};exports.useRef=function(a){return U.current.useRef(a)};exports.useState=function(a){return U.current.useState(a)};exports.useSyncExternalStore=function(a,b,e){return U.current.useSyncExternalStore(a,b,e)};\nexports.useTransition=function(){return U.current.useTransition()};exports.version=\"18.2.0\";\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react.production.min.js');\n} else {\n module.exports = require('./cjs/react.development.js');\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-jsx-runtime.production.min.js');\n} else {\n module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n"],"names":["f","require","k","Symbol","for","l","m","Object","prototype","hasOwnProperty","n","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","ReactCurrentOwner","p","key","ref","__self","__source","q","c","a","g","b","d","e","h","call","defaultProps","$$typeof","type","props","_owner","current","r","t","u","v","w","x","y","z","iterator","B","isMounted","enqueueForceUpdate","enqueueReplaceState","enqueueSetState","C","assign","D","E","this","context","refs","updater","F","G","isReactComponent","setState","Error","forceUpdate","H","constructor","isPureReactComponent","I","Array","isArray","J","K","L","M","arguments","length","children","O","P","Q","replace","escape","toString","R","N","push","A","next","done","value","String","keys","join","S","T","_status","_result","then","default","U","V","transition","W","ReactCurrentDispatcher","ReactCurrentBatchConfig","exports","Children","map","forEach","apply","count","toArray","only","Component","Fragment","Profiler","PureComponent","StrictMode","Suspense","cloneElement","createContext","_currentValue","_currentValue2","_threadCount","Provider","Consumer","_defaultValue","_globalName","_context","createElement","createFactory","bind","createRef","forwardRef","render","isValidElement","lazy","_payload","_init","memo","compare","startTransition","unstable_act","useCallback","useContext","useDebugValue","useDeferredValue","useEffect","useId","useImperativeHandle","useInsertionEffect","useLayoutEffect","useMemo","useReducer","useRef","useState","useSyncExternalStore","useTransition","version","module","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","__webpack_modules__"],"sourceRoot":""}
@@ -1,3 +0,0 @@
1
- /*! For license information please see main.7ff6957d.js.LICENSE.txt */
2
- !function(){"use strict";var e={374:function(e,t,r){var n=r(791),o=Symbol.for("react.element"),u=Symbol.for("react.fragment"),a=Object.prototype.hasOwnProperty,c=n.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,f={key:!0,ref:!0,__self:!0,__source:!0};function i(e,t,r){var n,u={},i=null,l=null;for(n in void 0!==r&&(i=""+r),void 0!==t.key&&(i=""+t.key),void 0!==t.ref&&(l=t.ref),t)a.call(t,n)&&!f.hasOwnProperty(n)&&(u[n]=t[n]);if(e&&e.defaultProps)for(n in t=e.defaultProps)void 0===u[n]&&(u[n]=t[n]);return{$$typeof:o,type:e,key:i,ref:l,props:u,_owner:c.current}}},117:function(e,t){var r=Symbol.for("react.element"),n=Symbol.for("react.portal"),o=Symbol.for("react.fragment"),u=Symbol.for("react.strict_mode"),a=Symbol.for("react.profiler"),c=Symbol.for("react.provider"),f=Symbol.for("react.context"),i=Symbol.for("react.forward_ref"),l=Symbol.for("react.suspense"),s=Symbol.for("react.memo"),p=Symbol.for("react.lazy"),y=Symbol.iterator;var d={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},_=Object.assign,v={};function h(e,t,r){this.props=e,this.context=t,this.refs=v,this.updater=r||d}function m(){}function b(e,t,r){this.props=e,this.context=t,this.refs=v,this.updater=r||d}h.prototype.isReactComponent={},h.prototype.setState=function(e,t){if("object"!==typeof e&&"function"!==typeof e&&null!=e)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,t,"setState")},h.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")},m.prototype=h.prototype;var S=b.prototype=new m;S.constructor=b,_(S,h.prototype),S.isPureReactComponent=!0;var E=Array.isArray,R=Object.prototype.hasOwnProperty,w={current:null},k={key:!0,ref:!0,__self:!0,__source:!0};function $(e,t,n){var o,u={},a=null,c=null;if(null!=t)for(o in void 0!==t.ref&&(c=t.ref),void 0!==t.key&&(a=""+t.key),t)R.call(t,o)&&!k.hasOwnProperty(o)&&(u[o]=t[o]);var f=arguments.length-2;if(1===f)u.children=n;else if(1<f){for(var i=Array(f),l=0;l<f;l++)i[l]=arguments[l+2];u.children=i}if(e&&e.defaultProps)for(o in f=e.defaultProps)void 0===u[o]&&(u[o]=f[o]);return{$$typeof:r,type:e,key:a,ref:c,props:u,_owner:w.current}}function C(e){return"object"===typeof e&&null!==e&&e.$$typeof===r}var O=/\/+/g;function g(e,t){return"object"===typeof e&&null!==e&&null!=e.key?function(e){var t={"=":"=0",":":"=2"};return"$"+e.replace(/[=:]/g,(function(e){return t[e]}))}(""+e.key):t.toString(36)}function j(e,t,o,u,a){var c=typeof e;"undefined"!==c&&"boolean"!==c||(e=null);var f=!1;if(null===e)f=!0;else switch(c){case"string":case"number":f=!0;break;case"object":switch(e.$$typeof){case r:case n:f=!0}}if(f)return a=a(f=e),e=""===u?"."+g(f,0):u,E(a)?(o="",null!=e&&(o=e.replace(O,"$&/")+"/"),j(a,t,o,"",(function(e){return e}))):null!=a&&(C(a)&&(a=function(e,t){return{$$typeof:r,type:e.type,key:t,ref:e.ref,props:e.props,_owner:e._owner}}(a,o+(!a.key||f&&f.key===a.key?"":(""+a.key).replace(O,"$&/")+"/")+e)),t.push(a)),1;if(f=0,u=""===u?".":u+":",E(e))for(var i=0;i<e.length;i++){var l=u+g(c=e[i],i);f+=j(c,t,o,l,a)}else if(l=function(e){return null===e||"object"!==typeof e?null:"function"===typeof(e=y&&e[y]||e["@@iterator"])?e:null}(e),"function"===typeof l)for(e=l.call(e),i=0;!(c=e.next()).done;)f+=j(c=c.value,t,o,l=u+g(c,i++),a);else if("object"===c)throw t=String(e),Error("Objects are not valid as a React child (found: "+("[object Object]"===t?"object with keys {"+Object.keys(e).join(", ")+"}":t)+"). If you meant to render a collection of children, use an array instead.");return f}function x(e,t,r){if(null==e)return e;var n=[],o=0;return j(e,n,"","",(function(e){return t.call(r,e,o++)})),n}function P(e){if(-1===e._status){var t=e._result;(t=t()).then((function(t){0!==e._status&&-1!==e._status||(e._status=1,e._result=t)}),(function(t){0!==e._status&&-1!==e._status||(e._status=2,e._result=t)})),-1===e._status&&(e._status=0,e._result=t)}if(1===e._status)return e._result.default;throw e._result}var I={current:null},T={transition:null},D={ReactCurrentDispatcher:I,ReactCurrentBatchConfig:T,ReactCurrentOwner:w};t.Children={map:x,forEach:function(e,t,r){x(e,(function(){t.apply(this,arguments)}),r)},count:function(e){var t=0;return x(e,(function(){t++})),t},toArray:function(e){return x(e,(function(e){return e}))||[]},only:function(e){if(!C(e))throw Error("React.Children.only expected to receive a single React element child.");return e}},t.Component=h,t.Fragment=o,t.Profiler=a,t.PureComponent=b,t.StrictMode=u,t.Suspense=l,t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=D,t.cloneElement=function(e,t,n){if(null===e||void 0===e)throw Error("React.cloneElement(...): The argument must be a React element, but you passed "+e+".");var o=_({},e.props),u=e.key,a=e.ref,c=e._owner;if(null!=t){if(void 0!==t.ref&&(a=t.ref,c=w.current),void 0!==t.key&&(u=""+t.key),e.type&&e.type.defaultProps)var f=e.type.defaultProps;for(i in t)R.call(t,i)&&!k.hasOwnProperty(i)&&(o[i]=void 0===t[i]&&void 0!==f?f[i]:t[i])}var i=arguments.length-2;if(1===i)o.children=n;else if(1<i){f=Array(i);for(var l=0;l<i;l++)f[l]=arguments[l+2];o.children=f}return{$$typeof:r,type:e.type,key:u,ref:a,props:o,_owner:c}},t.createContext=function(e){return(e={$$typeof:f,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null,_defaultValue:null,_globalName:null}).Provider={$$typeof:c,_context:e},e.Consumer=e},t.createElement=$,t.createFactory=function(e){var t=$.bind(null,e);return t.type=e,t},t.createRef=function(){return{current:null}},t.forwardRef=function(e){return{$$typeof:i,render:e}},t.isValidElement=C,t.lazy=function(e){return{$$typeof:p,_payload:{_status:-1,_result:e},_init:P}},t.memo=function(e,t){return{$$typeof:s,type:e,compare:void 0===t?null:t}},t.startTransition=function(e){var t=T.transition;T.transition={};try{e()}finally{T.transition=t}},t.unstable_act=function(){throw Error("act(...) is not supported in production builds of React.")},t.useCallback=function(e,t){return I.current.useCallback(e,t)},t.useContext=function(e){return I.current.useContext(e)},t.useDebugValue=function(){},t.useDeferredValue=function(e){return I.current.useDeferredValue(e)},t.useEffect=function(e,t){return I.current.useEffect(e,t)},t.useId=function(){return I.current.useId()},t.useImperativeHandle=function(e,t,r){return I.current.useImperativeHandle(e,t,r)},t.useInsertionEffect=function(e,t){return I.current.useInsertionEffect(e,t)},t.useLayoutEffect=function(e,t){return I.current.useLayoutEffect(e,t)},t.useMemo=function(e,t){return I.current.useMemo(e,t)},t.useReducer=function(e,t,r){return I.current.useReducer(e,t,r)},t.useRef=function(e){return I.current.useRef(e)},t.useState=function(e){return I.current.useState(e)},t.useSyncExternalStore=function(e,t,r){return I.current.useSyncExternalStore(e,t,r)},t.useTransition=function(){return I.current.useTransition()},t.version="18.2.0"},791:function(e,t,r){e.exports=r(117)},184:function(e,t,r){r(374)}},t={};function r(n){var o=t[n];if(void 0!==o)return o.exports;var u=t[n]={exports:{}};return e[n](u,u.exports,r),u.exports}r(791),r(184)}();
3
- //# sourceMappingURL=main.7ff6957d.js.map