@startdownnotez404/ui 1.3.5 → 1.3.6

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 (254) hide show
  1. package/dist/AutocompleteField-653233JU.mjs +203 -0
  2. package/dist/AutocompleteField-653233JU.mjs.map +1 -0
  3. package/dist/AvatarField-KFASMVZU.mjs +378 -0
  4. package/dist/AvatarField-KFASMVZU.mjs.map +1 -0
  5. package/dist/{DateField-ZYMZFHL4.mjs → DateField-CDJ6W6XF.mjs} +19 -7
  6. package/dist/DateField-CDJ6W6XF.mjs.map +1 -0
  7. package/dist/DateRangeField-ZWSFT5KV.mjs +118 -0
  8. package/dist/DateRangeField-ZWSFT5KV.mjs.map +1 -0
  9. package/dist/{DateTimeField-TPTJ7YIZ.mjs → DateTimeField-SFAF4I6A.mjs} +36 -11
  10. package/dist/DateTimeField-SFAF4I6A.mjs.map +1 -0
  11. package/dist/FileUploadField-TSNCSLXX.mjs +101 -0
  12. package/dist/FileUploadField-TSNCSLXX.mjs.map +1 -0
  13. package/dist/{JSONEditorField-TMRWGXVR.mjs → JSONEditorField-3KXC2GOG.mjs} +7 -6
  14. package/dist/{JSONEditorField-TMRWGXVR.mjs.map → JSONEditorField-3KXC2GOG.mjs.map} +1 -1
  15. package/dist/{PopperMenu-LJ36RPBW.mjs → PopperMenu-PSHLKIEZ.mjs} +26 -12
  16. package/dist/{PopperMenu-LJ36RPBW.mjs.map → PopperMenu-PSHLKIEZ.mjs.map} +1 -1
  17. package/dist/{TelField-LOGRVZ4I.mjs → TelField-FRQT2UBJ.mjs} +8 -7
  18. package/dist/{TelField-LOGRVZ4I.mjs.map → TelField-FRQT2UBJ.mjs.map} +1 -1
  19. package/dist/TimeField-XVWXBJID.mjs +94 -0
  20. package/dist/TimeField-XVWXBJID.mjs.map +1 -0
  21. package/dist/alert.d.mts +148 -18
  22. package/dist/alert.d.ts +148 -18
  23. package/dist/alert.js +698 -254
  24. package/dist/alert.js.map +1 -1
  25. package/dist/alert.mjs +46 -10
  26. package/dist/autocomplete.d.mts +438 -4
  27. package/dist/autocomplete.d.ts +438 -4
  28. package/dist/autocomplete.js +632 -21
  29. package/dist/autocomplete.js.map +1 -1
  30. package/dist/autocomplete.mjs +26 -7
  31. package/dist/avatar.js +2 -1
  32. package/dist/avatar.js.map +1 -1
  33. package/dist/avatar.mjs +12 -11
  34. package/dist/box.mjs +2 -1
  35. package/dist/button.mjs +3 -2
  36. package/dist/chart.mjs +3 -2
  37. package/dist/checkbox.mjs +3 -2
  38. package/dist/chunk-2FK24ZPJ.mjs +78 -0
  39. package/dist/chunk-2FK24ZPJ.mjs.map +1 -0
  40. package/dist/{chunk-V26V2S3W.mjs → chunk-3O3N6X6D.mjs} +3 -3
  41. package/dist/{chunk-Y74ALKBL.mjs → chunk-4MSPA7U7.mjs} +11 -9
  42. package/dist/{chunk-Y74ALKBL.mjs.map → chunk-4MSPA7U7.mjs.map} +1 -1
  43. package/dist/{chunk-24XDGNJ6.mjs → chunk-4P45Z5LR.mjs} +63 -41
  44. package/dist/chunk-4P45Z5LR.mjs.map +1 -0
  45. package/dist/chunk-4SSJY32J.mjs +1182 -0
  46. package/dist/chunk-4SSJY32J.mjs.map +1 -0
  47. package/dist/{chunk-XJ2SXC2Q.mjs → chunk-6B6I27TT.mjs} +18 -16
  48. package/dist/{chunk-XJ2SXC2Q.mjs.map → chunk-6B6I27TT.mjs.map} +1 -1
  49. package/dist/chunk-6JKMEH2L.mjs +205 -0
  50. package/dist/chunk-6JKMEH2L.mjs.map +1 -0
  51. package/dist/{chunk-IN3O4R7Q.mjs → chunk-7O526A2D.mjs} +6 -4
  52. package/dist/{chunk-IN3O4R7Q.mjs.map → chunk-7O526A2D.mjs.map} +1 -1
  53. package/dist/chunk-AFLEG5ZC.mjs +28 -0
  54. package/dist/chunk-AFLEG5ZC.mjs.map +1 -0
  55. package/dist/{chunk-UGMRJMFZ.mjs → chunk-BO5CU4ZM.mjs} +4 -4
  56. package/dist/{chunk-JIU5GVM7.mjs → chunk-D4XPNSSI.mjs} +5 -3
  57. package/dist/{chunk-JIU5GVM7.mjs.map → chunk-D4XPNSSI.mjs.map} +1 -1
  58. package/dist/chunk-DPIMA5IO.mjs +72 -0
  59. package/dist/chunk-DPIMA5IO.mjs.map +1 -0
  60. package/dist/chunk-F2CGFVIZ.mjs +83 -0
  61. package/dist/chunk-F2CGFVIZ.mjs.map +1 -0
  62. package/dist/{chunk-R5MKQN6D.mjs → chunk-FBLSJQWK.mjs} +3 -3
  63. package/dist/{chunk-BGB7JHIU.mjs → chunk-FMGZCOJC.mjs} +5 -3
  64. package/dist/{chunk-BGB7JHIU.mjs.map → chunk-FMGZCOJC.mjs.map} +1 -1
  65. package/dist/{chunk-UTVSYS6S.mjs → chunk-FNSIQ2B7.mjs} +18 -6
  66. package/dist/chunk-FNSIQ2B7.mjs.map +1 -0
  67. package/dist/{chunk-JWANK42G.mjs → chunk-FUZ2JNTZ.mjs} +3 -3
  68. package/dist/{chunk-CRYIEYZZ.mjs → chunk-HAJWE62X.mjs} +66 -42
  69. package/dist/chunk-HAJWE62X.mjs.map +1 -0
  70. package/dist/{chunk-CWFWRZWU.mjs → chunk-KSN33A6I.mjs} +3 -2
  71. package/dist/{chunk-CWFWRZWU.mjs.map → chunk-KSN33A6I.mjs.map} +1 -1
  72. package/dist/chunk-KYTHGFFY.mjs +866 -0
  73. package/dist/chunk-KYTHGFFY.mjs.map +1 -0
  74. package/dist/{chunk-QKGCW37O.mjs → chunk-LDFM46LV.mjs} +5 -3
  75. package/dist/{chunk-QKGCW37O.mjs.map → chunk-LDFM46LV.mjs.map} +1 -1
  76. package/dist/chunk-LQNDBPHU.mjs +142 -0
  77. package/dist/chunk-LQNDBPHU.mjs.map +1 -0
  78. package/dist/{chunk-E3I2VDHZ.mjs → chunk-M2PYXSAF.mjs} +6 -4
  79. package/dist/{chunk-E3I2VDHZ.mjs.map → chunk-M2PYXSAF.mjs.map} +1 -1
  80. package/dist/{chunk-DELCADNF.mjs → chunk-ODVKRIVN.mjs} +30 -30
  81. package/dist/{chunk-HR3A4H4E.mjs → chunk-PEJL2T2K.mjs} +13 -11
  82. package/dist/{chunk-HR3A4H4E.mjs.map → chunk-PEJL2T2K.mjs.map} +1 -1
  83. package/dist/{chunk-OGNGPI3M.mjs → chunk-PL55YKT4.mjs} +2 -2
  84. package/dist/{chunk-S6EZVRZC.mjs → chunk-PNSJC6PC.mjs} +5 -28
  85. package/dist/chunk-PNSJC6PC.mjs.map +1 -0
  86. package/dist/{chunk-TDRA5EZI.mjs → chunk-PUREEN2J.mjs} +7 -7
  87. package/dist/chunk-QFS5CENY.mjs +659 -0
  88. package/dist/chunk-QFS5CENY.mjs.map +1 -0
  89. package/dist/chunk-RSN7NH2J.mjs +250 -0
  90. package/dist/chunk-RSN7NH2J.mjs.map +1 -0
  91. package/dist/{chunk-UDREPVEY.mjs → chunk-RVSMEZE3.mjs} +12 -78
  92. package/dist/chunk-RVSMEZE3.mjs.map +1 -0
  93. package/dist/{chunk-SRWPHN2N.mjs → chunk-S64IYJ6Y.mjs} +2 -2
  94. package/dist/{chunk-ZG3NQI77.mjs → chunk-SMD7OEUW.mjs} +6 -4
  95. package/dist/{chunk-ZG3NQI77.mjs.map → chunk-SMD7OEUW.mjs.map} +1 -1
  96. package/dist/{chunk-NJYNJLT7.mjs → chunk-SWFB3A3G.mjs} +2 -2
  97. package/dist/{chunk-RXBQ7KXF.mjs → chunk-USXGNKWJ.mjs} +98 -44
  98. package/dist/chunk-USXGNKWJ.mjs.map +1 -0
  99. package/dist/{chunk-OJV6V7YZ.mjs → chunk-VL7V52YD.mjs} +27 -20
  100. package/dist/chunk-VL7V52YD.mjs.map +1 -0
  101. package/dist/{chunk-2ZZJTBTE.mjs → chunk-WJZ3IYET.mjs} +2 -2
  102. package/dist/chunk-XAJAMVAG.mjs +1720 -0
  103. package/dist/chunk-XAJAMVAG.mjs.map +1 -0
  104. package/dist/chunk-YIJ5QVJ6.mjs +277 -0
  105. package/dist/chunk-YIJ5QVJ6.mjs.map +1 -0
  106. package/dist/{chunk-T6AMRENK.mjs → chunk-YRW5NKD7.mjs} +148 -112
  107. package/dist/chunk-YRW5NKD7.mjs.map +1 -0
  108. package/dist/chunk-ZMJKG2UI.mjs +71 -0
  109. package/dist/chunk-ZMJKG2UI.mjs.map +1 -0
  110. package/dist/confirm.d.mts +48 -0
  111. package/dist/confirm.d.ts +48 -0
  112. package/dist/confirm.js +334 -0
  113. package/dist/confirm.js.map +1 -0
  114. package/dist/confirm.mjs +20 -0
  115. package/dist/datePicker.d.mts +256 -14
  116. package/dist/datePicker.d.ts +256 -14
  117. package/dist/datePicker.js +1624 -145
  118. package/dist/datePicker.js.map +1 -1
  119. package/dist/datePicker.mjs +19 -6
  120. package/dist/dialog.d.mts +166 -0
  121. package/dist/dialog.d.ts +166 -0
  122. package/dist/dialog.js +362 -0
  123. package/dist/dialog.js.map +1 -0
  124. package/dist/dialog.mjs +45 -0
  125. package/dist/emptyState.d.mts +17 -0
  126. package/dist/emptyState.d.ts +17 -0
  127. package/dist/emptyState.js +253 -0
  128. package/dist/emptyState.js.map +1 -0
  129. package/dist/emptyState.mjs +12 -0
  130. package/dist/emptyState.mjs.map +1 -0
  131. package/dist/errorState.d.mts +18 -0
  132. package/dist/errorState.d.ts +18 -0
  133. package/dist/{displayFile.js → errorState.js} +107 -156
  134. package/dist/errorState.js.map +1 -0
  135. package/dist/errorState.mjs +15 -0
  136. package/dist/errorState.mjs.map +1 -0
  137. package/dist/fileUpload.d.mts +197 -0
  138. package/dist/fileUpload.d.ts +197 -0
  139. package/dist/fileUpload.js +1483 -0
  140. package/dist/fileUpload.js.map +1 -0
  141. package/dist/fileUpload.mjs +65 -0
  142. package/dist/fileUpload.mjs.map +1 -0
  143. package/dist/flowMap.mjs +7 -6
  144. package/dist/flowMap.mjs.map +1 -1
  145. package/dist/image.js +1195 -429
  146. package/dist/image.js.map +1 -1
  147. package/dist/image.mjs +8 -6
  148. package/dist/index.d.ts +7 -2
  149. package/dist/index.js +8606 -4087
  150. package/dist/index.js.map +1 -1
  151. package/dist/index.mjs +314 -152
  152. package/dist/inlineError.d.mts +16 -0
  153. package/dist/inlineError.d.ts +16 -0
  154. package/dist/inlineError.js +297 -0
  155. package/dist/inlineError.js.map +1 -0
  156. package/dist/inlineError.mjs +15 -0
  157. package/dist/inlineError.mjs.map +1 -0
  158. package/dist/input.mjs +8 -7
  159. package/dist/jsonEditor.mjs +3 -2
  160. package/dist/list.mjs +7 -6
  161. package/dist/loading.mjs +8 -6
  162. package/dist/markdown.mjs +7 -6
  163. package/dist/markdown.mjs.map +1 -1
  164. package/dist/menu.mjs +9 -8
  165. package/dist/modal.js +2 -1
  166. package/dist/modal.js.map +1 -1
  167. package/dist/modal.mjs +7 -5
  168. package/dist/process.d.mts +33 -75
  169. package/dist/process.d.ts +33 -75
  170. package/dist/process.js +1275 -203
  171. package/dist/process.js.map +1 -1
  172. package/dist/process.mjs +12 -9
  173. package/dist/scrollToLoad.mjs +4 -3
  174. package/dist/select.mjs +10 -9
  175. package/dist/skeleton.d.mts +15 -1
  176. package/dist/skeleton.d.ts +15 -1
  177. package/dist/skeleton.js +114 -2
  178. package/dist/skeleton.js.map +1 -1
  179. package/dist/skeleton.mjs +6 -3
  180. package/dist/stepper.mjs +4 -3
  181. package/dist/tab.mjs +10 -9
  182. package/dist/table.d.mts +269 -85
  183. package/dist/table.d.ts +269 -85
  184. package/dist/table.js +5102 -3153
  185. package/dist/table.js.map +1 -1
  186. package/dist/table.mjs +21 -19
  187. package/dist/theme.js +1766 -432
  188. package/dist/theme.js.map +1 -1
  189. package/dist/theme.mjs +32 -25
  190. package/dist/timeline.mjs +4 -3
  191. package/dist/toast.d.mts +49 -0
  192. package/dist/toast.d.ts +49 -0
  193. package/dist/toast.js +175 -0
  194. package/dist/toast.js.map +1 -0
  195. package/dist/toast.mjs +9 -0
  196. package/dist/toast.mjs.map +1 -0
  197. package/dist/toggleButtonGroup.mjs +3 -2
  198. package/dist/useForm.d.mts +270 -86
  199. package/dist/useForm.d.ts +270 -86
  200. package/dist/useForm.js +4672 -2727
  201. package/dist/useForm.js.map +1 -1
  202. package/dist/useForm.mjs +18 -16
  203. package/dist/useSearch.mjs +13 -12
  204. package/dist/variablesRenderer.mjs +8 -7
  205. package/package.json +3 -3
  206. package/dist/AutocompleteField-ZKNU2IRR.mjs +0 -181
  207. package/dist/AutocompleteField-ZKNU2IRR.mjs.map +0 -1
  208. package/dist/AvatarField-SAODT3CZ.mjs +0 -275
  209. package/dist/AvatarField-SAODT3CZ.mjs.map +0 -1
  210. package/dist/DateField-ZYMZFHL4.mjs.map +0 -1
  211. package/dist/DateTimeField-TPTJ7YIZ.mjs.map +0 -1
  212. package/dist/FileUploadField-NTMWBJER.mjs +0 -78
  213. package/dist/FileUploadField-NTMWBJER.mjs.map +0 -1
  214. package/dist/chunk-24XDGNJ6.mjs.map +0 -1
  215. package/dist/chunk-27KYFU7R.mjs +0 -30
  216. package/dist/chunk-27KYFU7R.mjs.map +0 -1
  217. package/dist/chunk-AAH2O24U.mjs +0 -325
  218. package/dist/chunk-AAH2O24U.mjs.map +0 -1
  219. package/dist/chunk-CRYIEYZZ.mjs.map +0 -1
  220. package/dist/chunk-EEH7HACG.mjs +0 -249
  221. package/dist/chunk-EEH7HACG.mjs.map +0 -1
  222. package/dist/chunk-EKPULYPU.mjs +0 -497
  223. package/dist/chunk-EKPULYPU.mjs.map +0 -1
  224. package/dist/chunk-OJV6V7YZ.mjs.map +0 -1
  225. package/dist/chunk-RXBQ7KXF.mjs.map +0 -1
  226. package/dist/chunk-S6EZVRZC.mjs.map +0 -1
  227. package/dist/chunk-SGCUDWO3.mjs +0 -396
  228. package/dist/chunk-SGCUDWO3.mjs.map +0 -1
  229. package/dist/chunk-T6AMRENK.mjs.map +0 -1
  230. package/dist/chunk-UDREPVEY.mjs.map +0 -1
  231. package/dist/chunk-UTVSYS6S.mjs.map +0 -1
  232. package/dist/chunk-XIMFP6RB.mjs +0 -161
  233. package/dist/chunk-XIMFP6RB.mjs.map +0 -1
  234. package/dist/displayFile.d.mts +0 -95
  235. package/dist/displayFile.d.ts +0 -95
  236. package/dist/displayFile.js.map +0 -1
  237. package/dist/displayFile.mjs +0 -19
  238. package/dist/fileUploader.d.mts +0 -86
  239. package/dist/fileUploader.d.ts +0 -86
  240. package/dist/fileUploader.js +0 -722
  241. package/dist/fileUploader.js.map +0 -1
  242. package/dist/fileUploader.mjs +0 -16
  243. /package/dist/{chunk-V26V2S3W.mjs.map → chunk-3O3N6X6D.mjs.map} +0 -0
  244. /package/dist/{chunk-UGMRJMFZ.mjs.map → chunk-BO5CU4ZM.mjs.map} +0 -0
  245. /package/dist/{chunk-R5MKQN6D.mjs.map → chunk-FBLSJQWK.mjs.map} +0 -0
  246. /package/dist/{chunk-JWANK42G.mjs.map → chunk-FUZ2JNTZ.mjs.map} +0 -0
  247. /package/dist/{chunk-DELCADNF.mjs.map → chunk-ODVKRIVN.mjs.map} +0 -0
  248. /package/dist/{chunk-OGNGPI3M.mjs.map → chunk-PL55YKT4.mjs.map} +0 -0
  249. /package/dist/{chunk-TDRA5EZI.mjs.map → chunk-PUREEN2J.mjs.map} +0 -0
  250. /package/dist/{chunk-SRWPHN2N.mjs.map → chunk-S64IYJ6Y.mjs.map} +0 -0
  251. /package/dist/{chunk-NJYNJLT7.mjs.map → chunk-SWFB3A3G.mjs.map} +0 -0
  252. /package/dist/{chunk-2ZZJTBTE.mjs.map → chunk-WJZ3IYET.mjs.map} +0 -0
  253. /package/dist/{displayFile.mjs.map → confirm.mjs.map} +0 -0
  254. /package/dist/{fileUploader.mjs.map → dialog.mjs.map} +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../node_modules/classnames/index.js","../src/components/elemental/Modal/src/index.ts","../src/components/elemental/Modal/src/MuiModal/MuiModal.tsx","../src/_utils/_const/index.ts","../src/components/elemental/Modal/src/MuiModal/theme.ts"],"sourcesContent":["/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = '';\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (arg) {\n\t\t\t\tclasses = appendClass(classes, parseValue(arg));\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction parseValue (arg) {\n\t\tif (typeof arg === 'string' || typeof arg === 'number') {\n\t\t\treturn arg;\n\t\t}\n\n\t\tif (typeof arg !== 'object') {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (Array.isArray(arg)) {\n\t\t\treturn classNames.apply(null, arg);\n\t\t}\n\n\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\treturn arg.toString();\n\t\t}\n\n\t\tvar classes = '';\n\n\t\tfor (var key in arg) {\n\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\tclasses = appendClass(classes, key);\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction appendClass (value, newClass) {\n\t\tif (!newClass) {\n\t\t\treturn value;\n\t\t}\n\t\n\t\tif (value) {\n\t\t\treturn value + ' ' + newClass;\n\t\t}\n\t\n\t\treturn value + newClass;\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","export { default as Modal } from '@mui/material/Modal'\nexport * from './MuiModal'\n","'use client'\nimport React, { useCallback, useMemo } from 'react'\nimport Modal, { type ModalProps } from '@mui/material/Modal'\nimport type { SxProps } from '@mui/material';\nimport type { Theme } from '@mui/material/styles';\nimport { useTheme, useMediaQuery } from '@mui/material';\nimport classnames from 'classnames';\nimport { CLASSNAMEs } from '@/_utils/_const/classNames';\nimport Tooltip from '@mui/material/Tooltip'\nimport { CloseIcon } from '@/icons/MuiIcon'\n\nimport { COMPONENTs } from '@/_utils/_const'\nimport { mergeSx } from '@/_utils/_func'\nimport { Box as Box } from '@/ele/Box'\nimport { Header as MuiHeader } from '@/ele/Typography'\nimport { ShinyPaper as MuiPaper } from '@/ele/Paper'\nimport { IconButton } from '@/ele/Button'\nimport { getDoodlePatternModalBackgroundSx } from '@/patterns'\nimport { MUI_MODAL_PAPER_RADIUS, muiModalPaperSx, muiModalRootSx } from './theme'\n\n/**\n * extended from Mui Modal\n * \n * [Doc](https://mui.com/material-ui/api/modal/)\n * \n * @param openProps - [open, setOpen]\n */\nexport default function MuiModal({\n children,\n openProps,\n size = {\n w: 'auto',\n h: 'auto',\n },\n maxHeight = '95vh', maxWidth = '95vw',\n\n onClose = () => { },\n title = \"\",\n titleIcon = null,\n closeButton = null,\n slots,\n slotProps,\n ...rest\n}: {\n children?: React.ReactNode;\n openProps: [\n boolean, // open\n (React.Dispatch<React.SetStateAction<boolean>> | React.Dispatch<boolean>) // setOpen\n ];\n size?: {\n w?: string | number;\n h?: string | number;\n },\n maxHeight?: string | number;\n maxWidth?: string | number;\n onClose?: () => void;\n title?: string;\n titleIcon?: React.ReactNode;\n closeButton?: React.ReactNode;\n\n slots?: {\n closeButton?: React.ElementType;\n closeIcon?: React.ElementType;\n };\n slotProps?: {\n container?: {\n style?: {\n bgColor?: string;\n shadow?: string;\n },\n sx?: SxProps<Theme>;\n },\n header?: {\n style?: {\n headerImg: string;\n }\n },\n closeButton?: Partial<React.ComponentProps<typeof IconButton>> & {\n closeIcon?: Partial<React.ComponentProps<typeof CloseIcon>>;\n };\n };\n} & Omit<ModalProps, \"open\" | \"title\">) {\n const [open, setOpen] = openProps\n\n // responsive behavior: on small screens modal should occupy nearly full\n // viewport automatically so users are not staring at a tiny dialog.\n const theme = useTheme();\n const isSmDown = useMediaQuery(theme.breakpoints.down('sm'));\n const effectiveSize = useMemo(() => {\n if (isSmDown) {\n return { width: 'calc(100vw - 2%)', height: 'calc(100vh - 2%)' };\n }\n return {\n width: size.w || 'auto',\n height: size.h || 'auto',\n };\n }, [isSmDown, size.w, size.h]);\n\n const { \n closeButton: CloseButtonSlot = IconButton,\n closeIcon: CloseIconSlot = CloseIcon,\n } = slots || {};\n\n const {\n closeButton: closeButtonAllProps,\n } = slotProps || {};\n\n const { closeIcon: closeIconProps, ...closeButtonProps } = closeButtonAllProps || {sx:{}};\n\n /**\n * Internal close handler that ensures modal state is updated\n */\n const handleClose = useCallback(() => {\n // If setOpen is available (it should be from openProps), use it\n if (typeof setOpen === 'function') {\n setOpen(false);\n }\n // Also call generic onClose if provided\n onClose?.();\n }, [setOpen, onClose]);\n\n /**\n * Determine the close button to render\n * If closeButton is provided, use it\n * Otherwise generate a default IconButton that triggers handleClose\n */\n const renderCloseButton = useMemo(() => {\n if (closeButton) return closeButton;\n \n return (\n <CloseButtonSlot onClick={handleClose} size=\"small\" aria-label=\"close\" {...closeButtonProps} sx={{\n padding: 0,\n ...closeButtonProps?.sx,\n }}>\n <CloseIconSlot\n {...closeIconProps}\n fontSize=\"1rem\"\n sx={{\n color: 'var(--closeIconColor)',\n ...closeIconProps?.sx,\n }}\n />\n </CloseButtonSlot>\n );\n }, [closeButton, handleClose, CloseButtonSlot, CloseIconSlot, closeButtonProps, closeIconProps]);\n\n // ensure the elemental modal classname is always present so tests can target it\n const modalClass = classnames(CLASSNAMEs.elemental.modal, rest.className);\n\n return (\n <Modal\n open={open}\n onClose={onClose}\n className={modalClass}\n {...rest}\n sx={{\n zIndex: COMPONENTs.modal.zIndex,\n padding: \"1%\",\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n background: 'transparent',\n\n // backdropFilter: 'blur(5px)', // causing performance issues when blurring large areas\n }}\n\n >\n <Box\n style={{\n \"--w\": effectiveSize.width,\n \"--h\": effectiveSize.height,\n \"--max-h\": maxHeight,\n \"--max-w\": maxWidth,\n ...(slotProps?.header?.style?.headerImg\n ? { '--headerImg': slotProps.header.style.headerImg }\n : {}),\n ...(slotProps?.container?.style?.bgColor\n ? { '--bgC': slotProps.container.style.bgColor }\n : {}),\n ...(slotProps?.container?.style?.shadow\n ? { '--shadow': slotProps.container.style.shadow }\n : {}),\n } as React.CSSProperties}\n sx={mergeSx(muiModalRootSx, {\n display: \"flex\",\n justifyContent: \"center\",\n height: {xs: 'calc(100vh - 2%)', md: 'var(--h)'},\n width: {xs: 'calc(100vw - 2%)', md: 'var(--w)'},\n borderRadius: MUI_MODAL_PAPER_RADIUS,\n })}>\n <MuiPaper sx={mergeSx(muiModalPaperSx, slotProps?.container?.sx)}>\n <BackgroundContainer overridePatternUrl={slotProps?.header?.style?.headerImg}>\n <MuiModalHeader\n title={title}\n titleIcon={titleIcon}\n closeButton={renderCloseButton}\n />\n\n <Box sx={{\n padding: \"16px\",\n paddingTop: \"8px\",\n flexGrow: 1,\n height: '-webkit-fill-available',\n overflow: 'hidden',\n display: 'flex',\n flexDirection: 'column',\n }}>\n {children}\n </Box>\n </BackgroundContainer>\n </MuiPaper>\n </Box>\n </Modal>\n )\n}\n\n/**\n * Background container for the modal\n * it places a background image and a gradient overlay\n */\nfunction BackgroundContainer({ children, overridePatternUrl }: {\n children?: React.ReactNode;\n overridePatternUrl?: string;\n}) {\n const isDefaultPattern = !overridePatternUrl;\n\n return (\n <Box\n sx={{\n display: 'flex',\n flexDirection: 'column',\n overflow: 'hidden',\n flexGrow: 1,\n borderRadius: MUI_MODAL_PAPER_RADIUS,\n position: 'relative',\n }}>\n <Box \n sx={{\n position: 'absolute',\n inset: 0,\n pointerEvents: 'none',\n \n ...(isDefaultPattern\n ? getDoodlePatternModalBackgroundSx()\n : {\n backgroundImage: 'var(--headerImg)',\n backgroundSize: '27px',\n }),\n opacity: 0.2,\n }} \n />\n <Box sx={{\n display: 'flex',\n flexDirection: 'column',\n overflow: 'hidden',\n flexGrow: 1,\n borderRadius: MUI_MODAL_PAPER_RADIUS,\n position: 'relative',\n zIndex: 1,\n\n // Circular gradient overlay\n background: 'var(--modalOverlayBg)',\n }}>\n {children}\n </Box>\n </Box>\n )\n}\n\nfunction MuiModalHeader({\n title = '',\n titleIcon = null,\n closeButton = null,\n}: {\n title?: string;\n titleIcon?: React.ReactNode;\n closeButton?: React.ReactNode;\n}) {\n return (\n <Box sx={{\n display: 'flex',\n justifyContent: 'center',\n position: 'relative',\n }}>\n <Box\n sx={{\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n paddingTop: 1,\n gap: 1,\n maxWidth: '50%',\n }}\n >\n <MuiHeader\n sx={{\n textOverflow: 'ellipsis',\n overflow: 'hidden',\n whiteSpace: 'pre',\n }}\n >\n {title}\n </MuiHeader>\n {titleIcon && (\n <MuiHeader sx={{ display: 'flex', flexShrink: 0, }}>\n <Tooltip title=\"Icon\" arrow>\n <span>{titleIcon}</span>\n </Tooltip>\n </MuiHeader>\n )}\n </Box>\n\n {closeButton && (\n <Box sx={{ position: 'absolute', right: '8px', top: '4px' }}>{closeButton}</Box>\n )}\n </Box>\n\n );\n};\n\n","export const COMPONENTs = {\n modal:{\n zIndex: 1300,\n }\n}\n","import type { SxProps, Theme } from '@mui/material/styles'\nimport { doodlePatternCssVars } from '@/patterns/doodlePatternStyles'\n\nexport const MUI_MODAL_PAPER_RADIUS = '20px'\n\nexport const muiModalRootSx: SxProps<Theme> = {\n ...doodlePatternCssVars,\n '--closeIconColor': 'var(--mui-palette-error-main)',\n '--bgC': 'var(--mui-palette-background-default)',\n '--shadow': 'var(--shadow-outset-1)',\n '--modalOverlayBg': 'radial-gradient(ellipse 120% 100% at 50% 50%, var(--bgC) 0%, transparent 70%)',\n}\n\n/** Internal paper chrome. Pass as the first `sx` array item so host `slotProps.container.sx` merges instead of replacing `&.MuiPaper-root`. */\nexport const muiModalPaperSx: SxProps<Theme> = {\n '&.MuiPaper-root': {\n boxShadow: 'var(--shadow)',\n backgroundColor: 'var(--bgC)',\n borderRadius: MUI_MODAL_PAPER_RADIUS,\n display: 'flex',\n flexDirection: 'column',\n maxHeight: 'var(--max-h)',\n maxWidth: 'var(--max-w)',\n padding: 0,\n paddingTop: 0,\n width: '-webkit-fill-available',\n height: '-webkit-fill-available',\n },\n}\n"],"mappings":"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","names":["default","default","classnames"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/compound/UseForm/src/_utils/constants.ts","../src/components/compound/UseForm/src/_utils/helpers.ts","../src/components/compound/UseForm/src/Fields/Explanation.tsx"],"sourcesContent":["export const FIELD_TYPEs = {\n text: 'text-field',\n select: 'select-field',\n slider: 'slider-field',\n check: 'check-field',\n date: 'date-field',\n dateTime: 'date-time-field',\n toggleButton: 'toggle-button',\n autocomplete: 'autocomplete-field',\n switch: 'switch-field',\n number: 'number-field',\n tel: 'tel-field',\n json: 'json-field',\n custom: 'custom-field',\n textArray: 'text-array-field',\n fileUpload: 'file-upload-field',\n avatar: 'avatar-field',\n} as const\n","import type { SxProps, Theme } from '@mui/material/styles';\nimport { mergeSx } from '@/_utils/_func';\nimport type { Explanation, FieldConfig, FormTypeMap, InferFormDataType, RowConfig, StrictFormConfig } from './types';\nimport { FIELD_TYPEs } from './constants';\n\n/** Field `size` + host `sx`, flattened so array `sx` does not nest. */\nexport function mergeFieldSx(\n size?: { width?: number | string; height?: number | string },\n sx?: SxProps<Theme> | Record<string, unknown>,\n) {\n return mergeSx(\n size?.width != null ? { width: size.width } : undefined,\n size?.height != null ? { height: size.height } : undefined,\n sx,\n )\n}\n\nexport function collectRows<T extends FormTypeMap>(config: StrictFormConfig<T>): RowConfig<T>[] {\n const rows: RowConfig<T>[] = [];\n if ('schema' in config && config.schema) {\n rows.push(...config.schema as RowConfig<T>[]);\n }\n if ('steps' in config && config.steps) {\n config.steps.forEach((step) => rows.push(...step.schema as RowConfig<T>[]));\n }\n return rows;\n}\n\nexport function collectFields<T extends FormTypeMap>(config: StrictFormConfig<T>): FieldConfig<T>[] {\n return collectRows(config).flatMap((row) => row.fields);\n}\n\n/** Identity of registered fields (name/type/default). Used to avoid re-registering on config object identity changes. */\nexport function getFormFieldsSignature<T extends FormTypeMap>(config: StrictFormConfig<T>): string {\n return JSON.stringify(\n collectFields(config).map((field) => [field.name, field.type, field.defaultValue]),\n );\n}\n\nexport function getFieldExplanation(\n field: { explanation?: Explanation; explaination?: Explanation },\n): Explanation | undefined {\n return field.explanation ?? field.explaination;\n}\n\nexport function isEmptyFormValue(value: unknown): boolean {\n if (value === undefined || value === null) return true;\n if (typeof value === 'string' && value.trim() === '') return true;\n if (Array.isArray(value) && value.length === 0) return true;\n return false;\n}\n\nexport function validateFormSchema<T extends FormTypeMap>(config: StrictFormConfig<T>): StrictFormConfig<T> {\n const allowedTypes = new Set<string>(Object.values(FIELD_TYPEs));\n\n collectRows(config).forEach((row) => {\n row.fields.forEach((field) => {\n if (!allowedTypes.has(field.type as string)) {\n throw new Error(`Invalid field type \"${String(field.type)}\" in form schema`);\n }\n });\n });\n\n return config;\n}\n\nexport const getDefaultValues = <T extends FormTypeMap>(config: StrictFormConfig<T>, allEmpty: boolean): InferFormDataType<T> => {\n // when `allEmpty` is true we intentionally ignore any explicit\n // `defaultValues` supplied by the config; callers (such as the clear\n // helper) rely on receiving truly empty defaults for every field type.\n if (!allEmpty && config.defaultValues) return config.defaultValues;\n\n const defaults: Record<string, unknown> = {};\n\n collectRows(config).forEach((row) => {\n row.fields.forEach((field) => {\n const fieldName = field.name as string;\n if (field.defaultValue !== undefined && !allEmpty) {\n defaults[fieldName] = field.defaultValue;\n } else {\n const slotProps = (field as { slotProps?: { multiple?: boolean; min?: number } }).slotProps ?? {};\n switch (field.type) {\n case FIELD_TYPEs.text:\n defaults[fieldName] = '';\n break;\n case FIELD_TYPEs.select:\n defaults[fieldName] = slotProps?.multiple ? [] : '';\n break;\n case FIELD_TYPEs.check:\n defaults[fieldName] = [];\n break;\n case FIELD_TYPEs.slider: {\n const min = slotProps?.min ?? 0;\n defaults[fieldName] = min;\n break;\n }\n case FIELD_TYPEs.date:\n case FIELD_TYPEs.dateTime:\n defaults[fieldName] = '';\n break;\n case FIELD_TYPEs.toggleButton:\n defaults[fieldName] = '';\n break;\n case FIELD_TYPEs.autocomplete:\n defaults[fieldName] = slotProps?.multiple ? [] : '';\n break;\n case FIELD_TYPEs.switch:\n defaults[fieldName] = false;\n break;\n case FIELD_TYPEs.number: {\n const min = slotProps?.min ?? 0;\n defaults[fieldName] = min;\n break;\n }\n case FIELD_TYPEs.tel:\n defaults[fieldName] = '';\n break;\n case FIELD_TYPEs.json:\n defaults[fieldName] = null;\n break;\n case FIELD_TYPEs.textArray:\n defaults[fieldName] = [];\n break;\n case FIELD_TYPEs.fileUpload:\n defaults[fieldName] = [];\n break;\n case FIELD_TYPEs.custom:\n defaults[fieldName] = undefined;\n break;\n case FIELD_TYPEs.avatar:\n defaults[fieldName] = null;\n break;\n default:\n defaults[fieldName] = undefined;\n }\n }\n });\n });\n\n return defaults as InferFormDataType<T>;\n};\n","'use client'\nimport React, { useState, useRef } from 'react'\nimport { ClickAwayListener } from '@/ele/Overlay'\nimport { styled } from '@mui/material/styles'\nimport { Tooltip } from '@/ele/Tooltip'\nimport { IconButton } from '@/ele/Button'\nimport { Box as MuiBox } from '@/ele/Box'\nimport { HelpOutlineIcon } from '@/icons/MuiIcon'\nimport type { Explanation } from '../_utils';\n\n/** MUI outlined `size=\"small\"` control height — keep the help icon on the input, not the helper text. */\nexport const FIELD_INPUT_CONTROL_HEIGHT_PX = 40\n\nconst FieldExplanation: React.FC<{\n label?: React.ReactNode;\n explanation?: Explanation;\n /** @deprecated Use explanation */\n explaination?: Explanation;\n /**\n * When the icon sits beside an outlined input, pin it to the control height\n * so helper/error text below the field does not pull it down.\n */\n alignToInput?: boolean;\n}> = ({label, explanation, explaination, alignToInput}) => {\n const popRef = useRef(null)\n const [open, setOpen] = useState(false)\n const content = explanation ?? explaination\n\n if (!content) return <>{label}</>\n\n const icon = (\n <MuiBox component=\"span\" sx={{ display: 'flex', alignItems: 'center', gap: 0.5, lineHeight: 1 }}>\n {label}\n <ClickAwayListener onClickAway={(e) => {\n if(popRef.current && e.target && isChildOf(popRef.current, e.target as HTMLElement)) return\n setOpen(false)\n }}>\n <Tooltip title={<Title explanation={content}/>} arrow open={open} \n slotProps={{\n popper:{ref:popRef}\n }}>\n <StyledIconButton onClick={(e)=>{ e.stopPropagation(); setOpen(true) }} tabIndex={-1}>\n <HelpOutlineIcon sx={{fontSize:\"14px\"}}/>\n </StyledIconButton>\n </Tooltip>\n </ClickAwayListener>\n </MuiBox>\n )\n\n if (!alignToInput) return icon\n\n return (\n <MuiBox\n data-field-explanation=\"input\"\n style={{ height: FIELD_INPUT_CONTROL_HEIGHT_PX }}\n sx={{\n display: 'flex',\n alignItems: 'center',\n flexShrink: 0,\n }}\n >\n {icon}\n </MuiBox>\n )\n}\nexport default FieldExplanation\n\nconst Title:React.FC<{\n explanation: Explanation;\n}> = ({explanation}) => {\n const {highlights,href,content=\"\"} = explanation ?? {}\n const reg = new RegExp(`(${highlights?.join(\"|\")})`, \"g\")\n const highlightedContent = content\n .split(reg)\n .map((part, index) => {\n if (highlights?.includes(part)) {\n return <MuiBox component=\"span\" key={index} sx={{\n color:\"var(--useform-warning)\",\n fontSize:\"1.2em\",\n fontWeight:\"bold\",\n }}>{part}</MuiBox>\n }\n return part\n }\n )\n\n\n return (\n <MuiBox>\n <MuiBox sx={{ fontWeight: 'bold', mb: 0.5 }}>{explanation?.title}</MuiBox>\n <MuiBox sx={{\n lineBreak:\"auto\",\n whiteSpace:\"pre-line\",\n }}>{highlightedContent}</MuiBox>\n {href?.label && \n <MuiBox component=\"a\" \n sx={{\n textDecoration:\"underline\",\n display:\"flex\",\n justifyContent:\"flex-end\",\n mt: 1\n }} \n href={href?.url} target=\"_blank\">\n {href?.label}\n </MuiBox>}\n </MuiBox>\n )\n}\n\nconst StyledIconButton = styled(IconButton)({\n \"&.MuiButtonBase-root.MuiIconButton-root\":{\n color:\"var(--useform-warning)\",\n border: \"none\",\n borderRadius: \"50%\",\n padding:\"2px\",\n marginLeft: \"4px\",\n background: \"transparent\",\n },\n \n})\n\nfunction isChildOf(parent:HTMLElement, child:HTMLElement):boolean {\n let node:HTMLElement|null = child\n while(node !== null){\n if(node === parent) return true\n node = node.parentElement as HTMLElement | null\n }\n return false\n}\n"],"mappings":"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","names":["default"]}
@@ -1,161 +0,0 @@
1
- import {
2
- DisplayFile_default,
3
- PreviewableFile,
4
- displayFileSize
5
- } from "./chunk-AAH2O24U.mjs";
6
- import {
7
- Button
8
- } from "./chunk-JIU5GVM7.mjs";
9
- import {
10
- default89 as default5,
11
- default90 as default6
12
- } from "./chunk-ZVFYOXDE.mjs";
13
- import {
14
- default as default4
15
- } from "./chunk-4RPFRNXG.mjs";
16
- import {
17
- default as default2,
18
- default2 as default3,
19
- mergeSx
20
- } from "./chunk-S6EZVRZC.mjs";
21
-
22
- // src/components/compound/FileUploader/src/ReactDropzone.tsx
23
- import { useCallback, useEffect, useRef } from "react";
24
- import { useDropzone } from "react-dropzone";
25
-
26
- // src/components/compound/FileUploader/src/theme.ts
27
- var fileUploaderRootSx = {
28
- "--dropzone-bg": "var(--mui-palette-background-paper)",
29
- "--dropzone-text-color": "var(--mui-palette-text-secondary)",
30
- "--dropzone-border-hover": "var(--mui-palette-primary-main)",
31
- "--dropzone-bg-hover": "var(--mui-palette-action-hover)"
32
- };
33
-
34
- // src/components/compound/FileUploader/src/DropZoneBox.tsx
35
- import { jsx, jsxs } from "react/jsx-runtime";
36
- var DropZoneBox = ({ getRootProps, getInputProps, error }) => {
37
- return /* @__PURE__ */ jsxs(
38
- default2,
39
- {
40
- ...getRootProps(),
41
- sx: {
42
- flex: 1,
43
- display: "flex",
44
- flexDirection: "column",
45
- alignItems: "center",
46
- p: 3,
47
- border: "2px dashed",
48
- borderColor: error ? "error.main" : "divider",
49
- borderRadius: 1,
50
- backgroundColor: "var(--dropzone-bg)",
51
- outline: "none",
52
- transition: "border .24s ease-in-out",
53
- color: "var(--dropzone-text-color)",
54
- cursor: "pointer",
55
- "&:hover": {
56
- borderColor: "var(--dropzone-border-hover)",
57
- backgroundColor: "var(--dropzone-bg-hover)"
58
- }
59
- },
60
- children: [
61
- /* @__PURE__ */ jsx("input", { ...getInputProps() }),
62
- /* @__PURE__ */ jsx(default5, { sx: { fontSize: "2.5rem", mb: 1 } }),
63
- /* @__PURE__ */ jsx(default4, { variant: "caption", align: "center", children: 'Drag "n" drop some files here, or click to select files' })
64
- ]
65
- }
66
- );
67
- };
68
- var DropZoneBox_default = DropZoneBox;
69
-
70
- // src/components/compound/FileUploader/src/DropZoneButton.tsx
71
- import { jsx as jsx2, jsxs as jsxs2 } from "react/jsx-runtime";
72
- var DropZoneButton = ({
73
- getRootProps,
74
- getInputProps,
75
- label = "Upload file",
76
- error = false
77
- }) => {
78
- return /* @__PURE__ */ jsxs2(
79
- Button,
80
- {
81
- variant: "outlined",
82
- startIcon: /* @__PURE__ */ jsx2(default6, {}),
83
- color: error ? "error" : "primary",
84
- ...getRootProps(),
85
- children: [
86
- label,
87
- /* @__PURE__ */ jsx2("input", { ...getInputProps() })
88
- ]
89
- }
90
- );
91
- };
92
- var DropZoneButton_default = DropZoneButton;
93
-
94
- // src/components/compound/FileUploader/src/ReactDropzone.tsx
95
- import { jsx as jsx3, jsxs as jsxs3 } from "react/jsx-runtime";
96
- var ReactDropzone = ({
97
- filesProps,
98
- accept,
99
- maxFiles = 0,
100
- // 0 means unlimited
101
- error = false,
102
- dropzoneType = "box",
103
- label = "Upload File"
104
- }) => {
105
- const [files, setFiles] = filesProps;
106
- const blobRegistryRef = useRef(/* @__PURE__ */ new Set());
107
- const onDrop = useCallback((acceptedFiles) => {
108
- const newFiles = acceptedFiles.map((file) => {
109
- const blobUrl = URL.createObjectURL(file);
110
- blobRegistryRef.current.add(blobUrl);
111
- return new PreviewableFile({
112
- path: file.path,
113
- blobUrl,
114
- filename: file.name,
115
- mimeType: file.type,
116
- size: file.size,
117
- displaySize: displayFileSize(file.size),
118
- fileType: file.type.startsWith("image/") ? "image" : file.type.startsWith("application/json") ? "json" : "other"
119
- });
120
- });
121
- setFiles((prev) => [...prev, ...newFiles]);
122
- }, [setFiles]);
123
- const isLimitReached = maxFiles > 0 && files.length >= maxFiles;
124
- const { getRootProps, getInputProps } = useDropzone({
125
- onDrop,
126
- accept,
127
- maxFiles: maxFiles > 0 ? maxFiles - files.length : void 0,
128
- disabled: isLimitReached
129
- });
130
- const handleDelete = (fileToDelete) => {
131
- setFiles((prev) => prev.filter((f) => f !== fileToDelete));
132
- if (fileToDelete.blobUrl) {
133
- URL.revokeObjectURL(fileToDelete.blobUrl);
134
- blobRegistryRef.current.delete(fileToDelete.blobUrl);
135
- }
136
- };
137
- useEffect(() => {
138
- const blobRegistry = blobRegistryRef.current;
139
- return () => {
140
- blobRegistry.forEach((url) => URL.revokeObjectURL(url));
141
- blobRegistry.clear();
142
- };
143
- }, []);
144
- return /* @__PURE__ */ jsxs3(default2, { sx: mergeSx({ maxWidth: "100%" }, fileUploaderRootSx), children: [
145
- !isLimitReached && /* @__PURE__ */ jsx3(default2, { component: "section", children: dropzoneType === "box" ? /* @__PURE__ */ jsx3(DropZoneBox_default, { getRootProps, getInputProps, error }) : /* @__PURE__ */ jsx3(DropZoneButton_default, { getRootProps, getInputProps, label, error }) }),
146
- files.length > 0 && /* @__PURE__ */ jsx3(default3, { spacing: 1, sx: { mt: 0 }, children: files.map((file) => /* @__PURE__ */ jsx3(
147
- DisplayFile_default,
148
- {
149
- file,
150
- onDelete: handleDelete
151
- },
152
- file.blobUrl || file.filename || file.path
153
- )) })
154
- ] });
155
- };
156
- var ReactDropzone_default = ReactDropzone;
157
-
158
- export {
159
- ReactDropzone_default
160
- };
161
- //# sourceMappingURL=chunk-XIMFP6RB.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/compound/FileUploader/src/ReactDropzone.tsx","../src/components/compound/FileUploader/src/theme.ts","../src/components/compound/FileUploader/src/DropZoneBox.tsx","../src/components/compound/FileUploader/src/DropZoneButton.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useRef } from 'react';\nimport { useDropzone, FileWithPath, DropzoneOptions } from 'react-dropzone';\nimport { Box, Stack } from '@/ele/Box';\nimport { fileUploaderRootSx } from './theme';\nimport { mergeSx } from '@/_utils/_func';\nimport PreviewableFile, { displayFileSize } from '@/_utils/classes/PreviewableFile';\nimport DisplayFile from '@/compound/DisplayFile';\nimport DropZoneBox from './DropZoneBox';\nimport DropZoneButton from './DropZoneButton';\n\nexport type DropzoneType = \"box\" | \"button\";\n\nexport interface ReactDropzoneProps {\n filesProps: [PreviewableFile[], React.Dispatch<React.SetStateAction<PreviewableFile[]>>];\n accept?: DropzoneOptions['accept'];\n maxFiles?: number;\n error?: boolean;\n dropzoneType?: DropzoneType;\n label?: string;\n}\n\nconst ReactDropzone: React.FC<ReactDropzoneProps> = ({\n filesProps,\n accept,\n maxFiles = 0, // 0 means unlimited\n error = false,\n dropzoneType = 'box',\n label = 'Upload File'\n}) => {\n const [files, setFiles] = filesProps;\n\n // Track all active blob URLs so the unmount cleanup can revoke them\n // even if the user never called handleDelete.\n const blobRegistryRef = useRef<Set<string>>(new Set());\n\n const onDrop = useCallback((acceptedFiles: FileWithPath[]) => {\n const newFiles = acceptedFiles.map(file => {\n const blobUrl = URL.createObjectURL(file);\n blobRegistryRef.current.add(blobUrl);\n return new PreviewableFile({\n path: file.path,\n blobUrl,\n filename: file.name,\n mimeType: file.type,\n size: file.size,\n displaySize: displayFileSize(file.size),\n fileType: file.type.startsWith('image/') ? 'image'\n : file.type.startsWith('application/json') ? 'json' : 'other'\n });\n });\n\n setFiles(prev => [...prev, ...newFiles]);\n }, [setFiles]);\n\n // hide dropzone UI when reached limit (already handled) — add explicit guard in render\n const isLimitReached = maxFiles > 0 && files.length >= maxFiles;\n\n const { getRootProps, getInputProps } = useDropzone({\n onDrop,\n accept,\n maxFiles: maxFiles > 0 ? (maxFiles - files.length) : undefined,\n disabled: isLimitReached,\n });\n\n const handleDelete = (fileToDelete: PreviewableFile) => {\n setFiles(prev => prev.filter(f => f !== fileToDelete));\n if (fileToDelete.blobUrl) {\n URL.revokeObjectURL(fileToDelete.blobUrl);\n blobRegistryRef.current.delete(fileToDelete.blobUrl);\n }\n };\n\n useEffect(() => {\n const blobRegistry = blobRegistryRef.current;\n return () => {\n blobRegistry.forEach(url => URL.revokeObjectURL(url));\n blobRegistry.clear();\n };\n }, []); // Cleanup remaining blob URLs on unmount\n\n return (\n <Box sx={mergeSx({ maxWidth: '100%' }, fileUploaderRootSx)}>\n {!isLimitReached && (\n <Box component=\"section\">\n {dropzoneType === 'box' ? (\n <DropZoneBox getRootProps={getRootProps} getInputProps={getInputProps} error={error}/>\n ) : (\n <DropZoneButton getRootProps={getRootProps} getInputProps={getInputProps} label={label} error={error}/>\n )}\n </Box>\n )}\n\n {files.length > 0 && (\n <Stack spacing={1} sx={{ mt: 0 }}>\n {files.map((file) => (\n <DisplayFile \n key={file.blobUrl || file.filename || file.path} \n file={file} \n onDelete={handleDelete}\n />\n ))}\n </Stack>\n )}\n </Box>\n );\n};\n\nexport default ReactDropzone;\n","import type { SxProps, Theme } from '@mui/material/styles';\n\n/**\n * Root-level CSS variable aliases for the FileUploader compound component.\n * Declared once on the root element — child components consume via `var(--*)`.\n */\nexport const fileUploaderRootSx: SxProps<Theme> = {\n '--dropzone-bg': 'var(--mui-palette-background-paper)',\n '--dropzone-text-color': 'var(--mui-palette-text-secondary)',\n '--dropzone-border-hover': 'var(--mui-palette-primary-main)',\n '--dropzone-bg-hover': 'var(--mui-palette-action-hover)',\n};\n","import React from 'react';\nimport { DropzoneState } from 'react-dropzone';\nimport { Box } from '@/ele/Box';\nimport { Typography } from '@/ele/Typography';\nimport { NoteAddIcon } from '@/icons/MuiIcon';\n\nconst DropZoneBox: React.FC<{\n getRootProps: DropzoneState[\"getRootProps\"];\n getInputProps: DropzoneState[\"getInputProps\"];\n error?: boolean;\n}> = ({ getRootProps, getInputProps, error }) => {\n return (\n <Box \n {...getRootProps()} \n sx={{\n flex: 1,\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n p: 3,\n border: \"2px dashed\",\n borderColor: error ? 'error.main' : 'divider',\n borderRadius: 1,\n backgroundColor: 'var(--dropzone-bg)',\n outline: \"none\",\n transition: \"border .24s ease-in-out\",\n color: 'var(--dropzone-text-color)',\n cursor: 'pointer',\n '&:hover': {\n borderColor: 'var(--dropzone-border-hover)',\n backgroundColor: 'var(--dropzone-bg-hover)'\n }\n }}\n >\n <input {...getInputProps()} />\n \n <NoteAddIcon sx={{ fontSize: \"2.5rem\", mb: 1 }} />\n <Typography variant=\"caption\" align=\"center\">\n Drag &quot;n&quot; drop some files here, or click to select files\n </Typography>\n </Box>\n )\n}\n\nexport default DropZoneBox;\n","import React from 'react';\nimport { DropzoneState } from 'react-dropzone';\nimport { CloudUploadIcon } from '@/icons/MuiIcon';\nimport { Button } from '@/ele/Button'; \n\nconst DropZoneButton: React.FC<{\n getRootProps: DropzoneState[\"getRootProps\"];\n getInputProps: DropzoneState[\"getInputProps\"];\n label?: string;\n error?: boolean;\n}> = ({\n getRootProps, getInputProps, \n label=\"Upload file\",\n error=false\n}) => {\n return (\n <Button \n variant=\"outlined\"\n startIcon={<CloudUploadIcon/>} \n color={error ? \"error\" : \"primary\"}\n {...getRootProps()}\n >\n {label}\n <input {...getInputProps()}/>\n </Button>\n )\n}\n\nexport default DropZoneButton;\n"],"mappings":"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","names":["default","jsx","jsxs","default","jsx","jsxs","default"]}
@@ -1,95 +0,0 @@
1
- import * as _mui_material_OverridableComponent from '@mui/material/OverridableComponent';
2
- import * as _mui_material_SvgIcon from '@mui/material/SvgIcon';
3
- import React from 'react';
4
-
5
- type ValueOf<T> = T[keyof T];
6
-
7
- declare const FILE_STATUSs: {
8
- readonly uploadingToLocal: "local-uploading";
9
- readonly uploadedToLocal: "local-uploaded";
10
- readonly localError: "local-error";
11
- readonly pending: "pending";
12
- readonly uploadPending: "upload-pending";
13
- readonly gettingSignedURL: "upload-gettingSignedURL";
14
- readonly beginUploadToS3: "upload-beginUploadToS3";
15
- readonly uploadedToCloud: "upload-uploadedToCloud";
16
- readonly error: "upload-error";
17
- readonly downloadPending: "download-pending";
18
- readonly downloading: "download-in-progress";
19
- readonly downloaded: "download-completed";
20
- readonly downloadError: "download-error";
21
- };
22
- type FileStatusType = ValueOf<typeof FILE_STATUSs>;
23
- type Attachment = {
24
- url: string;
25
- keyPath: string;
26
- filename: string;
27
- fileType: string;
28
- hostname: string;
29
- };
30
-
31
- interface PreviewableFileProps {
32
- path?: string;
33
- blobUrl?: string;
34
- filename?: string;
35
- randomName?: string;
36
- fileType?: string;
37
- mimeType?: Blob["type"];
38
- size?: number;
39
- displaySize?: string;
40
- url?: string;
41
- fetchOptions?: object;
42
- putUrl?: string;
43
- getUrl?: string;
44
- status?: FileStatusType;
45
- revokeable?: boolean;
46
- imageProps?: {
47
- width: number;
48
- height: number;
49
- };
50
- }
51
- declare class PreviewableFile {
52
- path: NonNullable<PreviewableFileProps["path"]>;
53
- blobUrl: NonNullable<PreviewableFileProps["blobUrl"]>;
54
- filename: NonNullable<PreviewableFileProps["filename"]>;
55
- randomName: NonNullable<PreviewableFileProps["randomName"]>;
56
- fileType: NonNullable<PreviewableFileProps["fileType"]>;
57
- mimeType: NonNullable<PreviewableFileProps["mimeType"]>;
58
- size: NonNullable<PreviewableFileProps["size"]>;
59
- displaySize: NonNullable<PreviewableFileProps["displaySize"]>;
60
- url: NonNullable<PreviewableFileProps["url"]>;
61
- fetchOptions: NonNullable<PreviewableFileProps["fetchOptions"]>;
62
- putUrl: NonNullable<PreviewableFileProps["putUrl"]>;
63
- getUrl: NonNullable<PreviewableFileProps["getUrl"]>;
64
- status: NonNullable<PreviewableFileProps["status"]>;
65
- revokeable: NonNullable<PreviewableFileProps["revokeable"]>;
66
- imageProps: NonNullable<PreviewableFileProps["imageProps"]>;
67
- constructor(props?: PreviewableFileProps);
68
- toPlainObj(): this;
69
- updateFile(file: PreviewableFile | undefined): void;
70
- updateStatus(status: FileStatusType): void;
71
- downloadFile(): Promise<this>;
72
- _displayFileSize(): string;
73
- getUploadFormat(): Attachment;
74
- }
75
-
76
- interface DisplayFileProps {
77
- file: PreviewableFile;
78
- onDelete?: (file: PreviewableFile) => void;
79
- mode?: 'thumbnail' | 'name';
80
- }
81
- declare const getFileIcon: (fileType: string) => _mui_material_OverridableComponent.OverridableComponent<_mui_material_SvgIcon.SvgIconTypeMap<{}, "svg">> & {
82
- muiName: string;
83
- };
84
- declare const FileThumbnail: React.FC<{
85
- file: PreviewableFile;
86
- size?: number;
87
- }>;
88
- declare const DisplayFile: React.FC<DisplayFileProps> & {
89
- DISPLAY_MODEs: {
90
- thumbnail: 'thumbnail';
91
- name: 'name';
92
- };
93
- };
94
-
95
- export { DisplayFile, type DisplayFileProps, FileThumbnail, DisplayFile as default, getFileIcon };
@@ -1,95 +0,0 @@
1
- import * as _mui_material_OverridableComponent from '@mui/material/OverridableComponent';
2
- import * as _mui_material_SvgIcon from '@mui/material/SvgIcon';
3
- import React from 'react';
4
-
5
- type ValueOf<T> = T[keyof T];
6
-
7
- declare const FILE_STATUSs: {
8
- readonly uploadingToLocal: "local-uploading";
9
- readonly uploadedToLocal: "local-uploaded";
10
- readonly localError: "local-error";
11
- readonly pending: "pending";
12
- readonly uploadPending: "upload-pending";
13
- readonly gettingSignedURL: "upload-gettingSignedURL";
14
- readonly beginUploadToS3: "upload-beginUploadToS3";
15
- readonly uploadedToCloud: "upload-uploadedToCloud";
16
- readonly error: "upload-error";
17
- readonly downloadPending: "download-pending";
18
- readonly downloading: "download-in-progress";
19
- readonly downloaded: "download-completed";
20
- readonly downloadError: "download-error";
21
- };
22
- type FileStatusType = ValueOf<typeof FILE_STATUSs>;
23
- type Attachment = {
24
- url: string;
25
- keyPath: string;
26
- filename: string;
27
- fileType: string;
28
- hostname: string;
29
- };
30
-
31
- interface PreviewableFileProps {
32
- path?: string;
33
- blobUrl?: string;
34
- filename?: string;
35
- randomName?: string;
36
- fileType?: string;
37
- mimeType?: Blob["type"];
38
- size?: number;
39
- displaySize?: string;
40
- url?: string;
41
- fetchOptions?: object;
42
- putUrl?: string;
43
- getUrl?: string;
44
- status?: FileStatusType;
45
- revokeable?: boolean;
46
- imageProps?: {
47
- width: number;
48
- height: number;
49
- };
50
- }
51
- declare class PreviewableFile {
52
- path: NonNullable<PreviewableFileProps["path"]>;
53
- blobUrl: NonNullable<PreviewableFileProps["blobUrl"]>;
54
- filename: NonNullable<PreviewableFileProps["filename"]>;
55
- randomName: NonNullable<PreviewableFileProps["randomName"]>;
56
- fileType: NonNullable<PreviewableFileProps["fileType"]>;
57
- mimeType: NonNullable<PreviewableFileProps["mimeType"]>;
58
- size: NonNullable<PreviewableFileProps["size"]>;
59
- displaySize: NonNullable<PreviewableFileProps["displaySize"]>;
60
- url: NonNullable<PreviewableFileProps["url"]>;
61
- fetchOptions: NonNullable<PreviewableFileProps["fetchOptions"]>;
62
- putUrl: NonNullable<PreviewableFileProps["putUrl"]>;
63
- getUrl: NonNullable<PreviewableFileProps["getUrl"]>;
64
- status: NonNullable<PreviewableFileProps["status"]>;
65
- revokeable: NonNullable<PreviewableFileProps["revokeable"]>;
66
- imageProps: NonNullable<PreviewableFileProps["imageProps"]>;
67
- constructor(props?: PreviewableFileProps);
68
- toPlainObj(): this;
69
- updateFile(file: PreviewableFile | undefined): void;
70
- updateStatus(status: FileStatusType): void;
71
- downloadFile(): Promise<this>;
72
- _displayFileSize(): string;
73
- getUploadFormat(): Attachment;
74
- }
75
-
76
- interface DisplayFileProps {
77
- file: PreviewableFile;
78
- onDelete?: (file: PreviewableFile) => void;
79
- mode?: 'thumbnail' | 'name';
80
- }
81
- declare const getFileIcon: (fileType: string) => _mui_material_OverridableComponent.OverridableComponent<_mui_material_SvgIcon.SvgIconTypeMap<{}, "svg">> & {
82
- muiName: string;
83
- };
84
- declare const FileThumbnail: React.FC<{
85
- file: PreviewableFile;
86
- size?: number;
87
- }>;
88
- declare const DisplayFile: React.FC<DisplayFileProps> & {
89
- DISPLAY_MODEs: {
90
- thumbnail: 'thumbnail';
91
- name: 'name';
92
- };
93
- };
94
-
95
- export { DisplayFile, type DisplayFileProps, FileThumbnail, DisplayFile as default, getFileIcon };
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/compound/DisplayFile/index.ts","../src/components/elemental/Box/src/index.ts","../src/components/elemental/Typography/src/Typography.ts","../src/components/elemental/Button/src/IconButton/IconButton.tsx","../src/components/elemental/Tooltip/src/Tooltip/index.ts","../src/components/Icons/MuiIcon/index.ts","../src/_utils/_const/file.ts","../src/components/compound/DisplayFile/src/DisplayFile.tsx"],"sourcesContent":["export * from './src';\nexport { default } from './src';\n","export * from './BorderBox'\nexport {default as Box} from '@mui/material/Box'\nexport {default as Stack} from '@mui/material/Stack'\nexport {default as Grid} from '@mui/material/Grid'\n","export { default } from '@mui/material/Typography'","'use client'\nimport {forwardRef} from 'react'\nimport MuiIconButton from '@mui/material/IconButton'\nimport { Tooltip } from '@/ele/Tooltip'\nimport { type TooltipProps } from '@mui/material/Tooltip'\nimport { Box } from '@/ele/Box'\n\ntype IconButtonProps = React.ComponentProps<typeof MuiIconButton>\ntype Props = {\n /** The Icon to render */\n children: React.ReactNode;\n /** The title of the tooltip */\n title?: string;\n /** \n * The color theme of the entire component.\n * @default 'secondary' (from theme)\n */\n color?: IconButtonProps['color'];\n /**\n * The size of the component.\n * @default 'small' (from theme)\n */\n size?: IconButtonProps['size'];\n \n selected?: boolean;\n \n slotProps?: {\n tooltip?: Omit<TooltipProps, \"children\">\n };\n} & Omit<IconButtonProps, \"color\" | \"size\">;\n\n/**\n * A MuiIconButton wrapped in a MuiTooltip.\n * Default props like `size` and `color` are handled by the theme.\n */\nconst IconButton = forwardRef<HTMLButtonElement, Props>(({\n title = \"\",\n children,\n color,\n size,\n slotProps,\n selected,\n className,\n ...props\n}, ref) => {\n return (\n <Tooltip \n title={title} \n slotProps={{\n popper: {\n sx: {\n textTransform: \"capitalize\",\n }\n },\n ...slotProps?.tooltip\n }}\n >\n <Box component=\"span\" sx={{width: \"fit-content\"}}>\n <MuiIconButton\n ref={ref}\n color={color}\n size={size}\n className={[className, selected ? 'Mui-selected' : ''].filter(Boolean).join(' ')}\n {...props}\n >\n {children}\n </MuiIconButton>\n </Box>\n </Tooltip>\n )\n})\n\nexport default IconButton","export {default as Tooltip} from '@mui/material/Tooltip'\nexport * from './theme'\n","// display\nexport {default as ArrowIcon} from '@mui/icons-material/ArrowRightAlt'\nexport {default as FileIcon} from '@mui/icons-material/DescriptionOutlined'\nexport {default as DescriptionIcon} from '@mui/icons-material/Description'\nexport {default as PictureAsPdfIcon} from '@mui/icons-material/PictureAsPdf'\nexport {default as AudioFileIcon} from '@mui/icons-material/AudioFile'\nexport {default as VideoFileIcon} from '@mui/icons-material/VideoFile'\nexport {default as TableChartIcon} from '@mui/icons-material/TableChart'\nexport {default as FolderZipIcon} from '@mui/icons-material/FolderZip'\nexport {default as InsertDriveFileIcon} from '@mui/icons-material/InsertDriveFile'\nexport {default as ImageIcon} from '@mui/icons-material/ImageOutlined'\nexport {default as LayersIcon} from '@mui/icons-material/LayersOutlined'\nexport {default as TextIcon} from '@mui/icons-material/TextFormat'\nexport {default as RemoveIcon} from '@mui/icons-material/Remove'\nexport {default as AddFileIcon} from '@mui/icons-material/PostAdd'\nexport {default as ErrorIcon} from '@mui/icons-material/ErrorOutline'\nexport {default as QuestionIcon} from '@mui/icons-material/QuestionMarkOutlined'\nexport {default as RoomIcon} from '@mui/icons-material/MeetingRoomOutlined'\nexport {default as BlacklistIcon} from '@mui/icons-material/PlaylistRemove'\nexport {default as WhitelistIcon} from '@mui/icons-material/ChecklistRtl'\nexport {default as NoImageIcon} from '@mui/icons-material/HideImageOutlined'\nexport {default as EyeIcon} from '@mui/icons-material/RemoveRedEyeTwoTone'\nexport {default as CropSizeIcon} from '@mui/icons-material/PhotoSizeSelectLarge'\nexport {default as AdminIcon} from '@mui/icons-material/LockPersonOutlined'\nexport {default as UserIcon} from '@mui/icons-material/Person'\nexport {default as EmoticonIcon} from '@mui/icons-material/InsertEmoticon'\nexport {default as DisabledSelectionIcon} from '@mui/icons-material/RemoveDoneOutlined'\nexport {default as TagIcon} from '@mui/icons-material/Tag'\nexport {default as AudioIcon} from '@mui/icons-material/Audiotrack'\nexport {default as VideoIcon} from '@mui/icons-material/Videocam'\nexport {default as CodeIcon} from '@mui/icons-material/Code'\nexport {default as ChartIcon} from '@mui/icons-material/Equalizer'\nexport {default as TableIcon} from '@mui/icons-material/PivotTableChart'\nexport {default as SearchIcon} from '@mui/icons-material/Search'\nexport {default as DataObjectIcon} from '@mui/icons-material/DataObject'\nexport {default as A2ZIcon} from '@mui/icons-material/SortByAlpha'\nexport {default as ThumbUpIcon} from '@mui/icons-material/ThumbUp'\nexport {default as MoneyIcon} from '@mui/icons-material/AttachMoneyOutlined'\nexport {default as ServerIcon} from '@mui/icons-material/Storage'\nexport {default as CerticateIcon} from '@mui/icons-material/WorkspacePremium'\nexport {default as NumberIcon} from '@mui/icons-material/Numbers'\nexport {default as SumIcon} from '@mui/icons-material/Functions'\nexport {default as LightBulbIcon} from '@mui/icons-material/Lightbulb'\nexport {default as RotateIcon} from '@mui/icons-material/CropRotate'\nexport {default as ImageSzieScaleIcon} from '@mui/icons-material/PhotoSizeSelectLarge'\nexport {default as CollectionIcon} from '@mui/icons-material/CollectionsBookmark'\nexport {default as HistoryIcon} from '@mui/icons-material/Schedule'\nexport {default as StyleIcon} from '@mui/icons-material/Style'\nexport {default as ARHorizontalIcon} from '@mui/icons-material/Crop169'\nexport {default as ARSquareIcon} from '@mui/icons-material/CropSquare'\nexport {default as VoiceIcon} from '@mui/icons-material/GraphicEqRounded'\nexport {default as MemoryIcon} from '@mui/icons-material/MemoryRounded'\n\n// button\nexport {default as AddCircleIcon} from '@mui/icons-material/AddCircleOutlineRounded'\nexport {default as AddIcon} from '@mui/icons-material/Add'\nexport {default as CloseIcon} from '@mui/icons-material/Close'\nexport {default as ExpandMoreIcon} from '@mui/icons-material/ExpandMore'\nexport {default as AutorenewIcon} from '@mui/icons-material/Autorenew'\nexport {default as CheckCircleIcon} from '@mui/icons-material/CheckCircle'\nexport {default as MenuIcon} from '@mui/icons-material/Menu'\nexport {default as MoreIcon} from '@mui/icons-material/MoreVert'\nexport {default as MoreHorizIcon} from '@mui/icons-material/MoreHoriz'\nexport {default as CopyIcon} from '@mui/icons-material/ContentCopy'\nexport {default as PasteIcon} from '@mui/icons-material/ContentPaste'\nexport {default as CloudIcon} from '@mui/icons-material/Cloud'\nexport {default as DownloadIcon} from '@mui/icons-material/DownloadOutlined'\nexport {default as DownloadDoneIcon} from '@mui/icons-material/DownloadDoneOutlined'\nexport {default as StartIcon} from '@mui/icons-material/StarBorderOutlined'\nexport {default as DeleteIcon} from '@mui/icons-material/DeleteForever'\nexport {default as LayerClearIcon } from '@mui/icons-material/LayersClear'\nexport {default as CheckIcon } from '@mui/icons-material/Check'\nexport {default as CheckAllIcon } from '@mui/icons-material/DoneAll'\nexport {default as PowerIcon } from '@mui/icons-material/PowerSettingsNew'\nexport {default as SendIcon } from '@mui/icons-material/Send'\nexport {default as ZoomInIcon } from '@mui/icons-material/ZoomInMap'\nexport {default as ZoomOutIcon } from '@mui/icons-material/ZoomOutMap'\nexport {default as ToolIcon } from '@mui/icons-material/HomeRepairService'\nexport {default as ConstructionIcon } from '@mui/icons-material/Construction'\nexport {default as HelpIcon } from '@mui/icons-material/Help'\nexport {default as ReportIcon } from '@mui/icons-material/EmojiFlags'\nexport {default as EditIcon } from '@mui/icons-material/Edit'\nexport {default as ForkIcon } from '@mui/icons-material/ForkRight'\nexport {default as SettingIcon } from '@mui/icons-material/Settings'\nexport {default as RestoreIcon } from '@mui/icons-material/Restore'\nexport {default as EditListIcon } from '@mui/icons-material/EditNote'\nexport {default as HomeIcon } from '@mui/icons-material/HomeOutlined'\nexport {default as EnterRoomIcon } from '@mui/icons-material/ExitToAppOutlined'\nexport {default as SunIcon} from '@mui/icons-material/WbSunnyOutlined'\nexport {default as MoonIcon} from '@mui/icons-material/DarkModeOutlined'\nexport {default as AttachFileIcon} from '@mui/icons-material/AttachFileOutlined'\nexport {default as NoteAddIcon} from '@mui/icons-material/NoteAdd'\nexport {default as CloudUploadIcon} from '@mui/icons-material/CloudUpload'\nexport {default as DoubleRightArrowIcon} from '@mui/icons-material/KeyboardDoubleArrowRight'\nexport {default as DoubleLeftArrowIcon} from '@mui/icons-material/KeyboardDoubleArrowLeft'\nexport {default as DoubleArrowIcon} from '@mui/icons-material/KeyboardDoubleArrowRightRounded'\nexport {default as FitScreenIcon} from '@mui/icons-material/FitScreen'\nexport {default as FullscreenIcon} from '@mui/icons-material/Fullscreen'\nexport {default as TestIcon} from '@mui/icons-material/Biotech'\nexport {default as ShareIcon} from '@mui/icons-material/Share'\nexport {default as FilterIcon} from '@mui/icons-material/FilterAlt'\nexport {default as SyncIcon} from '@mui/icons-material/Sync'\nexport {default as PlayIcon} from '@mui/icons-material/PlayArrow'\nexport {default as PauseIcon} from '@mui/icons-material/PauseOutlined'\nexport {default as RandomIcon} from '@mui/icons-material/Casino'\nexport {default as CoinIcon} from '@mui/icons-material/Paid'\nexport {default as SaveChangesIcon} from '@mui/icons-material/Save'\nexport {default as StopIcon} from '@mui/icons-material/StopRounded'\nexport {default as ReplayIcon} from '@mui/icons-material/Replay'\nexport {default as TreeIcon} from '@mui/icons-material/AccountTree'\nexport {default as ClearIcon} from '@mui/icons-material/Close'\nexport {default as KeyboardArrowDownIcon} from '@mui/icons-material/KeyboardArrowDown'\nexport {default as KeyboardArrowRightIcon} from '@mui/icons-material/KeyboardArrowRight'\nexport {default as SearchRoundedIcon} from '@mui/icons-material/SearchRounded'\nexport {default as CloseRoundedIcon} from '@mui/icons-material/CloseRounded'\nexport {default as SortByAlphaRoundedIcon} from '@mui/icons-material/SortByAlphaRounded'\nexport {default as FilterAltOutlinedIcon} from '@mui/icons-material/FilterAltOutlined'\nexport {default as InboxOutlinedIcon} from '@mui/icons-material/InboxOutlined'\nexport {default as SearchOffIcon} from '@mui/icons-material/SearchOff'\nexport {default as ClearRoundedIcon} from '@mui/icons-material/ClearRounded'\nexport {default as ArrowDropDownRoundedIcon} from '@mui/icons-material/ArrowDropDownRounded'\n\n// login\nexport {default as AccountIcon} from '@mui/icons-material/AccountBox'\nexport {default as LogoutIcon} from '@mui/icons-material/Logout'\nexport {default as LoginIcon} from '@mui/icons-material/Login'\nexport {default as DashboardIcon} from '@mui/icons-material/Dashboard'\n\n//logo\nexport {default as WorkFlowIcon} from '@mui/icons-material/AccountTreeOutlined'\nexport {default as HelpOutlineIcon} from '@mui/icons-material/HelpOutline'\nexport {default as NavigateBeforeIcon} from '@mui/icons-material/NavigateBefore'\nexport {default as NavigateNextIcon} from '@mui/icons-material/NavigateNext'\nexport {default as PersonIcon} from '@mui/icons-material/Person'\nexport {default as CalendarTodayIcon} from '@mui/icons-material/CalendarToday'\nexport {default as ChatIcon} from '@mui/icons-material/QuestionAnswerOutlined'\nexport {default as TodayIcon} from '@mui/icons-material/Today'\nexport {default as DeleteForeverIcon} from '@mui/icons-material/DeleteForever'\n\nexport {default as AdsClickIcon} from '@mui/icons-material/AdsClick'\nexport {default as FingerprintIcon} from '@mui/icons-material/Fingerprint'\nexport {default as SportsEsportsOutlinedIcon} from '@mui/icons-material/SportsEsportsOutlined'\nexport {default as HelpOutlineRoundedIcon} from '@mui/icons-material/HelpOutlineRounded'\nexport {default as AccountTreeOutlinedIcon} from '@mui/icons-material/AccountTreeOutlined'\nexport {default as SmartToyOutlinedIcon} from '@mui/icons-material/SmartToyOutlined'\nexport {default as AcUnitIcon} from '@mui/icons-material/AcUnit'\nexport {default as LoopIcon} from '@mui/icons-material/Loop'\nexport {default as PendingIcon} from '@mui/icons-material/Pending'\nexport {default as AllInclusiveIcon} from '@mui/icons-material/AllInclusive'\nexport {default as WarningOutlinedIcon} from '@mui/icons-material/WarningOutlined'\nexport {default as InfoOutlinedIcon} from '@mui/icons-material/InfoOutlined'\nexport {default as AutoAwesomeRoundedIcon} from '@mui/icons-material/AutoAwesomeRounded'\nexport {default as ErrorOutlineOutlinedIcon} from '@mui/icons-material/ErrorOutlineOutlined'\nexport {default as DownloadFilledIcon} from '@mui/icons-material/Download'","import { ValueOf } from '../_types';\n\nexport const FILE_STATUSs = {\n // local status\n uploadingToLocal:\"local-uploading\",\n uploadedToLocal:\"local-uploaded\",\n localError:\"local-error\",\n\n \n pending:\"pending\",\n // upload s3\n uploadPending:'upload-pending',\n gettingSignedURL:'upload-gettingSignedURL',\n beginUploadToS3:'upload-beginUploadToS3',\n uploadedToCloud:'upload-uploadedToCloud',\n error:'upload-error',\n // download\n downloadPending:'download-pending',\n downloading:'download-in-progress',\n downloaded:'download-completed',\n downloadError:'download-error',\n} as const\n\nexport const FILE_TYPEs = {\n image:\"image\",\n video:\"video\",\n audio:\"audio\",\n pdf:\"pdf\",\n doc:\"doc\",\n xls:\"xls\",\n ppt:\"ppt\",\n txt:\"txt\",\n zip:\"zip\",\n json:\"json\",\n other:\"other\",\n} as const\n\nexport const MAX_FILE_NAME_LENGTH = 100\n\nexport type FileStatusType = ValueOf<typeof FILE_STATUSs>;\nexport type FileType = ValueOf<typeof FILE_TYPEs>;\n\nexport type Attachment = {\n url: string;\n keyPath: string;\n filename: string;\n fileType: string;\n hostname: string;\n}\n","// src/components/compound/DisplayFile/src/DisplayFile.tsx\nimport React from 'react';\nimport { Box } from '@/ele/Box';\nimport { Typography } from '@/ele/Typography';\nimport { IconButton } from '@/ele/Button';\nimport {\n CloseIcon,\n DescriptionIcon,\n PictureAsPdfIcon,\n ImageIcon,\n AudioFileIcon,\n VideoFileIcon,\n TableChartIcon,\n FolderZipIcon,\n DataObjectIcon,\n InsertDriveFileIcon,\n} from '@/icons/MuiIcon';\n\nimport PreviewableFile, { FILE_TYPEs } from '@/_utils/classes/PreviewableFile';\n\nexport interface DisplayFileProps {\n file: PreviewableFile;\n onDelete?: (file: PreviewableFile) => void;\n mode?: 'thumbnail' | 'name';\n}\n\nexport const getFileIcon = (fileType: string) => {\n switch (fileType) {\n case FILE_TYPEs.image: return ImageIcon;\n case FILE_TYPEs.pdf: return PictureAsPdfIcon;\n case FILE_TYPEs.audio: return AudioFileIcon;\n case FILE_TYPEs.video: return VideoFileIcon;\n case FILE_TYPEs.xls: return TableChartIcon;\n case FILE_TYPEs.zip: return FolderZipIcon;\n case FILE_TYPEs.json: return DataObjectIcon;\n\n case FILE_TYPEs.ppt:\n case FILE_TYPEs.doc: \n case FILE_TYPEs.txt: \n return DescriptionIcon;\n default: return InsertDriveFileIcon;\n }\n};\n\nexport const FileThumbnail: React.FC<{ file: PreviewableFile; size?: number }> = ({ file, size = 60 }) => {\n const isImage = file.fileType === FILE_TYPEs.image;\n const FileIcon = getFileIcon(file.fileType || '');\n\n return (\n <Box\n sx={{\n width: size,\n height: size,\n minWidth: size,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n bgcolor: 'transparent',\n borderRadius: 1,\n overflow: 'hidden'\n }}\n >\n {isImage && file.blobUrl ? (\n <Box\n component=\"img\"\n src={file.blobUrl}\n alt={file.filename}\n sx={{ width: '100%', height: '100%', objectFit: 'cover' }}\n />\n ) : (\n <FileIcon fontSize={size >= 60 ? \"large\" : \"medium\"} color=\"action\" />\n )}\n </Box>\n );\n};\n\nconst DisplayFile: React.FC<DisplayFileProps> & { DISPLAY_MODEs: { thumbnail: 'thumbnail'; name: 'name' } } = ({\n file,\n onDelete,\n mode = 'thumbnail'\n}) => {\n return (\n <Box sx={{\n display: 'flex',\n alignItems: 'center',\n gap: 1,\n p: 1,\n border: '1px solid',\n borderColor: 'divider',\n borderRadius: 1,\n width: mode === 'thumbnail' ? 'fit-content' : '100%',\n maxWidth: '100%',\n position: 'relative',\n }}>\n <FileThumbnail file={file} />\n \n <Box sx={{ flex: 1, overflow: 'hidden' }}>\n <Typography variant=\"body2\" noWrap sx={{ maxWidth: 150 }}>\n {file.filename}\n </Typography>\n <Typography variant=\"caption\" color=\"text.secondary\">\n {file.displaySize}\n </Typography>\n </Box>\n\n {onDelete && (\n <IconButton \n size=\"small\" \n onClick={() => onDelete(file)}\n sx={{ ml: 'auto' }}\n >\n <CloseIcon fontSize=\"small\" />\n </IconButton>\n )}\n </Box>\n );\n};\n\nDisplayFile.DISPLAY_MODEs = {\n thumbnail: 'thumbnail',\n name: 'name'\n};\n\nexport default DisplayFile;\n"],"mappings":"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","names":["MuiIconButton","import_PhotoSizeSelectLarge","import_Close","import_Person","import_DeleteForever","import_AccountTreeOutlined","import_jsx_runtime"]}
@@ -1,19 +0,0 @@
1
- import {
2
- DisplayFile_default,
3
- FileThumbnail,
4
- getFileIcon
5
- } from "./chunk-AAH2O24U.mjs";
6
- import "./chunk-JIU5GVM7.mjs";
7
- import "./chunk-4Q54P737.mjs";
8
- import "./chunk-OP6LKXPA.mjs";
9
- import "./chunk-ZVFYOXDE.mjs";
10
- import "./chunk-4RPFRNXG.mjs";
11
- import "./chunk-S6EZVRZC.mjs";
12
- import "./chunk-FJ6ZGZIA.mjs";
13
- export {
14
- DisplayFile_default as DisplayFile,
15
- FileThumbnail,
16
- DisplayFile_default as default,
17
- getFileIcon
18
- };
19
- //# sourceMappingURL=displayFile.mjs.map
@@ -1,86 +0,0 @@
1
- import React from 'react';
2
- import { DropzoneOptions } from 'react-dropzone';
3
-
4
- type ValueOf<T> = T[keyof T];
5
-
6
- declare const FILE_STATUSs: {
7
- readonly uploadingToLocal: "local-uploading";
8
- readonly uploadedToLocal: "local-uploaded";
9
- readonly localError: "local-error";
10
- readonly pending: "pending";
11
- readonly uploadPending: "upload-pending";
12
- readonly gettingSignedURL: "upload-gettingSignedURL";
13
- readonly beginUploadToS3: "upload-beginUploadToS3";
14
- readonly uploadedToCloud: "upload-uploadedToCloud";
15
- readonly error: "upload-error";
16
- readonly downloadPending: "download-pending";
17
- readonly downloading: "download-in-progress";
18
- readonly downloaded: "download-completed";
19
- readonly downloadError: "download-error";
20
- };
21
- type FileStatusType = ValueOf<typeof FILE_STATUSs>;
22
- type Attachment = {
23
- url: string;
24
- keyPath: string;
25
- filename: string;
26
- fileType: string;
27
- hostname: string;
28
- };
29
-
30
- interface PreviewableFileProps {
31
- path?: string;
32
- blobUrl?: string;
33
- filename?: string;
34
- randomName?: string;
35
- fileType?: string;
36
- mimeType?: Blob["type"];
37
- size?: number;
38
- displaySize?: string;
39
- url?: string;
40
- fetchOptions?: object;
41
- putUrl?: string;
42
- getUrl?: string;
43
- status?: FileStatusType;
44
- revokeable?: boolean;
45
- imageProps?: {
46
- width: number;
47
- height: number;
48
- };
49
- }
50
- declare class PreviewableFile {
51
- path: NonNullable<PreviewableFileProps["path"]>;
52
- blobUrl: NonNullable<PreviewableFileProps["blobUrl"]>;
53
- filename: NonNullable<PreviewableFileProps["filename"]>;
54
- randomName: NonNullable<PreviewableFileProps["randomName"]>;
55
- fileType: NonNullable<PreviewableFileProps["fileType"]>;
56
- mimeType: NonNullable<PreviewableFileProps["mimeType"]>;
57
- size: NonNullable<PreviewableFileProps["size"]>;
58
- displaySize: NonNullable<PreviewableFileProps["displaySize"]>;
59
- url: NonNullable<PreviewableFileProps["url"]>;
60
- fetchOptions: NonNullable<PreviewableFileProps["fetchOptions"]>;
61
- putUrl: NonNullable<PreviewableFileProps["putUrl"]>;
62
- getUrl: NonNullable<PreviewableFileProps["getUrl"]>;
63
- status: NonNullable<PreviewableFileProps["status"]>;
64
- revokeable: NonNullable<PreviewableFileProps["revokeable"]>;
65
- imageProps: NonNullable<PreviewableFileProps["imageProps"]>;
66
- constructor(props?: PreviewableFileProps);
67
- toPlainObj(): this;
68
- updateFile(file: PreviewableFile | undefined): void;
69
- updateStatus(status: FileStatusType): void;
70
- downloadFile(): Promise<this>;
71
- _displayFileSize(): string;
72
- getUploadFormat(): Attachment;
73
- }
74
-
75
- type DropzoneType = "box" | "button";
76
- interface ReactDropzoneProps {
77
- filesProps: [PreviewableFile[], React.Dispatch<React.SetStateAction<PreviewableFile[]>>];
78
- accept?: DropzoneOptions['accept'];
79
- maxFiles?: number;
80
- error?: boolean;
81
- dropzoneType?: DropzoneType;
82
- label?: string;
83
- }
84
- declare const ReactDropzone: React.FC<ReactDropzoneProps>;
85
-
86
- export { type DropzoneType, ReactDropzone, type ReactDropzoneProps, ReactDropzone as default };