@startdownnotez404/ui 1.0.0 → 1.3.5

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 (439) hide show
  1. package/README.md +110 -0
  2. package/dist/AutocompleteField-ZKNU2IRR.mjs +181 -0
  3. package/dist/AutocompleteField-ZKNU2IRR.mjs.map +1 -0
  4. package/dist/AvatarField-SAODT3CZ.mjs +275 -0
  5. package/dist/AvatarField-SAODT3CZ.mjs.map +1 -0
  6. package/dist/CodeEditor-JF55ZNVD.mjs +34 -0
  7. package/dist/CodeEditor-JF55ZNVD.mjs.map +1 -0
  8. package/dist/DateField-ZYMZFHL4.mjs +82 -0
  9. package/dist/DateField-ZYMZFHL4.mjs.map +1 -0
  10. package/dist/DateTimeField-TPTJ7YIZ.mjs +65 -0
  11. package/dist/DateTimeField-TPTJ7YIZ.mjs.map +1 -0
  12. package/dist/FileUploadField-NTMWBJER.mjs +78 -0
  13. package/dist/FileUploadField-NTMWBJER.mjs.map +1 -0
  14. package/dist/JSONEditorField-TMRWGXVR.mjs +64 -0
  15. package/dist/JSONEditorField-TMRWGXVR.mjs.map +1 -0
  16. package/dist/PopperMenu-LJ36RPBW.mjs +416 -0
  17. package/dist/PopperMenu-LJ36RPBW.mjs.map +1 -0
  18. package/dist/TelField-LOGRVZ4I.mjs +88 -0
  19. package/dist/TelField-LOGRVZ4I.mjs.map +1 -0
  20. package/dist/alert.d.mts +202 -0
  21. package/dist/alert.d.ts +202 -0
  22. package/dist/alert.js +784 -0
  23. package/dist/alert.js.map +1 -0
  24. package/dist/alert.mjs +47 -0
  25. package/dist/alert.mjs.map +1 -0
  26. package/dist/appBar.d.mts +21 -0
  27. package/dist/appBar.d.ts +21 -0
  28. package/dist/appBar.js +64 -0
  29. package/dist/appBar.js.map +1 -0
  30. package/dist/appBar.mjs +12 -0
  31. package/dist/appBar.mjs.map +1 -0
  32. package/dist/autocomplete.d.mts +121 -0
  33. package/dist/autocomplete.d.ts +121 -0
  34. package/dist/autocomplete.js +2052 -0
  35. package/dist/autocomplete.js.map +1 -0
  36. package/dist/autocomplete.mjs +21 -0
  37. package/dist/autocomplete.mjs.map +1 -0
  38. package/dist/avatar.d.mts +253 -0
  39. package/dist/avatar.d.ts +253 -0
  40. package/dist/avatar.js +992 -0
  41. package/dist/avatar.js.map +1 -0
  42. package/dist/avatar.mjs +41 -0
  43. package/dist/avatar.mjs.map +1 -0
  44. package/dist/badge.d.mts +123 -0
  45. package/dist/badge.d.ts +123 -0
  46. package/dist/badge.js +151 -0
  47. package/dist/badge.js.map +1 -0
  48. package/dist/badge.mjs +10 -0
  49. package/dist/badge.mjs.map +1 -0
  50. package/dist/box.d.mts +36 -0
  51. package/dist/box.d.ts +36 -0
  52. package/dist/box.js +199 -0
  53. package/dist/box.js.map +1 -0
  54. package/dist/box.mjs +14 -0
  55. package/dist/box.mjs.map +1 -0
  56. package/dist/button.d.mts +230 -52
  57. package/dist/button.d.ts +230 -52
  58. package/dist/button.js +392 -60
  59. package/dist/button.js.map +1 -1
  60. package/dist/button.mjs +14 -8
  61. package/dist/card.d.mts +47 -0
  62. package/dist/card.d.ts +47 -0
  63. package/dist/card.js +135 -0
  64. package/dist/card.js.map +1 -0
  65. package/dist/card.mjs +24 -0
  66. package/dist/card.mjs.map +1 -0
  67. package/dist/chart.d.mts +40 -0
  68. package/dist/chart.d.ts +40 -0
  69. package/dist/chart.js +1234 -0
  70. package/dist/chart.js.map +1 -0
  71. package/dist/chart.mjs +10 -0
  72. package/dist/chart.mjs.map +1 -0
  73. package/dist/checkbox.d.mts +62 -0
  74. package/dist/checkbox.d.ts +62 -0
  75. package/dist/checkbox.js +299 -0
  76. package/dist/checkbox.js.map +1 -0
  77. package/dist/checkbox.mjs +14 -0
  78. package/dist/checkbox.mjs.map +1 -0
  79. package/dist/chip.d.mts +96 -0
  80. package/dist/chip.d.ts +96 -0
  81. package/dist/chip.js +112 -0
  82. package/dist/chip.js.map +1 -0
  83. package/dist/chip.mjs +10 -0
  84. package/dist/chip.mjs.map +1 -0
  85. package/dist/chunk-24XDGNJ6.mjs +1450 -0
  86. package/dist/chunk-24XDGNJ6.mjs.map +1 -0
  87. package/dist/chunk-27KYFU7R.mjs +30 -0
  88. package/dist/chunk-27KYFU7R.mjs.map +1 -0
  89. package/dist/chunk-2FFLT5VP.mjs +7 -0
  90. package/dist/chunk-2FFLT5VP.mjs.map +1 -0
  91. package/dist/chunk-2ZZJTBTE.mjs +148 -0
  92. package/dist/chunk-2ZZJTBTE.mjs.map +1 -0
  93. package/dist/chunk-3DQINB57.mjs +15 -0
  94. package/dist/chunk-3DQINB57.mjs.map +1 -0
  95. package/dist/chunk-3VUAM2GY.mjs +52 -0
  96. package/dist/chunk-3VUAM2GY.mjs.map +1 -0
  97. package/dist/chunk-4Q54P737.mjs +19 -0
  98. package/dist/chunk-4Q54P737.mjs.map +1 -0
  99. package/dist/chunk-4RPFRNXG.mjs +62 -0
  100. package/dist/chunk-4RPFRNXG.mjs.map +1 -0
  101. package/dist/chunk-56TI2ZBT.mjs +114 -0
  102. package/dist/chunk-56TI2ZBT.mjs.map +1 -0
  103. package/dist/chunk-6REEQBJI.mjs +62 -0
  104. package/dist/chunk-6REEQBJI.mjs.map +1 -0
  105. package/dist/chunk-AAH2O24U.mjs +325 -0
  106. package/dist/chunk-AAH2O24U.mjs.map +1 -0
  107. package/dist/chunk-B7DAB22K.mjs +16 -0
  108. package/dist/chunk-B7DAB22K.mjs.map +1 -0
  109. package/dist/chunk-BGB7JHIU.mjs +222 -0
  110. package/dist/chunk-BGB7JHIU.mjs.map +1 -0
  111. package/dist/chunk-CRYIEYZZ.mjs +756 -0
  112. package/dist/chunk-CRYIEYZZ.mjs.map +1 -0
  113. package/dist/chunk-CWFWRZWU.mjs +23 -0
  114. package/dist/chunk-CWFWRZWU.mjs.map +1 -0
  115. package/dist/chunk-DELCADNF.mjs +1926 -0
  116. package/dist/chunk-DELCADNF.mjs.map +1 -0
  117. package/dist/chunk-E3I2VDHZ.mjs +292 -0
  118. package/dist/chunk-E3I2VDHZ.mjs.map +1 -0
  119. package/dist/chunk-EEH7HACG.mjs +249 -0
  120. package/dist/chunk-EEH7HACG.mjs.map +1 -0
  121. package/dist/chunk-EKPULYPU.mjs +497 -0
  122. package/dist/chunk-EKPULYPU.mjs.map +1 -0
  123. package/dist/chunk-EW4DTFH3.mjs +69 -0
  124. package/dist/chunk-EW4DTFH3.mjs.map +1 -0
  125. package/dist/chunk-FJ6ZGZIA.mjs +43 -0
  126. package/dist/chunk-FJ6ZGZIA.mjs.map +1 -0
  127. package/dist/chunk-HE7MY3RT.mjs +23 -0
  128. package/dist/chunk-HE7MY3RT.mjs.map +1 -0
  129. package/dist/chunk-HR3A4H4E.mjs +1289 -0
  130. package/dist/chunk-HR3A4H4E.mjs.map +1 -0
  131. package/dist/chunk-I5JWS4Z7.mjs +91 -0
  132. package/dist/chunk-I5JWS4Z7.mjs.map +1 -0
  133. package/dist/chunk-IN3O4R7Q.mjs +932 -0
  134. package/dist/chunk-IN3O4R7Q.mjs.map +1 -0
  135. package/dist/chunk-JIU5GVM7.mjs +414 -0
  136. package/dist/chunk-JIU5GVM7.mjs.map +1 -0
  137. package/dist/chunk-JWANK42G.mjs +170 -0
  138. package/dist/chunk-JWANK42G.mjs.map +1 -0
  139. package/dist/chunk-MDAUF7IL.mjs +9 -0
  140. package/dist/chunk-MDAUF7IL.mjs.map +1 -0
  141. package/dist/chunk-MI64T62E.mjs +26 -0
  142. package/dist/chunk-MI64T62E.mjs.map +1 -0
  143. package/dist/chunk-NJYNJLT7.mjs +172 -0
  144. package/dist/chunk-NJYNJLT7.mjs.map +1 -0
  145. package/dist/chunk-NLBDBJ3R.mjs +97 -0
  146. package/dist/chunk-NLBDBJ3R.mjs.map +1 -0
  147. package/dist/chunk-OGNGPI3M.mjs +333 -0
  148. package/dist/chunk-OGNGPI3M.mjs.map +1 -0
  149. package/dist/chunk-OJV6V7YZ.mjs +552 -0
  150. package/dist/chunk-OJV6V7YZ.mjs.map +1 -0
  151. package/dist/chunk-ONQMRE2G.mjs +26 -0
  152. package/dist/chunk-ONQMRE2G.mjs.map +1 -0
  153. package/dist/chunk-OP6LKXPA.mjs +75 -0
  154. package/dist/chunk-OP6LKXPA.mjs.map +1 -0
  155. package/dist/chunk-QFF3HTHL.mjs +14 -0
  156. package/dist/chunk-QFF3HTHL.mjs.map +1 -0
  157. package/dist/chunk-QKGCW37O.mjs +1175 -0
  158. package/dist/chunk-QKGCW37O.mjs.map +1 -0
  159. package/dist/chunk-R5MKQN6D.mjs +227 -0
  160. package/dist/chunk-R5MKQN6D.mjs.map +1 -0
  161. package/dist/chunk-RXBQ7KXF.mjs +652 -0
  162. package/dist/chunk-RXBQ7KXF.mjs.map +1 -0
  163. package/dist/chunk-S6EZVRZC.mjs +161 -0
  164. package/dist/chunk-S6EZVRZC.mjs.map +1 -0
  165. package/dist/chunk-SGCUDWO3.mjs +396 -0
  166. package/dist/chunk-SGCUDWO3.mjs.map +1 -0
  167. package/dist/chunk-SRWPHN2N.mjs +188 -0
  168. package/dist/chunk-SRWPHN2N.mjs.map +1 -0
  169. package/dist/chunk-T34IULP5.mjs +242 -0
  170. package/dist/chunk-T34IULP5.mjs.map +1 -0
  171. package/dist/chunk-T4X375IG.mjs +100 -0
  172. package/dist/chunk-T4X375IG.mjs.map +1 -0
  173. package/dist/chunk-T6AMRENK.mjs +376 -0
  174. package/dist/chunk-T6AMRENK.mjs.map +1 -0
  175. package/dist/chunk-TDRA5EZI.mjs +325 -0
  176. package/dist/chunk-TDRA5EZI.mjs.map +1 -0
  177. package/dist/chunk-UDREPVEY.mjs +356 -0
  178. package/dist/chunk-UDREPVEY.mjs.map +1 -0
  179. package/dist/chunk-UGMRJMFZ.mjs +172 -0
  180. package/dist/chunk-UGMRJMFZ.mjs.map +1 -0
  181. package/dist/chunk-UMJ5SCIQ.mjs +438 -0
  182. package/dist/chunk-UMJ5SCIQ.mjs.map +1 -0
  183. package/dist/chunk-UTVSYS6S.mjs +270 -0
  184. package/dist/chunk-UTVSYS6S.mjs.map +1 -0
  185. package/dist/chunk-V26V2S3W.mjs +197 -0
  186. package/dist/chunk-V26V2S3W.mjs.map +1 -0
  187. package/dist/chunk-VYD3PDBB.mjs +38 -0
  188. package/dist/chunk-VYD3PDBB.mjs.map +1 -0
  189. package/dist/chunk-WYYP3Y34.mjs +55 -0
  190. package/dist/chunk-WYYP3Y34.mjs.map +1 -0
  191. package/dist/chunk-XIMFP6RB.mjs +161 -0
  192. package/dist/chunk-XIMFP6RB.mjs.map +1 -0
  193. package/dist/chunk-XJ2SXC2Q.mjs +558 -0
  194. package/dist/chunk-XJ2SXC2Q.mjs.map +1 -0
  195. package/dist/chunk-Y74ALKBL.mjs +565 -0
  196. package/dist/chunk-Y74ALKBL.mjs.map +1 -0
  197. package/dist/chunk-ZG3NQI77.mjs +353 -0
  198. package/dist/chunk-ZG3NQI77.mjs.map +1 -0
  199. package/dist/chunk-ZVFYOXDE.mjs +297 -0
  200. package/dist/chunk-ZVFYOXDE.mjs.map +1 -0
  201. package/dist/collapse.d.mts +10 -0
  202. package/dist/collapse.d.ts +10 -0
  203. package/dist/collapse.js +53 -0
  204. package/dist/collapse.js.map +1 -0
  205. package/dist/collapse.mjs +10 -0
  206. package/dist/collapse.mjs.map +1 -0
  207. package/dist/datePicker.d.mts +133 -0
  208. package/dist/datePicker.d.ts +133 -0
  209. package/dist/datePicker.js +482 -0
  210. package/dist/datePicker.js.map +1 -0
  211. package/dist/datePicker.mjs +29 -0
  212. package/dist/datePicker.mjs.map +1 -0
  213. package/dist/displayFile.d.mts +95 -0
  214. package/dist/displayFile.d.ts +95 -0
  215. package/dist/displayFile.js +357 -0
  216. package/dist/displayFile.js.map +1 -0
  217. package/dist/displayFile.mjs +19 -0
  218. package/dist/displayFile.mjs.map +1 -0
  219. package/dist/divider.d.mts +9 -0
  220. package/dist/divider.d.ts +9 -0
  221. package/dist/divider.js +52 -0
  222. package/dist/divider.js.map +1 -0
  223. package/dist/divider.mjs +10 -0
  224. package/dist/divider.mjs.map +1 -0
  225. package/dist/fileUploader.d.mts +86 -0
  226. package/dist/fileUploader.d.ts +86 -0
  227. package/dist/fileUploader.js +722 -0
  228. package/dist/fileUploader.js.map +1 -0
  229. package/dist/fileUploader.mjs +16 -0
  230. package/dist/fileUploader.mjs.map +1 -0
  231. package/dist/flowMap.d.mts +353 -0
  232. package/dist/flowMap.d.ts +353 -0
  233. package/dist/flowMap.js +94806 -0
  234. package/dist/flowMap.js.map +1 -0
  235. package/dist/flowMap.mjs +94585 -0
  236. package/dist/flowMap.mjs.map +1 -0
  237. package/dist/form.d.mts +84 -0
  238. package/dist/form.d.ts +84 -0
  239. package/dist/form.js +144 -0
  240. package/dist/form.js.map +1 -0
  241. package/dist/form.mjs +24 -0
  242. package/dist/form.mjs.map +1 -0
  243. package/dist/icons.d.mts +160 -0
  244. package/dist/icons.d.ts +160 -0
  245. package/dist/icons.js +540 -0
  246. package/dist/icons.js.map +1 -0
  247. package/dist/icons.mjs +306 -0
  248. package/dist/icons.mjs.map +1 -0
  249. package/dist/image.d.mts +49 -0
  250. package/dist/image.d.ts +49 -0
  251. package/dist/image.js +1348 -0
  252. package/dist/image.js.map +1 -0
  253. package/dist/image.mjs +19 -0
  254. package/dist/image.mjs.map +1 -0
  255. package/dist/index.d.ts +46 -0
  256. package/dist/index.js +20198 -0
  257. package/dist/index.js.map +1 -0
  258. package/dist/index.mjs +912 -0
  259. package/dist/index.mjs.map +1 -0
  260. package/dist/input.d.mts +195 -0
  261. package/dist/input.d.ts +195 -0
  262. package/dist/input.js +1101 -0
  263. package/dist/input.js.map +1 -0
  264. package/dist/input.mjs +32 -0
  265. package/dist/input.mjs.map +1 -0
  266. package/dist/jsonEditor.d.mts +13 -0
  267. package/dist/jsonEditor.d.ts +13 -0
  268. package/dist/jsonEditor.js +247 -0
  269. package/dist/jsonEditor.js.map +1 -0
  270. package/dist/jsonEditor.mjs +9 -0
  271. package/dist/jsonEditor.mjs.map +1 -0
  272. package/dist/list.d.mts +83 -0
  273. package/dist/list.d.ts +83 -0
  274. package/dist/list.js +564 -0
  275. package/dist/list.js.map +1 -0
  276. package/dist/list.mjs +39 -0
  277. package/dist/list.mjs.map +1 -0
  278. package/dist/loading.d.mts +48 -0
  279. package/dist/loading.d.ts +48 -0
  280. package/dist/loading.js +383 -0
  281. package/dist/loading.js.map +1 -0
  282. package/dist/loading.mjs +23 -0
  283. package/dist/loading.mjs.map +1 -0
  284. package/dist/markdown.d.mts +14 -0
  285. package/dist/markdown.d.ts +14 -0
  286. package/dist/markdown.js +25927 -0
  287. package/dist/markdown.js.map +1 -0
  288. package/dist/markdown.mjs +25623 -0
  289. package/dist/markdown.mjs.map +1 -0
  290. package/dist/menu.d.mts +368 -0
  291. package/dist/menu.d.ts +368 -0
  292. package/dist/menu.js +1571 -0
  293. package/dist/menu.js.map +1 -0
  294. package/dist/menu.mjs +43 -0
  295. package/dist/menu.mjs.map +1 -0
  296. package/dist/modal.d.mts +90 -0
  297. package/dist/modal.d.ts +90 -0
  298. package/dist/modal.js +883 -0
  299. package/dist/modal.js.map +1 -0
  300. package/dist/modal.mjs +25 -0
  301. package/dist/modal.mjs.map +1 -0
  302. package/dist/overlay.d.mts +2 -0
  303. package/dist/overlay.d.ts +2 -0
  304. package/dist/overlay.js +46 -0
  305. package/dist/overlay.js.map +1 -0
  306. package/dist/overlay.mjs +10 -0
  307. package/dist/overlay.mjs.map +1 -0
  308. package/dist/paper.d.mts +38 -0
  309. package/dist/paper.d.ts +38 -0
  310. package/dist/paper.js +90 -0
  311. package/dist/paper.js.map +1 -0
  312. package/dist/paper.mjs +12 -0
  313. package/dist/paper.mjs.map +1 -0
  314. package/dist/patterns.d.mts +133 -0
  315. package/dist/patterns.d.ts +133 -0
  316. package/dist/patterns.js +483 -0
  317. package/dist/patterns.js.map +1 -0
  318. package/dist/patterns.mjs +46 -0
  319. package/dist/patterns.mjs.map +1 -0
  320. package/dist/process.d.mts +125 -0
  321. package/dist/process.d.ts +125 -0
  322. package/dist/process.js +1471 -0
  323. package/dist/process.js.map +1 -0
  324. package/dist/process.mjs +30 -0
  325. package/dist/process.mjs.map +1 -0
  326. package/dist/progress.d.mts +44 -0
  327. package/dist/progress.d.ts +44 -0
  328. package/dist/progress.js +94 -0
  329. package/dist/progress.js.map +1 -0
  330. package/dist/progress.mjs +14 -0
  331. package/dist/progress.mjs.map +1 -0
  332. package/dist/resizablePanel.d.mts +297 -0
  333. package/dist/resizablePanel.d.ts +297 -0
  334. package/dist/resizablePanel.js +122 -0
  335. package/dist/resizablePanel.js.map +1 -0
  336. package/dist/resizablePanel.mjs +22 -0
  337. package/dist/resizablePanel.mjs.map +1 -0
  338. package/dist/scrollToLoad.d.mts +41 -0
  339. package/dist/scrollToLoad.d.ts +41 -0
  340. package/dist/scrollToLoad.js +256 -0
  341. package/dist/scrollToLoad.js.map +1 -0
  342. package/dist/scrollToLoad.mjs +16 -0
  343. package/dist/scrollToLoad.mjs.map +1 -0
  344. package/dist/select.d.mts +50 -0
  345. package/dist/select.d.ts +50 -0
  346. package/dist/select.js +426 -0
  347. package/dist/select.js.map +1 -0
  348. package/dist/select.mjs +24 -0
  349. package/dist/select.mjs.map +1 -0
  350. package/dist/skeleton.d.mts +13 -0
  351. package/dist/skeleton.d.ts +13 -0
  352. package/dist/skeleton.js +68 -0
  353. package/dist/skeleton.js.map +1 -0
  354. package/dist/skeleton.mjs +11 -0
  355. package/dist/skeleton.mjs.map +1 -0
  356. package/dist/slider.d.mts +65 -0
  357. package/dist/slider.d.ts +65 -0
  358. package/dist/slider.js +106 -0
  359. package/dist/slider.js.map +1 -0
  360. package/dist/slider.mjs +10 -0
  361. package/dist/slider.mjs.map +1 -0
  362. package/dist/stepper.d.mts +98 -0
  363. package/dist/stepper.d.ts +98 -0
  364. package/dist/stepper.js +313 -0
  365. package/dist/stepper.js.map +1 -0
  366. package/dist/stepper.mjs +38 -0
  367. package/dist/stepper.mjs.map +1 -0
  368. package/dist/switch.d.mts +151 -0
  369. package/dist/switch.d.ts +151 -0
  370. package/dist/switch.js +289 -0
  371. package/dist/switch.js.map +1 -0
  372. package/dist/switch.mjs +17 -0
  373. package/dist/switch.mjs.map +1 -0
  374. package/dist/tab.d.mts +182 -0
  375. package/dist/tab.d.ts +182 -0
  376. package/dist/tab.js +1418 -0
  377. package/dist/tab.js.map +1 -0
  378. package/dist/tab.mjs +34 -0
  379. package/dist/tab.mjs.map +1 -0
  380. package/dist/table.d.mts +720 -0
  381. package/dist/table.d.ts +720 -0
  382. package/dist/table.js +10882 -0
  383. package/dist/table.js.map +1 -0
  384. package/dist/table.mjs +63 -0
  385. package/dist/table.mjs.map +1 -0
  386. package/dist/theme.d.mts +30 -4
  387. package/dist/theme.d.ts +30 -4
  388. package/dist/theme.js +3210 -170
  389. package/dist/theme.js.map +1 -1
  390. package/dist/theme.mjs +52 -230
  391. package/dist/theme.mjs.map +1 -1
  392. package/dist/timeline.d.mts +30 -0
  393. package/dist/timeline.d.ts +30 -0
  394. package/dist/timeline.js +273 -0
  395. package/dist/timeline.js.map +1 -0
  396. package/dist/timeline.mjs +14 -0
  397. package/dist/timeline.mjs.map +1 -0
  398. package/dist/toggleButtonGroup.d.mts +125 -0
  399. package/dist/toggleButtonGroup.d.ts +125 -0
  400. package/dist/toggleButtonGroup.js +190 -0
  401. package/dist/toggleButtonGroup.js.map +1 -0
  402. package/dist/toggleButtonGroup.mjs +15 -0
  403. package/dist/toggleButtonGroup.mjs.map +1 -0
  404. package/dist/tooltip.d.mts +13 -0
  405. package/dist/tooltip.d.ts +13 -0
  406. package/dist/tooltip.js +56 -0
  407. package/dist/tooltip.js.map +1 -0
  408. package/dist/tooltip.mjs +10 -0
  409. package/dist/tooltip.mjs.map +1 -0
  410. package/dist/typography.d.mts +21 -23
  411. package/dist/typography.d.ts +21 -23
  412. package/dist/typography.js +37 -63
  413. package/dist/typography.js.map +1 -1
  414. package/dist/typography.mjs +2 -1
  415. package/dist/useForm.d.mts +588 -0
  416. package/dist/useForm.d.ts +588 -0
  417. package/dist/useForm.js +8743 -0
  418. package/dist/useForm.js.map +1 -0
  419. package/dist/useForm.mjs +45 -0
  420. package/dist/useForm.mjs.map +1 -0
  421. package/dist/useSearch.d.mts +126 -0
  422. package/dist/useSearch.d.ts +126 -0
  423. package/dist/useSearch.js +1125 -0
  424. package/dist/useSearch.js.map +1 -0
  425. package/dist/useSearch.mjs +42 -0
  426. package/dist/useSearch.mjs.map +1 -0
  427. package/dist/variablesRenderer.d.mts +45 -0
  428. package/dist/variablesRenderer.d.ts +45 -0
  429. package/dist/variablesRenderer.js +511 -0
  430. package/dist/variablesRenderer.js.map +1 -0
  431. package/dist/variablesRenderer.mjs +21 -0
  432. package/dist/variablesRenderer.mjs.map +1 -0
  433. package/package.json +109 -15
  434. package/dist/chunk-PKADXEAD.mjs +0 -116
  435. package/dist/chunk-PKADXEAD.mjs.map +0 -1
  436. package/dist/chunk-YGBJCPUS.mjs +0 -88
  437. package/dist/chunk-YGBJCPUS.mjs.map +0 -1
  438. package/dist/theme.css +0 -44
  439. package/dist/theme.css.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/elemental/Image/index.ts","../src/components/elemental/Image/src/MuiImageList/MuiImageList.tsx","../src/components/elemental/Image/src/Cropper/Cropper.tsx","../src/_utils/_func/sx.ts","../src/components/elemental/Box/src/index.ts","../src/components/elemental/Image/src/Cropper/theme.ts","../src/components/elemental/Image/src/Cropper/layout/CropperLayout.tsx","../src/components/elemental/Image/src/Cropper/sections/CropperSourceSection.tsx","../src/components/elemental/Slider/src/Slider/index.ts","../src/components/elemental/Typography/src/Typography.ts","../src/components/elemental/Image/src/Cropper/sections/CropperControlsSection.tsx","../src/components/elemental/Button/src/Button/Button.tsx","../src/components/elemental/Button/src/IconButton/IconButton.tsx","../src/components/elemental/Tooltip/src/Tooltip/index.ts","../src/components/Icons/MuiIcon/index.ts","../src/components/elemental/Image/src/Cropper/sections/CropperActionSection.tsx","../src/components/elemental/Image/src/Cropper/sections/CropperFileSelector.tsx","../src/components/compound/FileUploader/src/ReactDropzone.tsx","../src/components/compound/FileUploader/src/theme.ts","../src/_utils/_func/downloadFile.ts","../src/_utils/_const/file.ts","../src/_utils/classes/PreviewableFile.ts","../src/components/compound/DisplayFile/src/DisplayFile.tsx","../src/components/compound/FileUploader/src/DropZoneBox.tsx","../src/components/compound/FileUploader/src/DropZoneButton.tsx","../src/components/elemental/Image/src/Cropper/hooks/useCropperState.ts"],"sourcesContent":["export * from './src'\n","import ImageList from '@mui/material/ImageList';\nimport ImageListItem from '@mui/material/ImageListItem';\n\n/**\n * Mui compnent for ImageList\n * \n * [Doc](https://mui.com/material-ui/react-image-list/)\n */\nconst MuiImageList = ({imageList,cols=3,rowHeight=164,width='100%',height='auto'}: {\n imageList: {\n id: string | number;\n url: string; \n title?: string;\n }[];\n cols?: number; \n rowHeight?: number;\n width?: number | string;\n height?: number | string;\n}) => {\n return (\n <ImageList sx={{ width, height }} cols={cols} rowHeight={rowHeight}>\n {imageList.map((item) => (\n <ImageListItem key={item.id}>\n <img\n src={`${item.url}?w=${rowHeight * 2}&h=${rowHeight * 2}&fit=crop&auto=format`}\n alt={item.title??\"\"}\n loading=\"lazy\"\n width={rowHeight} height={rowHeight}\n style={{objectFit: 'cover'}}\n />\n </ImageListItem>\n ))}\n </ImageList>\n )\n}\n\nexport default MuiImageList\n","import 'react-image-crop/dist/ReactCrop.css';\nimport CropperLayout from './layout/CropperLayout';\nimport CropperSourceSection from './sections/CropperSourceSection';\nimport CropperControlsSection from './sections/CropperControlsSection';\nimport CropperActionSection from './sections/CropperActionSection';\nimport CropperFileSelector from './sections/CropperFileSelector';\nimport { useCropperState } from './hooks/useCropperState';\nimport type { CropperProps } from './types';\n\nconst Cropper: React.FC<CropperProps> = ({\n blobUrl,\n onSave,\n setImgNull,\n onClear, // optional parent callback when the image is removed\n circularCrop = false,\n defaultRatio,\n resizeCropEnabled = true,\n cropConfig,\n PreviewRenderer,\n footerExtra,\n showFileSelector = false,\n fileSelectorAccept = 'image/*',\n fileSelectorButtonLabel = 'Select Image',\n onFileSelect,\n}) => {\n const {\n imageRef,\n canvasRef,\n activeBlobUrl,\n crop,\n setCrop,\n completedCrop,\n setCompletedCrop,\n scale,\n setScale,\n rotate,\n setRotate,\n onImageLoad,\n handleSave,\n handleClear,\n handleResetTransforms,\n } = useCropperState({\n blobUrl,\n onSave,\n setImgNull,\n circularCrop,\n defaultRatio,\n cropConfig,\n });\n\n return (\n <CropperLayout\n left={(\n <CropperSourceSection\n activeBlobUrl={activeBlobUrl}\n crop={crop}\n setCrop={setCrop}\n setCompletedCrop={setCompletedCrop}\n circularCrop={circularCrop}\n defaultRatio={defaultRatio}\n resizeCropEnabled={resizeCropEnabled}\n rotate={rotate}\n scale={scale}\n imageRef={imageRef}\n onImageLoad={onImageLoad}\n />\n )}\n right={(\n <CropperControlsSection\n PreviewRenderer={PreviewRenderer}\n canvasRef={canvasRef}\n rotate={rotate}\n setRotate={setRotate}\n scale={scale}\n setScale={setScale}\n />\n )}\n leftFooter={(\n <>\n {footerExtra}\n {showFileSelector && (\n <CropperFileSelector\n accept={fileSelectorAccept}\n buttonLabel={fileSelectorButtonLabel}\n onPick={(f) => onFileSelect?.(f)}\n />\n )}\n </>\n )}\n footer={(\n <CropperActionSection\n onSave={handleSave}\n onResetTransforms={handleResetTransforms}\n onClear={() => {\n // clear internal cropper state and also notify parent if it wants to persist the removal\n handleClear();\n onClear?.();\n }}\n saveDisabled={!completedCrop || !activeBlobUrl}\n />\n )}\n />\n );\n};\n\nexport default Cropper;\nexport type { CropperProps };\n","import type { SxProps, Theme } from '@mui/material/styles'\n\n/** Values accepted by {@link mergeSx}: objects, callbacks, arrays (nested ok), or omitted. */\nexport type SxMergePart =\n | SxProps<Theme>\n | Record<string, unknown>\n | ReadonlyArray<SxMergePart>\n | false\n | null\n | undefined\n\nfunction flattenSx(part: unknown): unknown[] {\n if (part == null || typeof part === 'boolean') {\n return []\n }\n if (Array.isArray(part)) {\n return part.flatMap(flattenSx)\n }\n if (typeof part === 'function' || typeof part === 'object') {\n return [part]\n }\n return []\n}\n\n/**\n * Combine MUI `sx` values into one prop.\n *\n * Nested arrays are flattened (`[base, [a, b]]` → `[base, a, b]`).\n * `null` / `undefined` / `false` entries are dropped. Later parts win,\n * same as MUI's `sx` array merge.\n */\nexport function mergeSx(...parts: SxMergePart[]): SxProps<Theme> | undefined {\n const list = parts.flatMap(flattenSx)\n if (list.length === 0) {\n return undefined\n }\n if (list.length === 1) {\n return list[0] as SxProps<Theme>\n }\n return list as SxProps<Theme>\n}\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","import type { SxProps, Theme } from '@mui/material/styles'\n\n/**\n * Root-level CSS variable aliases for Cropper.\n * Children consume these vars; palette refs are declared only here.\n *\n * Also overrides react-image-crop public CSS vars (--rc-*) via cascade:\n * https://github.com/DominicTobias/react-image-crop#css-variables\n */\nexport const cropperRootSx: SxProps<Theme> = {\n '--image-border-radius': 'var(--mui-shape-borderRadius)',\n '--image-border': '2px solid var(--mui-palette-secondary-main)',\n // react-image-crop selection theming\n '--rc-border-color': 'var(--mui-palette-border-1)',\n '--rc-focus-color': 'var(--mui-palette-primary-main)',\n '--rc-drag-handle-bg-colour': 'var(--mui-palette-focus-1)',\n \"& .ReactCrop__crop-selection:not(.ReactCrop--no-animate .ReactCrop__crop-selection)\": {\n '--animated-dash-light-color': 'var(--mui-palette-border-1)',\n '--animated-dash-dark-color': 'var(--mui-palette-grey-300)',\n backgroundImage: `\n linear-gradient(to right,var(--animated-dash-light-color) 50%,var(--animated-dash-dark-color) 50%),\n linear-gradient(to right,var(--animated-dash-light-color) 50%,var(--animated-dash-dark-color) 50%),\n linear-gradient(to bottom,var(--animated-dash-light-color) 50%,var(--animated-dash-dark-color) 50%),\n linear-gradient(to bottom,var(--animated-dash-light-color) 50%,var(--animated-dash-dark-color) 50%)`,\n },\n [`& .ReactCrop__rule-of-thirds-vt:before, \n .ReactCrop__rule-of-thirds-vt:after, \n .ReactCrop__rule-of-thirds-hz:before, \n .ReactCrop__rule-of-thirds-hz:after`]: {\n background:\"#fff6\",\n },\n}\n","import { Box } from '@/ele/Box';\nimport { cropperRootSx } from '../theme';\nimport { mergeSx } from '@/_utils/_func';\n\ninterface CropperLayoutProps {\n left: React.ReactNode;\n right: React.ReactNode;\n leftFooter?: React.ReactNode; // content shown at bottom of the left column (e.g. file selector)\n footer?: React.ReactNode; // bottom action/footer bar\n}\n\nexport default function CropperLayout({\n left,\n right,\n leftFooter,\n footer,\n}: CropperLayoutProps) {\n return (\n <Box sx={mergeSx({ display: 'flex', flexDirection: 'column', gap: 2, height: '100%' }, cropperRootSx)}>\n <Box\n sx={{\n // stack children vertically on small screens, switch to two‑column grid at md\n display: { xs: 'table-row-group', md: 'grid' },\n flexDirection: { xs: 'column', md: undefined },\n gridTemplateColumns: { xs: '1fr', md: '1fr 280px' },\n gap: 2,\n alignItems: 'start',\n minHeight: 0,\n flex: '1 1 auto',\n overflow: 'auto',\n }}\n >\n <Box sx={{ display: 'flex', flexDirection: 'column', justifyContent: 'space-between', minHeight: 0, height: '100%', alignItems: 'center', width: '-webkit-fill-available' }}>\n {left}\n {leftFooter}\n </Box>\n\n <Box sx={{ display: 'flex', flexDirection: 'column', justifyContent: 'space-between', minHeight: 0, height: '100%', }}>\n {right}\n {footer}\n </Box>\n </Box>\n </Box>\n );\n}\n","import React from 'react'\nimport ReactCrop, { type Crop, type PixelCrop } from 'react-image-crop';\nimport { Box } from '@/ele/Box';\n\ninterface CropperSourceSectionProps {\n activeBlobUrl: string;\n crop: Crop;\n setCrop: (crop: Crop) => void;\n setCompletedCrop: (crop: PixelCrop) => void;\n circularCrop: boolean;\n defaultRatio?: number;\n resizeCropEnabled: boolean;\n rotate: number;\n scale: number;\n imageRef: React.RefObject<HTMLImageElement | null>;\n onImageLoad: (e: React.SyntheticEvent<HTMLImageElement>) => void;\n}\n\nexport default function CropperSourceSection({\n activeBlobUrl,\n crop,\n setCrop,\n setCompletedCrop,\n circularCrop,\n defaultRatio,\n resizeCropEnabled,\n rotate,\n scale,\n imageRef,\n onImageLoad,\n}: CropperSourceSectionProps) {\n return (\n <Box\n sx={{\n minHeight: 0,\n overflow: 'hidden',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n\n \"& .ReactCrop\": {\n borderRadius: 'var(--image-border-radius)',\n border: 'var(--image-border)',\n\n },\n }}\n >\n {!!activeBlobUrl && (\n <ReactCrop\n crop={crop}\n onChange={(nextCrop) => setCrop(nextCrop)}\n onComplete={(nextCrop) => setCompletedCrop(nextCrop)}\n circularCrop={circularCrop}\n aspect={defaultRatio}\n keepSelection\n ruleOfThirds\n disabled={!resizeCropEnabled}\n style={{ maxWidth: '100%', maxHeight: 420, overflow: 'hidden' }}\n >\n <img\n ref={imageRef}\n alt=\"Crop source\"\n src={activeBlobUrl}\n style={{\n display: 'block',\n width: '100%',\n maxWidth: '100%',\n maxHeight: 420,\n objectFit: 'contain',\n transform: `rotate(${rotate}deg) scale(${scale})`,\n transformOrigin: 'center center',\n }}\n onLoad={onImageLoad}\n />\n </ReactCrop>\n )}\n </Box>\n );\n}\n","export {default as Slider} from '@mui/material/Slider'\nexport * from './theme'\n","export { default } from '@mui/material/Typography'","import React from 'react'\nimport { Box, Stack } from '@/ele/Box';\nimport { Slider } from '@/ele/Slider';\nimport { Typography } from '@/ele/Typography';\n\nconst scaleMarks = [\n { value: 0.5, label: '0.5x' },\n { value: 1, label: '1x' },\n { value: 1.5, label: '1.5x' },\n { value: 2, label: '2x' },\n { value: 2.5, label: '2.5x' },\n { value: 3, label: '3x' },\n];\n\nconst rotationMarks = [\n { value: -180, label: '-180°' },\n { value: -90, label: '-90°' },\n { value: 0, label: '0°' },\n { value: 90, label: '90°' },\n { value: 180, label: '180°' },\n];\n\ninterface CropperControlsSectionProps {\n PreviewRenderer?: React.ForwardRefExoticComponent<React.RefAttributes<HTMLCanvasElement>>;\n canvasRef: React.RefObject<HTMLCanvasElement | null>;\n rotate: number;\n setRotate: (value: number) => void;\n scale: number;\n setScale: (value: number) => void;\n}\n\nexport default function CropperControlsSection({\n PreviewRenderer,\n canvasRef,\n rotate,\n setRotate,\n scale,\n setScale,\n}: CropperControlsSectionProps) {\n return (\n <Stack spacing={2} sx={{ minWidth: 0, px: 2 }}>\n <Box display=\"flex\" justifyContent=\"center\">\n {PreviewRenderer ? (\n <PreviewRenderer ref={canvasRef} />\n ) : (\n <canvas\n ref={canvasRef}\n style={{ width: '100%', maxWidth: 260,\n border: 'var(--image-border)',\n borderRadius: 'var(--image-border-radius)',\n }}\n />\n )}\n </Box>\n\n <Box>\n <Typography variant=\"body2\" sx={{ mb: 1 }}>\n Rotation ({rotate}°)\n </Typography>\n <Slider\n min={-180}\n max={180}\n step={1}\n marks={rotationMarks}\n value={rotate}\n onChange={(_, value) => setRotate(Array.isArray(value) ? value[0] : value)}\n />\n </Box>\n\n <Box>\n <Typography variant=\"body2\" sx={{ mb: 1 }}>\n Resize scale ({scale.toFixed(2)}x)\n </Typography>\n <Slider\n min={0.5}\n max={3}\n step={0.05}\n marks={scaleMarks}\n value={scale}\n onChange={(_, value) => setScale(Array.isArray(value) ? value[0] : value)}\n />\n </Box>\n </Stack>\n );\n}\n","import React from 'react';\n\nimport MuiButton from '@mui/material/Button';\nimport { Box } from '@/ele/Box';\nimport { mergeSx } from '@/_utils/_func';\n\n/**\n * A modified MUI Button that truncates long text with ellipsis.\n * \n * [Doc](https://mui.com/material-ui/react-button/)\n * [API](https://mui.com/material-ui/api/button/)\n */\nexport default function Button(p:\n React.ComponentProps<typeof MuiButton> & {\n slotProps?: {\n innerBox?: React.ComponentProps<typeof Box>\n }\n }) {\n const {children, slotProps, ...rest} = p\n const {sx, ...boxRest} = slotProps?.innerBox ?? {}\n return <MuiButton {...rest}>\n <Box \n {...boxRest}\n sx={mergeSx(\n {\n textOverflow: 'ellipsis',\n overflow: 'hidden',\n whiteSpace: 'pre',\n },\n sx,\n )}>\n {children}\n </Box>\n </MuiButton>\n}","'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 { Box } from '@/ele/Box';\nimport { IconButton } from '@/ele/Button';\nimport { CheckIcon } from '@/icons/MuiIcon';\nimport { ClearIcon } from '@/icons/MuiIcon';\nimport { ReplayIcon } from '@/icons/MuiIcon';\n\ninterface CropperActionSectionProps {\n onSave: () => void;\n onResetTransforms: () => void;\n onClear: () => void;\n saveDisabled?: boolean;\n}\n\nexport default function CropperActionSection({\n onSave,\n onResetTransforms,\n onClear,\n saveDisabled,\n}: CropperActionSectionProps) {\n return (\n <Box\n sx={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'flex-end',\n gap: 1,\n flexWrap: 'wrap',\n }}\n >\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 1, flexWrap: 'wrap' }}>\n <IconButton onClick={onResetTransforms} title=\"Reset Scale & Rotation\">\n <ReplayIcon fontSize=\"small\" />\n </IconButton>\n\n <IconButton onClick={onClear} color=\"error\" title=\"Remove image\">\n <ClearIcon fontSize=\"small\" />\n </IconButton>\n\n <IconButton onClick={onSave} color=\"success\" disabled={saveDisabled} title=\"Save\">\n <CheckIcon fontSize=\"small\" />\n </IconButton>\n </Box>\n </Box>\n );\n}\n","import React from 'react'\nimport { Box } from '@/ele/Box'\nimport { ReactDropzone } from '@/compound/FileUploader'\nimport PreviewableFile from '@/_utils/classes/PreviewableFile'\nimport type { DropzoneOptions } from 'react-dropzone'\n\ninterface Props {\n accept?: string | DropzoneOptions['accept'];\n buttonLabel?: string;\n /** `null` means the dropzone was cleared */\n onPick?: (file: File | null) => void;\n}\n\nexport default function CropperFileSelector({ accept = 'image/*', buttonLabel = 'Select Image', onPick }: Props) {\n const [files, setFiles] = React.useState<PreviewableFile[]>([])\n React.useEffect(() => {\n // debug render lifecycle for troubleshooting recursive render\n // console.debug('[CropperFileSelector] render — files.length=', files.length);\n }, [files]);\n\n const lastForwardedRef = React.useRef<string | null>(null);\n\n React.useEffect(() => {\n // when a file is removed from the dropzone, notify parent with null\n if (!files.length) {\n if (lastForwardedRef.current) {\n lastForwardedRef.current = null;\n onPick?.(null);\n }\n return;\n }\n\n const pf = files[0];\n if (!pf.blobUrl) return;\n\n // avoid forwarding the same file repeatedly (prevents recursion/loops)\n if (lastForwardedRef.current === pf.blobUrl) {\n return;\n }\n\n let cancelled = false;\n (async () => {\n try {\n const res = await fetch(pf.blobUrl);\n const blob = await res.blob();\n const file = new File([blob], pf.filename || 'file', { type: pf.mimeType || undefined });\n if (!cancelled) {\n lastForwardedRef.current = pf.blobUrl;\n onPick?.(file);\n }\n } catch {\n // silently ignore fetch/conversion errors — leave dropzone in place\n }\n })();\n\n return () => { cancelled = true };\n }, [files, onPick]);\n\n const acceptProp: DropzoneOptions['accept'] | undefined = typeof accept === 'string' ? { [accept]: [] } : accept\n\n return (\n <Box sx={{ display: 'flex', alignItems: 'center', pt:0, width: '100%', justifyContent: 'center' }}>\n <ReactDropzone filesProps={[files, setFiles]} accept={acceptProp} maxFiles={1} dropzoneType=\"button\" label={buttonLabel} />\n </Box>\n )\n}\n","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 { fileTypeFromBuffer } from 'file-type';\n\n/**\n * download file from url and return blob url\n * @param url\n * @param fetchOptions\n */\nexport async function downloadFile(url: string, fetchOptions?: RequestInit) {\n const res = await fetch(url, fetchOptions);\n const blob = await res.blob();\n const buffer = await blob.arrayBuffer();\n\n // application/octet-stream make it hard to detect\n // so we use buffer to detect the mime type\n const fType = await fileTypeFromBuffer(buffer);\n\n const data = {\n blobUrl: URL.createObjectURL(blob),\n size: blob.size,\n mimeType: fType?.mime || blob.type, // use file-type to get the mime type\n };\n\n const nonImgRes = {\n ...data,\n dimensions: {\n width: 0,\n height: 0,\n },\n };\n // if file is an image\n try {\n if (data.mimeType.includes('image/')) {\n const dimensions = await handleImageDownload(data.blobUrl);\n // check the mime type\n return {\n ...data,\n dimensions: dimensions,\n };\n } else {\n return nonImgRes;\n }\n\n } catch (err) {\n // if there is an error, it might not be an image or the image failed to load\n console.warn('Failed to handle image download:', err);\n return nonImgRes;\n }\n}\n\n/**\n * handle image download\n * @param blobUrl \n * @returns \n */\nasync function handleImageDownload(blobUrl: string) {\n // Create an Image object to load the image\n const img = new Image();\n img.src = blobUrl;\n\n // Wait for the image to load to access its dimensions\n await new Promise((resolve, reject) => {\n img.onload = resolve;\n img.onerror = reject;\n });\n const metaData = {\n width: img.width,\n height: img.height,\n };\n\n // clear the img from memory\n img.remove();\n\n return metaData;\n}\n","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","import { downloadFile } from \"../_func/downloadFile\";\nimport { type FileStatusType, type FileType, FILE_STATUSs, FILE_TYPEs, type Attachment } from \"../_const/file\";\n\nexport { FILE_TYPEs, FILE_STATUSs };\n\ninterface PreviewableFileProps {\n path?: string;\n blobUrl?: string;\n filename?: string;\n randomName?: string;\n fileType?: string;\n mimeType?: Blob[\"type\"];\n size?: number;\n displaySize?: string;\n url?: string;\n fetchOptions?: object;\n putUrl?: string;\n getUrl?: string;\n status?: FileStatusType;\n revokeable?: boolean;\n imageProps?:{\n width: number;\n height: number;\n };\n}\n\nexport default class PreviewableFile {\n path: NonNullable<PreviewableFileProps[\"path\"]>;\n blobUrl: NonNullable<PreviewableFileProps[\"blobUrl\"]>;\n filename: NonNullable<PreviewableFileProps[\"filename\"]>;\n randomName: NonNullable<PreviewableFileProps[\"randomName\"]>;\n fileType: NonNullable<PreviewableFileProps[\"fileType\"]>;\n mimeType: NonNullable<PreviewableFileProps[\"mimeType\"]>;\n size: NonNullable<PreviewableFileProps[\"size\"]>;\n displaySize: NonNullable<PreviewableFileProps[\"displaySize\"]>;\n url: NonNullable<PreviewableFileProps[\"url\"]>;\n fetchOptions: NonNullable<PreviewableFileProps[\"fetchOptions\"]>;\n putUrl: NonNullable<PreviewableFileProps[\"putUrl\"]>;\n getUrl: NonNullable<PreviewableFileProps[\"getUrl\"]>;\n status: NonNullable<PreviewableFileProps[\"status\"]>;\n revokeable: NonNullable<PreviewableFileProps[\"revokeable\"]>;\n imageProps: NonNullable<PreviewableFileProps[\"imageProps\"]>;\n\n constructor(props: PreviewableFileProps = {}) { \n this.path = props.path ?? \"\"\n this.blobUrl = props.blobUrl ?? \"\"\n this.filename = props.filename ?? \"\"\n this.randomName = props.randomName ?? \"\"\n this.fileType = (props.fileType ?? getFileType(props.mimeType ?? \"\")) as FileType\n this.mimeType = props.mimeType ?? \"\"\n this.size = props.size ?? 0\n this.displaySize = props.displaySize ?? displayFileSize(props.size ?? 0)\n\n this.url = props.url ?? \"\"\n this.fetchOptions = props.fetchOptions ?? {}\n this.putUrl = props.putUrl ?? \"\"\n this.getUrl = props.getUrl ?? \"\"\n\n this.status = props.status ?? FILE_STATUSs.pending\n this.revokeable = props.revokeable ?? true\n this.imageProps = props.imageProps ?? {\n width: 0,\n height: 0,\n }\n\n Object.preventExtensions(this)\n }\n\n toPlainObj(){\n return {\n ...this\n }\n }\n\n updateFile(file: PreviewableFile | undefined){\n if(!file) return\n\n this.path = file.path\n this.blobUrl = file.blobUrl\n this.filename = file.filename\n this.randomName = file.randomName\n this.fileType = file.fileType\n this.size = file.size\n this.displaySize = file.displaySize\n\n this.url = file.url\n this.fetchOptions = file.fetchOptions\n this.putUrl = file.putUrl\n this.getUrl = file.getUrl\n\n this.status = file.status\n this.revokeable = file.revokeable\n\n this.imageProps = file.imageProps\n }\n updateStatus(status: FileStatusType){\n this.status = status\n }\n async downloadFile(){\n // if dont have url, return\n if(!this.url) return this\n // use the current url to download the file\n try{\n const res = await downloadFile(this.url, this.fetchOptions)\n // update the file\n\n // ensure `url` points to the usable blob URL returned from the download\n // (fixes cases where `this.url` was an ephemeral/revoked object URL)\n this.url = res.blobUrl\n this.path = res.blobUrl\n this.status = FILE_STATUSs.downloaded\n this.blobUrl = res.blobUrl\n this.fileType = getFileType(res.mimeType)\n this.mimeType = res.mimeType\n this.size = res.size\n this.displaySize = displayFileSize(res.size)\n this.imageProps = res.dimensions\n\n return this\n }catch(err){\n console.log(err)\n return this\n }\n }\n\n _displayFileSize(){\n return displayFileSize(this.size)\n }\n\n getUploadFormat():Attachment{\n return {\n url: this.putUrl,\n keyPath: this.putUrl,\n filename: this.filename,\n fileType: this.mimeType,\n hostname: \"\",\n }\n }\n}\n\nexport function displayFileSize(size: number): string {\n const units = ['B', 'KB', 'MB', 'GB', 'TB'];\n\n // Determine the appropriate unit index\n let unitIndex = 0;\n while (size >= 1024 && unitIndex < units.length - 1) {\n size /= 1024;\n unitIndex++;\n }\n\n // Format the file size with the unit\n // 2 decimal places\n const sizeWithUnit = size.toFixed(2) + ' ' + units[unitIndex];\n\n return `[${sizeWithUnit}]`;\n}\n\n/**\n * get the file type based on the mime type\n */\nfunction getFileType(mimeType:Blob[\"type\"]): FileType {\n const types = Object.values(FILE_TYPEs) as FileType[];\n \n // 1. Check if the type is explicitly defined in the start (e.g. image/jpeg -> image)\n const [type] = mimeType.split('/');\n if(types.includes(type as FileType)){\n return type as FileType;\n }\n\n // 2. Check if the type is included in the mime type (e.g. application/pdf -> pdf)\n const found = types.find((t) => mimeType.includes(t) && t !== FILE_TYPEs.other);\n if(found){\n return found;\n }\n\n return FILE_TYPEs.other;\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","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","import React from 'react';\nimport {\n centerCrop,\n convertToPixelCrop,\n makeAspectCrop,\n type Crop,\n type PixelCrop,\n} from 'react-image-crop';\n\ninterface UseCropperStateParams {\n blobUrl: string;\n onSave: (url: string) => void | Promise<void>;\n setImgNull: () => void;\n circularCrop: boolean;\n defaultRatio?: number;\n cropConfig?: Partial<Crop>;\n}\n\nfunction toRad(degrees: number) {\n return (degrees * Math.PI) / 180;\n}\n\nfunction defaultCrop(): Crop {\n return {\n unit: '%',\n x: 10,\n y: 10,\n width: 80,\n height: 80,\n };\n}\n\nfunction makeCenteredAspectCrop(mediaWidth: number, mediaHeight: number, aspect: number): Crop {\n return centerCrop(\n makeAspectCrop(\n {\n unit: '%',\n width: 90,\n },\n aspect,\n mediaWidth,\n mediaHeight,\n ),\n mediaWidth,\n mediaHeight,\n );\n}\n\nfunction initialCrop(\n mediaWidth: number,\n mediaHeight: number,\n defaultRatio: number | undefined,\n cropConfig: Partial<Crop> | undefined,\n): Crop {\n if (defaultRatio) {\n return makeCenteredAspectCrop(mediaWidth, mediaHeight, defaultRatio);\n }\n return { ...defaultCrop(), ...cropConfig };\n}\n\nfunction drawPreviewToCanvas(\n image: HTMLImageElement,\n canvas: HTMLCanvasElement,\n crop: PixelCrop,\n scale: number,\n rotate: number,\n circularCrop?: boolean,\n) {\n const context = canvas.getContext('2d');\n if (!context) return;\n if (!crop.width || !crop.height) return;\n\n const scaleX = image.naturalWidth / image.width;\n const scaleY = image.naturalHeight / image.height;\n const pixelRatio = window.devicePixelRatio || 1;\n\n canvas.width = Math.floor(crop.width * scaleX * pixelRatio);\n canvas.height = Math.floor(crop.height * scaleY * pixelRatio);\n\n context.setTransform(pixelRatio, 0, 0, pixelRatio, 0, 0);\n context.imageSmoothingQuality = 'high';\n context.clearRect(0, 0, canvas.width, canvas.height);\n\n const cropX = crop.x * scaleX;\n const cropY = crop.y * scaleY;\n const rotateRads = toRad(rotate);\n const centerX = image.naturalWidth / 2;\n const centerY = image.naturalHeight / 2;\n\n context.save();\n if (circularCrop) {\n const width = crop.width * scaleX;\n const height = crop.height * scaleY;\n const radius = Math.min(width, height) / 2;\n context.beginPath();\n context.arc(width / 2, height / 2, radius, 0, Math.PI * 2);\n context.closePath();\n context.clip();\n }\n\n context.translate(-cropX, -cropY);\n context.translate(centerX, centerY);\n context.rotate(rotateRads);\n context.scale(scale, scale);\n context.translate(-centerX, -centerY);\n\n context.drawImage(\n image,\n 0,\n 0,\n image.naturalWidth,\n image.naturalHeight,\n 0,\n 0,\n image.naturalWidth,\n image.naturalHeight,\n );\n context.restore();\n}\n\nexport function useCropperState({\n blobUrl,\n onSave,\n setImgNull,\n circularCrop,\n defaultRatio,\n cropConfig,\n}: UseCropperStateParams) {\n const imageRef = React.useRef<HTMLImageElement | null>(null);\n const canvasRef = React.useRef<HTMLCanvasElement | null>(null);\n const cropConfigRef = React.useRef(cropConfig);\n cropConfigRef.current = cropConfig;\n const scaleRef = React.useRef(1);\n const rotateRef = React.useRef(0);\n\n const [activeBlobUrl, setActiveBlobUrl] = React.useState(blobUrl);\n const [crop, setCrop] = React.useState<Crop>({ ...defaultCrop(), ...cropConfig });\n const [completedCrop, setCompletedCrop] = React.useState<PixelCrop>();\n const [scale, setScale] = React.useState(1);\n const [rotate, setRotate] = React.useState(0);\n scaleRef.current = scale;\n rotateRef.current = rotate;\n\n const applyCropFromImage = React.useCallback((image: HTMLImageElement) => {\n const { width, height } = image;\n if (!width || !height) return;\n\n const nextCrop = initialCrop(width, height, defaultRatio, cropConfigRef.current);\n const pixelCrop = convertToPixelCrop(nextCrop, width, height);\n if (!pixelCrop.width || !pixelCrop.height) return;\n\n setCrop(nextCrop);\n setCompletedCrop(pixelCrop);\n\n const canvas = canvasRef.current;\n if (canvas) {\n drawPreviewToCanvas(\n image,\n canvas,\n pixelCrop,\n scaleRef.current,\n rotateRef.current,\n circularCrop,\n );\n }\n }, [circularCrop, defaultRatio]);\n\n React.useEffect(() => {\n setActiveBlobUrl(blobUrl);\n }, [blobUrl]);\n\n React.useLayoutEffect(() => {\n if (!activeBlobUrl) {\n setCrop({ ...defaultCrop(), ...cropConfigRef.current });\n setCompletedCrop(undefined);\n setScale(1);\n setRotate(0);\n return;\n }\n\n setScale(1);\n setRotate(0);\n\n const tryApply = () => {\n const image = imageRef.current;\n if (image?.complete && image.width > 0 && image.height > 0) {\n applyCropFromImage(image);\n return true;\n }\n return false;\n };\n\n if (tryApply()) return;\n\n const frame = requestAnimationFrame(() => {\n tryApply();\n });\n return () => cancelAnimationFrame(frame);\n }, [activeBlobUrl, applyCropFromImage]);\n\n React.useEffect(() => {\n if (!completedCrop || !imageRef.current || !canvasRef.current) return;\n drawPreviewToCanvas(\n imageRef.current,\n canvasRef.current,\n completedCrop,\n scale,\n rotate,\n circularCrop,\n );\n }, [completedCrop, scale, rotate, circularCrop]);\n\n const onImageLoad = (e: React.SyntheticEvent<HTMLImageElement>) => {\n applyCropFromImage(e.currentTarget);\n };\n\n const handleCompletedCrop = (nextCrop: PixelCrop) => {\n if (!nextCrop.width || !nextCrop.height) return;\n setCompletedCrop(nextCrop);\n };\n\n const handleSave = async () => {\n if (!completedCrop || !imageRef.current) return;\n\n const previewCanvas = document.createElement('canvas');\n drawPreviewToCanvas(\n imageRef.current,\n previewCanvas,\n completedCrop,\n scale,\n rotate,\n circularCrop,\n );\n\n const blob = await new Promise<Blob | null>((resolve) => {\n previewCanvas.toBlob((nextBlob) => resolve(nextBlob), 'image/png');\n });\n\n if (!blob) return;\n const resultUrl = URL.createObjectURL(blob);\n await onSave(resultUrl);\n };\n\n const handleClear = () => {\n setActiveBlobUrl('');\n setImgNull();\n imageRef.current = null;\n const canvas = canvasRef.current;\n if (canvas) {\n const context = canvas.getContext('2d');\n if (context) {\n context.clearRect(0, 0, canvas.width, canvas.height);\n }\n }\n setCrop({ ...defaultCrop(), ...cropConfigRef.current });\n setScale(1);\n setRotate(0);\n setCompletedCrop(undefined);\n };\n\n const handleResetTransforms = () => {\n setScale(1);\n setRotate(0);\n };\n\n return {\n imageRef,\n canvasRef,\n activeBlobUrl,\n crop,\n setCrop,\n completedCrop,\n setCompletedCrop: handleCompletedCrop,\n scale,\n setScale,\n rotate,\n setRotate,\n onImageLoad,\n handleSave,\n handleClear,\n handleResetTransforms,\n };\n}\n"],"mappings":"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","names":["ImageList","ImageListItem","import_jsx_runtime","import_jsx_runtime","ReactCrop","import_jsx_runtime","import_jsx_runtime","MuiButton","import_jsx_runtime","MuiIconButton","import_PhotoSizeSelectLarge","import_Close","import_Person","import_DeleteForever","import_AccountTreeOutlined","import_jsx_runtime","import_react","import_react","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","React","import_react","import_react_image_crop","React","import_jsx_runtime"]}
package/dist/image.mjs ADDED
@@ -0,0 +1,19 @@
1
+ import {
2
+ Cropper_default,
3
+ MuiImageList_default
4
+ } from "./chunk-RXBQ7KXF.mjs";
5
+ import "./chunk-EW4DTFH3.mjs";
6
+ import "./chunk-XIMFP6RB.mjs";
7
+ import "./chunk-AAH2O24U.mjs";
8
+ import "./chunk-JIU5GVM7.mjs";
9
+ import "./chunk-4Q54P737.mjs";
10
+ import "./chunk-OP6LKXPA.mjs";
11
+ import "./chunk-ZVFYOXDE.mjs";
12
+ import "./chunk-4RPFRNXG.mjs";
13
+ import "./chunk-S6EZVRZC.mjs";
14
+ import "./chunk-FJ6ZGZIA.mjs";
15
+ export {
16
+ Cropper_default as Cropper,
17
+ MuiImageList_default as MuiImageList
18
+ };
19
+ //# sourceMappingURL=image.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,46 @@
1
+ export * from './alert';
2
+ export * from './appBar';
3
+ export * from './autocomplete';
4
+ export * from './avatar';
5
+ export * from './badge';
6
+ export * from './box';
7
+ export * from './button';
8
+ export * from './card';
9
+ export * from './chart';
10
+ export * from './checkbox';
11
+ export * from './chip';
12
+ export * from './collapse';
13
+ export * from './datePicker';
14
+ export * from './displayFile';
15
+ export * from './divider';
16
+ export * from './fileUploader';
17
+ export * from './form';
18
+ export * from './icons';
19
+ export * from './image';
20
+ export * from './input';
21
+ export * from './list';
22
+ export * from './loading';
23
+ export * from './menu';
24
+ export * from './modal';
25
+ export * from './overlay';
26
+ export * from './paper';
27
+ export * from './patterns';
28
+ export * from './process';
29
+ export * from './progress';
30
+ export * from './resizablePanel';
31
+ export * from './scrollToLoad';
32
+ export * from './select';
33
+ export * from './skeleton';
34
+ export * from './slider';
35
+ export * from './stepper';
36
+ export * from './switch';
37
+ export * from './tab';
38
+ export * from './table';
39
+ export * from './theme';
40
+ export * from './timeline';
41
+ export * from './toggleButtonGroup';
42
+ export * from './tooltip';
43
+ export * from './typography';
44
+ export * from './useForm';
45
+ export * from './useSearch';
46
+ export * from './variablesRenderer';