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.
Files changed (94) hide show
  1. package/dist/SWC.index.d.ts +2 -0
  2. package/dist/SWC.index.d.ts.map +1 -1
  3. package/dist/SWC.index.js +3 -1
  4. package/dist/SWC.index.js.map +1 -1
  5. package/dist/components/DataExplorer/DataExplorer.css +1 -0
  6. package/dist/components/DataExplorer/DataExplorer.d.ts +13 -0
  7. package/dist/components/DataExplorer/DataExplorer.d.ts.map +1 -0
  8. package/dist/components/DataExplorer/DataExplorer.js +119 -0
  9. package/dist/components/DataExplorer/DataExplorer.js.map +1 -0
  10. package/dist/components/DataExplorer/DataExplorer.module.js +22 -0
  11. package/dist/components/DataExplorer/DataExplorer.module.js.map +1 -0
  12. package/dist/components/DataExplorer/DataExplorer.module.scss +156 -0
  13. package/dist/components/DataGrid/columns/AutocompleteColumn.d.ts.map +1 -1
  14. package/dist/components/DataGrid/columns/AutocompleteColumn.js +106 -102
  15. package/dist/components/DataGrid/columns/AutocompleteColumn.js.map +1 -1
  16. package/dist/components/DataGrid/columns/AutocompleteMultipleEnumColumn.d.ts.map +1 -1
  17. package/dist/components/DataGrid/columns/AutocompleteMultipleEnumColumn.js +97 -89
  18. package/dist/components/DataGrid/columns/AutocompleteMultipleEnumColumn.js.map +1 -1
  19. package/dist/components/DataGrid/columns/useGridAutocompleteState.d.ts +19 -8
  20. package/dist/components/DataGrid/columns/useGridAutocompleteState.d.ts.map +1 -1
  21. package/dist/components/DataGrid/columns/useGridAutocompleteState.js +64 -43
  22. package/dist/components/DataGrid/columns/useGridAutocompleteState.js.map +1 -1
  23. package/dist/components/DataGrid/components/UploadCsvToGridDialog.d.ts.map +1 -1
  24. package/dist/components/DataGrid/components/UploadCsvToGridDialog.js +9 -9
  25. package/dist/components/DataGrid/components/UploadCsvToGridDialog.js.map +1 -1
  26. package/dist/components/DataGrid/hooks/useGetSchemaForGrid.d.ts.map +1 -1
  27. package/dist/components/DataGrid/hooks/useGetSchemaForGrid.js +8 -1
  28. package/dist/components/DataGrid/hooks/useGetSchemaForGrid.js.map +1 -1
  29. package/dist/components/QueryVisualizationWrapper/QueryVisualizationWrapper.d.ts.map +1 -1
  30. package/dist/components/QueryVisualizationWrapper/QueryVisualizationWrapper.js +67 -65
  31. package/dist/components/QueryVisualizationWrapper/QueryVisualizationWrapper.js.map +1 -1
  32. package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.d.ts +1 -1
  33. package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.d.ts.map +1 -1
  34. package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.js +1 -0
  35. package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.js.map +1 -1
  36. package/dist/components/SearchQueryWrapperPlotNav/SearchQueryWrapperPlotNav.d.ts +1 -1
  37. package/dist/components/SearchQueryWrapperPlotNav/SearchQueryWrapperPlotNav.d.ts.map +1 -1
  38. package/dist/components/SearchQueryWrapperPlotNav/SearchQueryWrapperPlotNav.js +1 -0
  39. package/dist/components/SearchQueryWrapperPlotNav/SearchQueryWrapperPlotNav.js.map +1 -1
  40. package/dist/components/StandaloneQueryWrapper/StandaloneQueryWrapper.d.ts +1 -1
  41. package/dist/components/StandaloneQueryWrapper/StandaloneQueryWrapper.d.ts.map +1 -1
  42. package/dist/components/StandaloneQueryWrapper/StandaloneQueryWrapper.js.map +1 -1
  43. package/dist/components/TableColumnSchemaEditor/ColumnModelForm.js +9 -9
  44. package/dist/components/TableColumnSchemaEditor/ColumnModelFormFields/MultiValueField.js +4 -4
  45. package/dist/components/TableColumnSchemaEditor/TableColumnSchemaForm.js +25 -25
  46. package/dist/components/TableColumnSchemaEditor/TableColumnSchemaForm.js.map +1 -1
  47. package/dist/components/table/CsvPreview/CreateTableFromCsvDialog.d.ts +18 -0
  48. package/dist/components/table/CsvPreview/CreateTableFromCsvDialog.d.ts.map +1 -0
  49. package/dist/components/table/CsvPreview/CreateTableFromCsvDialog.js +116 -0
  50. package/dist/components/table/CsvPreview/CreateTableFromCsvDialog.js.map +1 -0
  51. package/dist/components/table/CsvPreview/CsvPreviewDialog.d.ts +5 -5
  52. package/dist/components/table/CsvPreview/CsvPreviewDialog.d.ts.map +1 -1
  53. package/dist/components/table/CsvPreview/CsvPreviewDialog.js +27 -76
  54. package/dist/components/table/CsvPreview/CsvPreviewDialog.js.map +1 -1
  55. package/dist/components/table/CsvPreview/CsvPreviewWithOptions.d.ts +19 -0
  56. package/dist/components/table/CsvPreview/CsvPreviewWithOptions.d.ts.map +1 -0
  57. package/dist/components/table/CsvPreview/CsvPreviewWithOptions.js +41 -0
  58. package/dist/components/table/CsvPreview/CsvPreviewWithOptions.js.map +1 -0
  59. package/dist/components/table/CsvPreview/CsvUploadPreviewContent.d.ts +12 -0
  60. package/dist/components/table/CsvPreview/CsvUploadPreviewContent.d.ts.map +1 -0
  61. package/dist/components/table/CsvPreview/CsvUploadPreviewContent.js +25 -0
  62. package/dist/components/table/CsvPreview/CsvUploadPreviewContent.js.map +1 -0
  63. package/dist/components/table/CsvPreview/UpdateTableWithCsvDialog.d.ts +18 -0
  64. package/dist/components/table/CsvPreview/UpdateTableWithCsvDialog.d.ts.map +1 -0
  65. package/dist/components/table/CsvPreview/UpdateTableWithCsvDialog.js +55 -0
  66. package/dist/components/table/CsvPreview/UpdateTableWithCsvDialog.js.map +1 -0
  67. package/dist/components/table/CsvPreview/useCreateTableFromCsv.d.ts +19 -0
  68. package/dist/components/table/CsvPreview/useCreateTableFromCsv.d.ts.map +1 -0
  69. package/dist/components/table/CsvPreview/useCreateTableFromCsv.js +35 -0
  70. package/dist/components/table/CsvPreview/useCreateTableFromCsv.js.map +1 -0
  71. package/dist/components/table/CsvPreview/useCsvUploadPreview.d.ts +22 -0
  72. package/dist/components/table/CsvPreview/useCsvUploadPreview.d.ts.map +1 -0
  73. package/dist/components/table/CsvPreview/useCsvUploadPreview.js +32 -0
  74. package/dist/components/table/CsvPreview/useCsvUploadPreview.js.map +1 -0
  75. package/dist/components/table/CsvPreview/useUploadCsvToExistingTable.d.ts +14 -0
  76. package/dist/components/table/CsvPreview/useUploadCsvToExistingTable.d.ts.map +1 -0
  77. package/dist/components/table/CsvPreview/useUploadCsvToExistingTable.js +23 -0
  78. package/dist/components/table/CsvPreview/useUploadCsvToExistingTable.js.map +1 -0
  79. package/dist/features/entity/metadata-task/components/CreateOrUpdateCurationTaskDialog.d.ts.map +1 -1
  80. package/dist/features/entity/metadata-task/components/CreateOrUpdateCurationTaskDialog.js +67 -67
  81. package/dist/features/entity/metadata-task/components/CreateOrUpdateCurationTaskDialog.js.map +1 -1
  82. package/dist/features/entity/metadata-task/components/MetadataTasksPage.d.ts.map +1 -1
  83. package/dist/features/entity/metadata-task/components/MetadataTasksPage.js +37 -34
  84. package/dist/features/entity/metadata-task/components/MetadataTasksPage.js.map +1 -1
  85. package/dist/features/entity/metadata-task/utils/constants.d.ts +6 -3
  86. package/dist/features/entity/metadata-task/utils/constants.d.ts.map +1 -1
  87. package/dist/features/entity/metadata-task/utils/constants.js +2 -2
  88. package/dist/features/entity/metadata-task/utils/constants.js.map +1 -1
  89. package/dist/tsconfig.build.tsbuildinfo +1 -1
  90. package/dist/utils/featureflag/FeatureFlags.d.ts +2 -1
  91. package/dist/utils/featureflag/FeatureFlags.d.ts.map +1 -1
  92. package/dist/utils/featureflag/FeatureFlags.js +1 -1
  93. package/dist/utils/featureflag/FeatureFlags.js.map +1 -1
  94. 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 i } from "react/jsx-runtime";
7
- import { c as oe } from "react/compiler-runtime";
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 se = {
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 a(e) {
24
+ function i(e) {
25
25
  return re(e) ? "" : typeof e == "object" ? JSON.stringify(e) : String(e);
26
26
  }
27
- function o(e, t) {
27
+ function le(e, t) {
28
28
  return e == null || typeof e == "string" && e.trim() === "" ? t : e;
29
29
  }
30
- function s(n) {
31
- let s = oe(56), { rowData: c, setRowData: l, choices: u, colType: d, focus: f, stopEditing: p, active: m, clearValue: h } = n, g = h === void 0 ? void 0 : h, _ = te(l), v;
32
- s[0] === l ? v = s[1] : (v = () => {
33
- _.current = l;
34
- }, s[0] = l, s[1] = v), ee(v);
35
- let y = te(p), b;
36
- s[2] === p ? b = s[3] : (b = () => {
37
- y.current = p;
38
- }, s[2] = p, s[3] = b), ee(b);
39
- let x;
40
- s[4] === c ? x = s[5] : (x = a(c), s[4] = c, s[5] = x);
41
- let S = x, [C, le] = ne(S), w;
42
- s[6] !== g || s[7] !== d || s[8] !== C || s[9] !== S ? (w = () => {
43
- if (C !== S) {
44
- let t = e(C, d);
45
- _.current(o(t, g));
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
- }, s[6] = g, s[7] = d, s[8] = C, s[9] = S, s[10] = w) : w = s[10];
48
- let T;
49
- s[11] !== m || s[12] !== p || s[13] !== w ? (T = {
50
- active: m,
51
- stopEditing: p,
52
- onDeactivate: w
53
- }, s[11] = m, s[12] = p, s[13] = w, s[14] = T) : T = s[14];
54
- let { menuIsOpen: E, inputRef: D, handleListboxMouseDown: O, notifyOptionCommitted: k, handleMenuOpen: A, handleClose: j } = t(T), M, N;
55
- s[15] !== m || s[16] !== f || s[17] !== S ? (M = () => {
56
- !f && !m && le(S);
57
- }, N = [
58
- f,
59
- m,
60
- S
61
- ], s[15] = m, s[16] = f, s[17] = S, s[18] = M, s[19] = N) : (M = s[18], N = s[19]), r(M, N);
62
- let P;
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: F
69
- }, s[22] = F, s[23] = I);
70
- let L = m ? "visible" : "hidden", R;
71
- s[24] === L ? R = s[25] : (R = {
72
- visibility: L,
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
- }, s[24] = L, s[25] = R);
75
- let z = m ? "visible" : "hidden", B;
76
- s[26] === z ? B = s[27] : (B = {
77
- visibility: z,
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
- }, s[26] = z, s[27] = B);
80
- let V, H;
81
- s[28] === Symbol.for("react.memo_cache_sentinel") ? (V = { visibility: "visible" }, H = { visibility: "visible" }, s[28] = V, s[29] = H) : (V = s[28], H = s[29]);
82
- let U;
83
- s[30] !== I || s[31] !== R || s[32] !== B ? (U = {
84
- ...se,
85
- "& .MuiAutocomplete-inputRoot": I,
86
- "& .MuiAutocomplete-clearIndicator": R,
87
- "& .MuiAutocomplete-popupIndicator": B,
88
- "&:hover .MuiAutocomplete-clearIndicator": V,
89
- "&:hover .MuiAutocomplete-popupIndicator": H
90
- }, s[30] = I, s[31] = R, s[32] = B, s[33] = U) : U = s[33];
91
- let W = U, G;
92
- s[34] === Symbol.for("react.memo_cache_sentinel") ? (G = (e) => {
93
- e.key === "Tab" ? (e.preventDefault(), y.current({ nextRow: !1 })) : e.key === "Enter" && (e.preventDefault(), y.current({ nextRow: !0 }));
94
- }, s[34] = G) : G = s[34];
95
- let de = G, K;
96
- s[35] !== g || s[36] !== d || s[37] !== k ? (K = (t, n, r) => {
97
- if (k(), r === "clear") _.current(g);
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, d);
100
- _.current(o(t, g));
101
- } else _.current(n);
96
+ let t = e(n, l);
97
+ m.current(le(t, p));
98
+ } else m.current(n);
102
99
  setTimeout(() => {
103
- y.current({ nextRow: !1 });
100
+ g.current({ nextRow: !1 });
104
101
  }, 0);
105
- }, s[35] = g, s[36] = d, s[37] = k, s[38] = K) : K = s[38];
106
- let q = K, J = !ue, Y = c, X;
107
- s[39] === Symbol.for("react.memo_cache_sentinel") ? (X = (e, t) => {
108
- le(t);
109
- }, s[39] = X) : X = s[39];
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
- s[40] === O ? Z = s[41] : (Z = { listbox: { onMouseDown: O } }, s[40] = O, s[41] = Z);
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
- s[42] === D ? Q = s[43] : (Q = (e) => /* @__PURE__ */ i(ae, {
117
+ a[47] === w ? Q = a[48] : (Q = (e) => /* @__PURE__ */ oe(ae, {
114
118
  ...e,
115
- inputRef: D
116
- }), s[42] = D, s[43] = Q);
119
+ inputRef: w
120
+ }), a[47] = w, a[48] = Q);
117
121
  let $;
118
- return s[44] !== W || s[45] !== u || s[46] !== q || s[47] !== j || s[48] !== A || s[49] !== C || s[50] !== E || s[51] !== J || s[52] !== Y || s[53] !== Z || s[54] !== Q ? ($ = /* @__PURE__ */ i(ie, {
119
- open: E,
120
- onOpen: A,
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: J,
126
+ disableClearable: K,
123
127
  freeSolo: !0,
124
128
  disablePortal: !1,
125
- options: u,
129
+ options: c,
126
130
  selectOnFocus: !0,
127
- getOptionLabel: ce,
128
- value: Y,
129
- inputValue: C,
130
- onInputChange: X,
131
- onKeyDown: de,
132
- onClose: j,
133
- onChange: q,
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: W
138
- }), s[44] = W, s[45] = u, s[46] = q, s[47] = j, s[48] = A, s[49] = C, s[50] = E, s[51] = J, s[52] = Y, s[53] = Z, s[54] = Q, s[55] = $) : $ = s[55], $;
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 ce(e) {
141
- return a(e);
144
+ function ue(e) {
145
+ return i(e);
142
146
  }
143
- function c(e, t) {
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 l = n(s, c);
147
- function u({ choices: e, colType: t, clearValue: n }) {
150
+ var s = n(a, o);
151
+ function c({ choices: e, colType: t, clearValue: n }) {
148
152
  return {
149
- component: ((r) => /* @__PURE__ */ i(l, {
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 { s as AutocompleteCell, l as MemoizedAutocompleteCell, c as areAutocompleteCellPropsEqual, u as autocompleteColumn, a as castCellValueToString };
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;AA4OD,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"}
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(73), { rowData: a, setRowData: s, choices: l, colType: u, limitTags: d, active: f, focus: me, stopEditing: p, clearValue: he } = n, m = d === void 0 ? 2 : d, ge = he === void 0 ? void 0 : he, _e = te(s), h;
36
- r[0] === s ? h = r[1] : (h = () => {
37
- _e.current = s;
38
- }, r[0] = s, r[1] = h), ee(h);
39
- let [g, ve] = ne(""), _;
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
- stopEditing: p
43
- }, r[2] = f, r[3] = p, r[4] = _) : _ = r[4];
44
- let { menuIsOpen: ye, setMenuIsOpen: be, inputRef: xe, activeRef: v, handleListboxMouseDown: y, notifyOptionCommitted: b, handleMenuOpen: x, handleClose: S } = t(_), C, w, T, E, D;
45
- if (r[5] !== f || r[6] !== l || r[7] !== m || r[8] !== a) {
46
- T = c(a);
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[14] === l ? e = r[15] : (e = l.map(ue), r[14] = l, r[15] = e), w = e, E = T.map(ue), C = f ? -1 : m, D = T.length > 0 ? T.map(pe).join(",") : "", r[5] = f, r[6] = l, r[7] = m, r[8] = a, r[9] = C, r[10] = w, r[11] = T, r[12] = E, r[13] = D;
49
- } else C = r[9], w = r[10], T = r[11], E = r[12], D = r[13];
50
- let O = D, k;
51
- r[16] === a ? k = r[17] : (k = !se(a) && a !== "", r[16] = a, r[17] = k);
52
- let Se = k, A = me ? void 0 : "none", j = f ? "wrap" : "nowrap", M = f ? "auto" : "hidden", N, P, F, I;
53
- r[18] === Symbol.for("react.memo_cache_sentinel") ? (N = {
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
- }, P = { background: "transparent" }, F = {
57
+ }, N = { background: "transparent" }, P = {
57
58
  background: "#888",
58
59
  borderRadius: "3px"
59
- }, I = { background: "#555" }, r[18] = N, r[19] = P, r[20] = F, r[21] = I) : (N = r[18], P = r[19], F = r[20], I = r[21]);
60
- let L;
61
- r[22] !== A || r[23] !== j || r[24] !== M ? (L = {
62
- pointerEvents: A,
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: j,
66
+ flexWrap: A,
66
67
  minHeight: "100%",
67
68
  maxHeight: "100%",
68
- overflowY: M,
69
+ overflowY: j,
69
70
  overflowX: "hidden",
70
- "&::-webkit-scrollbar": N,
71
- "&::-webkit-scrollbar-track": P,
72
- "&::-webkit-scrollbar-thumb": F,
73
- "&::-webkit-scrollbar-thumb:hover": I
74
- }, r[22] = A, r[23] = j, r[24] = M, r[25] = L) : L = r[25];
75
- let R = f ? "visible" : "hidden", z;
76
- r[26] === R ? z = r[27] : (z = {
77
- visibility: R,
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[26] = R, r[27] = z);
80
- let B = f ? "visible" : "hidden", V;
81
- r[28] === B ? V = r[29] : (V = {
82
- visibility: B,
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[28] = B, r[29] = V);
85
- let H;
86
- r[30] !== L || r[31] !== z || r[32] !== V ? (H = {
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": L,
89
- "& .MuiAutocomplete-clearIndicator": z,
90
- "& .MuiAutocomplete-popupIndicator": V
91
- }, r[30] = L, r[31] = z, r[32] = V, r[33] = H) : H = r[33];
92
- let U = H, W;
93
- r[34] !== v || r[35] !== ge || r[36] !== u || r[37] !== b || r[38] !== be ? (W = (t, n, r) => {
94
- b();
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
- _e.current(i.length === 0 ? ge : i), ve(""), v.current || be(!1);
97
- }, r[34] = v, r[35] = ge, r[36] = u, r[37] = b, r[38] = be, r[39] = W) : W = r[39];
98
- let Ce = W, G;
99
- r[40] !== u || r[41] !== g || r[42] !== T ? (G = () => {
100
- if (g.trim()) {
101
- let t = e(g, u);
102
- _e.current([...T, t]), ve("");
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[40] = u, r[41] = g, r[42] = T, r[43] = G) : G = r[43];
105
- let we = G, Te = f || T.length <= m, K;
106
- r[44] === Symbol.for("react.memo_cache_sentinel") ? (K = {
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[44] = K) : K = r[44];
111
- let Ee = l.length > 0, q = !Se, J;
112
- r[45] === Symbol.for("react.memo_cache_sentinel") ? (J = (e, t) => {
113
- ve(t);
114
- }, r[45] = J) : J = r[45];
115
- let De = l.length > 1, Y;
116
- r[46] === y ? Y = r[47] : (Y = { listbox: { onMouseDown: y } }, r[46] = y, r[47] = Y);
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[48] === f ? X = r[49] : (X = (e, t) => e.map((e, n) => {
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[48] = f, r[49] = X);
133
+ }), r[54] = f, r[55] = X);
126
134
  let Z;
127
- r[50] === xe ? Z = r[51] : (Z = (e) => /* @__PURE__ */ o(ie, {
135
+ r[56] === be ? Z = r[57] : (Z = (e) => /* @__PURE__ */ o(ie, {
128
136
  ...e,
129
- inputRef: xe,
137
+ inputRef: be,
130
138
  slotProps: { input: {
131
139
  ...e.InputProps,
132
140
  disableUnderline: !0,
133
141
  sx: le
134
142
  } }
135
- }), r[50] = xe, r[51] = Z);
143
+ }), r[56] = be, r[57] = Z);
136
144
  let Q;
137
- r[52] !== U || r[53] !== C || r[54] !== we || r[55] !== Ce || r[56] !== S || r[57] !== x || r[58] !== g || r[59] !== ye || r[60] !== w || r[61] !== E || r[62] !== Ee || r[63] !== q || r[64] !== De || r[65] !== Y || r[66] !== X || r[67] !== Z ? (Q = /* @__PURE__ */ o("div", {
138
- style: K,
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: Ee,
141
- disableClearable: q,
148
+ forcePopupIcon: ke,
149
+ disableClearable: Ae,
142
150
  multiple: !0,
143
151
  freeSolo: !0,
144
- open: ye,
145
- onOpen: x,
152
+ open: ve,
153
+ onOpen: y,
146
154
  disablePortal: !1,
147
- limitTags: C,
148
- options: w,
155
+ limitTags: S,
156
+ options: C,
149
157
  getOptionLabel: fe,
150
158
  isOptionEqualToValue: de,
151
- value: E,
152
- inputValue: g,
153
- onInputChange: J,
154
- onClose: S,
155
- onChange: Ce,
156
- disableCloseOnSelect: De,
159
+ value: T,
160
+ inputValue: _,
161
+ onInputChange: G,
162
+ onClose: b,
163
+ onChange: Ee,
164
+ disableCloseOnSelect: K,
157
165
  slotProps: Y,
158
- onBlur: we,
166
+ onBlur: De,
159
167
  renderValue: X,
160
168
  renderInput: Z,
161
- sx: U
169
+ sx: Te
162
170
  })
163
- }), r[52] = U, r[53] = C, r[54] = we, r[55] = Ce, r[56] = S, r[57] = x, r[58] = g, r[59] = ye, r[60] = w, r[61] = E, r[62] = Ee, r[63] = q, r[64] = De, r[65] = Y, r[66] = X, r[67] = Z, r[68] = Q) : Q = r[68];
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[69] !== Te || r[70] !== Q || r[71] !== O ? ($ = /* @__PURE__ */ o(ae, {
166
- title: O,
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: Te,
178
+ disableHoverListener: Oe,
171
179
  children: Q
172
- }), r[69] = Te, r[70] = Q, r[71] = O, r[72] = $) : $ = r[72], $;
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);