@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
package/dist/useForm.mjs CHANGED
@@ -4,35 +4,37 @@ import {
4
4
  UseForm,
5
5
  useConfiguredForm,
6
6
  useForm2
7
- } from "./chunk-24XDGNJ6.mjs";
7
+ } from "./chunk-4P45Z5LR.mjs";
8
8
  import "./chunk-MI64T62E.mjs";
9
9
  import {
10
10
  FIELD_TYPEs
11
- } from "./chunk-UTVSYS6S.mjs";
12
- import "./chunk-V26V2S3W.mjs";
11
+ } from "./chunk-FNSIQ2B7.mjs";
13
12
  import "./chunk-T34IULP5.mjs";
14
- import "./chunk-2ZZJTBTE.mjs";
15
- import "./chunk-UGMRJMFZ.mjs";
13
+ import "./chunk-WJZ3IYET.mjs";
14
+ import "./chunk-BO5CU4ZM.mjs";
15
+ import "./chunk-3O3N6X6D.mjs";
16
16
  import "./chunk-EW4DTFH3.mjs";
17
- import "./chunk-UDREPVEY.mjs";
18
- import "./chunk-CWFWRZWU.mjs";
19
- import "./chunk-VYD3PDBB.mjs";
20
- import "./chunk-HR3A4H4E.mjs";
21
- import "./chunk-TDRA5EZI.mjs";
17
+ import "./chunk-RVSMEZE3.mjs";
18
+ import "./chunk-2FK24ZPJ.mjs";
19
+ import "./chunk-KSN33A6I.mjs";
20
+ import "./chunk-PEJL2T2K.mjs";
21
+ import "./chunk-PUREEN2J.mjs";
22
22
  import "./chunk-3DQINB57.mjs";
23
- import "./chunk-BGB7JHIU.mjs";
24
- import "./chunk-T4X375IG.mjs";
23
+ import "./chunk-I5JWS4Z7.mjs";
24
+ import "./chunk-FMGZCOJC.mjs";
25
25
  import "./chunk-3VUAM2GY.mjs";
26
+ import "./chunk-T4X375IG.mjs";
26
27
  import "./chunk-WYYP3Y34.mjs";
28
+ import "./chunk-VYD3PDBB.mjs";
27
29
  import "./chunk-MDAUF7IL.mjs";
28
30
  import "./chunk-UMJ5SCIQ.mjs";
29
- import "./chunk-I5JWS4Z7.mjs";
30
- import "./chunk-JIU5GVM7.mjs";
31
+ import "./chunk-ZVFYOXDE.mjs";
32
+ import "./chunk-D4XPNSSI.mjs";
31
33
  import "./chunk-4Q54P737.mjs";
32
34
  import "./chunk-OP6LKXPA.mjs";
33
- import "./chunk-ZVFYOXDE.mjs";
34
35
  import "./chunk-4RPFRNXG.mjs";
35
- import "./chunk-S6EZVRZC.mjs";
36
+ import "./chunk-PNSJC6PC.mjs";
37
+ import "./chunk-AFLEG5ZC.mjs";
36
38
  import "./chunk-FJ6ZGZIA.mjs";
37
39
  export {
38
40
  FIELD_TYPEs,
@@ -8,25 +8,26 @@ import {
8
8
  UseSearchLayout,
9
9
  useSearch,
10
10
  useSearchContext
11
- } from "./chunk-XJ2SXC2Q.mjs";
12
- import "./chunk-ZG3NQI77.mjs";
13
- import "./chunk-OGNGPI3M.mjs";
14
- import "./chunk-VYD3PDBB.mjs";
15
- import "./chunk-HR3A4H4E.mjs";
16
- import "./chunk-TDRA5EZI.mjs";
11
+ } from "./chunk-6B6I27TT.mjs";
12
+ import "./chunk-SMD7OEUW.mjs";
13
+ import "./chunk-PL55YKT4.mjs";
14
+ import "./chunk-PEJL2T2K.mjs";
15
+ import "./chunk-PUREEN2J.mjs";
17
16
  import "./chunk-3DQINB57.mjs";
18
- import "./chunk-BGB7JHIU.mjs";
19
- import "./chunk-T4X375IG.mjs";
17
+ import "./chunk-I5JWS4Z7.mjs";
18
+ import "./chunk-FMGZCOJC.mjs";
20
19
  import "./chunk-3VUAM2GY.mjs";
20
+ import "./chunk-T4X375IG.mjs";
21
21
  import "./chunk-WYYP3Y34.mjs";
22
+ import "./chunk-VYD3PDBB.mjs";
22
23
  import "./chunk-MDAUF7IL.mjs";
23
- import "./chunk-I5JWS4Z7.mjs";
24
- import "./chunk-JIU5GVM7.mjs";
24
+ import "./chunk-ZVFYOXDE.mjs";
25
+ import "./chunk-D4XPNSSI.mjs";
25
26
  import "./chunk-4Q54P737.mjs";
26
27
  import "./chunk-OP6LKXPA.mjs";
27
- import "./chunk-ZVFYOXDE.mjs";
28
28
  import "./chunk-4RPFRNXG.mjs";
29
- import "./chunk-S6EZVRZC.mjs";
29
+ import "./chunk-PNSJC6PC.mjs";
30
+ import "./chunk-AFLEG5ZC.mjs";
30
31
  import "./chunk-FJ6ZGZIA.mjs";
31
32
  export {
32
33
  ScopeSuggestions,
@@ -1,18 +1,19 @@
1
1
  import {
2
2
  Var,
3
3
  VarField
4
- } from "./chunk-R5MKQN6D.mjs";
5
- import "./chunk-ZG3NQI77.mjs";
6
- import "./chunk-OGNGPI3M.mjs";
7
- import "./chunk-VYD3PDBB.mjs";
4
+ } from "./chunk-FBLSJQWK.mjs";
5
+ import "./chunk-SMD7OEUW.mjs";
6
+ import "./chunk-PL55YKT4.mjs";
8
7
  import "./chunk-3DQINB57.mjs";
9
8
  import "./chunk-3VUAM2GY.mjs";
9
+ import "./chunk-VYD3PDBB.mjs";
10
10
  import "./chunk-MDAUF7IL.mjs";
11
- import "./chunk-JIU5GVM7.mjs";
11
+ import "./chunk-ZVFYOXDE.mjs";
12
+ import "./chunk-D4XPNSSI.mjs";
12
13
  import "./chunk-4Q54P737.mjs";
13
14
  import "./chunk-OP6LKXPA.mjs";
14
- import "./chunk-ZVFYOXDE.mjs";
15
- import "./chunk-S6EZVRZC.mjs";
15
+ import "./chunk-PNSJC6PC.mjs";
16
+ import "./chunk-AFLEG5ZC.mjs";
16
17
  import "./chunk-FJ6ZGZIA.mjs";
17
18
  export {
18
19
  Var,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@startdownnotez404/ui",
3
- "version": "1.3.5",
3
+ "version": "1.3.6",
4
4
  "repository": "https://github.com/startdownnotez404/ui.git",
5
5
  "publishConfig": {
6
6
  "registry": "https://registry.npmjs.org",
@@ -58,7 +58,7 @@
58
58
  "prebuild-storybook": "npx eslint \"stories/**/*.{js,ts,jsx,tsx}\"",
59
59
  "test": "vitest run --config vitest.config.ts",
60
60
  "prestorybook": "node ./scripts/generateDoodlePattern.mjs",
61
- "storybook": "storybook dev -p 6006 --initial-path=/onboarding --no-open",
61
+ "storybook": "storybook dev -p 6006 -h 0.0.0.0 --no-open",
62
62
  "lint": "npx eslint \"{src,stories}/**/*.{js,ts,jsx,tsx}\" && echo \"ESLint passed \u2705\" || (echo \"ESLint found problems\" && exit 1)",
63
63
  "build-storybook": "NODE_OPTIONS=--max-old-space-size=6144 storybook build",
64
64
  "run-storybook": "storybook run -p 6006"
@@ -134,7 +134,7 @@
134
134
  "marked-footnote": "^1.4.0",
135
135
  "marked-highlight": "^2.2.3",
136
136
  "notistack": "^3.0.2",
137
- "react-dropzone": "^14.4.0",
137
+ "react-file-icon": "^1.6.0",
138
138
  "react-hook-form": "^7.71.0",
139
139
  "react-image-crop": "^11.0.10",
140
140
  "react-phone-number-input": "^3.4.14",
@@ -1,181 +0,0 @@
1
- import {
2
- GitHubPicker
3
- } from "./chunk-SGCUDWO3.mjs";
4
- import {
5
- Option
6
- } from "./chunk-OJV6V7YZ.mjs";
7
- import {
8
- FieldHelperText
9
- } from "./chunk-MI64T62E.mjs";
10
- import {
11
- Explanation_default,
12
- getFieldExplanation,
13
- mergeFieldSx
14
- } from "./chunk-UTVSYS6S.mjs";
15
- import {
16
- MuiFormLabel,
17
- default as default3
18
- } from "./chunk-T4X375IG.mjs";
19
- import "./chunk-56TI2ZBT.mjs";
20
- import "./chunk-MDAUF7IL.mjs";
21
- import "./chunk-QFF3HTHL.mjs";
22
- import "./chunk-JIU5GVM7.mjs";
23
- import "./chunk-4Q54P737.mjs";
24
- import "./chunk-OP6LKXPA.mjs";
25
- import "./chunk-ZVFYOXDE.mjs";
26
- import "./chunk-4RPFRNXG.mjs";
27
- import {
28
- default as default2
29
- } from "./chunk-S6EZVRZC.mjs";
30
- import "./chunk-FJ6ZGZIA.mjs";
31
-
32
- // src/components/compound/UseForm/src/Fields/AutocompleteField.tsx
33
- import React from "react";
34
- import { Controller, useFormContext } from "react-hook-form";
35
- import { jsx, jsxs } from "react/jsx-runtime";
36
- var EMPTY_OPTIONS = [];
37
- function toOptionClass(option) {
38
- return option instanceof Option ? option : new Option(option);
39
- }
40
- var AutocompleteField = ({ field }) => {
41
- const acSlot = field.slotProps;
42
- if (acSlot?.useOptions) {
43
- return /* @__PURE__ */ jsx(AutocompleteFieldWithOptions, { field, useOptions: acSlot.useOptions });
44
- }
45
- return /* @__PURE__ */ jsx(AutocompleteFieldView, { field, options: acSlot?.options ?? EMPTY_OPTIONS });
46
- };
47
- var AutocompleteFieldWithOptions = ({
48
- field,
49
- useOptions
50
- }) => {
51
- const { options = EMPTY_OPTIONS } = useOptions();
52
- return /* @__PURE__ */ jsx(AutocompleteFieldView, { field, options });
53
- };
54
- var AutocompleteFieldView = ({
55
- field,
56
- options
57
- }) => {
58
- const { control, getValues } = useFormContext();
59
- const {
60
- name,
61
- label,
62
- required,
63
- disabled,
64
- sx,
65
- size,
66
- slotProps,
67
- errorMsg,
68
- defaultValue
69
- } = field;
70
- const acSlot = slotProps;
71
- const mergedOptions = React.useMemo(
72
- () => options.map(toOptionClass),
73
- [options]
74
- );
75
- return /* @__PURE__ */ jsx(
76
- Controller,
77
- {
78
- control,
79
- name,
80
- defaultValue,
81
- render: ({ field: { onChange: controllerOnChange, value }, fieldState: { error } }) => /* @__PURE__ */ jsx(
82
- AutocompletePicker,
83
- {
84
- value,
85
- controllerOnChange,
86
- mergedOptions,
87
- acSlot,
88
- disabled,
89
- required,
90
- error,
91
- errorMsg,
92
- helperText: field.helperText,
93
- label,
94
- size,
95
- sx,
96
- explanation: getFieldExplanation(field),
97
- onFieldChange: (next) => {
98
- field.onChange?.(next, getValues());
99
- }
100
- }
101
- )
102
- }
103
- );
104
- };
105
- function AutocompletePicker({
106
- value,
107
- controllerOnChange,
108
- mergedOptions,
109
- acSlot,
110
- disabled,
111
- required,
112
- error,
113
- errorMsg,
114
- helperText,
115
- label,
116
- size,
117
- sx,
118
- explanation,
119
- onFieldChange
120
- }) {
121
- const [selectedIds, setSelectedIds] = React.useState(
122
- Array.isArray(value) ? value : value ? [value] : []
123
- );
124
- React.useEffect(() => {
125
- const next = Array.isArray(value) ? value : value ? [value] : [];
126
- setSelectedIds(next);
127
- }, [value]);
128
- return /* @__PURE__ */ jsxs(
129
- default3,
130
- {
131
- disabled,
132
- required,
133
- error: !!error,
134
- fullWidth: true,
135
- size: "small",
136
- sx: mergeFieldSx(size, sx),
137
- children: [
138
- /* @__PURE__ */ jsxs(default2, { sx: { display: "flex", alignItems: "center", justifyContent: "flex-start" }, children: [
139
- /* @__PURE__ */ jsx(MuiFormLabel, { component: "legend", children: label }),
140
- /* @__PURE__ */ jsx(Explanation_default, { explanation })
141
- ] }),
142
- /* @__PURE__ */ jsx(default2, { sx: { py: 1 }, children: /* @__PURE__ */ jsx(
143
- GitHubPicker,
144
- {
145
- options: mergedOptions,
146
- variant: acSlot?.variant,
147
- color: acSlot?.color,
148
- multiple: acSlot?.multiple ?? true,
149
- selectedIdProps: [selectedIds, setSelectedIds],
150
- onChange: (ids) => {
151
- if (acSlot?.multiple) {
152
- controllerOnChange(ids);
153
- onFieldChange(ids);
154
- } else {
155
- const single = Array.isArray(ids) ? ids[0] ?? "" : ids ?? "";
156
- controllerOnChange(single);
157
- onFieldChange(single);
158
- }
159
- },
160
- onDelete: (id) => {
161
- const next = (selectedIds || []).filter((s) => s !== id);
162
- if (acSlot?.multiple ?? true) {
163
- controllerOnChange(next);
164
- onFieldChange(next);
165
- } else {
166
- controllerOnChange("");
167
- onFieldChange("");
168
- }
169
- },
170
- error: !!error
171
- }
172
- ) }),
173
- /* @__PURE__ */ jsx(FieldHelperText, { error, errorMsg, helpers: [helperText] })
174
- ]
175
- }
176
- );
177
- }
178
- export {
179
- AutocompleteField
180
- };
181
- //# sourceMappingURL=AutocompleteField-ZKNU2IRR.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/compound/UseForm/src/Fields/AutocompleteField.tsx"],"sourcesContent":["import React from 'react';\nimport { Controller, useFormContext, type FieldError } from 'react-hook-form';\nimport { Box } from '@/ele/Box';\nimport { FormLabel, FormControl } from '@/ele/Form';\nimport { FieldHelperText } from '../_utils/helperText';\nimport { GitHubPicker, OptionClass, type OptionParams } from '@/ele/Autocomplete';\nimport { FieldConfig, FormTypeMap, InferFormDataType } from '../_utils';\nimport { getFieldExplanation, mergeFieldSx } from '../_utils/helpers';\nimport Explanation from './Explanation';\nimport { FIELD_TYPEs } from '../_utils/constants';\nimport type { AutocompleteSlotProps } from '../_utils/slotProps';\n\ninterface AutocompleteFieldProps<T extends FormTypeMap = FormTypeMap> {\n field: Extract<FieldConfig<T>, { type: typeof FIELD_TYPEs.autocomplete }>;\n}\n\ntype AutocompleteUseOptions = NonNullable<AutocompleteSlotProps['useOptions']>;\n\nconst EMPTY_OPTIONS: OptionParams[] = [];\n\nfunction toOptionClass(option: OptionParams | OptionClass): OptionClass {\n return option instanceof OptionClass ? option : new OptionClass(option as OptionParams);\n}\n\nexport const AutocompleteField = <T extends FormTypeMap = FormTypeMap>({ field }: AutocompleteFieldProps<T>) => {\n const acSlot = field.slotProps as AutocompleteSlotProps | undefined;\n if (acSlot?.useOptions) {\n return <AutocompleteFieldWithOptions field={field} useOptions={acSlot.useOptions} />;\n }\n return <AutocompleteFieldView field={field} options={acSlot?.options ?? EMPTY_OPTIONS} />;\n};\n\nconst AutocompleteFieldWithOptions = <T extends FormTypeMap>({\n field,\n useOptions,\n}: AutocompleteFieldProps<T> & { useOptions: AutocompleteUseOptions }) => {\n const { options = EMPTY_OPTIONS } = useOptions();\n return <AutocompleteFieldView field={field} options={options} />;\n};\n\nconst AutocompleteFieldView = <T extends FormTypeMap>({\n field,\n options,\n}: AutocompleteFieldProps<T> & { options: OptionParams[] }) => {\n const { control, getValues } = useFormContext();\n const {\n name,\n label,\n required,\n disabled,\n sx,\n size,\n slotProps,\n errorMsg,\n defaultValue,\n } = field;\n\n const acSlot = slotProps as AutocompleteSlotProps | undefined;\n const mergedOptions = React.useMemo(\n () => options.map(toOptionClass),\n [options],\n );\n\n return (\n <Controller\n control={control}\n name={name}\n defaultValue={defaultValue}\n render={({ field: { onChange: controllerOnChange, value }, fieldState: { error } }) => (\n <AutocompletePicker\n value={value}\n controllerOnChange={controllerOnChange}\n mergedOptions={mergedOptions}\n acSlot={acSlot}\n disabled={disabled}\n required={required}\n error={error}\n errorMsg={errorMsg}\n helperText={field.helperText}\n label={label}\n size={size}\n sx={sx}\n explanation={getFieldExplanation(field)}\n onFieldChange={(next) => {\n field.onChange?.(next, getValues() as InferFormDataType<T>);\n }}\n />\n )}\n />\n );\n};\n\ntype AutocompletePickerProps = {\n value: unknown;\n controllerOnChange: (value: unknown) => void;\n mergedOptions: OptionClass[];\n acSlot: AutocompleteSlotProps | undefined;\n disabled?: boolean;\n required?: boolean;\n error: FieldError | undefined;\n errorMsg?: string;\n helperText?: string;\n label?: string;\n size?: { width?: number | string; height?: number | string };\n sx?: Record<string, unknown>;\n explanation?: React.ComponentProps<typeof Explanation>['explanation'];\n onFieldChange: (next: unknown) => void;\n};\n\nfunction AutocompletePicker({\n value,\n controllerOnChange,\n mergedOptions,\n acSlot,\n disabled,\n required,\n error,\n errorMsg,\n helperText,\n label,\n size,\n sx,\n explanation,\n onFieldChange,\n}: AutocompletePickerProps) {\n const [selectedIds, setSelectedIds] = React.useState<string[]>(\n Array.isArray(value) ? value : (value ? [value as string] : []),\n );\n\n React.useEffect(() => {\n const next = Array.isArray(value) ? value : (value ? [value as string] : []);\n setSelectedIds(next as string[]);\n }, [value]);\n\n return (\n <FormControl\n disabled={disabled}\n required={required}\n error={!!error}\n fullWidth\n size=\"small\"\n sx={mergeFieldSx(size, sx)}\n >\n <Box sx={{ display: 'flex', alignItems: 'center', justifyContent: 'flex-start' }}>\n <FormLabel component=\"legend\">{label}</FormLabel>\n <Explanation explanation={explanation} />\n </Box>\n <Box sx={{ py: 1 }}>\n <GitHubPicker\n options={mergedOptions}\n variant={acSlot?.variant}\n color={acSlot?.color}\n multiple={acSlot?.multiple ?? true}\n selectedIdProps={[selectedIds, setSelectedIds]}\n onChange={(ids) => {\n if (acSlot?.multiple) {\n controllerOnChange(ids);\n onFieldChange(ids);\n } else {\n const single = Array.isArray(ids) ? ids[0] ?? '' : ids ?? '';\n controllerOnChange(single);\n onFieldChange(single);\n }\n }}\n onDelete={(id: string) => {\n const next = (selectedIds || []).filter((s) => s !== id);\n if (acSlot?.multiple ?? true) {\n controllerOnChange(next);\n onFieldChange(next);\n } else {\n controllerOnChange('');\n onFieldChange('');\n }\n }}\n error={!!error}\n />\n </Box>\n <FieldHelperText error={error} errorMsg={errorMsg} helpers={[helperText]} />\n </FormControl>\n );\n}\n"],"mappings":"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","names":["default"]}
@@ -1,275 +0,0 @@
1
- import {
2
- Cropper_default
3
- } from "./chunk-RXBQ7KXF.mjs";
4
- import {
5
- AvatarButton
6
- } from "./chunk-Y74ALKBL.mjs";
7
- import "./chunk-27KYFU7R.mjs";
8
- import {
9
- FieldHelperText
10
- } from "./chunk-MI64T62E.mjs";
11
- import {
12
- Explanation_default,
13
- getFieldExplanation,
14
- mergeFieldSx
15
- } from "./chunk-UTVSYS6S.mjs";
16
- import "./chunk-EW4DTFH3.mjs";
17
- import {
18
- MuiModal
19
- } from "./chunk-UDREPVEY.mjs";
20
- import {
21
- CLASSNAMEs
22
- } from "./chunk-CWFWRZWU.mjs";
23
- import "./chunk-HR3A4H4E.mjs";
24
- import "./chunk-TDRA5EZI.mjs";
25
- import "./chunk-3DQINB57.mjs";
26
- import "./chunk-BGB7JHIU.mjs";
27
- import {
28
- MuiFormLabel,
29
- default as default5
30
- } from "./chunk-T4X375IG.mjs";
31
- import "./chunk-3VUAM2GY.mjs";
32
- import "./chunk-56TI2ZBT.mjs";
33
- import "./chunk-MDAUF7IL.mjs";
34
- import "./chunk-UMJ5SCIQ.mjs";
35
- import "./chunk-I5JWS4Z7.mjs";
36
- import "./chunk-XIMFP6RB.mjs";
37
- import {
38
- PreviewableFile
39
- } from "./chunk-AAH2O24U.mjs";
40
- import "./chunk-JIU5GVM7.mjs";
41
- import "./chunk-4Q54P737.mjs";
42
- import "./chunk-OP6LKXPA.mjs";
43
- import {
44
- default79 as default4
45
- } from "./chunk-ZVFYOXDE.mjs";
46
- import "./chunk-4RPFRNXG.mjs";
47
- import {
48
- default as default2,
49
- default2 as default3
50
- } from "./chunk-S6EZVRZC.mjs";
51
- import "./chunk-FJ6ZGZIA.mjs";
52
-
53
- // src/components/compound/UseForm/src/Fields/AvatarField.tsx
54
- import React from "react";
55
- import { Controller, useFormContext, useWatch } from "react-hook-form";
56
- import { jsx, jsxs } from "react/jsx-runtime";
57
- var AVATAR_CROP_CONFIG = { width: 200, unit: "px" };
58
- var AvatarCropPreview = React.forwardRef((_, ref) => {
59
- return /* @__PURE__ */ jsx(
60
- "canvas",
61
- {
62
- ref,
63
- width: 200,
64
- height: 200,
65
- style: {
66
- width: 200,
67
- height: 200,
68
- maxWidth: "100%",
69
- maxHeight: "100%",
70
- border: "1px dashed grey",
71
- borderRadius: "50%",
72
- objectFit: "contain",
73
- backgroundColor: "transparent"
74
- }
75
- }
76
- );
77
- });
78
- AvatarCropPreview.displayName = "AvatarCropPreview";
79
- function acceptToInputAccept(accept) {
80
- if (!accept) return "image/*";
81
- if (typeof accept === "string") return accept;
82
- const parts = [];
83
- Object.entries(accept).forEach(([mime, exts]) => {
84
- parts.push(mime);
85
- if (Array.isArray(exts)) parts.push(...exts);
86
- });
87
- return parts.length ? parts.join(",") : "image/*";
88
- }
89
- var AvatarField = ({ field }) => {
90
- const watchKey = field.slotProps?.watchAvatarNameKey;
91
- if (watchKey) {
92
- return /* @__PURE__ */ jsx(AvatarFieldWithNameWatch, { field, watchKey });
93
- }
94
- return /* @__PURE__ */ jsx(AvatarFieldView, { field, watchedName: void 0 });
95
- };
96
- var AvatarFieldWithNameWatch = ({
97
- field,
98
- watchKey
99
- }) => {
100
- const { control } = useFormContext();
101
- const watchedName = useWatch({
102
- control,
103
- name: watchKey
104
- });
105
- return /* @__PURE__ */ jsx(AvatarFieldView, { field, watchedName });
106
- };
107
- var AvatarFieldView = ({
108
- field,
109
- watchedName
110
- }) => {
111
- const { control, getValues, setValue } = useFormContext();
112
- const {
113
- name,
114
- label,
115
- required,
116
- disabled,
117
- sx,
118
- size,
119
- slotProps,
120
- errorMsg,
121
- defaultValue
122
- } = field;
123
- const avatarSlot = slotProps;
124
- const [editorOpen, setEditorOpen] = React.useState(false);
125
- const [editorFiles, setEditorFiles] = React.useState([]);
126
- const initialFileRef = React.useRef(null);
127
- const transientBlobUrlsRef = React.useRef([]);
128
- const inputAccept = acceptToInputAccept(avatarSlot?.accept);
129
- const backgroundIcon = (typeof avatarSlot?.useBackgroundIcon === "function" ? avatarSlot?.useBackgroundIcon() : null) || avatarSlot?.backgroundIcon;
130
- const displayNameRaw = (avatarSlot?.watchAvatarNameKey ? watchedName : void 0) ?? avatarSlot?.avatarName ?? avatarSlot?.name ?? "";
131
- const displayName = String(displayNameRaw ?? "").trim() || void 0;
132
- return /* @__PURE__ */ jsx(
133
- Controller,
134
- {
135
- control,
136
- name,
137
- defaultValue: defaultValue ?? null,
138
- render: ({ field: { onChange, value }, fieldState: { error } }) => {
139
- const fileValue = value ?? null;
140
- const src = fileValue?.url || fileValue?.blobUrl || "";
141
- const openEditor = () => {
142
- initialFileRef.current = fileValue;
143
- setEditorFiles(fileValue ? [fileValue] : []);
144
- setEditorOpen(true);
145
- };
146
- const closeEditor = () => {
147
- setEditorOpen(false);
148
- const init = initialFileRef.current;
149
- setEditorFiles(init ? [init] : []);
150
- transientBlobUrlsRef.current.forEach((u) => {
151
- try {
152
- URL.revokeObjectURL(u);
153
- } catch {
154
- }
155
- });
156
- transientBlobUrlsRef.current = [];
157
- };
158
- const handleSave = async (url) => {
159
- const next = url ? await new PreviewableFile({ url }).downloadFile() : null;
160
- if (url) {
161
- try {
162
- URL.revokeObjectURL(url);
163
- } catch {
164
- }
165
- }
166
- onChange(next);
167
- try {
168
- setValue(String(name), next, { shouldDirty: true, shouldTouch: true });
169
- } catch {
170
- }
171
- ;
172
- field.onChange?.(next, getValues());
173
- initialFileRef.current = next;
174
- setEditorFiles(next ? [next] : []);
175
- setEditorOpen(false);
176
- };
177
- const onFileSelectFromSelector = (file) => {
178
- if (!file) {
179
- setEditorFiles([]);
180
- return;
181
- }
182
- const blobUrl = URL.createObjectURL(file);
183
- transientBlobUrlsRef.current.push(blobUrl);
184
- const next = new PreviewableFile({
185
- path: file.name,
186
- blobUrl,
187
- filename: file.name,
188
- mimeType: file.type,
189
- size: file.size,
190
- fileType: file.type.startsWith("image/") ? "image" : "other"
191
- });
192
- setEditorFiles([next]);
193
- };
194
- return /* @__PURE__ */ jsxs(
195
- default5,
196
- {
197
- className: CLASSNAMEs.compound.useForm.avatarField,
198
- disabled,
199
- required,
200
- error: !!error,
201
- fullWidth: true,
202
- size: "small",
203
- sx: mergeFieldSx(size, sx),
204
- children: [
205
- /* @__PURE__ */ jsxs(default3, { direction: "column", alignItems: "center", justifyContent: "center", gap: 0.5, children: [
206
- /* @__PURE__ */ jsxs(default2, { sx: { display: "flex", alignItems: "center", gap: 1, mb: 1 }, children: [
207
- /* @__PURE__ */ jsx(MuiFormLabel, { component: "legend", children: label }),
208
- /* @__PURE__ */ jsx(Explanation_default, { explanation: getFieldExplanation(field) })
209
- ] }),
210
- /* @__PURE__ */ jsx(default2, { sx: { display: "flex", alignItems: "center", gap: 1 }, children: /* @__PURE__ */ jsx(default2, { sx: { cursor: disabled ? "not-allowed" : "pointer" }, children: /* @__PURE__ */ jsx(
211
- AvatarButton,
212
- {
213
- onClick: disabled ? void 0 : openEditor,
214
- size: avatarSlot?.size,
215
- dim: avatarSlot?.dim,
216
- name: displayName,
217
- src,
218
- backgroundIcon: src ? void 0 : backgroundIcon,
219
- icon: /* @__PURE__ */ jsx(default4, { fontSize: "small" }),
220
- "aria-label": label || "Avatar"
221
- }
222
- ) }) }),
223
- /* @__PURE__ */ jsx(FieldHelperText, { error, errorMsg, helpers: [field.helperText] })
224
- ] }),
225
- editorOpen ? /* @__PURE__ */ jsx(
226
- MuiModal,
227
- {
228
- className: CLASSNAMEs.elemental.modal,
229
- openProps: [editorOpen, setEditorOpen],
230
- onClose: closeEditor,
231
- title: label || "Avatar",
232
- size: { w: "70vw", h: "80vh" },
233
- children: /* @__PURE__ */ jsx(
234
- default2,
235
- {
236
- sx: {
237
- display: "flex",
238
- flexDirection: "column",
239
- height: "100%",
240
- gap: 2,
241
- overflow: "hidden"
242
- },
243
- children: /* @__PURE__ */ jsx(default2, { sx: { flex: "1 1 auto", minHeight: 0 }, children: /* @__PURE__ */ jsx(
244
- Cropper_default,
245
- {
246
- setImgNull: () => setEditorFiles([]),
247
- blobUrl: editorFiles?.[0]?.blobUrl || "",
248
- onSave: handleSave,
249
- onClear: () => handleSave(""),
250
- circularCrop: true,
251
- defaultRatio: 1,
252
- resizeCropEnabled: true,
253
- cropConfig: AVATAR_CROP_CONFIG,
254
- PreviewRenderer: AvatarCropPreview,
255
- showFileSelector: true,
256
- fileSelectorAccept: inputAccept,
257
- fileSelectorButtonLabel: "Select Image",
258
- onFileSelect: onFileSelectFromSelector
259
- }
260
- ) })
261
- }
262
- )
263
- }
264
- ) : null
265
- ]
266
- }
267
- );
268
- }
269
- }
270
- );
271
- };
272
- export {
273
- AvatarField
274
- };
275
- //# sourceMappingURL=AvatarField-SAODT3CZ.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/compound/UseForm/src/Fields/AvatarField.tsx"],"sourcesContent":["import React from 'react';\nimport { Controller, useFormContext, useWatch } from 'react-hook-form';\nimport { Box, Stack } from '@/ele/Box';\nimport { FormControl, FormLabel } from '@/ele/Form';\nimport { EditIcon } from '@/icons/MuiIcon';\n\nimport { FieldHelperText } from '../_utils/helperText';\nimport { AvatarButton } from '@/ele/Avatar';\nimport { MuiModal } from '@/ele/Modal';\nimport { Cropper } from '@/ele/Image';\n\nimport PreviewableFile from '@/_utils/classes/PreviewableFile';\nimport { FieldConfig, FormTypeMap, InferFormDataType } from '../_utils';\nimport { FIELD_TYPEs } from '../_utils/constants';\nimport type { AvatarSlotProps } from '../_utils/slotProps';\nimport Explanation from './Explanation';\nimport { CLASSNAMEs } from '@/_utils/_const/classNames';\nimport { getFieldExplanation, mergeFieldSx } from '../_utils/helpers';\n\ninterface AvatarFieldProps<T extends FormTypeMap = FormTypeMap> {\n field: Extract<FieldConfig<T>, { type: typeof FIELD_TYPEs.avatar }>;\n}\n\nconst AVATAR_CROP_CONFIG = { width: 200, unit: 'px' } as const;\n\nconst AvatarCropPreview = React.forwardRef<HTMLCanvasElement>((_, ref) => {\n return (\n <canvas\n ref={ref}\n width={200}\n height={200}\n style={{\n width: 200,\n height: 200,\n maxWidth: '100%',\n maxHeight: '100%',\n border: '1px dashed grey',\n borderRadius: '50%',\n objectFit: 'contain',\n backgroundColor: 'transparent',\n }}\n />\n );\n});\n\nAvatarCropPreview.displayName = 'AvatarCropPreview';\n\nfunction acceptToInputAccept(accept: AvatarSlotProps['accept']): string {\n if (!accept) return 'image/*';\n if (typeof accept === 'string') return accept;\n\n const parts: string[] = [];\n Object.entries(accept).forEach(([mime, exts]) => {\n parts.push(mime);\n if (Array.isArray(exts)) parts.push(...exts);\n });\n return parts.length ? parts.join(',') : 'image/*';\n}\n\nexport const AvatarField = <T extends FormTypeMap = FormTypeMap>({ field }: AvatarFieldProps<T>) => {\n const watchKey = (field.slotProps as AvatarSlotProps | undefined)?.watchAvatarNameKey;\n if (watchKey) {\n return <AvatarFieldWithNameWatch field={field} watchKey={watchKey} />;\n }\n return <AvatarFieldView field={field} watchedName={undefined} />;\n};\n\nconst AvatarFieldWithNameWatch = <T extends FormTypeMap>({\n field,\n watchKey,\n}: AvatarFieldProps<T> & { watchKey: string }) => {\n const { control } = useFormContext();\n const watchedName = useWatch({\n control,\n name: watchKey as never,\n });\n return <AvatarFieldView field={field} watchedName={watchedName} />;\n};\n\nconst AvatarFieldView = <T extends FormTypeMap>({\n field,\n watchedName,\n}: AvatarFieldProps<T> & { watchedName: unknown }) => {\n const { control, getValues, setValue } = useFormContext();\n\n const {\n name,\n label,\n required,\n disabled,\n sx,\n size,\n slotProps,\n errorMsg,\n defaultValue,\n } = field;\n\n const avatarSlot = slotProps as AvatarSlotProps | undefined;\n const [editorOpen, setEditorOpen] = React.useState(false);\n const [editorFiles, setEditorFiles] = React.useState<PreviewableFile[]>([]);\n const initialFileRef = React.useRef<PreviewableFile | null>(null);\n const transientBlobUrlsRef = React.useRef<string[]>([]);\n\n const inputAccept = acceptToInputAccept(avatarSlot?.accept);\n const backgroundIcon = (typeof avatarSlot?.useBackgroundIcon === 'function'\n ? avatarSlot?.useBackgroundIcon()\n : null) || avatarSlot?.backgroundIcon;\n\n const displayNameRaw =\n (avatarSlot?.watchAvatarNameKey ? watchedName : undefined) ??\n avatarSlot?.avatarName ??\n avatarSlot?.name ??\n '';\n const displayName = String(displayNameRaw ?? '').trim() || undefined;\n\n return (\n <Controller\n control={control}\n name={name}\n defaultValue={(defaultValue ?? null) as PreviewableFile | null}\n render={({ field: { onChange, value }, fieldState: { error } }) => {\n const fileValue = (value ?? null) as PreviewableFile | null;\n const src = fileValue?.url || fileValue?.blobUrl || '';\n\n // unified helper text component\n // use FieldHelperText to render slot or validation messages consistently\n\n const openEditor = () => {\n initialFileRef.current = fileValue;\n setEditorFiles(fileValue ? [fileValue] : []);\n setEditorOpen(true);\n };\n\n const closeEditor = () => {\n setEditorOpen(false);\n const init = initialFileRef.current;\n setEditorFiles(init ? [init] : []);\n\t\t\t// revoke any blob urls created during this editor session\n\t\t\ttransientBlobUrlsRef.current.forEach((u) => {\n\t\t\t\ttry { URL.revokeObjectURL(u); } catch { /* ignore */ }\n\t\t\t});\n\t\t\ttransientBlobUrlsRef.current = [];\n };\n\n const handleSave = async (url: string) => {\n const next = url\n ? await new PreviewableFile({ url }).downloadFile()\n : null;\n\t\t\t// url from Cropper is a blob URL we no longer need once downloaded\n\t\t\tif (url) {\n\t\t\t\ttry { URL.revokeObjectURL(url); } catch { /* ignore */ }\n\t\t\t}\n\n onChange(next);\n // ensure react-hook-form value is set directly as well\n try { setValue(String(name), next, { shouldDirty: true, shouldTouch: true }); } catch { /* ignore */ };\n field.onChange?.(next, getValues() as InferFormDataType<T>);\n\n initialFileRef.current = next;\n setEditorFiles(next ? [next] : []);\n setEditorOpen(false);\n };\n\n // onFileSelect handler used by Cropper's built-in selector\n const onFileSelectFromSelector = (file: File | null) => {\n if (!file) {\n setEditorFiles([]);\n return;\n }\n\n const blobUrl = URL.createObjectURL(file);\n transientBlobUrlsRef.current.push(blobUrl);\n\n const next = new PreviewableFile({\n path: file.name,\n blobUrl,\n filename: file.name,\n mimeType: file.type,\n size: file.size,\n fileType: file.type.startsWith('image/') ? 'image' : 'other',\n });\n\n setEditorFiles([next]);\n };\n\n return (\n <FormControl\n className={CLASSNAMEs.compound.useForm.avatarField}\n disabled={disabled}\n required={required}\n error={!!error}\n fullWidth\n size=\"small\"\n sx={mergeFieldSx(size, sx)}\n >\n <Stack direction=\"column\" alignItems=\"center\" justifyContent=\"center\" gap={0.5}>\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 1, mb: 1 }}>\n <FormLabel component=\"legend\">{label}</FormLabel>\n <Explanation explanation={getFieldExplanation(field)} />\n </Box>\n\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 1, }}>\n <Box sx={{ cursor: disabled ? 'not-allowed' : 'pointer' }}>\n <AvatarButton\n onClick={disabled ? undefined : openEditor}\n size={avatarSlot?.size}\n dim={avatarSlot?.dim}\n name={displayName}\n src={src}\n backgroundIcon={src ? undefined : backgroundIcon}\n icon={<EditIcon fontSize=\"small\" />}\n aria-label={label || 'Avatar'}\n />\n </Box>\n </Box>\n\n <FieldHelperText error={error} errorMsg={errorMsg} helpers={[field.helperText]} />\n </Stack>\n\n {editorOpen ? (\n <MuiModal\n className={CLASSNAMEs.elemental.modal}\n openProps={[editorOpen, setEditorOpen]}\n onClose={closeEditor}\n title={label || 'Avatar'}\n size={{ w: '70vw', h: '80vh' }}\n >\n <Box\n sx={{\n display: 'flex',\n flexDirection: 'column',\n height: '100%',\n gap: 2,\n overflow: 'hidden',\n }}>\n <Box sx={{ flex: '1 1 auto', minHeight: 0 }}>\n <Cropper\n setImgNull={() => setEditorFiles([])}\n blobUrl={editorFiles?.[0]?.blobUrl || ''}\n onSave={handleSave}\n onClear={() => handleSave('')}\n circularCrop\n defaultRatio={1}\n resizeCropEnabled\n cropConfig={AVATAR_CROP_CONFIG}\n PreviewRenderer={AvatarCropPreview}\n showFileSelector\n fileSelectorAccept={inputAccept}\n fileSelectorButtonLabel=\"Select Image\"\n onFileSelect={onFileSelectFromSelector}\n />\n </Box>\n </Box>\n </MuiModal>\n ) : null}\n\n \n </FormControl>\n );\n }}\n />\n );\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,WAAW;AAClB,SAAS,YAAY,gBAAgB,gBAAgB;AA0BjD,cAyKU,YAzKV;AAJJ,IAAM,qBAAqB,EAAE,OAAO,KAAK,MAAM,KAAK;AAEpD,IAAM,oBAAoB,MAAM,WAA8B,CAAC,GAAG,QAAQ;AACxE,SACE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,OAAO;AAAA,QACL,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,UAAU;AAAA,QACV,WAAW;AAAA,QACX,QAAQ;AAAA,QACR,cAAc;AAAA,QACd,WAAW;AAAA,QACX,iBAAiB;AAAA,MACnB;AAAA;AAAA,EACF;AAEJ,CAAC;AAED,kBAAkB,cAAc;AAEhC,SAAS,oBAAoB,QAA2C;AACtE,MAAI,CAAC,OAAQ,QAAO;AACpB,MAAI,OAAO,WAAW,SAAU,QAAO;AAEvC,QAAM,QAAkB,CAAC;AACzB,SAAO,QAAQ,MAAM,EAAE,QAAQ,CAAC,CAAC,MAAM,IAAI,MAAM;AAC/C,UAAM,KAAK,IAAI;AACf,QAAI,MAAM,QAAQ,IAAI,EAAG,OAAM,KAAK,GAAG,IAAI;AAAA,EAC7C,CAAC;AACD,SAAO,MAAM,SAAS,MAAM,KAAK,GAAG,IAAI;AAC1C;AAEO,IAAM,cAAc,CAAsC,EAAE,MAAM,MAA2B;AAClG,QAAM,WAAY,MAAM,WAA2C;AACnE,MAAI,UAAU;AACZ,WAAO,oBAAC,4BAAyB,OAAc,UAAoB;AAAA,EACrE;AACA,SAAO,oBAAC,mBAAgB,OAAc,aAAa,QAAW;AAChE;AAEA,IAAM,2BAA2B,CAAwB;AAAA,EACvD;AAAA,EACA;AACF,MAAkD;AAChD,QAAM,EAAE,QAAQ,IAAI,eAAe;AACnC,QAAM,cAAc,SAAS;AAAA,IAC3B;AAAA,IACA,MAAM;AAAA,EACR,CAAC;AACD,SAAO,oBAAC,mBAAgB,OAAc,aAA0B;AAClE;AAEA,IAAM,kBAAkB,CAAwB;AAAA,EAC9C;AAAA,EACA;AACF,MAAsD;AACpD,QAAM,EAAE,SAAS,WAAW,SAAS,IAAI,eAAe;AAExD,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI;AAEJ,QAAM,aAAa;AACnB,QAAM,CAAC,YAAY,aAAa,IAAI,MAAM,SAAS,KAAK;AACxD,QAAM,CAAC,aAAa,cAAc,IAAI,MAAM,SAA4B,CAAC,CAAC;AAC1E,QAAM,iBAAiB,MAAM,OAA+B,IAAI;AAChE,QAAM,uBAAuB,MAAM,OAAiB,CAAC,CAAC;AAEtD,QAAM,cAAc,oBAAoB,YAAY,MAAM;AAC1D,QAAM,kBAAkB,OAAO,YAAY,sBAAsB,aAC7D,YAAY,kBAAkB,IAC9B,SAAS,YAAY;AAEzB,QAAM,kBACH,YAAY,qBAAqB,cAAc,WAChD,YAAY,cACZ,YAAY,QACZ;AACF,QAAM,cAAc,OAAO,kBAAkB,EAAE,EAAE,KAAK,KAAK;AAE3D,SACE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA;AAAA,MACA,cAAe,gBAAgB;AAAA,MAC/B,QAAQ,CAAC,EAAE,OAAO,EAAE,UAAU,MAAM,GAAG,YAAY,EAAE,MAAM,EAAE,MAAM;AACjE,cAAM,YAAa,SAAS;AAC5B,cAAM,MAAM,WAAW,OAAO,WAAW,WAAW;AAKpD,cAAM,aAAa,MAAM;AACvB,yBAAe,UAAU;AACzB,yBAAe,YAAY,CAAC,SAAS,IAAI,CAAC,CAAC;AAC3C,wBAAc,IAAI;AAAA,QACpB;AAEA,cAAM,cAAc,MAAM;AACxB,wBAAc,KAAK;AACnB,gBAAM,OAAO,eAAe;AAC5B,yBAAe,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC;AAExC,+BAAqB,QAAQ,QAAQ,CAAC,MAAM;AAC3C,gBAAI;AAAE,kBAAI,gBAAgB,CAAC;AAAA,YAAG,QAAQ;AAAA,YAAe;AAAA,UACtD,CAAC;AACD,+BAAqB,UAAU,CAAC;AAAA,QAC3B;AAEA,cAAM,aAAa,OAAO,QAAgB;AACxC,gBAAM,OAAO,MACT,MAAM,IAAI,gBAAgB,EAAE,IAAI,CAAC,EAAE,aAAa,IAChD;AAEX,cAAI,KAAK;AACR,gBAAI;AAAE,kBAAI,gBAAgB,GAAG;AAAA,YAAG,QAAQ;AAAA,YAAe;AAAA,UACxD;AAEO,mBAAS,IAAI;AAEb,cAAI;AAAE,qBAAS,OAAO,IAAI,GAAG,MAAM,EAAE,aAAa,MAAM,aAAa,KAAK,CAAC;AAAA,UAAG,QAAQ;AAAA,UAAe;AAAC;AACtG,gBAAM,WAAW,MAAM,UAAU,CAAyB;AAE1D,yBAAe,UAAU;AACzB,yBAAe,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC;AACjC,wBAAc,KAAK;AAAA,QACrB;AAGF,cAAM,2BAA2B,CAAC,SAAsB;AACtD,cAAI,CAAC,MAAM;AACT,2BAAe,CAAC,CAAC;AACjB;AAAA,UACF;AAEA,gBAAM,UAAU,IAAI,gBAAgB,IAAI;AACxC,+BAAqB,QAAQ,KAAK,OAAO;AAEzC,gBAAM,OAAO,IAAI,gBAAgB;AAAA,YAC/B,MAAM,KAAK;AAAA,YACX;AAAA,YACA,UAAU,KAAK;AAAA,YACf,UAAU,KAAK;AAAA,YACf,MAAM,KAAK;AAAA,YACX,UAAU,KAAK,KAAK,WAAW,QAAQ,IAAI,UAAU;AAAA,UACvD,CAAC;AAED,yBAAe,CAAC,IAAI,CAAC;AAAA,QACvB;AAEE,eACE;AAAA,UAACA;AAAA,UAAA;AAAA,YACC,WAAW,WAAW,SAAS,QAAQ;AAAA,YACvC;AAAA,YACA;AAAA,YACA,OAAO,CAAC,CAAC;AAAA,YACT,WAAS;AAAA,YACT,MAAK;AAAA,YACL,IAAI,aAAa,MAAM,EAAE;AAAA,YAEzB;AAAA,mCAACA,UAAA,EAAM,WAAU,UAAS,YAAW,UAAS,gBAAe,UAAS,KAAK,KACzE;AAAA,qCAACA,UAAA,EAAI,IAAI,EAAE,SAAS,QAAQ,YAAY,UAAU,KAAK,GAAG,IAAI,EAAE,GAC9D;AAAA,sCAAC,gBAAU,WAAU,UAAU,iBAAM;AAAA,kBACrC,oBAAC,uBAAY,aAAa,oBAAoB,KAAK,GAAG;AAAA,mBACxD;AAAA,gBAEA,oBAACA,UAAA,EAAI,IAAI,EAAE,SAAS,QAAQ,YAAY,UAAU,KAAK,EAAG,GACxD,8BAACA,UAAA,EAAI,IAAI,EAAE,QAAQ,WAAW,gBAAgB,UAAU,GACtD;AAAA,kBAAC;AAAA;AAAA,oBACC,SAAS,WAAW,SAAY;AAAA,oBAChC,MAAM,YAAY;AAAA,oBAClB,KAAK,YAAY;AAAA,oBACjB,MAAM;AAAA,oBACN;AAAA,oBACA,gBAAgB,MAAM,SAAY;AAAA,oBAClC,MAAM,oBAACA,UAAA,EAAS,UAAS,SAAQ;AAAA,oBACjC,cAAY,SAAS;AAAA;AAAA,gBACvB,GACF,GACF;AAAA,gBAEA,oBAAC,mBAAgB,OAAc,UAAoB,SAAS,CAAC,MAAM,UAAU,GAAG;AAAA,iBAClF;AAAA,cAEC,aACD;AAAA,gBAAC;AAAA;AAAA,kBACC,WAAW,WAAW,UAAU;AAAA,kBAChC,WAAW,CAAC,YAAY,aAAa;AAAA,kBACrC,SAAS;AAAA,kBACT,OAAO,SAAS;AAAA,kBAChB,MAAM,EAAE,GAAG,QAAQ,GAAG,OAAO;AAAA,kBAE7B;AAAA,oBAACA;AAAA,oBAAA;AAAA,sBACC,IAAI;AAAA,wBACF,SAAS;AAAA,wBACT,eAAe;AAAA,wBACf,QAAQ;AAAA,wBACR,KAAK;AAAA,wBACL,UAAU;AAAA,sBACZ;AAAA,sBACA,8BAACA,UAAA,EAAI,IAAI,EAAE,MAAM,YAAY,WAAW,EAAE,GACxC;AAAA,wBAAC;AAAA;AAAA,0BACC,YAAY,MAAM,eAAe,CAAC,CAAC;AAAA,0BACnC,SAAS,cAAc,CAAC,GAAG,WAAW;AAAA,0BACtC,QAAQ;AAAA,0BACR,SAAS,MAAM,WAAW,EAAE;AAAA,0BAC5B,cAAY;AAAA,0BACZ,cAAc;AAAA,0BACd,mBAAiB;AAAA,0BACjB,YAAY;AAAA,0BACZ,iBAAiB;AAAA,0BACjB,kBAAgB;AAAA,0BAChB,oBAAoB;AAAA,0BACpB,yBAAwB;AAAA,0BACxB,cAAc;AAAA;AAAA,sBAChB,GACF;AAAA;AAAA,kBACF;AAAA;AAAA,cACF,IACI;AAAA;AAAA;AAAA,QAGN;AAAA,MAEJ;AAAA;AAAA,EACF;AAEJ;","names":["default"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/compound/UseForm/src/Fields/DateField.tsx"],"sourcesContent":["import { Controller, useFormContext } from 'react-hook-form';\nimport dayjs from 'dayjs'\nimport { Box } from '@/ele/Box';\nimport { MuiXDatePicker } from '@/ele/DatePicker';\nimport { FieldConfig, FormTypeMap, InferFormDataType } from '../_utils';\nimport { FIELD_TYPEs } from '../_utils/constants';\nimport Explanation from './Explanation';\nimport { getFieldExplanation, mergeFieldSx } from '../_utils/helpers';\nimport { mergeSx } from '@/_utils/_func';\n\ninterface DateFieldProps<T extends FormTypeMap = FormTypeMap> {\n field: Extract<FieldConfig<T>, { type: typeof FIELD_TYPEs.date }>;\n}\n\nexport const DateField = <T extends FormTypeMap = FormTypeMap>({ field }: DateFieldProps<T>) => {\n const { control, getValues } = useFormContext();\n const {\n name,\n label,\n sx,\n size,\n slotProps,\n errorMsg,\n defaultValue,\n } = field;\n\n const defaultVal = defaultValue as string | Date | undefined;\n\n return (\n <Controller\n control={control}\n name={name}\n defaultValue={defaultVal ?? null}\n render={({ field: { onChange, value }, fieldState: { error } }) => (\n <Box sx={mergeSx({ display: 'flex', alignItems: 'flex-start', gap: 1 }, mergeFieldSx(size, sx))}>\n <MuiXDatePicker\n {...slotProps}\n label={label}\n value={value ? dayjs(value) : null}\n onChange={(d) => {\n if (!d) {\n onChange(null);\n field.onChange?.(null, getValues() as InferFormDataType<T>);\n return;\n }\n const maybeDate = typeof d.toDate === 'function' ? d.toDate() : (d);\n onChange(maybeDate as Date);\n field.onChange?.(maybeDate as Date, getValues() as InferFormDataType<T>);\n }}\n\n slotProps={{\n ...(slotProps?.slotProps),\n textField: {\n ...(slotProps?.slotProps?.textField),\n error: !!error,\n helperText: error ? (errorMsg || error.message) : undefined,\n },\n openPickerIcon: {\n sx: { fontSize: '1.25rem' }\n }\n }}\n />\n <Explanation alignToInput explanation={getFieldExplanation(field)} />\n </Box>\n )}\n />\n );\n};\n\nexport default DateField;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA,SAAS,YAAY,sBAAsB;AAC3C,OAAO,WAAW;AAiCV,SACE,KADF;AApBD,IAAM,YAAY,CAAsC,EAAE,MAAM,MAAyB;AAC9F,QAAM,EAAE,SAAS,UAAU,IAAI,eAAe;AAC9C,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI;AAEJ,QAAM,aAAa;AAEnB,SACE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA;AAAA,MACA,cAAc,cAAc;AAAA,MAC5B,QAAQ,CAAC,EAAE,OAAO,EAAE,UAAU,MAAM,GAAG,YAAY,EAAE,MAAM,EAAE,MAC3D,qBAACA,UAAA,EAAI,IAAI,QAAQ,EAAE,SAAS,QAAQ,YAAY,cAAc,KAAK,EAAE,GAAG,aAAa,MAAM,EAAE,CAAC,GAC5F;AAAA;AAAA,UAAC;AAAA;AAAA,YACE,GAAG;AAAA,YACJ;AAAA,YACA,OAAO,QAAQ,MAAM,KAAK,IAAI;AAAA,YAC9B,UAAU,CAAC,MAAM;AACf,kBAAI,CAAC,GAAG;AACN,yBAAS,IAAI;AACb,sBAAM,WAAW,MAAM,UAAU,CAAyB;AAC1D;AAAA,cACF;AACA,oBAAM,YAAY,OAAO,EAAE,WAAW,aAAa,EAAE,OAAO,IAAK;AACjE,uBAAS,SAAiB;AAC1B,oBAAM,WAAW,WAAmB,UAAU,CAAyB;AAAA,YACzE;AAAA,YAEA,WAAW;AAAA,cACT,GAAI,WAAW;AAAA,cACf,WAAW;AAAA,gBACT,GAAI,WAAW,WAAW;AAAA,gBAC1B,OAAO,CAAC,CAAC;AAAA,gBACT,YAAY,QAAS,YAAY,MAAM,UAAW;AAAA,cACpD;AAAA,cACA,gBAAgB;AAAA,gBACd,IAAI,EAAE,UAAU,UAAU;AAAA,cAC5B;AAAA,YACF;AAAA;AAAA,QACF;AAAA,QACA,oBAAC,uBAAY,cAAY,MAAC,aAAa,oBAAoB,KAAK,GAAG;AAAA,SACrE;AAAA;AAAA,EAEJ;AAEJ;AAEA,IAAO,oBAAQ;","names":["default"]}