@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.
- package/README.md +110 -0
- package/dist/AutocompleteField-ZKNU2IRR.mjs +181 -0
- package/dist/AutocompleteField-ZKNU2IRR.mjs.map +1 -0
- package/dist/AvatarField-SAODT3CZ.mjs +275 -0
- package/dist/AvatarField-SAODT3CZ.mjs.map +1 -0
- package/dist/CodeEditor-JF55ZNVD.mjs +34 -0
- package/dist/CodeEditor-JF55ZNVD.mjs.map +1 -0
- package/dist/DateField-ZYMZFHL4.mjs +82 -0
- package/dist/DateField-ZYMZFHL4.mjs.map +1 -0
- package/dist/DateTimeField-TPTJ7YIZ.mjs +65 -0
- package/dist/DateTimeField-TPTJ7YIZ.mjs.map +1 -0
- package/dist/FileUploadField-NTMWBJER.mjs +78 -0
- package/dist/FileUploadField-NTMWBJER.mjs.map +1 -0
- package/dist/JSONEditorField-TMRWGXVR.mjs +64 -0
- package/dist/JSONEditorField-TMRWGXVR.mjs.map +1 -0
- package/dist/PopperMenu-LJ36RPBW.mjs +416 -0
- package/dist/PopperMenu-LJ36RPBW.mjs.map +1 -0
- package/dist/TelField-LOGRVZ4I.mjs +88 -0
- package/dist/TelField-LOGRVZ4I.mjs.map +1 -0
- package/dist/alert.d.mts +202 -0
- package/dist/alert.d.ts +202 -0
- package/dist/alert.js +784 -0
- package/dist/alert.js.map +1 -0
- package/dist/alert.mjs +47 -0
- package/dist/alert.mjs.map +1 -0
- package/dist/appBar.d.mts +21 -0
- package/dist/appBar.d.ts +21 -0
- package/dist/appBar.js +64 -0
- package/dist/appBar.js.map +1 -0
- package/dist/appBar.mjs +12 -0
- package/dist/appBar.mjs.map +1 -0
- package/dist/autocomplete.d.mts +121 -0
- package/dist/autocomplete.d.ts +121 -0
- package/dist/autocomplete.js +2052 -0
- package/dist/autocomplete.js.map +1 -0
- package/dist/autocomplete.mjs +21 -0
- package/dist/autocomplete.mjs.map +1 -0
- package/dist/avatar.d.mts +253 -0
- package/dist/avatar.d.ts +253 -0
- package/dist/avatar.js +992 -0
- package/dist/avatar.js.map +1 -0
- package/dist/avatar.mjs +41 -0
- package/dist/avatar.mjs.map +1 -0
- package/dist/badge.d.mts +123 -0
- package/dist/badge.d.ts +123 -0
- package/dist/badge.js +151 -0
- package/dist/badge.js.map +1 -0
- package/dist/badge.mjs +10 -0
- package/dist/badge.mjs.map +1 -0
- package/dist/box.d.mts +36 -0
- package/dist/box.d.ts +36 -0
- package/dist/box.js +199 -0
- package/dist/box.js.map +1 -0
- package/dist/box.mjs +14 -0
- package/dist/box.mjs.map +1 -0
- package/dist/button.d.mts +230 -52
- package/dist/button.d.ts +230 -52
- package/dist/button.js +392 -60
- package/dist/button.js.map +1 -1
- package/dist/button.mjs +14 -8
- package/dist/card.d.mts +47 -0
- package/dist/card.d.ts +47 -0
- package/dist/card.js +135 -0
- package/dist/card.js.map +1 -0
- package/dist/card.mjs +24 -0
- package/dist/card.mjs.map +1 -0
- package/dist/chart.d.mts +40 -0
- package/dist/chart.d.ts +40 -0
- package/dist/chart.js +1234 -0
- package/dist/chart.js.map +1 -0
- package/dist/chart.mjs +10 -0
- package/dist/chart.mjs.map +1 -0
- package/dist/checkbox.d.mts +62 -0
- package/dist/checkbox.d.ts +62 -0
- package/dist/checkbox.js +299 -0
- package/dist/checkbox.js.map +1 -0
- package/dist/checkbox.mjs +14 -0
- package/dist/checkbox.mjs.map +1 -0
- package/dist/chip.d.mts +96 -0
- package/dist/chip.d.ts +96 -0
- package/dist/chip.js +112 -0
- package/dist/chip.js.map +1 -0
- package/dist/chip.mjs +10 -0
- package/dist/chip.mjs.map +1 -0
- package/dist/chunk-24XDGNJ6.mjs +1450 -0
- package/dist/chunk-24XDGNJ6.mjs.map +1 -0
- package/dist/chunk-27KYFU7R.mjs +30 -0
- package/dist/chunk-27KYFU7R.mjs.map +1 -0
- package/dist/chunk-2FFLT5VP.mjs +7 -0
- package/dist/chunk-2FFLT5VP.mjs.map +1 -0
- package/dist/chunk-2ZZJTBTE.mjs +148 -0
- package/dist/chunk-2ZZJTBTE.mjs.map +1 -0
- package/dist/chunk-3DQINB57.mjs +15 -0
- package/dist/chunk-3DQINB57.mjs.map +1 -0
- package/dist/chunk-3VUAM2GY.mjs +52 -0
- package/dist/chunk-3VUAM2GY.mjs.map +1 -0
- package/dist/chunk-4Q54P737.mjs +19 -0
- package/dist/chunk-4Q54P737.mjs.map +1 -0
- package/dist/chunk-4RPFRNXG.mjs +62 -0
- package/dist/chunk-4RPFRNXG.mjs.map +1 -0
- package/dist/chunk-56TI2ZBT.mjs +114 -0
- package/dist/chunk-56TI2ZBT.mjs.map +1 -0
- package/dist/chunk-6REEQBJI.mjs +62 -0
- package/dist/chunk-6REEQBJI.mjs.map +1 -0
- package/dist/chunk-AAH2O24U.mjs +325 -0
- package/dist/chunk-AAH2O24U.mjs.map +1 -0
- package/dist/chunk-B7DAB22K.mjs +16 -0
- package/dist/chunk-B7DAB22K.mjs.map +1 -0
- package/dist/chunk-BGB7JHIU.mjs +222 -0
- package/dist/chunk-BGB7JHIU.mjs.map +1 -0
- package/dist/chunk-CRYIEYZZ.mjs +756 -0
- package/dist/chunk-CRYIEYZZ.mjs.map +1 -0
- package/dist/chunk-CWFWRZWU.mjs +23 -0
- package/dist/chunk-CWFWRZWU.mjs.map +1 -0
- package/dist/chunk-DELCADNF.mjs +1926 -0
- package/dist/chunk-DELCADNF.mjs.map +1 -0
- package/dist/chunk-E3I2VDHZ.mjs +292 -0
- package/dist/chunk-E3I2VDHZ.mjs.map +1 -0
- package/dist/chunk-EEH7HACG.mjs +249 -0
- package/dist/chunk-EEH7HACG.mjs.map +1 -0
- package/dist/chunk-EKPULYPU.mjs +497 -0
- package/dist/chunk-EKPULYPU.mjs.map +1 -0
- package/dist/chunk-EW4DTFH3.mjs +69 -0
- package/dist/chunk-EW4DTFH3.mjs.map +1 -0
- package/dist/chunk-FJ6ZGZIA.mjs +43 -0
- package/dist/chunk-FJ6ZGZIA.mjs.map +1 -0
- package/dist/chunk-HE7MY3RT.mjs +23 -0
- package/dist/chunk-HE7MY3RT.mjs.map +1 -0
- package/dist/chunk-HR3A4H4E.mjs +1289 -0
- package/dist/chunk-HR3A4H4E.mjs.map +1 -0
- package/dist/chunk-I5JWS4Z7.mjs +91 -0
- package/dist/chunk-I5JWS4Z7.mjs.map +1 -0
- package/dist/chunk-IN3O4R7Q.mjs +932 -0
- package/dist/chunk-IN3O4R7Q.mjs.map +1 -0
- package/dist/chunk-JIU5GVM7.mjs +414 -0
- package/dist/chunk-JIU5GVM7.mjs.map +1 -0
- package/dist/chunk-JWANK42G.mjs +170 -0
- package/dist/chunk-JWANK42G.mjs.map +1 -0
- package/dist/chunk-MDAUF7IL.mjs +9 -0
- package/dist/chunk-MDAUF7IL.mjs.map +1 -0
- package/dist/chunk-MI64T62E.mjs +26 -0
- package/dist/chunk-MI64T62E.mjs.map +1 -0
- package/dist/chunk-NJYNJLT7.mjs +172 -0
- package/dist/chunk-NJYNJLT7.mjs.map +1 -0
- package/dist/chunk-NLBDBJ3R.mjs +97 -0
- package/dist/chunk-NLBDBJ3R.mjs.map +1 -0
- package/dist/chunk-OGNGPI3M.mjs +333 -0
- package/dist/chunk-OGNGPI3M.mjs.map +1 -0
- package/dist/chunk-OJV6V7YZ.mjs +552 -0
- package/dist/chunk-OJV6V7YZ.mjs.map +1 -0
- package/dist/chunk-ONQMRE2G.mjs +26 -0
- package/dist/chunk-ONQMRE2G.mjs.map +1 -0
- package/dist/chunk-OP6LKXPA.mjs +75 -0
- package/dist/chunk-OP6LKXPA.mjs.map +1 -0
- package/dist/chunk-QFF3HTHL.mjs +14 -0
- package/dist/chunk-QFF3HTHL.mjs.map +1 -0
- package/dist/chunk-QKGCW37O.mjs +1175 -0
- package/dist/chunk-QKGCW37O.mjs.map +1 -0
- package/dist/chunk-R5MKQN6D.mjs +227 -0
- package/dist/chunk-R5MKQN6D.mjs.map +1 -0
- package/dist/chunk-RXBQ7KXF.mjs +652 -0
- package/dist/chunk-RXBQ7KXF.mjs.map +1 -0
- package/dist/chunk-S6EZVRZC.mjs +161 -0
- package/dist/chunk-S6EZVRZC.mjs.map +1 -0
- package/dist/chunk-SGCUDWO3.mjs +396 -0
- package/dist/chunk-SGCUDWO3.mjs.map +1 -0
- package/dist/chunk-SRWPHN2N.mjs +188 -0
- package/dist/chunk-SRWPHN2N.mjs.map +1 -0
- package/dist/chunk-T34IULP5.mjs +242 -0
- package/dist/chunk-T34IULP5.mjs.map +1 -0
- package/dist/chunk-T4X375IG.mjs +100 -0
- package/dist/chunk-T4X375IG.mjs.map +1 -0
- package/dist/chunk-T6AMRENK.mjs +376 -0
- package/dist/chunk-T6AMRENK.mjs.map +1 -0
- package/dist/chunk-TDRA5EZI.mjs +325 -0
- package/dist/chunk-TDRA5EZI.mjs.map +1 -0
- package/dist/chunk-UDREPVEY.mjs +356 -0
- package/dist/chunk-UDREPVEY.mjs.map +1 -0
- package/dist/chunk-UGMRJMFZ.mjs +172 -0
- package/dist/chunk-UGMRJMFZ.mjs.map +1 -0
- package/dist/chunk-UMJ5SCIQ.mjs +438 -0
- package/dist/chunk-UMJ5SCIQ.mjs.map +1 -0
- package/dist/chunk-UTVSYS6S.mjs +270 -0
- package/dist/chunk-UTVSYS6S.mjs.map +1 -0
- package/dist/chunk-V26V2S3W.mjs +197 -0
- package/dist/chunk-V26V2S3W.mjs.map +1 -0
- package/dist/chunk-VYD3PDBB.mjs +38 -0
- package/dist/chunk-VYD3PDBB.mjs.map +1 -0
- package/dist/chunk-WYYP3Y34.mjs +55 -0
- package/dist/chunk-WYYP3Y34.mjs.map +1 -0
- package/dist/chunk-XIMFP6RB.mjs +161 -0
- package/dist/chunk-XIMFP6RB.mjs.map +1 -0
- package/dist/chunk-XJ2SXC2Q.mjs +558 -0
- package/dist/chunk-XJ2SXC2Q.mjs.map +1 -0
- package/dist/chunk-Y74ALKBL.mjs +565 -0
- package/dist/chunk-Y74ALKBL.mjs.map +1 -0
- package/dist/chunk-ZG3NQI77.mjs +353 -0
- package/dist/chunk-ZG3NQI77.mjs.map +1 -0
- package/dist/chunk-ZVFYOXDE.mjs +297 -0
- package/dist/chunk-ZVFYOXDE.mjs.map +1 -0
- package/dist/collapse.d.mts +10 -0
- package/dist/collapse.d.ts +10 -0
- package/dist/collapse.js +53 -0
- package/dist/collapse.js.map +1 -0
- package/dist/collapse.mjs +10 -0
- package/dist/collapse.mjs.map +1 -0
- package/dist/datePicker.d.mts +133 -0
- package/dist/datePicker.d.ts +133 -0
- package/dist/datePicker.js +482 -0
- package/dist/datePicker.js.map +1 -0
- package/dist/datePicker.mjs +29 -0
- package/dist/datePicker.mjs.map +1 -0
- package/dist/displayFile.d.mts +95 -0
- package/dist/displayFile.d.ts +95 -0
- package/dist/displayFile.js +357 -0
- package/dist/displayFile.js.map +1 -0
- package/dist/displayFile.mjs +19 -0
- package/dist/displayFile.mjs.map +1 -0
- package/dist/divider.d.mts +9 -0
- package/dist/divider.d.ts +9 -0
- package/dist/divider.js +52 -0
- package/dist/divider.js.map +1 -0
- package/dist/divider.mjs +10 -0
- package/dist/divider.mjs.map +1 -0
- package/dist/fileUploader.d.mts +86 -0
- package/dist/fileUploader.d.ts +86 -0
- package/dist/fileUploader.js +722 -0
- package/dist/fileUploader.js.map +1 -0
- package/dist/fileUploader.mjs +16 -0
- package/dist/fileUploader.mjs.map +1 -0
- package/dist/flowMap.d.mts +353 -0
- package/dist/flowMap.d.ts +353 -0
- package/dist/flowMap.js +94806 -0
- package/dist/flowMap.js.map +1 -0
- package/dist/flowMap.mjs +94585 -0
- package/dist/flowMap.mjs.map +1 -0
- package/dist/form.d.mts +84 -0
- package/dist/form.d.ts +84 -0
- package/dist/form.js +144 -0
- package/dist/form.js.map +1 -0
- package/dist/form.mjs +24 -0
- package/dist/form.mjs.map +1 -0
- package/dist/icons.d.mts +160 -0
- package/dist/icons.d.ts +160 -0
- package/dist/icons.js +540 -0
- package/dist/icons.js.map +1 -0
- package/dist/icons.mjs +306 -0
- package/dist/icons.mjs.map +1 -0
- package/dist/image.d.mts +49 -0
- package/dist/image.d.ts +49 -0
- package/dist/image.js +1348 -0
- package/dist/image.js.map +1 -0
- package/dist/image.mjs +19 -0
- package/dist/image.mjs.map +1 -0
- package/dist/index.d.ts +46 -0
- package/dist/index.js +20198 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +912 -0
- package/dist/index.mjs.map +1 -0
- package/dist/input.d.mts +195 -0
- package/dist/input.d.ts +195 -0
- package/dist/input.js +1101 -0
- package/dist/input.js.map +1 -0
- package/dist/input.mjs +32 -0
- package/dist/input.mjs.map +1 -0
- package/dist/jsonEditor.d.mts +13 -0
- package/dist/jsonEditor.d.ts +13 -0
- package/dist/jsonEditor.js +247 -0
- package/dist/jsonEditor.js.map +1 -0
- package/dist/jsonEditor.mjs +9 -0
- package/dist/jsonEditor.mjs.map +1 -0
- package/dist/list.d.mts +83 -0
- package/dist/list.d.ts +83 -0
- package/dist/list.js +564 -0
- package/dist/list.js.map +1 -0
- package/dist/list.mjs +39 -0
- package/dist/list.mjs.map +1 -0
- package/dist/loading.d.mts +48 -0
- package/dist/loading.d.ts +48 -0
- package/dist/loading.js +383 -0
- package/dist/loading.js.map +1 -0
- package/dist/loading.mjs +23 -0
- package/dist/loading.mjs.map +1 -0
- package/dist/markdown.d.mts +14 -0
- package/dist/markdown.d.ts +14 -0
- package/dist/markdown.js +25927 -0
- package/dist/markdown.js.map +1 -0
- package/dist/markdown.mjs +25623 -0
- package/dist/markdown.mjs.map +1 -0
- package/dist/menu.d.mts +368 -0
- package/dist/menu.d.ts +368 -0
- package/dist/menu.js +1571 -0
- package/dist/menu.js.map +1 -0
- package/dist/menu.mjs +43 -0
- package/dist/menu.mjs.map +1 -0
- package/dist/modal.d.mts +90 -0
- package/dist/modal.d.ts +90 -0
- package/dist/modal.js +883 -0
- package/dist/modal.js.map +1 -0
- package/dist/modal.mjs +25 -0
- package/dist/modal.mjs.map +1 -0
- package/dist/overlay.d.mts +2 -0
- package/dist/overlay.d.ts +2 -0
- package/dist/overlay.js +46 -0
- package/dist/overlay.js.map +1 -0
- package/dist/overlay.mjs +10 -0
- package/dist/overlay.mjs.map +1 -0
- package/dist/paper.d.mts +38 -0
- package/dist/paper.d.ts +38 -0
- package/dist/paper.js +90 -0
- package/dist/paper.js.map +1 -0
- package/dist/paper.mjs +12 -0
- package/dist/paper.mjs.map +1 -0
- package/dist/patterns.d.mts +133 -0
- package/dist/patterns.d.ts +133 -0
- package/dist/patterns.js +483 -0
- package/dist/patterns.js.map +1 -0
- package/dist/patterns.mjs +46 -0
- package/dist/patterns.mjs.map +1 -0
- package/dist/process.d.mts +125 -0
- package/dist/process.d.ts +125 -0
- package/dist/process.js +1471 -0
- package/dist/process.js.map +1 -0
- package/dist/process.mjs +30 -0
- package/dist/process.mjs.map +1 -0
- package/dist/progress.d.mts +44 -0
- package/dist/progress.d.ts +44 -0
- package/dist/progress.js +94 -0
- package/dist/progress.js.map +1 -0
- package/dist/progress.mjs +14 -0
- package/dist/progress.mjs.map +1 -0
- package/dist/resizablePanel.d.mts +297 -0
- package/dist/resizablePanel.d.ts +297 -0
- package/dist/resizablePanel.js +122 -0
- package/dist/resizablePanel.js.map +1 -0
- package/dist/resizablePanel.mjs +22 -0
- package/dist/resizablePanel.mjs.map +1 -0
- package/dist/scrollToLoad.d.mts +41 -0
- package/dist/scrollToLoad.d.ts +41 -0
- package/dist/scrollToLoad.js +256 -0
- package/dist/scrollToLoad.js.map +1 -0
- package/dist/scrollToLoad.mjs +16 -0
- package/dist/scrollToLoad.mjs.map +1 -0
- package/dist/select.d.mts +50 -0
- package/dist/select.d.ts +50 -0
- package/dist/select.js +426 -0
- package/dist/select.js.map +1 -0
- package/dist/select.mjs +24 -0
- package/dist/select.mjs.map +1 -0
- package/dist/skeleton.d.mts +13 -0
- package/dist/skeleton.d.ts +13 -0
- package/dist/skeleton.js +68 -0
- package/dist/skeleton.js.map +1 -0
- package/dist/skeleton.mjs +11 -0
- package/dist/skeleton.mjs.map +1 -0
- package/dist/slider.d.mts +65 -0
- package/dist/slider.d.ts +65 -0
- package/dist/slider.js +106 -0
- package/dist/slider.js.map +1 -0
- package/dist/slider.mjs +10 -0
- package/dist/slider.mjs.map +1 -0
- package/dist/stepper.d.mts +98 -0
- package/dist/stepper.d.ts +98 -0
- package/dist/stepper.js +313 -0
- package/dist/stepper.js.map +1 -0
- package/dist/stepper.mjs +38 -0
- package/dist/stepper.mjs.map +1 -0
- package/dist/switch.d.mts +151 -0
- package/dist/switch.d.ts +151 -0
- package/dist/switch.js +289 -0
- package/dist/switch.js.map +1 -0
- package/dist/switch.mjs +17 -0
- package/dist/switch.mjs.map +1 -0
- package/dist/tab.d.mts +182 -0
- package/dist/tab.d.ts +182 -0
- package/dist/tab.js +1418 -0
- package/dist/tab.js.map +1 -0
- package/dist/tab.mjs +34 -0
- package/dist/tab.mjs.map +1 -0
- package/dist/table.d.mts +720 -0
- package/dist/table.d.ts +720 -0
- package/dist/table.js +10882 -0
- package/dist/table.js.map +1 -0
- package/dist/table.mjs +63 -0
- package/dist/table.mjs.map +1 -0
- package/dist/theme.d.mts +30 -4
- package/dist/theme.d.ts +30 -4
- package/dist/theme.js +3210 -170
- package/dist/theme.js.map +1 -1
- package/dist/theme.mjs +52 -230
- package/dist/theme.mjs.map +1 -1
- package/dist/timeline.d.mts +30 -0
- package/dist/timeline.d.ts +30 -0
- package/dist/timeline.js +273 -0
- package/dist/timeline.js.map +1 -0
- package/dist/timeline.mjs +14 -0
- package/dist/timeline.mjs.map +1 -0
- package/dist/toggleButtonGroup.d.mts +125 -0
- package/dist/toggleButtonGroup.d.ts +125 -0
- package/dist/toggleButtonGroup.js +190 -0
- package/dist/toggleButtonGroup.js.map +1 -0
- package/dist/toggleButtonGroup.mjs +15 -0
- package/dist/toggleButtonGroup.mjs.map +1 -0
- package/dist/tooltip.d.mts +13 -0
- package/dist/tooltip.d.ts +13 -0
- package/dist/tooltip.js +56 -0
- package/dist/tooltip.js.map +1 -0
- package/dist/tooltip.mjs +10 -0
- package/dist/tooltip.mjs.map +1 -0
- package/dist/typography.d.mts +21 -23
- package/dist/typography.d.ts +21 -23
- package/dist/typography.js +37 -63
- package/dist/typography.js.map +1 -1
- package/dist/typography.mjs +2 -1
- package/dist/useForm.d.mts +588 -0
- package/dist/useForm.d.ts +588 -0
- package/dist/useForm.js +8743 -0
- package/dist/useForm.js.map +1 -0
- package/dist/useForm.mjs +45 -0
- package/dist/useForm.mjs.map +1 -0
- package/dist/useSearch.d.mts +126 -0
- package/dist/useSearch.d.ts +126 -0
- package/dist/useSearch.js +1125 -0
- package/dist/useSearch.js.map +1 -0
- package/dist/useSearch.mjs +42 -0
- package/dist/useSearch.mjs.map +1 -0
- package/dist/variablesRenderer.d.mts +45 -0
- package/dist/variablesRenderer.d.ts +45 -0
- package/dist/variablesRenderer.js +511 -0
- package/dist/variablesRenderer.js.map +1 -0
- package/dist/variablesRenderer.mjs +21 -0
- package/dist/variablesRenderer.mjs.map +1 -0
- package/package.json +109 -15
- package/dist/chunk-PKADXEAD.mjs +0 -116
- package/dist/chunk-PKADXEAD.mjs.map +0 -1
- package/dist/chunk-YGBJCPUS.mjs +0 -88
- package/dist/chunk-YGBJCPUS.mjs.map +0 -1
- package/dist/theme.css +0 -44
- package/dist/theme.css.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/elemental/Image/src/MuiImageList/MuiImageList.tsx","../src/components/elemental/Image/src/Cropper/Cropper.tsx","../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/Image/src/Cropper/sections/CropperControlsSection.tsx","../src/components/elemental/Image/src/Cropper/sections/CropperActionSection.tsx","../src/components/elemental/Image/src/Cropper/sections/CropperFileSelector.tsx","../src/components/elemental/Image/src/Cropper/hooks/useCropperState.ts"],"sourcesContent":["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/**\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","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 { 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 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":["jsx","default","jsx","default","jsx","jsxs","default","jsx","jsxs","default","jsx","default","React","jsx","jsxs"]}
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
// src/components/elemental/Box/src/BorderBox/BorderBox.tsx
|
|
2
|
+
import { forwardRef } from "react";
|
|
3
|
+
import Box from "@mui/material/Box";
|
|
4
|
+
|
|
5
|
+
// src/_utils/_func/sx.ts
|
|
6
|
+
function flattenSx(part) {
|
|
7
|
+
if (part == null || typeof part === "boolean") {
|
|
8
|
+
return [];
|
|
9
|
+
}
|
|
10
|
+
if (Array.isArray(part)) {
|
|
11
|
+
return part.flatMap(flattenSx);
|
|
12
|
+
}
|
|
13
|
+
if (typeof part === "function" || typeof part === "object") {
|
|
14
|
+
return [part];
|
|
15
|
+
}
|
|
16
|
+
return [];
|
|
17
|
+
}
|
|
18
|
+
function mergeSx(...parts) {
|
|
19
|
+
const list = parts.flatMap(flattenSx);
|
|
20
|
+
if (list.length === 0) {
|
|
21
|
+
return void 0;
|
|
22
|
+
}
|
|
23
|
+
if (list.length === 1) {
|
|
24
|
+
return list[0];
|
|
25
|
+
}
|
|
26
|
+
return list;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
// src/components/elemental/Box/src/BorderBox/BorderBox.tsx
|
|
30
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
31
|
+
var spanPx = 5;
|
|
32
|
+
var fieldsetPx = 4;
|
|
33
|
+
var BorderBox = forwardRef(({
|
|
34
|
+
title,
|
|
35
|
+
children,
|
|
36
|
+
pyPx = 8,
|
|
37
|
+
pxPx = 12,
|
|
38
|
+
error = false,
|
|
39
|
+
sx,
|
|
40
|
+
...rest
|
|
41
|
+
}, ref) => {
|
|
42
|
+
return /* @__PURE__ */ jsx(
|
|
43
|
+
Box,
|
|
44
|
+
{
|
|
45
|
+
component: "div",
|
|
46
|
+
ref,
|
|
47
|
+
style: {
|
|
48
|
+
"--border-radius": "var(--mui-shape-borderRadius)",
|
|
49
|
+
"--py": `${pyPx}px`,
|
|
50
|
+
"--px": `${pxPx}px`,
|
|
51
|
+
"--span-px": `${spanPx}px`,
|
|
52
|
+
"--fieldset-px": `${fieldsetPx}px`,
|
|
53
|
+
"--border-color-local": error ? "var(--mui-palette-error-main)" : "var(--mui-palette-border-1)",
|
|
54
|
+
"--color-content-local": error ? "var(--mui-palette-error-main)" : "var(--mui-palette-text-primary)",
|
|
55
|
+
"--color-local": error ? "var(--mui-palette-error-main)" : "var(--mui-palette-text-grey-1)",
|
|
56
|
+
"--hover-border-color-local": error ? "var(--mui-palette-error-dark)" : "var(--mui-palette-border-hover-1)",
|
|
57
|
+
minWidth: 0
|
|
58
|
+
},
|
|
59
|
+
sx: mergeSx(
|
|
60
|
+
{
|
|
61
|
+
// inputbase-root
|
|
62
|
+
display: "inline-flex",
|
|
63
|
+
flexDirection: "column",
|
|
64
|
+
position: "relative",
|
|
65
|
+
minWidth: 0,
|
|
66
|
+
padding: 0,
|
|
67
|
+
paddingTop: `var(--py)`,
|
|
68
|
+
paddingBottom: `var(--py)`,
|
|
69
|
+
// avoid title overlap
|
|
70
|
+
margin: 0,
|
|
71
|
+
border: 0,
|
|
72
|
+
verticalAlign: "top",
|
|
73
|
+
cursor: "auto",
|
|
74
|
+
"&:hover>div>fieldset": {
|
|
75
|
+
borderColor: "var(--hover-border-color-local)"
|
|
76
|
+
}
|
|
77
|
+
},
|
|
78
|
+
sx
|
|
79
|
+
),
|
|
80
|
+
...rest,
|
|
81
|
+
children: /* @__PURE__ */ jsxs(Box, { sx: {
|
|
82
|
+
// input
|
|
83
|
+
letterSpacing: "0.00938em",
|
|
84
|
+
boxSizing: "border-box",
|
|
85
|
+
position: "relative",
|
|
86
|
+
alignItems: "center",
|
|
87
|
+
display: "block",
|
|
88
|
+
borderRadius: "var(--border-radius)",
|
|
89
|
+
width: "100%"
|
|
90
|
+
}, children: [
|
|
91
|
+
/* @__PURE__ */ jsx(Box, { sx: {
|
|
92
|
+
paddingLeft: `var(--px)`,
|
|
93
|
+
paddingRight: `var(--px)`,
|
|
94
|
+
paddingTop: `var(--py)`,
|
|
95
|
+
paddingBottom: `var(--py)`,
|
|
96
|
+
fontWeight: 400,
|
|
97
|
+
fontSize: "1rem",
|
|
98
|
+
lineHeight: "1.4375em",
|
|
99
|
+
width: "-webkit-fill-available",
|
|
100
|
+
minHeight: "1rem",
|
|
101
|
+
color: "var(--color-content-local)"
|
|
102
|
+
}, children }),
|
|
103
|
+
/* @__PURE__ */ jsx(Box, { component: "fieldset", sx: {
|
|
104
|
+
textAlign: "left",
|
|
105
|
+
position: "absolute",
|
|
106
|
+
bottom: 0,
|
|
107
|
+
right: 0,
|
|
108
|
+
top: `calc(var(--py)*-1)`,
|
|
109
|
+
left: 0,
|
|
110
|
+
paddingLeft: "var(--fieldset-px)",
|
|
111
|
+
paddingRight: "var(--fieldset-px)",
|
|
112
|
+
margin: 0,
|
|
113
|
+
pointerEvents: "none",
|
|
114
|
+
borderRadius: "inherit",
|
|
115
|
+
border: "1px solid",
|
|
116
|
+
borderColor: "var(--border-color-local)",
|
|
117
|
+
overflow: "hidden",
|
|
118
|
+
minWidth: "0%"
|
|
119
|
+
}, children: /* @__PURE__ */ jsx(Box, { component: "legend", sx: {
|
|
120
|
+
float: "unset",
|
|
121
|
+
width: "auto",
|
|
122
|
+
overflow: "hidden",
|
|
123
|
+
display: "block",
|
|
124
|
+
padding: 0,
|
|
125
|
+
height: "1em",
|
|
126
|
+
visibility: "hidden",
|
|
127
|
+
maxWidth: "100%",
|
|
128
|
+
whiteSpace: "nowrap"
|
|
129
|
+
}, children: title && /* @__PURE__ */ jsx(Box, { component: "span", sx: {
|
|
130
|
+
paddingLeft: "var(--span-px)",
|
|
131
|
+
paddingRight: "var(--span-px)",
|
|
132
|
+
visibility: "visible",
|
|
133
|
+
fontSize: "0.7em",
|
|
134
|
+
lineHeight: "1.4375em",
|
|
135
|
+
letterSpacing: "0.00938em",
|
|
136
|
+
fontWeight: 400,
|
|
137
|
+
display: "block",
|
|
138
|
+
height: "100%",
|
|
139
|
+
fontFamily: "inherit",
|
|
140
|
+
textOverflow: "ellipsis",
|
|
141
|
+
color: "var(--color-local)"
|
|
142
|
+
}, children: title }) }) })
|
|
143
|
+
] })
|
|
144
|
+
}
|
|
145
|
+
);
|
|
146
|
+
});
|
|
147
|
+
var BorderBox_default = BorderBox;
|
|
148
|
+
|
|
149
|
+
// src/components/elemental/Box/src/index.ts
|
|
150
|
+
import { default as default2 } from "@mui/material/Box";
|
|
151
|
+
import { default as default3 } from "@mui/material/Stack";
|
|
152
|
+
import { default as default4 } from "@mui/material/Grid";
|
|
153
|
+
|
|
154
|
+
export {
|
|
155
|
+
mergeSx,
|
|
156
|
+
BorderBox_default,
|
|
157
|
+
default2 as default,
|
|
158
|
+
default3 as default2,
|
|
159
|
+
default4 as default3
|
|
160
|
+
};
|
|
161
|
+
//# sourceMappingURL=chunk-S6EZVRZC.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/elemental/Box/src/BorderBox/BorderBox.tsx","../src/_utils/_func/sx.ts","../src/components/elemental/Box/src/index.ts"],"sourcesContent":["import React, { forwardRef, } from 'react'\nimport Box, { type BoxProps} from '@mui/material/Box'\nimport { mergeSx } from '@/_utils/_func'\n\nconst spanPx = 5\nconst fieldsetPx = 4\n\ntype Props = {\n\tchildren: React.ReactNode, \n\ttitle?: string,\n\terror?: boolean,\n\tpyPx?: number,\n\tpxPx?: number,\n} & BoxProps\n/**\n * A Mui TextField like Box with a title and a border.\n * \n * Props options:\n * \n * @property {ReactNode} children - Whatever go inside the box.\n * @property {string} title - The left top title.\n * @property {string} error - change border-color to red.\n * @property {number} pyPx - padding top and bottom.\n * @property {number} pxPx - padding left and right.\n * @property {Record<string, unknown>} ...rest - Box props to the outer box.\n * @example\n * ### Example\n * ```js\n * const B = () => (\n * <BorderBox title=\"title\" error={false} ref={ref}>\n * something inside\n * </BorderBox>)\n * ```\n */\nconst BorderBox = forwardRef<HTMLDivElement,Props>(({ \n\ttitle, children,pyPx=8,pxPx=12, error=false,\n sx,\n\t...rest\n},ref) => {\n\t\n\treturn (\n\t\t<Box // control-root\n\t\tcomponent=\"div\"\n\t\tref={ref}\n\t\tstyle={{\n\t\t\t\"--border-radius\": \"var(--mui-shape-borderRadius)\",\n\t\t\t\"--py\": `${pyPx}px`,\n\t\t\t\"--px\": `${pxPx}px`,\n\t\t\t\"--span-px\": `${spanPx}px`,\n\t\t\t\"--fieldset-px\": `${fieldsetPx}px`, \n\t\t\t\"--border-color-local\": error ? \"var(--mui-palette-error-main)\" : \"var(--mui-palette-border-1)\",\n\t\t\t\"--color-content-local\": error ? \"var(--mui-palette-error-main)\" : \"var(--mui-palette-text-primary)\",\n\t\t\t\"--color-local\": error ? \"var(--mui-palette-error-main)\" : \"var(--mui-palette-text-grey-1)\",\n\t\t\t\"--hover-border-color-local\": error ? \"var(--mui-palette-error-dark)\" : \"var(--mui-palette-border-hover-1)\",\n\t\t\tminWidth: 0,\n\t\t}}\n\t\tsx={mergeSx(\n\t\t\t{ // inputbase-root\n\t\t\tdisplay: 'inline-flex',\n\t\t\tflexDirection: 'column',\n\t\t\tposition: 'relative',\n\t\t\tminWidth: 0,\n\t\t\tpadding: 0, \n\t\t\tpaddingTop:`var(--py)`, paddingBottom:`var(--py)`, // avoid title overlap\n\t\t\tmargin: 0,\n\t\t\tborder: 0,\n\t\t\tverticalAlign: 'top',\n\t\t\tcursor: 'auto',\n\t\t\t\"&:hover>div>fieldset\": {\n\t\t\t\tborderColor:\"var(--hover-border-color-local)\",\n\t\t\t},\n\t\t},\n\t\t\tsx,\n\t\t)}\n\t\t{...rest}\n\t\t>\n\t\t\t<Box sx={{ // input\n\t\t\t\tletterSpacing: '0.00938em',\n\t\t\t\tboxSizing: 'border-box',\n\t\t\t\tposition: 'relative',\n\t\t\t\talignItems: 'center',\n\t\t\t\tdisplay: 'block',\n\t\t\t\tborderRadius:'var(--border-radius)',\n\t\t\t\twidth:\"100%\",\n\t\t\t}}>\n\t\t\t\t<Box sx={{\n\t\t\t\t\tpaddingLeft:`var(--px)`, paddingRight:`var(--px)`,\n\t\t\t\t\tpaddingTop:`var(--py)`, paddingBottom:`var(--py)`,\n\t\t\t\t\tfontWeight: 400,\n\t\t\t\t\tfontSize: '1rem',\n\t\t\t\t\tlineHeight: '1.4375em',\n\t\t\t\t\twidth:\"-webkit-fill-available\",\n\t\t\t\t\tminHeight:\"1rem\",\n\t\t\t\t\tcolor:\"var(--color-content-local)\",\n\t\t\t\t}} >{children}</Box>\n\t\t\t\t<Box component=\"fieldset\" sx={{\n\t\t\t\t\ttextAlign: 'left',\n\t\t\t\t\tposition: 'absolute',\n\t\t\t\t\tbottom: 0,\n\t\t\t\t\tright: 0,\n\t\t\t\t\ttop: `calc(var(--py)*-1)`,\n\t\t\t\t\tleft: 0,\n\t\t\t\t\tpaddingLeft:\"var(--fieldset-px)\", paddingRight:\"var(--fieldset-px)\",\n\t\t\t\t\tmargin:0,\n\t\t\t\t\tpointerEvents: 'none',\n\t\t\t\t\tborderRadius: 'inherit',\n\t\t\t\t\tborder:\"1px solid\",\n\t\t\t\t\tborderColor:\"var(--border-color-local)\",\n\t\t\t\t\toverflow: 'hidden',\n\t\t\t\t\tminWidth: '0%',\n\t\t\t\t\t\n\t\t\t\t}}>\n\t\t\t\t\t<Box component=\"legend\" sx={{\n\t\t\t\t\t\tfloat: 'unset',\n\t\t\t\t\t\twidth: 'auto',\n\t\t\t\t\t\toverflow: 'hidden',\n\t\t\t\t\t\tdisplay: 'block',\n\t\t\t\t\t\tpadding: 0,\n\t\t\t\t\t\theight: \"1em\",\n\t\t\t\t\t\tvisibility: 'hidden',\n\t\t\t\t\t\tmaxWidth: '100%',\n\t\t\t\t\t\twhiteSpace: 'nowrap',\n\t\t\t\t\t}}>\n\t\t\t\t\t\t{title && <Box component=\"span\" sx={{\n\t\t\t\t\t\t\tpaddingLeft:\"var(--span-px)\", paddingRight:\"var(--span-px)\",\n\t\t\t\t\t\t\tvisibility: 'visible',\n\t\t\t\t\t\t\tfontSize: '0.7em',\n\t\t\t\t\t\t\tlineHeight: '1.4375em',\n\t\t\t\t\t\t\tletterSpacing: '0.00938em',\n\t\t\t\t\t\t\tfontWeight: 400,\n\t\t\t\t\t\t\tdisplay: 'block',\n\t\t\t\t\t\t\theight: '100%',\n\t\t\t\t\t\tfontFamily: 'inherit',\n\t\t\t\t\t\t\ttextOverflow: 'ellipsis',\n\t\t\t\t\t\t\tcolor:\"var(--color-local)\",\n\t\t\t\t\t\t}}>\n\t\t\t\t\t\t\t{title}\n\t\t\t\t\t\t</Box>}\n\t\t\t\t\t</Box>\n\t\t\t\t</Box>\n\t\t\t</Box>\n\t\t</Box>\n\t)\n})\n\nexport default BorderBox\n\n/*\nshift = px-5+8\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"],"mappings":"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","names":["default"]}
|
|
@@ -0,0 +1,396 @@
|
|
|
1
|
+
import {
|
|
2
|
+
OptionRenderer,
|
|
3
|
+
PickerField,
|
|
4
|
+
Provider,
|
|
5
|
+
gitHubPickerRootSx,
|
|
6
|
+
useStateContext
|
|
7
|
+
} from "./chunk-OJV6V7YZ.mjs";
|
|
8
|
+
import {
|
|
9
|
+
Badge
|
|
10
|
+
} from "./chunk-56TI2ZBT.mjs";
|
|
11
|
+
import {
|
|
12
|
+
default as default4
|
|
13
|
+
} from "./chunk-MDAUF7IL.mjs";
|
|
14
|
+
import {
|
|
15
|
+
IconButton_default
|
|
16
|
+
} from "./chunk-JIU5GVM7.mjs";
|
|
17
|
+
import {
|
|
18
|
+
default109 as default6,
|
|
19
|
+
default98 as default5
|
|
20
|
+
} from "./chunk-ZVFYOXDE.mjs";
|
|
21
|
+
import {
|
|
22
|
+
default as default3
|
|
23
|
+
} from "./chunk-4RPFRNXG.mjs";
|
|
24
|
+
import {
|
|
25
|
+
default as default2
|
|
26
|
+
} from "./chunk-S6EZVRZC.mjs";
|
|
27
|
+
|
|
28
|
+
// src/components/elemental/Autocomplete/src/GitHubPicker/GitHubPicker.tsx
|
|
29
|
+
import { useState, useMemo, useId, Suspense, lazy } from "react";
|
|
30
|
+
|
|
31
|
+
// src/_utils/_func/array.ts
|
|
32
|
+
function sortByCondi(array, key, condition, reverse = false) {
|
|
33
|
+
const anchor = reverse ? -1 : 1;
|
|
34
|
+
const sorted = [...array];
|
|
35
|
+
sorted.sort((a, b) => {
|
|
36
|
+
if (condition(a[key], b[key])) {
|
|
37
|
+
return -anchor;
|
|
38
|
+
} else {
|
|
39
|
+
return anchor;
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
return sorted;
|
|
43
|
+
}
|
|
44
|
+
function sortByKey(array, key, reverse = false) {
|
|
45
|
+
const condi = (a, b) => {
|
|
46
|
+
return a < b;
|
|
47
|
+
};
|
|
48
|
+
const sorted = sortByCondi(array, key, condi, reverse);
|
|
49
|
+
return sorted;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
// src/components/elemental/Autocomplete/src/GitHubPicker/GitHubPicker.tsx
|
|
53
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
54
|
+
var PopperMenu = lazy(() => import("./PopperMenu-LJ36RPBW.mjs"));
|
|
55
|
+
var PICKER_ACCENT = {
|
|
56
|
+
primary: "var(--mui-palette-primary-emphasis)",
|
|
57
|
+
secondary: "var(--mui-palette-secondary-main)",
|
|
58
|
+
error: "var(--mui-palette-error-main)",
|
|
59
|
+
info: "var(--mui-palette-info-main)",
|
|
60
|
+
success: "var(--mui-palette-success-main)",
|
|
61
|
+
warning: "var(--mui-palette-warning-main)",
|
|
62
|
+
system: "var(--mui-palette-system-main)",
|
|
63
|
+
insight: "var(--mui-palette-insight-main)"
|
|
64
|
+
};
|
|
65
|
+
function GitHubPicker({
|
|
66
|
+
multiple = true,
|
|
67
|
+
...p
|
|
68
|
+
}) {
|
|
69
|
+
const _selectedIdProps = p.selectedIdProps[0];
|
|
70
|
+
const [anchorEl, setAnchorEl] = useState(null);
|
|
71
|
+
return /* @__PURE__ */ jsx(Provider, { selectedIds: _selectedIdProps, options: p.options, isMultiple: multiple, open: Boolean(anchorEl), children: /* @__PURE__ */ jsx(Picker, { ...p, multiple, anchorEl, setAnchorEl }) });
|
|
72
|
+
}
|
|
73
|
+
function Picker(p) {
|
|
74
|
+
const {
|
|
75
|
+
selectedIdProps,
|
|
76
|
+
options = [],
|
|
77
|
+
// options for rendering and autocomplete
|
|
78
|
+
additionSort,
|
|
79
|
+
title,
|
|
80
|
+
subtitle,
|
|
81
|
+
titleIcon,
|
|
82
|
+
onChange,
|
|
83
|
+
onDelete,
|
|
84
|
+
error = false,
|
|
85
|
+
multiple,
|
|
86
|
+
// default value set in Parent
|
|
87
|
+
disabled = false,
|
|
88
|
+
useGroup = true,
|
|
89
|
+
isAddOptionEnabled = false,
|
|
90
|
+
addOptionHandler,
|
|
91
|
+
isPopperFreezed,
|
|
92
|
+
variant = "field",
|
|
93
|
+
color = "secondary",
|
|
94
|
+
anchorEl,
|
|
95
|
+
setAnchorEl
|
|
96
|
+
} = p;
|
|
97
|
+
const tone = error ? "error" : color;
|
|
98
|
+
const accent = PICKER_ACCENT[tone];
|
|
99
|
+
const pickerId = useId();
|
|
100
|
+
const menuId = `${pickerId}-menu`;
|
|
101
|
+
const listboxId = `${pickerId}-listbox`;
|
|
102
|
+
const [selectedIds, sIds] = selectedIdProps;
|
|
103
|
+
const allMinimalOptions = useMemo(() => getMinimalOptions(options, additionSort), [options, additionSort]);
|
|
104
|
+
const selectedOpt = allMinimalOptions.filter((itm) => selectedIds.includes(itm.id));
|
|
105
|
+
const { state, select } = useStateContext();
|
|
106
|
+
const open = Boolean(anchorEl);
|
|
107
|
+
const closeHandler = (passedState) => {
|
|
108
|
+
const newValue = passedState === void 0 ? state.minimal : passedState.minimal;
|
|
109
|
+
const nextIds = idsFromSelection(Boolean(multiple), newValue);
|
|
110
|
+
sIds(nextIds);
|
|
111
|
+
onChange(nextIds);
|
|
112
|
+
if (anchorEl) {
|
|
113
|
+
anchorEl.focus();
|
|
114
|
+
}
|
|
115
|
+
setAnchorEl(null);
|
|
116
|
+
};
|
|
117
|
+
const removeItemHandler = (id) => () => {
|
|
118
|
+
onDelete(id);
|
|
119
|
+
sIds((old) => old.filter((itm) => itm !== id));
|
|
120
|
+
if (multiple) {
|
|
121
|
+
const current = Array.isArray(state.minimal) ? state.minimal : [];
|
|
122
|
+
select(current.filter((opt) => opt.id !== id));
|
|
123
|
+
} else if (!Array.isArray(state.minimal) && state.minimal?.id === id) {
|
|
124
|
+
select(null);
|
|
125
|
+
} else if (Array.isArray(state.minimal)) {
|
|
126
|
+
select(state.minimal.filter((opt) => opt.id !== id));
|
|
127
|
+
}
|
|
128
|
+
};
|
|
129
|
+
const togglePicker = (element) => {
|
|
130
|
+
if (disabled) return;
|
|
131
|
+
if (open) {
|
|
132
|
+
if (isPopperFreezed) return;
|
|
133
|
+
closeHandler();
|
|
134
|
+
return;
|
|
135
|
+
}
|
|
136
|
+
setAnchorEl(element);
|
|
137
|
+
};
|
|
138
|
+
return /* @__PURE__ */ jsx(
|
|
139
|
+
default4,
|
|
140
|
+
{
|
|
141
|
+
onClickAway: () => {
|
|
142
|
+
if (!open || isPopperFreezed) return;
|
|
143
|
+
closeHandler();
|
|
144
|
+
},
|
|
145
|
+
children: /* @__PURE__ */ jsxs(default2, { children: [
|
|
146
|
+
variant === "icon" ? /* @__PURE__ */ jsx(
|
|
147
|
+
IconTrigger,
|
|
148
|
+
{
|
|
149
|
+
id: pickerId,
|
|
150
|
+
menuId,
|
|
151
|
+
open,
|
|
152
|
+
color: tone,
|
|
153
|
+
disabled,
|
|
154
|
+
title,
|
|
155
|
+
titleIcon,
|
|
156
|
+
selectedCount: selectedOpt.length,
|
|
157
|
+
selectedLabels: selectedOpt.map((opt) => opt.label),
|
|
158
|
+
onToggle: togglePicker
|
|
159
|
+
}
|
|
160
|
+
) : /* @__PURE__ */ jsx(
|
|
161
|
+
FieldTrigger,
|
|
162
|
+
{
|
|
163
|
+
id: pickerId,
|
|
164
|
+
menuId,
|
|
165
|
+
open,
|
|
166
|
+
error,
|
|
167
|
+
accent,
|
|
168
|
+
disabled,
|
|
169
|
+
title,
|
|
170
|
+
titleIcon,
|
|
171
|
+
selectedOpt,
|
|
172
|
+
options,
|
|
173
|
+
removeItemHandler,
|
|
174
|
+
multiple: Boolean(multiple),
|
|
175
|
+
onToggle: togglePicker
|
|
176
|
+
}
|
|
177
|
+
),
|
|
178
|
+
anchorEl ? /* @__PURE__ */ jsx(Suspense, { fallback: null, children: /* @__PURE__ */ jsx(
|
|
179
|
+
PopperMenu,
|
|
180
|
+
{
|
|
181
|
+
id: menuId,
|
|
182
|
+
listboxId,
|
|
183
|
+
anchorEl,
|
|
184
|
+
allMinimalOptions,
|
|
185
|
+
options,
|
|
186
|
+
closeHandler,
|
|
187
|
+
multiple,
|
|
188
|
+
disabled,
|
|
189
|
+
title: subtitle ?? title,
|
|
190
|
+
useGroup,
|
|
191
|
+
isAddOptionEnabled,
|
|
192
|
+
addOptionHandler,
|
|
193
|
+
isPopperFreezed
|
|
194
|
+
}
|
|
195
|
+
) }) : null
|
|
196
|
+
] })
|
|
197
|
+
}
|
|
198
|
+
);
|
|
199
|
+
}
|
|
200
|
+
function idsFromSelection(multiple, newValue) {
|
|
201
|
+
if (multiple) {
|
|
202
|
+
const list = Array.isArray(newValue) ? newValue : [];
|
|
203
|
+
return sortByKey(list, "filterKey").map((item) => item.id);
|
|
204
|
+
}
|
|
205
|
+
const single = Array.isArray(newValue) ? newValue[0] : newValue;
|
|
206
|
+
return single?.id ? [single.id] : [];
|
|
207
|
+
}
|
|
208
|
+
function getMinimalOptions(options, additionSort) {
|
|
209
|
+
const minimal = options.map((itm) => itm.minimal());
|
|
210
|
+
const sortedByFilterKey = sortByKey(minimal, "filterKey");
|
|
211
|
+
const afterAdditionSort = additionSort ? sortedByFilterKey.sort(additionSort) : sortedByFilterKey;
|
|
212
|
+
const sortedByGroup = sortByKey(afterAdditionSort, "group");
|
|
213
|
+
const sortedByDisabled = sortByKey(sortedByGroup, "disabled");
|
|
214
|
+
return sortedByDisabled;
|
|
215
|
+
}
|
|
216
|
+
function FieldTrigger(p) {
|
|
217
|
+
const { id, menuId, open, error, accent, disabled, title, titleIcon, selectedOpt, options, removeItemHandler, multiple, onToggle } = p;
|
|
218
|
+
return /* @__PURE__ */ jsxs(
|
|
219
|
+
PickerField,
|
|
220
|
+
{
|
|
221
|
+
id,
|
|
222
|
+
open,
|
|
223
|
+
error,
|
|
224
|
+
disabled,
|
|
225
|
+
role: "combobox",
|
|
226
|
+
tabIndex: disabled ? -1 : 0,
|
|
227
|
+
"aria-expanded": open,
|
|
228
|
+
"aria-haspopup": "listbox",
|
|
229
|
+
"aria-controls": open ? menuId : void 0,
|
|
230
|
+
"aria-disabled": disabled,
|
|
231
|
+
style: {
|
|
232
|
+
"--picker-border-emphasis": accent,
|
|
233
|
+
"--picker-check": accent,
|
|
234
|
+
"--picker-focus-ring": `color-mix(in lab, ${accent}, transparent 82%)`
|
|
235
|
+
},
|
|
236
|
+
onClick: (event) => onToggle(event.currentTarget),
|
|
237
|
+
onKeyDown: (event) => {
|
|
238
|
+
if (event.key === "Enter" || event.key === " ") {
|
|
239
|
+
event.preventDefault();
|
|
240
|
+
onToggle(event.currentTarget);
|
|
241
|
+
}
|
|
242
|
+
},
|
|
243
|
+
children: [
|
|
244
|
+
/* @__PURE__ */ jsxs(
|
|
245
|
+
default2,
|
|
246
|
+
{
|
|
247
|
+
sx: {
|
|
248
|
+
display: "flex",
|
|
249
|
+
alignItems: "center",
|
|
250
|
+
gap: 1,
|
|
251
|
+
minHeight: 20
|
|
252
|
+
},
|
|
253
|
+
children: [
|
|
254
|
+
titleIcon ? /* @__PURE__ */ jsx(
|
|
255
|
+
default2,
|
|
256
|
+
{
|
|
257
|
+
sx: {
|
|
258
|
+
display: "inline-flex",
|
|
259
|
+
color: "var(--picker-check)",
|
|
260
|
+
"& svg": { fontSize: "1.05rem" }
|
|
261
|
+
},
|
|
262
|
+
children: titleIcon
|
|
263
|
+
}
|
|
264
|
+
) : null,
|
|
265
|
+
title ? /* @__PURE__ */ jsx(
|
|
266
|
+
default3,
|
|
267
|
+
{
|
|
268
|
+
component: "span",
|
|
269
|
+
sx: {
|
|
270
|
+
flex: 1,
|
|
271
|
+
minWidth: 0,
|
|
272
|
+
fontSize: "0.68rem",
|
|
273
|
+
fontWeight: 700,
|
|
274
|
+
letterSpacing: "0.08em",
|
|
275
|
+
textTransform: "uppercase",
|
|
276
|
+
color: "var(--picker-text-secondary)",
|
|
277
|
+
overflow: "hidden",
|
|
278
|
+
textOverflow: "ellipsis",
|
|
279
|
+
whiteSpace: "nowrap",
|
|
280
|
+
m: 0
|
|
281
|
+
},
|
|
282
|
+
children: title
|
|
283
|
+
}
|
|
284
|
+
) : /* @__PURE__ */ jsx(default2, { sx: { flex: 1 } }),
|
|
285
|
+
/* @__PURE__ */ jsx(
|
|
286
|
+
default6,
|
|
287
|
+
{
|
|
288
|
+
sx: {
|
|
289
|
+
fontSize: 20,
|
|
290
|
+
color: "var(--picker-text-secondary)",
|
|
291
|
+
flexShrink: 0,
|
|
292
|
+
transform: open ? "rotate(180deg)" : "rotate(0deg)",
|
|
293
|
+
transition: "transform 180ms ease"
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
)
|
|
297
|
+
]
|
|
298
|
+
}
|
|
299
|
+
),
|
|
300
|
+
/* @__PURE__ */ jsx(
|
|
301
|
+
DisplaySelected,
|
|
302
|
+
{
|
|
303
|
+
selectedOpt,
|
|
304
|
+
options,
|
|
305
|
+
removeItemHandler,
|
|
306
|
+
disabled,
|
|
307
|
+
multiple
|
|
308
|
+
}
|
|
309
|
+
)
|
|
310
|
+
]
|
|
311
|
+
}
|
|
312
|
+
);
|
|
313
|
+
}
|
|
314
|
+
function IconTrigger(p) {
|
|
315
|
+
const { id, menuId, open, color, disabled, title, titleIcon, selectedCount, selectedLabels, onToggle } = p;
|
|
316
|
+
const tooltip = selectedLabels.length > 0 ? selectedLabels.join(", ") : title ?? "Select";
|
|
317
|
+
return /* @__PURE__ */ jsx(
|
|
318
|
+
Badge,
|
|
319
|
+
{
|
|
320
|
+
badgeContent: selectedCount,
|
|
321
|
+
invisible: selectedCount === 0,
|
|
322
|
+
color,
|
|
323
|
+
style_variant: "filled",
|
|
324
|
+
overlap: "circular",
|
|
325
|
+
sx: gitHubPickerRootSx,
|
|
326
|
+
max: 99,
|
|
327
|
+
children: /* @__PURE__ */ jsx(default2, { sx: { display: "inline-flex" }, children: /* @__PURE__ */ jsx(
|
|
328
|
+
IconButton_default,
|
|
329
|
+
{
|
|
330
|
+
id,
|
|
331
|
+
title: open ? "" : tooltip,
|
|
332
|
+
disabled,
|
|
333
|
+
selected: open,
|
|
334
|
+
color,
|
|
335
|
+
"aria-label": title ?? "Select",
|
|
336
|
+
"aria-expanded": open,
|
|
337
|
+
"aria-haspopup": "listbox",
|
|
338
|
+
"aria-controls": open ? menuId : void 0,
|
|
339
|
+
onClick: (event) => onToggle(event.currentTarget),
|
|
340
|
+
children: titleIcon ?? /* @__PURE__ */ jsx(default5, {})
|
|
341
|
+
}
|
|
342
|
+
) })
|
|
343
|
+
}
|
|
344
|
+
);
|
|
345
|
+
}
|
|
346
|
+
function DisplaySelected(p) {
|
|
347
|
+
const { selectedOpt, options, removeItemHandler, disabled, multiple } = p;
|
|
348
|
+
const selectedIds = selectedOpt.map((itm) => itm.id);
|
|
349
|
+
const displaySelectedOptions = options.filter((itm) => selectedIds.includes(itm.id));
|
|
350
|
+
if (displaySelectedOptions.length === 0) {
|
|
351
|
+
return /* @__PURE__ */ jsx(
|
|
352
|
+
default3,
|
|
353
|
+
{
|
|
354
|
+
sx: {
|
|
355
|
+
fontSize: "0.9rem",
|
|
356
|
+
fontWeight: 500,
|
|
357
|
+
color: "var(--picker-text-secondary)",
|
|
358
|
+
opacity: 0.78,
|
|
359
|
+
lineHeight: 1.4,
|
|
360
|
+
m: 0
|
|
361
|
+
},
|
|
362
|
+
children: multiple ? "Select options" : "Select an option"
|
|
363
|
+
}
|
|
364
|
+
);
|
|
365
|
+
}
|
|
366
|
+
return /* @__PURE__ */ jsx(default2, { sx: {
|
|
367
|
+
overflow: "hidden",
|
|
368
|
+
display: "flex",
|
|
369
|
+
flexWrap: "wrap",
|
|
370
|
+
gap: "6px"
|
|
371
|
+
}, children: displaySelectedOptions.map((o) => {
|
|
372
|
+
return /* @__PURE__ */ jsx(default2, { sx: {
|
|
373
|
+
overflow: "hidden",
|
|
374
|
+
maxWidth: "100%"
|
|
375
|
+
}, children: /* @__PURE__ */ jsx(
|
|
376
|
+
OptionRenderer,
|
|
377
|
+
{
|
|
378
|
+
option: o,
|
|
379
|
+
selected: true,
|
|
380
|
+
isIconClickable: true,
|
|
381
|
+
removeItemHandler: removeItemHandler(o?.id),
|
|
382
|
+
disabled,
|
|
383
|
+
slotProps: {
|
|
384
|
+
DM: {
|
|
385
|
+
isShowDescription: false
|
|
386
|
+
}
|
|
387
|
+
}
|
|
388
|
+
}
|
|
389
|
+
) }, o.id);
|
|
390
|
+
}) });
|
|
391
|
+
}
|
|
392
|
+
|
|
393
|
+
export {
|
|
394
|
+
GitHubPicker
|
|
395
|
+
};
|
|
396
|
+
//# sourceMappingURL=chunk-SGCUDWO3.mjs.map
|