@evolver-fi/evolver-basics-admin-components 0.0.21 → 8.2.2-alpha.2

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 (209) hide show
  1. package/dist/EnumSelectFilter-DDWIjz5i.js +35 -0
  2. package/dist/EnumSelectFilter-DDWIjz5i.js.map +1 -0
  3. package/dist/FilterLink-OxQDWR5G.js +29 -0
  4. package/dist/FilterLink-OxQDWR5G.js.map +1 -0
  5. package/dist/Table-IciQttr3.js +79 -0
  6. package/dist/Table-IciQttr3.js.map +1 -0
  7. package/dist/TableMetadataDisplay-BM61EulC.js +49 -0
  8. package/dist/TableMetadataDisplay-BM61EulC.js.map +1 -0
  9. package/dist/TextFilter-CLOKjiSd.js +54 -0
  10. package/dist/TextFilter-CLOKjiSd.js.map +1 -0
  11. package/dist/api-CMiZYkfc.js +32 -0
  12. package/dist/api-CMiZYkfc.js.map +1 -0
  13. package/dist/breadcrumbs/index.js +2 -5
  14. package/dist/breadcrumbs-BAwnKRxL.js +32 -0
  15. package/dist/breadcrumbs-BAwnKRxL.js.map +1 -0
  16. package/dist/breadcrumbs.css +1 -0
  17. package/dist/client/index.js +341 -0
  18. package/dist/client/index.js.map +1 -0
  19. package/dist/configuration-values/index.js +2 -0
  20. package/dist/configuration-values-CjOfmPRq.js +3464 -0
  21. package/dist/configuration-values-CjOfmPRq.js.map +1 -0
  22. package/dist/control-values/index.js +2 -0
  23. package/dist/control-values-CzQOB4WJ.js +144 -0
  24. package/dist/control-values-CzQOB4WJ.js.map +1 -0
  25. package/dist/exhaustiveValues-BYWkg9M1.js +6 -0
  26. package/dist/exhaustiveValues-BYWkg9M1.js.map +1 -0
  27. package/dist/filter/index.js +4 -11
  28. package/dist/formData-BO275hRZ.js +43 -0
  29. package/dist/formData-BO275hRZ.js.map +1 -0
  30. package/dist/jwt-tokens/index.js +2 -7
  31. package/dist/jwt-tokens-DnKsHei4.js +71 -0
  32. package/dist/jwt-tokens-DnKsHei4.js.map +1 -0
  33. package/dist/main/index.js +17 -51
  34. package/dist/message-log/index.js +2 -10
  35. package/dist/message-log-BdrJtbsP.js +337 -0
  36. package/dist/message-log-BdrJtbsP.js.map +1 -0
  37. package/dist/message-sending/index.js +2 -10
  38. package/dist/message-sending-dvTw2fFm.js +181 -0
  39. package/dist/message-sending-dvTw2fFm.js.map +1 -0
  40. package/dist/message-targets/index.js +2 -0
  41. package/dist/message-targets-8EppIJde.js +406 -0
  42. package/dist/message-targets-8EppIJde.js.map +1 -0
  43. package/dist/pagination-C4QUYRMf.js +20 -0
  44. package/dist/pagination-C4QUYRMf.js.map +1 -0
  45. package/dist/scheduled-tasks/index.js +2 -14
  46. package/dist/scheduled-tasks-BtBnBrE7.js +647 -0
  47. package/dist/scheduled-tasks-BtBnBrE7.js.map +1 -0
  48. package/dist/schemas-D-8_LuND.js +2986 -0
  49. package/dist/schemas-D-8_LuND.js.map +1 -0
  50. package/dist/table/index.js +2 -6
  51. package/dist/triggerables/index.js +3 -9
  52. package/dist/triggerables-DgrIeQMi.js +51 -0
  53. package/dist/triggerables-DgrIeQMi.js.map +1 -0
  54. package/dist/types/breadcrumbs.d.ts +1 -1
  55. package/dist/types/client/index.d.ts +5 -0
  56. package/dist/types/client.d.ts +2 -0
  57. package/dist/types/common/exhaustiveValues.d.ts +5 -0
  58. package/dist/types/common/formData.d.ts +20 -0
  59. package/dist/types/common/pagination.d.ts +8 -0
  60. package/dist/types/{admin-components/src/components → components}/breadcrumbs/BreadCrumbs.d.ts +1 -1
  61. package/dist/types/{admin-components/src/components → components}/filter/EnumSelectFilter.d.ts +0 -4
  62. package/dist/types/{admin-components/src/components → components}/filter/FilterHelperTexts.d.ts +1 -1
  63. package/dist/types/{admin-components/src/components → components}/filter/FilterLink.d.ts +1 -1
  64. package/dist/types/{admin-components/src/components → components}/filter/TextFilter.d.ts +1 -1
  65. package/dist/types/components/filter/createEnumSelectFilter.d.ts +5 -0
  66. package/dist/types/components/metadata/TableMetadataDisplay.d.ts +2 -0
  67. package/dist/types/{admin-components/src/components → components}/table/Pagination.d.ts +1 -1
  68. package/dist/types/{admin-components/src/components → components}/table/Table.d.ts +1 -1
  69. package/dist/types/configuration-values.d.ts +2 -0
  70. package/dist/types/control-values.d.ts +2 -0
  71. package/dist/types/filter.d.ts +1 -1
  72. package/dist/types/{admin-components/src/index.d.ts → index.d.ts} +3 -0
  73. package/dist/types/jwt-tokens.d.ts +1 -1
  74. package/dist/types/main.d.ts +1 -1
  75. package/dist/types/message-log.d.ts +1 -1
  76. package/dist/types/message-sending.d.ts +1 -1
  77. package/dist/types/message-targets.d.ts +2 -0
  78. package/dist/types/routes/configuration-values/ConfigurationValueFormRoute.d.ts +2 -0
  79. package/dist/types/routes/configuration-values/ConfigurationValuesRoute.d.ts +2 -0
  80. package/dist/types/routes/configuration-values/action.d.ts +8 -0
  81. package/dist/types/routes/configuration-values/api.d.ts +53 -0
  82. package/dist/types/routes/configuration-values/configurationValueColumns.d.ts +4 -0
  83. package/dist/types/routes/configuration-values/index.d.ts +5 -0
  84. package/dist/types/routes/configuration-values/loader.d.ts +52 -0
  85. package/dist/types/routes/control-values/ControlValuesRoute.d.ts +2 -0
  86. package/dist/types/routes/control-values/SingleControlValueRoute.d.ts +2 -0
  87. package/dist/types/routes/control-values/api.d.ts +43 -0
  88. package/dist/types/routes/control-values/controlValueColumns.d.ts +4 -0
  89. package/dist/types/routes/control-values/index.d.ts +4 -0
  90. package/dist/types/routes/control-values/loader.d.ts +43 -0
  91. package/dist/types/routes/jwt-tokens/JwtTokensRoute.d.ts +6 -0
  92. package/dist/types/routes/jwt-tokens/api.d.ts +41 -0
  93. package/dist/types/routes/jwt-tokens/index.d.ts +3 -0
  94. package/dist/types/routes/jwt-tokens/loader.d.ts +35 -0
  95. package/dist/types/routes/message-log/LogBodyLink.d.ts +6 -0
  96. package/dist/types/routes/message-log/MessageLogRoute.d.ts +2 -0
  97. package/dist/types/routes/message-log/SingleLogMessageRoute.d.ts +6 -0
  98. package/dist/types/routes/message-log/api.d.ts +88 -0
  99. package/dist/types/routes/message-log/index.d.ts +4 -0
  100. package/dist/types/routes/message-log/loader.d.ts +53 -0
  101. package/dist/types/routes/message-sending/MessageSendingRoute.d.ts +2 -0
  102. package/dist/types/routes/message-sending/SingleMessageRoute.d.ts +2 -0
  103. package/dist/types/routes/message-sending/api.d.ts +92 -0
  104. package/dist/types/routes/message-sending/index.d.ts +4 -0
  105. package/dist/types/routes/message-sending/loader.d.ts +34 -0
  106. package/dist/types/{admin-components/src/routes → routes}/message-sending/types.d.ts +4 -2
  107. package/dist/types/routes/message-targets/MessageTargetFormRoute.d.ts +2 -0
  108. package/dist/types/routes/message-targets/MessageTargetsRoute.d.ts +2 -0
  109. package/dist/types/routes/message-targets/action.d.ts +8 -0
  110. package/dist/types/routes/message-targets/api.d.ts +12 -0
  111. package/dist/types/routes/message-targets/index.d.ts +5 -0
  112. package/dist/types/routes/message-targets/loader.d.ts +15 -0
  113. package/dist/types/routes/scheduled-tasks/ScheduledTaskFormRoute.d.ts +2 -0
  114. package/dist/types/routes/scheduled-tasks/ScheduledTasksRoute.d.ts +2 -0
  115. package/dist/types/routes/scheduled-tasks/action.d.ts +21 -0
  116. package/dist/types/routes/scheduled-tasks/api.d.ts +75 -0
  117. package/dist/types/routes/scheduled-tasks/index.d.ts +5 -0
  118. package/dist/types/routes/scheduled-tasks/loader.d.ts +57 -0
  119. package/dist/types/routes/scheduled-tasks/parseScheduledTask.d.ts +15 -0
  120. package/dist/types/routes/triggerables/TriggerablesRoute.d.ts +2 -0
  121. package/dist/types/routes/triggerables/action.d.ts +6 -0
  122. package/dist/types/routes/triggerables/api.d.ts +33 -0
  123. package/dist/types/routes/triggerables/index.d.ts +4 -0
  124. package/dist/types/routes/triggerables/loader.d.ts +3 -0
  125. package/dist/types/scheduled-tasks.d.ts +1 -1
  126. package/dist/types/table.d.ts +1 -1
  127. package/dist/types/triggerables.d.ts +1 -1
  128. package/dist/types/types/openapiTypes.d.ts +3321 -0
  129. package/package.json +60 -29
  130. package/dist/BreadCrumbs-BzG2oi8Z.js +0 -19
  131. package/dist/BreadCrumbs-BzG2oi8Z.js.map +0 -1
  132. package/dist/BreadCrumbs.css +0 -1
  133. package/dist/ConfirmButton-jayUa8_J.js +0 -16
  134. package/dist/ConfirmButton-jayUa8_J.js.map +0 -1
  135. package/dist/EnumSelectFilter-DiJhYa2m.js +0 -40
  136. package/dist/EnumSelectFilter-DiJhYa2m.js.map +0 -1
  137. package/dist/ExpandMore-D6gf2UVG.js +0 -14
  138. package/dist/ExpandMore-D6gf2UVG.js.map +0 -1
  139. package/dist/FilterLink-CHw7-m82.js +0 -43
  140. package/dist/FilterLink-CHw7-m82.js.map +0 -1
  141. package/dist/JwtTokensRoute-B3SgLM0q.js +0 -2335
  142. package/dist/JwtTokensRoute-B3SgLM0q.js.map +0 -1
  143. package/dist/ScheduledTasksRoute-CNhOAAKd.js +0 -1152
  144. package/dist/ScheduledTasksRoute-CNhOAAKd.js.map +0 -1
  145. package/dist/SingleLogMessageRoute-BT4ghiqv.js +0 -305
  146. package/dist/SingleLogMessageRoute-BT4ghiqv.js.map +0 -1
  147. package/dist/SingleMessageRoute-DaaWvgfS.js +0 -293
  148. package/dist/SingleMessageRoute-DaaWvgfS.js.map +0 -1
  149. package/dist/Table-DgRqEB1x.js +0 -154
  150. package/dist/Table-DgRqEB1x.js.map +0 -1
  151. package/dist/TableMetadataDisplay-C7RP2ZrM.js +0 -122
  152. package/dist/TableMetadataDisplay-C7RP2ZrM.js.map +0 -1
  153. package/dist/TextFilter-BKUfkFQe.js +0 -70
  154. package/dist/TextFilter-BKUfkFQe.js.map +0 -1
  155. package/dist/TriggerablesRoute-opCAjNCv.js +0 -3556
  156. package/dist/TriggerablesRoute-opCAjNCv.js.map +0 -1
  157. package/dist/breadcrumbs/index.js.map +0 -1
  158. package/dist/createSvgIcon-Cf1cru4R.js +0 -3945
  159. package/dist/createSvgIcon-Cf1cru4R.js.map +0 -1
  160. package/dist/evolverClient-B_TZXnpV.js +0 -1602
  161. package/dist/evolverClient-B_TZXnpV.js.map +0 -1
  162. package/dist/filter/index.js.map +0 -1
  163. package/dist/jsx-runtime-B6kdoens.js +0 -635
  164. package/dist/jsx-runtime-B6kdoens.js.map +0 -1
  165. package/dist/jwt-tokens/index.js.map +0 -1
  166. package/dist/main/index.js.map +0 -1
  167. package/dist/message-log/index.js.map +0 -1
  168. package/dist/message-sending/index.js.map +0 -1
  169. package/dist/parser-Bj3mcA83.js +0 -6096
  170. package/dist/parser-Bj3mcA83.js.map +0 -1
  171. package/dist/scheduled-tasks/index.js.map +0 -1
  172. package/dist/table/index.js.map +0 -1
  173. package/dist/triggerables/index.js.map +0 -1
  174. package/dist/types/admin-components/src/components/metadata/TableMetadataDisplay.d.ts +0 -2
  175. package/dist/types/admin-components/src/routes/jwt-tokens/JwtTokensRoute.d.ts +0 -2
  176. package/dist/types/admin-components/src/routes/jwt-tokens/index.d.ts +0 -2
  177. package/dist/types/admin-components/src/routes/jwt-tokens/loader.d.ts +0 -11
  178. package/dist/types/admin-components/src/routes/message-log/MessageLogRoute.d.ts +0 -2
  179. package/dist/types/admin-components/src/routes/message-log/SingleLogMessageRoute.d.ts +0 -2
  180. package/dist/types/admin-components/src/routes/message-log/index.d.ts +0 -3
  181. package/dist/types/admin-components/src/routes/message-log/loader.d.ts +0 -7
  182. package/dist/types/admin-components/src/routes/message-sending/MessageSendingRoute.d.ts +0 -2
  183. package/dist/types/admin-components/src/routes/message-sending/SingleMessageRoute.d.ts +0 -2
  184. package/dist/types/admin-components/src/routes/message-sending/index.d.ts +0 -3
  185. package/dist/types/admin-components/src/routes/message-sending/loader.d.ts +0 -6
  186. package/dist/types/admin-components/src/routes/scheduled-tasks/ScheduledTaskFormRoute.d.ts +0 -2
  187. package/dist/types/admin-components/src/routes/scheduled-tasks/ScheduledTasksRoute.d.ts +0 -2
  188. package/dist/types/admin-components/src/routes/scheduled-tasks/action.d.ts +0 -20
  189. package/dist/types/admin-components/src/routes/scheduled-tasks/index.d.ts +0 -4
  190. package/dist/types/admin-components/src/routes/scheduled-tasks/loader.d.ts +0 -9
  191. package/dist/types/admin-components/src/routes/triggerables/TriggerablesRoute.d.ts +0 -2
  192. package/dist/types/admin-components/src/routes/triggerables/action.d.ts +0 -10
  193. package/dist/types/admin-components/src/routes/triggerables/index.d.ts +0 -3
  194. package/dist/types/admin-components/src/routes/triggerables/loader.d.ts +0 -9
  195. package/dist/types/admin-ui/src/front-page/FrontPage.d.ts +0 -2
  196. package/dist/validation-DStiilqx.js +0 -22
  197. package/dist/validation-DStiilqx.js.map +0 -1
  198. /package/dist/types/{admin-components/src/common → common}/format.d.ts +0 -0
  199. /package/dist/types/{admin-components/src/common → common}/types.d.ts +0 -0
  200. /package/dist/types/{admin-components/src/common → common}/validation.d.ts +0 -0
  201. /package/dist/types/{admin-components/src/components → components}/breadcrumbs/index.d.ts +0 -0
  202. /package/dist/types/{admin-components/src/components → components}/filter/index.d.ts +0 -0
  203. /package/dist/types/{admin-components/src/components → components}/filter/types.d.ts +0 -0
  204. /package/dist/types/{admin-components/src/components → components}/metadata/utils.d.ts +0 -0
  205. /package/dist/types/{admin-components/src/components → components}/table/index.d.ts +0 -0
  206. /package/dist/types/{admin-components/src/components → components}/table/types.d.ts +0 -0
  207. /package/dist/types/{admin-components/src/routes → routes}/message-log/messageLogColumns.d.ts +0 -0
  208. /package/dist/types/{admin-components/src/routes → routes}/message-log/types.d.ts +0 -0
  209. /package/dist/types/{admin-components/src/routes → routes}/message-sending/messageSendingColumns.d.ts +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"file":"SingleMessageRoute-DaaWvgfS.js","sources":["../../node_modules/@evolver-fi/evolver-basics/dist/esm/common/components/DateTimeRangeFilterField.js","../../node_modules/@evolver-fi/evolver-basics/dist/esm/messages/utils/index.js","../../node_modules/@evolver-fi/evolver-basics/dist/esm/messages/actions/index.js","../../node_modules/@evolver-fi/evolver-basics/dist/esm/messages/slices/messageSlice.js","../../node_modules/@evolver-fi/evolver-basics/dist/esm/messages/components/MessageComponent.js","../../node_modules/@evolver-fi/evolver-basics/dist/esm/messages/types/index.js","../../node_modules/@evolver-fi/evolver-basics/dist/esm/common/types/index.js","../../node_modules/@evolver-fi/evolver-basics/dist/esm/common/components/EnumSelectFilterField.js","../../node_modules/@evolver-fi/evolver-basics/dist/esm/crud/filterUtils.js","../../node_modules/@evolver-fi/evolver-basics/dist/esm/messages/components/messageListColumnDefinitions.js","../src/routes/message-sending/loader.ts","../src/routes/message-sending/messageSendingColumns.tsx","../src/routes/message-sending/MessageSendingRoute.tsx","../src/routes/message-sending/SingleMessageRoute.tsx"],"sourcesContent":["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 { formatDatetimeRangeFilter, formatNumberRangeFilter, } from '../../common/components/listUtils';\nimport { getBackendClient } from '../../common/evolverClient';\nimport { createFilterQuery } from '../../common/utils/filterUtils';\nexport const formatterByKey = {\n ct: formatDatetimeRangeFilter,\n lut: formatDatetimeRangeFilter,\n fc: formatNumberRangeFilter,\n};\nexport const fetchMessages = (filters, backendClient) => {\n const client = backendClient || getBackendClient();\n const searchParams = new URLSearchParams();\n createFilterQuery(filters, formatterByKey).forEach((value, key) => searchParams.append(key, value));\n const searchParamsString = searchParams.toString() ? `?${searchParams.toString()}` : '';\n return client.get(`message${searchParamsString}`);\n};\nexport const fetchMessageById = (id, backendClient) => {\n const client = backendClient || getBackendClient();\n return client.get(`message/${id}`);\n};\n","import { createAsyncThunk } from '@reduxjs/toolkit';\nimport { fetchMessages } from '../utils';\nexport const fetchMessagesAction = createAsyncThunk('messages/fetchMessages', async (filters, thunkApi) => {\n const response = await fetchMessages(filters);\n if (response.status !== 200) {\n return thunkApi.rejectWithValue({\n message: 'Failed to fetch messages.',\n });\n }\n return response.data;\n});\n","import { createSlice } from '@reduxjs/toolkit';\nimport { fetchMessagesAction } from '../actions';\nconst initialState = {\n messages: [],\n messageTotalCount: 0,\n status: 'loading',\n filters: {\n page: '0',\n size: '100',\n },\n};\nexport const messageSlice = createSlice({\n name: 'message',\n initialState,\n reducers: {\n updateMessages(state, { payload }) {\n state.messages = payload;\n },\n updateFilters(state, { payload }) {\n state.filters = { ...state.filters, ...payload };\n },\n },\n extraReducers: (builder) => {\n builder.addCase(fetchMessagesAction.pending, (state) => {\n state.status = 'loading';\n state.error = 'undefined';\n });\n builder.addCase(fetchMessagesAction.fulfilled, (state, { payload }) => {\n state.messages = payload.content;\n state.messageTotalCount = payload.totalElements;\n state.status = 'succeeded';\n });\n builder.addCase(fetchMessagesAction.rejected, (state, { payload }) => {\n if (payload) {\n state.error = payload.message;\n }\n state.status = 'failed';\n });\n },\n});\nexport const { updateMessages, updateFilters } = messageSlice.actions;\nexport const selectMessages = (state) => state.messages.messages;\nexport const selectMessageTotalCount = (state) => state.messages.messageTotalCount;\nexport const selectFilters = (state) => state.messages.filters;\nexport const selectStatus = (state) => state.messages.status;\nexport default messageSlice.reducer;\n","import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from \"react/jsx-runtime\";\nimport ArrowBackIcon from '@mui/icons-material/ArrowBack';\nimport { Button, Grid, TextField } from '@mui/material';\nimport { formatDateTime } from '../../common/components/listUtils';\nconst MessageField = ({ label, value, isFull }) => (_jsx(Grid, { item: true, xs: 12, sm: isFull ? 12 : 6, md: isFull ? 12 : 3, children: _jsx(TextField, { label: label, value: value, InputProps: {\n readOnly: true,\n }, InputLabelProps: {\n style: { fontSize: 20 },\n }, multiline: true, fullWidth: true }) }));\nconst MessageComponent = ({ message, backAction, }) => {\n return (_jsxs(_Fragment, { children: [_jsx(Button, { variant: \"contained\", startIcon: _jsx(ArrowBackIcon, {}), onClick: () => backAction(), sx: {\n backgroundColor: 'secondary.main',\n marginBottom: 0.5,\n width: 200,\n }, children: \"Back\" }), message ? (_jsxs(Grid, { container: true, direction: \"row\", justifyContent: \"center\", spacing: 2, children: [_jsx(Grid, { item: true, xs: 12, children: _jsx(\"h1\", { children: \"Message Details\" }) }), _jsx(MessageField, { label: \"State\", value: message.state }), _jsx(MessageField, { label: \"MessageChain ID\", value: message.messageChainId }), _jsx(MessageField, { label: \"Creation time\", value: formatDateTime(message.creationTime) }), _jsx(MessageField, { label: \"Last updated time\", value: formatDateTime(message.lastUpdatedTime) }), _jsx(MessageField, { label: \"Fail count\", value: message.failCount }), _jsx(MessageField, { label: \"MessageGroup Id\", value: message.messageGroupId }), _jsx(MessageField, { label: \"Priority\", value: message.priority }), _jsx(MessageField, { label: \"Message target config\", value: message.messageTargetConfig.messageType }), _jsx(MessageField, { label: \"Target system\", value: message.targetSystem }), _jsx(MessageField, { label: \"Message type\", value: message.messageType }), _jsx(MessageField, { label: \"Target Uri\", value: message.targetUri, isFull: true }), _jsx(MessageField, { label: \"Metadata\", value: Object.entries(message.metadata)\n .map(([key, value]) => `${key} = ${value}`)\n .join('\\n'), isFull: true })] })) : (_jsx(\"p\", { children: \"No message data found\" }))] }));\n};\nexport default MessageComponent;\n","export var MessageStatus;\n(function (MessageStatus) {\n MessageStatus[\"DELAYED\"] = \"DELAYED\";\n MessageStatus[\"PENDING\"] = \"PENDING\";\n MessageStatus[\"SENDING\"] = \"SENDING\";\n MessageStatus[\"SENT\"] = \"SENT\";\n MessageStatus[\"FAILED\"] = \"FAILED\";\n MessageStatus[\"DISABLED\"] = \"DISABLED\";\n})(MessageStatus || (MessageStatus = {}));\nexport var MessageTargetConfigStatus;\n(function (MessageTargetConfigStatus) {\n MessageTargetConfigStatus[\"ENABLED\"] = \"ENABLED\";\n MessageTargetConfigStatus[\"LOG_ONLY\"] = \"LOG_ONLY\";\n MessageTargetConfigStatus[\"PAUSED\"] = \"PAUSED\";\n MessageTargetConfigStatus[\"DISABLED\"] = \"DISABLED\";\n})(MessageTargetConfigStatus || (MessageTargetConfigStatus = {}));\n","export const NULL_VALUE = 'null';\nexport const NOT_NULL_VALUE = '!null';\n","import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from \"react/jsx-runtime\";\nimport { Checkbox, FormControl, FormHelperText, MenuItem, Select, } from '@mui/material';\nimport { NOT_NULL_VALUE, NULL_VALUE } from '../types';\nfunction isString(data) {\n return typeof data === 'string';\n}\nconst EnumSelectFilterField = ({ filterValue, validationError, setFilterValue, enumValues, }) => {\n const selectValues = [\n { label: 'None', value: NULL_VALUE },\n { label: 'Any', value: NOT_NULL_VALUE },\n ...enumValues,\n ];\n const findLabelByValue = (value) => {\n const entry = selectValues.find((sv) => sv.value === value || sv.label === value);\n return entry?.label;\n };\n const findValueByLabel = (label) => {\n const entry = selectValues.find((sv) => sv.label === label);\n return entry?.value ?? entry?.label;\n };\n const handleChange = (event) => {\n const { target: { value }, } = event;\n if (isString(value)) {\n setFilterValue(value);\n return;\n }\n const newValue = value.map(findValueByLabel).filter(Boolean);\n setFilterValue(newValue.join(',') || '');\n };\n const formattedFilterValue = filterValue?.split(',')?.map((v) => findLabelByValue(v) ?? '') ?? [];\n return (_jsx(_Fragment, { children: _jsxs(FormControl, { sx: { width: 300 }, children: [_jsx(Select, { size: \"small\", labelId: \"demo-multiple-checkbox-label\", id: \"demo-multiple-checkbox\", multiple: true, value: formattedFilterValue, onChange: handleChange, renderValue: (selected) => selected.join(', '), error: !!validationError, children: selectValues.map((flow) => (_jsxs(MenuItem, { value: flow.label, children: [_jsx(Checkbox, { checked: formattedFilterValue.find((sv) => sv === flow.label) !== undefined }), flow.label] }, flow.label))) }), validationError && _jsx(FormHelperText, { children: validationError })] }) }));\n};\nexport default EnumSelectFilterField;\n","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport EnumSelectFilterField from '../common/components/EnumSelectFilterField';\nexport const createEnumSelectFilter = (field) => {\n if (field.type === 'enum') {\n const selectValues = field.enumValues.map((v) => ({\n label: v,\n }));\n return createSelectFilterRenderer(selectValues);\n }\n return undefined;\n};\nexport const createSelectFilterRenderer = (enumValues) => {\n // eslint-disable-next-line react/display-name\n return (props) => (_jsx(EnumSelectFilterField, { enumValues: enumValues, ...props }));\n};\n","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { MessageStatus } from '../types';\nimport { formatDateTime, formatMetadata } from '../../common/components/listUtils';\nimport { datetimeRangeValidator, numberRangeValidator, numberValidator, } from '../../common/utils/validation';\nimport DateTimeRangeFilterField from '../../common/components/DateTimeRangeFilterField';\nimport { createSelectFilterRenderer } from '../../crud/filterUtils';\nconst definition = [\n {\n id: 'creationTime',\n label: 'Creation time',\n renderValue: (value) => formatDateTime(value),\n minWidth: 250,\n filterKey: 'ct',\n filterHelper: 'yyyy-MM-dd HH:mm:ss - ?yyyy-MM-dd HH:mm:ss',\n filterValidator: datetimeRangeValidator,\n renderFilter: (props) => _jsx(DateTimeRangeFilterField, { ...props }),\n },\n {\n id: 'lastUpdatedTime',\n label: 'Last updated time',\n renderValue: (value) => formatDateTime(value),\n minWidth: 250,\n filterKey: 'lut',\n filterHelper: 'yyyy-MM-dd HH:mm:ss - ?yyyy-MM-dd HH:mm:ss',\n filterValidator: datetimeRangeValidator,\n },\n {\n id: 'state',\n label: 'State',\n minWidth: 100,\n filterKey: 's',\n filterHelper: 'e.g. SENT',\n renderFilter: createSelectFilterRenderer([\n { label: MessageStatus.DELAYED },\n { label: MessageStatus.PENDING },\n { label: MessageStatus.SENDING },\n { label: MessageStatus.SENT },\n { label: MessageStatus.FAILED },\n { label: MessageStatus.DISABLED },\n ]),\n },\n {\n id: 'messageChainId',\n label: 'Message Chain ID',\n minWidth: 150,\n filterKey: 'mci',\n filterHelper: 'e.g. 123',\n filterValidator: numberValidator,\n },\n {\n id: 'messageGroupId',\n label: 'Message Group ID',\n minWidth: 150,\n filterKey: 'mgi',\n filterHelper: 'e.g. 123',\n filterValidator: numberValidator,\n },\n {\n id: 'failCount',\n label: 'Fail count',\n minWidth: 150,\n filterKey: 'fc',\n filterHelper: 'number - ?number',\n filterValidator: numberRangeValidator,\n },\n {\n id: 'priority',\n label: 'Priority',\n minWidth: 150,\n filterKey: 'p',\n filterHelper: 'eg. 123',\n filterValidator: numberValidator,\n },\n {\n id: 'metadata',\n label: 'Metadata',\n renderValue: (value) => formatMetadata(value),\n minWidth: 150,\n filterKey: 'md',\n filterHelper: 'A=a, B=b',\n },\n];\nexport default definition;\n","import { filterFromUrlSearchParams } from \"@evolver-fi/evolver-basics\";\nimport {\n fetchMessageById,\n fetchMessages,\n MessageFilter,\n} from \"@evolver-fi/evolver-basics/messages\";\nimport { AxiosInstance } from \"axios\";\nimport { LoaderFunction, LoaderFunctionArgs } from \"react-router\";\nimport { mapMetadata } from \"../../components/metadata/utils\";\n\nexport const getSingleMessageLoader =\n (backendClient?: AxiosInstance) =>\n async ({ params }: LoaderFunctionArgs) => {\n try {\n if (!params.id) {\n throw new Error(\"No message id provided\"); // shouldn't route here without an id\n }\n const response = await fetchMessageById(params.id, backendClient);\n\n if (response.status !== 200) {\n throw new Error(`Failed to fetch message: ${response.data}`);\n }\n\n return response.data;\n } catch (error) {\n console.error(error);\n throw error;\n }\n };\n\nexport const singleMessageLoader: LoaderFunction = getSingleMessageLoader();\n\nexport const getMessageListLoader =\n (backendClient?: AxiosInstance) =>\n async ({ request }: LoaderFunctionArgs) => {\n try {\n const requestUrl = new URL(request.url);\n const filter = filterFromUrlSearchParams<MessageFilter>(\n requestUrl.searchParams,\n [\"s\", \"mci\", \"ct\", \"lut\", \"fc\", \"mgi\", \"p\", \"md\", \"page\", \"size\"] // TODO: should sort be included?\n );\n\n const response = await fetchMessages(filter, backendClient);\n if (response.status !== 200) {\n throw new Error(`Failed to fetch messages: ${response.data}`);\n }\n\n return mapMetadata(response.data);\n } catch (error) {\n console.error(error);\n throw error;\n }\n };\n\nexport const messageListLoader: LoaderFunction = getMessageListLoader();\n","import { formatDateTime } from \"../../common/format\";\nimport {\n datetimeRangeValidator,\n numberRangeValidator,\n numberValidator,\n} from \"../../common/validation\";\nimport { createEnumSelectFilter } from \"../../components/filter/EnumSelectFilter\";\nimport { TextFilter } from \"../../components/filter/TextFilter\";\nimport { TableMetadataDisplay } from \"../../components/metadata/TableMetadataDisplay\";\nimport { ColumnDefinitions } from \"../../components/table/types\";\nimport { MessageData, MessageFilter } from \"./types\";\n\nexport const messageSendingColumns: ColumnDefinitions<\n MessageData,\n MessageFilter\n> = [\n {\n key: \"creationTime\",\n title: \"Creation time\",\n CellComponent: ({ value }) => formatDateTime(value),\n minWidth: 250,\n searchKey: \"ct\",\n filterHelperText: \"yyyy-MM-dd HH:mm:ss - ?yyyy-MM-dd HH:mm:ss\",\n filterValidator: datetimeRangeValidator,\n FilterComponent: TextFilter,\n },\n {\n key: \"lastUpdatedTime\",\n title: \"Last updated time\",\n CellComponent: ({ value }) => formatDateTime(value),\n minWidth: 250,\n searchKey: \"lut\",\n filterHelperText: \"yyyy-MM-dd HH:mm:ss - ?yyyy-MM-dd HH:mm:ss\",\n filterValidator: datetimeRangeValidator,\n FilterComponent: TextFilter,\n },\n {\n key: \"state\",\n title: \"State\",\n minWidth: 130,\n searchKey: \"s\",\n filterHelperText: \"e.g. SENT\",\n FilterComponent: createEnumSelectFilter([\n { label: \"DELAYED\", value: \"DELAYED\" },\n { label: \"PENDING\", value: \"PENDING\" },\n { label: \"SENDING\", value: \"SENDING\" },\n { label: \"SENT\", value: \"SENT\" },\n { label: \"FAILED\", value: \"FAILED\" },\n { label: \"DISABLED\", value: \"DISABLED\" },\n ]),\n },\n {\n key: \"messageChainId\",\n title: \"Message Chain ID\",\n minWidth: 150,\n searchKey: \"mci\",\n filterHelperText: \"e.g. 123\",\n filterValidator: numberValidator,\n FilterComponent: TextFilter,\n },\n {\n key: \"messageGroupId\",\n title: \"Message Group ID\",\n minWidth: 150,\n searchKey: \"mgi\",\n filterHelperText: \"e.g. 123\",\n filterValidator: numberValidator,\n FilterComponent: TextFilter,\n },\n {\n key: \"failCount\",\n title: \"Fail count\",\n minWidth: 150,\n searchKey: \"fc\",\n filterHelperText: \"number - ?number\",\n filterValidator: numberRangeValidator,\n FilterComponent: TextFilter,\n },\n {\n key: \"priority\",\n title: \"Priority\",\n minWidth: 150,\n searchKey: \"p\",\n filterHelperText: \"e.g. 123\",\n filterValidator: numberValidator,\n FilterComponent: TextFilter,\n },\n {\n key: \"metadata\",\n title: \"Metadata\",\n CellComponent: TableMetadataDisplay,\n minWidth: 150,\n searchKey: \"md\",\n filterHelperText: \"A=a, B=b\",\n FilterComponent: TextFilter,\n },\n];\n","import { TableContainer } from \"@mui/material\";\nimport {\n Form,\n useLoaderData,\n useNavigate,\n useSearchParams,\n} from \"react-router\";\nimport { Pagination } from \"../../components/table/Pagination\";\nimport { Table } from \"../../components/table/Table\";\nimport { messageSendingColumns } from \"./messageSendingColumns\";\nimport { MessageFilter, MessageResponse } from \"./types\";\n\nconst getRowId = ({ id }: { id: number }) => id;\n\nconst searchParamsToFilter = (params: URLSearchParams): MessageFilter => ({\n state: params.get(\"s\") ?? \"\",\n messageChainId: params.get(\"mci\") ?? \"\",\n creationTime: params.get(\"ct\") ?? \"\",\n lastUpdatedTime: params.get(\"lut\") ?? \"\",\n failCount: params.get(\"fc\") ?? \"\",\n messageGroupId: params.get(\"mgi\") ?? \"\",\n priority: params.get(\"p\") ?? \"\",\n metadata: params.get(\"md\") ?? \"\",\n});\n\nconst MessageSendingRoute = () => {\n const navigate = useNavigate();\n const [searchParams, setSearchParams] = useSearchParams();\n const messageResponse = useLoaderData() as MessageResponse;\n\n return (\n <>\n <Form method=\"get\">\n <TableContainer sx={{ height: \"calc(100vh - 130px)\" }}>\n <Table\n columns={messageSendingColumns}\n rows={messageResponse.content}\n getRowId={getRowId}\n onRowClick={(row) => navigate(`./${row.id}`, { relative: \"path\" })}\n defaultFilter={searchParamsToFilter(searchParams)}\n />\n </TableContainer>\n <input type=\"submit\" hidden />\n </Form>\n <Pagination\n page={messageResponse.number}\n rowsPerPage={messageResponse.size}\n total={messageResponse.totalElements}\n onPageChange={(page) => {\n const newParams = new URLSearchParams(searchParams);\n newParams.set(\"page\", String(page));\n setSearchParams(newParams);\n }}\n />\n </>\n );\n};\n\nexport default MessageSendingRoute;\n","import { Message, MessageComponent } from \"@evolver-fi/evolver-basics/messages\";\nimport { useLoaderData, useNavigate } from \"react-router\";\n\nconst SingleMessageRoute = () => {\n const message = useLoaderData() as Message;\n\n const navigate = useNavigate();\n\n const handleBackAction = () => {\n navigate(-1);\n };\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const handleDownloadDataAction = (_id: number, _type: string) => {\n // download data from /messages/:id/download\n // TODO: download not implemented in the component library\n };\n\n if (!message) {\n return <div>Loading...</div>; // TODO: handle 404, maybe in the loader?\n }\n\n // TODO: insert some messages into the backend and actually test this\n return (\n <MessageComponent\n message={message}\n backAction={handleBackAction}\n downloadDataAction={handleDownloadDataAction}\n />\n );\n};\n\nexport default SingleMessageRoute;\n"],"names":["DateTimeRangeFilterField","filterValue","validationError","setFilterValue","initialStartDateTime","initialEndDateTime","startDateTime","setStartDateTime","React","endDateTime","setEndDateTime","useEffect","value","_jsxs","Grid","_jsx","TextField","event","InputAdornment","IconButton","e","Backspace","formatterByKey","formatDatetimeRangeFilter","formatNumberRangeFilter","fetchMessages","filters","backendClient","client","getBackendClient","searchParams","createFilterQuery","key","searchParamsString","fetchMessageById","id","fetchMessagesAction","createAsyncThunk","thunkApi","response","initialState","createSlice","state","payload","builder","MessageField","label","isFull","MessageComponent","message","backAction","_Fragment","Button","ArrowBackIcon","formatDateTime","MessageStatus","MessageTargetConfigStatus","NULL_VALUE","NOT_NULL_VALUE","isString","data","EnumSelectFilterField","enumValues","selectValues","findLabelByValue","entry","sv","findValueByLabel","handleChange","newValue","formattedFilterValue","_a","v","FormControl","Select","selected","flow","MenuItem","Checkbox","FormHelperText","createSelectFilterRenderer","props","datetimeRangeValidator","numberValidator","numberRangeValidator","getSingleMessageLoader","params","error","singleMessageLoader","getMessageListLoader","request","requestUrl","filter","filterFromUrlSearchParams","mapMetadata","messageListLoader","messageSendingColumns","TextFilter","createEnumSelectFilter","TableMetadataDisplay","getRowId","searchParamsToFilter","MessageSendingRoute","navigate","useNavigate","setSearchParams","useSearchParams","messageResponse","useLoaderData","jsxs","Fragment","Form","jsx","TableContainer","Table","row","Pagination","page","newParams","SingleMessageRoute","handleBackAction","handleDownloadDataAction","_id","_type"],"mappings":";;;;;;;;;;;;AAIA,MAAMA,KAA2B,CAAC,EAAE,aAAAC,GAAa,iBAAAC,GAAiB,gBAAAC,EAAc,MAAQ;AACpF,QAAM,CAACC,GAAsBC,CAAkB,KAAIJ,KAAA,gBAAAA,EAAa,MAAM,SAAQ,IACxE,CAACK,GAAeC,CAAgB,IAAIC,EAAM,SAASJ,CAAoB,GACvE,CAACK,GAAaC,CAAc,IAAIF,EAAM,SAASH,CAAkB;AACvE,SAAAM,EAAU,MAAM;AACZ,UAAMC,IAAQ,GAAGN,KAAiB,EAAE,GAAGG,KAAeH,IAAgB,MAAM,EAAE,GAAGG,KAAe,EAAE;AAClG,IAAAN,EAAeS,CAAK;AAAA,EAC5B,GAAO,CAACN,GAAeG,CAAW,CAAC,GACvBI,EAAAA,KAAMC,GAAM,EAAE,WAAW,IAAM,WAAW,OAAO,SAAS,GAAG,UAAU,CAACC,EAAAA,IAAKD,GAAM,EAAE,MAAM,IAAM,IAAI,IAAI,IAAI,GAAG,UAAUC,EAAAA,IAAKC,GAAW,EAAE,MAAM,SAAS,OAAO,CAAC,CAACd,GAAiB,YAAYA,KAAmB,SAAS,OAAOI,KAAiB,IAAI,UAAU,CAACW,MAAU;AAClQ,IAAAV,EAAiB,GAAGU,EAAM,OAAO,KAAK,KAAK;AAAA,EACnE,GAAuB,WAAW,IAAM,YAAY;AAAA,IAC5B,cAAcX,KAAiBA,EAAc,SAAS,IAAKS,EAAI,IAACG,GAAgB,EAAE,UAAU,OAAO,UAAUH,EAAI,IAACI,GAAY,EAAE,SAAS,CAACC,MAAM;AACpI,MAAAA,EAAE,eAAgB,GAClBA,EAAE,gBAAiB,GACnBb,EAAiB,MAAS;AAAA,IAC9D,GAAmC,MAAM,SAAS,UAAUQ,EAAI,IAACM,GAAW,EAAE,EAAC,CAAE,EAAG,CAAA,IAAK;AAAA,EACpE,EAAA,CAAE,EAAG,CAAA,GAAGN,EAAI,IAACD,GAAM,EAAE,MAAM,IAAM,IAAI,IAAI,IAAI,GAAG,UAAUC,EAAI,IAACC,GAAW,EAAE,MAAM,SAAS,OAAOP,KAAe,IAAI,YAAY,OAAO,UAAU,CAACQ,MAAU;AAC1J,IAAAP,EAAe,GAAGO,EAAM,OAAO,KAAK,KAAK;AAAA,EACjE,GAAuB,WAAW,IAAM,YAAY;AAAA,IAC5B,cAAcR,KAAeA,EAAY,SAAS,IAAKM,EAAI,IAACG,GAAgB,EAAE,UAAU,OAAO,UAAUH,EAAI,IAACI,GAAY,EAAE,SAAS,CAACC,MAAM;AAChI,MAAAA,EAAE,eAAgB,GAClBA,EAAE,gBAAiB,GACnBV,EAAe,MAAS;AAAA,IAC5D,GAAmC,MAAM,SAAS,UAAUK,EAAI,IAACM,GAAW,EAAE,EAAC,CAAE,EAAG,CAAA,IAAK;AAAA,EACzF,GAAuB,EAAC,CAAE,CAAC,GAAG;AAC9B,GC1BaC,KAAiB;AAAA,EAC1B,IAAIC;AAAA,EACJ,KAAKA;AAAA,EACL,IAAIC;AACR,GACaC,IAAgB,CAACC,GAASC,MAAkB;AACrD,QAAMC,IAASD,KAAiBE,EAAkB,GAC5CC,IAAe,IAAI,gBAAiB;AAC1C,EAAAC,EAAkBL,GAASJ,EAAc,EAAE,QAAQ,CAACV,GAAOoB,MAAQF,EAAa,OAAOE,GAAKpB,CAAK,CAAC;AAClG,QAAMqB,IAAqBH,EAAa,aAAa,IAAIA,EAAa,UAAU,KAAK;AACrF,SAAOF,EAAO,IAAI,UAAUK,CAAkB,EAAE;AACpD,GACaC,KAAmB,CAACC,GAAIR,OAClBA,KAAiBE,EAAkB,GACpC,IAAI,WAAWM,CAAE,EAAE,GCfxBC,IAAsBC,EAAiB,0BAA0B,OAAOX,GAASY,MAAa;AACvG,QAAMC,IAAW,MAAMd,EAAcC,CAAO;AAC5C,SAAIa,EAAS,WAAW,MACbD,EAAS,gBAAgB;AAAA,IAC5B,SAAS;AAAA,EACrB,CAAS,IAEEC,EAAS;AACpB,CAAC,GCRKC,KAAe;AAAA,EACjB,UAAU,CAAE;AAAA,EACZ,mBAAmB;AAAA,EACnB,QAAQ;AAAA,EACR,SAAS;AAAA,IACL,MAAM;AAAA,IACN,MAAM;AAAA,EACT;AACL;AAC4BC,EAAY;AAAA,EACpC,MAAM;AAAA,EACN,cAAAD;AAAA,EACA,UAAU;AAAA,IACN,eAAeE,GAAO,EAAE,SAAAC,KAAW;AAC/B,MAAAD,EAAM,WAAWC;AAAA,IACpB;AAAA,IACD,cAAcD,GAAO,EAAE,SAAAC,KAAW;AAC9B,MAAAD,EAAM,UAAU,EAAE,GAAGA,EAAM,SAAS,GAAGC,EAAS;AAAA,IACnD;AAAA,EACJ;AAAA,EACD,eAAe,CAACC,MAAY;AACxB,IAAAA,EAAQ,QAAQR,EAAoB,SAAS,CAACM,MAAU;AACpD,MAAAA,EAAM,SAAS,WACfA,EAAM,QAAQ;AAAA,IAC1B,CAAS,GACDE,EAAQ,QAAQR,EAAoB,WAAW,CAACM,GAAO,EAAE,SAAAC,QAAc;AACnE,MAAAD,EAAM,WAAWC,EAAQ,SACzBD,EAAM,oBAAoBC,EAAQ,eAClCD,EAAM,SAAS;AAAA,IAC3B,CAAS,GACDE,EAAQ,QAAQR,EAAoB,UAAU,CAACM,GAAO,EAAE,SAAAC,QAAc;AAClE,MAAIA,MACAD,EAAM,QAAQC,EAAQ,UAE1BD,EAAM,SAAS;AAAA,IAC3B,CAAS;AAAA,EACJ;AACL,CAAC;ACnCD,MAAMG,IAAe,CAAC,EAAE,OAAAC,GAAO,OAAAlC,GAAO,QAAAmC,EAAQ,MAAMhC,EAAI,IAACD,GAAM,EAAE,MAAM,IAAM,IAAI,IAAI,IAAIiC,IAAS,KAAK,GAAG,IAAIA,IAAS,KAAK,GAAG,UAAUhC,EAAAA,IAAKC,GAAW,EAAE,OAAO8B,GAAO,OAAOlC,GAAO,YAAY;AAAA,EACvL,UAAU;AACb,GAAE,iBAAiB;AAAA,EAChB,OAAO,EAAE,UAAU,GAAI;AACnC,GAAW,WAAW,IAAM,WAAW,GAAM,CAAA,EAAG,CAAA,GAC1CoC,KAAmB,CAAC,EAAE,SAAAC,GAAS,YAAAC,QACzBrC,EAAAA,KAAMsC,EAAAA,UAAW,EAAE,UAAU,CAACpC,MAAKqC,GAAQ,EAAE,SAAS,aAAa,WAAWrC,EAAAA,IAAKsC,GAAe,CAAE,CAAA,GAAG,SAAS,MAAMH,EAAY,GAAE,IAAI;AAAA,EAChI,iBAAiB;AAAA,EACjB,cAAc;AAAA,EACd,OAAO;AAC3B,GAAmB,UAAU,OAAQ,CAAA,GAAGD,IAAWpC,EAAAA,KAAMC,GAAM,EAAE,WAAW,IAAM,WAAW,OAAO,gBAAgB,UAAU,SAAS,GAAG,UAAU,CAACC,EAAI,IAACD,GAAM,EAAE,MAAM,IAAM,IAAI,IAAI,UAAUC,EAAI,IAAC,MAAM,EAAE,UAAU,mBAAmB,EAAC,CAAE,GAAGA,EAAI,IAAC8B,GAAc,EAAE,OAAO,SAAS,OAAOI,EAAQ,MAAK,CAAE,GAAGlC,EAAI,IAAC8B,GAAc,EAAE,OAAO,mBAAmB,OAAOI,EAAQ,eAAgB,CAAA,GAAGlC,EAAAA,IAAK8B,GAAc,EAAE,OAAO,iBAAiB,OAAOS,EAAeL,EAAQ,YAAY,EAAC,CAAE,GAAGlC,EAAI,IAAC8B,GAAc,EAAE,OAAO,qBAAqB,OAAOS,EAAeL,EAAQ,eAAe,EAAC,CAAE,GAAGlC,MAAK8B,GAAc,EAAE,OAAO,cAAc,OAAOI,EAAQ,UAAS,CAAE,GAAGlC,MAAK8B,GAAc,EAAE,OAAO,mBAAmB,OAAOI,EAAQ,eAAgB,CAAA,GAAGlC,EAAAA,IAAK8B,GAAc,EAAE,OAAO,YAAY,OAAOI,EAAQ,SAAU,CAAA,GAAGlC,EAAAA,IAAK8B,GAAc,EAAE,OAAO,yBAAyB,OAAOI,EAAQ,oBAAoB,YAAW,CAAE,GAAGlC,MAAK8B,GAAc,EAAE,OAAO,iBAAiB,OAAOI,EAAQ,aAAY,CAAE,GAAGlC,MAAK8B,GAAc,EAAE,OAAO,gBAAgB,OAAOI,EAAQ,YAAa,CAAA,GAAGlC,EAAAA,IAAK8B,GAAc,EAAE,OAAO,cAAc,OAAOI,EAAQ,WAAW,QAAQ,GAAI,CAAE,GAAGlC,EAAAA,IAAK8B,GAAc,EAAE,OAAO,YAAY,OAAO,OAAO,QAAQI,EAAQ,QAAQ,EAClqC,IAAI,CAAC,CAACjB,GAAKpB,CAAK,MAAM,GAAGoB,CAAG,MAAMpB,CAAK,EAAE,EACzC,KAAK;AAAA,CAAI,GAAG,QAAQ,GAAI,CAAE,CAAC,EAAG,CAAA,IAAMG,EAAAA,IAAK,KAAK,EAAE,UAAU,wBAAuB,CAAE,CAAE,EAAC,CAAE;AChB9G,IAAIwC;AAAA,CACV,SAAUA,GAAe;AACtB,EAAAA,EAAc,UAAa,WAC3BA,EAAc,UAAa,WAC3BA,EAAc,UAAa,WAC3BA,EAAc,OAAU,QACxBA,EAAc,SAAY,UAC1BA,EAAc,WAAc;AAChC,GAAGA,MAAkBA,IAAgB,CAAA,EAAG;AACjC,IAAIC;AAAA,CACV,SAAUA,GAA2B;AAClC,EAAAA,EAA0B,UAAa,WACvCA,EAA0B,WAAc,YACxCA,EAA0B,SAAY,UACtCA,EAA0B,WAAc;AAC5C,GAAGA,MAA8BA,IAA4B,CAAA,EAAG;ACfzD,MAAMC,KAAa,QACbC,KAAiB;ACE9B,SAASC,GAASC,GAAM;AACpB,SAAO,OAAOA,KAAS;AAC3B;AACA,MAAMC,KAAwB,CAAC,EAAE,aAAA5D,GAAa,iBAAAC,GAAiB,gBAAAC,GAAgB,YAAA2D,EAAU,MAAQ;;AAC7F,QAAMC,IAAe;AAAA,IACjB,EAAE,OAAO,QAAQ,OAAON,GAAY;AAAA,IACpC,EAAE,OAAO,OAAO,OAAOC,GAAgB;AAAA,IACvC,GAAGI;AAAA,EACN,GACKE,IAAmB,CAACpD,MAAU;AAChC,UAAMqD,IAAQF,EAAa,KAAK,CAACG,MAAOA,EAAG,UAAUtD,KAASsD,EAAG,UAAUtD,CAAK;AAChF,WAAOqD,KAAA,gBAAAA,EAAO;AAAA,EACjB,GACKE,IAAmB,CAACrB,MAAU;AAChC,UAAMmB,IAAQF,EAAa,KAAK,CAACG,MAAOA,EAAG,UAAUpB,CAAK;AAC1D,YAAOmB,KAAA,gBAAAA,EAAO,WAASA,KAAA,gBAAAA,EAAO;AAAA,EACjC,GACKG,IAAe,CAACnD,MAAU;AAC5B,UAAM,EAAE,QAAQ,EAAE,OAAAL,EAAK,EAAK,IAAGK;AAC/B,QAAI0C,GAAS/C,CAAK,GAAG;AACjB,MAAAT,EAAeS,CAAK;AACpB;AAAA,IACZ;AACQ,UAAMyD,IAAWzD,EAAM,IAAIuD,CAAgB,EAAE,OAAO,OAAO;AAC3D,IAAAhE,EAAekE,EAAS,KAAK,GAAG,KAAK,EAAE;AAAA,EAC1C,GACKC,MAAuBC,IAAAtE,KAAA,gBAAAA,EAAa,MAAM,SAAnB,gBAAAsE,EAAyB,IAAI,CAACC,MAAMR,EAAiBQ,CAAC,KAAK,QAAO,CAAE;AACjG,SAAQzD,EAAAA,IAAKoC,EAAAA,UAAW,EAAE,UAAUtC,EAAAA,KAAM4D,GAAa,EAAE,IAAI,EAAE,OAAO,IAAK,GAAE,UAAU,CAAC1D,EAAI,IAAC2D,GAAQ,EAAE,MAAM,SAAS,SAAS,gCAAgC,IAAI,0BAA0B,UAAU,IAAM,OAAOJ,GAAsB,UAAUF,GAAc,aAAa,CAACO,MAAaA,EAAS,KAAK,IAAI,GAAG,OAAO,CAAC,CAACzE,GAAiB,UAAU6D,EAAa,IAAI,CAACa,MAAU/D,EAAAA,KAAMgE,GAAU,EAAE,OAAOD,EAAK,OAAO,UAAU,CAAC7D,EAAI,IAAC+D,GAAU,EAAE,SAASR,EAAqB,KAAK,CAACJ,MAAOA,MAAOU,EAAK,KAAK,MAAM,OAAS,CAAE,GAAGA,EAAK,KAAK,EAAC,GAAIA,EAAK,KAAK,CAAE,EAAC,CAAE,GAAG1E,KAAmBa,EAAAA,IAAKgE,GAAgB,EAAE,UAAU7E,GAAiB,CAAC,EAAG,CAAA,GAAG;AACpnB,GCpBa8E,KAA6B,CAAClB,MAEhC,CAACmB,MAAWlE,EAAAA,IAAK8C,IAAuB,EAAE,YAAYC,GAAY,GAAGmB,EAAK,CAAE;ACC9DC,GAUAA,GAQHF,GAA2B;AAAA,EACrC,EAAE,OAAOzB,EAAc,QAAS;AAAA,EAChC,EAAE,OAAOA,EAAc,QAAS;AAAA,EAChC,EAAE,OAAOA,EAAc,QAAS;AAAA,EAChC,EAAE,OAAOA,EAAc,KAAM;AAAA,EAC7B,EAAE,OAAOA,EAAc,OAAQ;AAAA,EAC/B,EAAE,OAAOA,EAAc,SAAU;AAC7C,CAAS,GAQgB4B,GAQAA,GAQAC,IAQAD;AC7DlB,MAAME,KACX,CAAC1D,MACD,OAAO,EAAE,QAAA2D,QAAiC;AACpC,MAAA;AACE,QAAA,CAACA,EAAO;AACJ,YAAA,IAAI,MAAM,wBAAwB;AAE1C,UAAM/C,IAAW,MAAML,GAAiBoD,EAAO,IAAI3D,CAAa;AAE5D,QAAAY,EAAS,WAAW;AACtB,YAAM,IAAI,MAAM,4BAA4BA,EAAS,IAAI,EAAE;AAG7D,WAAOA,EAAS;AAAA,WACTgD,GAAO;AACd,kBAAQ,MAAMA,CAAK,GACbA;AAAA,EAAA;AAEV,GAEWC,KAAsCH,GAAuB,GAE7DI,KACX,CAAC9D,MACD,OAAO,EAAE,SAAA+D,QAAkC;AACrC,MAAA;AACF,UAAMC,IAAa,IAAI,IAAID,EAAQ,GAAG,GAChCE,IAASC;AAAA,MACbF,EAAW;AAAA,MACX,CAAC,KAAK,OAAO,MAAM,OAAO,MAAM,OAAO,KAAK,MAAM,QAAQ,MAAM;AAAA;AAAA,IAClE,GAEMpD,IAAW,MAAMd,EAAcmE,GAAQjE,CAAa;AACtD,QAAAY,EAAS,WAAW;AACtB,YAAM,IAAI,MAAM,6BAA6BA,EAAS,IAAI,EAAE;AAGvD,WAAAuD,EAAYvD,EAAS,IAAI;AAAA,WACzBgD,GAAO;AACd,kBAAQ,MAAMA,CAAK,GACbA;AAAA,EAAA;AAEV,GAEWQ,KAAoCN,GAAqB,GC1CzDO,KAGT;AAAA,EACF;AAAA,IACE,KAAK;AAAA,IACL,OAAO;AAAA,IACP,eAAe,CAAC,EAAE,OAAApF,QAAY0C,EAAe1C,CAAK;AAAA,IAClD,UAAU;AAAA,IACV,WAAW;AAAA,IACX,kBAAkB;AAAA,IAClB,iBAAiBsE;AAAAA,IACjB,iBAAiBe;AAAA,EACnB;AAAA,EACA;AAAA,IACE,KAAK;AAAA,IACL,OAAO;AAAA,IACP,eAAe,CAAC,EAAE,OAAArF,QAAY0C,EAAe1C,CAAK;AAAA,IAClD,UAAU;AAAA,IACV,WAAW;AAAA,IACX,kBAAkB;AAAA,IAClB,iBAAiBsE;AAAAA,IACjB,iBAAiBe;AAAA,EACnB;AAAA,EACA;AAAA,IACE,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,WAAW;AAAA,IACX,kBAAkB;AAAA,IAClB,iBAAiBC,GAAuB;AAAA,MACtC,EAAE,OAAO,WAAW,OAAO,UAAU;AAAA,MACrC,EAAE,OAAO,WAAW,OAAO,UAAU;AAAA,MACrC,EAAE,OAAO,WAAW,OAAO,UAAU;AAAA,MACrC,EAAE,OAAO,QAAQ,OAAO,OAAO;AAAA,MAC/B,EAAE,OAAO,UAAU,OAAO,SAAS;AAAA,MACnC,EAAE,OAAO,YAAY,OAAO,WAAW;AAAA,IACxC,CAAA;AAAA,EACH;AAAA,EACA;AAAA,IACE,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,WAAW;AAAA,IACX,kBAAkB;AAAA,IAClB,iBAAiBf;AAAAA,IACjB,iBAAiBc;AAAA,EACnB;AAAA,EACA;AAAA,IACE,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,WAAW;AAAA,IACX,kBAAkB;AAAA,IAClB,iBAAiBd;AAAAA,IACjB,iBAAiBc;AAAA,EACnB;AAAA,EACA;AAAA,IACE,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,WAAW;AAAA,IACX,kBAAkB;AAAA,IAClB,iBAAiBb;AAAAA,IACjB,iBAAiBa;AAAA,EACnB;AAAA,EACA;AAAA,IACE,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,WAAW;AAAA,IACX,kBAAkB;AAAA,IAClB,iBAAiBd;AAAAA,IACjB,iBAAiBc;AAAA,EACnB;AAAA,EACA;AAAA,IACE,KAAK;AAAA,IACL,OAAO;AAAA,IACP,eAAeE;AAAA,IACf,UAAU;AAAA,IACV,WAAW;AAAA,IACX,kBAAkB;AAAA,IAClB,iBAAiBF;AAAA,EAAA;AAErB,GCpFMG,KAAW,CAAC,EAAE,IAAAjE,EAAA,MAAyBA,GAEvCkE,KAAuB,CAACf,OAA4C;AAAA,EACxE,OAAOA,EAAO,IAAI,GAAG,KAAK;AAAA,EAC1B,gBAAgBA,EAAO,IAAI,KAAK,KAAK;AAAA,EACrC,cAAcA,EAAO,IAAI,IAAI,KAAK;AAAA,EAClC,iBAAiBA,EAAO,IAAI,KAAK,KAAK;AAAA,EACtC,WAAWA,EAAO,IAAI,IAAI,KAAK;AAAA,EAC/B,gBAAgBA,EAAO,IAAI,KAAK,KAAK;AAAA,EACrC,UAAUA,EAAO,IAAI,GAAG,KAAK;AAAA,EAC7B,UAAUA,EAAO,IAAI,IAAI,KAAK;AAChC,IAEMgB,KAAsB,MAAM;AAChC,QAAMC,IAAWC,EAAY,GACvB,CAAC1E,GAAc2E,CAAe,IAAIC,GAAgB,GAClDC,IAAkBC,EAAc;AAEtC,SAEIC,gBAAAA,EAAA,KAAAC,YAAA,EAAA,UAAA;AAAA,IAACD,gBAAAA,EAAAA,KAAAE,IAAA,EAAK,QAAO,OACX,UAAA;AAAA,MAAAC,gBAAAA,EAAA,IAACC,GAAe,EAAA,IAAI,EAAE,QAAQ,yBAC5B,UAAAD,gBAAAA,EAAA;AAAA,QAACE;AAAA,QAAA;AAAA,UACC,SAASlB;AAAA,UACT,MAAMW,EAAgB;AAAA,UACtB,UAAAP;AAAA,UACA,YAAY,CAACe,MAAQZ,EAAS,KAAKY,EAAI,EAAE,IAAI,EAAE,UAAU,OAAA,CAAQ;AAAA,UACjE,eAAed,GAAqBvE,CAAY;AAAA,QAAA;AAAA,MAAA,GAEpD;AAAA,MACCkF,gBAAAA,EAAA,IAAA,SAAA,EAAM,MAAK,UAAS,QAAM,GAAC,CAAA;AAAA,IAAA,GAC9B;AAAA,IACAA,gBAAAA,EAAA;AAAA,MAACI;AAAA,MAAA;AAAA,QACC,MAAMT,EAAgB;AAAA,QACtB,aAAaA,EAAgB;AAAA,QAC7B,OAAOA,EAAgB;AAAA,QACvB,cAAc,CAACU,MAAS;AAChB,gBAAAC,IAAY,IAAI,gBAAgBxF,CAAY;AAClD,UAAAwF,EAAU,IAAI,QAAQ,OAAOD,CAAI,CAAC,GAClCZ,EAAgBa,CAAS;AAAA,QAAA;AAAA,MAC3B;AAAA,IAAA;AAAA,EACF,GACF;AAEJ,GCrDMC,KAAqB,MAAM;AAC/B,QAAMtE,IAAU2D,EAAc,GAExBL,IAAWC,EAAY,GAEvBgB,IAAmB,MAAM;AAC7B,IAAAjB,EAAS,EAAE;AAAA,EACb,GAGMkB,IAA2B,CAACC,GAAaC,MAAkB;AAAA,EAGjE;AAEA,SAAK1E,IAMH+D,gBAAAA,EAAA;AAAA,IAAChE;AAAA,IAAA;AAAA,MACC,SAAAC;AAAA,MACA,YAAYuE;AAAA,MACZ,oBAAoBC;AAAA,IAAA;AAAA,EACtB,IATOT,gBAAAA,EAAA,IAAC,SAAI,UAAU,aAAA,CAAA;AAW1B;","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9]}
@@ -1,154 +0,0 @@
1
- import { j as r } from "./jsx-runtime-B6kdoens.js";
2
- import { TablePagination as b, TableHead as T, TableRow as d, TableCell as c, TableBody as l, Table as v } from "@mui/material";
3
- import { memo as p, useMemo as u } from "react";
4
- const M = ({
5
- page: n,
6
- rowsPerPage: a,
7
- total: s,
8
- onPageChange: e
9
- }) => /* @__PURE__ */ r.jsx(
10
- b,
11
- {
12
- component: "div",
13
- count: s,
14
- page: n,
15
- rowsPerPage: a,
16
- onPageChange: (i, o) => e(o),
17
- rowsPerPageOptions: [],
18
- showFirstButton: !0,
19
- showLastButton: !0
20
- }
21
- ), S = ({
22
- columns: n,
23
- filter: a,
24
- defaultFilter: s,
25
- onFilterChange: e
26
- }) => {
27
- const i = u(
28
- () => n.some((o) => !!o.FilterComponent),
29
- [n]
30
- );
31
- return /* @__PURE__ */ r.jsxs(
32
- T,
33
- {
34
- sx: {
35
- position: "sticky",
36
- top: 0,
37
- zIndex: 3,
38
- bgcolor: "background.paper",
39
- borderBottom: "1px solid",
40
- borderColor: "divider"
41
- },
42
- children: [
43
- /* @__PURE__ */ r.jsx(d, { children: n.map(({ key: o, title: t, minWidth: x }) => /* @__PURE__ */ r.jsx(
44
- c,
45
- {
46
- sx: {
47
- bgcolor: "primary.main",
48
- color: "common.white",
49
- minWidth: x
50
- },
51
- children: t
52
- },
53
- String(o)
54
- )) }),
55
- i && /* @__PURE__ */ r.jsx(d, { children: n.map(
56
- ({
57
- key: o,
58
- searchKey: t,
59
- FilterComponent: x,
60
- filterHelperText: g,
61
- filterValidator: m
62
- }) => /* @__PURE__ */ r.jsx(
63
- c,
64
- {
65
- sx: { verticalAlign: "top" },
66
- children: x && /* @__PURE__ */ r.jsx(
67
- x,
68
- {
69
- name: t ?? String(o),
70
- value: a == null ? void 0 : a[o],
71
- defaultValue: s == null ? void 0 : s[o],
72
- filter: a ?? s,
73
- helperText: g,
74
- validator: m,
75
- onChange: e ? (h, j) => e({
76
- ...a ?? s,
77
- ...j ?? {},
78
- [o]: h
79
- }) : void 0
80
- },
81
- s ? `${String(o)}-${s[o]}` : void 0
82
- )
83
- },
84
- `filter-${String(o)}`
85
- )
86
- ) })
87
- ]
88
- }
89
- );
90
- }, B = p(S), P = ({
91
- rows: n,
92
- getRowId: a,
93
- onRowClick: s,
94
- columns: e
95
- }) => /* @__PURE__ */ r.jsx(
96
- l,
97
- {
98
- sx: {
99
- " & .MuiTableRow-root:nth-of-type(odd)": {
100
- bgcolor: "grey.100"
101
- }
102
- },
103
- children: n.map((i) => /* @__PURE__ */ r.jsx(
104
- d,
105
- {
106
- hover: !0,
107
- onClick: s ? () => s(i) : void 0,
108
- sx: { cursor: s ? "pointer" : "default" },
109
- children: e.map(({ CellComponent: o, key: t, searchKey: x }) => /* @__PURE__ */ r.jsx(c, { children: o ? /* @__PURE__ */ r.jsx(
110
- o,
111
- {
112
- rowKey: t,
113
- searchKey: x,
114
- row: i,
115
- value: i[t]
116
- }
117
- ) : String(i[t]) }, String(t)))
118
- },
119
- String(a(i))
120
- ))
121
- }
122
- ), $ = p(P), w = ({
123
- columns: n,
124
- rows: a,
125
- filter: s,
126
- defaultFilter: e,
127
- onFilterChange: i,
128
- getRowId: o,
129
- onRowClick: t
130
- }) => /* @__PURE__ */ r.jsxs(v, { size: "small", children: [
131
- /* @__PURE__ */ r.jsx(
132
- B,
133
- {
134
- columns: n,
135
- filter: s,
136
- defaultFilter: e,
137
- onFilterChange: i
138
- }
139
- ),
140
- /* @__PURE__ */ r.jsx(
141
- $,
142
- {
143
- rows: a,
144
- getRowId: o,
145
- onRowClick: t,
146
- columns: n
147
- }
148
- )
149
- ] });
150
- export {
151
- M as P,
152
- w as T
153
- };
154
- //# sourceMappingURL=Table-DgRqEB1x.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Table-DgRqEB1x.js","sources":["../src/components/table/Pagination.tsx","../src/components/table/Table.tsx"],"sourcesContent":["import { TablePagination } from \"@mui/material\";\n\nexport const Pagination = ({\n page,\n rowsPerPage,\n total,\n onPageChange,\n}: {\n /** zero-indexed page number */\n page: number;\n rowsPerPage: number;\n total: number;\n onPageChange: (page: number) => void;\n}) => {\n return (\n <TablePagination\n component=\"div\"\n count={total}\n page={page}\n rowsPerPage={rowsPerPage}\n onPageChange={(_, newPage) => onPageChange(newPage)}\n rowsPerPageOptions={[]}\n showFirstButton\n showLastButton\n />\n );\n};\n","import {\n Table as MuiTable,\n TableBody,\n TableCell,\n TableHead,\n TableRow,\n} from \"@mui/material\";\nimport { memo, useMemo } from \"react\";\nimport { Filter } from \"../filter/types\";\nimport { TableProps } from \"./types\";\n\nconst Head_ = <T, F extends Filter<T>>({\n columns,\n filter,\n defaultFilter,\n onFilterChange,\n}: Pick<\n TableProps<T, F>,\n \"columns\" | \"filter\" | \"onFilterChange\" | \"defaultFilter\"\n>) => {\n const hasFilters = useMemo(\n () => columns.some((col) => !!col.FilterComponent),\n [columns]\n );\n\n return (\n <TableHead\n sx={{\n position: \"sticky\",\n top: 0,\n zIndex: 3,\n bgcolor: \"background.paper\",\n borderBottom: \"1px solid\",\n borderColor: \"divider\",\n }}\n >\n <TableRow>\n {columns.map(({ key, title, minWidth }) => (\n <TableCell\n sx={{\n bgcolor: \"primary.main\",\n color: \"common.white\",\n minWidth,\n }}\n key={String(key)}\n >\n {title}\n </TableCell>\n ))}\n </TableRow>\n {hasFilters && (\n <TableRow>\n {columns.map(\n ({\n key,\n searchKey,\n FilterComponent,\n filterHelperText,\n filterValidator,\n }) => (\n <TableCell\n key={`filter-${String(key)}`}\n sx={{ verticalAlign: \"top\" }}\n >\n {FilterComponent && (\n <FilterComponent\n key={\n defaultFilter\n ? `${String(key)}-${defaultFilter[key]}`\n : undefined\n }\n name={searchKey ?? String(key)}\n value={filter?.[key]}\n defaultValue={defaultFilter?.[key]}\n filter={(filter ?? defaultFilter)!}\n helperText={filterHelperText}\n validator={filterValidator}\n onChange={\n onFilterChange\n ? (value, newFilter) =>\n onFilterChange({\n ...(filter ?? defaultFilter),\n ...(newFilter ?? ({} as F)),\n [key]: value,\n })\n : undefined\n }\n />\n )}\n </TableCell>\n )\n )}\n </TableRow>\n )}\n </TableHead>\n );\n};\n\n// memo does not handle generic types properly\nconst Head = memo(Head_) as unknown as typeof Head_;\n\nconst Body_ = <T, F extends Filter<T>>({\n rows,\n getRowId,\n onRowClick,\n columns,\n}: Pick<TableProps<T, F>, \"rows\" | \"getRowId\" | \"onRowClick\" | \"columns\">) => (\n <TableBody\n sx={{\n \" & .MuiTableRow-root:nth-of-type(odd)\": {\n bgcolor: \"grey.100\",\n },\n }}\n >\n {rows.map((row) => (\n <TableRow\n key={String(getRowId(row))}\n hover\n onClick={onRowClick ? () => onRowClick(row) : undefined}\n sx={{ cursor: onRowClick ? \"pointer\" : \"default\" }}\n >\n {columns.map(({ CellComponent, key, searchKey }) => (\n <TableCell key={String(key)}>\n {CellComponent ? (\n <CellComponent\n rowKey={key}\n searchKey={searchKey}\n row={row}\n value={row[key]}\n />\n ) : (\n String(row[key])\n )}\n </TableCell>\n ))}\n </TableRow>\n ))}\n </TableBody>\n);\n\n// memo does not handle generic types properly\nconst Body = memo(Body_) as unknown as typeof Body_;\n\nexport const Table = <T, F extends Filter<T>>({\n columns,\n rows,\n filter,\n defaultFilter,\n onFilterChange,\n getRowId,\n onRowClick,\n}: TableProps<T, F>) => {\n return (\n <MuiTable size=\"small\">\n <Head\n columns={columns}\n filter={filter}\n defaultFilter={defaultFilter}\n onFilterChange={onFilterChange}\n />\n <Body\n rows={rows}\n getRowId={getRowId}\n onRowClick={onRowClick}\n columns={columns}\n />\n </MuiTable>\n );\n};\n"],"names":["Pagination","page","rowsPerPage","total","onPageChange","jsx","TablePagination","_","newPage","Head_","columns","filter","defaultFilter","onFilterChange","hasFilters","useMemo","col","jsxs","TableHead","TableRow","key","title","minWidth","TableCell","searchKey","FilterComponent","filterHelperText","filterValidator","value","newFilter","Head","memo","Body_","rows","getRowId","onRowClick","TableBody","row","CellComponent","Body","Table","MuiTable"],"mappings":"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"}
@@ -1,122 +0,0 @@
1
- import { j as s } from "./jsx-runtime-B6kdoens.js";
2
- import { Box as m, IconButton as j, Stack as u } from "@mui/material";
3
- import { d as $ } from "./ExpandMore-D6gf2UVG.js";
4
- import S, { useState as R } from "react";
5
- import { r as g, i as b } from "./createSvgIcon-Cf1cru4R.js";
6
- var f = {}, O = b;
7
- Object.defineProperty(f, "__esModule", {
8
- value: !0
9
- });
10
- var x = f.default = void 0, _ = O(g()), L = s;
11
- x = f.default = (0, _.default)(/* @__PURE__ */ (0, L.jsx)("path", {
12
- d: "m12 8-6 6 1.41 1.41L12 10.83l4.59 4.58L18 14z"
13
- }), "ExpandLess");
14
- const w = (t, e) => e !== void 0 ? `${t}: ${e}` : "", M = ({ metadata: t, open: e }) => {
15
- const a = e ? Object.entries(t) : Object.entries(t).slice(0, 1);
16
- return s.jsx(m, { sx: { whiteSpace: "pre-line", padding: "10px" }, children: a.map(([r, i]) => w(r, i)).join(`
17
- `) });
18
- }, v = ({ metadata: t }) => {
19
- const [e, a] = S.useState(!1), r = (i) => {
20
- i.preventDefault(), i.stopPropagation(), a(!e);
21
- };
22
- return s.jsxs(m, { sx: { display: "flex", flexDirection: "row", alignItems: "flex-start" }, children: [s.jsx(j, { onClick: r, children: e ? s.jsx(x, {}) : s.jsx($, {}) }), s.jsx(M, { open: e, metadata: t })] });
23
- }, F = (t, e) => {
24
- const a = t.trim(), r = new URLSearchParams();
25
- if (!a)
26
- return r;
27
- const i = a.indexOf("-"), n = String(e);
28
- if (i >= 0) {
29
- const o = a.split("-", 2), c = o[0].trim(), d = o[1].trim();
30
- return c && r.append(`${n}.min`, c), d && r.append(`${n}.max`, d), r;
31
- }
32
- return r.append(`${n}.min`, a), r.append(`${n}.max`, a), r;
33
- }, D = /\d{4}-\d{2}-\d{2}((\s|T)\d{2}:\d{2}:\d{2})?/g, U = (t, e) => {
34
- const a = (l) => l.length > 10 ? l : `${l} 00:00:00`, r = (l) => l.length > 10 ? l : `${l} 23:59:59`, i = t.trim(), n = new URLSearchParams();
35
- if (!i)
36
- return n;
37
- const o = i.charAt(i.length - 1) === "-", c = i.indexOf("-") === 0, d = t.match(D);
38
- if (!d || d.length === 0)
39
- return n;
40
- const p = String(e);
41
- return d.length === 1 ? !o && !c ? (n.append(`${p}.min`, a(d[0])), n.append(`${p}.max`, r(d[0])), n) : (n.append(`${p}.${c ? "max" : "min"}`, c ? r(d[0]) : a(d[0])), n) : (n.append(`${p}.min`, a(d[0])), n.append(`${p}.max`, r(d[1])), n);
42
- }, z = (t) => t.slice(0, t.indexOf(".")).replace("T", " "), H = (t) => s.jsx(v, { metadata: t }), N = (t, e) => {
43
- const a = new URLSearchParams();
44
- return t && Object.entries(t).forEach(([r, i]) => {
45
- var n;
46
- i && (((n = e == null ? void 0 : e[r]) == null ? void 0 : n.call(e, i, r)) ?? new URLSearchParams({ [r]: i })).forEach((c, d) => {
47
- a.append(d, c);
48
- });
49
- }), a;
50
- };
51
- var h = {}, k = b;
52
- Object.defineProperty(h, "__esModule", {
53
- value: !0
54
- });
55
- var P = h.default = void 0, T = k(g()), E = s;
56
- P = h.default = (0, T.default)(/* @__PURE__ */ (0, E.jsx)("path", {
57
- d: "M20 11H7.83l5.59-5.59L12 4l-8 8 8 8 1.41-1.41L7.83 13H20z"
58
- }), "ArrowBack");
59
- const Q = (t) => {
60
- if (!t || typeof t != "object" || !("metadata" in t))
61
- return t;
62
- const e = Array.isArray(t.metadata) && t.metadata.some((a) => "key" in a && a.key) ? Object.fromEntries(
63
- t.metadata.map(({ key: a, value: r }) => [a, r])
64
- ) : t.metadata;
65
- return { ...t, metadata: e };
66
- }, W = (t) => t.slice(0, t.indexOf(".")).replace("T", " "), G = (t) => /^\d*$/.test(t) ? void 0 : "Value must be numeric!", J = (t) => /^[0-9]*\s*-{0,1}\s*[0-9]*$/.test(t) ? void 0 : "Value must be numeric or a range!", X = (t) => /^(\d{4}-\d{2}-\d{2}((\s|T)\d{2}:\d{2}:\d{2})?){0,1}\s*-{0,1}\s*(\d{4}-\d{2}-\d{2}((\s|T)\d{2}:\d{2}:\d{2})?){0,1}$/.test(
67
- t
68
- ) ? void 0 : "Value must be a date(time) or range!", Y = ({
69
- value: t
70
- }) => {
71
- const [e, a] = R(!1), r = (n) => {
72
- n.preventDefault(), n.stopPropagation(), a((o) => !o);
73
- }, i = Object.keys(t).length;
74
- return /* @__PURE__ */ s.jsxs(u, { children: [
75
- /* @__PURE__ */ s.jsxs(u, { direction: "row", alignItems: "center", spacing: 1, children: [
76
- /* @__PURE__ */ s.jsx(
77
- j,
78
- {
79
- onClick: r,
80
- sx: { maxWidth: "max-content", p: 0, mr: 1 },
81
- children: e ? /* @__PURE__ */ s.jsx(x, {}) : /* @__PURE__ */ s.jsx($, {})
82
- }
83
- ),
84
- /* @__PURE__ */ s.jsxs(m, { children: [
85
- "(",
86
- i,
87
- ")"
88
- ] })
89
- ] }),
90
- /* @__PURE__ */ s.jsx(
91
- u,
92
- {
93
- whiteSpace: "pre-line",
94
- mt: e ? 1 : 0,
95
- height: e ? "auto" : 0,
96
- overflow: "hidden",
97
- children: Object.entries(t).map(([n, o]) => /* @__PURE__ */ s.jsxs(s.Fragment, { children: [
98
- /* @__PURE__ */ s.jsxs(m, { children: [
99
- n,
100
- ":"
101
- ] }),
102
- /* @__PURE__ */ s.jsx(m, { ml: 1, children: o })
103
- ] }, n))
104
- }
105
- )
106
- ] });
107
- };
108
- export {
109
- Y as T,
110
- F as a,
111
- z as b,
112
- N as c,
113
- P as d,
114
- W as e,
115
- U as f,
116
- X as g,
117
- G as h,
118
- H as i,
119
- Q as m,
120
- J as n
121
- };
122
- //# sourceMappingURL=TableMetadataDisplay-C7RP2ZrM.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TableMetadataDisplay-C7RP2ZrM.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/ArrowBack.js","../src/components/metadata/utils.ts","../src/common/format.ts","../src/common/validation.ts","../src/components/metadata/TableMetadataDisplay.tsx"],"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: \"M20 11H7.83l5.59-5.59L12 4l-8 8 8 8 1.41-1.41L7.83 13H20z\"\n}), 'ArrowBack');","export const mapMetadata = (message: unknown): unknown => {\n if (!message || typeof message !== \"object\" || !(\"metadata\" in message))\n return message;\n\n const metadata =\n Array.isArray(message.metadata) &&\n message.metadata.some((m) => \"key\" in m && m.key)\n ? Object.fromEntries(\n message.metadata.map(({ key, value }) => [key, value])\n )\n : message.metadata;\n\n return { ...message, metadata };\n};\n","export const formatDateTime = (value: string): string =>\n value.slice(0, value.indexOf(\".\")).replace(\"T\", \" \");\n","import { ValidationError } from \"./types\";\n\nexport const numberValidator = (value: string): ValidationError =>\n !/^\\d*$/.test(value) ? \"Value must be numeric!\" : undefined;\n\nexport const booleanValidator = (value: string): ValidationError =>\n !/^(true|false)$/.test(value) ? \"Value must be true or false!\" : undefined;\n\nexport const numberRangeValidator = (value: string): ValidationError =>\n !/^[0-9]*\\s*-{0,1}\\s*[0-9]*$/.test(value)\n ? \"Value must be numeric or a range!\"\n : undefined;\n\nexport const datetimeRangeValidator = (value: string): ValidationError =>\n !/^(\\d{4}-\\d{2}-\\d{2}((\\s|T)\\d{2}:\\d{2}:\\d{2})?){0,1}\\s*-{0,1}\\s*(\\d{4}-\\d{2}-\\d{2}((\\s|T)\\d{2}:\\d{2}:\\d{2})?){0,1}$/.test(\n value\n )\n ? \"Value must be a date(time) or range!\"\n : undefined;\n","import ExpandLess from \"@mui/icons-material/ExpandLess\";\nimport ExpandMore from \"@mui/icons-material/ExpandMore\";\nimport { Box, IconButton, Stack } from \"@mui/material\";\nimport { useState } from \"react\";\nimport { Fragment } from \"react/jsx-runtime\";\nimport { GenericCellProps } from \"../table/types\";\n\nexport const TableMetadataDisplay = ({\n value,\n}: GenericCellProps<Record<string, string>>) => {\n const [open, setOpen] = useState(false);\n const handleClick = (event: React.MouseEvent) => {\n event.preventDefault();\n event.stopPropagation();\n setOpen((prev) => !prev);\n };\n\n const amount = Object.keys(value).length;\n\n return (\n <Stack>\n <Stack direction=\"row\" alignItems=\"center\" spacing={1}>\n <IconButton\n onClick={handleClick}\n sx={{ maxWidth: \"max-content\", p: 0, mr: 1 }}\n >\n {open ? <ExpandLess /> : <ExpandMore />}\n </IconButton>\n <Box>({amount})</Box>\n </Stack>\n <Stack\n whiteSpace=\"pre-line\"\n mt={open ? 1 : 0}\n height={open ? \"auto\" : 0}\n overflow=\"hidden\"\n >\n {Object.entries(value).map(([k, v]) => (\n <Fragment key={k}>\n <Box>{k}:</Box>\n <Box ml={1}>{v}</Box>\n </Fragment>\n ))}\n </Stack>\n </Stack>\n );\n};\n"],"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","createFilterQuery","filters","formatterByKey","_a","subValue","subKey","ArrowBack","mapMetadata","message","m","numberValidator","numberRangeValidator","datetimeRangeValidator","TableMetadataDisplay","useState","prev","amount","Stack","jsxs","jsx","k","v","Fragment"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4]}
@@ -1,70 +0,0 @@
1
- import { j as e } from "./jsx-runtime-B6kdoens.js";
2
- import { r as f, i as j } from "./createSvgIcon-Cf1cru4R.js";
3
- import { FormHelperText as m, FormControl as v, OutlinedInput as b, InputAdornment as w, IconButton as h } from "@mui/material";
4
- import { useRef as F, useState as R } from "react";
5
- const _ = ({
6
- helperText: s,
7
- error: t
8
- }) => /* @__PURE__ */ e.jsxs(e.Fragment, { children: [
9
- s && /* @__PURE__ */ e.jsx(m, { sx: { whiteSpace: "normal", overflowWrap: "anywhere" }, children: s }),
10
- t && /* @__PURE__ */ e.jsx(m, { sx: { whiteSpace: "normal", overflowWrap: "anywhere" }, children: t })
11
- ] });
12
- var u = {}, y = j;
13
- Object.defineProperty(u, "__esModule", {
14
- value: !0
15
- });
16
- var d = u.default = void 0, I = y(f()), S = e;
17
- d = u.default = (0, I.default)(/* @__PURE__ */ (0, S.jsx)("path", {
18
- 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"
19
- }), "Backspace");
20
- const B = ({
21
- name: s,
22
- value: t,
23
- defaultValue: n,
24
- onChange: r,
25
- helperText: x,
26
- validator: l
27
- }) => {
28
- const i = F(null), [c, o] = R(t ?? n ?? ""), a = l == null ? void 0 : l(c);
29
- return /* @__PURE__ */ e.jsxs(v, { size: "small", error: !!a, variant: "outlined", fullWidth: !0, children: [
30
- /* @__PURE__ */ e.jsx(
31
- b,
32
- {
33
- name: s,
34
- inputRef: i,
35
- value: t,
36
- defaultValue: n,
37
- onChange: (p) => {
38
- o(p.target.value), r == null || r(p.target.value);
39
- },
40
- endAdornment: /* @__PURE__ */ e.jsx(
41
- w,
42
- {
43
- position: "end",
44
- sx: { visibility: c ? "visible" : "hidden" },
45
- children: /* @__PURE__ */ e.jsx(
46
- h,
47
- {
48
- size: "small",
49
- type: "submit",
50
- onClick: () => {
51
- r == null || r(""), o(""), i.current && (i.current.value = "", i.current.dispatchEvent(
52
- new Event("input", { bubbles: !0 })
53
- ));
54
- },
55
- children: /* @__PURE__ */ e.jsx(d, {})
56
- }
57
- )
58
- }
59
- )
60
- }
61
- ),
62
- /* @__PURE__ */ e.jsx(_, { helperText: x, error: a })
63
- ] });
64
- };
65
- export {
66
- _ as F,
67
- B as T,
68
- d
69
- };
70
- //# sourceMappingURL=TextFilter-BKUfkFQe.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TextFilter-BKUfkFQe.js","sources":["../src/components/filter/FilterHelperTexts.tsx","../../node_modules/@mui/icons-material/Backspace.js","../src/components/filter/TextFilter.tsx"],"sourcesContent":["import { FormHelperText } from \"@mui/material\";\n\nexport const FilterHelperTexts = ({\n helperText,\n error,\n}: {\n helperText?: React.ReactNode;\n error?: string;\n}) => (\n <>\n {helperText && (\n <FormHelperText sx={{ whiteSpace: \"normal\", overflowWrap: \"anywhere\" }}>\n {helperText}\n </FormHelperText>\n )}\n {error && (\n <FormHelperText sx={{ whiteSpace: \"normal\", overflowWrap: \"anywhere\" }}>\n {error}\n </FormHelperText>\n )}\n </>\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 Backspace from \"@mui/icons-material/Backspace\";\nimport {\n FormControl,\n IconButton,\n InputAdornment,\n OutlinedInput,\n} from \"@mui/material\";\nimport { useRef, useState } from \"react\";\nimport { FilterHelperTexts } from \"./FilterHelperTexts\";\nimport { GenericFilterProps } from \"./types\";\n\nexport const TextFilter = ({\n name,\n value,\n defaultValue,\n onChange,\n helperText,\n validator,\n}: GenericFilterProps<string>) => {\n const ref = useRef<HTMLInputElement>(null);\n\n const [localValue, setLocalValue] = useState(value ?? defaultValue ?? \"\");\n const error = validator?.(localValue);\n\n return (\n <FormControl size=\"small\" error={!!error} variant=\"outlined\" fullWidth>\n <OutlinedInput\n name={name}\n inputRef={ref}\n value={value}\n defaultValue={defaultValue}\n onChange={(e) => {\n setLocalValue(e.target.value);\n onChange?.(e.target.value);\n }}\n endAdornment={\n <InputAdornment\n position=\"end\"\n sx={{ visibility: localValue ? \"visible\" : \"hidden\" }}\n >\n <IconButton\n size=\"small\"\n type=\"submit\"\n onClick={() => {\n onChange?.(\"\");\n setLocalValue(\"\");\n if (ref.current) {\n ref.current.value = \"\";\n ref.current.dispatchEvent(\n new Event(\"input\", { bubbles: true })\n );\n }\n }}\n >\n <Backspace />\n </IconButton>\n </InputAdornment>\n }\n />\n <FilterHelperTexts helperText={helperText} error={error} />\n </FormControl>\n );\n};\n"],"names":["FilterHelperTexts","helperText","error","jsxs","Fragment","jsx","FormHelperText","_interopRequireDefault","require$$0","Backspace","default_1","_createSvgIcon","require$$1","_jsxRuntime","require$$2","TextFilter","name","value","defaultValue","onChange","validator","ref","useRef","localValue","setLocalValue","useState","FormControl","OutlinedInput","e","InputAdornment","IconButton"],"mappings":";;;;AAEO,MAAMA,IAAoB,CAAC;AAAA,EAChC,YAAAC;AAAA,EACA,OAAAC;AACF,MAKKC,gBAAAA,EAAA,KAAAC,YAAA,EAAA,UAAA;AAAA,EACCH,KAAAI,gBAAAA,EAAA,IAACC,KAAe,IAAI,EAAE,YAAY,UAAU,cAAc,WAAW,GAClE,UACHL,EAAA,CAAA;AAAA,EAEDC,KACEG,gBAAAA,EAAA,IAAAC,GAAA,EAAe,IAAI,EAAE,YAAY,UAAU,cAAc,cACvD,UACHJ,EAAA,CAAA;AAAA,EAEJ,CAAA;YCjBEK,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,WAAW;ACDR,MAAME,IAAa,CAAC;AAAA,EACzB,MAAAC;AAAA,EACA,OAAAC;AAAA,EACA,cAAAC;AAAA,EACA,UAAAC;AAAA,EACA,YAAAlB;AAAA,EACA,WAAAmB;AACF,MAAkC;AAC1B,QAAAC,IAAMC,EAAyB,IAAI,GAEnC,CAACC,GAAYC,CAAa,IAAIC,EAASR,KAASC,KAAgB,EAAE,GAClEhB,IAAQkB,KAAA,gBAAAA,EAAYG;AAGxB,SAAApB,gBAAAA,EAAA,KAACuB,GAAY,EAAA,MAAK,SAAQ,OAAO,CAAC,CAACxB,GAAO,SAAQ,YAAW,WAAS,IACpE,UAAA;AAAA,IAAAG,gBAAAA,EAAA;AAAA,MAACsB;AAAA,MAAA;AAAA,QACC,MAAAX;AAAA,QACA,UAAUK;AAAA,QACV,OAAAJ;AAAA,QACA,cAAAC;AAAA,QACA,UAAU,CAACU,MAAM;AACD,UAAAJ,EAAAI,EAAE,OAAO,KAAK,GACjBT,KAAA,QAAAA,EAAAS,EAAE,OAAO;AAAA,QACtB;AAAA,QACA,cACEvB,gBAAAA,EAAA;AAAA,UAACwB;AAAA,UAAA;AAAA,YACC,UAAS;AAAA,YACT,IAAI,EAAE,YAAYN,IAAa,YAAY,SAAS;AAAA,YAEpD,UAAAlB,gBAAAA,EAAA;AAAA,cAACyB;AAAA,cAAA;AAAA,gBACC,MAAK;AAAA,gBACL,MAAK;AAAA,gBACL,SAAS,MAAM;AACb,kBAAAX,KAAA,QAAAA,EAAW,KACXK,EAAc,EAAE,GACZH,EAAI,YACNA,EAAI,QAAQ,QAAQ,IACpBA,EAAI,QAAQ;AAAA,oBACV,IAAI,MAAM,SAAS,EAAE,SAAS,GAAM,CAAA;AAAA,kBACtC;AAAA,gBAEJ;AAAA,gBAEA,gCAACZ,GAAU,CAAA,CAAA;AAAA,cAAA;AAAA,YAAA;AAAA,UACb;AAAA,QAAA;AAAA,MACF;AAAA,IAEJ;AAAA,IACAJ,gBAAAA,EAAAA,IAACL,GAAkB,EAAA,YAAAC,GAAwB,OAAAC,EAAc,CAAA;AAAA,EAAA,GAC3D;AAEJ;","x_google_ignoreList":[1]}