@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.
- package/dist/AutocompleteField-653233JU.mjs +203 -0
- package/dist/AutocompleteField-653233JU.mjs.map +1 -0
- package/dist/AvatarField-KFASMVZU.mjs +378 -0
- package/dist/AvatarField-KFASMVZU.mjs.map +1 -0
- package/dist/{DateField-ZYMZFHL4.mjs → DateField-CDJ6W6XF.mjs} +19 -7
- package/dist/DateField-CDJ6W6XF.mjs.map +1 -0
- package/dist/DateRangeField-ZWSFT5KV.mjs +118 -0
- package/dist/DateRangeField-ZWSFT5KV.mjs.map +1 -0
- package/dist/{DateTimeField-TPTJ7YIZ.mjs → DateTimeField-SFAF4I6A.mjs} +36 -11
- package/dist/DateTimeField-SFAF4I6A.mjs.map +1 -0
- package/dist/FileUploadField-TSNCSLXX.mjs +101 -0
- package/dist/FileUploadField-TSNCSLXX.mjs.map +1 -0
- package/dist/{JSONEditorField-TMRWGXVR.mjs → JSONEditorField-3KXC2GOG.mjs} +7 -6
- package/dist/{JSONEditorField-TMRWGXVR.mjs.map → JSONEditorField-3KXC2GOG.mjs.map} +1 -1
- package/dist/{PopperMenu-LJ36RPBW.mjs → PopperMenu-PSHLKIEZ.mjs} +26 -12
- package/dist/{PopperMenu-LJ36RPBW.mjs.map → PopperMenu-PSHLKIEZ.mjs.map} +1 -1
- package/dist/{TelField-LOGRVZ4I.mjs → TelField-FRQT2UBJ.mjs} +8 -7
- package/dist/{TelField-LOGRVZ4I.mjs.map → TelField-FRQT2UBJ.mjs.map} +1 -1
- package/dist/TimeField-XVWXBJID.mjs +94 -0
- package/dist/TimeField-XVWXBJID.mjs.map +1 -0
- package/dist/alert.d.mts +148 -18
- package/dist/alert.d.ts +148 -18
- package/dist/alert.js +698 -254
- package/dist/alert.js.map +1 -1
- package/dist/alert.mjs +46 -10
- package/dist/autocomplete.d.mts +438 -4
- package/dist/autocomplete.d.ts +438 -4
- package/dist/autocomplete.js +632 -21
- package/dist/autocomplete.js.map +1 -1
- package/dist/autocomplete.mjs +26 -7
- package/dist/avatar.js +2 -1
- package/dist/avatar.js.map +1 -1
- package/dist/avatar.mjs +12 -11
- package/dist/box.mjs +2 -1
- package/dist/button.mjs +3 -2
- package/dist/chart.mjs +3 -2
- package/dist/checkbox.mjs +3 -2
- package/dist/chunk-2FK24ZPJ.mjs +78 -0
- package/dist/chunk-2FK24ZPJ.mjs.map +1 -0
- package/dist/{chunk-V26V2S3W.mjs → chunk-3O3N6X6D.mjs} +3 -3
- package/dist/{chunk-Y74ALKBL.mjs → chunk-4MSPA7U7.mjs} +11 -9
- package/dist/{chunk-Y74ALKBL.mjs.map → chunk-4MSPA7U7.mjs.map} +1 -1
- package/dist/{chunk-24XDGNJ6.mjs → chunk-4P45Z5LR.mjs} +63 -41
- package/dist/chunk-4P45Z5LR.mjs.map +1 -0
- package/dist/chunk-4SSJY32J.mjs +1182 -0
- package/dist/chunk-4SSJY32J.mjs.map +1 -0
- package/dist/{chunk-XJ2SXC2Q.mjs → chunk-6B6I27TT.mjs} +18 -16
- package/dist/{chunk-XJ2SXC2Q.mjs.map → chunk-6B6I27TT.mjs.map} +1 -1
- package/dist/chunk-6JKMEH2L.mjs +205 -0
- package/dist/chunk-6JKMEH2L.mjs.map +1 -0
- package/dist/{chunk-IN3O4R7Q.mjs → chunk-7O526A2D.mjs} +6 -4
- package/dist/{chunk-IN3O4R7Q.mjs.map → chunk-7O526A2D.mjs.map} +1 -1
- package/dist/chunk-AFLEG5ZC.mjs +28 -0
- package/dist/chunk-AFLEG5ZC.mjs.map +1 -0
- package/dist/{chunk-UGMRJMFZ.mjs → chunk-BO5CU4ZM.mjs} +4 -4
- package/dist/{chunk-JIU5GVM7.mjs → chunk-D4XPNSSI.mjs} +5 -3
- package/dist/{chunk-JIU5GVM7.mjs.map → chunk-D4XPNSSI.mjs.map} +1 -1
- package/dist/chunk-DPIMA5IO.mjs +72 -0
- package/dist/chunk-DPIMA5IO.mjs.map +1 -0
- package/dist/chunk-F2CGFVIZ.mjs +83 -0
- package/dist/chunk-F2CGFVIZ.mjs.map +1 -0
- package/dist/{chunk-R5MKQN6D.mjs → chunk-FBLSJQWK.mjs} +3 -3
- package/dist/{chunk-BGB7JHIU.mjs → chunk-FMGZCOJC.mjs} +5 -3
- package/dist/{chunk-BGB7JHIU.mjs.map → chunk-FMGZCOJC.mjs.map} +1 -1
- package/dist/{chunk-UTVSYS6S.mjs → chunk-FNSIQ2B7.mjs} +18 -6
- package/dist/chunk-FNSIQ2B7.mjs.map +1 -0
- package/dist/{chunk-JWANK42G.mjs → chunk-FUZ2JNTZ.mjs} +3 -3
- package/dist/{chunk-CRYIEYZZ.mjs → chunk-HAJWE62X.mjs} +66 -42
- package/dist/chunk-HAJWE62X.mjs.map +1 -0
- package/dist/{chunk-CWFWRZWU.mjs → chunk-KSN33A6I.mjs} +3 -2
- package/dist/{chunk-CWFWRZWU.mjs.map → chunk-KSN33A6I.mjs.map} +1 -1
- package/dist/chunk-KYTHGFFY.mjs +866 -0
- package/dist/chunk-KYTHGFFY.mjs.map +1 -0
- package/dist/{chunk-QKGCW37O.mjs → chunk-LDFM46LV.mjs} +5 -3
- package/dist/{chunk-QKGCW37O.mjs.map → chunk-LDFM46LV.mjs.map} +1 -1
- package/dist/chunk-LQNDBPHU.mjs +142 -0
- package/dist/chunk-LQNDBPHU.mjs.map +1 -0
- package/dist/{chunk-E3I2VDHZ.mjs → chunk-M2PYXSAF.mjs} +6 -4
- package/dist/{chunk-E3I2VDHZ.mjs.map → chunk-M2PYXSAF.mjs.map} +1 -1
- package/dist/{chunk-DELCADNF.mjs → chunk-ODVKRIVN.mjs} +30 -30
- package/dist/{chunk-HR3A4H4E.mjs → chunk-PEJL2T2K.mjs} +13 -11
- package/dist/{chunk-HR3A4H4E.mjs.map → chunk-PEJL2T2K.mjs.map} +1 -1
- package/dist/{chunk-OGNGPI3M.mjs → chunk-PL55YKT4.mjs} +2 -2
- package/dist/{chunk-S6EZVRZC.mjs → chunk-PNSJC6PC.mjs} +5 -28
- package/dist/chunk-PNSJC6PC.mjs.map +1 -0
- package/dist/{chunk-TDRA5EZI.mjs → chunk-PUREEN2J.mjs} +7 -7
- package/dist/chunk-QFS5CENY.mjs +659 -0
- package/dist/chunk-QFS5CENY.mjs.map +1 -0
- package/dist/chunk-RSN7NH2J.mjs +250 -0
- package/dist/chunk-RSN7NH2J.mjs.map +1 -0
- package/dist/{chunk-UDREPVEY.mjs → chunk-RVSMEZE3.mjs} +12 -78
- package/dist/chunk-RVSMEZE3.mjs.map +1 -0
- package/dist/{chunk-SRWPHN2N.mjs → chunk-S64IYJ6Y.mjs} +2 -2
- package/dist/{chunk-ZG3NQI77.mjs → chunk-SMD7OEUW.mjs} +6 -4
- package/dist/{chunk-ZG3NQI77.mjs.map → chunk-SMD7OEUW.mjs.map} +1 -1
- package/dist/{chunk-NJYNJLT7.mjs → chunk-SWFB3A3G.mjs} +2 -2
- package/dist/{chunk-RXBQ7KXF.mjs → chunk-USXGNKWJ.mjs} +98 -44
- package/dist/chunk-USXGNKWJ.mjs.map +1 -0
- package/dist/{chunk-OJV6V7YZ.mjs → chunk-VL7V52YD.mjs} +27 -20
- package/dist/chunk-VL7V52YD.mjs.map +1 -0
- package/dist/{chunk-2ZZJTBTE.mjs → chunk-WJZ3IYET.mjs} +2 -2
- package/dist/chunk-XAJAMVAG.mjs +1720 -0
- package/dist/chunk-XAJAMVAG.mjs.map +1 -0
- package/dist/chunk-YIJ5QVJ6.mjs +277 -0
- package/dist/chunk-YIJ5QVJ6.mjs.map +1 -0
- package/dist/{chunk-T6AMRENK.mjs → chunk-YRW5NKD7.mjs} +148 -112
- package/dist/chunk-YRW5NKD7.mjs.map +1 -0
- package/dist/chunk-ZMJKG2UI.mjs +71 -0
- package/dist/chunk-ZMJKG2UI.mjs.map +1 -0
- package/dist/confirm.d.mts +48 -0
- package/dist/confirm.d.ts +48 -0
- package/dist/confirm.js +334 -0
- package/dist/confirm.js.map +1 -0
- package/dist/confirm.mjs +20 -0
- package/dist/datePicker.d.mts +256 -14
- package/dist/datePicker.d.ts +256 -14
- package/dist/datePicker.js +1624 -145
- package/dist/datePicker.js.map +1 -1
- package/dist/datePicker.mjs +19 -6
- package/dist/dialog.d.mts +166 -0
- package/dist/dialog.d.ts +166 -0
- package/dist/dialog.js +362 -0
- package/dist/dialog.js.map +1 -0
- package/dist/dialog.mjs +45 -0
- package/dist/emptyState.d.mts +17 -0
- package/dist/emptyState.d.ts +17 -0
- package/dist/emptyState.js +253 -0
- package/dist/emptyState.js.map +1 -0
- package/dist/emptyState.mjs +12 -0
- package/dist/emptyState.mjs.map +1 -0
- package/dist/errorState.d.mts +18 -0
- package/dist/errorState.d.ts +18 -0
- package/dist/{displayFile.js → errorState.js} +107 -156
- package/dist/errorState.js.map +1 -0
- package/dist/errorState.mjs +15 -0
- package/dist/errorState.mjs.map +1 -0
- package/dist/fileUpload.d.mts +197 -0
- package/dist/fileUpload.d.ts +197 -0
- package/dist/fileUpload.js +1483 -0
- package/dist/fileUpload.js.map +1 -0
- package/dist/fileUpload.mjs +65 -0
- package/dist/fileUpload.mjs.map +1 -0
- package/dist/flowMap.mjs +7 -6
- package/dist/flowMap.mjs.map +1 -1
- package/dist/image.js +1195 -429
- package/dist/image.js.map +1 -1
- package/dist/image.mjs +8 -6
- package/dist/index.d.ts +7 -2
- package/dist/index.js +8606 -4087
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +314 -152
- package/dist/inlineError.d.mts +16 -0
- package/dist/inlineError.d.ts +16 -0
- package/dist/inlineError.js +297 -0
- package/dist/inlineError.js.map +1 -0
- package/dist/inlineError.mjs +15 -0
- package/dist/inlineError.mjs.map +1 -0
- package/dist/input.mjs +8 -7
- package/dist/jsonEditor.mjs +3 -2
- package/dist/list.mjs +7 -6
- package/dist/loading.mjs +8 -6
- package/dist/markdown.mjs +7 -6
- package/dist/markdown.mjs.map +1 -1
- package/dist/menu.mjs +9 -8
- package/dist/modal.js +2 -1
- package/dist/modal.js.map +1 -1
- package/dist/modal.mjs +7 -5
- package/dist/process.d.mts +33 -75
- package/dist/process.d.ts +33 -75
- package/dist/process.js +1275 -203
- package/dist/process.js.map +1 -1
- package/dist/process.mjs +12 -9
- package/dist/scrollToLoad.mjs +4 -3
- package/dist/select.mjs +10 -9
- package/dist/skeleton.d.mts +15 -1
- package/dist/skeleton.d.ts +15 -1
- package/dist/skeleton.js +114 -2
- package/dist/skeleton.js.map +1 -1
- package/dist/skeleton.mjs +6 -3
- package/dist/stepper.mjs +4 -3
- package/dist/tab.mjs +10 -9
- package/dist/table.d.mts +269 -85
- package/dist/table.d.ts +269 -85
- package/dist/table.js +5102 -3153
- package/dist/table.js.map +1 -1
- package/dist/table.mjs +21 -19
- package/dist/theme.js +1766 -432
- package/dist/theme.js.map +1 -1
- package/dist/theme.mjs +32 -25
- package/dist/timeline.mjs +4 -3
- package/dist/toast.d.mts +49 -0
- package/dist/toast.d.ts +49 -0
- package/dist/toast.js +175 -0
- package/dist/toast.js.map +1 -0
- package/dist/toast.mjs +9 -0
- package/dist/toast.mjs.map +1 -0
- package/dist/toggleButtonGroup.mjs +3 -2
- package/dist/useForm.d.mts +270 -86
- package/dist/useForm.d.ts +270 -86
- package/dist/useForm.js +4672 -2727
- package/dist/useForm.js.map +1 -1
- package/dist/useForm.mjs +18 -16
- package/dist/useSearch.mjs +13 -12
- package/dist/variablesRenderer.mjs +8 -7
- package/package.json +3 -3
- package/dist/AutocompleteField-ZKNU2IRR.mjs +0 -181
- package/dist/AutocompleteField-ZKNU2IRR.mjs.map +0 -1
- package/dist/AvatarField-SAODT3CZ.mjs +0 -275
- package/dist/AvatarField-SAODT3CZ.mjs.map +0 -1
- package/dist/DateField-ZYMZFHL4.mjs.map +0 -1
- package/dist/DateTimeField-TPTJ7YIZ.mjs.map +0 -1
- package/dist/FileUploadField-NTMWBJER.mjs +0 -78
- package/dist/FileUploadField-NTMWBJER.mjs.map +0 -1
- package/dist/chunk-24XDGNJ6.mjs.map +0 -1
- package/dist/chunk-27KYFU7R.mjs +0 -30
- package/dist/chunk-27KYFU7R.mjs.map +0 -1
- package/dist/chunk-AAH2O24U.mjs +0 -325
- package/dist/chunk-AAH2O24U.mjs.map +0 -1
- package/dist/chunk-CRYIEYZZ.mjs.map +0 -1
- package/dist/chunk-EEH7HACG.mjs +0 -249
- package/dist/chunk-EEH7HACG.mjs.map +0 -1
- package/dist/chunk-EKPULYPU.mjs +0 -497
- package/dist/chunk-EKPULYPU.mjs.map +0 -1
- package/dist/chunk-OJV6V7YZ.mjs.map +0 -1
- package/dist/chunk-RXBQ7KXF.mjs.map +0 -1
- package/dist/chunk-S6EZVRZC.mjs.map +0 -1
- package/dist/chunk-SGCUDWO3.mjs +0 -396
- package/dist/chunk-SGCUDWO3.mjs.map +0 -1
- package/dist/chunk-T6AMRENK.mjs.map +0 -1
- package/dist/chunk-UDREPVEY.mjs.map +0 -1
- package/dist/chunk-UTVSYS6S.mjs.map +0 -1
- package/dist/chunk-XIMFP6RB.mjs +0 -161
- package/dist/chunk-XIMFP6RB.mjs.map +0 -1
- package/dist/displayFile.d.mts +0 -95
- package/dist/displayFile.d.ts +0 -95
- package/dist/displayFile.js.map +0 -1
- package/dist/displayFile.mjs +0 -19
- package/dist/fileUploader.d.mts +0 -86
- package/dist/fileUploader.d.ts +0 -86
- package/dist/fileUploader.js +0 -722
- package/dist/fileUploader.js.map +0 -1
- package/dist/fileUploader.mjs +0 -16
- /package/dist/{chunk-V26V2S3W.mjs.map → chunk-3O3N6X6D.mjs.map} +0 -0
- /package/dist/{chunk-UGMRJMFZ.mjs.map → chunk-BO5CU4ZM.mjs.map} +0 -0
- /package/dist/{chunk-R5MKQN6D.mjs.map → chunk-FBLSJQWK.mjs.map} +0 -0
- /package/dist/{chunk-JWANK42G.mjs.map → chunk-FUZ2JNTZ.mjs.map} +0 -0
- /package/dist/{chunk-DELCADNF.mjs.map → chunk-ODVKRIVN.mjs.map} +0 -0
- /package/dist/{chunk-OGNGPI3M.mjs.map → chunk-PL55YKT4.mjs.map} +0 -0
- /package/dist/{chunk-TDRA5EZI.mjs.map → chunk-PUREEN2J.mjs.map} +0 -0
- /package/dist/{chunk-SRWPHN2N.mjs.map → chunk-S64IYJ6Y.mjs.map} +0 -0
- /package/dist/{chunk-NJYNJLT7.mjs.map → chunk-SWFB3A3G.mjs.map} +0 -0
- /package/dist/{chunk-2ZZJTBTE.mjs.map → chunk-WJZ3IYET.mjs.map} +0 -0
- /package/dist/{displayFile.mjs.map → confirm.mjs.map} +0 -0
- /package/dist/{fileUploader.mjs.map → dialog.mjs.map} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/elemental/Input/src/PopperInput/PopperInput.tsx","../src/components/elemental/Input/src/StackInput/StackInput.tsx","../src/components/elemental/Input/src/StackInput/theme.ts","../src/components/elemental/Input/src/LineInput.tsx","../src/components/elemental/Input/src/lineInputTheme.ts"],"sourcesContent":["'use client'\nimport { useState, forwardRef, useImperativeHandle } from 'react'\nimport { Popper, ClickAwayListener } from '@/ele/Overlay'\nimport { styled } from '@mui/material/styles'\nimport { Box } from '@/ele/Box'\nimport MuiTextField from '@mui/material/TextField'\n\nimport {BorderBox} from '@/ele/Box'\n\ntype Props = {\n\tmargin?: 'dense' | 'normal' | 'none';\n\tinputProps?: [string,React.Dispatch<React.SetStateAction<string>>];\n\tlineHeight?: string;\n\tplacement?: 'top' | 'bottom' | 'left' | 'right';\n\tlabel?: string;\n} & React.ComponentProps<typeof MuiTextField>\nexport type PopperInputRef = {\n\tgetValue: () => string;\n}\n\n/**\n * A Input component that uses Popper to display the input field.\n * \n * has get value method if ref is provided.\n * \n * [Doc](https://mui.com/material-ui/api/text-field/)\n */\nconst PopperInput = forwardRef<PopperInputRef,Props>(({\n\tmargin=\"dense\",inputProps,\n\tlineHeight=\"1rem\",\n\tplacement=\"bottom\",label,\n\t...props\n},ref) => {\n\tconst [anchorEl, setAnchorEl] = useState<null | HTMLElement>(null)\n\tconst [value, setValue] = inputProps??[]\n\n\tuseImperativeHandle(ref, () => {\n\t\treturn {\n\t\t\tgetValue: () => value??\"\",\n\t\t}\n\t})\n\t\n\treturn (\n\t\t<>\n\t\t\t<BorderBox onClick={(event) => {setAnchorEl(anchorEl ? null : event.currentTarget)}}\n\t\t\ttitle={label}\n\t\t\tsx={{\n\t\t\t\twidth:\"-webkit-fill-available\",\n\t\t\t\tflex:1,\n cursor: 'pointer',\n\t\t\t}}\n\t\t\t>\n\t\t\t\t<Box \n\t\t\t\tstyle={{\n\t\t\t\t\t\"--lh\":lineHeight,\n\t\t\t\t} as React.CSSProperties}\n\t\t\t\tsx={{\n\t\t\t\t\tlineHeight:\"var(--lh)\",\n\t\t\t\t\twidth:\"100%\",\n\t\t\t\t\ttextOverflow:\"ellipsis\",\n\t\t\t\t\twhiteSpace:\"nowrap\",\n\t\t\t\t\toverflow:\"hidden\",\n\t\t\t\t}}>{value}</Box>\n\t\t\t</BorderBox>\n\t\t\t<StyledPopper {...{\n\t\t\t\tanchorEl,\n\t\t\t\topen:Boolean(anchorEl),\n\t\t\t\tplacement,\n\t\t\t}}>\n\t\t\t\t<ClickAwayListener onClickAway={()=>setAnchorEl(null)}>\n\t\t\t\t\t<Box sx={{\n\t\t\t\t\t\t\"&>.MuiTextField-root\":{\n\t\t\t\t\t\t\twidth:\"100%\",\n mb:0,\n\t\t\t\t\t\t}\n\t\t\t\t\t}}>\n\t\t\t\t\t\t<MuiTextField\n\t\t\t\t\t\tmargin={margin}\n\t\t\t\t\t\tmultiline={true}\n\t\t\t\t\t\tvalue={value} onChange={setValue?(e) => setValue(e.target.value):undefined}\n\t\t\t\t\t\tautoFocus={true}\n\t\t\t\t\t\tmaxRows={10}\n\t\t\t\t\t\tonFocus={e=>e\n\t\t\t\t\t\t\t.currentTarget\n\t\t\t\t\t\t\t.setSelectionRange(\n\t\t\t\t\t\t\t\te.currentTarget.value.length, \n\t\t\t\t\t\t\t\te.currentTarget.value.length\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t}\n\t\t\t\t\t\t{...props}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</Box>\n\t\t\t\t</ClickAwayListener>\n\t\t\t</StyledPopper>\n\t\t</>\n\n\t)\n})\n\nexport default PopperInput\n\nconst StyledPopper = styled(Popper)(\n\t({ theme }) => ({\n\t\tpadding: theme.spacing(0.5),\n\t\tboxShadow: `var(--shadow-outset-2)`,\n\t\tborderRadius: 6,\n maxWidth: '95vw',\n width: 700,\n\t\tzIndex: theme.zIndex.modal,\n\t\tfontSize: 13,\n\t\tbackgroundColor: 'transparent',\n backdropFilter: 'blur(2px)',\n\t})\n)","import React, { Fragment, forwardRef } from 'react'\nimport InputBase, { InputBaseProps } from '@mui/material/InputBase'\nimport { Box } from '@/ele/Box'\nimport { Paper as MuiPaper } from '@/ele/Paper'\nimport { IconButton } from '@/ele/Button'\nimport { Divider as MuiDivider } from '@/ele/Divider'\n\nimport { BorderBox } from '@/ele/Box'\nimport { stackInputVars } from './theme'\nimport { mergeSx } from '@/_utils/_func'\n\ntype buttonOptions = {\n\ticon: React.ReactNode;\n} & Omit<React.ComponentProps<typeof IconButton>,\"children\"|\"size\">\ntype Props = {\n\tmultiline?: boolean;\n\trows?: number;\n\tmargin?: 'dense' | 'normal' | 'none';\n\tsize?: 'small' | 'medium';\n\tlabel?: string;\n\tvalue?: string;\n\tplaceholder?: string;\n inputProps?: Record<string, unknown>;\n onChange?: (event: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement>) => void;\n startButtons?:buttonOptions[];\n endButtons?: buttonOptions[];\n br?: number; // border-radius\n haveBorder?: boolean; // have border\n borderTitle?: React.ComponentProps<typeof Wrapper>[\"title\"];\n /** Optional custom input component (e.g. raw phone input) */\n InputComponent?: React.ElementType;\n /** Props forwarded to the custom input component */\n inputComponentProps?: Record<string, unknown>;\n slotProps?:{\n input?: Partial<React.ComponentProps<typeof InputBase>[\"slotProps\"]>;\n paper?: Partial<React.ComponentProps<typeof MuiPaper>>;\n wrapper?: Partial<React.ComponentProps<typeof BorderBox>>;\n }\n} & InputBaseProps\n/**\n * A input component stacked with buttons on the left and right side.\n * \n * [Doc](https://mui.com/material-ui/api/text-field/)\n */\nconst StackInput = forwardRef(({\n\tvalue,onChange,\n\tstartButtons=[], // [{icon: <Icon />, onClick: ()=>{},...props}]\n\tendButtons=[], // [{icon: <Icon />, onClick: ()=>{},...props}]\n\tplaceholder=\"\",\n\n\thaveBorder=true,\n\tborderTitle,\n\tinputProps={},\n\tbr=4,\n slotProps,\n InputComponent,\n inputComponentProps,\n\t...rest\n}:Props,ref) => {\n\n const {sx: paperSX, ...restPaperProps} = slotProps?.paper || {}\n\n\treturn (\n\t\t<Wrapper haveBorder={haveBorder} title={borderTitle} {...slotProps?.wrapper}>\n\t\t\t<MuiPaper\n\n variant=\"elevation\"\n\t\t\tstyle={{\n\t\t\t\t'--br': `${br}px`,\n\t\t\t\t'--pd': haveBorder?\"0px\":\"8px 4px\",\n\t\t\t\t...stackInputVars,\n\t\t\t} as React.CSSProperties}\n\t\t\tsx={{ \n boxShadow:'none',\n\t\t\t\tpadding:\"var(--pd)\",\n\t\t\t\tdisplay: 'flex', \n\t\t\t\talignItems: 'center',\n\t\t\t\tborderRadius: \"var(--br)\",\n background: \"var(--stack-input-bg)\",\n ...paperSX,\n\t\t\t}}\n {...restPaperProps}\n\t\t\t>\n\t\t\t\t{startButtons.map(({icon,onClick,...rest}, index) => (\n\t\t\t\t\t<IconButton \n\t\t\t\t\tkey={index} \n\t\t\t\t\tsx={{ padding: 0 }} \n\t\t\t\t\tonClick={onClick} {...rest}\n\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{icon}\n\t\t\t\t\t</IconButton>\n\t\t\t\t))}\n\n {(() => {\n const InputComp = (InputComponent || InputBase) as React.ElementType\n return (\n <InputComp ref={ref}\n slotProps={slotProps?.input}\n value={value} onChange={onChange}\n sx={mergeSx(\n slotProps?.input?.sx,\n {\n \"&.MuiInputBase-root\":{\n marginLeft: \"8px\", \n flex: 1,\n },\n },\n )}\n placeholder={placeholder}\n {...rest}\n inputProps={{...inputProps}}\n {...(inputComponentProps || {})}\n />\n )\n })()} \n\n\t\t\t\t<Box \n\t\t\t\tsx={{\n\t\t\t\t\tdisplay:\"flex\",\n\t\t\t\t\talignItems: \"center\",\n\t\t\t\t}}>\n\t\t\t\t\t{endButtons.map(({icon,onClick,...rest}, index) => (\n\t\t\t\t\t\t<Fragment key={index}>\n\t\t\t\t\t\t\t<IconButton \n\t\t\t\t\t\t\tsx={{ p: 0 }} \n\t\t\t\t\t\t\tonClick={onClick} {...rest}\n\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{icon}\n\t\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t\t\t{index<endButtons.length-1 && \n\t\t\t\t\t\t\t<MuiDivider sx={{ height: 28, m: 0.5,borderLeftWidth:0 }} \n\t\t\t\t\t\t\torientation=\"vertical\" />}\n\t\t\t\t\t\t</Fragment>\n\t\t\t\t\t))}\n\t\t\t\t</Box>\n\t\t\t</MuiPaper>\n\t\t</Wrapper>\n\t)\n})\n\nexport default StackInput\n\nfunction Wrapper(p:{\n\tchildren:React.ReactNode;\n\thaveBorder:boolean;\n\ttitle?:React.ComponentProps<typeof BorderBox>[\"title\"];\n} & React.ComponentProps<typeof BorderBox>){\n const {children, haveBorder, title, ...rest} = p;\n \n\tif(haveBorder)return (<BorderBox title={title} \n\t\tsx={{\n\t\t\twidth:\"-webkit-fill-available\",\n\t\t}} {...rest}>\n\t\t\t{children}\n\t\t</BorderBox>)\n\treturn children\n}","/**\n * Root-level CSS variable aliases for StackInput.\n * MuiPaper spreads these; palette refs are declared only here.\n */\nexport const stackInputVars = {\n '--stack-input-bg': 'var(--mui-palette-background-default)',\n} as const\n","'use client'\nimport { forwardRef } from 'react'\nimport { styled } from '@mui/material/styles'\nimport TextField, { type TextFieldProps } from '@mui/material/TextField'\nimport { lineInputVars } from './lineInputTheme'\n\ntype Props = {\n multiline?: boolean;\n rows?: number;\n margin?: 'dense' | 'normal' | 'none';\n size?: 'small' | 'medium';\n label?: string;\n} & TextFieldProps\n/**\n * A TextField Variant \n * \n * `variant=\"standard\"`\n * \n * [Doc](https://mui.com/material-ui/api/text-field/)\n */\nconst LineInput = forwardRef<HTMLInputElement,Props>(({\n value,label,style,...props\n},ref) => {\n return (\n <DefaultStyled value={value} label={label} {...props} ref={ref}\n variant=\"standard\"\n style={{\n '--mt-scale':label?2:0,\n ...style,\n } as React.CSSProperties}\n />\n )\n})\n\nexport default LineInput\n\nconst DefaultStyled = styled(TextField)(\n ()=>({\n \"&.MuiTextField-root\":{\n ...lineInputVars,\n flex: 1,\n \"& .MuiInput-input\":{\n paddingTop:0,paddingBottom:0,\n },\n \"& .MuiInput-root::before\":{\n borderBottomColor:\"var(--line-input-divider)\",\n },\n \"& .MuiOutlinedInput-root\": {\n color:\"var(--line-input-text-primary)\",\n '& fieldset': {\n border: 'unset',\n boxShadow:\"inset 0 0 0 2px var(--line-input-divider)\",\n color: \"var(--line-input-text-secondary)\",\n },\n '&:hover fieldset': {\n border: 'unset',\n boxShadow:\"inset 0 0 0 2px var(--line-input-text-secondary)\",\n },\n '&.Mui-focused fieldset': {\n border: 'unset',\n boxShadow:\"inset 0 0 0 2px var(--line-input-text-secondary)\",\n },\n },\n \"& .MuiInputLabel-root\": {\n border: \"unset\",\n backgroundColor: \"var(--line-input-bg)\",\n color: \"var(--line-input-text-secondary)\",\n \"&.Mui-focused\":{\n color: \"var(--line-input-text-secondary)\",\n },\n \"&.Mui-focused.Mui-error\":{\n color: \"var(--line-input-error)\",\n }\n },\n // hide placeholder ghost bug fix with css\n // https://mui.com/material-ui/react-text-field/#shrink\n // hide placeholder ghost\n ' & .MuiInputLabel-root:not([data-shrink=\"true\"])~.MuiInputBase-root>.MuiInputBase-input':{\n color:\"transparent\",\n },\n \"& .MuiFormHelperText-root\":{\n color:\"var(--line-input-text-primary)\",\n },\n \"& .Mui-error\":{\n color: \"var(--line-input-error)\",\n },\n \"& .MuiInputBase-root\":{\n fontSize:\"inherit\",\n color:\"var(--line-input-text-primary)\",\n marginTop: `calc(8px * var(--mt-scale))`,\n },\n \n \"& .MuiInputBase-root:after\":{\n borderColor:\"var(--line-input-text-primary)\",\n },\n },\n })\n)\n","/**\n * Root-level CSS variable aliases for LineInput.\n * Spread inside DefaultStyled's root selector; palette refs are declared only here.\n */\nexport const lineInputVars = {\n '--line-input-bg': 'var(--mui-palette-background-default)',\n '--line-input-divider': 'var(--mui-palette-divider)',\n '--line-input-text-primary': 'var(--mui-palette-text-primary)',\n '--line-input-text-secondary': 'var(--mui-palette-text-secondary)',\n '--line-input-error': 'var(--mui-palette-error-main)',\n} as const\n"],"mappings":"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","names":["default","Fragment","forwardRef","jsx","jsxs","forwardRef","rest","default","Fragment","forwardRef","styled","jsx","forwardRef","styled"]}
|
|
1
|
+
{"version":3,"sources":["../src/components/elemental/Input/src/PopperInput/PopperInput.tsx","../src/components/elemental/Input/src/StackInput/StackInput.tsx","../src/components/elemental/Input/src/StackInput/theme.ts","../src/components/elemental/Input/src/LineInput.tsx","../src/components/elemental/Input/src/lineInputTheme.ts"],"sourcesContent":["'use client'\nimport { useState, forwardRef, useImperativeHandle } from 'react'\nimport { Popper, ClickAwayListener } from '@/ele/Overlay'\nimport { styled } from '@mui/material/styles'\nimport { Box } from '@/ele/Box'\nimport MuiTextField from '@mui/material/TextField'\n\nimport {BorderBox} from '@/ele/Box'\n\ntype Props = {\n\tmargin?: 'dense' | 'normal' | 'none';\n\tinputProps?: [string,React.Dispatch<React.SetStateAction<string>>];\n\tlineHeight?: string;\n\tplacement?: 'top' | 'bottom' | 'left' | 'right';\n\tlabel?: string;\n} & React.ComponentProps<typeof MuiTextField>\nexport type PopperInputRef = {\n\tgetValue: () => string;\n}\n\n/**\n * A Input component that uses Popper to display the input field.\n * \n * has get value method if ref is provided.\n * \n * [Doc](https://mui.com/material-ui/api/text-field/)\n */\nconst PopperInput = forwardRef<PopperInputRef,Props>(({\n\tmargin=\"dense\",inputProps,\n\tlineHeight=\"1rem\",\n\tplacement=\"bottom\",label,\n\t...props\n},ref) => {\n\tconst [anchorEl, setAnchorEl] = useState<null | HTMLElement>(null)\n\tconst [value, setValue] = inputProps??[]\n\n\tuseImperativeHandle(ref, () => {\n\t\treturn {\n\t\t\tgetValue: () => value??\"\",\n\t\t}\n\t})\n\t\n\treturn (\n\t\t<>\n\t\t\t<BorderBox onClick={(event) => {setAnchorEl(anchorEl ? null : event.currentTarget)}}\n\t\t\ttitle={label}\n\t\t\tsx={{\n\t\t\t\twidth:\"-webkit-fill-available\",\n\t\t\t\tflex:1,\n cursor: 'pointer',\n\t\t\t}}\n\t\t\t>\n\t\t\t\t<Box \n\t\t\t\tstyle={{\n\t\t\t\t\t\"--lh\":lineHeight,\n\t\t\t\t} as React.CSSProperties}\n\t\t\t\tsx={{\n\t\t\t\t\tlineHeight:\"var(--lh)\",\n\t\t\t\t\twidth:\"100%\",\n\t\t\t\t\ttextOverflow:\"ellipsis\",\n\t\t\t\t\twhiteSpace:\"nowrap\",\n\t\t\t\t\toverflow:\"hidden\",\n\t\t\t\t}}>{value}</Box>\n\t\t\t</BorderBox>\n\t\t\t<StyledPopper {...{\n\t\t\t\tanchorEl,\n\t\t\t\topen:Boolean(anchorEl),\n\t\t\t\tplacement,\n\t\t\t}}>\n\t\t\t\t<ClickAwayListener onClickAway={()=>setAnchorEl(null)}>\n\t\t\t\t\t<Box sx={{\n\t\t\t\t\t\t\"&>.MuiTextField-root\":{\n\t\t\t\t\t\t\twidth:\"100%\",\n mb:0,\n\t\t\t\t\t\t}\n\t\t\t\t\t}}>\n\t\t\t\t\t\t<MuiTextField\n\t\t\t\t\t\tmargin={margin}\n\t\t\t\t\t\tmultiline={true}\n\t\t\t\t\t\tvalue={value} onChange={setValue?(e) => setValue(e.target.value):undefined}\n\t\t\t\t\t\tautoFocus={true}\n\t\t\t\t\t\tmaxRows={10}\n\t\t\t\t\t\tonFocus={e=>e\n\t\t\t\t\t\t\t.currentTarget\n\t\t\t\t\t\t\t.setSelectionRange(\n\t\t\t\t\t\t\t\te.currentTarget.value.length, \n\t\t\t\t\t\t\t\te.currentTarget.value.length\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t}\n\t\t\t\t\t\t{...props}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</Box>\n\t\t\t\t</ClickAwayListener>\n\t\t\t</StyledPopper>\n\t\t</>\n\n\t)\n})\n\nexport default PopperInput\n\nconst StyledPopper = styled(Popper)(\n\t({ theme }) => ({\n\t\tpadding: theme.spacing(0.5),\n\t\tboxShadow: `var(--shadow-outset-2)`,\n\t\tborderRadius: 6,\n maxWidth: '95vw',\n width: 700,\n\t\tzIndex: theme.zIndex.modal,\n\t\tfontSize: 13,\n\t\tbackgroundColor: 'transparent',\n backdropFilter: 'blur(2px)',\n\t})\n)","import React, { Fragment, forwardRef } from 'react'\nimport InputBase, { InputBaseProps } from '@mui/material/InputBase'\nimport { Box } from '@/ele/Box'\nimport { Paper as MuiPaper } from '@/ele/Paper'\nimport { IconButton } from '@/ele/Button'\nimport { Divider as MuiDivider } from '@/ele/Divider'\n\nimport { BorderBox } from '@/ele/Box'\nimport { stackInputVars } from './theme'\nimport { mergeSx } from '@/_utils/_func'\n\ntype buttonOptions = {\n\ticon: React.ReactNode;\n} & Omit<React.ComponentProps<typeof IconButton>,\"children\"|\"size\">\ntype Props = {\n\tmultiline?: boolean;\n\trows?: number;\n\tmargin?: 'dense' | 'normal' | 'none';\n\tsize?: 'small' | 'medium';\n\tlabel?: string;\n\tvalue?: string;\n\tplaceholder?: string;\n inputProps?: Record<string, unknown>;\n onChange?: (event: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement>) => void;\n startButtons?:buttonOptions[];\n endButtons?: buttonOptions[];\n br?: number; // border-radius\n haveBorder?: boolean; // have border\n borderTitle?: React.ComponentProps<typeof Wrapper>[\"title\"];\n /** Optional custom input component (e.g. raw phone input) */\n InputComponent?: React.ElementType;\n /** Props forwarded to the custom input component */\n inputComponentProps?: Record<string, unknown>;\n slotProps?:{\n input?: Partial<React.ComponentProps<typeof InputBase>[\"slotProps\"]>;\n paper?: Partial<React.ComponentProps<typeof MuiPaper>>;\n wrapper?: Partial<React.ComponentProps<typeof BorderBox>>;\n }\n} & InputBaseProps\n/**\n * A input component stacked with buttons on the left and right side.\n * \n * [Doc](https://mui.com/material-ui/api/text-field/)\n */\nconst StackInput = forwardRef(({\n\tvalue,onChange,\n\tstartButtons=[], // [{icon: <Icon />, onClick: ()=>{},...props}]\n\tendButtons=[], // [{icon: <Icon />, onClick: ()=>{},...props}]\n\tplaceholder=\"\",\n\n\thaveBorder=true,\n\tborderTitle,\n\tinputProps={},\n\tbr=4,\n slotProps,\n InputComponent,\n inputComponentProps,\n\t...rest\n}:Props,ref) => {\n\n const {sx: paperSX, ...restPaperProps} = slotProps?.paper || {}\n\n\treturn (\n\t\t<Wrapper haveBorder={haveBorder} title={borderTitle} {...slotProps?.wrapper}>\n\t\t\t<MuiPaper\n\n variant=\"elevation\"\n\t\t\tstyle={{\n\t\t\t\t'--br': `${br}px`,\n\t\t\t\t'--pd': haveBorder?\"0px\":\"8px 4px\",\n\t\t\t\t...stackInputVars,\n\t\t\t} as React.CSSProperties}\n\t\t\tsx={{ \n boxShadow:'none',\n\t\t\t\tpadding:\"var(--pd)\",\n\t\t\t\tdisplay: 'flex', \n\t\t\t\talignItems: 'center',\n\t\t\t\tborderRadius: \"var(--br)\",\n background: \"var(--stack-input-bg)\",\n ...paperSX,\n\t\t\t}}\n {...restPaperProps}\n\t\t\t>\n\t\t\t\t{startButtons.map(({icon,onClick,...rest}, index) => (\n\t\t\t\t\t<IconButton \n\t\t\t\t\tkey={index} \n\t\t\t\t\tsx={{ padding: 0 }} \n\t\t\t\t\tonClick={onClick} {...rest}\n\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{icon}\n\t\t\t\t\t</IconButton>\n\t\t\t\t))}\n\n {(() => {\n const InputComp = (InputComponent || InputBase) as React.ElementType\n return (\n <InputComp ref={ref}\n slotProps={slotProps?.input}\n value={value} onChange={onChange}\n sx={mergeSx(\n slotProps?.input?.sx,\n {\n \"&.MuiInputBase-root\":{\n marginLeft: \"8px\", \n flex: 1,\n },\n },\n )}\n placeholder={placeholder}\n {...rest}\n inputProps={{...inputProps}}\n {...(inputComponentProps || {})}\n />\n )\n })()} \n\n\t\t\t\t<Box \n\t\t\t\tsx={{\n\t\t\t\t\tdisplay:\"flex\",\n\t\t\t\t\talignItems: \"center\",\n\t\t\t\t}}>\n\t\t\t\t\t{endButtons.map(({icon,onClick,...rest}, index) => (\n\t\t\t\t\t\t<Fragment key={index}>\n\t\t\t\t\t\t\t<IconButton \n\t\t\t\t\t\t\tsx={{ p: 0 }} \n\t\t\t\t\t\t\tonClick={onClick} {...rest}\n\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{icon}\n\t\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t\t\t{index<endButtons.length-1 && \n\t\t\t\t\t\t\t<MuiDivider sx={{ height: 28, m: 0.5,borderLeftWidth:0 }} \n\t\t\t\t\t\t\torientation=\"vertical\" />}\n\t\t\t\t\t\t</Fragment>\n\t\t\t\t\t))}\n\t\t\t\t</Box>\n\t\t\t</MuiPaper>\n\t\t</Wrapper>\n\t)\n})\n\nexport default StackInput\n\nfunction Wrapper(p:{\n\tchildren:React.ReactNode;\n\thaveBorder:boolean;\n\ttitle?:React.ComponentProps<typeof BorderBox>[\"title\"];\n} & React.ComponentProps<typeof BorderBox>){\n const {children, haveBorder, title, ...rest} = p;\n \n\tif(haveBorder)return (<BorderBox title={title} \n\t\tsx={{\n\t\t\twidth:\"-webkit-fill-available\",\n\t\t}} {...rest}>\n\t\t\t{children}\n\t\t</BorderBox>)\n\treturn children\n}","/**\n * Root-level CSS variable aliases for StackInput.\n * MuiPaper spreads these; palette refs are declared only here.\n */\nexport const stackInputVars = {\n '--stack-input-bg': 'var(--mui-palette-background-default)',\n} as const\n","'use client'\nimport { forwardRef } from 'react'\nimport { styled } from '@mui/material/styles'\nimport TextField, { type TextFieldProps } from '@mui/material/TextField'\nimport { lineInputVars } from './lineInputTheme'\n\ntype Props = {\n multiline?: boolean;\n rows?: number;\n margin?: 'dense' | 'normal' | 'none';\n size?: 'small' | 'medium';\n label?: string;\n} & TextFieldProps\n/**\n * A TextField Variant \n * \n * `variant=\"standard\"`\n * \n * [Doc](https://mui.com/material-ui/api/text-field/)\n */\nconst LineInput = forwardRef<HTMLInputElement,Props>(({\n value,label,style,...props\n},ref) => {\n return (\n <DefaultStyled value={value} label={label} {...props} ref={ref}\n variant=\"standard\"\n style={{\n '--mt-scale':label?2:0,\n ...style,\n } as React.CSSProperties}\n />\n )\n})\n\nexport default LineInput\n\nconst DefaultStyled = styled(TextField)(\n ()=>({\n \"&.MuiTextField-root\":{\n ...lineInputVars,\n flex: 1,\n \"& .MuiInput-input\":{\n paddingTop:0,paddingBottom:0,\n },\n \"& .MuiInput-root::before\":{\n borderBottomColor:\"var(--line-input-divider)\",\n },\n \"& .MuiOutlinedInput-root\": {\n color:\"var(--line-input-text-primary)\",\n '& fieldset': {\n border: 'unset',\n boxShadow:\"inset 0 0 0 2px var(--line-input-divider)\",\n color: \"var(--line-input-text-secondary)\",\n },\n '&:hover fieldset': {\n border: 'unset',\n boxShadow:\"inset 0 0 0 2px var(--line-input-text-secondary)\",\n },\n '&.Mui-focused fieldset': {\n border: 'unset',\n boxShadow:\"inset 0 0 0 2px var(--line-input-text-secondary)\",\n },\n },\n \"& .MuiInputLabel-root\": {\n border: \"unset\",\n backgroundColor: \"var(--line-input-bg)\",\n color: \"var(--line-input-text-secondary)\",\n \"&.Mui-focused\":{\n color: \"var(--line-input-text-secondary)\",\n },\n \"&.Mui-focused.Mui-error\":{\n color: \"var(--line-input-error)\",\n }\n },\n // hide placeholder ghost bug fix with css\n // https://mui.com/material-ui/react-text-field/#shrink\n // hide placeholder ghost\n ' & .MuiInputLabel-root:not([data-shrink=\"true\"])~.MuiInputBase-root>.MuiInputBase-input':{\n color:\"transparent\",\n },\n \"& .MuiFormHelperText-root\":{\n color:\"var(--line-input-text-primary)\",\n },\n \"& .Mui-error\":{\n color: \"var(--line-input-error)\",\n },\n \"& .MuiInputBase-root\":{\n fontSize:\"inherit\",\n color:\"var(--line-input-text-primary)\",\n marginTop: `calc(8px * var(--mt-scale))`,\n },\n \n \"& .MuiInputBase-root:after\":{\n borderColor:\"var(--line-input-text-primary)\",\n },\n },\n })\n)\n","/**\n * Root-level CSS variable aliases for LineInput.\n * Spread inside DefaultStyled's root selector; palette refs are declared only here.\n */\nexport const lineInputVars = {\n '--line-input-bg': 'var(--mui-palette-background-default)',\n '--line-input-divider': 'var(--mui-palette-divider)',\n '--line-input-text-primary': 'var(--mui-palette-text-primary)',\n '--line-input-text-secondary': 'var(--mui-palette-text-secondary)',\n '--line-input-error': 'var(--mui-palette-error-main)',\n} as const\n"],"mappings":"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","names":["default","Fragment","forwardRef","jsx","jsxs","forwardRef","rest","default","Fragment","forwardRef","styled","jsx","forwardRef","styled"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
default as default2
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-PNSJC6PC.mjs";
|
|
4
4
|
|
|
5
5
|
// src/components/elemental/JsonEditor/src/JsonEditor/JsonEditor.tsx
|
|
6
6
|
import React, { Suspense, useCallback, useMemo, useRef } from "react";
|
|
@@ -169,4 +169,4 @@ var StyledWrapper = styled(default2, {
|
|
|
169
169
|
export {
|
|
170
170
|
JsonEditor_default
|
|
171
171
|
};
|
|
172
|
-
//# sourceMappingURL=chunk-
|
|
172
|
+
//# sourceMappingURL=chunk-SWFB3A3G.mjs.map
|
|
@@ -1,25 +1,27 @@
|
|
|
1
|
+
import {
|
|
2
|
+
FileUpload
|
|
3
|
+
} from "./chunk-4SSJY32J.mjs";
|
|
1
4
|
import {
|
|
2
5
|
default as default8
|
|
3
6
|
} from "./chunk-EW4DTFH3.mjs";
|
|
4
|
-
import {
|
|
5
|
-
ReactDropzone_default
|
|
6
|
-
} from "./chunk-XIMFP6RB.mjs";
|
|
7
|
-
import {
|
|
8
|
-
IconButton_default
|
|
9
|
-
} from "./chunk-JIU5GVM7.mjs";
|
|
10
7
|
import {
|
|
11
8
|
default106 as default6,
|
|
12
9
|
default108 as default7,
|
|
13
10
|
default69 as default5
|
|
14
11
|
} from "./chunk-ZVFYOXDE.mjs";
|
|
12
|
+
import {
|
|
13
|
+
IconButton_default
|
|
14
|
+
} from "./chunk-D4XPNSSI.mjs";
|
|
15
15
|
import {
|
|
16
16
|
default as default4
|
|
17
17
|
} from "./chunk-4RPFRNXG.mjs";
|
|
18
18
|
import {
|
|
19
19
|
default as default2,
|
|
20
|
-
default2 as default3
|
|
20
|
+
default2 as default3
|
|
21
|
+
} from "./chunk-PNSJC6PC.mjs";
|
|
22
|
+
import {
|
|
21
23
|
mergeSx
|
|
22
|
-
} from "./chunk-
|
|
24
|
+
} from "./chunk-AFLEG5ZC.mjs";
|
|
23
25
|
|
|
24
26
|
// src/components/elemental/Image/src/MuiImageList/MuiImageList.tsx
|
|
25
27
|
import ImageList from "@mui/material/ImageList";
|
|
@@ -91,10 +93,37 @@ function CropperLayout({
|
|
|
91
93
|
overflow: "auto"
|
|
92
94
|
},
|
|
93
95
|
children: [
|
|
94
|
-
/* @__PURE__ */ jsxs(
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
96
|
+
/* @__PURE__ */ jsxs(
|
|
97
|
+
default2,
|
|
98
|
+
{
|
|
99
|
+
sx: {
|
|
100
|
+
display: "flex",
|
|
101
|
+
flexDirection: "column",
|
|
102
|
+
justifyContent: "space-between",
|
|
103
|
+
minHeight: 0,
|
|
104
|
+
height: "100%",
|
|
105
|
+
alignItems: "center",
|
|
106
|
+
width: "-webkit-fill-available"
|
|
107
|
+
},
|
|
108
|
+
children: [
|
|
109
|
+
left,
|
|
110
|
+
leftFooter ? /* @__PURE__ */ jsx2(
|
|
111
|
+
default2,
|
|
112
|
+
{
|
|
113
|
+
"data-testid": "cropper-left-footer",
|
|
114
|
+
sx: {
|
|
115
|
+
width: "100%",
|
|
116
|
+
display: "flex",
|
|
117
|
+
justifyContent: "center",
|
|
118
|
+
alignItems: "center",
|
|
119
|
+
pt: 1
|
|
120
|
+
},
|
|
121
|
+
children: leftFooter
|
|
122
|
+
}
|
|
123
|
+
) : null
|
|
124
|
+
]
|
|
125
|
+
}
|
|
126
|
+
),
|
|
98
127
|
/* @__PURE__ */ jsxs(default2, { sx: { display: "flex", flexDirection: "column", justifyContent: "space-between", minHeight: 0, height: "100%" }, children: [
|
|
99
128
|
right,
|
|
100
129
|
footer
|
|
@@ -277,43 +306,68 @@ function CropperActionSection({
|
|
|
277
306
|
// src/components/elemental/Image/src/Cropper/sections/CropperFileSelector.tsx
|
|
278
307
|
import React from "react";
|
|
279
308
|
import { jsx as jsx6 } from "react/jsx-runtime";
|
|
280
|
-
function
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
309
|
+
function acceptToString(accept) {
|
|
310
|
+
if (!accept) return "image/*";
|
|
311
|
+
if (typeof accept === "string") return accept;
|
|
312
|
+
const parts = [];
|
|
313
|
+
Object.entries(accept).forEach(([mime, exts]) => {
|
|
314
|
+
parts.push(mime);
|
|
315
|
+
if (Array.isArray(exts)) parts.push(...exts);
|
|
316
|
+
});
|
|
317
|
+
return parts.length ? parts.join(",") : "image/*";
|
|
318
|
+
}
|
|
319
|
+
function CropperFileSelector({
|
|
320
|
+
accept = "image/*",
|
|
321
|
+
buttonLabel = "Select Image",
|
|
322
|
+
onPick
|
|
323
|
+
}) {
|
|
324
|
+
const [value, setValue] = React.useState([]);
|
|
325
|
+
const lastIdRef = React.useRef(null);
|
|
285
326
|
React.useEffect(() => {
|
|
286
|
-
if (!
|
|
287
|
-
if (
|
|
288
|
-
|
|
327
|
+
if (!value.length) {
|
|
328
|
+
if (lastIdRef.current) {
|
|
329
|
+
lastIdRef.current = null;
|
|
289
330
|
onPick?.(null);
|
|
290
331
|
}
|
|
291
332
|
return;
|
|
292
333
|
}
|
|
293
|
-
const
|
|
294
|
-
if (
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
334
|
+
const item = value[0];
|
|
335
|
+
if (lastIdRef.current === item.id) return;
|
|
336
|
+
lastIdRef.current = item.id;
|
|
337
|
+
onPick?.(item.file);
|
|
338
|
+
}, [value, onPick]);
|
|
339
|
+
return /* @__PURE__ */ jsx6(
|
|
340
|
+
default2,
|
|
341
|
+
{
|
|
342
|
+
sx: {
|
|
343
|
+
display: "flex",
|
|
344
|
+
alignItems: "center",
|
|
345
|
+
justifyContent: "center",
|
|
346
|
+
width: "100%",
|
|
347
|
+
pt: 0
|
|
348
|
+
},
|
|
349
|
+
children: /* @__PURE__ */ jsx6(
|
|
350
|
+
FileUpload,
|
|
351
|
+
{
|
|
352
|
+
value,
|
|
353
|
+
onChange: setValue,
|
|
354
|
+
accept: acceptToString(accept),
|
|
355
|
+
maxFiles: 1,
|
|
356
|
+
multiple: false,
|
|
357
|
+
variant: "button",
|
|
358
|
+
buttonLabel,
|
|
359
|
+
itemVariant: "tile",
|
|
360
|
+
sx: {
|
|
361
|
+
width: "fit-content",
|
|
362
|
+
maxWidth: "100%",
|
|
363
|
+
alignItems: "center",
|
|
364
|
+
"& .MuiButton-root": { alignSelf: "center" },
|
|
365
|
+
'& [data-testid$="-list"]': { justifyContent: "center" }
|
|
366
|
+
}
|
|
307
367
|
}
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
return () => {
|
|
312
|
-
cancelled = true;
|
|
313
|
-
};
|
|
314
|
-
}, [files, onPick]);
|
|
315
|
-
const acceptProp = typeof accept === "string" ? { [accept]: [] } : accept;
|
|
316
|
-
return /* @__PURE__ */ jsx6(default2, { sx: { display: "flex", alignItems: "center", pt: 0, width: "100%", justifyContent: "center" }, children: /* @__PURE__ */ jsx6(ReactDropzone_default, { filesProps: [files, setFiles], accept: acceptProp, maxFiles: 1, dropzoneType: "button", label: buttonLabel }) });
|
|
368
|
+
)
|
|
369
|
+
}
|
|
370
|
+
);
|
|
317
371
|
}
|
|
318
372
|
|
|
319
373
|
// src/components/elemental/Image/src/Cropper/hooks/useCropperState.ts
|
|
@@ -649,4 +703,4 @@ export {
|
|
|
649
703
|
MuiImageList_default,
|
|
650
704
|
Cropper_default
|
|
651
705
|
};
|
|
652
|
-
//# sourceMappingURL=chunk-
|
|
706
|
+
//# sourceMappingURL=chunk-USXGNKWJ.mjs.map
|
|
@@ -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\n sx={{\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'space-between',\n minHeight: 0,\n height: '100%',\n alignItems: 'center',\n width: '-webkit-fill-available',\n }}\n >\n {left}\n {leftFooter ? (\n <Box\n data-testid=\"cropper-left-footer\"\n sx={{\n width: '100%',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n pt: 1,\n }}\n >\n {leftFooter}\n </Box>\n ) : null}\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 {\n FileUpload,\n type FileUploadItem,\n} from '@/ele/FileUpload'\n\n/** Mime → extensions map (legacy dropzone shape) or HTML accept string. */\ntype AcceptInput = string | Record<string, string[]>\n\ninterface Props {\n accept?: AcceptInput\n buttonLabel?: string\n /** `null` means the selection was cleared */\n onPick?: (file: File | null) => void\n}\n\nfunction acceptToString(accept: AcceptInput | undefined): string {\n if (!accept) return 'image/*'\n if (typeof accept === 'string') return accept\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\n/**\n * Compact image picker for Cropper — elemental FileUpload button + tile.\n */\nexport default function CropperFileSelector({\n accept = 'image/*',\n buttonLabel = 'Select Image',\n onPick,\n}: Props) {\n const [value, setValue] = React.useState<FileUploadItem[]>([])\n const lastIdRef = React.useRef<string | null>(null)\n\n React.useEffect(() => {\n if (!value.length) {\n if (lastIdRef.current) {\n lastIdRef.current = null\n onPick?.(null)\n }\n return\n }\n const item = value[0]\n if (lastIdRef.current === item.id) return\n lastIdRef.current = item.id\n onPick?.(item.file)\n }, [value, onPick])\n\n return (\n <Box\n sx={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n width: '100%',\n pt: 0,\n }}\n >\n <FileUpload\n value={value}\n onChange={setValue}\n accept={acceptToString(accept)}\n maxFiles={1}\n multiple={false}\n variant=\"button\"\n buttonLabel={buttonLabel}\n itemVariant=\"tile\"\n // Shrink-wrap so parent can center this sector; override button alignSelf.\n sx={{\n width: 'fit-content',\n maxWidth: '100%',\n alignItems: 'center',\n '& .MuiButton-root': { alignSelf: 'center' },\n '& [data-testid$=\"-list\"]': { justifyContent: 'center' },\n }}\n />\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"]}
|
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
import {
|
|
2
2
|
randomStrGenerator
|
|
3
3
|
} from "./chunk-QFF3HTHL.mjs";
|
|
4
|
-
import {
|
|
5
|
-
IconButton_default,
|
|
6
|
-
TagButton_default
|
|
7
|
-
} from "./chunk-JIU5GVM7.mjs";
|
|
8
4
|
import {
|
|
9
5
|
default54 as default4,
|
|
10
6
|
default69 as default5
|
|
11
7
|
} from "./chunk-ZVFYOXDE.mjs";
|
|
8
|
+
import {
|
|
9
|
+
IconButton_default,
|
|
10
|
+
TagButton_default
|
|
11
|
+
} from "./chunk-D4XPNSSI.mjs";
|
|
12
12
|
import {
|
|
13
13
|
default as default3
|
|
14
14
|
} from "./chunk-4RPFRNXG.mjs";
|
|
15
15
|
import {
|
|
16
16
|
default as default2
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-PNSJC6PC.mjs";
|
|
18
18
|
|
|
19
19
|
// src/components/elemental/Autocomplete/src/GitHubPicker/theme.ts
|
|
20
20
|
import { styled } from "@mui/material/styles";
|
|
@@ -28,8 +28,9 @@ var gitHubPickerRootStyle = {
|
|
|
28
28
|
"--picker-text": "var(--mui-palette-text-primary)",
|
|
29
29
|
"--picker-text-secondary": "var(--mui-palette-text-secondary)",
|
|
30
30
|
"--picker-text-disabled": "var(--mui-palette-text-disabled)",
|
|
31
|
-
|
|
32
|
-
"--picker-
|
|
31
|
+
// Night: lift above near-black canvas (Google search-bar mid-grey glass).
|
|
32
|
+
"--picker-surface": "color-mix(in lab, var(--mui-palette-common-white), transparent 87%)",
|
|
33
|
+
"--picker-paper-bg": "color-mix(in lab, var(--mui-palette-common-white), transparent 84%)",
|
|
33
34
|
"--picker-hover-bg": "var(--mui-palette-background-hover-1)",
|
|
34
35
|
"--picker-chip-bg": "color-mix(in lab, var(--mui-palette-secondary-main), transparent 88%)",
|
|
35
36
|
"--picker-chip-border": "color-mix(in lab, var(--mui-palette-common-white), transparent 94%)",
|
|
@@ -82,6 +83,10 @@ var gitHubPickerRootStyle = {
|
|
|
82
83
|
var gitHubPickerRootSx = {
|
|
83
84
|
...gitHubPickerRootStyle
|
|
84
85
|
};
|
|
86
|
+
var pickerFieldQuietShadow = [
|
|
87
|
+
"inset 0 1px 0 var(--picker-highlight)",
|
|
88
|
+
"0 1px 2px color-mix(in srgb, var(--mui-palette-common-black), transparent 82%)"
|
|
89
|
+
].join(", ");
|
|
85
90
|
var PickerField = styled(default2, {
|
|
86
91
|
shouldForwardProp: (prop) => prop !== "open" && prop !== "error" && prop !== "disabled"
|
|
87
92
|
})({
|
|
@@ -92,42 +97,44 @@ var PickerField = styled(default2, {
|
|
|
92
97
|
display: "flex",
|
|
93
98
|
flexDirection: "column",
|
|
94
99
|
gap: 8,
|
|
95
|
-
padding: "12px
|
|
100
|
+
padding: "10px 12px 12px",
|
|
96
101
|
borderRadius: 12,
|
|
97
102
|
border: "1px solid var(--picker-field-border)",
|
|
98
|
-
backgroundColor: "var(--picker-surface)",
|
|
103
|
+
backgroundColor: "var(--picker-field-bg, var(--picker-surface))",
|
|
99
104
|
backgroundImage: "var(--picker-sheen)",
|
|
100
|
-
backdropFilter: "
|
|
101
|
-
WebkitBackdropFilter: "
|
|
105
|
+
backdropFilter: "var(--picker-glass)",
|
|
106
|
+
WebkitBackdropFilter: "var(--picker-glass)",
|
|
102
107
|
cursor: "var(--picker-field-cursor)",
|
|
103
108
|
outline: "none",
|
|
104
109
|
boxShadow: "var(--picker-field-shadow)",
|
|
105
|
-
transition: "border-color 160ms ease, box-shadow 160ms ease",
|
|
110
|
+
transition: "border-color 160ms ease, box-shadow 160ms ease, background-color 160ms ease",
|
|
106
111
|
"& *": {
|
|
107
112
|
cursor: "inherit"
|
|
108
113
|
},
|
|
109
114
|
"--picker-field-border": "var(--picker-border)",
|
|
110
|
-
"--picker-field-shadow":
|
|
115
|
+
"--picker-field-shadow": pickerFieldQuietShadow,
|
|
111
116
|
"--picker-field-cursor": "pointer",
|
|
112
117
|
"&:hover": {
|
|
113
|
-
"--picker-field-border": "
|
|
118
|
+
"--picker-field-border": "var(--picker-border-hover)"
|
|
114
119
|
},
|
|
115
120
|
"&:focus-visible": {
|
|
116
|
-
"--picker-field-border": "color-mix(in lab, var(--mui-palette-
|
|
117
|
-
"--picker-field-shadow":
|
|
121
|
+
"--picker-field-border": "color-mix(in lab, var(--mui-palette-text-secondary), transparent 35%)",
|
|
122
|
+
"--picker-field-shadow": pickerFieldQuietShadow
|
|
118
123
|
},
|
|
119
124
|
variants: [
|
|
120
125
|
{
|
|
121
126
|
props: { open: true },
|
|
122
127
|
style: {
|
|
123
|
-
"--picker-field-border": "color-mix(in lab, var(--mui-palette-
|
|
124
|
-
"--picker-field-shadow":
|
|
128
|
+
"--picker-field-border": "color-mix(in lab, var(--mui-palette-text-secondary), transparent 35%)",
|
|
129
|
+
"--picker-field-shadow": pickerFieldQuietShadow
|
|
125
130
|
}
|
|
126
131
|
},
|
|
127
132
|
{
|
|
128
133
|
props: { error: true },
|
|
129
134
|
style: {
|
|
130
|
-
|
|
135
|
+
// Soft / quiet error — 1px muted mix + light wash (FileUpload language).
|
|
136
|
+
"--picker-field-border": "color-mix(in srgb, var(--picker-error) 55%, var(--picker-border))",
|
|
137
|
+
"--picker-field-bg": "color-mix(in srgb, var(--picker-error) 8%, var(--picker-surface))"
|
|
131
138
|
}
|
|
132
139
|
},
|
|
133
140
|
{
|
|
@@ -549,4 +556,4 @@ export {
|
|
|
549
556
|
DISABLED_GROUP,
|
|
550
557
|
Option
|
|
551
558
|
};
|
|
552
|
-
//# sourceMappingURL=chunk-
|
|
559
|
+
//# sourceMappingURL=chunk-VL7V52YD.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/elemental/Autocomplete/src/GitHubPicker/theme.ts","../src/components/elemental/Autocomplete/src/GitHubPicker/OptionRenderer.tsx","../src/components/elemental/Autocomplete/src/GitHubPicker/states/states.tsx","../src/components/elemental/Autocomplete/src/GitHubPicker/_utils/_const.ts","../src/components/elemental/Autocomplete/src/GitHubPicker/_utils/OptionClass.ts"],"sourcesContent":["import type { SxProps, Theme } from '@mui/material/styles'\nimport { styled } from '@mui/material/styles'\nimport { Box } from '@/ele/Box'\n\n/**\n * Static palette aliases shared across GitHubPicker styled components.\n * Children consume these variables; they do not re-declare palette refs.\n */\nexport const gitHubPickerRootStyle = {\n\t'--option-subscript': 'var(--mui-palette-text-subscript)',\n\t'--picker-focus-soft': 'color-mix(in lab, var(--mui-palette-focus-soft-1), transparent 18%)',\n\t'--picker-focus': 'var(--mui-palette-focus-1)',\n '--picker-border': 'color-mix(in lab, var(--mui-palette-common-white), transparent 94%)',\n\t'--picker-border-hover': 'var(--mui-palette-border-hover-1)',\n\t'--picker-border-emphasis': 'color-mix(in lab, var(--mui-palette-primary-emphasis), transparent 50%)',\n\t'--picker-text': 'var(--mui-palette-text-primary)',\n\t'--picker-text-secondary': 'var(--mui-palette-text-secondary)',\n\t'--picker-text-disabled': 'var(--mui-palette-text-disabled)',\n\t// Night: lift above near-black canvas (Google search-bar mid-grey glass).\n\t'--picker-surface': 'color-mix(in lab, var(--mui-palette-common-white), transparent 87%)',\n\t'--picker-paper-bg': 'color-mix(in lab, var(--mui-palette-common-white), transparent 84%)',\n\t'--picker-hover-bg': 'var(--mui-palette-background-hover-1)',\n\t'--picker-chip-bg': 'color-mix(in lab, var(--mui-palette-secondary-main), transparent 88%)',\n\t'--picker-chip-border': 'color-mix(in lab, var(--mui-palette-common-white), transparent 94%)',\n\t'--picker-chip-shadow': 'inset 0 1px 0 color-mix(in lab, var(--mui-palette-common-white), transparent 88%), inset 0 0 0 1px color-mix(in lab, var(--mui-palette-common-white), transparent 91%)',\n\t'--picker-error': 'var(--mui-palette-error-main)',\n\t// Dark closed field: true mid glass — between washed and dim.\n\t'--picker-highlight': 'color-mix(in lab, var(--mui-palette-common-white), transparent 92%)',\n\t'--picker-sheen': 'none',\n\t'--picker-shadow': [\n\t\t'0 18px 48px color-mix(in srgb, var(--mui-palette-common-black), transparent 72%)',\n\t\t'0 0 0 1px color-mix(in srgb, var(--mui-palette-common-black), transparent 88%)',\n\t].join(', '),\n\t'--picker-focus-ring': 'color-mix(in lab, var(--mui-palette-primary-emphasis), transparent 82%)',\n\t'--picker-check': 'var(--mui-palette-primary-emphasis)',\n\t'--picker-search-bg': 'var(--mui-palette-background-hover-1)',\n\t'--picker-search-shadow': 'inset 0 1px 0 var(--picker-highlight)',\n\t'--picker-search-border': 'color-mix(in lab, var(--picker-highlight), transparent 40%)',\n\t'--picker-divider': 'var(--mui-palette-divider)',\n\t'--picker-icon-well': 'color-mix(in lab, var(--mui-palette-background-hover-1), transparent 20%)',\n\t'--picker-blur': '8px',\n\t'--picker-glass': 'saturate(1.15) blur(var(--picker-blur))',\n\t'[color-scheme=light] &': {\n\t\t'--picker-blur': '10px',\n\t\t'--picker-glass': 'saturate(1.08) blur(var(--picker-blur))',\n\t\t'--picker-surface': 'color-mix(in lab, var(--mui-palette-common-white), transparent 46%)',\n\t\t'--picker-paper-bg': 'color-mix(in lab, var(--mui-palette-common-white), transparent 48%)',\n\t\t'--picker-highlight': 'color-mix(in lab, var(--mui-palette-common-white), transparent 55%)',\n\t\t'--picker-sheen': 'none',\n\t\t'--picker-border': 'color-mix(in lab, var(--mui-palette-border-1), transparent 95%)',\n\t\t'--picker-chip-bg': 'color-mix(in lab, var(--mui-palette-common-white), transparent 32%)',\n\t\t'--picker-chip-border': 'color-mix(in lab, var(--mui-palette-common-black), transparent 94%)',\n\t\t'--picker-chip-shadow': 'inset 0 1px 0 color-mix(in lab, var(--mui-palette-common-white), transparent 40%), inset 0 0 0 1px color-mix(in lab, var(--mui-palette-common-black), transparent 92%)',\n\t\t'--picker-search-bg': 'color-mix(in lab, var(--mui-palette-common-black), transparent 95%)',\n\t\t'--picker-search-shadow': 'inset 0 1px 1px color-mix(in lab, var(--mui-palette-common-black), transparent 92%)',\n\t\t'--picker-search-border': 'color-mix(in lab, var(--mui-palette-common-black), transparent 93%)',\n\t\t'--picker-focus-soft': 'color-mix(in lab, var(--mui-palette-common-black), transparent 95%)',\n\t\t'--picker-hover-bg': 'color-mix(in lab, var(--mui-palette-common-black), transparent 96%)',\n\t\t'--picker-shadow': [\n\t\t\t'inset 0 1px 0 color-mix(in lab, var(--mui-palette-common-white), transparent 28%)',\n\t\t\t'0 1px 2px color-mix(in srgb, var(--mui-palette-common-black), transparent 90%)',\n\t\t\t'0 10px 28px color-mix(in srgb, var(--mui-palette-common-black), transparent 86%)',\n\t\t].join(', '),\n\t\t'--picker-field-shadow': [\n\t\t\t'inset 0 1px 0 color-mix(in lab, var(--mui-palette-common-white), transparent 28%)',\n\t\t\t'0 8px 22px color-mix(in srgb, var(--mui-palette-common-black), transparent 88%)',\n\t\t].join(', '),\n\t\t'--picker-icon-well': 'color-mix(in lab, var(--mui-palette-common-black), transparent 96%)',\n\t},\n} as const\n\nexport const gitHubPickerRootSx = {\n\t...gitHubPickerRootStyle,\n} as const satisfies SxProps<Theme>\n\n/**\n * Quiet elevated field chrome — soft 1px borders, glass fill above dark canvas.\n * Matches soft Autocomplete / TextField UseForm siblings (no thick outlines,\n * no loud primary glow). Error uses a muted mix + light wash, not a hard red ring.\n */\nconst pickerFieldQuietShadow = [\n\t'inset 0 1px 0 var(--picker-highlight)',\n\t'0 1px 2px color-mix(in srgb, var(--mui-palette-common-black), transparent 82%)',\n].join(', ')\n\nexport const PickerField = styled(Box, {\n\tshouldForwardProp: (prop) =>\n\t\tprop !== 'open'\n\t\t&& prop !== 'error'\n\t\t&& prop !== 'disabled',\n})<{ open?: boolean; error?: boolean; disabled?: boolean }>({\n\t...gitHubPickerRootStyle,\n\tboxSizing: 'border-box',\n\twidth: '100%',\n\tminWidth: 240,\n\tdisplay: 'flex',\n\tflexDirection: 'column',\n\tgap: 8,\n\tpadding: '10px 12px 12px',\n\tborderRadius: 12,\n\tborder: '1px solid var(--picker-field-border)',\n\tbackgroundColor: 'var(--picker-field-bg, var(--picker-surface))',\n\tbackgroundImage: 'var(--picker-sheen)',\n\tbackdropFilter: 'var(--picker-glass)',\n\tWebkitBackdropFilter: 'var(--picker-glass)',\n\tcursor: 'var(--picker-field-cursor)',\n\toutline: 'none',\n\tboxShadow: 'var(--picker-field-shadow)',\n\ttransition: 'border-color 160ms ease, box-shadow 160ms ease, background-color 160ms ease',\n\t'& *': {\n\t\tcursor: 'inherit',\n\t},\n\t'--picker-field-border': 'var(--picker-border)',\n\t'--picker-field-shadow': pickerFieldQuietShadow,\n\t'--picker-field-cursor': 'pointer',\n\t'&:hover': {\n\t\t'--picker-field-border': 'var(--picker-border-hover)',\n\t},\n\t'&:focus-visible': {\n\t\t'--picker-field-border': 'color-mix(in lab, var(--mui-palette-text-secondary), transparent 35%)',\n\t\t'--picker-field-shadow': pickerFieldQuietShadow,\n\t},\n\tvariants: [\n\t\t{\n\t\t\tprops: { open: true },\n\t\t\tstyle: {\n\t\t\t\t'--picker-field-border': 'color-mix(in lab, var(--mui-palette-text-secondary), transparent 35%)',\n\t\t\t\t'--picker-field-shadow': pickerFieldQuietShadow,\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tprops: { error: true },\n\t\t\tstyle: {\n\t\t\t\t// Soft / quiet error — 1px muted mix + light wash (FileUpload language).\n\t\t\t\t'--picker-field-border': 'color-mix(in srgb, var(--picker-error) 55%, var(--picker-border))',\n\t\t\t\t'--picker-field-bg': 'color-mix(in srgb, var(--picker-error) 8%, var(--picker-surface))',\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tprops: { disabled: true },\n\t\t\tstyle: {\n\t\t\t\t'--picker-field-cursor': 'default',\n\t\t\t\topacity: 0.58,\n\t\t\t\tpointerEvents: 'none',\n\t\t\t},\n\t\t},\n\t],\n})\n\nexport const OptionBox = styled(Box, {\n\tshouldForwardProp: (prop) =>\n\t\tprop !== 'selected'\n\t\t&& prop !== 'isIconClickable'\n\t\t&& prop !== 'disabled'\n\t\t&& prop !== 'disableBR'\n})<{ selected: boolean; isIconClickable: boolean; disabled: boolean; disableBR?: boolean }>({\n\t...gitHubPickerRootStyle,\n\twidth: '100%',\n\tpadding: 0,\n\tbackgroundColor: 'var(--bg)',\n\tborder: '1px solid var(--bd)',\n\tborderRadius: 'var(--br)',\n\tboxShadow: 'var(--chip-shadow)',\n\tcursor: 'var(--curosr)',\n\t'--bg': 'transparent',\n\t'--bd': 'transparent',\n\t'--br': '10px',\n\t'--chip-shadow': 'none',\n\t'--ai': 'flex-start',\n\t'--curosr': 'pointer',\n\t'& *': {\n\t\tcursor: 'inherit',\n\t},\n\tvariants: [\n\t\t{\n\t\t\tprops: { isIconClickable: true },\n\t\t\tstyle: {\n\t\t\t\twidth: 'auto',\n\t\t\t\tmaxWidth: '100%',\n\t\t\t\t'--bg': 'var(--picker-chip-bg)',\n\t\t\t\t'--bd': 'var(--picker-chip-border)',\n\t\t\t\t'--br': '999px',\n\t\t\t\t'--chip-shadow': 'var(--picker-chip-shadow)',\n\t\t\t\t'--ai': 'center',\n\t\t\t\t'--curosr': 'pointer',\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tprops: { isIconClickable: false },\n\t\t\tstyle: {\n\t\t\t\t'--bg': 'transparent',\n\t\t\t\t'--bd': 'transparent',\n\t\t\t\t'--ai': 'flex-start',\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tprops: { disabled: true },\n\t\t\tstyle: {\n\t\t\t\t'--curosr': 'default',\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tprops: { disabled: false },\n\t\t\tstyle: {\n\t\t\t\t'--curosr': 'pointer',\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tprops: { disableBR: true },\n\t\t\tstyle: {\n\t\t\t\t'--br': 0,\n\t\t\t},\n\t\t},\n\t],\n})\n","'use client'\nimport { Box } from '@/ele/Box'\nimport { CheckIcon, CloseIcon } from '@/icons/MuiIcon'\nimport { IconButton } from '@/ele/Button'\nimport { Typography } from '@/ele/Typography'\nimport { TagButton } from '@/ele/Button'\n\nimport { OptionClass, type OptionId } from './_utils'\nimport { OptionBox } from './theme'\n\nconst ICON_STYLE = {\n\theight: 16,\n\twidth: 16,\n\topacity: 0.85,\n}\n\nexport default function OptionRenderer({\n\toption,\n\tisIconClickable = false,\n\tselected,\n\tdisabled,\n\tdisableBR = false,\n\tremoveItemHandler,\n\tslotProps = {},\n}: {\n\tselected: boolean;\n\tisIconClickable?: boolean;\n\tdisabled?: boolean;\n\tdisableBR?: boolean;\n\toption: OptionClass | null;\n\tremoveItemHandler?: (id: OptionId) => void;\n\tslotProps?: {\n\t\tDM?: Partial<React.ComponentProps<typeof DM>>;\n\t};\n}) {\n\tif (!option) return null;\n\n\treturn (\n\t\t<Wrapper selected={selected} isIconClickable={isIconClickable} disabled={disabled} disableBR={disableBR}>\n\t\t\t<Box\n\t\t\t\tsx={{\n\t\t\t\t\t'&.MuiBox-root': {\n\t\t\t\t\t\twidth: '100%',\n\t\t\t\t\t\tdisplay: 'flex',\n\t\t\t\t\t\talignItems: 'var(--ai)',\n\t\t\t\t\t\tgap: isIconClickable ? '6px' : '10px',\n\t\t\t\t\t\tcursor: 'var(--curosr)',\n\t\t\t\t\t\tpadding: isIconClickable ? '3px 6px 3px 8px' : '8px 10px',\n\t\t\t\t\t},\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t<DM\n\t\t\t\t\toption={option}\n\t\t\t\t\tonDelete={removeItemHandler ? () => removeItemHandler(option.id) : undefined}\n\t\t\t\t\tisIconClickable={isIconClickable}\n\t\t\t\t\tselected={selected}\n\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t{...slotProps.DM}\n\t\t\t\t/>\n\t\t\t</Box>\n\t\t</Wrapper>\n\t)\n}\n\nfunction Wrapper({\n\tchildren,\n\tselected = false,\n\tisIconClickable = false,\n\tdisabled = false,\n\tdisableBR = false,\n}: {\n\tchildren: React.ReactNode;\n\tselected?: boolean;\n\tisIconClickable?: boolean;\n\tdisabled?: boolean;\n\tdisableBR?: boolean;\n}) {\n\treturn (\n\t\t<OptionBox selected={selected} isIconClickable={isIconClickable} disabled={disabled} disableBR={disableBR}>\n\t\t\t{children}\n\t\t</OptionBox>\n\t)\n}\n\nfunction ItemIcon({ option, compact }: { option: OptionClass; compact?: boolean }) {\n\tif (!option.icon) return null\n\n\treturn (\n\t\t<Box\n\t\t\tcomponent=\"span\"\n\t\t\tsx={{\n\t\t\t\tflexShrink: 0,\n\t\t\t\twidth: compact ? 18 : 28,\n\t\t\t\theight: compact ? 18 : 28,\n\t\t\t\tborderRadius: compact ? '50%' : '8px',\n\t\t\t\tdisplay: 'flex',\n\t\t\t\talignItems: 'center',\n\t\t\t\tjustifyContent: 'center',\n\t\t\t\talignSelf: 'center',\n\t\t\t\tbackgroundColor: compact ? 'transparent' : 'var(--picker-icon-well)',\n\t\t\t\tcolor: 'var(--picker-text-secondary)',\n\t\t\t\t'& svg': ICON_STYLE,\n\t\t\t}}\n\t\t>\n\t\t\t{option.icon}\n\t\t</Box>\n\t)\n}\n\nfunction ItemLabel({\n\toption,\n\tisShowDescription = false,\n\tcompact = false,\n}: {\n\toption: OptionClass;\n\tisShowDescription: boolean;\n\tcompact?: boolean;\n}) {\n\tconst isUseTag = option.tags.length > 0\n\tconst description = option.description?.trim()\n\tconst showSecondary = isShowDescription && (isUseTag || Boolean(description))\n\n\treturn (\n\t\t<Box\n\t\t\tsx={{\n\t\t\t\tflexGrow: 1,\n\t\t\t\tminWidth: 0,\n\t\t\t\tdisplay: 'flex',\n\t\t\t\tflexDirection: 'column',\n\t\t\t\tjustifyContent: 'center',\n\t\t\t\tgap: showSecondary ? '2px' : 0,\n\t\t\t}}\n\t\t>\n\t\t\t<Typography\n\t\t\t\tcomponent=\"span\"\n\t\t\t\tsx={{\n\t\t\t\t\tdisplay: 'block',\n\t\t\t\t\tfontSize: compact ? '0.8125rem' : '0.875rem',\n\t\t\t\t\tfontWeight: compact ? 500 : 600,\n\t\t\t\t\tlineHeight: 1.3,\n\t\t\t\t\tletterSpacing: compact ? 0 : '0.01em',\n\t\t\t\t\tcolor: 'var(--picker-text)',\n\t\t\t\t\ttextOverflow: 'ellipsis',\n\t\t\t\t\twhiteSpace: 'nowrap',\n\t\t\t\t\toverflow: 'hidden',\n\t\t\t\t\tm: 0,\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{option.label}\n\t\t\t</Typography>\n\t\t\t{showSecondary ? (\n\t\t\t\tisUseTag ? (\n\t\t\t\t\t<Box sx={{ display: 'flex', gap: '4px', flexWrap: 'wrap', pt: 0.25 }}>\n\t\t\t\t\t\t{option.tags.map((tag, i) => (\n\t\t\t\t\t\t\t<TagButton\n\t\t\t\t\t\t\t\tkey={i}\n\t\t\t\t\t\t\t\tlabel={(tag?.tagIcon ? '' : '# ') + tag.tagName}\n\t\t\t\t\t\t\t\ticon={tag?.tagIcon ?? undefined}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</Box>\n\t\t\t\t) : (\n\t\t\t\t\t<Typography\n\t\t\t\t\t\tcomponent=\"span\"\n\t\t\t\t\t\tsx={{\n\t\t\t\t\t\t\tdisplay: 'block',\n\t\t\t\t\t\t\tfontSize: '0.75rem',\n\t\t\t\t\t\t\tlineHeight: 1.35,\n\t\t\t\t\t\t\tcolor: 'var(--option-subscript)',\n\t\t\t\t\t\t\ttextOverflow: 'ellipsis',\n\t\t\t\t\t\t\twhiteSpace: 'nowrap',\n\t\t\t\t\t\t\toverflow: 'hidden',\n\t\t\t\t\t\t\tm: 0,\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t{description}\n\t\t\t\t\t</Typography>\n\t\t\t\t)\n\t\t\t) : null}\n\t\t</Box>\n\t)\n}\n\nfunction DM({\n\toption,\n\tselected,\n\tonDelete,\n\talwaysShowEndIcon = false,\n\tisIconClickable = false,\n\tdisabled = false,\n\tendIcon = null,\n\tisShowEndIcon = true,\n\tisShowDescription = true,\n}: {\n\toption: React.ComponentProps<typeof ItemIcon>['option'];\n\tisShowDescription?: React.ComponentProps<typeof ItemLabel>['isShowDescription'];\n\tselected?: boolean;\n\tisIconClickable?: boolean;\n\tisShowEndIcon?: boolean;\n\tdisabled: React.ComponentProps<typeof IconButton>['disabled'];\n\tonDelete?: React.ComponentProps<typeof IconButton>['onClick'];\n\talwaysShowEndIcon?: boolean;\n\tendIcon?: React.ReactNode | null;\n}) {\n\tconst showClose = Boolean(isShowEndIcon && isIconClickable && (selected || alwaysShowEndIcon))\n\tconst showCheck = Boolean(isShowEndIcon && !isIconClickable && selected)\n\n\treturn (\n\t\t<>\n\t\t\t<ItemIcon option={option} compact={isIconClickable} />\n\t\t\t<ItemLabel option={option} isShowDescription={isShowDescription} compact={isIconClickable} />\n\t\t\t{showClose ? (\n\t\t\t\t<IconButton\n\t\t\t\t\tsize=\"small\"\n\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\taria-label={`Remove ${option.label}`}\n\t\t\t\t\tonClick={(event) => {\n\t\t\t\t\t\tevent.stopPropagation()\n\t\t\t\t\t\tonDelete?.(event)\n\t\t\t\t\t}}\n\t\t\t\t\tsx={{\n\t\t\t\t\t\tpadding: '2px',\n\t\t\t\t\t\tflexShrink: 0,\n\t\t\t\t\t\tcursor: disabled ? 'default' : 'pointer',\n\t\t\t\t\t\tbackgroundColor: 'transparent',\n\t\t\t\t\t\tborder: 'none',\n\t\t\t\t\t\tcolor: 'var(--picker-text-secondary)',\n\t\t\t\t\t\t'&:hover': {\n\t\t\t\t\t\t\tbackgroundColor: 'var(--picker-hover-bg)',\n\t\t\t\t\t\t\tborder: 'none',\n\t\t\t\t\t\t\tcolor: 'var(--picker-text)',\n\t\t\t\t\t\t},\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t{endIcon ?? <CloseIcon sx={{ fontSize: '0.95rem' }} />}\n\t\t\t\t</IconButton>\n\t\t\t) : null}\n\t\t\t{showCheck ? (\n\t\t\t\t<Box\n\t\t\t\t\tsx={{\n\t\t\t\t\t\tdisplay: 'flex',\n\t\t\t\t\t\talignItems: 'center',\n\t\t\t\t\t\talignSelf: 'center',\n\t\t\t\t\t\tflexShrink: 0,\n\t\t\t\t\t\tcolor: 'var(--picker-check)',\n\t\t\t\t\t\tpl: 0.5,\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t{endIcon ?? <CheckIcon sx={{ fontSize: '1.05rem' }} />}\n\t\t\t\t</Box>\n\t\t\t) : null}\n\t\t</>\n\t)\n}\n","'use client'\nimport { createContext, useContext, useState, useCallback, useMemo, useEffect, useRef } from 'react'\n\nimport { \n type MinimalOption, type AutoCompleteOptionIds,\n type OptionIds,\n OptionClass,\n} from '../_utils'\n\nexport type StateType = {\n ids: AutoCompleteOptionIds,\n minimal: MinimalOption[] | MinimalOption | null,\n isMultiple: boolean,\n}\n\ntype ContextType = {\n\tstate: StateType;\n select: (option: MinimalOption | MinimalOption[] | null) => StateType;\n}\nconst Context = createContext<ContextType | null>(null);\nexport const useStateContext = () => {\n const ctx = useContext(Context)\n if (!ctx) throw new Error('useStateContext must be used within LocalSelectedProvider')\n return ctx\n}\n\nexport const Provider = ({children,selectedIds,options,isMultiple,open=false}:{\n children:React.ReactNode,\n selectedIds:Parameters<typeof init>[0]['selectedIds'],\n options:Parameters<typeof init>[0]['options'],\n isMultiple:Parameters<typeof init>[0]['isMultiple'],\n open?: boolean,\n}) => {\n // Initialize state once\n\tconst [state, setState] = useState<StateType>(() => init({selectedIds,options,isMultiple}))\n const stateRef = useRef(state)\n stateRef.current = state\n\n // Keep provider state in sync when parent-driven selectedIds/options/isMultiple change.\n // While open, skip identity-driven re-init so accumulating picks are not wiped\n // by a stale parent selectedIds array.\n useEffect(() => {\n const next = init({ selectedIds, options, isMultiple })\n if (equalState(stateRef.current, next)) return\n if (open) return\n stateRef.current = next\n setState(next)\n }, [selectedIds, options, isMultiple, open]);\n\n // Compute next state as a pure function — used both in setState and as return value\n const computeNextState = useCallback((prev: StateType, option: MinimalOption | MinimalOption[] | null): StateType => {\n if (prev.isMultiple) {\n const newOptions = Array.isArray(option) ? option : []\n return { ...prev, ids: newOptions.map(o => o.id), minimal: newOptions }\n }\n const newOption = option && !Array.isArray(option) ? option : null\n return { ...prev, ids: newOption?.id ?? null, minimal: newOption }\n }, [])\n\n const select = useCallback((option: MinimalOption | MinimalOption[] | null): StateType => {\n let produced: StateType | undefined\n setState((prev) => {\n produced = computeNextState(prev, option)\n stateRef.current = produced\n return produced\n })\n // React skips the eager updater when updates are already queued; chain from the ref.\n if (produced === undefined) {\n produced = computeNextState(stateRef.current, option)\n stateRef.current = produced\n }\n return produced\n }, [computeNextState])\n\n const value = useMemo(() => ({ state, select }), [state, select])\n\n\treturn (\n\t\t<Context.Provider value={value}>\n\t\t\t{children}\n\t\t</Context.Provider>\n\t)\n}\n\nexport const useSelector = () => {\n const {state} = useStateContext()\n return <T extends keyof StateType>(key:T) => {\n return state[key]\n }\n}\n/**\n * Initialize the local state\n */\nfunction init({\n selectedIds, \n options,\n isMultiple,\n}:{\n selectedIds:OptionIds, \n options:OptionClass[],\n isMultiple:boolean,\n}):StateType{\n return {\n ids: isMultiple?selectedIds : selectedIds[0]??null,\n minimal: isMultiple?options\n .filter(o=>selectedIds.includes(o.id))\n .map(o=>o.minimal())\n :options.find(o=>o.id===selectedIds[0])?.minimal()??null,\n isMultiple: isMultiple,\n }\n}\n\nfunction equalIds(a: AutoCompleteOptionIds, b: AutoCompleteOptionIds): boolean {\n if (a === b) return true\n if (Array.isArray(a) && Array.isArray(b)) {\n return a.length === b.length && a.every((id, i) => id === b[i])\n }\n return false\n}\n\nfunction equalMinimalOption(a: MinimalOption, b: MinimalOption): boolean {\n return a.id === b.id\n && a.label === b.label\n && a.filterKey === b.filterKey\n && a.disabled === b.disabled\n && a.group === b.group\n && a.value === b.value\n}\n\nfunction equalMinimal(\n a: StateType['minimal'],\n b: StateType['minimal'],\n): boolean {\n if (a === b) return true\n if (a == null || b == null) return false\n if (Array.isArray(a) && Array.isArray(b)) {\n return a.length === b.length && a.every((opt, i) => equalMinimalOption(opt, b[i]))\n }\n if (!Array.isArray(a) && !Array.isArray(b)) {\n return equalMinimalOption(a, b)\n }\n return false\n}\n\nfunction equalState(a: StateType, b: StateType): boolean {\n return a.isMultiple === b.isMultiple\n && equalIds(a.ids, b.ids)\n && equalMinimal(a.minimal, b.minimal)\n}","export const CONFIRM_ID = \"deleteOption-confirmation\"\n\nexport const OPTION_CONSTRAINTS = {\n group: 20,\n label: 20,\n value: 100,\n description: 100\n} as const\n\nexport const MY_LOCAL_DISABLE_GROUP = \"My Local Disable Group - c7EgCbQ9T1\"\nexport const DISABLED_GROUP = \"Disabled\"","import { randomStrGenerator } from '@/_utils/_func'\n\nimport type { OptionParams, MinimalOption } from './_types'\nimport { DISABLED_GROUP } from './_const'\n\nexport default class Option {\n\tid: NonNullable<OptionParams[\"id\"]>;\n\tlabel: NonNullable<OptionParams[\"label\"]>;\n\tdescription: NonNullable<OptionParams[\"description\"]>;\n\tdisabled: NonNullable<OptionParams[\"disabled\"]>;\n\tgroup: NonNullable<OptionParams[\"group\"]>;\n\ticon: NonNullable<OptionParams[\"icon\"]> | null;\n\tfilterKey: NonNullable<OptionParams[\"filterKey\"]>;\n\tvalue: NonNullable<OptionParams[\"value\"]>;\n\tdefaultSelected: NonNullable<OptionParams[\"defaultSelected\"]>;\n\totherProps: NonNullable<OptionParams[\"otherProps\"]>;\n\ttags: NonNullable<OptionParams[\"tags\"]>;\n\n\tconstructor(p: OptionParams) {\n\t\tthis.id = p.id ?? randomStrGenerator();\n\t\tthis.label = p.label ?? 'label';\n\t\tthis.description = p.description ?? 'description';\n\t\tthis.disabled = p.disabled ?? false;\n\t\tthis.group = p.group ?? 'group';\n\t\tthis.icon = p.icon ?? null;\n\t\tthis.filterKey = p.filterKey || defaultGetFilterKey(p);\n\t\tthis.defaultSelected = p.defaultSelected ?? false;\n\t\tthis.value = p.value ?? \"\";\n\n\t\tthis.otherProps = p.otherProps ?? {};\n\t\tthis.tags = p.tags ?? [];\n\t}\n\n\tminimal():MinimalOption{\n\t\treturn {\n\t\t\tid: this.id,\n\t\t\tlabel: this.label,\n\t\t\tfilterKey: this.filterKey,\n\t\t\tdisabled: this.disabled,\n\t\t\tgroup: this.group,\n\t\t\tvalue: this.value,\n\t\t}\n\t}\n}\n\nfunction defaultGetFilterKey(p: OptionParams): string {\n\tconst tagsStr = p.tags?.map(t=>t.tagName).join(\" \") ?? \"\";\n\treturn `${p.group ?? \"\"} ${p.label ?? \"\"} ${p.description ?? \"\"} ${p.value ?? \"\"} ${p.disabled?DISABLED_GROUP:\"\"} ${tagsStr}`;\n}"],"mappings":"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","names":["default","default","jsx"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
default as default2
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-PNSJC6PC.mjs";
|
|
4
4
|
|
|
5
5
|
// src/components/elemental/ToggleButtonGroup/src/ToggleButtonGroup/ToggleButtonGroup.tsx
|
|
6
6
|
import MuiToggleButton from "@mui/material/ToggleButton";
|
|
@@ -145,4 +145,4 @@ export {
|
|
|
145
145
|
toggleButtonGroupTheme,
|
|
146
146
|
toggleButtonTheme
|
|
147
147
|
};
|
|
148
|
-
//# sourceMappingURL=chunk-
|
|
148
|
+
//# sourceMappingURL=chunk-WJZ3IYET.mjs.map
|