@evolver-fi/evolver-basics-admin-components 0.0.8

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 (69) hide show
  1. package/dist/ArrowBack-C8PcQDeL.js +161 -0
  2. package/dist/ArrowBack-C8PcQDeL.js.map +1 -0
  3. package/dist/BreadCrumbs-EFff4Rip.js +19 -0
  4. package/dist/BreadCrumbs-EFff4Rip.js.map +1 -0
  5. package/dist/BreadCrumbs.css +1 -0
  6. package/dist/ConfirmButton-jayUa8_J.js +16 -0
  7. package/dist/ConfirmButton-jayUa8_J.js.map +1 -0
  8. package/dist/ExpandMore-CCOUGfS4.js +14 -0
  9. package/dist/ExpandMore-CCOUGfS4.js.map +1 -0
  10. package/dist/JwtTokensRoute-C7ue3mI1.js +2334 -0
  11. package/dist/JwtTokensRoute-C7ue3mI1.js.map +1 -0
  12. package/dist/ScheduledTaskFormRoute-CcBBzEsv.js +1038 -0
  13. package/dist/ScheduledTaskFormRoute-CcBBzEsv.js.map +1 -0
  14. package/dist/SingleLogMessageRoute-yVcnPuBs.js +245 -0
  15. package/dist/SingleLogMessageRoute-yVcnPuBs.js.map +1 -0
  16. package/dist/SingleMessageRoute-wSsAUDru.js +254 -0
  17. package/dist/SingleMessageRoute-wSsAUDru.js.map +1 -0
  18. package/dist/TriggerablesRoute-i4z1o99f.js +3536 -0
  19. package/dist/TriggerablesRoute-i4z1o99f.js.map +1 -0
  20. package/dist/breadcrumbs/index.js +5 -0
  21. package/dist/breadcrumbs/index.js.map +1 -0
  22. package/dist/createSvgIcon-DHqCx8A0.js +5533 -0
  23. package/dist/createSvgIcon-DHqCx8A0.js.map +1 -0
  24. package/dist/jsx-runtime-B6kdoens.js +635 -0
  25. package/dist/jsx-runtime-B6kdoens.js.map +1 -0
  26. package/dist/jwt-tokens/index.js +7 -0
  27. package/dist/jwt-tokens/index.js.map +1 -0
  28. package/dist/main/index.js +34 -0
  29. package/dist/main/index.js.map +1 -0
  30. package/dist/message-log/index.js +10 -0
  31. package/dist/message-log/index.js.map +1 -0
  32. package/dist/message-sending/index.js +10 -0
  33. package/dist/message-sending/index.js.map +1 -0
  34. package/dist/scheduled-tasks/index.js +10 -0
  35. package/dist/scheduled-tasks/index.js.map +1 -0
  36. package/dist/triggerables/index.js +7 -0
  37. package/dist/triggerables/index.js.map +1 -0
  38. package/dist/types/admin-components/src/components/breadcrumbs/BreadCrumbs.d.ts +10 -0
  39. package/dist/types/admin-components/src/components/breadcrumbs/index.d.ts +1 -0
  40. package/dist/types/admin-components/src/index.d.ts +6 -0
  41. package/dist/types/admin-components/src/routes/jwt-tokens/JwtTokensRoute.d.ts +2 -0
  42. package/dist/types/admin-components/src/routes/jwt-tokens/index.d.ts +2 -0
  43. package/dist/types/admin-components/src/routes/jwt-tokens/loader.d.ts +11 -0
  44. package/dist/types/admin-components/src/routes/message-log/MessageLogRoute.d.ts +2 -0
  45. package/dist/types/admin-components/src/routes/message-log/SingleLogMessageRoute.d.ts +2 -0
  46. package/dist/types/admin-components/src/routes/message-log/index.d.ts +3 -0
  47. package/dist/types/admin-components/src/routes/message-log/loader.d.ts +7 -0
  48. package/dist/types/admin-components/src/routes/message-sending/MessageSendingRoute.d.ts +2 -0
  49. package/dist/types/admin-components/src/routes/message-sending/SingleMessageRoute.d.ts +2 -0
  50. package/dist/types/admin-components/src/routes/message-sending/index.d.ts +3 -0
  51. package/dist/types/admin-components/src/routes/message-sending/loader.d.ts +6 -0
  52. package/dist/types/admin-components/src/routes/scheduled-tasks/ScheduledTaskFormRoute.d.ts +2 -0
  53. package/dist/types/admin-components/src/routes/scheduled-tasks/ScheduledTasksRoute.d.ts +2 -0
  54. package/dist/types/admin-components/src/routes/scheduled-tasks/index.d.ts +3 -0
  55. package/dist/types/admin-components/src/routes/scheduled-tasks/loader.d.ts +9 -0
  56. package/dist/types/admin-components/src/routes/triggerables/TriggerablesRoute.d.ts +2 -0
  57. package/dist/types/admin-components/src/routes/triggerables/index.d.ts +2 -0
  58. package/dist/types/admin-components/src/routes/triggerables/loader.d.ts +9 -0
  59. package/dist/types/admin-ui/src/front-page/FrontPage.d.ts +2 -0
  60. package/dist/types/breadcrumbs.d.ts +2 -0
  61. package/dist/types/jwt-tokens.d.ts +2 -0
  62. package/dist/types/main.d.ts +2 -0
  63. package/dist/types/message-log.d.ts +2 -0
  64. package/dist/types/message-sending.d.ts +2 -0
  65. package/dist/types/scheduled-tasks.d.ts +2 -0
  66. package/dist/types/triggerables.d.ts +2 -0
  67. package/dist/validation-C1lKYJJR.js +6112 -0
  68. package/dist/validation-C1lKYJJR.js.map +1 -0
  69. package/package.json +82 -0
@@ -0,0 +1,161 @@
1
+ import { j as e } from "./jsx-runtime-B6kdoens.js";
2
+ import { Box as E, IconButton as j, Grid as $, TextField as v, InputAdornment as S, TableHead as z, TableRow as b, TableCell as f, Button as y, TableContainer as C, Table as I, TableBody as w, TablePagination as A } from "@mui/material";
3
+ import { r as k, i as R } from "./createSvgIcon-DHqCx8A0.js";
4
+ import { d as H } from "./ExpandMore-CCOUGfS4.js";
5
+ import P, { useEffect as M, useState as O } from "react";
6
+ var T = {}, V = R;
7
+ Object.defineProperty(T, "__esModule", {
8
+ value: !0
9
+ });
10
+ var F = T.default = void 0, q = V(k()), W = e;
11
+ F = T.default = (0, q.default)(/* @__PURE__ */ (0, W.jsx)("path", {
12
+ d: "m12 8-6 6 1.41 1.41L12 10.83l4.59 4.58L18 14z"
13
+ }), "ExpandLess");
14
+ const U = (t, n) => n !== void 0 ? `${t}: ${n}` : "", G = ({ metadata: t, open: n }) => {
15
+ const a = n ? Object.entries(t) : Object.entries(t).slice(0, 1);
16
+ return e.jsx(E, { sx: { whiteSpace: "pre-line", padding: "10px" }, children: a.map(([s, l]) => U(s, l)).join(`
17
+ `) });
18
+ }, J = ({ metadata: t }) => {
19
+ const [n, a] = P.useState(!1), s = (l) => {
20
+ l.preventDefault(), l.stopPropagation(), a(!n);
21
+ };
22
+ return e.jsxs(E, { sx: { display: "flex", flexDirection: "row", alignItems: "flex-start" }, children: [e.jsx(j, { onClick: s, children: n ? e.jsx(F, {}) : e.jsx(H, {}) }), e.jsx(G, { open: n, metadata: t })] });
23
+ }, xe = (t, n) => {
24
+ const a = t.trim(), s = new URLSearchParams();
25
+ if (!a)
26
+ return s;
27
+ const l = a.indexOf("-"), r = String(n);
28
+ if (l >= 0) {
29
+ const i = a.split("-", 2), c = i[0].trim(), d = i[1].trim();
30
+ return c && s.append(`${r}.min`, c), d && s.append(`${r}.max`, d), s;
31
+ }
32
+ return s.append(`${r}.min`, a), s.append(`${r}.max`, a), s;
33
+ }, N = /\d{4}-\d{2}-\d{2}((\s|T)\d{2}:\d{2}:\d{2})?/g, me = (t, n) => {
34
+ const a = (p) => p.length > 10 ? p : `${p} 00:00:00`, s = (p) => p.length > 10 ? p : `${p} 23:59:59`, l = t.trim(), r = new URLSearchParams();
35
+ if (!l)
36
+ return r;
37
+ const i = l.charAt(l.length - 1) === "-", c = l.indexOf("-") === 0, d = t.match(N);
38
+ if (!d || d.length === 0)
39
+ return r;
40
+ const o = String(n);
41
+ return d.length === 1 ? !i && !c ? (r.append(`${o}.min`, a(d[0])), r.append(`${o}.max`, s(d[0])), r) : (r.append(`${o}.${c ? "max" : "min"}`, c ? s(d[0]) : a(d[0])), r) : (r.append(`${o}.min`, a(d[0])), r.append(`${o}.max`, s(d[1])), r);
42
+ }, he = (t) => t.slice(0, t.indexOf(".")).replace("T", " "), fe = (t) => e.jsx(J, { metadata: t }), je = (t) => Array.isArray(t) ? B(t) : typeof t == "object" ? Q(t) : t.toString(), Q = (t) => Object.entries(t).map(([n, a]) => `${n}=${a}`).join(","), B = (t) => t.map((n) => `${n.key}=${n.value}`).join(","), ge = (t, n) => {
43
+ const a = new URLSearchParams();
44
+ return t && Object.entries(t).forEach(([s, l]) => {
45
+ var r;
46
+ l && (((r = n == null ? void 0 : n[s]) == null ? void 0 : r.call(n, l, s)) ?? new URLSearchParams({ [s]: l })).forEach((c, d) => {
47
+ a.append(d, c);
48
+ });
49
+ }), a;
50
+ };
51
+ var _ = {}, X = R;
52
+ Object.defineProperty(_, "__esModule", {
53
+ value: !0
54
+ });
55
+ var g = _.default = void 0, Y = X(k()), Z = e;
56
+ g = _.default = (0, Y.default)(/* @__PURE__ */ (0, Z.jsx)("path", {
57
+ d: "M22 3H7c-.69 0-1.23.35-1.59.88L0 12l5.41 8.11c.36.53.9.89 1.59.89h15c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2m-3 12.59L17.59 17 14 13.41 10.41 17 9 15.59 12.59 12 9 8.41 10.41 7 14 10.59 17.59 7 19 8.41 15.41 12z"
58
+ }), "Backspace");
59
+ const be = ({ filterValue: t, validationError: n, setFilterValue: a }) => {
60
+ const [s, l] = (t == null ? void 0 : t.split("-")) || "", [r, i] = P.useState(s), [c, d] = P.useState(l);
61
+ return M(() => {
62
+ const o = `${r || ""}${c || r ? "-" : ""}${c || ""}`;
63
+ a(o);
64
+ }, [r, c]), e.jsxs($, { container: !0, direction: "row", spacing: 1, children: [e.jsx($, { item: !0, xs: 12, xl: 6, children: e.jsx(v, { size: "small", error: !!n, helperText: n || "Start", value: r || "", onChange: (o) => {
65
+ i(`${o.target.value}:00`);
66
+ }, fullWidth: !0, InputProps: {
67
+ endAdornment: r && r.length > 0 ? e.jsx(S, { position: "end", children: e.jsx(j, { onClick: (o) => {
68
+ o.preventDefault(), o.stopPropagation(), i(void 0);
69
+ }, size: "small", children: e.jsx(g, {}) }) }) : void 0
70
+ } }) }), e.jsx($, { item: !0, xs: 12, xl: 6, children: e.jsx(v, { size: "small", value: c || "", helperText: "End", onChange: (o) => {
71
+ d(`${o.target.value}:00`);
72
+ }, fullWidth: !0, InputProps: {
73
+ endAdornment: c && c.length > 0 ? e.jsx(S, { position: "end", children: e.jsx(j, { onClick: (o) => {
74
+ o.preventDefault(), o.stopPropagation(), d(void 0);
75
+ }, size: "small", children: e.jsx(g, {}) }) }) : void 0
76
+ } }) })] });
77
+ }, K = ({ columns: t }) => e.jsx(z, { children: e.jsxs(b, { children: [t.map((n) => e.jsx(f, { sx: {
78
+ backgroundColor: "primary.main",
79
+ color: "common.white",
80
+ fontSize: 16,
81
+ minWidth: n.minWidth
82
+ }, children: n.label }, n.id)), e.jsx(f, { sx: {
83
+ backgroundColor: "primary.main",
84
+ color: "common.white",
85
+ fontSize: 16,
86
+ width: 100
87
+ } }, "submit-cell")] }) }), ee = ({ rows: t, onClickRowAction: n, columns: a, updateFilters: s, selectedRowId: l }) => e.jsx(e.Fragment, { children: t.map((r) => e.jsx(b, { sx: [
88
+ r.id !== l ? {
89
+ "&:nth-of-type(odd)": {
90
+ backgroundColor: "action.hover"
91
+ },
92
+ "&:hover": {
93
+ cursor: "pointer"
94
+ }
95
+ } : {}
96
+ ], onClick: (i) => n(r.id, i.ctrlKey || i.button === 1), hover: !0, role: "checkbox", tabIndex: -1, selected: l === r.id, children: a.map((i) => {
97
+ const c = r[i.id];
98
+ return e.jsx(f, { children: i.renderValue ? i.renderValue(c, i, s) : `${c}` }, i.id);
99
+ }) }, r.id)) }), te = ({ validationError: t, filterKey: n, filterValue: a, filterHelper: s, setFilterValue: l, onFilterClear: r }) => e.jsx(v, { size: "small", error: !!t, helperText: t || s, value: a || "", onChange: (i) => {
100
+ l(i.target.value);
101
+ }, InputProps: {
102
+ endAdornment: a && r ? e.jsx(S, { position: "end", children: e.jsx(j, { onClick: (i) => {
103
+ i.preventDefault(), i.stopPropagation(), r(n);
104
+ }, size: "small", children: e.jsx(g, {}) }) }) : void 0
105
+ } }), ne = ({ columns: t, onFilterClear: n, setFormValidationErrors: a, removeFilterError: s, setFilterValues: l, handleFilterChange: r, filterValues: i, formValidationErrors: c }) => e.jsxs(e.Fragment, { children: [t.map((d) => {
106
+ const o = d.filterKey, p = i[o] || "", x = c[o], u = d.filterValidator, m = (h) => {
107
+ if (u && h && h.length > 0) {
108
+ const D = u(h);
109
+ D ? a({ ...c, [o]: D }) : x && s(o);
110
+ } else x && s(o);
111
+ };
112
+ return e.jsx(f, { style: { width: d.minWidth }, children: d.renderFilter ? d.renderFilter({
113
+ filterKey: o,
114
+ filterValue: `${p}`,
115
+ filterHelper: d.filterHelper,
116
+ validationError: x,
117
+ setFilterValue: (h) => {
118
+ l({ ...i, [o]: h }), m(h.toString());
119
+ },
120
+ onFilterClear: () => n == null ? void 0 : n(o)
121
+ }) : e.jsx(te, { filterKey: o, filterValue: `${p}`, filterHelper: d.filterHelper, validationError: x, setFilterValue: (h) => {
122
+ l({ ...i, [o]: h }), m(h.toString());
123
+ }, onFilterClear: () => n == null ? void 0 : n(o) }) }, d.id);
124
+ }), e.jsx(f, { style: { width: 100 }, children: e.jsx(y, { variant: "contained", disabled: !!Object.keys(c).length, onClick: r, children: "Filter" }) }, "submit-cell")] }), re = ({ columns: t, filters: n, onFilterChange: a, onPageChange: s, onFilterClear: l }) => {
125
+ const [r, i] = O({}), c = (u) => {
126
+ const m = { ...r };
127
+ delete m[u], i(m);
128
+ }, [d, o] = O(n), p = () => {
129
+ a(d);
130
+ }, x = (u) => {
131
+ u.key === "Enter" && a(d);
132
+ };
133
+ return e.jsx(b, { sx: { verticalAlign: "baseline" }, onKeyPress: x, children: e.jsx(ne, { onPageChange: s, columns: t, onFilterClear: l, setFormValidationErrors: i, removeFilterError: c, setFilterValues: (u) => o((m) => ({ ...m, ...u })), handleFilterChange: p, filterValues: d, formValidationErrors: r }) });
134
+ }, $e = ({ onPageChange: t, rows: n, columns: a, filters: s, messageTotalCount: l, onClickRowAction: r, onFilterChange: i, onAddNew: c, onFilterClear: d, selectedEntityId: o }) => {
135
+ const p = (u, m) => {
136
+ t(m);
137
+ }, x = (u) => {
138
+ i == null || i(u);
139
+ };
140
+ return e.jsxs(e.Fragment, { children: [e.jsx(C, { sx: { maxHeight: "calc(100vh - 200px)" }, children: e.jsxs(I, { stickyHeader: !0, "aria-label": "sticky table", size: "small", children: [e.jsx(K, { columns: a }), e.jsxs(w, { children: [c && e.jsx(b, { children: e.jsx(f, { children: e.jsx(y, { variant: "contained", type: "button", onClick: c, children: "Add new" }) }) }), i ? e.jsx(re, { onPageChange: t, columns: a, onFilterChange: x, filters: s, onFilterClear: d }, JSON.stringify(s)) : null, e.jsx(ee, { rows: n, onClickRowAction: r, columns: a, updateFilters: x, selectedRowId: o })] })] }) }), e.jsx(A, { component: "div", count: l, rowsPerPage: s.size && parseInt(s.size, 10) || 100, page: s.page && parseInt(s.page, 10) || 0, onPageChange: p, rowsPerPageOptions: [] })] });
141
+ };
142
+ var L = {}, se = R;
143
+ Object.defineProperty(L, "__esModule", {
144
+ value: !0
145
+ });
146
+ var ae = L.default = void 0, ie = se(k()), oe = e;
147
+ ae = L.default = (0, ie.default)(/* @__PURE__ */ (0, oe.jsx)("path", {
148
+ d: "M20 11H7.83l5.59-5.59L12 4l-8 8 8 8 1.41-1.41L7.83 13H20z"
149
+ }), "ArrowBack");
150
+ export {
151
+ be as D,
152
+ $e as L,
153
+ xe as a,
154
+ je as b,
155
+ ge as c,
156
+ he as d,
157
+ fe as e,
158
+ me as f,
159
+ ae as g
160
+ };
161
+ //# sourceMappingURL=ArrowBack-C8PcQDeL.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ArrowBack-C8PcQDeL.js","sources":["../../node_modules/@mui/icons-material/ExpandLess.js","../node_modules/@evolver-fi/evolver-basics/dist/esm/common/components/ListMetadata.js","../node_modules/@evolver-fi/evolver-basics/dist/esm/common/components/listUtils.js","../node_modules/@evolver-fi/evolver-basics/dist/esm/common/utils/filterUtils.js","../../node_modules/@mui/icons-material/Backspace.js","../node_modules/@evolver-fi/evolver-basics/dist/esm/common/components/DateTimeRangeFilterField.js","../node_modules/@evolver-fi/evolver-basics/dist/esm/common/components/ListHeader.js","../node_modules/@evolver-fi/evolver-basics/dist/esm/common/components/ListRow.js","../node_modules/@evolver-fi/evolver-basics/dist/esm/common/components/ListFilterField.js","../node_modules/@evolver-fi/evolver-basics/dist/esm/common/components/ListFilters.js","../node_modules/@evolver-fi/evolver-basics/dist/esm/common/components/ListControls.js","../node_modules/@evolver-fi/evolver-basics/dist/esm/common/components/ListTable.js","../../node_modules/@mui/icons-material/ArrowBack.js"],"sourcesContent":["\"use strict\";\n\"use client\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = exports.default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"m12 8-6 6 1.41 1.41L12 10.83l4.59 4.58L18 14z\"\n}), 'ExpandLess');","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { Box, IconButton } from '@mui/material';\nimport ExpandLess from '@mui/icons-material/ExpandLess';\nimport ExpandMore from '@mui/icons-material/ExpandMore';\nimport React from 'react';\nconst formatSingleMetadata = (key, value) => {\n if (value !== undefined)\n return `${key}: ${value}`;\n return '';\n};\nconst Metadata = ({ metadata, open }) => {\n const metadataList = open ? Object.entries(metadata) : Object.entries(metadata).slice(0, 1);\n return (_jsx(Box, { sx: { whiteSpace: 'pre-line', padding: '10px' }, children: metadataList.map(([key, value]) => formatSingleMetadata(key, value)).join('\\n') }));\n};\nexport const ListMetadata = ({ metadata }) => {\n const [open, setOpen] = React.useState(false);\n const handleClick = (event) => {\n event.preventDefault();\n event.stopPropagation();\n setOpen(!open);\n };\n return (_jsxs(Box, { sx: { display: 'flex', flexDirection: 'row', alignItems: 'flex-start' }, children: [_jsx(IconButton, { onClick: handleClick, children: open ? _jsx(ExpandLess, {}) : _jsx(ExpandMore, {}) }), _jsx(Metadata, { open: open, metadata: metadata })] }));\n};\n","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { ListMetadata } from './ListMetadata';\n// TODO add typings for all the formatters so that only valid keys are passed\nexport const formatNumberRangeFilter = (value, key) => {\n const trimmed = value.trim();\n const result = new URLSearchParams();\n if (!trimmed) {\n return result;\n }\n const rangeSeparatorIndex = trimmed.indexOf('-');\n const keyStr = String(key);\n if (rangeSeparatorIndex >= 0) {\n const parts = trimmed.split('-', 2);\n const start = parts[0].trim();\n const end = parts[1].trim();\n if (start) {\n result.append(`${keyStr}.min`, start);\n }\n if (end) {\n result.append(`${keyStr}.max`, end);\n }\n return result;\n }\n result.append(`${keyStr}.min`, trimmed);\n result.append(`${keyStr}.max`, trimmed);\n return result;\n};\nconst datetimePattern = /\\d{4}-\\d{2}-\\d{2}((\\s|T)\\d{2}:\\d{2}:\\d{2})?/g;\nexport const formatDatetimeRangeFilter = (value, key) => {\n const formatMin = (value) => (value.length > 10 ? value : `${value} 00:00:00`);\n const formatMax = (value) => (value.length > 10 ? value : `${value} 23:59:59`);\n const trimmed = value.trim();\n const result = new URLSearchParams();\n if (!trimmed) {\n return result;\n }\n const isStartOnly = trimmed.charAt(trimmed.length - 1) === '-';\n const isEndOnly = trimmed.indexOf('-') === 0;\n const matches = value.match(datetimePattern);\n if (!matches || matches.length === 0) {\n return result;\n }\n const keyStr = String(key);\n if (matches.length === 1) {\n if (!isStartOnly && !isEndOnly) {\n result.append(`${keyStr}.min`, formatMin(matches[0]));\n result.append(`${keyStr}.max`, formatMax(matches[0]));\n return result;\n }\n result.append(`${keyStr}.${isEndOnly ? 'max' : 'min'}`, isEndOnly ? formatMax(matches[0]) : formatMin(matches[0]));\n return result;\n }\n result.append(`${keyStr}.min`, formatMin(matches[0]));\n result.append(`${keyStr}.max`, formatMax(matches[1]));\n return result;\n};\nexport const formatDateTime = (value) => value.slice(0, value.indexOf('.')).replace('T', ' ');\nexport const formatMetadata = (metadata) => {\n return _jsx(ListMetadata, { metadata: metadata });\n};\nexport const getParameterValueFormatters = (definitions) => {\n const result = {};\n definitions.forEach((definition) => {\n if (definition.paramValueFormatter) {\n result[definition.filterKey] = definition.paramValueFormatter;\n }\n });\n return result;\n};\n","export const filterFromUrlSearchParams = (query, keys) => {\n const filter = {};\n keys.forEach((k) => {\n const value = query.get(k.toString());\n if (value) {\n filter[k] = value.toString();\n }\n });\n return filter;\n};\n/**\n * Produce a filter value from a row value. Best effort recognition of the different types of objects.\n * @param rowValue\n * @returns\n */\nexport const filterValueFromRowValue = (rowValue) => {\n if (Array.isArray(rowValue)) {\n return formatKeyValueArray(rowValue);\n }\n else if (typeof rowValue === 'object') {\n return formatObject(rowValue);\n }\n return rowValue.toString();\n};\nexport const formatObject = (value) => {\n return Object.entries(value)\n .map(([k, v]) => `${k}=${v}`)\n .join(',');\n};\nexport const formatKeyValueArray = (value) => {\n return value.map((v) => `${v.key}=${v.value}`).join(',');\n};\nexport const createFilterQuery = (filters, formatterByKey) => {\n const result = new URLSearchParams();\n if (!filters) {\n return result;\n }\n Object.entries(filters).forEach(([key, value]) => {\n if (value) {\n const subResult = formatterByKey?.[key]?.(value, key) ?? new URLSearchParams({ [key]: value });\n subResult.forEach((subValue, subKey) => {\n result.append(subKey, subValue);\n });\n }\n });\n return result;\n};\n","\"use strict\";\n\"use client\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = exports.default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M22 3H7c-.69 0-1.23.35-1.59.88L0 12l5.41 8.11c.36.53.9.89 1.59.89h15c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2m-3 12.59L17.59 17 14 13.41 10.41 17 9 15.59 12.59 12 9 8.41 10.41 7 14 10.59 17.59 7 19 8.41 15.41 12z\"\n}), 'Backspace');","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport React, { useEffect } from 'react';\nimport { Grid, IconButton, InputAdornment, TextField } from '@mui/material';\nimport Backspace from '@mui/icons-material/Backspace';\nconst DateTimeRangeFilterField = ({ filterValue, validationError, setFilterValue, }) => {\n const [initialStartDateTime, initialEndDateTime] = filterValue?.split('-') || '';\n const [startDateTime, setStartDateTime] = React.useState(initialStartDateTime);\n const [endDateTime, setEndDateTime] = React.useState(initialEndDateTime);\n useEffect(() => {\n const value = `${startDateTime || ''}${endDateTime || startDateTime ? '-' : ''}${endDateTime || ''}`;\n setFilterValue(value);\n }, [startDateTime, endDateTime]);\n return (_jsxs(Grid, { container: true, direction: \"row\", spacing: 1, children: [_jsx(Grid, { item: true, xs: 12, xl: 6, children: _jsx(TextField, { size: \"small\", error: !!validationError, helperText: validationError || 'Start', value: startDateTime || '', onChange: (event) => {\n setStartDateTime(`${event.target.value}:00`);\n }, fullWidth: true, InputProps: {\n endAdornment: startDateTime && startDateTime.length > 0 ? (_jsx(InputAdornment, { position: \"end\", children: _jsx(IconButton, { onClick: (e) => {\n e.preventDefault();\n e.stopPropagation();\n setStartDateTime(undefined);\n }, size: \"small\", children: _jsx(Backspace, {}) }) })) : undefined,\n } }) }), _jsx(Grid, { item: true, xs: 12, xl: 6, children: _jsx(TextField, { size: \"small\", value: endDateTime || '', helperText: \"End\", onChange: (event) => {\n setEndDateTime(`${event.target.value}:00`);\n }, fullWidth: true, InputProps: {\n endAdornment: endDateTime && endDateTime.length > 0 ? (_jsx(InputAdornment, { position: \"end\", children: _jsx(IconButton, { onClick: (e) => {\n e.preventDefault();\n e.stopPropagation();\n setEndDateTime(undefined);\n }, size: \"small\", children: _jsx(Backspace, {}) }) })) : undefined,\n } }) })] }));\n};\nexport default DateTimeRangeFilterField;\n","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { TableCell, TableHead, TableRow } from '@mui/material';\nexport const ListHeader = ({ columns }) => {\n return (_jsx(TableHead, { children: _jsxs(TableRow, { children: [columns.map((column) => (_jsx(TableCell, { sx: {\n backgroundColor: 'primary.main',\n color: 'common.white',\n fontSize: 16,\n minWidth: column.minWidth,\n }, children: column.label }, column.id))), _jsx(TableCell, { sx: {\n backgroundColor: 'primary.main',\n color: 'common.white',\n fontSize: 16,\n width: 100,\n } }, \"submit-cell\")] }) }));\n};\n","import { jsx as _jsx, Fragment as _Fragment } from \"react/jsx-runtime\";\nimport { TableCell, TableRow } from '@mui/material';\nexport const ListRow = ({ rows, onClickRowAction, columns, updateFilters, selectedRowId, }) => {\n return (_jsx(_Fragment, { children: rows.map((row) => (_jsx(TableRow, { sx: [\n row.id !== selectedRowId\n ? {\n '&:nth-of-type(odd)': {\n backgroundColor: 'action.hover',\n },\n '&:hover': {\n cursor: 'pointer',\n },\n }\n : {},\n ], onClick: (e) => onClickRowAction(row.id, e.ctrlKey || e.button === 1), hover: true, role: \"checkbox\", tabIndex: -1, selected: selectedRowId === row.id, children: columns.map((column) => {\n const value = row[column.id];\n return (_jsx(TableCell, { children: column.renderValue ? column.renderValue(value, column, updateFilters) : `${value}` }, column.id));\n }) }, row.id))) }));\n};\n","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { IconButton, InputAdornment, TextField } from '@mui/material';\nimport Backspace from '@mui/icons-material/Backspace';\nconst ListFilterField = ({ validationError, filterKey, filterValue, filterHelper, setFilterValue, onFilterClear, }) => (_jsx(TextField, { size: \"small\", error: !!validationError, helperText: validationError || filterHelper, value: filterValue || '', onChange: (event) => {\n setFilterValue(event.target.value);\n }, InputProps: {\n endAdornment: filterValue && onFilterClear ? (_jsx(InputAdornment, { position: \"end\", children: _jsx(IconButton, { onClick: (e) => {\n e.preventDefault();\n e.stopPropagation();\n onFilterClear(filterKey);\n }, size: \"small\", children: _jsx(Backspace, {}) }) })) : undefined,\n } }));\nexport default ListFilterField;\n","import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { Button, TableCell } from '@mui/material';\nimport ListFilterField from './ListFilterField';\nexport const ListFilters = ({ columns, onFilterClear, setFormValidationErrors, removeFilterError, setFilterValues, handleFilterChange, filterValues, formValidationErrors, }) => {\n return (_jsxs(_Fragment, { children: [columns.map((column) => {\n const filterKey = column.filterKey;\n const filterValue = filterValues[filterKey] || '';\n const validationError = formValidationErrors[filterKey];\n const validator = column.filterValidator;\n const handleValidate = (value) => {\n if (validator && value && value.length > 0) {\n const error = validator(value);\n if (error) {\n setFormValidationErrors({ ...formValidationErrors, [filterKey]: error });\n }\n else if (validationError) {\n removeFilterError(filterKey);\n }\n }\n else if (validationError) {\n removeFilterError(filterKey);\n }\n };\n return (_jsx(TableCell, { style: { width: column.minWidth }, children: column.renderFilter ? (column.renderFilter({\n filterKey,\n filterValue: `${filterValue}`,\n filterHelper: column.filterHelper,\n validationError,\n setFilterValue: (value) => {\n setFilterValues({ ...filterValues, [filterKey]: value });\n handleValidate(value.toString());\n },\n onFilterClear: () => onFilterClear?.(filterKey),\n })) : (_jsx(ListFilterField, { filterKey: filterKey, filterValue: `${filterValue}`, filterHelper: column.filterHelper, validationError: validationError, setFilterValue: (value) => {\n setFilterValues({ ...filterValues, [filterKey]: value });\n handleValidate(value.toString());\n }, onFilterClear: () => onFilterClear?.(filterKey) })) }, column.id));\n }), _jsx(TableCell, { style: { width: 100 }, children: _jsx(Button, { variant: \"contained\", disabled: !!Object.keys(formValidationErrors).length, onClick: handleFilterChange, children: \"Filter\" }) }, \"submit-cell\")] }));\n};\n","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { useState } from 'react';\nimport { ListFilters } from './ListFilters';\nimport { TableRow } from '@mui/material';\nexport const ListControls = ({ columns, filters, onFilterChange, onPageChange, onFilterClear, }) => {\n const [formValidationErrors, setFormValidationErrors] = useState({});\n const removeFilterError = (filterKey) => {\n const currentErrors = { ...formValidationErrors };\n delete currentErrors[filterKey];\n setFormValidationErrors(currentErrors);\n };\n const [filterValues, setFilterValues] = useState(filters);\n const handleFilterChange = () => {\n onFilterChange(filterValues);\n };\n const onKeyPress = (e) => {\n if (e.key === 'Enter') {\n onFilterChange(filterValues);\n }\n };\n return (_jsx(TableRow, { sx: { verticalAlign: 'baseline' }, onKeyPress: onKeyPress, children: _jsx(ListFilters, { onPageChange: onPageChange, columns: columns, onFilterClear: onFilterClear, setFormValidationErrors: setFormValidationErrors, removeFilterError: removeFilterError, setFilterValues: (value) => setFilterValues((prev) => ({ ...prev, ...value })), handleFilterChange: handleFilterChange, filterValues: filterValues, formValidationErrors: formValidationErrors }) }));\n};\n","import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from \"react/jsx-runtime\";\nimport { Button, Table, TableBody, TableCell, TableContainer, TablePagination, TableRow, } from '@mui/material';\nimport { ListHeader } from './ListHeader';\nimport { ListRow } from './ListRow';\nimport { ListControls } from './ListControls';\nexport const ListTable = ({ onPageChange, rows, columns, filters, messageTotalCount, onClickRowAction, onFilterChange, onAddNew, onFilterClear, selectedEntityId, }) => {\n const handleChangePage = (_event, newPage) => {\n onPageChange(newPage);\n };\n const handleFilterChange = (value) => {\n onFilterChange?.(value);\n };\n return (_jsxs(_Fragment, { children: [_jsx(TableContainer, { sx: { maxHeight: 'calc(100vh - 200px)' }, children: _jsxs(Table, { stickyHeader: true, \"aria-label\": \"sticky table\", size: \"small\", children: [_jsx(ListHeader, { columns: columns }), _jsxs(TableBody, { children: [onAddNew && (_jsx(TableRow, { children: _jsx(TableCell, { children: _jsx(Button, { variant: \"contained\", type: \"button\", onClick: onAddNew, children: \"Add new\" }) }) })), onFilterChange ? (_jsx(ListControls, { onPageChange: onPageChange, columns: columns, onFilterChange: handleFilterChange, filters: filters, onFilterClear: onFilterClear }, JSON.stringify(filters))) : null, _jsx(ListRow, { rows: rows, onClickRowAction: onClickRowAction, columns: columns, updateFilters: handleFilterChange, selectedRowId: selectedEntityId })] })] }) }), _jsx(TablePagination, { component: \"div\", count: messageTotalCount, rowsPerPage: (filters.size && parseInt(filters.size, 10)) || 100, page: (filters.page && parseInt(filters.page, 10)) || 0, onPageChange: handleChangePage, rowsPerPageOptions: [] })] }));\n};\n","\"use strict\";\n\"use client\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = exports.default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M20 11H7.83l5.59-5.59L12 4l-8 8 8 8 1.41-1.41L7.83 13H20z\"\n}), 'ArrowBack');"],"names":["_interopRequireDefault","require$$0","ExpandLess","default_1","_createSvgIcon","require$$1","_jsxRuntime","require$$2","formatSingleMetadata","key","value","Metadata","metadata","open","metadataList","_jsx","Box","ListMetadata","setOpen","React","handleClick","event","_jsxs","IconButton","ExpandMore","formatNumberRangeFilter","trimmed","result","rangeSeparatorIndex","keyStr","parts","start","end","datetimePattern","formatDatetimeRangeFilter","formatMin","formatMax","isStartOnly","isEndOnly","matches","formatDateTime","formatMetadata","filterValueFromRowValue","rowValue","formatKeyValueArray","formatObject","k","v","createFilterQuery","filters","formatterByKey","_a","subValue","subKey","Backspace","DateTimeRangeFilterField","filterValue","validationError","setFilterValue","initialStartDateTime","initialEndDateTime","startDateTime","setStartDateTime","endDateTime","setEndDateTime","useEffect","Grid","TextField","InputAdornment","e","ListHeader","columns","TableHead","TableRow","column","TableCell","ListRow","rows","onClickRowAction","updateFilters","selectedRowId","_Fragment","row","ListFilterField","filterKey","filterHelper","onFilterClear","ListFilters","setFormValidationErrors","removeFilterError","setFilterValues","handleFilterChange","filterValues","formValidationErrors","validator","handleValidate","error","Button","ListControls","onFilterChange","onPageChange","useState","currentErrors","onKeyPress","prev","ListTable","messageTotalCount","onAddNew","selectedEntityId","handleChangePage","_event","newPage","TableContainer","Table","TableBody","TablePagination","ArrowBack"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12]}
@@ -0,0 +1,19 @@
1
+ import { j as s } from "./jsx-runtime-B6kdoens.js";
2
+ import { useLocation as t, NavLink as o } from "react-router-dom";
3
+ const e = {
4
+ "bread-crumbs": "_bread-crumbs_1f4j4_1",
5
+ "bread-crumb": "_bread-crumb_1f4j4_1"
6
+ }, d = () => {
7
+ const r = t().pathname.split("/").filter(Boolean);
8
+ return /* @__PURE__ */ s.jsxs("nav", { className: e["bread-crumbs"], children: [
9
+ /* @__PURE__ */ s.jsx("span", { className: e["bread-crumb"], children: /* @__PURE__ */ s.jsx(o, { to: "/", children: "Home" }) }),
10
+ r.map((c, n) => {
11
+ const a = `/${r.slice(0, n + 1).join("/")}`;
12
+ return n === r.length - 1 ? /* @__PURE__ */ s.jsx("span", { children: c }, a) : /* @__PURE__ */ s.jsx("span", { className: e["bread-crumb"], children: /* @__PURE__ */ s.jsx(o, { to: a, children: c }) }, a);
13
+ })
14
+ ] });
15
+ };
16
+ export {
17
+ d as B
18
+ };
19
+ //# sourceMappingURL=BreadCrumbs-EFff4Rip.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BreadCrumbs-EFff4Rip.js","sources":["../src/components/breadcrumbs/BreadCrumbs.tsx"],"sourcesContent":["import { NavLink, useLocation } from \"react-router-dom\";\n\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-expect-error\nimport styles from \"./breadcrumbs.module.css\";\n\n/**\n * Breadcrumbs component to show the current path and active route segments\n * Provides links to the parent routes\n *\n * NOTE: `import \"@evolver-fi/evolver-basics-admin-components/breadcrumbs.css\"` to enable the default styles\n *\n * @returns\n */\nconst BreadCrumbs = () => {\n const location = useLocation();\n const pathNames = location.pathname.split(\"/\").filter(Boolean);\n\n return (\n <nav className={styles[\"bread-crumbs\"]}>\n <span className={styles[\"bread-crumb\"]}>\n <NavLink to=\"/\">Home</NavLink>\n </span>\n {pathNames.map((path, index) => {\n const routeTo = `/${pathNames.slice(0, index + 1).join(\"/\")}`;\n const isLast = index === pathNames.length - 1;\n return isLast ? (\n <span key={routeTo}>{path}</span>\n ) : (\n <span key={routeTo} className={styles[\"bread-crumb\"]}>\n <NavLink to={routeTo}>{path}</NavLink>\n </span>\n );\n })}\n </nav>\n );\n};\n\nexport default BreadCrumbs;\n"],"names":["BreadCrumbs","pathNames","useLocation","jsxs","styles","jsx","NavLink","path","index","routeTo"],"mappings":";;;;;GAcMA,IAAc,MAAM;AAExB,QAAMC,IADWC,EAAY,EACF,SAAS,MAAM,GAAG,EAAE,OAAO,OAAO;AAE7D,SACGC,gBAAAA,EAAAA,KAAA,OAAA,EAAI,WAAWC,EAAO,cAAc,GACnC,UAAA;AAAA,IAACC,gBAAAA,EAAA,IAAA,QAAA,EAAK,WAAWD,EAAO,aAAa,GACnC,gCAACE,GAAQ,EAAA,IAAG,KAAI,UAAA,OAAI,CAAA,GACtB;AAAA,IACCL,EAAU,IAAI,CAACM,GAAMC,MAAU;AACxB,YAAAC,IAAU,IAAIR,EAAU,MAAM,GAAGO,IAAQ,CAAC,EAAE,KAAK,GAAG,CAAC;AAE3D,aADeA,MAAUP,EAAU,SAAS,IAEzCI,gBAAAA,EAAAA,IAAA,QAAA,EAAoB,eAAVI,CAAe,0BAEzB,QAAmB,EAAA,WAAWL,EAAO,aAAa,GACjD,UAACC,gBAAAA,EAAA,IAAAC,GAAA,EAAQ,IAAIG,GAAU,UAAAF,GAAK,KADnBE,CAEX;AAAA,IAEH,CAAA;AAAA,EAAA,GACH;AAEJ;"}
@@ -0,0 +1 @@
1
+ ._bread-crumbs_1f4j4_1{display:flex;flex-direction:row;gap:1em;font-size:20px;font-family:Roboto,sans-serif;font-weight:600;padding:.5em}._bread-crumb_1f4j4_1>a:visited{color:#00e}._bread-crumb_1f4j4_1>a:hover{color:#77f}._bread-crumb_1f4j4_1:after{content:"/";position:relative;right:-.5em}
@@ -0,0 +1,16 @@
1
+ import { j as p } from "./jsx-runtime-B6kdoens.js";
2
+ import { Button as C } from "@mui/material";
3
+ import { useState as x, useEffect as j } from "react";
4
+ const T = ({ variant: o, confirmVariant: n = o, children: r, confirmChildren: m = r, color: s, confirmColor: l = s, timeout: f = 2e3, onConfirmed: u, ...c }) => {
5
+ const [t, e] = x(!1), a = () => {
6
+ t ? (u(), e(!1)) : e(!0);
7
+ };
8
+ return j(() => {
9
+ let i;
10
+ return t && (i = setTimeout(() => e(!1), f)), () => clearTimeout(i);
11
+ }, [t, f]), p.jsx(C, { variant: t ? n : o, color: t ? l : s, onClick: a, ...c, children: t ? m : r });
12
+ };
13
+ export {
14
+ T as C
15
+ };
16
+ //# sourceMappingURL=ConfirmButton-jayUa8_J.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConfirmButton-jayUa8_J.js","sources":["../node_modules/@evolver-fi/evolver-basics/dist/esm/common/components/ConfirmButton.js"],"sourcesContent":["import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { Button } from '@mui/material';\nimport { useEffect, useState } from 'react';\nconst ConfirmButton = ({ variant, confirmVariant = variant, children, confirmChildren = children, color, confirmColor = color, timeout = 2000, onConfirmed, ...buttonProps }) => {\n const [confirm, setConfirm] = useState(false);\n const onDeleteClick = () => {\n if (confirm) {\n onConfirmed();\n setConfirm(false);\n }\n else\n setConfirm(true);\n };\n useEffect(() => {\n let timer;\n if (confirm) {\n timer = setTimeout(() => setConfirm(false), timeout);\n }\n return () => clearTimeout(timer);\n }, [confirm, timeout]);\n return (_jsx(Button, { variant: confirm ? confirmVariant : variant, color: confirm ? confirmColor : color, onClick: onDeleteClick, ...buttonProps, children: confirm ? confirmChildren : children }));\n};\nexport default ConfirmButton;\n"],"names":["ConfirmButton","variant","confirmVariant","children","confirmChildren","color","confirmColor","timeout","onConfirmed","buttonProps","confirm","setConfirm","useState","onDeleteClick","useEffect","timer","_jsx","Button"],"mappings":";;;AAGK,MAACA,IAAgB,CAAC,EAAE,SAAAC,GAAS,gBAAAC,IAAiBD,GAAS,UAAAE,GAAU,iBAAAC,IAAkBD,GAAU,OAAAE,GAAO,cAAAC,IAAeD,GAAO,SAAAE,IAAU,KAAM,aAAAC,GAAa,GAAGC,QAAkB;AAC7K,QAAM,CAACC,GAASC,CAAU,IAAIC,EAAS,EAAK,GACtCC,IAAgB,MAAM;AACxB,IAAIH,KACAF,EAAa,GACbG,EAAW,EAAK,KAGhBA,EAAW,EAAI;AAAA,EACtB;AACD,SAAAG,EAAU,MAAM;AACZ,QAAIC;AACJ,WAAIL,MACAK,IAAQ,WAAW,MAAMJ,EAAW,EAAK,GAAGJ,CAAO,IAEhD,MAAM,aAAaQ,CAAK;AAAA,EACvC,GAAO,CAACL,GAASH,CAAO,CAAC,GACbS,EAAI,IAACC,GAAQ,EAAE,SAASP,IAAUR,IAAiBD,GAAS,OAAOS,IAAUJ,IAAeD,GAAO,SAASQ,GAAe,GAAGJ,GAAa,UAAUC,IAAUN,IAAkBD,GAAU;AACvM;","x_google_ignoreList":[0]}
@@ -0,0 +1,14 @@
1
+ import { r, i as a } from "./createSvgIcon-DHqCx8A0.js";
2
+ import { j as t } from "./jsx-runtime-B6kdoens.js";
3
+ var e = {}, o = a;
4
+ Object.defineProperty(e, "__esModule", {
5
+ value: !0
6
+ });
7
+ var u = e.default = void 0, i = o(r()), d = t;
8
+ u = e.default = (0, i.default)(/* @__PURE__ */ (0, d.jsx)("path", {
9
+ d: "M16.59 8.59 12 13.17 7.41 8.59 6 10l6 6 6-6z"
10
+ }), "ExpandMore");
11
+ export {
12
+ u as d
13
+ };
14
+ //# sourceMappingURL=ExpandMore-CCOUGfS4.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExpandMore-CCOUGfS4.js","sources":["../../node_modules/@mui/icons-material/ExpandMore.js"],"sourcesContent":["\"use strict\";\n\"use client\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = exports.default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M16.59 8.59 12 13.17 7.41 8.59 6 10l6 6 6-6z\"\n}), 'ExpandMore');"],"names":["_interopRequireDefault","require$$0","ExpandMore","default_1","_createSvgIcon","require$$1","_jsxRuntime","require$$2"],"mappings":";;YAGIA,IAAyBC;AAC7B,OAAO,eAAeC,GAAS,cAAc;AAAA,EAC3C,OAAO;AACT,CAAC;AACc,IAAAC,IAAAD,EAAA,UAAG,QACdE,IAAiBJ,EAAuBK,GAAgC,GACxEC,IAAcC;AACHJ,IAAeD,EAAA,cAAOE,EAAe,6BAA2BE,EAAY,KAAK,QAAQ;AAAA,EACtG,GAAG;AACL,CAAC,GAAG,YAAY;","x_google_ignoreList":[0]}