synapse-react-client 4.0.18 → 4.0.19
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/dist/SWC.index.d.ts +2 -0
- package/dist/SWC.index.d.ts.map +1 -1
- package/dist/SWC.index.js +3 -1
- package/dist/SWC.index.js.map +1 -1
- package/dist/components/DataExplorer/DataExplorer.css +1 -0
- package/dist/components/DataExplorer/DataExplorer.d.ts +13 -0
- package/dist/components/DataExplorer/DataExplorer.d.ts.map +1 -0
- package/dist/components/DataExplorer/DataExplorer.js +119 -0
- package/dist/components/DataExplorer/DataExplorer.js.map +1 -0
- package/dist/components/DataExplorer/DataExplorer.module.js +22 -0
- package/dist/components/DataExplorer/DataExplorer.module.js.map +1 -0
- package/dist/components/DataExplorer/DataExplorer.module.scss +156 -0
- package/dist/components/DataGrid/columns/AutocompleteColumn.d.ts.map +1 -1
- package/dist/components/DataGrid/columns/AutocompleteColumn.js +106 -102
- package/dist/components/DataGrid/columns/AutocompleteColumn.js.map +1 -1
- package/dist/components/DataGrid/columns/AutocompleteMultipleEnumColumn.d.ts.map +1 -1
- package/dist/components/DataGrid/columns/AutocompleteMultipleEnumColumn.js +97 -89
- package/dist/components/DataGrid/columns/AutocompleteMultipleEnumColumn.js.map +1 -1
- package/dist/components/DataGrid/columns/useGridAutocompleteState.d.ts +19 -8
- package/dist/components/DataGrid/columns/useGridAutocompleteState.d.ts.map +1 -1
- package/dist/components/DataGrid/columns/useGridAutocompleteState.js +64 -43
- package/dist/components/DataGrid/columns/useGridAutocompleteState.js.map +1 -1
- package/dist/components/DataGrid/components/UploadCsvToGridDialog.d.ts.map +1 -1
- package/dist/components/DataGrid/components/UploadCsvToGridDialog.js +9 -9
- package/dist/components/DataGrid/components/UploadCsvToGridDialog.js.map +1 -1
- package/dist/components/DataGrid/hooks/useGetSchemaForGrid.d.ts.map +1 -1
- package/dist/components/DataGrid/hooks/useGetSchemaForGrid.js +8 -1
- package/dist/components/DataGrid/hooks/useGetSchemaForGrid.js.map +1 -1
- package/dist/components/QueryVisualizationWrapper/QueryVisualizationWrapper.d.ts.map +1 -1
- package/dist/components/QueryVisualizationWrapper/QueryVisualizationWrapper.js +67 -65
- package/dist/components/QueryVisualizationWrapper/QueryVisualizationWrapper.js.map +1 -1
- package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.d.ts +1 -1
- package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.d.ts.map +1 -1
- package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.js +1 -0
- package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.js.map +1 -1
- package/dist/components/SearchQueryWrapperPlotNav/SearchQueryWrapperPlotNav.d.ts +1 -1
- package/dist/components/SearchQueryWrapperPlotNav/SearchQueryWrapperPlotNav.d.ts.map +1 -1
- package/dist/components/SearchQueryWrapperPlotNav/SearchQueryWrapperPlotNav.js +1 -0
- package/dist/components/SearchQueryWrapperPlotNav/SearchQueryWrapperPlotNav.js.map +1 -1
- package/dist/components/StandaloneQueryWrapper/StandaloneQueryWrapper.d.ts +1 -1
- package/dist/components/StandaloneQueryWrapper/StandaloneQueryWrapper.d.ts.map +1 -1
- package/dist/components/StandaloneQueryWrapper/StandaloneQueryWrapper.js.map +1 -1
- package/dist/components/TableColumnSchemaEditor/ColumnModelForm.js +9 -9
- package/dist/components/TableColumnSchemaEditor/ColumnModelFormFields/MultiValueField.js +4 -4
- package/dist/components/TableColumnSchemaEditor/TableColumnSchemaForm.js +25 -25
- package/dist/components/TableColumnSchemaEditor/TableColumnSchemaForm.js.map +1 -1
- package/dist/components/table/CsvPreview/CreateTableFromCsvDialog.d.ts +18 -0
- package/dist/components/table/CsvPreview/CreateTableFromCsvDialog.d.ts.map +1 -0
- package/dist/components/table/CsvPreview/CreateTableFromCsvDialog.js +116 -0
- package/dist/components/table/CsvPreview/CreateTableFromCsvDialog.js.map +1 -0
- package/dist/components/table/CsvPreview/CsvPreviewDialog.d.ts +5 -5
- package/dist/components/table/CsvPreview/CsvPreviewDialog.d.ts.map +1 -1
- package/dist/components/table/CsvPreview/CsvPreviewDialog.js +27 -76
- package/dist/components/table/CsvPreview/CsvPreviewDialog.js.map +1 -1
- package/dist/components/table/CsvPreview/CsvPreviewWithOptions.d.ts +19 -0
- package/dist/components/table/CsvPreview/CsvPreviewWithOptions.d.ts.map +1 -0
- package/dist/components/table/CsvPreview/CsvPreviewWithOptions.js +41 -0
- package/dist/components/table/CsvPreview/CsvPreviewWithOptions.js.map +1 -0
- package/dist/components/table/CsvPreview/CsvUploadPreviewContent.d.ts +12 -0
- package/dist/components/table/CsvPreview/CsvUploadPreviewContent.d.ts.map +1 -0
- package/dist/components/table/CsvPreview/CsvUploadPreviewContent.js +25 -0
- package/dist/components/table/CsvPreview/CsvUploadPreviewContent.js.map +1 -0
- package/dist/components/table/CsvPreview/UpdateTableWithCsvDialog.d.ts +18 -0
- package/dist/components/table/CsvPreview/UpdateTableWithCsvDialog.d.ts.map +1 -0
- package/dist/components/table/CsvPreview/UpdateTableWithCsvDialog.js +55 -0
- package/dist/components/table/CsvPreview/UpdateTableWithCsvDialog.js.map +1 -0
- package/dist/components/table/CsvPreview/useCreateTableFromCsv.d.ts +19 -0
- package/dist/components/table/CsvPreview/useCreateTableFromCsv.d.ts.map +1 -0
- package/dist/components/table/CsvPreview/useCreateTableFromCsv.js +35 -0
- package/dist/components/table/CsvPreview/useCreateTableFromCsv.js.map +1 -0
- package/dist/components/table/CsvPreview/useCsvUploadPreview.d.ts +22 -0
- package/dist/components/table/CsvPreview/useCsvUploadPreview.d.ts.map +1 -0
- package/dist/components/table/CsvPreview/useCsvUploadPreview.js +32 -0
- package/dist/components/table/CsvPreview/useCsvUploadPreview.js.map +1 -0
- package/dist/components/table/CsvPreview/useUploadCsvToExistingTable.d.ts +14 -0
- package/dist/components/table/CsvPreview/useUploadCsvToExistingTable.d.ts.map +1 -0
- package/dist/components/table/CsvPreview/useUploadCsvToExistingTable.js +23 -0
- package/dist/components/table/CsvPreview/useUploadCsvToExistingTable.js.map +1 -0
- package/dist/features/entity/metadata-task/components/CreateOrUpdateCurationTaskDialog.d.ts.map +1 -1
- package/dist/features/entity/metadata-task/components/CreateOrUpdateCurationTaskDialog.js +67 -67
- package/dist/features/entity/metadata-task/components/CreateOrUpdateCurationTaskDialog.js.map +1 -1
- package/dist/features/entity/metadata-task/components/MetadataTasksPage.d.ts.map +1 -1
- package/dist/features/entity/metadata-task/components/MetadataTasksPage.js +37 -34
- package/dist/features/entity/metadata-task/components/MetadataTasksPage.js.map +1 -1
- package/dist/features/entity/metadata-task/utils/constants.d.ts +6 -3
- package/dist/features/entity/metadata-task/utils/constants.d.ts.map +1 -1
- package/dist/features/entity/metadata-task/utils/constants.js +2 -2
- package/dist/features/entity/metadata-task/utils/constants.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/dist/utils/featureflag/FeatureFlags.d.ts +2 -1
- package/dist/utils/featureflag/FeatureFlags.d.ts.map +1 -1
- package/dist/utils/featureflag/FeatureFlags.js +1 -1
- package/dist/utils/featureflag/FeatureFlags.js.map +1 -1
- package/package.json +4 -4
|
@@ -3,10 +3,10 @@ import { useGridAutocompleteState as t } from "./useGridAutocompleteState.js";
|
|
|
3
3
|
import { memo as n, useEffect as r, useLayoutEffect as ee, useRef as te, useState as ne } from "react";
|
|
4
4
|
import { isNil as re } from "lodash-es";
|
|
5
5
|
import { Autocomplete as ie, TextField as ae } from "@mui/material";
|
|
6
|
-
import { jsx as
|
|
7
|
-
import { c as
|
|
6
|
+
import { jsx as oe } from "react/jsx-runtime";
|
|
7
|
+
import { c as se } from "react/compiler-runtime";
|
|
8
8
|
//#region src/components/DataGrid/columns/AutocompleteColumn.tsx
|
|
9
|
-
var
|
|
9
|
+
var ce = {
|
|
10
10
|
width: "100%",
|
|
11
11
|
height: "100%",
|
|
12
12
|
"& .MuiTextField-root .MuiInputBase-root": {
|
|
@@ -21,132 +21,136 @@ var se = {
|
|
|
21
21
|
},
|
|
22
22
|
"& .MuiFormControl-root": { height: "100%" }
|
|
23
23
|
};
|
|
24
|
-
function
|
|
24
|
+
function i(e) {
|
|
25
25
|
return re(e) ? "" : typeof e == "object" ? JSON.stringify(e) : String(e);
|
|
26
26
|
}
|
|
27
|
-
function
|
|
27
|
+
function le(e, t) {
|
|
28
28
|
return e == null || typeof e == "string" && e.trim() === "" ? t : e;
|
|
29
29
|
}
|
|
30
|
-
function
|
|
31
|
-
let
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
},
|
|
35
|
-
let
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
},
|
|
39
|
-
let
|
|
40
|
-
|
|
41
|
-
let
|
|
42
|
-
|
|
43
|
-
if (
|
|
44
|
-
let t = e(
|
|
45
|
-
|
|
30
|
+
function a(n) {
|
|
31
|
+
let a = se(61), { rowData: o, setRowData: s, choices: c, colType: l, focus: u, stopEditing: d, active: f, clearValue: de } = n, p = de === void 0 ? void 0 : de, m = te(s), h;
|
|
32
|
+
a[0] === s ? h = a[1] : (h = () => {
|
|
33
|
+
m.current = s;
|
|
34
|
+
}, a[0] = s, a[1] = h), ee(h);
|
|
35
|
+
let g = te(d), _;
|
|
36
|
+
a[2] === d ? _ = a[3] : (_ = () => {
|
|
37
|
+
g.current = d;
|
|
38
|
+
}, a[2] = d, a[3] = _), ee(_);
|
|
39
|
+
let v;
|
|
40
|
+
a[4] === o ? v = a[5] : (v = i(o), a[4] = o, a[5] = v);
|
|
41
|
+
let y = v, [b, fe] = ne(y), x;
|
|
42
|
+
a[6] !== p || a[7] !== l || a[8] !== b || a[9] !== y ? (x = () => {
|
|
43
|
+
if (b !== y) {
|
|
44
|
+
let t = e(b, l);
|
|
45
|
+
m.current(le(t, p));
|
|
46
46
|
}
|
|
47
|
-
},
|
|
48
|
-
let
|
|
49
|
-
|
|
50
|
-
active:
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
s[20] === c ? P = s[21] : (P = !re(c) && c !== "", s[20] = c, s[21] = P);
|
|
64
|
-
let ue = P, F = f ? void 0 : "none", I;
|
|
65
|
-
s[22] === F ? I = s[23] : (I = {
|
|
47
|
+
}, a[6] = p, a[7] = l, a[8] = b, a[9] = y, a[10] = x) : x = a[10];
|
|
48
|
+
let S;
|
|
49
|
+
a[11] !== f || a[12] !== u || a[13] !== d || a[14] !== x ? (S = {
|
|
50
|
+
active: f,
|
|
51
|
+
focus: u,
|
|
52
|
+
stopEditing: d,
|
|
53
|
+
onDeactivate: x
|
|
54
|
+
}, a[11] = f, a[12] = u, a[13] = d, a[14] = x, a[15] = S) : S = a[15];
|
|
55
|
+
let { menuIsOpen: C, inputRef: w, handleListboxMouseDown: T, notifyOptionCommitted: E, handleMenuOpen: D, handleClose: O, handlePopupIndicatorMouseDown: k } = t(S), A, j;
|
|
56
|
+
a[16] !== u || a[17] !== y ? (A = () => {
|
|
57
|
+
u || fe(y);
|
|
58
|
+
}, j = [u, y], a[16] = u, a[17] = y, a[18] = A, a[19] = j) : (A = a[18], j = a[19]), r(A, j);
|
|
59
|
+
let M;
|
|
60
|
+
a[20] === o ? M = a[21] : (M = !re(o) && o !== "", a[20] = o, a[21] = M);
|
|
61
|
+
let pe = M, N = u ? void 0 : "none", P;
|
|
62
|
+
a[22] === N ? P = a[23] : (P = {
|
|
66
63
|
padding: "0 10px",
|
|
67
64
|
backgroundColor: "inherit",
|
|
68
|
-
pointerEvents:
|
|
69
|
-
},
|
|
70
|
-
let
|
|
71
|
-
|
|
72
|
-
visibility:
|
|
65
|
+
pointerEvents: N
|
|
66
|
+
}, a[22] = N, a[23] = P);
|
|
67
|
+
let F = f ? "visible" : "hidden", I;
|
|
68
|
+
a[24] === F ? I = a[25] : (I = {
|
|
69
|
+
visibility: F,
|
|
73
70
|
pointerEvents: "auto"
|
|
74
|
-
},
|
|
75
|
-
let
|
|
76
|
-
|
|
77
|
-
visibility:
|
|
71
|
+
}, a[24] = F, a[25] = I);
|
|
72
|
+
let L = f ? "visible" : "hidden", R;
|
|
73
|
+
a[26] === L ? R = a[27] : (R = {
|
|
74
|
+
visibility: L,
|
|
78
75
|
pointerEvents: "auto"
|
|
79
|
-
},
|
|
80
|
-
let
|
|
81
|
-
|
|
82
|
-
let
|
|
83
|
-
|
|
84
|
-
...
|
|
85
|
-
"& .MuiAutocomplete-inputRoot":
|
|
86
|
-
"& .MuiAutocomplete-clearIndicator":
|
|
87
|
-
"& .MuiAutocomplete-popupIndicator":
|
|
88
|
-
"&:hover .MuiAutocomplete-clearIndicator":
|
|
89
|
-
"&:hover .MuiAutocomplete-popupIndicator":
|
|
90
|
-
},
|
|
91
|
-
let
|
|
92
|
-
|
|
93
|
-
e.key === "Tab" ? (e.preventDefault(),
|
|
94
|
-
},
|
|
95
|
-
let
|
|
96
|
-
|
|
97
|
-
if (
|
|
76
|
+
}, a[26] = L, a[27] = R);
|
|
77
|
+
let z, B;
|
|
78
|
+
a[28] === Symbol.for("react.memo_cache_sentinel") ? (z = { visibility: "visible" }, B = { visibility: "visible" }, a[28] = z, a[29] = B) : (z = a[28], B = a[29]);
|
|
79
|
+
let V;
|
|
80
|
+
a[30] !== P || a[31] !== I || a[32] !== R ? (V = {
|
|
81
|
+
...ce,
|
|
82
|
+
"& .MuiAutocomplete-inputRoot": P,
|
|
83
|
+
"& .MuiAutocomplete-clearIndicator": I,
|
|
84
|
+
"& .MuiAutocomplete-popupIndicator": R,
|
|
85
|
+
"&:hover .MuiAutocomplete-clearIndicator": z,
|
|
86
|
+
"&:hover .MuiAutocomplete-popupIndicator": B
|
|
87
|
+
}, a[30] = P, a[31] = I, a[32] = R, a[33] = V) : V = a[33];
|
|
88
|
+
let H = V, U;
|
|
89
|
+
a[34] === Symbol.for("react.memo_cache_sentinel") ? (U = (e) => {
|
|
90
|
+
e.key === "Tab" ? (e.preventDefault(), g.current({ nextRow: !1 })) : e.key === "Enter" && (e.preventDefault(), g.current({ nextRow: !0 }));
|
|
91
|
+
}, a[34] = U) : U = a[34];
|
|
92
|
+
let me = U, W;
|
|
93
|
+
a[35] !== p || a[36] !== l || a[37] !== E ? (W = (t, n, r) => {
|
|
94
|
+
if (E(), r === "clear") m.current(p);
|
|
98
95
|
else if (r === "createOption") {
|
|
99
|
-
let t = e(n,
|
|
100
|
-
|
|
101
|
-
} else
|
|
96
|
+
let t = e(n, l);
|
|
97
|
+
m.current(le(t, p));
|
|
98
|
+
} else m.current(n);
|
|
102
99
|
setTimeout(() => {
|
|
103
|
-
|
|
100
|
+
g.current({ nextRow: !1 });
|
|
104
101
|
}, 0);
|
|
105
|
-
},
|
|
106
|
-
let
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
},
|
|
102
|
+
}, a[35] = p, a[36] = l, a[37] = E, a[38] = W) : W = a[38];
|
|
103
|
+
let G = W, K = !pe, q = o, J;
|
|
104
|
+
a[39] === Symbol.for("react.memo_cache_sentinel") ? (J = (e, t) => {
|
|
105
|
+
fe(t);
|
|
106
|
+
}, a[39] = J) : J = a[39];
|
|
107
|
+
let Y;
|
|
108
|
+
a[40] === T ? Y = a[41] : (Y = { onMouseDown: T }, a[40] = T, a[41] = Y);
|
|
109
|
+
let X;
|
|
110
|
+
a[42] === k ? X = a[43] : (X = { onMouseDown: k }, a[42] = k, a[43] = X);
|
|
110
111
|
let Z;
|
|
111
|
-
|
|
112
|
+
a[44] !== Y || a[45] !== X ? (Z = {
|
|
113
|
+
listbox: Y,
|
|
114
|
+
popupIndicator: X
|
|
115
|
+
}, a[44] = Y, a[45] = X, a[46] = Z) : Z = a[46];
|
|
112
116
|
let Q;
|
|
113
|
-
|
|
117
|
+
a[47] === w ? Q = a[48] : (Q = (e) => /* @__PURE__ */ oe(ae, {
|
|
114
118
|
...e,
|
|
115
|
-
inputRef:
|
|
116
|
-
}),
|
|
119
|
+
inputRef: w
|
|
120
|
+
}), a[47] = w, a[48] = Q);
|
|
117
121
|
let $;
|
|
118
|
-
return
|
|
119
|
-
open:
|
|
120
|
-
onOpen:
|
|
122
|
+
return a[49] !== H || a[50] !== c || a[51] !== G || a[52] !== O || a[53] !== D || a[54] !== b || a[55] !== C || a[56] !== K || a[57] !== q || a[58] !== Z || a[59] !== Q ? ($ = /* @__PURE__ */ oe(ie, {
|
|
123
|
+
open: C,
|
|
124
|
+
onOpen: D,
|
|
121
125
|
forcePopupIcon: !0,
|
|
122
|
-
disableClearable:
|
|
126
|
+
disableClearable: K,
|
|
123
127
|
freeSolo: !0,
|
|
124
128
|
disablePortal: !1,
|
|
125
|
-
options:
|
|
129
|
+
options: c,
|
|
126
130
|
selectOnFocus: !0,
|
|
127
|
-
getOptionLabel:
|
|
128
|
-
value:
|
|
129
|
-
inputValue:
|
|
130
|
-
onInputChange:
|
|
131
|
-
onKeyDown:
|
|
132
|
-
onClose:
|
|
133
|
-
onChange:
|
|
131
|
+
getOptionLabel: ue,
|
|
132
|
+
value: q,
|
|
133
|
+
inputValue: b,
|
|
134
|
+
onInputChange: J,
|
|
135
|
+
onKeyDown: me,
|
|
136
|
+
onClose: O,
|
|
137
|
+
onChange: G,
|
|
134
138
|
blurOnSelect: !0,
|
|
135
139
|
slotProps: Z,
|
|
136
140
|
renderInput: Q,
|
|
137
|
-
sx:
|
|
138
|
-
}),
|
|
141
|
+
sx: H
|
|
142
|
+
}), a[49] = H, a[50] = c, a[51] = G, a[52] = O, a[53] = D, a[54] = b, a[55] = C, a[56] = K, a[57] = q, a[58] = Z, a[59] = Q, a[60] = $) : $ = a[60], $;
|
|
139
143
|
}
|
|
140
|
-
function
|
|
141
|
-
return
|
|
144
|
+
function ue(e) {
|
|
145
|
+
return i(e);
|
|
142
146
|
}
|
|
143
|
-
function
|
|
147
|
+
function o(e, t) {
|
|
144
148
|
return e.rowData === t.rowData && e.choices === t.choices && e.colType === t.colType && e.focus === t.focus && e.active === t.active && e.clearValue === t.clearValue;
|
|
145
149
|
}
|
|
146
|
-
var
|
|
147
|
-
function
|
|
150
|
+
var s = n(a, o);
|
|
151
|
+
function c({ choices: e, colType: t, clearValue: n }) {
|
|
148
152
|
return {
|
|
149
|
-
component: ((r) => /* @__PURE__ */
|
|
153
|
+
component: ((r) => /* @__PURE__ */ oe(s, {
|
|
150
154
|
...r,
|
|
151
155
|
choices: e,
|
|
152
156
|
colType: t,
|
|
@@ -159,6 +163,6 @@ function u({ choices: e, colType: t, clearValue: n }) {
|
|
|
159
163
|
};
|
|
160
164
|
}
|
|
161
165
|
//#endregion
|
|
162
|
-
export {
|
|
166
|
+
export { a as AutocompleteCell, s as MemoizedAutocompleteCell, o as areAutocompleteCellPropsEqual, c as autocompleteColumn, i as castCellValueToString };
|
|
163
167
|
|
|
164
168
|
//# sourceMappingURL=AutocompleteColumn.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AutocompleteColumn.js","names":["parseFreeTextGivenJsonSchemaType","Autocomplete","AutocompleteChangeReason","SxProps","TextField","Theme","JSONSchema7Type","isNil","memo","useCallback","useEffect","useLayoutEffect","useMemo","useRef","useState","CellComponent","CellProps","Column","useGridAutocompleteState","AUTOCOMPLETE_BASE_SX","width","height","padding","backgroundColor","borderRadius","AutocompleteOption","Record","Array","AutocompleteCellProps","rowData","setRowData","value","choices","colType","clearValue","castCellValueToString","toCast","JSON","stringify","String","commitParsedValue","parsed","undefined","trim","AutocompleteCell","t0","$","_c","focus","stopEditing","active","t1","setRowDataRef","t2","current","stopEditingRef","t3","t4","rowDataAsString","localInputState","setLocalInputState","t5","t6","onDeactivate","menuIsOpen","inputRef","handleListboxMouseDown","notifyOptionCommitted","handleMenuOpen","handleClose","t7","t8","t9","hasValue","t10","t11","pointerEvents","t12","t13","visibility","t14","t15","t16","t17","Symbol","for","t18","autocompleteSx","t19","e","key","preventDefault","nextRow","handleKeyDown","t20","_e","newVal","reason","parsed_0","setTimeout","handleChange","t21","t22","t23","_","newInputValue","t24","listbox","onMouseDown","t25","params","t26","_temp","option","areAutocompleteCellPropsEqual","prevProps","nextProps","MemoizedAutocompleteCell","AutocompleteColumnProps","autocompleteColumn","Partial","component","props","Omit","copyValue","pasteValue","disableKeys","keepFocus"],"sources":["../../../../src/components/DataGrid/columns/AutocompleteColumn.tsx"],"sourcesContent":["import parseFreeTextGivenJsonSchemaType from '@/components/DataGrid/utils/parseFreeTextUsingJsonSchemaType'\nimport {\n Autocomplete,\n AutocompleteChangeReason,\n SxProps,\n TextField,\n Theme,\n} from '@mui/material'\nimport { JSONSchema7Type } from 'json-schema'\nimport { isNil } from 'lodash-es'\nimport {\n memo,\n useCallback,\n useEffect,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n} from 'react'\nimport {\n CellComponent,\n CellProps,\n Column,\n} from '@sage-bionetworks/react-datasheet-grid'\nimport { useGridAutocompleteState } from './useGridAutocompleteState'\n\n// Static styles extracted to avoid recreation on every render\nconst AUTOCOMPLETE_BASE_SX: SxProps<Theme> = {\n width: '100%',\n height: '100%',\n '& .MuiTextField-root .MuiInputBase-root': {\n height: '100%',\n padding: '0 10px',\n backgroundColor: 'inherit',\n borderRadius: 0,\n },\n '& .MuiAutocomplete-inputRoot': {\n padding: '0 10px',\n backgroundColor: 'inherit',\n },\n '& .MuiFormControl-root': { height: '100%' },\n}\n\nexport type AutocompleteOption =\n | string\n | number\n | boolean\n | null\n | Record<string, unknown>\n | Array<unknown>\n\nexport type AutocompleteCellProps = CellProps & {\n rowData: AutocompleteOption\n setRowData: (value: AutocompleteOption) => void\n choices: AutocompleteOption[]\n colType?: JSONSchema7Type\n clearValue?: undefined | null\n}\n\nexport function castCellValueToString(toCast: any): string {\n if (isNil(toCast)) {\n return ''\n }\n if (typeof toCast === 'object') {\n return JSON.stringify(toCast)\n }\n return String(toCast)\n}\n\n// Free-text typed/pasted into the cell parses to \"\" for empty input. Committing\n// \"\" leaves the cell as an empty string, which fails enum validation with a\n// terse \"is not a valid enum value\" message. Substitute the column's clearValue\n// (null for required, undefined for optional) so the commit path matches the\n// X-button clear path and the validator surfaces the substantive message.\nfunction commitParsedValue(\n parsed: unknown,\n clearValue: undefined | null,\n): unknown {\n if (\n parsed === null ||\n parsed === undefined ||\n (typeof parsed === 'string' && parsed.trim() === '')\n ) {\n return clearValue\n }\n return parsed\n}\n\nexport function AutocompleteCell({\n rowData,\n setRowData,\n choices,\n colType,\n focus,\n stopEditing,\n active,\n clearValue = undefined,\n}: AutocompleteCellProps) {\n // Stable refs so memo(AutocompleteCell) can use default shallow comparison —\n // react-datasheet-grid recreates these functions on every render, but their\n // behavior is stable for a given cell position.\n const setRowDataRef = useRef(setRowData)\n useLayoutEffect(() => {\n setRowDataRef.current = setRowData\n })\n const stopEditingRef = useRef(stopEditing)\n useLayoutEffect(() => {\n stopEditingRef.current = stopEditing\n })\n\n const rowDataAsString = castCellValueToString(rowData)\n const [localInputState, setLocalInputState] =\n useState<string>(rowDataAsString)\n\n const {\n menuIsOpen,\n inputRef,\n handleListboxMouseDown,\n notifyOptionCommitted,\n handleMenuOpen,\n handleClose,\n } = useGridAutocompleteState({\n active,\n stopEditing,\n onDeactivate: () => {\n if (localInputState !== rowDataAsString) {\n // Commit any free-typed text that hasn't been saved yet\n const parsed = parseFreeTextGivenJsonSchemaType(\n localInputState,\n colType,\n )\n setRowDataRef.current(\n commitParsedValue(parsed, clearValue) as AutocompleteOption,\n )\n }\n },\n })\n\n // When not actively being edited, sync localInputState with rowData (e.g. after cut)\n useEffect(() => {\n if (!focus && !active) {\n setLocalInputState(rowDataAsString)\n }\n }, [focus, active, rowDataAsString])\n\n const hasValue = !isNil(rowData) && rowData !== ''\n\n // Memoize sx to avoid recreation — dynamic styles change based on active/focus state\n const autocompleteSx = useMemo<SxProps<Theme>>(\n () => ({\n ...AUTOCOMPLETE_BASE_SX,\n '& .MuiAutocomplete-inputRoot': {\n padding: '0 10px',\n backgroundColor: 'inherit',\n pointerEvents: focus ? undefined : 'none',\n },\n '& .MuiAutocomplete-clearIndicator': {\n visibility: active ? 'visible' : 'hidden',\n pointerEvents: 'auto',\n },\n '& .MuiAutocomplete-popupIndicator': {\n visibility: active ? 'visible' : 'hidden',\n pointerEvents: 'auto',\n },\n '&:hover .MuiAutocomplete-clearIndicator': {\n visibility: 'visible',\n },\n '&:hover .MuiAutocomplete-popupIndicator': {\n visibility: 'visible',\n },\n }),\n [active, focus],\n )\n\n const handleKeyDown = useCallback((e: React.KeyboardEvent) => {\n if (e.key === 'Tab') {\n e.preventDefault()\n stopEditingRef.current({ nextRow: false })\n } else if (e.key === 'Enter') {\n e.preventDefault()\n stopEditingRef.current({ nextRow: true })\n }\n }, [])\n\n const handleChange = useCallback(\n (\n _e: React.SyntheticEvent,\n newVal: unknown,\n reason: AutocompleteChangeReason,\n ) => {\n notifyOptionCommitted()\n if (reason === 'clear') {\n setRowDataRef.current(clearValue)\n } else if (reason === 'createOption') {\n // The user typed an option that wasn't a defined enum — cast to correct type\n const parsed = parseFreeTextGivenJsonSchemaType(\n newVal as string,\n colType,\n )\n setRowDataRef.current(\n commitParsedValue(parsed, clearValue) as AutocompleteOption,\n )\n } else {\n setRowDataRef.current(newVal as AutocompleteOption)\n }\n setTimeout(() => {\n stopEditingRef.current({ nextRow: false })\n }, 0)\n },\n [clearValue, colType, notifyOptionCommitted],\n )\n\n return (\n <Autocomplete\n open={menuIsOpen}\n onOpen={handleMenuOpen}\n forcePopupIcon={true}\n disableClearable={!hasValue}\n freeSolo={true}\n disablePortal={false}\n options={choices}\n selectOnFocus\n getOptionLabel={option => castCellValueToString(option)}\n value={rowData as AutocompleteOption}\n inputValue={localInputState}\n onInputChange={(_, newInputValue) => {\n setLocalInputState(newInputValue)\n }}\n onKeyDown={handleKeyDown}\n onClose={handleClose}\n onChange={handleChange}\n blurOnSelect={true}\n slotProps={{\n listbox: { onMouseDown: handleListboxMouseDown },\n }}\n renderInput={params => <TextField {...params} inputRef={inputRef} />}\n sx={autocompleteSx}\n />\n )\n}\n\n// Memoize the cell component to prevent unnecessary re-renders.\n// react-datasheet-grid provides new setRowData/stopEditing function instances\n// on each render, so we must ignore those callback identities here and only\n// compare the props that affect rendering.\nexport function areAutocompleteCellPropsEqual(\n prevProps: AutocompleteCellProps,\n nextProps: AutocompleteCellProps,\n) {\n return (\n prevProps.rowData === nextProps.rowData &&\n prevProps.choices === nextProps.choices &&\n prevProps.colType === nextProps.colType &&\n prevProps.focus === nextProps.focus &&\n prevProps.active === nextProps.active &&\n prevProps.clearValue === nextProps.clearValue\n )\n}\n\nexport const MemoizedAutocompleteCell = memo(\n AutocompleteCell,\n areAutocompleteCellPropsEqual,\n)\nexport type AutocompleteColumnProps = {\n choices: AutocompleteOption[]\n colType?: JSONSchema7Type\n clearValue: undefined | null\n}\n\nexport function autocompleteColumn({\n choices,\n colType,\n clearValue,\n}: AutocompleteColumnProps): Partial<Column> {\n return {\n component: ((props: Omit<AutocompleteCellProps, 'choices'>) => (\n <MemoizedAutocompleteCell\n {...props}\n choices={choices}\n colType={colType}\n clearValue={clearValue}\n />\n )) as CellComponent,\n // If we update our enums to support labels, then we can update copy to copy the label and paste to lookup the mapping from label -> value\n copyValue: ({ rowData }) => rowData,\n pasteValue: ({ value }) => value,\n disableKeys: true,\n keepFocus: true,\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"AutocompleteColumn.js","names":["parseFreeTextGivenJsonSchemaType","Autocomplete","AutocompleteChangeReason","SxProps","TextField","Theme","JSONSchema7Type","isNil","memo","useCallback","useEffect","useLayoutEffect","useMemo","useRef","useState","CellComponent","CellProps","Column","useGridAutocompleteState","AUTOCOMPLETE_BASE_SX","width","height","padding","backgroundColor","borderRadius","AutocompleteOption","Record","Array","AutocompleteCellProps","rowData","setRowData","value","choices","colType","clearValue","castCellValueToString","toCast","JSON","stringify","String","commitParsedValue","parsed","undefined","trim","AutocompleteCell","t0","$","_c","focus","stopEditing","active","t1","setRowDataRef","t2","current","stopEditingRef","t3","t4","rowDataAsString","localInputState","setLocalInputState","t5","t6","onDeactivate","menuIsOpen","inputRef","handleListboxMouseDown","notifyOptionCommitted","handleMenuOpen","handleClose","handlePopupIndicatorMouseDown","t7","t8","t9","hasValue","t10","t11","pointerEvents","t12","t13","visibility","t14","t15","t16","t17","Symbol","for","t18","autocompleteSx","t19","e","key","preventDefault","nextRow","handleKeyDown","t20","_e","newVal","reason","parsed_0","setTimeout","handleChange","t21","t22","t23","_","newInputValue","t24","onMouseDown","t25","t26","listbox","popupIndicator","t27","params","t28","_temp","option","areAutocompleteCellPropsEqual","prevProps","nextProps","MemoizedAutocompleteCell","AutocompleteColumnProps","autocompleteColumn","Partial","component","props","Omit","copyValue","pasteValue","disableKeys","keepFocus"],"sources":["../../../../src/components/DataGrid/columns/AutocompleteColumn.tsx"],"sourcesContent":["import parseFreeTextGivenJsonSchemaType from '@/components/DataGrid/utils/parseFreeTextUsingJsonSchemaType'\nimport {\n Autocomplete,\n AutocompleteChangeReason,\n SxProps,\n TextField,\n Theme,\n} from '@mui/material'\nimport { JSONSchema7Type } from 'json-schema'\nimport { isNil } from 'lodash-es'\nimport {\n memo,\n useCallback,\n useEffect,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n} from 'react'\nimport {\n CellComponent,\n CellProps,\n Column,\n} from '@sage-bionetworks/react-datasheet-grid'\nimport { useGridAutocompleteState } from './useGridAutocompleteState'\n\n// Static styles extracted to avoid recreation on every render\nconst AUTOCOMPLETE_BASE_SX: SxProps<Theme> = {\n width: '100%',\n height: '100%',\n '& .MuiTextField-root .MuiInputBase-root': {\n height: '100%',\n padding: '0 10px',\n backgroundColor: 'inherit',\n borderRadius: 0,\n },\n '& .MuiAutocomplete-inputRoot': {\n padding: '0 10px',\n backgroundColor: 'inherit',\n },\n '& .MuiFormControl-root': { height: '100%' },\n}\n\nexport type AutocompleteOption =\n | string\n | number\n | boolean\n | null\n | Record<string, unknown>\n | Array<unknown>\n\nexport type AutocompleteCellProps = CellProps & {\n rowData: AutocompleteOption\n setRowData: (value: AutocompleteOption) => void\n choices: AutocompleteOption[]\n colType?: JSONSchema7Type\n clearValue?: undefined | null\n}\n\nexport function castCellValueToString(toCast: any): string {\n if (isNil(toCast)) {\n return ''\n }\n if (typeof toCast === 'object') {\n return JSON.stringify(toCast)\n }\n return String(toCast)\n}\n\n// Free-text typed/pasted into the cell parses to \"\" for empty input. Committing\n// \"\" leaves the cell as an empty string, which fails enum validation with a\n// terse \"is not a valid enum value\" message. Substitute the column's clearValue\n// (null for required, undefined for optional) so the commit path matches the\n// X-button clear path and the validator surfaces the substantive message.\nfunction commitParsedValue(\n parsed: unknown,\n clearValue: undefined | null,\n): unknown {\n if (\n parsed === null ||\n parsed === undefined ||\n (typeof parsed === 'string' && parsed.trim() === '')\n ) {\n return clearValue\n }\n return parsed\n}\n\nexport function AutocompleteCell({\n rowData,\n setRowData,\n choices,\n colType,\n focus,\n stopEditing,\n active,\n clearValue = undefined,\n}: AutocompleteCellProps) {\n // Stable refs so memo(AutocompleteCell) can use default shallow comparison —\n // react-datasheet-grid recreates these functions on every render, but their\n // behavior is stable for a given cell position.\n const setRowDataRef = useRef(setRowData)\n useLayoutEffect(() => {\n setRowDataRef.current = setRowData\n })\n const stopEditingRef = useRef(stopEditing)\n useLayoutEffect(() => {\n stopEditingRef.current = stopEditing\n })\n\n const rowDataAsString = castCellValueToString(rowData)\n const [localInputState, setLocalInputState] =\n useState<string>(rowDataAsString)\n\n const {\n menuIsOpen,\n inputRef,\n handleListboxMouseDown,\n notifyOptionCommitted,\n handleMenuOpen,\n handleClose,\n handlePopupIndicatorMouseDown,\n } = useGridAutocompleteState({\n active,\n focus,\n stopEditing,\n onDeactivate: () => {\n if (localInputState !== rowDataAsString) {\n // Commit any free-typed text that hasn't been saved yet\n const parsed = parseFreeTextGivenJsonSchemaType(\n localInputState,\n colType,\n )\n setRowDataRef.current(\n commitParsedValue(parsed, clearValue) as AutocompleteOption,\n )\n }\n },\n })\n\n // Sync localInputState with rowData whenever the cell isn't being edited.\n // Covers: deletes/cuts from active-but-not-focused state, Escape (grid flips\n // focus=false while active stays true, so the gate must allow this case),\n // and post-commit cleanup after the cell exits edit mode.\n useEffect(() => {\n if (!focus) {\n setLocalInputState(rowDataAsString)\n }\n }, [focus, rowDataAsString])\n\n const hasValue = !isNil(rowData) && rowData !== ''\n\n // Memoize sx to avoid recreation — dynamic styles change based on active/focus state\n const autocompleteSx = useMemo<SxProps<Theme>>(\n () => ({\n ...AUTOCOMPLETE_BASE_SX,\n '& .MuiAutocomplete-inputRoot': {\n padding: '0 10px',\n backgroundColor: 'inherit',\n pointerEvents: focus ? undefined : 'none',\n },\n '& .MuiAutocomplete-clearIndicator': {\n visibility: active ? 'visible' : 'hidden',\n pointerEvents: 'auto',\n },\n '& .MuiAutocomplete-popupIndicator': {\n visibility: active ? 'visible' : 'hidden',\n pointerEvents: 'auto',\n },\n '&:hover .MuiAutocomplete-clearIndicator': {\n visibility: 'visible',\n },\n '&:hover .MuiAutocomplete-popupIndicator': {\n visibility: 'visible',\n },\n }),\n [active, focus],\n )\n\n const handleKeyDown = useCallback((e: React.KeyboardEvent) => {\n if (e.key === 'Tab') {\n e.preventDefault()\n stopEditingRef.current({ nextRow: false })\n } else if (e.key === 'Enter') {\n e.preventDefault()\n stopEditingRef.current({ nextRow: true })\n }\n }, [])\n\n const handleChange = useCallback(\n (\n _e: React.SyntheticEvent,\n newVal: unknown,\n reason: AutocompleteChangeReason,\n ) => {\n notifyOptionCommitted()\n if (reason === 'clear') {\n setRowDataRef.current(clearValue)\n } else if (reason === 'createOption') {\n // The user typed an option that wasn't a defined enum — cast to correct type\n const parsed = parseFreeTextGivenJsonSchemaType(\n newVal as string,\n colType,\n )\n setRowDataRef.current(\n commitParsedValue(parsed, clearValue) as AutocompleteOption,\n )\n } else {\n setRowDataRef.current(newVal as AutocompleteOption)\n }\n setTimeout(() => {\n stopEditingRef.current({ nextRow: false })\n }, 0)\n },\n [clearValue, colType, notifyOptionCommitted],\n )\n\n return (\n <Autocomplete\n open={menuIsOpen}\n onOpen={handleMenuOpen}\n forcePopupIcon={true}\n disableClearable={!hasValue}\n freeSolo={true}\n disablePortal={false}\n options={choices}\n selectOnFocus\n getOptionLabel={option => castCellValueToString(option)}\n value={rowData as AutocompleteOption}\n inputValue={localInputState}\n onInputChange={(_, newInputValue) => {\n setLocalInputState(newInputValue)\n }}\n onKeyDown={handleKeyDown}\n onClose={handleClose}\n onChange={handleChange}\n blurOnSelect={true}\n slotProps={{\n listbox: { onMouseDown: handleListboxMouseDown },\n popupIndicator: { onMouseDown: handlePopupIndicatorMouseDown },\n }}\n renderInput={params => <TextField {...params} inputRef={inputRef} />}\n sx={autocompleteSx}\n />\n )\n}\n\n// Memoize the cell component to prevent unnecessary re-renders.\n// react-datasheet-grid provides new setRowData/stopEditing function instances\n// on each render, so we must ignore those callback identities here and only\n// compare the props that affect rendering.\nexport function areAutocompleteCellPropsEqual(\n prevProps: AutocompleteCellProps,\n nextProps: AutocompleteCellProps,\n) {\n return (\n prevProps.rowData === nextProps.rowData &&\n prevProps.choices === nextProps.choices &&\n prevProps.colType === nextProps.colType &&\n prevProps.focus === nextProps.focus &&\n prevProps.active === nextProps.active &&\n prevProps.clearValue === nextProps.clearValue\n )\n}\n\nexport const MemoizedAutocompleteCell = memo(\n AutocompleteCell,\n areAutocompleteCellPropsEqual,\n)\nexport type AutocompleteColumnProps = {\n choices: AutocompleteOption[]\n colType?: JSONSchema7Type\n clearValue: undefined | null\n}\n\nexport function autocompleteColumn({\n choices,\n colType,\n clearValue,\n}: AutocompleteColumnProps): Partial<Column> {\n return {\n component: ((props: Omit<AutocompleteCellProps, 'choices'>) => (\n <MemoizedAutocompleteCell\n {...props}\n choices={choices}\n colType={colType}\n clearValue={clearValue}\n />\n )) as CellComponent,\n // If we update our enums to support labels, then we can update copy to copy the label and paste to lookup the mapping from label -> value\n copyValue: ({ rowData }) => rowData,\n pasteValue: ({ value }) => value,\n disableKeys: true,\n keepFocus: true,\n }\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AutocompleteMultipleEnumColumn.d.ts","sourceRoot":"","sources":["../../../../src/components/DataGrid/columns/AutocompleteMultipleEnumColumn.tsx"],"names":[],"mappings":"AASA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAS7C,OAAO,EAAiB,MAAM,EAAE,MAAM,wCAAwC,CAAA;AAC9E,OAAO,EAEL,qBAAqB,EAErB,kBAAkB,EACnB,MAAM,sBAAsB,CAAA;AA+B7B,MAAM,MAAM,8BAA8B,GAAG,kBAAkB,CAAA;AAE/D,MAAM,MAAM,iCAAiC,GAAG,IAAI,CAClD,qBAAqB,EACrB,SAAS,CACV,GAAG;IACF,OAAO,EAAE,8BAA8B,EAAE,CAAA;IACzC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,SAAS,GAAG,IAAI,CAAA;CAC9B,CAAA;
|
|
1
|
+
{"version":3,"file":"AutocompleteMultipleEnumColumn.d.ts","sourceRoot":"","sources":["../../../../src/components/DataGrid/columns/AutocompleteMultipleEnumColumn.tsx"],"names":[],"mappings":"AASA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAS7C,OAAO,EAAiB,MAAM,EAAE,MAAM,wCAAwC,CAAA;AAC9E,OAAO,EAEL,qBAAqB,EAErB,kBAAkB,EACnB,MAAM,sBAAsB,CAAA;AA+B7B,MAAM,MAAM,8BAA8B,GAAG,kBAAkB,CAAA;AAE/D,MAAM,MAAM,iCAAiC,GAAG,IAAI,CAClD,qBAAqB,EACrB,SAAS,CACV,GAAG;IACF,OAAO,EAAE,8BAA8B,EAAE,CAAA;IACzC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,SAAS,GAAG,IAAI,CAAA;CAC9B,CAAA;AA8OD,wBAAgB,yCAAyC,CACvD,SAAS,EAAE,iCAAiC,EAC5C,SAAS,EAAE,iCAAiC,WAM7C;AAOD,MAAM,MAAM,mCAAmC,GAAG;IAChD,OAAO,EAAE,8BAA8B,EAAE,CAAA;IACzC,OAAO,CAAC,EAAE,eAAe,CAAA;IACzB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,UAAU,CAAC,EAAE,SAAS,GAAG,IAAI,CAAA;CAC9B,CAAA;AAED,wBAAgB,8BAA8B,CAAC,EAC7C,OAAO,EACP,OAAO,EACP,SAAa,EACb,aAAqB,EACrB,UAAsB,GACvB,EAAE,mCAAmC,GAAG,OAAO,CAAC,MAAM,CAAC,CAoDvD"}
|
|
@@ -32,144 +32,152 @@ function c(e) {
|
|
|
32
32
|
return Array.isArray(e) ? e : se(e) ? [] : [e];
|
|
33
33
|
}
|
|
34
34
|
function l(n) {
|
|
35
|
-
let r = oe(
|
|
36
|
-
r[0] === s ?
|
|
37
|
-
|
|
38
|
-
}, r[0] = s, r[1] =
|
|
39
|
-
let [
|
|
40
|
-
r[2] !== f || r[3] !== p ? (
|
|
35
|
+
let r = oe(79), { rowData: a, setRowData: s, choices: l, colType: u, limitTags: d, active: f, focus: p, stopEditing: m, clearValue: me } = n, h = d === void 0 ? 2 : d, he = me === void 0 ? void 0 : me, ge = te(s), g;
|
|
36
|
+
r[0] === s ? g = r[1] : (g = () => {
|
|
37
|
+
ge.current = s;
|
|
38
|
+
}, r[0] = s, r[1] = g), ee(g);
|
|
39
|
+
let [_, _e] = ne(""), v;
|
|
40
|
+
r[2] !== f || r[3] !== p || r[4] !== m ? (v = {
|
|
41
41
|
active: f,
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
42
|
+
focus: p,
|
|
43
|
+
stopEditing: m
|
|
44
|
+
}, r[2] = f, r[3] = p, r[4] = m, r[5] = v) : v = r[5];
|
|
45
|
+
let { menuIsOpen: ve, setMenuIsOpen: ye, inputRef: be, activeRef: xe, handleListboxMouseDown: Se, notifyOptionCommitted: Ce, handleMenuOpen: y, handleClose: b, handlePopupIndicatorMouseDown: x } = t(v), S, C, w, T, E;
|
|
46
|
+
if (r[6] !== f || r[7] !== l || r[8] !== h || r[9] !== a) {
|
|
47
|
+
w = c(a);
|
|
47
48
|
let e;
|
|
48
|
-
r[
|
|
49
|
-
} else
|
|
50
|
-
let
|
|
51
|
-
r[
|
|
52
|
-
let
|
|
53
|
-
r[
|
|
49
|
+
r[15] === l ? e = r[16] : (e = l.map(ue), r[15] = l, r[16] = e), C = e, T = w.map(ue), S = f ? -1 : h, E = w.length > 0 ? w.map(pe).join(",") : "", r[6] = f, r[7] = l, r[8] = h, r[9] = a, r[10] = S, r[11] = C, r[12] = w, r[13] = T, r[14] = E;
|
|
50
|
+
} else S = r[10], C = r[11], w = r[12], T = r[13], E = r[14];
|
|
51
|
+
let D = E, O;
|
|
52
|
+
r[17] === a ? O = r[18] : (O = !se(a) && a !== "", r[17] = a, r[18] = O);
|
|
53
|
+
let we = O, k = p ? void 0 : "none", A = f ? "wrap" : "nowrap", j = f ? "auto" : "hidden", M, N, P, F;
|
|
54
|
+
r[19] === Symbol.for("react.memo_cache_sentinel") ? (M = {
|
|
54
55
|
width: "6px",
|
|
55
56
|
height: "6px"
|
|
56
|
-
},
|
|
57
|
+
}, N = { background: "transparent" }, P = {
|
|
57
58
|
background: "#888",
|
|
58
59
|
borderRadius: "3px"
|
|
59
|
-
},
|
|
60
|
-
let
|
|
61
|
-
r[
|
|
62
|
-
pointerEvents:
|
|
60
|
+
}, F = { background: "#555" }, r[19] = M, r[20] = N, r[21] = P, r[22] = F) : (M = r[19], N = r[20], P = r[21], F = r[22]);
|
|
61
|
+
let I;
|
|
62
|
+
r[23] !== k || r[24] !== A || r[25] !== j ? (I = {
|
|
63
|
+
pointerEvents: k,
|
|
63
64
|
padding: "0 10px",
|
|
64
65
|
backgroundColor: "inherit",
|
|
65
|
-
flexWrap:
|
|
66
|
+
flexWrap: A,
|
|
66
67
|
minHeight: "100%",
|
|
67
68
|
maxHeight: "100%",
|
|
68
|
-
overflowY:
|
|
69
|
+
overflowY: j,
|
|
69
70
|
overflowX: "hidden",
|
|
70
|
-
"&::-webkit-scrollbar":
|
|
71
|
-
"&::-webkit-scrollbar-track":
|
|
72
|
-
"&::-webkit-scrollbar-thumb":
|
|
73
|
-
"&::-webkit-scrollbar-thumb:hover":
|
|
74
|
-
}, r[
|
|
75
|
-
let
|
|
76
|
-
r[
|
|
77
|
-
visibility:
|
|
71
|
+
"&::-webkit-scrollbar": M,
|
|
72
|
+
"&::-webkit-scrollbar-track": N,
|
|
73
|
+
"&::-webkit-scrollbar-thumb": P,
|
|
74
|
+
"&::-webkit-scrollbar-thumb:hover": F
|
|
75
|
+
}, r[23] = k, r[24] = A, r[25] = j, r[26] = I) : I = r[26];
|
|
76
|
+
let L = f ? "visible" : "hidden", R;
|
|
77
|
+
r[27] === L ? R = r[28] : (R = {
|
|
78
|
+
visibility: L,
|
|
78
79
|
pointerEvents: "auto"
|
|
79
|
-
}, r[
|
|
80
|
-
let
|
|
81
|
-
r[
|
|
82
|
-
visibility:
|
|
80
|
+
}, r[27] = L, r[28] = R);
|
|
81
|
+
let z = f ? "visible" : "hidden", B;
|
|
82
|
+
r[29] === z ? B = r[30] : (B = {
|
|
83
|
+
visibility: z,
|
|
83
84
|
pointerEvents: "auto"
|
|
84
|
-
}, r[
|
|
85
|
-
let
|
|
86
|
-
r[
|
|
85
|
+
}, r[29] = z, r[30] = B);
|
|
86
|
+
let V;
|
|
87
|
+
r[31] !== I || r[32] !== R || r[33] !== B ? (V = {
|
|
87
88
|
...ce,
|
|
88
|
-
"& .MuiAutocomplete-inputRoot":
|
|
89
|
-
"& .MuiAutocomplete-clearIndicator":
|
|
90
|
-
"& .MuiAutocomplete-popupIndicator":
|
|
91
|
-
}, r[
|
|
92
|
-
let
|
|
93
|
-
r[
|
|
94
|
-
|
|
89
|
+
"& .MuiAutocomplete-inputRoot": I,
|
|
90
|
+
"& .MuiAutocomplete-clearIndicator": R,
|
|
91
|
+
"& .MuiAutocomplete-popupIndicator": B
|
|
92
|
+
}, r[31] = I, r[32] = R, r[33] = B, r[34] = V) : V = r[34];
|
|
93
|
+
let Te = V, H;
|
|
94
|
+
r[35] !== xe || r[36] !== he || r[37] !== u || r[38] !== Ce || r[39] !== ye ? (H = (t, n, r) => {
|
|
95
|
+
Ce();
|
|
95
96
|
let i = n.map((t) => typeof t == "string" ? e(t, u) : t.value);
|
|
96
|
-
|
|
97
|
-
}, r[
|
|
98
|
-
let
|
|
99
|
-
r[
|
|
100
|
-
if (
|
|
101
|
-
let t = e(
|
|
102
|
-
|
|
97
|
+
ge.current(i.length === 0 ? he : i), _e(""), xe.current || ye(!1);
|
|
98
|
+
}, r[35] = xe, r[36] = he, r[37] = u, r[38] = Ce, r[39] = ye, r[40] = H) : H = r[40];
|
|
99
|
+
let Ee = H, U;
|
|
100
|
+
r[41] !== u || r[42] !== _ || r[43] !== w ? (U = () => {
|
|
101
|
+
if (_.trim()) {
|
|
102
|
+
let t = e(_, u);
|
|
103
|
+
ge.current([...w, t]), _e("");
|
|
103
104
|
}
|
|
104
|
-
}, r[
|
|
105
|
-
let
|
|
106
|
-
r[
|
|
105
|
+
}, r[41] = u, r[42] = _, r[43] = w, r[44] = U) : U = r[44];
|
|
106
|
+
let De = U, Oe = f || w.length <= h, W;
|
|
107
|
+
r[45] === Symbol.for("react.memo_cache_sentinel") ? (W = {
|
|
107
108
|
width: "100%",
|
|
108
109
|
height: "100%",
|
|
109
110
|
overflow: "hidden"
|
|
110
|
-
}, r[
|
|
111
|
-
let
|
|
112
|
-
r[
|
|
113
|
-
|
|
114
|
-
}, r[
|
|
115
|
-
let
|
|
116
|
-
r[
|
|
111
|
+
}, r[45] = W) : W = r[45];
|
|
112
|
+
let ke = l.length > 0, Ae = !we, G;
|
|
113
|
+
r[46] === Symbol.for("react.memo_cache_sentinel") ? (G = (e, t) => {
|
|
114
|
+
_e(t);
|
|
115
|
+
}, r[46] = G) : G = r[46];
|
|
116
|
+
let K = l.length > 1, q;
|
|
117
|
+
r[47] === Se ? q = r[48] : (q = { onMouseDown: Se }, r[47] = Se, r[48] = q);
|
|
118
|
+
let J;
|
|
119
|
+
r[49] === x ? J = r[50] : (J = { onMouseDown: x }, r[49] = x, r[50] = J);
|
|
120
|
+
let Y;
|
|
121
|
+
r[51] !== q || r[52] !== J ? (Y = {
|
|
122
|
+
listbox: q,
|
|
123
|
+
popupIndicator: J
|
|
124
|
+
}, r[51] = q, r[52] = J, r[53] = Y) : Y = r[53];
|
|
117
125
|
let X;
|
|
118
|
-
r[
|
|
126
|
+
r[54] === f ? X = r[55] : (X = (e, t) => e.map((e, n) => {
|
|
119
127
|
let { key: r, ...a } = t({ index: n });
|
|
120
128
|
return /* @__PURE__ */ o(i, {
|
|
121
129
|
option: typeof e == "string" ? e : e.value,
|
|
122
130
|
active: f,
|
|
123
131
|
...a
|
|
124
132
|
}, r);
|
|
125
|
-
}), r[
|
|
133
|
+
}), r[54] = f, r[55] = X);
|
|
126
134
|
let Z;
|
|
127
|
-
r[
|
|
135
|
+
r[56] === be ? Z = r[57] : (Z = (e) => /* @__PURE__ */ o(ie, {
|
|
128
136
|
...e,
|
|
129
|
-
inputRef:
|
|
137
|
+
inputRef: be,
|
|
130
138
|
slotProps: { input: {
|
|
131
139
|
...e.InputProps,
|
|
132
140
|
disableUnderline: !0,
|
|
133
141
|
sx: le
|
|
134
142
|
} }
|
|
135
|
-
}), r[
|
|
143
|
+
}), r[56] = be, r[57] = Z);
|
|
136
144
|
let Q;
|
|
137
|
-
r[
|
|
138
|
-
style:
|
|
145
|
+
r[58] !== Te || r[59] !== S || r[60] !== De || r[61] !== Ee || r[62] !== b || r[63] !== y || r[64] !== _ || r[65] !== ve || r[66] !== C || r[67] !== T || r[68] !== ke || r[69] !== Ae || r[70] !== K || r[71] !== Y || r[72] !== X || r[73] !== Z ? (Q = /* @__PURE__ */ o("div", {
|
|
146
|
+
style: W,
|
|
139
147
|
children: /* @__PURE__ */ o(re, {
|
|
140
|
-
forcePopupIcon:
|
|
141
|
-
disableClearable:
|
|
148
|
+
forcePopupIcon: ke,
|
|
149
|
+
disableClearable: Ae,
|
|
142
150
|
multiple: !0,
|
|
143
151
|
freeSolo: !0,
|
|
144
|
-
open:
|
|
145
|
-
onOpen:
|
|
152
|
+
open: ve,
|
|
153
|
+
onOpen: y,
|
|
146
154
|
disablePortal: !1,
|
|
147
|
-
limitTags:
|
|
148
|
-
options:
|
|
155
|
+
limitTags: S,
|
|
156
|
+
options: C,
|
|
149
157
|
getOptionLabel: fe,
|
|
150
158
|
isOptionEqualToValue: de,
|
|
151
|
-
value:
|
|
152
|
-
inputValue:
|
|
153
|
-
onInputChange:
|
|
154
|
-
onClose:
|
|
155
|
-
onChange:
|
|
156
|
-
disableCloseOnSelect:
|
|
159
|
+
value: T,
|
|
160
|
+
inputValue: _,
|
|
161
|
+
onInputChange: G,
|
|
162
|
+
onClose: b,
|
|
163
|
+
onChange: Ee,
|
|
164
|
+
disableCloseOnSelect: K,
|
|
157
165
|
slotProps: Y,
|
|
158
|
-
onBlur:
|
|
166
|
+
onBlur: De,
|
|
159
167
|
renderValue: X,
|
|
160
168
|
renderInput: Z,
|
|
161
|
-
sx:
|
|
169
|
+
sx: Te
|
|
162
170
|
})
|
|
163
|
-
}), r[
|
|
171
|
+
}), r[58] = Te, r[59] = S, r[60] = De, r[61] = Ee, r[62] = b, r[63] = y, r[64] = _, r[65] = ve, r[66] = C, r[67] = T, r[68] = ke, r[69] = Ae, r[70] = K, r[71] = Y, r[72] = X, r[73] = Z, r[74] = Q) : Q = r[74];
|
|
164
172
|
let $;
|
|
165
|
-
return r[
|
|
166
|
-
title:
|
|
173
|
+
return r[75] !== Oe || r[76] !== Q || r[77] !== D ? ($ = /* @__PURE__ */ o(ae, {
|
|
174
|
+
title: D,
|
|
167
175
|
placement: "top-start",
|
|
168
176
|
arrow: !0,
|
|
169
177
|
enterDelay: 500,
|
|
170
|
-
disableHoverListener:
|
|
178
|
+
disableHoverListener: Oe,
|
|
171
179
|
children: Q
|
|
172
|
-
}), r[
|
|
180
|
+
}), r[75] = Oe, r[76] = Q, r[77] = D, r[78] = $) : $ = r[78], $;
|
|
173
181
|
}
|
|
174
182
|
function de(e, t) {
|
|
175
183
|
return s(typeof e == "string" ? e : e.value, typeof t == "string" ? t : t.value);
|