@iziui/react 0.0.60-rc → 0.0.62-rc
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/.types/actions/Button/Button.d.ts.map +1 -1
- package/dist/.types/core/createComponent.d.ts.map +1 -1
- package/dist/.types/lab/Form/Form.d.ts.map +1 -1
- package/dist/chunks/{Alert-De27NFno.js → Alert-DGWFTr3e.js} +2 -2
- package/dist/chunks/{Alert-De27NFno.js.map → Alert-DGWFTr3e.js.map} +1 -1
- package/dist/chunks/{Alert-D2Ud7z7a.cjs → Alert-MsPKPqJS.cjs} +2 -2
- package/dist/chunks/{Alert-D2Ud7z7a.cjs.map → Alert-MsPKPqJS.cjs.map} +1 -1
- package/dist/chunks/{Box-tIj8kfQ-.js → Box-DV6szmfA.js} +2 -2
- package/dist/chunks/{Box-tIj8kfQ-.js.map → Box-DV6szmfA.js.map} +1 -1
- package/dist/chunks/{Box-D3UbjY-i.cjs → Box-DX4Re8mw.cjs} +2 -2
- package/dist/chunks/{Box-D3UbjY-i.cjs.map → Box-DX4Re8mw.cjs.map} +1 -1
- package/dist/chunks/{ButtonIcon-BmUZZwS7.js → ButtonIcon-BP2upur5.js} +2 -2
- package/dist/chunks/{ButtonIcon-BmUZZwS7.js.map → ButtonIcon-BP2upur5.js.map} +1 -1
- package/dist/chunks/{ButtonIcon-ClMsumft.cjs → ButtonIcon-Bk1sFlaj.cjs} +2 -2
- package/dist/chunks/{ButtonIcon-ClMsumft.cjs.map → ButtonIcon-Bk1sFlaj.cjs.map} +1 -1
- package/dist/chunks/{Card-B2D3ppN8.js → Card-BjoXz5bX.js} +2 -2
- package/dist/chunks/{Card-B2D3ppN8.js.map → Card-BjoXz5bX.js.map} +1 -1
- package/dist/chunks/{Card-BrwjTDq_.cjs → Card-CVrUgBCJ.cjs} +2 -2
- package/dist/chunks/{Card-BrwjTDq_.cjs.map → Card-CVrUgBCJ.cjs.map} +1 -1
- package/dist/chunks/{CardContent-Ca4nAvUL.cjs → CardContent-5JyK0TcD.cjs} +2 -2
- package/dist/chunks/{CardContent-Ca4nAvUL.cjs.map → CardContent-5JyK0TcD.cjs.map} +1 -1
- package/dist/chunks/{CardContent-BuXq8Ek9.js → CardContent-srKirxQF.js} +2 -2
- package/dist/chunks/{CardContent-BuXq8Ek9.js.map → CardContent-srKirxQF.js.map} +1 -1
- package/dist/chunks/{Drawer-BhDpYY4r.cjs → Drawer-C3RaAzs0.cjs} +2 -2
- package/dist/chunks/{Drawer-BhDpYY4r.cjs.map → Drawer-C3RaAzs0.cjs.map} +1 -1
- package/dist/chunks/{Drawer-B_k_G_fP.js → Drawer-ijxxjWs1.js} +2 -2
- package/dist/chunks/{Drawer-B_k_G_fP.js.map → Drawer-ijxxjWs1.js.map} +1 -1
- package/dist/chunks/{Icon-DMVu40wB.js → Icon-BfSirxGe.js} +2 -2
- package/dist/chunks/{Icon-DMVu40wB.js.map → Icon-BfSirxGe.js.map} +1 -1
- package/dist/chunks/{Icon-ngmWJwq7.cjs → Icon-C_2Qoqhh.cjs} +2 -2
- package/dist/chunks/{Icon-ngmWJwq7.cjs.map → Icon-C_2Qoqhh.cjs.map} +1 -1
- package/dist/chunks/{MenuButton-DMaUwnI-.js → MenuButton-DG-M7g1U.js} +2 -2
- package/dist/chunks/{MenuButton-DMaUwnI-.js.map → MenuButton-DG-M7g1U.js.map} +1 -1
- package/dist/chunks/{MenuButton-BvncFvEh.cjs → MenuButton-ybz5rxD_.cjs} +2 -2
- package/dist/chunks/{MenuButton-BvncFvEh.cjs.map → MenuButton-ybz5rxD_.cjs.map} +1 -1
- package/dist/chunks/{Stack-DAlczuE0.js → Stack-BXkZSPdw.js} +2 -2
- package/dist/chunks/{Stack-DAlczuE0.js.map → Stack-BXkZSPdw.js.map} +1 -1
- package/dist/chunks/{Stack-Gkunatfh.cjs → Stack-Bpv8iA8b.cjs} +2 -2
- package/dist/chunks/{Stack-Gkunatfh.cjs.map → Stack-Bpv8iA8b.cjs.map} +1 -1
- package/dist/chunks/{Typography-BxZqGk3g.js → Typography-BDFesZK7.js} +2 -2
- package/dist/chunks/{Typography-BxZqGk3g.js.map → Typography-BDFesZK7.js.map} +1 -1
- package/dist/chunks/{Typography-BqQ6oG9I.cjs → Typography-CPUKMAJT.cjs} +2 -2
- package/dist/chunks/{Typography-BqQ6oG9I.cjs.map → Typography-CPUKMAJT.cjs.map} +1 -1
- package/dist/chunks/{createComponent-Bhl48GId.js → createComponent-C6TL60ri.js} +2 -2
- package/dist/chunks/{createComponent-Bhl48GId.js.map → createComponent-C6TL60ri.js.map} +1 -1
- package/dist/chunks/{createComponent-DiHTpo26.cjs → createComponent-ixuQW53A.cjs} +2 -2
- package/dist/chunks/{createComponent-DiHTpo26.cjs.map → createComponent-ixuQW53A.cjs.map} +1 -1
- package/dist/chunks/useForm-Dr0iM-3g.cjs +2 -0
- package/dist/chunks/useForm-Dr0iM-3g.cjs.map +1 -0
- package/dist/chunks/useForm-mpF_-ABy.js +2 -0
- package/dist/chunks/useForm-mpF_-ABy.js.map +1 -0
- package/dist/chunks/{useMenu-hVrXgfnU.js → useMenu-CA-D2bkv.js} +2 -2
- package/dist/chunks/{useMenu-hVrXgfnU.js.map → useMenu-CA-D2bkv.js.map} +1 -1
- package/dist/chunks/{useMenu-DYli8hgM.cjs → useMenu-eNouSUEO.cjs} +2 -2
- package/dist/chunks/{useMenu-DYli8hgM.cjs.map → useMenu-eNouSUEO.cjs.map} +1 -1
- package/dist/components/Alert/index.cjs +1 -1
- package/dist/components/Alert/index.js +1 -1
- package/dist/components/Avatar/index.cjs +1 -1
- package/dist/components/Avatar/index.js +1 -1
- package/dist/components/Box/index.cjs +1 -1
- package/dist/components/Box/index.js +1 -1
- package/dist/components/Button/index.cjs +1 -1
- package/dist/components/Button/index.cjs.map +1 -1
- package/dist/components/Button/index.js +1 -1
- package/dist/components/Button/index.js.map +1 -1
- package/dist/components/ButtonIcon/index.cjs +1 -1
- package/dist/components/ButtonIcon/index.js +1 -1
- package/dist/components/Card/index.cjs +1 -1
- package/dist/components/Card/index.js +1 -1
- package/dist/components/Checkbox/index.cjs +1 -1
- package/dist/components/Checkbox/index.js +1 -1
- package/dist/components/CheckboxGroup/index.cjs +1 -1
- package/dist/components/CheckboxGroup/index.js +1 -1
- package/dist/components/Chip/index.cjs +1 -1
- package/dist/components/Chip/index.js +1 -1
- package/dist/components/ColorPicker/index.cjs +1 -1
- package/dist/components/ColorPicker/index.js +1 -1
- package/dist/components/Container/index.cjs +1 -1
- package/dist/components/Container/index.js +1 -1
- package/dist/components/Divider/index.cjs +1 -1
- package/dist/components/Divider/index.js +1 -1
- package/dist/components/Drawer/index.cjs +1 -1
- package/dist/components/Drawer/index.js +1 -1
- package/dist/components/Icon/index.cjs +1 -1
- package/dist/components/Icon/index.js +1 -1
- package/dist/components/Input/index.cjs +1 -1
- package/dist/components/Input/index.js +1 -1
- package/dist/components/InputFile/index.cjs +1 -1
- package/dist/components/InputFile/index.js +1 -1
- package/dist/components/Loading/index.cjs +1 -1
- package/dist/components/Loading/index.js +1 -1
- package/dist/components/Menu/index.cjs +1 -1
- package/dist/components/Menu/index.js +1 -1
- package/dist/components/Modal/index.cjs +1 -1
- package/dist/components/Modal/index.js +1 -1
- package/dist/components/Select/index.cjs +1 -1
- package/dist/components/Select/index.js +1 -1
- package/dist/components/Skeleton/index.cjs +1 -1
- package/dist/components/Skeleton/index.js +1 -1
- package/dist/components/Stack/index.cjs +1 -1
- package/dist/components/Stack/index.js +1 -1
- package/dist/components/Switchs/index.cjs +1 -1
- package/dist/components/Switchs/index.js +1 -1
- package/dist/components/Table/index.cjs +1 -1
- package/dist/components/Table/index.js +1 -1
- package/dist/components/Toast/index.cjs +1 -1
- package/dist/components/Toast/index.js +1 -1
- package/dist/components/Tooltip/index.cjs +1 -1
- package/dist/components/Tooltip/index.js +1 -1
- package/dist/components/Typography/index.cjs +1 -1
- package/dist/components/Typography/index.js +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.js +1 -1
- package/dist/lab/Form/index.cjs +1 -1
- package/dist/lab/Form/index.js +1 -1
- package/package.json +1 -1
- package/dist/chunks/useForm-BkXoqmrE.cjs +0 -2
- package/dist/chunks/useForm-BkXoqmrE.cjs.map +0 -1
- package/dist/chunks/useForm-CZ5cx13o.js +0 -2
- package/dist/chunks/useForm-CZ5cx13o.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createComponent-
|
|
1
|
+
{"version":3,"file":"createComponent-C6TL60ri.js","sources":["../../../../core/src/options/createOptions/createOptions.ts","../../../../core/src/plugin/color/defineColor/defineColor.ts","../../../../core/src/plugin/color/defineBackground/defineBackground.ts","../../../../core/src/plugin/color/defineBorderColor/defineBorderColor.ts","../../../../core/src/plugin/color/defineBackgroundColor/defineBackgroundColor.ts","../../../../core/src/plugin/shape/defineBorderRadius/defineBorderRadius.ts","../../../../core/src/plugin/spacing/defineMargin/defineMargin.ts","../../../../core/src/plugin/spacing/definePadding/definePadding.ts","../../../../core/src/plugin/behavior/defineBoxShadow/defineBoxShadow.ts","../../src/core/createComponent.tsx"],"sourcesContent":["import type { Properties } from 'csstype';\n\nimport type { Plugin } from '../../plugin';\nimport type { ThemeBuilded } from '../../theme';\nimport type { CustomOptions } from '../CustomOptions';\n\ntype Data = {\n sx: CustomOptions;\n theme: ThemeBuilded;\n}\n\nexport default function createOptions({ sx, theme }: Data, ...plugins: Plugin[]): Properties {\n return plugins.reduce<Properties>((acc, plugin) => {\n acc = { ...acc, ...plugin(theme, sx) };\n\n return acc;\n }, {});\n}","import definePlugin from '../../definePlugin';\n\nexport default definePlugin((theme, { color }) => {\n const { palette } = theme;\n\n if (!color) { return {}; }\n\n return {\n color: color(palette)\n };\n});","import definePlugin from '../../definePlugin';\n\nexport default definePlugin((theme, { background }) => {\n const { palette } = theme;\n\n if (!background) { return {}; }\n\n return {\n background: background(palette)\n };\n});","import definePlugin from '../../definePlugin';\n\nexport default definePlugin((theme, { borderColor }) => {\n const { palette } = theme;\n\n if (!borderColor) { return {}; }\n\n return {\n borderColor: borderColor(palette)\n };\n});","import definePlugin from '../../definePlugin';\n\nexport default definePlugin((theme, { backgroundColor }) => {\n const { palette } = theme;\n\n if (!backgroundColor) { return {}; }\n\n return {\n backgroundColor: backgroundColor(palette)\n };\n});","import definePlugin from '../../definePlugin';\n\nexport default definePlugin((theme, { borderRadius }) => {\n const { shape } = theme;\n\n if (!borderRadius) { return {}; }\n\n return {\n borderRadius: `${shape.radius * borderRadius}px`\n };\n});","import definePlugin from '../../definePlugin';\n\nexport default definePlugin((theme, { m, mb, ml, mr, mt, mx, my }) => {\n const { spacing } = theme;\n\n const calculateMargin = (mg?: number) => {\n return !!mg || mg === 0 ? `${String(mg * spacing)}px` : '';\n };\n\n const hasM = calculateMargin(m);\n\n const hasMt = calculateMargin(mt);\n const hasMb = calculateMargin(mb);\n\n const hasMy = calculateMargin(my);\n const hasMx = calculateMargin(mx);\n\n const hasMl = calculateMargin(ml);\n const hasMr = calculateMargin(mr);\n\n return {\n margin: hasM,\n marginTop: hasMt || hasMy || hasM,\n marginBottom: hasMb || hasMy || hasM,\n marginLeft: hasMl || hasMx || hasM,\n marginRight: hasMr || hasMx || hasM,\n };\n});","import definePlugin from '../../definePlugin';\n\nexport default definePlugin((theme, { p, pb, pl, pr, pt, px, py }) => {\n const { spacing } = theme;\n\n const calculatePadding = (pd?: number) => {\n return !!pd || pd === 0 ? `${String(pd * spacing)}px` : '';\n };\n\n const hasP = calculatePadding(p);\n\n const hasPt = calculatePadding(pt);\n const hasPb = calculatePadding(pb);\n\n const hasPy = calculatePadding(py);\n const hasPx = calculatePadding(px);\n\n const hasPl = calculatePadding(pl);\n const hasPr = calculatePadding(pr);\n\n return {\n padding: hasP,\n paddingTop: hasPt || hasPy || hasP,\n paddingBottom: hasPb || hasPy || hasP,\n paddingLeft: hasPl || hasPx || hasP,\n paddingRight: hasPr || hasPx || hasP,\n };\n});","import { boxShadowSmall, boxShadowRegular, boxShadowLarge } from '@iziui/tokens/web/js';\n\nimport definePlugin from '../../definePlugin';\nimport type { CustomOptions } from '../../../options/CustomOptions';\n\ntype ExtractSize = NonNullable<CustomOptions['boxShadow']>;\n\nexport default definePlugin((_, { boxShadow }) => {\n\n if (!boxShadow) { return {}; }\n\n const sizes: { [s in ExtractSize]: string } = {\n sm: boxShadowSmall,\n md: boxShadowRegular,\n lg: boxShadowLarge,\n };\n\n return {\n boxShadow: sizes[boxShadow]\n };\n});","import type { ComponentType, FC } from 'react';\n\nimport type { Sx } from '@iziui/core/options';\nimport type { Plugin } from '@iziui/core/plugin';\nimport createOptions from '@iziui/core/options';\nimport * as plugins from '@iziui/core/plugin';\n\nimport { useTheme } from '@/theme';\n\nfunction extract(module: { [key: string]: Plugin }) {\n return Object.values(module).map((fn) => fn);\n}\n\nexport default function createComponent<P>(WrappedComponent: ComponentType<P>) {\n WrappedComponent.displayName = WrappedComponent.name;\n\n const EnhancedComponent: FC<Sx<P>> = ({ sx, fullWidth, ...props }) => {\n const { theme } = useTheme();\n\n const options = sx && createOptions({ theme, sx },\n ...extract(plugins),\n );\n\n return (\n <WrappedComponent\n {...(props as P)}\n style={{\n boxSizing: 'border-box',\n ...props['style'],\n ...options,\n ...(fullWidth ? { width: '100%' } : {}),\n }}\n />\n );\n };\n\n return EnhancedComponent;\n}"],"names":["createOptions","sx","theme","plugins","acc","plugin","defineColor","color","palette","defineBackground","background","defineBorderColor","borderColor","defineBackgroundColor","backgroundColor","defineBorderRadius","borderRadius","shape","defineMargin","m","mb","ml","mr","mt","mx","my","spacing","calculateMargin","mg","hasM","hasMt","hasMb","hasMy","hasMx","hasMl","hasMr","definePadding","p","pb","pl","pr","pt","px","py","calculatePadding","pd","hasP","hasPt","hasPb","hasPy","hasPx","hasPl","hasPr","defineBoxShadow","_","boxShadow","boxShadowSmall","boxShadowRegular","boxShadowLarge","extract","module","fn","createComponent","WrappedComponent","fullWidth","props","useTheme","options","jsx"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";const P=require("react/jsx-runtime"),b=require("./index-DYxwT4uW.cjs"),M=require("./useTheme-DwBpyW-5.cjs");function S({sx:t,theme:n},...e){return e.reduce((s,a)=>(s={...s,...a(n,t)},s),{})}const y=(t,{color:n})=>{const{palette:e}=t;return n?{color:n(e)}:{}},B=(t,{background:n})=>{const{palette:e}=t;return n?{background:n(e)}:{}},j=(t,{borderColor:n})=>{const{palette:e}=t;return n?{borderColor:n(e)}:{}},w=(t,{backgroundColor:n})=>{const{palette:e}=t;return n?{backgroundColor:n(e)}:{}},C=(t,{borderRadius:n})=>{const{shape:e}=t;return n?{borderRadius:`${e.radius*n}px`}:{}},R=(t,{m:n,mb:e,ml:s,mr:a,mt:
|
|
2
|
-
//# sourceMappingURL=createComponent-
|
|
1
|
+
"use strict";const P=require("react/jsx-runtime"),b=require("./index-DYxwT4uW.cjs"),M=require("./useTheme-DwBpyW-5.cjs");function S({sx:t,theme:n},...e){return e.reduce((s,a)=>(s={...s,...a(n,t)},s),{})}const y=(t,{color:n})=>{const{palette:e}=t;return n?{color:n(e)}:{}},B=(t,{background:n})=>{const{palette:e}=t;return n?{background:n(e)}:{}},j=(t,{borderColor:n})=>{const{palette:e}=t;return n?{borderColor:n(e)}:{}},w=(t,{backgroundColor:n})=>{const{palette:e}=t;return n?{backgroundColor:n(e)}:{}},C=(t,{borderRadius:n})=>{const{shape:e}=t;return n?{borderRadius:`${e.radius*n}px`}:{}},R=(t,{m:n,mb:e,ml:s,mr:a,mt:c,mx:u,my:l})=>{const{spacing:h}=t,r=i=>i||i===0?`${String(i*h)}px`:"",o=r(n),f=r(c),m=r(e),d=r(l),g=r(u),p=r(s),x=r(a);return{margin:o,marginTop:f||d||o,marginBottom:m||d||o,marginLeft:p||g||o,marginRight:x||g||o}},T=(t,{p:n,pb:e,pl:s,pr:a,pt:c,px:u,py:l})=>{const{spacing:h}=t,r=i=>i||i===0?`${String(i*h)}px`:"",o=r(n),f=r(c),m=r(e),d=r(l),g=r(u),p=r(s),x=r(a);return{padding:o,paddingTop:f||d||o,paddingBottom:m||d||o,paddingLeft:p||g||o,paddingRight:x||g||o}},_=(t,{boxShadow:n})=>n?{boxShadow:{sm:b.boxShadowSmall,md:b.boxShadowRegular,lg:b.boxShadowLarge}[n]}:{},z=Object.freeze(Object.defineProperty({__proto__:null,defineBackground:B,defineBackgroundColor:w,defineBorderColor:j,defineBorderRadius:C,defineBoxShadow:_,defineColor:y,defineMargin:R,definePadding:T},Symbol.toStringTag,{value:"Module"}));function O(t){return Object.values(t).map(n=>n)}function q(t){return t.displayName=t.name,({sx:e,fullWidth:s,...a})=>{const{theme:c}=M.useTheme(),u=e&&S({theme:c,sx:e},...O(z));return P.jsx(t,{...a,style:{boxSizing:"border-box",...a.style,...u,...s?{width:"100%"}:{}}})}}exports.createComponent=q;
|
|
2
|
+
//# sourceMappingURL=createComponent-ixuQW53A.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createComponent-
|
|
1
|
+
{"version":3,"file":"createComponent-ixuQW53A.cjs","sources":["../../../../core/src/options/createOptions/createOptions.ts","../../../../core/src/plugin/color/defineColor/defineColor.ts","../../../../core/src/plugin/color/defineBackground/defineBackground.ts","../../../../core/src/plugin/color/defineBorderColor/defineBorderColor.ts","../../../../core/src/plugin/color/defineBackgroundColor/defineBackgroundColor.ts","../../../../core/src/plugin/shape/defineBorderRadius/defineBorderRadius.ts","../../../../core/src/plugin/spacing/defineMargin/defineMargin.ts","../../../../core/src/plugin/spacing/definePadding/definePadding.ts","../../../../core/src/plugin/behavior/defineBoxShadow/defineBoxShadow.ts","../../src/core/createComponent.tsx"],"sourcesContent":["import type { Properties } from 'csstype';\n\nimport type { Plugin } from '../../plugin';\nimport type { ThemeBuilded } from '../../theme';\nimport type { CustomOptions } from '../CustomOptions';\n\ntype Data = {\n sx: CustomOptions;\n theme: ThemeBuilded;\n}\n\nexport default function createOptions({ sx, theme }: Data, ...plugins: Plugin[]): Properties {\n return plugins.reduce<Properties>((acc, plugin) => {\n acc = { ...acc, ...plugin(theme, sx) };\n\n return acc;\n }, {});\n}","import definePlugin from '../../definePlugin';\n\nexport default definePlugin((theme, { color }) => {\n const { palette } = theme;\n\n if (!color) { return {}; }\n\n return {\n color: color(palette)\n };\n});","import definePlugin from '../../definePlugin';\n\nexport default definePlugin((theme, { background }) => {\n const { palette } = theme;\n\n if (!background) { return {}; }\n\n return {\n background: background(palette)\n };\n});","import definePlugin from '../../definePlugin';\n\nexport default definePlugin((theme, { borderColor }) => {\n const { palette } = theme;\n\n if (!borderColor) { return {}; }\n\n return {\n borderColor: borderColor(palette)\n };\n});","import definePlugin from '../../definePlugin';\n\nexport default definePlugin((theme, { backgroundColor }) => {\n const { palette } = theme;\n\n if (!backgroundColor) { return {}; }\n\n return {\n backgroundColor: backgroundColor(palette)\n };\n});","import definePlugin from '../../definePlugin';\n\nexport default definePlugin((theme, { borderRadius }) => {\n const { shape } = theme;\n\n if (!borderRadius) { return {}; }\n\n return {\n borderRadius: `${shape.radius * borderRadius}px`\n };\n});","import definePlugin from '../../definePlugin';\n\nexport default definePlugin((theme, { m, mb, ml, mr, mt, mx, my }) => {\n const { spacing } = theme;\n\n const calculateMargin = (mg?: number) => {\n return !!mg || mg === 0 ? `${String(mg * spacing)}px` : '';\n };\n\n const hasM = calculateMargin(m);\n\n const hasMt = calculateMargin(mt);\n const hasMb = calculateMargin(mb);\n\n const hasMy = calculateMargin(my);\n const hasMx = calculateMargin(mx);\n\n const hasMl = calculateMargin(ml);\n const hasMr = calculateMargin(mr);\n\n return {\n margin: hasM,\n marginTop: hasMt || hasMy || hasM,\n marginBottom: hasMb || hasMy || hasM,\n marginLeft: hasMl || hasMx || hasM,\n marginRight: hasMr || hasMx || hasM,\n };\n});","import definePlugin from '../../definePlugin';\n\nexport default definePlugin((theme, { p, pb, pl, pr, pt, px, py }) => {\n const { spacing } = theme;\n\n const calculatePadding = (pd?: number) => {\n return !!pd || pd === 0 ? `${String(pd * spacing)}px` : '';\n };\n\n const hasP = calculatePadding(p);\n\n const hasPt = calculatePadding(pt);\n const hasPb = calculatePadding(pb);\n\n const hasPy = calculatePadding(py);\n const hasPx = calculatePadding(px);\n\n const hasPl = calculatePadding(pl);\n const hasPr = calculatePadding(pr);\n\n return {\n padding: hasP,\n paddingTop: hasPt || hasPy || hasP,\n paddingBottom: hasPb || hasPy || hasP,\n paddingLeft: hasPl || hasPx || hasP,\n paddingRight: hasPr || hasPx || hasP,\n };\n});","import { boxShadowSmall, boxShadowRegular, boxShadowLarge } from '@iziui/tokens/web/js';\n\nimport definePlugin from '../../definePlugin';\nimport type { CustomOptions } from '../../../options/CustomOptions';\n\ntype ExtractSize = NonNullable<CustomOptions['boxShadow']>;\n\nexport default definePlugin((_, { boxShadow }) => {\n\n if (!boxShadow) { return {}; }\n\n const sizes: { [s in ExtractSize]: string } = {\n sm: boxShadowSmall,\n md: boxShadowRegular,\n lg: boxShadowLarge,\n };\n\n return {\n boxShadow: sizes[boxShadow]\n };\n});","import type { ComponentType, FC } from 'react';\n\nimport type { Sx } from '@iziui/core/options';\nimport type { Plugin } from '@iziui/core/plugin';\nimport createOptions from '@iziui/core/options';\nimport * as plugins from '@iziui/core/plugin';\n\nimport { useTheme } from '@/theme';\n\nfunction extract(module: { [key: string]: Plugin }) {\n return Object.values(module).map((fn) => fn);\n}\n\nexport default function createComponent<P>(WrappedComponent: ComponentType<P>) {\n WrappedComponent.displayName = WrappedComponent.name;\n\n const EnhancedComponent: FC<Sx<P>> = ({ sx, fullWidth, ...props }) => {\n const { theme } = useTheme();\n\n const options = sx && createOptions({ theme, sx },\n ...extract(plugins),\n );\n\n return (\n <WrappedComponent\n {...(props as P)}\n style={{\n boxSizing: 'border-box',\n ...props['style'],\n ...options,\n ...(fullWidth ? { width: '100%' } : {}),\n }}\n />\n );\n };\n\n return EnhancedComponent;\n}"],"names":["createOptions","sx","theme","plugins","acc","plugin","defineColor","color","palette","defineBackground","background","defineBorderColor","borderColor","defineBackgroundColor","backgroundColor","defineBorderRadius","borderRadius","shape","defineMargin","m","mb","ml","mr","mt","mx","my","spacing","calculateMargin","mg","hasM","hasMt","hasMb","hasMy","hasMx","hasMl","hasMr","definePadding","p","pb","pl","pr","pt","px","py","calculatePadding","pd","hasP","hasPt","hasPb","hasPy","hasPx","hasPl","hasPr","defineBoxShadow","_","boxShadow","boxShadowSmall","boxShadowRegular","boxShadowLarge","extract","module","fn","createComponent","WrappedComponent","fullWidth","props","useTheme","options","jsx"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";const l=require("react"),h=require("react/jsx-runtime"),p=l.createContext(null);function m({formGroup:o,debug:t=!1,children:r,...e}){const n=u=>{u.preventDefault(),o.submit()};return h.jsxs(p,{value:o,children:[h.jsx("form",{...e,style:{width:"100%",...e.style},onSubmit:n,noValidate:!0,children:r}),t&&h.jsx("pre",{style:{maxHeight:350,padding:15,borderRadius:4,overflow:"auto",color:"#333",background:"#e5e5e5",boxShadow:"0 1px 3px rgba(0,0,0,0.12), 0 1px 2px rgba(0,0,0,0.24)"},children:JSON.stringify(o.controls,null,2)})]})}function f(){const o=l.useContext(p);if(!o)throw new Error("useFormGroup must be used inside <FormProvider> (or <Form />).");return o}function v(o){const t=f();return{control:t.controls[o],update:n=>{t.setValues(u=>(u[o]=n,u))}}}function y({controlName:o,field:t,action:r="input"}){const{control:e,update:n}=v(o);return(i=>{const a=s=>["radio","checkbox"].includes(s.type)?s.target.checked:s.target.value;return l.cloneElement(i,{onBlur:s=>{r==="blur"&&n(a(s)),i.props.onBlur&&i.props.onBlur(s)},onInput:s=>{r==="input"&&n(a(s)),i.props.onInput&&i.props.onInput(s)},onChange:s=>{r==="change"&&n(a(s)),i.props.onChange&&i.props.onChange(s)}})})(t(e))}class d{constructor(t,r,e){this.controls=t,this.handle=r,this.validator=e}controls;handle;validator;_valid=!1;_hydrate;get hydrate(){return this._hydrate}set hydrate(t){this._hydrate=t}get isValid(){return this._valid}set isValid(t){this._valid=t}get errors(){return Object.values(this.controls).filter(t=>t.error)}get values(){const t={};return this.eachControl((r,e)=>({[e]:r.value})).forEach(r=>{for(const e in r)t[e]=r[e]}),t}setValues(t){const r=typeof t=="function"?t(this.values):t;for(const e of Object.keys(r))this.controls[e].value=r[e];this.validate(),this.hydrate(this),this.handle.change&&this.handle.change(this)}eachControl(t){return Object.keys(this.controls).map(r=>t(this.controls[r],r))}submit(){this.handle.submit&&(this.eachControl(t=>t.dirty=!0),this.handle.submit(this))}reset(){this.eachControl(t=>t.reset()),this.hydrate(this)}validate(){this.validator&&(Object.entries(this.validator).map(([t,r])=>{const e=this.controls[t].validate(),n=r(this);this.controls[t].error=e||n||""}),this.isValid=!this.errors.length)}}class g{_value;defaultValue;validators=[];type;error="";dirty=!1;constructor({defaultValue:t,type:r="text",validators:e}){this.type=r,this._value=t,this.defaultValue=t,e&&(this.validators=e)}get value(){return this._value}set value(t){this.dirty=!0,this._value=t,this.validate()}get isInvalid(){return!!(this.dirty&&this.error)}reset(){this.value=this.defaultValue,this.dirty=!1}validate(){const t=this.validators.map(r=>r(this)).filter(Boolean);return this.error=t[0]||"",this.error}}function b(o){return Object.entries(o).reduce((t,r)=>{const e=r[0],n=r[1];return t[e]=new g(n),t},{})}function C({form:o,handle:t,validator:r}){const[e,n]=l.useState(new d(b(o),t,r)),u=i=>{n(a=>{const s=i.controls,c=new d(s,t,r);return c.hydrate=a.hydrate,c})};return e.hydrate=u,e}exports.Control=y;exports.Form=m;exports.useControl=v;exports.useForm=C;exports.useFormGroup=f;
|
|
2
|
+
//# sourceMappingURL=useForm-Dr0iM-3g.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useForm-Dr0iM-3g.cjs","sources":["../../src/lab/Form/Form.tsx","../../src/lab/Form/useFormGroup.ts","../../src/lab/Form/useControl.ts","../../src/lab/Form/Control.tsx","../../src/lab/Form/FormGroup.ts","../../src/lab/Form/FormControl.ts","../../src/lab/Form/useForm.ts"],"sourcesContent":["import { createContext, SubmitEvent, HTMLAttributes } from 'react';\n\nimport type FormGroup from './FormGroup';\n\nexport const FormContext = createContext<FormGroup<any> | null>(null);\n\ninterface FormProps<T extends Record<string, unknown>> extends HTMLAttributes<HTMLFormElement> {\n formGroup: FormGroup<T>;\n debug?: boolean;\n}\n\nexport default function Form<T extends Record<string, unknown>>({\n formGroup,\n debug = false,\n children,\n ...props\n}: FormProps<T>) {\n const submit = (event: SubmitEvent<HTMLFormElement>) => {\n event.preventDefault();\n formGroup.submit();\n };\n\n return (\n <FormContext value={formGroup}>\n <form\n {...props}\n style={{ width: '100%', ...props.style }}\n onSubmit={submit}\n noValidate\n >\n {children}\n </form>\n {\n debug && (\n <pre style={{\n maxHeight: 350,\n padding: 15,\n borderRadius: 4,\n overflow: 'auto',\n color: '#333',\n background: '#e5e5e5',\n boxShadow: '0 1px 3px rgba(0,0,0,0.12), 0 1px 2px rgba(0,0,0,0.24)',\n }}>\n {JSON.stringify(formGroup.controls, null, 2)}\n </pre>\n )\n }\n </FormContext>\n );\n}","import { useContext } from 'react';\n\nimport type FormGroup from './FormGroup';\nimport { FormContext } from './Form';\n\nexport default function useFormGroup<T extends Record<string, unknown>>() {\n const context = useContext(FormContext);\n\n if (!context) throw new Error('useFormGroup must be used inside <FormProvider> (or <Form />).');\n\n return context as FormGroup<T>;\n}","import useFormGroup from './useFormGroup';\n\nexport default function useControl<\n T extends Record<string, unknown>,\n K extends keyof T = keyof T,\n>(controlName: K) {\n const formGroup = useFormGroup<T>();\n const control = formGroup.controls[controlName];\n\n const update = (value: T[K]) => {\n formGroup.setValues((data) => {\n data[controlName] = value;\n\n return data;\n });\n };\n\n return { control, update };\n}","import { ChangeEvent, cloneElement, InputEvent, InputHTMLAttributes, ReactElement } from 'react';\n\nimport useControl from './useControl';\nimport type { AbstractControl } from './AbstractControl';\n\ninterface ControlProps<\n T extends Record<string, any>,\n K extends keyof T,\n> {\n controlName: K;\n action?: 'change' | 'input' | 'blur';\n field: (control: AbstractControl<T>[K]) => React.JSX.Element;\n}\n\nexport default function Control<\n T extends Record<string, any>,\n K extends keyof T\n>({\n controlName,\n field,\n action = 'input'\n}: ControlProps<T, K>) {\n const { control, update } = useControl<T, K>(controlName);\n\n const renderChildren = (child: ReactElement<InputHTMLAttributes<HTMLInputElement>>) => {\n const getValue = (e: ChangeEvent<HTMLInputElement> | InputEvent<HTMLInputElement>) => {\n if (['radio', 'checkbox'].includes(e.type)) { return e.target['checked']; }\n\n return e.target['value'];\n };\n\n return cloneElement(child, {\n onBlur: (e) => {\n if (action === 'blur') { update(getValue(e)); };\n\n if (child.props.onBlur) { child.props.onBlur(e); }\n },\n onInput: (e) => {\n if (action === 'input') { update(getValue(e)); };\n\n if (child.props.onInput) { child.props.onInput(e); }\n },\n onChange: (e) => {\n if (action === 'change') { update(getValue(e)); };\n\n if (child.props.onChange) { child.props.onChange(e); }\n },\n });\n };\n\n return (\n renderChildren(field(control))\n );\n}","import type { AbstractControl } from './AbstractControl';\nimport type FormControl from './FormControl';\n\ntype Hydrate<T extends Record<string, unknown>> = (data: FormGroup<T>) => void;\ntype SetValues<F> = Partial<F> | ((values: F) => Partial<F>);\n\nexport type Validator<T extends Record<string, unknown>> = {\n [K in keyof T]: (data: FormGroup<T>) => string | void;\n}\n\nexport interface Handle<T extends Record<string, unknown>> {\n change?: (form: FormGroup<T>) => void;\n submit?: (form: FormGroup<T>) => void;\n}\n\nexport default class FormGroup<T extends Record<string, unknown>> {\n private _valid = false;\n private _hydrate!: Hydrate<T>;\n\n constructor(\n public controls: AbstractControl<T>,\n public handle: Handle<T>,\n public validator?: Validator<T>,\n ) { }\n\n /**\n * Atualiza o estado interno do componente.\n * @private\n * @description Este método é usado internamente pela biblioteca.\n * Para atualizar valores externamente, use {@link setValues}.\n*/\n get hydrate() { return this._hydrate; }\n set hydrate(fn: (values: FormGroup<T>) => any) { this._hydrate = fn; }\n\n get isValid(): boolean { return this._valid; }\n set isValid(validity: boolean) { this._valid = validity; }\n\n get errors() {\n return Object.values<FormControl<T[keyof T]>>(this.controls).filter(c => c.error);\n }\n\n get values(): T {\n const values: Record<string, any> = {};\n\n this.eachControl((control, key) => ({ [key as string]: control.value }))\n .forEach(control => { for (const prop in control) { values[prop] = control[prop]; } });\n\n return values as T;\n }\n\n public setValues(fn: SetValues<T>): void;\n public setValues(partialForm: Partial<T>): void;\n public setValues(arg: Partial<T> | SetValues<T>) {\n const partial =\n typeof arg === 'function'\n ? arg(this.values)\n : arg;\n\n for (const key of Object.keys(partial)) {\n this.controls[key].value = partial[key] as T[keyof T];\n }\n\n this.validate();\n\n this.hydrate(this);\n\n if (!this.handle.change) { return; }\n\n this.handle.change(this);\n }\n\n private eachControl(fn: <K extends keyof T>(control: FormControl<T[K]>, key?: K) => any) {\n return Object.keys(this.controls).map(k => fn(this.controls[k], k));\n }\n\n public submit() {\n if (!this.handle.submit) { return; }\n\n this.eachControl((control) => control.dirty = true);\n\n this.handle.submit(this);\n }\n\n public reset() {\n this.eachControl((control) => control.reset());\n this.hydrate(this);\n }\n\n public validate() {\n if (!this.validator) { return; }\n\n Object.entries(this.validator).map(([key, fn]) => {\n const controlError = this.controls[key].validate();\n const validatorError = fn(this);\n\n this.controls[key].error = controlError || validatorError || '';\n });\n\n this.isValid = !this.errors.length;\n }\n}","type Type = 'text' | 'email';\ntype Validator<C> = (control: FormControl<C>) => string | false | void;\n\ntype Data<T> = {\n defaultValue: T;\n type?: Type;\n validators?: Validator<T>[];\n}\n\nexport type Constructor<V> = ConstructorParameters<typeof FormControl<V>>[number];\n\nexport default class FormControl<V> implements Pick<Data<V>, 'type'> {\n private _value!: V;\n private defaultValue: V;\n private validators: Validator<V>[] = [];\n\n public type: Type;\n public error = '';\n public dirty = false;\n\n constructor({\n defaultValue,\n type = 'text',\n validators,\n }: Data<V>) {\n this.type = type;\n this._value = defaultValue;\n this.defaultValue = defaultValue;\n\n if (validators) { this.validators = validators; }\n }\n\n get value(): V { return this._value; }\n set value(value: V) {\n this.dirty = true;\n this._value = value;\n this.validate();\n }\n\n get isInvalid() { return Boolean(this.dirty && this.error); }\n\n public reset() {\n this.value = this.defaultValue;\n this.dirty = false;\n }\n\n public validate() {\n const errors = this.validators\n .map(v => v(this))\n .filter(Boolean);\n\n this.error = errors[0] || '';\n\n return this.error;\n }\n}\n","import { useState } from 'react';\n\nimport FormGroup from './FormGroup';\nimport FormControl from './FormControl';\nimport type { Constructor } from './FormControl';\nimport type { Handle, Validator } from './FormGroup';\nimport type { AbstractControl } from './AbstractControl';\n\ntype UseForm<T extends Record<string, unknown>> = {\n form: { [K in keyof T]: Constructor<T[K]> };\n handle: Handle<T>;\n validator?: Validator<T>;\n}\n\nfunction makingControls<T extends Record<string, unknown>>(form: { [K in keyof T]: Constructor<T[K]> }) {\n return Object.entries(form)\n .reduce((acc, data) => {\n const key = data[0] as keyof T;\n const value = data[1] as Constructor<T[keyof T]>;\n\n acc[key] = new FormControl(value);\n\n return acc;\n }, {} as AbstractControl<T>);\n}\n\nexport default function useForm<T extends Record<string, unknown>>({\n form,\n handle,\n validator\n}: UseForm<T>) {\n const [formGroup, setFormGroup] = useState<FormGroup<T>>(\n new FormGroup(\n makingControls(form),\n handle,\n validator\n )\n );\n\n const hydrate = (form: FormGroup<T>) => {\n setFormGroup(prev => {\n const controls = form.controls;\n\n const newFormGroup = new FormGroup(controls, handle, validator);\n newFormGroup.hydrate = prev.hydrate;\n\n return newFormGroup;\n });\n };\n\n formGroup.hydrate = hydrate;\n\n return formGroup;\n}"],"names":["FormContext","createContext","Form","formGroup","debug","children","props","submit","event","jsxs","jsx","useFormGroup","context","useContext","useControl","controlName","value","data","Control","field","action","control","update","child","getValue","e","cloneElement","FormGroup","controls","handle","validator","fn","validity","c","values","key","prop","arg","partial","k","controlError","validatorError","FormControl","defaultValue","type","validators","errors","v","makingControls","form","acc","useForm","setFormGroup","useState","hydrate","prev","newFormGroup"],"mappings":"qEAIaA,EAAcC,EAAAA,cAAqC,IAAI,EAOpE,SAAwBC,EAAwC,CAC9D,UAAAC,EACA,MAAAC,EAAQ,GACR,SAAAC,EACA,GAAGC,CACL,EAAiB,CACf,MAAMC,EAAUC,GAAwC,CACtDA,EAAM,eAAA,EACNL,EAAU,OAAA,CACZ,EAEA,OACEM,EAAAA,KAACT,EAAA,CAAY,MAAOG,EAClB,SAAA,CAAAO,EAAAA,IAAC,OAAA,CACE,GAAGJ,EACJ,MAAO,CAAE,MAAO,OAAQ,GAAGA,EAAM,KAAA,EACjC,SAAUC,EACV,WAAU,GAET,SAAAF,CAAA,CAAA,EAGDD,GACEM,EAAAA,IAAC,MAAA,CAAI,MAAO,CACV,UAAW,IACX,QAAS,GACT,aAAc,EACd,SAAU,OACV,MAAO,OACP,WAAY,UACZ,UAAW,wDAAA,EAEV,SAAA,KAAK,UAAUP,EAAU,SAAU,KAAM,CAAC,CAAA,CAC7C,CAAA,EAGN,CAEJ,CC5CA,SAAwBQ,GAAkD,CACxE,MAAMC,EAAUC,EAAAA,WAAWb,CAAW,EAEtC,GAAI,CAACY,EAAS,MAAM,IAAI,MAAM,gEAAgE,EAE9F,OAAOA,CACT,CCTA,SAAwBE,EAGtBC,EAAgB,CAChB,MAAMZ,EAAYQ,EAAA,EAWlB,MAAO,CAAE,QAVOR,EAAU,SAASY,CAAW,EAU5B,OARFC,GAAgB,CAC9Bb,EAAU,UAAWc,IACnBA,EAAKF,CAAW,EAAIC,EAEbC,EACR,CACH,CAEkB,CACpB,CCJA,SAAwBC,EAGtB,CACA,YAAAH,EACA,MAAAI,EACA,OAAAC,EAAS,OACX,EAAuB,CACrB,KAAM,CAAE,QAAAC,EAAS,OAAAC,GAAWR,EAAiBC,CAAW,EA4BxD,OA1BwBQ,GAA+D,CACrF,MAAMC,EAAYC,GACZ,CAAC,QAAS,UAAU,EAAE,SAASA,EAAE,IAAI,EAAYA,EAAE,OAAO,QAEvDA,EAAE,OAAO,MAGlB,OAAOC,EAAAA,aAAaH,EAAO,CACzB,OAASE,GAAM,CACTL,IAAW,QAAUE,EAAOE,EAASC,CAAC,CAAC,EAEvCF,EAAM,MAAM,QAAUA,EAAM,MAAM,OAAOE,CAAC,CAChD,EACA,QAAUA,GAAM,CACVL,IAAW,SAAWE,EAAOE,EAASC,CAAC,CAAC,EAExCF,EAAM,MAAM,SAAWA,EAAM,MAAM,QAAQE,CAAC,CAClD,EACA,SAAWA,GAAM,CACXL,IAAW,UAAYE,EAAOE,EAASC,CAAC,CAAC,EAEzCF,EAAM,MAAM,UAAYA,EAAM,MAAM,SAASE,CAAC,CACpD,CAAA,CACD,CACH,GAGiBN,EAAME,CAAO,CAAC,CAEjC,CCtCA,MAAqBM,CAA6C,CAIhE,YACSC,EACAC,EACAC,EACP,CAHO,KAAA,SAAAF,EACA,KAAA,OAAAC,EACA,KAAA,UAAAC,CACL,CAHK,SACA,OACA,UAND,OAAS,GACT,SAcR,IAAI,SAAU,CAAE,OAAO,KAAK,QAAU,CACtC,IAAI,QAAQC,EAAmC,CAAE,KAAK,SAAWA,CAAI,CAErE,IAAI,SAAmB,CAAE,OAAO,KAAK,MAAQ,CAC7C,IAAI,QAAQC,EAAmB,CAAE,KAAK,OAASA,CAAU,CAEzD,IAAI,QAAS,CACX,OAAO,OAAO,OAAgC,KAAK,QAAQ,EAAE,OAAOC,GAAKA,EAAE,KAAK,CAClF,CAEA,IAAI,QAAY,CACd,MAAMC,EAA8B,CAAA,EAEpC,YAAK,YAAY,CAACb,EAASc,KAAS,CAAE,CAACA,CAAa,EAAGd,EAAQ,KAAA,EAAQ,EACpE,QAAQA,GAAW,CAAE,UAAWe,KAAQf,EAAWa,EAAOE,CAAI,EAAIf,EAAQe,CAAI,CAAK,CAAC,EAEhFF,CACT,CAIO,UAAUG,EAAgC,CAC/C,MAAMC,EACJ,OAAOD,GAAQ,WACXA,EAAI,KAAK,MAAM,EACfA,EAEN,UAAWF,KAAO,OAAO,KAAKG,CAAO,EACnC,KAAK,SAASH,CAAG,EAAE,MAAQG,EAAQH,CAAG,EAGxC,KAAK,SAAA,EAEL,KAAK,QAAQ,IAAI,EAEZ,KAAK,OAAO,QAEjB,KAAK,OAAO,OAAO,IAAI,CACzB,CAEQ,YAAYJ,EAAqE,CACvF,OAAO,OAAO,KAAK,KAAK,QAAQ,EAAE,IAAIQ,GAAKR,EAAG,KAAK,SAASQ,CAAC,EAAGA,CAAC,CAAC,CACpE,CAEO,QAAS,CACT,KAAK,OAAO,SAEjB,KAAK,YAAalB,GAAYA,EAAQ,MAAQ,EAAI,EAElD,KAAK,OAAO,OAAO,IAAI,EACzB,CAEO,OAAQ,CACb,KAAK,YAAaA,GAAYA,EAAQ,OAAO,EAC7C,KAAK,QAAQ,IAAI,CACnB,CAEO,UAAW,CACX,KAAK,YAEV,OAAO,QAAQ,KAAK,SAAS,EAAE,IAAI,CAAC,CAACc,EAAKJ,CAAE,IAAM,CAChD,MAAMS,EAAe,KAAK,SAASL,CAAG,EAAE,SAAA,EAClCM,EAAiBV,EAAG,IAAI,EAE9B,KAAK,SAASI,CAAG,EAAE,MAAQK,GAAgBC,GAAkB,EAC/D,CAAC,EAED,KAAK,QAAU,CAAC,KAAK,OAAO,OAC9B,CACF,CCzFA,MAAqBC,CAAgD,CAC3D,OACA,aACA,WAA6B,CAAA,EAE9B,KACA,MAAQ,GACR,MAAQ,GAEf,YAAY,CACV,aAAAC,EACA,KAAAC,EAAO,OACP,WAAAC,CAAA,EACU,CACV,KAAK,KAAOD,EACZ,KAAK,OAASD,EACd,KAAK,aAAeA,EAEhBE,IAAc,KAAK,WAAaA,EACtC,CAEA,IAAI,OAAW,CAAE,OAAO,KAAK,MAAQ,CACrC,IAAI,MAAM7B,EAAU,CAClB,KAAK,MAAQ,GACb,KAAK,OAASA,EACd,KAAK,SAAA,CACP,CAEA,IAAI,WAAY,CAAE,MAAO,GAAQ,KAAK,OAAS,KAAK,MAAQ,CAErD,OAAQ,CACb,KAAK,MAAQ,KAAK,aAClB,KAAK,MAAQ,EACf,CAEO,UAAW,CAChB,MAAM8B,EAAS,KAAK,WACjB,IAAIC,GAAKA,EAAE,IAAI,CAAC,EAChB,OAAO,OAAO,EAEjB,YAAK,MAAQD,EAAO,CAAC,GAAK,GAEnB,KAAK,KACd,CACF,CCzCA,SAASE,EAAkDC,EAA6C,CACtG,OAAO,OAAO,QAAQA,CAAI,EACvB,OAAO,CAACC,EAAKjC,IAAS,CACrB,MAAMkB,EAAMlB,EAAK,CAAC,EACZD,EAAQC,EAAK,CAAC,EAEpB,OAAAiC,EAAIf,CAAG,EAAI,IAAIO,EAAY1B,CAAK,EAEzBkC,CACT,EAAG,CAAA,CAAwB,CAC/B,CAEA,SAAwBC,EAA2C,CACjE,KAAAF,EACA,OAAApB,EACA,UAAAC,CACF,EAAe,CACb,KAAM,CAAC3B,EAAWiD,CAAY,EAAIC,EAAAA,SAChC,IAAI1B,EACFqB,EAAeC,CAAI,EACnBpB,EACAC,CAAA,CACF,EAGIwB,EAAWL,GAAuB,CACtCG,EAAaG,GAAQ,CACnB,MAAM3B,EAAWqB,EAAK,SAEhBO,EAAe,IAAI7B,EAAUC,EAAUC,EAAQC,CAAS,EAC9D,OAAA0B,EAAa,QAAUD,EAAK,QAErBC,CACT,CAAC,CACH,EAEA,OAAArD,EAAU,QAAUmD,EAEbnD,CACT"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{createContext as p,useContext as f,cloneElement as v,useState as m}from"react";import{jsxs as y,jsx as h}from"react/jsx-runtime";const d=p(null);function w({formGroup:o,debug:t=!1,children:r,...e}){const n=a=>{a.preventDefault(),o.submit()};return y(d,{value:o,children:[h("form",{...e,style:{width:"100%",...e.style},onSubmit:n,noValidate:!0,children:r}),t&&h("pre",{style:{maxHeight:350,padding:15,borderRadius:4,overflow:"auto",color:"#333",background:"#e5e5e5",boxShadow:"0 1px 3px rgba(0,0,0,0.12), 0 1px 2px rgba(0,0,0,0.24)"},children:JSON.stringify(o.controls,null,2)})]})}function g(){const o=f(d);if(!o)throw new Error("useFormGroup must be used inside <FormProvider> (or <Form />).");return o}function b(o){const t=g();return{control:t.controls[o],update:n=>{t.setValues(a=>(a[o]=n,a))}}}function V({controlName:o,field:t,action:r="input"}){const{control:e,update:n}=b(o);return(i=>{const u=s=>["radio","checkbox"].includes(s.type)?s.target.checked:s.target.value;return v(i,{onBlur:s=>{r==="blur"&&n(u(s)),i.props.onBlur&&i.props.onBlur(s)},onInput:s=>{r==="input"&&n(u(s)),i.props.onInput&&i.props.onInput(s)},onChange:s=>{r==="change"&&n(u(s)),i.props.onChange&&i.props.onChange(s)}})})(t(e))}class c{constructor(t,r,e){this.controls=t,this.handle=r,this.validator=e}controls;handle;validator;_valid=!1;_hydrate;get hydrate(){return this._hydrate}set hydrate(t){this._hydrate=t}get isValid(){return this._valid}set isValid(t){this._valid=t}get errors(){return Object.values(this.controls).filter(t=>t.error)}get values(){const t={};return this.eachControl((r,e)=>({[e]:r.value})).forEach(r=>{for(const e in r)t[e]=r[e]}),t}setValues(t){const r=typeof t=="function"?t(this.values):t;for(const e of Object.keys(r))this.controls[e].value=r[e];this.validate(),this.hydrate(this),this.handle.change&&this.handle.change(this)}eachControl(t){return Object.keys(this.controls).map(r=>t(this.controls[r],r))}submit(){this.handle.submit&&(this.eachControl(t=>t.dirty=!0),this.handle.submit(this))}reset(){this.eachControl(t=>t.reset()),this.hydrate(this)}validate(){this.validator&&(Object.entries(this.validator).map(([t,r])=>{const e=this.controls[t].validate(),n=r(this);this.controls[t].error=e||n||""}),this.isValid=!this.errors.length)}}class C{_value;defaultValue;validators=[];type;error="";dirty=!1;constructor({defaultValue:t,type:r="text",validators:e}){this.type=r,this._value=t,this.defaultValue=t,e&&(this.validators=e)}get value(){return this._value}set value(t){this.dirty=!0,this._value=t,this.validate()}get isInvalid(){return!!(this.dirty&&this.error)}reset(){this.value=this.defaultValue,this.dirty=!1}validate(){const t=this.validators.map(r=>r(this)).filter(Boolean);return this.error=t[0]||"",this.error}}function x(o){return Object.entries(o).reduce((t,r)=>{const e=r[0],n=r[1];return t[e]=new C(n),t},{})}function j({form:o,handle:t,validator:r}){const[e,n]=m(new c(x(o),t,r)),a=i=>{n(u=>{const s=i.controls,l=new c(s,t,r);return l.hydrate=u.hydrate,l})};return e.hydrate=a,e}export{V as C,w as F,j as a,g as b,b as u};
|
|
2
|
+
//# sourceMappingURL=useForm-mpF_-ABy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useForm-mpF_-ABy.js","sources":["../../src/lab/Form/Form.tsx","../../src/lab/Form/useFormGroup.ts","../../src/lab/Form/useControl.ts","../../src/lab/Form/Control.tsx","../../src/lab/Form/FormGroup.ts","../../src/lab/Form/FormControl.ts","../../src/lab/Form/useForm.ts"],"sourcesContent":["import { createContext, SubmitEvent, HTMLAttributes } from 'react';\n\nimport type FormGroup from './FormGroup';\n\nexport const FormContext = createContext<FormGroup<any> | null>(null);\n\ninterface FormProps<T extends Record<string, unknown>> extends HTMLAttributes<HTMLFormElement> {\n formGroup: FormGroup<T>;\n debug?: boolean;\n}\n\nexport default function Form<T extends Record<string, unknown>>({\n formGroup,\n debug = false,\n children,\n ...props\n}: FormProps<T>) {\n const submit = (event: SubmitEvent<HTMLFormElement>) => {\n event.preventDefault();\n formGroup.submit();\n };\n\n return (\n <FormContext value={formGroup}>\n <form\n {...props}\n style={{ width: '100%', ...props.style }}\n onSubmit={submit}\n noValidate\n >\n {children}\n </form>\n {\n debug && (\n <pre style={{\n maxHeight: 350,\n padding: 15,\n borderRadius: 4,\n overflow: 'auto',\n color: '#333',\n background: '#e5e5e5',\n boxShadow: '0 1px 3px rgba(0,0,0,0.12), 0 1px 2px rgba(0,0,0,0.24)',\n }}>\n {JSON.stringify(formGroup.controls, null, 2)}\n </pre>\n )\n }\n </FormContext>\n );\n}","import { useContext } from 'react';\n\nimport type FormGroup from './FormGroup';\nimport { FormContext } from './Form';\n\nexport default function useFormGroup<T extends Record<string, unknown>>() {\n const context = useContext(FormContext);\n\n if (!context) throw new Error('useFormGroup must be used inside <FormProvider> (or <Form />).');\n\n return context as FormGroup<T>;\n}","import useFormGroup from './useFormGroup';\n\nexport default function useControl<\n T extends Record<string, unknown>,\n K extends keyof T = keyof T,\n>(controlName: K) {\n const formGroup = useFormGroup<T>();\n const control = formGroup.controls[controlName];\n\n const update = (value: T[K]) => {\n formGroup.setValues((data) => {\n data[controlName] = value;\n\n return data;\n });\n };\n\n return { control, update };\n}","import { ChangeEvent, cloneElement, InputEvent, InputHTMLAttributes, ReactElement } from 'react';\n\nimport useControl from './useControl';\nimport type { AbstractControl } from './AbstractControl';\n\ninterface ControlProps<\n T extends Record<string, any>,\n K extends keyof T,\n> {\n controlName: K;\n action?: 'change' | 'input' | 'blur';\n field: (control: AbstractControl<T>[K]) => React.JSX.Element;\n}\n\nexport default function Control<\n T extends Record<string, any>,\n K extends keyof T\n>({\n controlName,\n field,\n action = 'input'\n}: ControlProps<T, K>) {\n const { control, update } = useControl<T, K>(controlName);\n\n const renderChildren = (child: ReactElement<InputHTMLAttributes<HTMLInputElement>>) => {\n const getValue = (e: ChangeEvent<HTMLInputElement> | InputEvent<HTMLInputElement>) => {\n if (['radio', 'checkbox'].includes(e.type)) { return e.target['checked']; }\n\n return e.target['value'];\n };\n\n return cloneElement(child, {\n onBlur: (e) => {\n if (action === 'blur') { update(getValue(e)); };\n\n if (child.props.onBlur) { child.props.onBlur(e); }\n },\n onInput: (e) => {\n if (action === 'input') { update(getValue(e)); };\n\n if (child.props.onInput) { child.props.onInput(e); }\n },\n onChange: (e) => {\n if (action === 'change') { update(getValue(e)); };\n\n if (child.props.onChange) { child.props.onChange(e); }\n },\n });\n };\n\n return (\n renderChildren(field(control))\n );\n}","import type { AbstractControl } from './AbstractControl';\nimport type FormControl from './FormControl';\n\ntype Hydrate<T extends Record<string, unknown>> = (data: FormGroup<T>) => void;\ntype SetValues<F> = Partial<F> | ((values: F) => Partial<F>);\n\nexport type Validator<T extends Record<string, unknown>> = {\n [K in keyof T]: (data: FormGroup<T>) => string | void;\n}\n\nexport interface Handle<T extends Record<string, unknown>> {\n change?: (form: FormGroup<T>) => void;\n submit?: (form: FormGroup<T>) => void;\n}\n\nexport default class FormGroup<T extends Record<string, unknown>> {\n private _valid = false;\n private _hydrate!: Hydrate<T>;\n\n constructor(\n public controls: AbstractControl<T>,\n public handle: Handle<T>,\n public validator?: Validator<T>,\n ) { }\n\n /**\n * Atualiza o estado interno do componente.\n * @private\n * @description Este método é usado internamente pela biblioteca.\n * Para atualizar valores externamente, use {@link setValues}.\n*/\n get hydrate() { return this._hydrate; }\n set hydrate(fn: (values: FormGroup<T>) => any) { this._hydrate = fn; }\n\n get isValid(): boolean { return this._valid; }\n set isValid(validity: boolean) { this._valid = validity; }\n\n get errors() {\n return Object.values<FormControl<T[keyof T]>>(this.controls).filter(c => c.error);\n }\n\n get values(): T {\n const values: Record<string, any> = {};\n\n this.eachControl((control, key) => ({ [key as string]: control.value }))\n .forEach(control => { for (const prop in control) { values[prop] = control[prop]; } });\n\n return values as T;\n }\n\n public setValues(fn: SetValues<T>): void;\n public setValues(partialForm: Partial<T>): void;\n public setValues(arg: Partial<T> | SetValues<T>) {\n const partial =\n typeof arg === 'function'\n ? arg(this.values)\n : arg;\n\n for (const key of Object.keys(partial)) {\n this.controls[key].value = partial[key] as T[keyof T];\n }\n\n this.validate();\n\n this.hydrate(this);\n\n if (!this.handle.change) { return; }\n\n this.handle.change(this);\n }\n\n private eachControl(fn: <K extends keyof T>(control: FormControl<T[K]>, key?: K) => any) {\n return Object.keys(this.controls).map(k => fn(this.controls[k], k));\n }\n\n public submit() {\n if (!this.handle.submit) { return; }\n\n this.eachControl((control) => control.dirty = true);\n\n this.handle.submit(this);\n }\n\n public reset() {\n this.eachControl((control) => control.reset());\n this.hydrate(this);\n }\n\n public validate() {\n if (!this.validator) { return; }\n\n Object.entries(this.validator).map(([key, fn]) => {\n const controlError = this.controls[key].validate();\n const validatorError = fn(this);\n\n this.controls[key].error = controlError || validatorError || '';\n });\n\n this.isValid = !this.errors.length;\n }\n}","type Type = 'text' | 'email';\ntype Validator<C> = (control: FormControl<C>) => string | false | void;\n\ntype Data<T> = {\n defaultValue: T;\n type?: Type;\n validators?: Validator<T>[];\n}\n\nexport type Constructor<V> = ConstructorParameters<typeof FormControl<V>>[number];\n\nexport default class FormControl<V> implements Pick<Data<V>, 'type'> {\n private _value!: V;\n private defaultValue: V;\n private validators: Validator<V>[] = [];\n\n public type: Type;\n public error = '';\n public dirty = false;\n\n constructor({\n defaultValue,\n type = 'text',\n validators,\n }: Data<V>) {\n this.type = type;\n this._value = defaultValue;\n this.defaultValue = defaultValue;\n\n if (validators) { this.validators = validators; }\n }\n\n get value(): V { return this._value; }\n set value(value: V) {\n this.dirty = true;\n this._value = value;\n this.validate();\n }\n\n get isInvalid() { return Boolean(this.dirty && this.error); }\n\n public reset() {\n this.value = this.defaultValue;\n this.dirty = false;\n }\n\n public validate() {\n const errors = this.validators\n .map(v => v(this))\n .filter(Boolean);\n\n this.error = errors[0] || '';\n\n return this.error;\n }\n}\n","import { useState } from 'react';\n\nimport FormGroup from './FormGroup';\nimport FormControl from './FormControl';\nimport type { Constructor } from './FormControl';\nimport type { Handle, Validator } from './FormGroup';\nimport type { AbstractControl } from './AbstractControl';\n\ntype UseForm<T extends Record<string, unknown>> = {\n form: { [K in keyof T]: Constructor<T[K]> };\n handle: Handle<T>;\n validator?: Validator<T>;\n}\n\nfunction makingControls<T extends Record<string, unknown>>(form: { [K in keyof T]: Constructor<T[K]> }) {\n return Object.entries(form)\n .reduce((acc, data) => {\n const key = data[0] as keyof T;\n const value = data[1] as Constructor<T[keyof T]>;\n\n acc[key] = new FormControl(value);\n\n return acc;\n }, {} as AbstractControl<T>);\n}\n\nexport default function useForm<T extends Record<string, unknown>>({\n form,\n handle,\n validator\n}: UseForm<T>) {\n const [formGroup, setFormGroup] = useState<FormGroup<T>>(\n new FormGroup(\n makingControls(form),\n handle,\n validator\n )\n );\n\n const hydrate = (form: FormGroup<T>) => {\n setFormGroup(prev => {\n const controls = form.controls;\n\n const newFormGroup = new FormGroup(controls, handle, validator);\n newFormGroup.hydrate = prev.hydrate;\n\n return newFormGroup;\n });\n };\n\n formGroup.hydrate = hydrate;\n\n return formGroup;\n}"],"names":["FormContext","createContext","Form","formGroup","debug","children","props","submit","event","jsxs","jsx","useFormGroup","context","useContext","useControl","controlName","value","data","Control","field","action","control","update","child","getValue","e","cloneElement","FormGroup","controls","handle","validator","fn","validity","c","values","key","prop","arg","partial","k","controlError","validatorError","FormControl","defaultValue","type","validators","errors","v","makingControls","form","acc","useForm","setFormGroup","useState","hydrate","prev","newFormGroup"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsxs as B,Fragment as E,jsx as m}from"react/jsx-runtime";import{forwardRef as L,useState as g,Children as P,useMemo as W,useEffect as x,cloneElement as F}from"react";import{p as r}from"./index-CZ41y9Hn.js";import{j as G}from"./joinClass-anSpaauN.js";import{u as H}from"./uuid-dGvr9vBZ.js";import{u as S}from"./useListenerResized-Bnqxrt7k.js";import{C as U}from"./Card-
|
|
2
|
-
//# sourceMappingURL=useMenu-
|
|
1
|
+
import{jsxs as B,Fragment as E,jsx as m}from"react/jsx-runtime";import{forwardRef as L,useState as g,Children as P,useMemo as W,useEffect as x,cloneElement as F}from"react";import{p as r}from"./index-CZ41y9Hn.js";import{j as G}from"./joinClass-anSpaauN.js";import{u as H}from"./uuid-dGvr9vBZ.js";import{u as S}from"./useListenerResized-Bnqxrt7k.js";import{C as U}from"./Card-BjoXz5bX.js";import{C as q}from"./CardContent-srKirxQF.js";import{c as J}from"./createComponent-C6TL60ri.js";class K{delay(t,n=500){if(!n){t();return}clearTimeout(this.timeout),this.timeout=setTimeout(()=>{t()},n)}}const Q=new K,V=L(function({open:t,width:n,children:f,anchorEl:o,direction:c="left",maxHeight:s,autoClose:N,onClose:M,...u},k){const[y,v]=g(),[d,a]=g({state:"invisible",animation:"close",width:"auto"}),w=16,T=150,A=P.toArray(f),b=W(()=>H(),[]),I=G(`${r}-menu`,`${r}-menu--${d?.animation}`,u.className);S(()=>_(),[o]),x(()=>{_()},[o]),x(()=>{t?j():h()},[t]);const _=()=>{o&&setTimeout(()=>{let e={};const{offsetWidth:i,offsetHeight:p,offsetLeft:$,offsetTop:D}=o;a(z=>({...z,width:i}));const C=D+p+w/2,R=document.getElementById(b);c==="center"&&(e={top:C,right:i}),c==="left"&&(e={top:C,left:$}),c==="right"&&(e={top:C,left:$-(R.offsetWidth-i)}),v(e)},0)},j=()=>{a(e=>({...e,state:"visible"})),setTimeout(()=>{a(e=>({...e,animation:"open"}))},10)},h=()=>{a(e=>({...e,animation:"close"})),setTimeout(()=>{a(e=>({...e,state:"invisible"})),M()},T)},O=()=>A.map((e,i)=>F(e,{tabIndex:i+1,key:`button-${i}`,onClick:p=>{Q.delay(()=>{N&&h(),e.props.onClick&&e.props.onClick(p)},0)}}));return B(E,{children:[m("div",{id:b,ref:k,...u,style:{width:n||d.width,top:y?.top,left:y?.left,display:d?.state==="visible"?"block":"none",transition:`all ${T}ms ease-in`,zIndex:50,...u.style},className:I,children:t&&m(U,{className:`${r}-menu__card`,children:m(q,{className:`${r}-menu__card__content`,sx:{py:1},style:{display:"flex",flexDirection:"column",maxHeight:s},children:O()})})}),t&&m("div",{className:`${r}-menu__overlay`,onClick:h})]})}),ae=J(V);function re(){const[l,t]=g(null),n=!!l,f=s=>{t(s?s.currentTarget:null)},o=()=>{t(null)};return[n,l,s=>{if(n){o();return}f(s)}]}export{ae as M,re as u};
|
|
2
|
+
//# sourceMappingURL=useMenu-CA-D2bkv.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useMenu-
|
|
1
|
+
{"version":3,"file":"useMenu-CA-D2bkv.js","sources":["../../../../toolkit/src/debounce/debounce.ts","../../src/navigation/Menu/Menu.tsx","../../src/navigation/Menu/useMenu.ts"],"sourcesContent":["class Debounce {\n private timeout: NodeJS.Timeout | undefined;\n public delay(func: (a?: any) => void, milliseconds = 500) {\n if (!milliseconds) {\n func();\n return;\n }\n\n clearTimeout(this.timeout);\n this.timeout = setTimeout(() => { func(); }, milliseconds);\n }\n}\n\nexport const debounce = new Debounce();\n","import {\n useMemo,\n useState,\n useEffect,\n Children,\n forwardRef,\n type ReactElement,\n type CSSProperties,\n type HTMLAttributes,\n cloneElement\n} from 'react';\n\nimport { prefix } from '@iziui/tokens/web/js';\n\nimport { joinClass } from '@iziui/core/utils';\n\nimport { uuid } from '@iziui/toolkit/uuid';\nimport { debounce } from '@iziui/toolkit/debounce';\n\nimport useListenerResized from '@/hooks/useListenerResized';\nimport { Card, CardContent } from '@/display/Card';\n\nimport createComponent from '../../core/createComponent';\n\nimport '@iziui/styles/components/Menu.scss';\n\ntype Direction = 'left' | 'right' | 'center';\ntype AnimationClass = 'open' | 'close';\ntype State = 'visible' | 'invisible';\ntype Coordinates = { top?: number; right?: number; bottom?: number; left?: number; };\ntype Config = { animation: AnimationClass, state: State; width: CSSProperties['width'] };\n\nexport interface MenuProps extends HTMLAttributes<HTMLDivElement> {\n open: boolean;\n autoClose?: boolean;\n maxHeight?: CSSProperties['maxHeight'];\n direction?: Direction;\n anchorEl: HTMLElement | null;\n width?: CSSProperties['width'];\n children: React.JSX.Element | React.JSX.Element[];\n onClose: (e?: React.MouseEvent<HTMLButtonElement>) => void;\n}\n\nconst Menu = forwardRef<HTMLDivElement, MenuProps>(function Menu({\n open,\n width,\n children,\n anchorEl,\n direction = 'left',\n maxHeight,\n autoClose,\n onClose,\n ...props\n}: MenuProps, ref) {\n const [coordinate, setCoordinate] = useState<Coordinates>();\n const [config, setConfig] = useState<Config>({ state: 'invisible', animation: 'close', width: 'auto' });\n\n const GAP = 16;\n const ANIMATION_DURATION = 150;\n\n const arrayChildren = Children.toArray(children) as ReactElement<any>[];\n\n const id = useMemo(() => uuid(), []);\n\n const classes = joinClass(\n `${prefix}-menu`,\n `${prefix}-menu--${config?.animation}`,\n props.className\n );\n\n useListenerResized(() => changePosition(), [anchorEl]);\n\n useEffect(() => { changePosition(); }, [anchorEl]);\n\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n useEffect(() => { open ? handleOpen() : handleClose(); }, [open]);\n\n const changePosition = () => {\n if (!anchorEl) { return; }\n\n setTimeout(() => {\n let coordinates: Coordinates = {};\n\n const { offsetWidth, offsetHeight, offsetLeft, offsetTop } = anchorEl;\n\n setConfig(prev => ({ ...prev, width: offsetWidth }));\n\n const top = offsetTop + offsetHeight + (GAP / 2);\n\n const el = document.getElementById(id) as HTMLElement;\n\n if (direction === 'center') { coordinates = { top, right: offsetWidth }; }\n\n if (direction === 'left') { coordinates = { top, left: offsetLeft }; }\n\n if (direction === 'right') { coordinates = { top, left: offsetLeft - (el.offsetWidth - offsetWidth) }; }\n\n setCoordinate(coordinates);\n }, 0);\n };\n\n const handleOpen = () => {\n setConfig(prev => ({ ...prev, state: 'visible' }));\n\n setTimeout(() => { setConfig(prev => ({ ...prev, animation: 'open' })); }, 10);\n };\n\n const handleClose = () => {\n setConfig(prev => ({ ...prev, animation: 'close' }));\n\n setTimeout(() => {\n setConfig(prev => ({ ...prev, state: 'invisible' }));\n onClose();\n }, ANIMATION_DURATION);\n };\n\n const renderChildren = () => {\n return arrayChildren.map((child, index) => {\n return cloneElement(child, {\n 'tabIndex': index + 1,\n key: `button-${index}`,\n onClick: (e: React.MouseEvent<HTMLButtonElement>) => {\n debounce.delay(() => {\n\n if (autoClose) { handleClose(); }\n\n if (child.props.onClick) { child.props.onClick(e); }\n }, 0);\n },\n });\n });\n };\n\n return (\n <>\n <div\n id={id}\n ref={ref}\n {...props}\n style={{\n width: width || config.width,\n top: coordinate?.top,\n left: coordinate?.left,\n display: config?.state === 'visible' ? 'block' : 'none',\n transition: `all ${ANIMATION_DURATION}ms ease-in`,\n zIndex: 50,\n ...props.style\n }}\n className={classes}\n >\n {\n open && (\n <Card className={`${prefix}-menu__card`}>\n <CardContent\n className={`${prefix}-menu__card__content`}\n sx={{ py: 1 }}\n style={{ display: 'flex', flexDirection: 'column', maxHeight }}\n >\n {renderChildren()}\n </CardContent>\n </Card>\n )\n }\n </div>\n {open && <div className={`${prefix}-menu__overlay`} onClick={handleClose} />}\n </>\n );\n});\n\nexport default createComponent(Menu);\n","import { useState } from 'react';\n\ntype UseMenu = [\n boolean,\n HTMLElement | null,\n (event?: React.MouseEvent<HTMLButtonElement>) => void,\n];\n\nexport default function useMenu(): UseMenu {\n const [anchorEl, setAnchorEl] = useState<null | HTMLElement>(null);\n\n const open = Boolean(anchorEl);\n\n const handleOpen = (event?: React.MouseEvent<HTMLElement, MouseEvent>) => {\n setAnchorEl(event ? event.currentTarget : null);\n };\n\n const handleClose = () => { setAnchorEl(null); };\n\n const handleToggle = (event?: React.MouseEvent<HTMLElement, MouseEvent>) => {\n if (open) {\n handleClose();\n return;\n }\n\n handleOpen(event);\n };\n\n return [open, anchorEl, handleToggle];\n}\n"],"names":["Debounce","func","milliseconds","debounce","Menu","forwardRef","open","width","children","anchorEl","direction","maxHeight","autoClose","onClose","props","ref","coordinate","setCoordinate","useState","config","setConfig","GAP","ANIMATION_DURATION","arrayChildren","Children","id","useMemo","uuid","classes","joinClass","prefix","useListenerResized","changePosition","useEffect","handleOpen","handleClose","coordinates","offsetWidth","offsetHeight","offsetLeft","offsetTop","prev","top","el","renderChildren","child","index","cloneElement","e","jsxs","Fragment","jsx","Card","CardContent","Menu$1","createComponent","useMenu","setAnchorEl","event"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";const c=require("react/jsx-runtime"),n=require("react"),l=require("./index-DYxwT4uW.cjs"),z=require("./joinClass-Jk3EszKD.cjs"),D=require("./uuid-omnJ9TjZ.cjs"),E=require("./useListenerResized-AwpsZLcP.cjs"),L=require("./Card-
|
|
2
|
-
//# sourceMappingURL=useMenu-
|
|
1
|
+
"use strict";const c=require("react/jsx-runtime"),n=require("react"),l=require("./index-DYxwT4uW.cjs"),z=require("./joinClass-Jk3EszKD.cjs"),D=require("./uuid-omnJ9TjZ.cjs"),E=require("./useListenerResized-AwpsZLcP.cjs"),L=require("./Card-CVrUgBCJ.cjs"),S=require("./CardContent-5JyK0TcD.cjs"),B=require("./createComponent-ixuQW53A.cjs");class P{delay(t,s=500){if(!s){t();return}clearTimeout(this.timeout),this.timeout=setTimeout(()=>{t()},s)}}const W=new P,F=n.forwardRef(function({open:t,width:s,children:f,anchorEl:o,direction:d="left",maxHeight:i,autoClose:_,onClose:$,...m},j){const[g,M]=n.useState(),[h,a]=n.useState({state:"invisible",animation:"close",width:"auto"}),N=16,y=150,k=n.Children.toArray(f),T=n.useMemo(()=>D.uuid(),[]),v=z.joinClass(`${l.prefix}-menu`,`${l.prefix}-menu--${h?.animation}`,m.className);E.useListenerResized(()=>b(),[o]),n.useEffect(()=>{b()},[o]),n.useEffect(()=>{t?w():C()},[t]);const b=()=>{o&&setTimeout(()=>{let e={};const{offsetWidth:r,offsetHeight:p,offsetLeft:q,offsetTop:I}=o;a(O=>({...O,width:r}));const x=I+p+N/2,R=document.getElementById(T);d==="center"&&(e={top:x,right:r}),d==="left"&&(e={top:x,left:q}),d==="right"&&(e={top:x,left:q-(R.offsetWidth-r)}),M(e)},0)},w=()=>{a(e=>({...e,state:"visible"})),setTimeout(()=>{a(e=>({...e,animation:"open"}))},10)},C=()=>{a(e=>({...e,animation:"close"})),setTimeout(()=>{a(e=>({...e,state:"invisible"})),$()},y)},A=()=>k.map((e,r)=>n.cloneElement(e,{tabIndex:r+1,key:`button-${r}`,onClick:p=>{W.delay(()=>{_&&C(),e.props.onClick&&e.props.onClick(p)},0)}}));return c.jsxs(c.Fragment,{children:[c.jsx("div",{id:T,ref:j,...m,style:{width:s||h.width,top:g?.top,left:g?.left,display:h?.state==="visible"?"block":"none",transition:`all ${y}ms ease-in`,zIndex:50,...m.style},className:v,children:t&&c.jsx(L.Card,{className:`${l.prefix}-menu__card`,children:c.jsx(S.CardContent,{className:`${l.prefix}-menu__card__content`,sx:{py:1},style:{display:"flex",flexDirection:"column",maxHeight:i},children:A()})})}),t&&c.jsx("div",{className:`${l.prefix}-menu__overlay`,onClick:C})]})}),G=B.createComponent(F);function H(){const[u,t]=n.useState(null),s=!!u,f=i=>{t(i?i.currentTarget:null)},o=()=>{t(null)};return[s,u,i=>{if(s){o();return}f(i)}]}exports.Menu=G;exports.useMenu=H;
|
|
2
|
+
//# sourceMappingURL=useMenu-eNouSUEO.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useMenu-
|
|
1
|
+
{"version":3,"file":"useMenu-eNouSUEO.cjs","sources":["../../../../toolkit/src/debounce/debounce.ts","../../src/navigation/Menu/Menu.tsx","../../src/navigation/Menu/useMenu.ts"],"sourcesContent":["class Debounce {\n private timeout: NodeJS.Timeout | undefined;\n public delay(func: (a?: any) => void, milliseconds = 500) {\n if (!milliseconds) {\n func();\n return;\n }\n\n clearTimeout(this.timeout);\n this.timeout = setTimeout(() => { func(); }, milliseconds);\n }\n}\n\nexport const debounce = new Debounce();\n","import {\n useMemo,\n useState,\n useEffect,\n Children,\n forwardRef,\n type ReactElement,\n type CSSProperties,\n type HTMLAttributes,\n cloneElement\n} from 'react';\n\nimport { prefix } from '@iziui/tokens/web/js';\n\nimport { joinClass } from '@iziui/core/utils';\n\nimport { uuid } from '@iziui/toolkit/uuid';\nimport { debounce } from '@iziui/toolkit/debounce';\n\nimport useListenerResized from '@/hooks/useListenerResized';\nimport { Card, CardContent } from '@/display/Card';\n\nimport createComponent from '../../core/createComponent';\n\nimport '@iziui/styles/components/Menu.scss';\n\ntype Direction = 'left' | 'right' | 'center';\ntype AnimationClass = 'open' | 'close';\ntype State = 'visible' | 'invisible';\ntype Coordinates = { top?: number; right?: number; bottom?: number; left?: number; };\ntype Config = { animation: AnimationClass, state: State; width: CSSProperties['width'] };\n\nexport interface MenuProps extends HTMLAttributes<HTMLDivElement> {\n open: boolean;\n autoClose?: boolean;\n maxHeight?: CSSProperties['maxHeight'];\n direction?: Direction;\n anchorEl: HTMLElement | null;\n width?: CSSProperties['width'];\n children: React.JSX.Element | React.JSX.Element[];\n onClose: (e?: React.MouseEvent<HTMLButtonElement>) => void;\n}\n\nconst Menu = forwardRef<HTMLDivElement, MenuProps>(function Menu({\n open,\n width,\n children,\n anchorEl,\n direction = 'left',\n maxHeight,\n autoClose,\n onClose,\n ...props\n}: MenuProps, ref) {\n const [coordinate, setCoordinate] = useState<Coordinates>();\n const [config, setConfig] = useState<Config>({ state: 'invisible', animation: 'close', width: 'auto' });\n\n const GAP = 16;\n const ANIMATION_DURATION = 150;\n\n const arrayChildren = Children.toArray(children) as ReactElement<any>[];\n\n const id = useMemo(() => uuid(), []);\n\n const classes = joinClass(\n `${prefix}-menu`,\n `${prefix}-menu--${config?.animation}`,\n props.className\n );\n\n useListenerResized(() => changePosition(), [anchorEl]);\n\n useEffect(() => { changePosition(); }, [anchorEl]);\n\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n useEffect(() => { open ? handleOpen() : handleClose(); }, [open]);\n\n const changePosition = () => {\n if (!anchorEl) { return; }\n\n setTimeout(() => {\n let coordinates: Coordinates = {};\n\n const { offsetWidth, offsetHeight, offsetLeft, offsetTop } = anchorEl;\n\n setConfig(prev => ({ ...prev, width: offsetWidth }));\n\n const top = offsetTop + offsetHeight + (GAP / 2);\n\n const el = document.getElementById(id) as HTMLElement;\n\n if (direction === 'center') { coordinates = { top, right: offsetWidth }; }\n\n if (direction === 'left') { coordinates = { top, left: offsetLeft }; }\n\n if (direction === 'right') { coordinates = { top, left: offsetLeft - (el.offsetWidth - offsetWidth) }; }\n\n setCoordinate(coordinates);\n }, 0);\n };\n\n const handleOpen = () => {\n setConfig(prev => ({ ...prev, state: 'visible' }));\n\n setTimeout(() => { setConfig(prev => ({ ...prev, animation: 'open' })); }, 10);\n };\n\n const handleClose = () => {\n setConfig(prev => ({ ...prev, animation: 'close' }));\n\n setTimeout(() => {\n setConfig(prev => ({ ...prev, state: 'invisible' }));\n onClose();\n }, ANIMATION_DURATION);\n };\n\n const renderChildren = () => {\n return arrayChildren.map((child, index) => {\n return cloneElement(child, {\n 'tabIndex': index + 1,\n key: `button-${index}`,\n onClick: (e: React.MouseEvent<HTMLButtonElement>) => {\n debounce.delay(() => {\n\n if (autoClose) { handleClose(); }\n\n if (child.props.onClick) { child.props.onClick(e); }\n }, 0);\n },\n });\n });\n };\n\n return (\n <>\n <div\n id={id}\n ref={ref}\n {...props}\n style={{\n width: width || config.width,\n top: coordinate?.top,\n left: coordinate?.left,\n display: config?.state === 'visible' ? 'block' : 'none',\n transition: `all ${ANIMATION_DURATION}ms ease-in`,\n zIndex: 50,\n ...props.style\n }}\n className={classes}\n >\n {\n open && (\n <Card className={`${prefix}-menu__card`}>\n <CardContent\n className={`${prefix}-menu__card__content`}\n sx={{ py: 1 }}\n style={{ display: 'flex', flexDirection: 'column', maxHeight }}\n >\n {renderChildren()}\n </CardContent>\n </Card>\n )\n }\n </div>\n {open && <div className={`${prefix}-menu__overlay`} onClick={handleClose} />}\n </>\n );\n});\n\nexport default createComponent(Menu);\n","import { useState } from 'react';\n\ntype UseMenu = [\n boolean,\n HTMLElement | null,\n (event?: React.MouseEvent<HTMLButtonElement>) => void,\n];\n\nexport default function useMenu(): UseMenu {\n const [anchorEl, setAnchorEl] = useState<null | HTMLElement>(null);\n\n const open = Boolean(anchorEl);\n\n const handleOpen = (event?: React.MouseEvent<HTMLElement, MouseEvent>) => {\n setAnchorEl(event ? event.currentTarget : null);\n };\n\n const handleClose = () => { setAnchorEl(null); };\n\n const handleToggle = (event?: React.MouseEvent<HTMLElement, MouseEvent>) => {\n if (open) {\n handleClose();\n return;\n }\n\n handleOpen(event);\n };\n\n return [open, anchorEl, handleToggle];\n}\n"],"names":["Debounce","func","milliseconds","debounce","Menu","forwardRef","open","width","children","anchorEl","direction","maxHeight","autoClose","onClose","props","ref","coordinate","setCoordinate","useState","config","setConfig","GAP","ANIMATION_DURATION","arrayChildren","Children","id","useMemo","uuid","classes","joinClass","prefix","useListenerResized","changePosition","useEffect","handleOpen","handleClose","coordinates","offsetWidth","offsetHeight","offsetLeft","offsetTop","prev","top","el","renderChildren","child","index","cloneElement","e","jsxs","Fragment","jsx","Card","CardContent","createComponent","useMenu","setAnchorEl","event"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("../../chunks/Alert-
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("../../chunks/Alert-MsPKPqJS.cjs");require("react/jsx-runtime");require("react");require("../../chunks/index-DYxwT4uW.cjs");require("../../chunks/joinClass-Jk3EszKD.cjs");require("../../chunks/Stack-Bpv8iA8b.cjs");require("../../chunks/createComponent-ixuQW53A.cjs");require("../../chunks/useTheme-DwBpyW-5.cjs");require("../../chunks/Typography-CPUKMAJT.cjs");require("../../chunks/convertPathToColor-BlQMLS4V.cjs");require("../../chunks/ButtonIcon-Bk1sFlaj.cjs");require("../../chunks/Ripple-Dy4i91j1.cjs");require("../../chunks/Icon-C_2Qoqhh.cjs");exports.default=e.Alert;
|
|
2
2
|
//# sourceMappingURL=index.cjs.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{A}from"../../chunks/Alert-
|
|
1
|
+
import{A}from"../../chunks/Alert-DGWFTr3e.js";import"react/jsx-runtime";import"react";import"../../chunks/index-CZ41y9Hn.js";import"../../chunks/joinClass-anSpaauN.js";import"../../chunks/Stack-BXkZSPdw.js";import"../../chunks/createComponent-C6TL60ri.js";import"../../chunks/useTheme-BkUhhydo.js";import"../../chunks/Typography-BDFesZK7.js";import"../../chunks/convertPathToColor-D2SdAqGh.js";import"../../chunks/ButtonIcon-BP2upur5.js";import"../../chunks/Ripple-Bq9bxg4k.js";import"../../chunks/Icon-BfSirxGe.js";export{A as default};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const o=require("react/jsx-runtime"),t=require("../../chunks/index-DYxwT4uW.cjs"),f=require("../../chunks/joinClass-Jk3EszKD.cjs"),d=require("../../chunks/Ripple-Dy4i91j1.cjs"),g=require("../../chunks/createComponent-
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const o=require("react/jsx-runtime"),t=require("../../chunks/index-DYxwT4uW.cjs"),f=require("../../chunks/joinClass-Jk3EszKD.cjs"),d=require("../../chunks/Ripple-Dy4i91j1.cjs"),g=require("../../chunks/createComponent-ixuQW53A.cjs"),v=require("../../chunks/Icon-C_2Qoqhh.cjs"),x=require("../../chunks/Typography-CPUKMAJT.cjs");require("react");require("../../chunks/useTheme-DwBpyW-5.cjs");require("../../chunks/convertPathToColor-BlQMLS4V.cjs");function s(e){return e.normalize("NFD").trim().toLowerCase().replace(/a-zA-Z0-9_.-+/g,"").replace(/_/g,"").replace(/[^\w\s]/gi,"")}function m(e){const a=e.trim().split(" "),i=a.length===1,r=s(a[0]).charAt(0).toLocaleUpperCase(),c=i?s(a[0]).charAt(1).toLocaleUpperCase():s(a.reverse()[0]).charAt(0).toLocaleUpperCase();return r+c}function y({src:e,alt:a,name:i,size:r=40,variant:c="circular",color:u="primary",icon:l,...n}){const h=f.joinClass(`${t.prefix}-avatar`,`${t.prefix}-avatar--${c}`,`${t.prefix}-avatar--${u}`,e&&`${t.prefix}-avatar--image`,i&&`${t.prefix}-avatar--name`,!e&&!i||l&&`${t.prefix}-avatar--icon`,n.onClick&&`${t.prefix}-avatar--clickable`,n.className),p=()=>e?o.jsx("img",{src:e,alt:a,width:r,height:r,sizes:"100vw",loading:"lazy",style:{width:"100%",height:"auto"}}):i?o.jsx(x.Typography,{style:{fontSize:r/2,color:"currentColor"},children:m(i)}):l||o.jsx(v.Icon,{name:"user",size:r/1.6,style:{color:"currentColor"}});return o.jsxs("div",{...n,style:{width:r,height:r,...n.style},className:h,children:[p(),n.children,n.onClick&&o.jsx(d.Ripple,{})]})}const C=g.createComponent(y);exports.default=C;
|
|
2
2
|
//# sourceMappingURL=index.cjs.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsxs as h,jsx as n}from"react/jsx-runtime";import{p as r}from"../../chunks/index-CZ41y9Hn.js";import{j as u}from"../../chunks/joinClass-anSpaauN.js";import{R as g}from"../../chunks/Ripple-Bq9bxg4k.js";import{c as v}from"../../chunks/createComponent-
|
|
1
|
+
import{jsxs as h,jsx as n}from"react/jsx-runtime";import{p as r}from"../../chunks/index-CZ41y9Hn.js";import{j as u}from"../../chunks/joinClass-anSpaauN.js";import{R as g}from"../../chunks/Ripple-Bq9bxg4k.js";import{c as v}from"../../chunks/createComponent-C6TL60ri.js";import{I as d}from"../../chunks/Icon-BfSirxGe.js";import{T as C}from"../../chunks/Typography-BDFesZK7.js";import"react";import"../../chunks/useTheme-BkUhhydo.js";import"../../chunks/convertPathToColor-D2SdAqGh.js";function s(t){return t.normalize("NFD").trim().toLowerCase().replace(/a-zA-Z0-9_.-+/g,"").replace(/_/g,"").replace(/[^\w\s]/gi,"")}function y(t){const e=t.trim().split(" "),o=e.length===1,a=s(e[0]).charAt(0).toLocaleUpperCase(),l=o?s(e[0]).charAt(1).toLocaleUpperCase():s(e.reverse()[0]).charAt(0).toLocaleUpperCase();return a+l}function $({src:t,alt:e,name:o,size:a=40,variant:l="circular",color:m="primary",icon:c,...i}){const p=u(`${r}-avatar`,`${r}-avatar--${l}`,`${r}-avatar--${m}`,t&&`${r}-avatar--image`,o&&`${r}-avatar--name`,!t&&!o||c&&`${r}-avatar--icon`,i.onClick&&`${r}-avatar--clickable`,i.className),f=()=>t?n("img",{src:t,alt:e,width:a,height:a,sizes:"100vw",loading:"lazy",style:{width:"100%",height:"auto"}}):o?n(C,{style:{fontSize:a/2,color:"currentColor"},children:y(o)}):c||n(d,{name:"user",size:a/1.6,style:{color:"currentColor"}});return h("div",{...i,style:{width:a,height:a,...i.style},className:p,children:[f(),i.children,i.onClick&&n(g,{})]})}const z=v($);export{z as default};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("../../chunks/Box-
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("../../chunks/Box-DX4Re8mw.cjs");require("react/jsx-runtime");require("react");require("../../chunks/createComponent-ixuQW53A.cjs");require("../../chunks/index-DYxwT4uW.cjs");require("../../chunks/useTheme-DwBpyW-5.cjs");exports.default=e.Box;
|
|
2
2
|
//# sourceMappingURL=index.cjs.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{B as e}from"../../chunks/Box-
|
|
1
|
+
import{B as e}from"../../chunks/Box-DV6szmfA.js";import"react/jsx-runtime";import"react";import"../../chunks/createComponent-C6TL60ri.js";import"../../chunks/index-CZ41y9Hn.js";import"../../chunks/useTheme-BkUhhydo.js";export{e as default};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const n=require("react/jsx-runtime"),m=require("react"),e=require("../../chunks/index-DYxwT4uW.cjs"),i=require("../../chunks/joinClass-Jk3EszKD.cjs"),d=require("../../chunks/Ripple-Dy4i91j1.cjs"),_=require("../../chunks/createComponent-ixuQW53A.cjs");require("../../chunks/useTheme-DwBpyW-5.cjs");function j({size:u="medium",color:r="primary",variant:p="contained",startIcon:c,endIcon:a,loading:s,children:$,...o}){const f=i.joinClass(`${e.prefix}-button`,`${e.prefix}-button--${u}`,`${e.prefix}-button--${r}`,`${e.prefix}-button--${r}--${p}`,o.className),l=(t,b)=>m.cloneElement(t,{color:`${r}.contrast`,className:i.joinClass(t.props.className,`${e.prefix}-button__icon`,`${e.prefix}-button__icon--${b}`)}),x=t=>m.cloneElement(t,{className:i.joinClass(t.props.className,`${e.prefix}-button__loading`,`${e.prefix}-button__loading--${u}`),size:"1.1rem"});return n.jsxs("button",{...o,className:f,onClick:t=>!s&&o.onClick?.(t),children:[s?x(s):n.jsxs(n.Fragment,{children:[c&&l(c,"left"),$,a&&l(a,"right")]}),n.jsx(d.Ripple,{})]})}const C=_.createComponent(j);exports.default=C;
|
|
2
2
|
//# sourceMappingURL=index.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../../../src/actions/Button/Button.tsx"],"sourcesContent":["import { type PropsWithChildren, type ButtonHTMLAttributes, cloneElement } from 'react';\n\nimport { prefix } from '@iziui/tokens/web/js';\n\nimport type { Colors, Size } from '@iziui/core/theme';\nimport { joinClass } from '@iziui/core/utils';\n\nimport type { LoadingProps } from '@/feedback/Loading';\n\nimport type { IconProps } from '../../display/Icon';\nimport Ripple from '../Ripple';\nimport createComponent from '../../core/createComponent';\n\nimport '@iziui/styles/components/Button.scss';\n\nexport interface ButtonProps extends PropsWithChildren<ButtonHTMLAttributes<HTMLButtonElement>> {\n size?: Size;\n color?: Colors;\n endIcon?: React.JSX.Element;\n startIcon?: React.JSX.Element;\n loading?: React.JSX.Element | boolean;\n variant?: 'contained' | 'outlined' | 'text';\n};\nfunction Button({\n size = 'medium',\n color = 'primary',\n variant = 'contained',\n startIcon,\n endIcon,\n loading,\n children,\n ...props\n}: ButtonProps) {\n const cls = joinClass(\n `${prefix}-button`,\n `${prefix}-button--${size}`,\n `${prefix}-button--${color}`,\n `${prefix}-button--${color}--${variant}`,\n props.className\n );\n\n const renderIcon = (icon: React.JSX.Element, direction: 'left' | 'right') => {\n return cloneElement<IconProps>(icon, {\n color: `${color}.contrast`,\n className: joinClass(icon.props.className, `${prefix}-button__icon`, `${prefix}-button__icon--${direction}`)\n });\n };\n\n const renderLoading = (loading: React.JSX.Element) => {\n return cloneElement<LoadingProps>(loading, {\n className: joinClass(loading.props.className, `${prefix}-button__loading`, `${prefix}-button__loading--${size}`),\n size: '1.1rem',\n });\n };\n\n
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../../src/actions/Button/Button.tsx"],"sourcesContent":["import { type PropsWithChildren, type ButtonHTMLAttributes, cloneElement } from 'react';\n\nimport { prefix } from '@iziui/tokens/web/js';\n\nimport type { Colors, Size } from '@iziui/core/theme';\nimport { joinClass } from '@iziui/core/utils';\n\nimport type { LoadingProps } from '@/feedback/Loading';\n\nimport type { IconProps } from '../../display/Icon';\nimport Ripple from '../Ripple';\nimport createComponent from '../../core/createComponent';\n\nimport '@iziui/styles/components/Button.scss';\n\nexport interface ButtonProps extends PropsWithChildren<ButtonHTMLAttributes<HTMLButtonElement>> {\n size?: Size;\n color?: Colors;\n endIcon?: React.JSX.Element;\n startIcon?: React.JSX.Element;\n loading?: React.JSX.Element | boolean;\n variant?: 'contained' | 'outlined' | 'text';\n};\nfunction Button({\n size = 'medium',\n color = 'primary',\n variant = 'contained',\n startIcon,\n endIcon,\n loading,\n children,\n ...props\n}: ButtonProps) {\n const cls = joinClass(\n `${prefix}-button`,\n `${prefix}-button--${size}`,\n `${prefix}-button--${color}`,\n `${prefix}-button--${color}--${variant}`,\n props.className\n );\n\n const renderIcon = (icon: React.JSX.Element, direction: 'left' | 'right') => {\n return cloneElement<IconProps>(icon, {\n color: `${color}.contrast`,\n className: joinClass(icon.props.className, `${prefix}-button__icon`, `${prefix}-button__icon--${direction}`)\n });\n };\n\n const renderLoading = (loading: React.JSX.Element) => {\n return cloneElement<LoadingProps>(loading, {\n className: joinClass(loading.props.className, `${prefix}-button__loading`, `${prefix}-button__loading--${size}`),\n size: '1.1rem',\n });\n };\n\n return (\n <button\n {...props}\n className={cls}\n onClick={(e) => !loading && props.onClick?.(e)}\n >\n {\n loading ? renderLoading(loading as React.JSX.Element) : (\n <>\n {startIcon && renderIcon(startIcon, 'left')}\n {children}\n {endIcon && renderIcon(endIcon, 'right')}\n </>\n )\n }\n <Ripple />\n </button>\n );\n}\n\nexport default createComponent(Button);"],"names":["Button","size","color","variant","startIcon","endIcon","loading","children","props","cls","joinClass","prefix","renderIcon","icon","direction","cloneElement","renderLoading","jsxs","e","Fragment","Ripple","Button_default","createComponent"],"mappings":"qZAuBA,SAASA,EAAO,CACd,KAAAC,EAAO,SACP,MAAAC,EAAQ,UACR,QAAAC,EAAU,YACV,UAAAC,EACA,QAAAC,EACA,QAAAC,EACA,SAAAC,EACA,GAAGC,CACL,EAAgB,CACd,MAAMC,EAAMC,EAAAA,UACV,GAAGC,EAAAA,MAAM,UACT,GAAGA,EAAAA,MAAM,YAAYV,CAAI,GACzB,GAAGU,EAAAA,MAAM,YAAYT,CAAK,GAC1B,GAAGS,EAAAA,MAAM,YAAYT,CAAK,KAAKC,CAAO,GACtCK,EAAM,SAAA,EAGFI,EAAa,CAACC,EAAyBC,IACpCC,EAAAA,aAAwBF,EAAM,CACnC,MAAO,GAAGX,CAAK,YACf,UAAWQ,EAAAA,UAAUG,EAAK,MAAM,UAAW,GAAGF,QAAM,gBAAiB,GAAGA,EAAAA,MAAM,kBAAkBG,CAAS,EAAE,CAAA,CAC5G,EAGGE,EAAiBV,GACdS,EAAAA,aAA2BT,EAAS,CACzC,UAAWI,EAAAA,UAAUJ,EAAQ,MAAM,UAAW,GAAGK,EAAAA,MAAM,mBAAoB,GAAGA,EAAAA,MAAM,qBAAqBV,CAAI,EAAE,EAC/G,KAAM,QAAA,CACP,EAGH,OACEgB,EAAAA,KAAC,SAAA,CACE,GAAGT,EACJ,UAAWC,EACX,QAAUS,GAAM,CAACZ,GAAWE,EAAM,UAAUU,CAAC,EAG3C,SAAA,CAAAZ,EAAUU,EAAcV,CAA4B,EAClDW,EAAAA,KAAAE,EAAAA,SAAA,CACG,SAAA,CAAAf,GAAaQ,EAAWR,EAAW,MAAM,EACzCG,EACAF,GAAWO,EAAWP,EAAS,OAAO,CAAA,EACzC,QAGHe,EAAAA,OAAA,CAAA,CAAO,CAAA,CAAA,CAAA,CAGd,CAEA,MAAAC,EAAeC,EAAAA,gBAAgBtB,CAAM"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsxs as
|
|
1
|
+
import{jsxs as u,Fragment as d,jsx as _}from"react/jsx-runtime";import{cloneElement as l}from"react";import{p as t}from"../../chunks/index-CZ41y9Hn.js";import{j as s}from"../../chunks/joinClass-anSpaauN.js";import{R as N}from"../../chunks/Ripple-Bq9bxg4k.js";import{c as j}from"../../chunks/createComponent-C6TL60ri.js";import"../../chunks/useTheme-BkUhhydo.js";function x({size:m="medium",color:n="primary",variant:$="contained",startIcon:a,endIcon:i,loading:r,children:p,...e}){const f=s(`${t}-button`,`${t}-button--${m}`,`${t}-button--${n}`,`${t}-button--${n}--${$}`,e.className),c=(o,b)=>l(o,{color:`${n}.contrast`,className:s(o.props.className,`${t}-button__icon`,`${t}-button__icon--${b}`)});return u("button",{...e,className:f,onClick:o=>!r&&e.onClick?.(o),children:[r?(o=>l(o,{className:s(o.props.className,`${t}-button__loading`,`${t}-button__loading--${m}`),size:"1.1rem"}))(r):u(d,{children:[a&&c(a,"left"),p,i&&c(i,"right")]}),_(N,{})]})}const E=j(x);export{E as default};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/actions/Button/Button.tsx"],"sourcesContent":["import { type PropsWithChildren, type ButtonHTMLAttributes, cloneElement } from 'react';\n\nimport { prefix } from '@iziui/tokens/web/js';\n\nimport type { Colors, Size } from '@iziui/core/theme';\nimport { joinClass } from '@iziui/core/utils';\n\nimport type { LoadingProps } from '@/feedback/Loading';\n\nimport type { IconProps } from '../../display/Icon';\nimport Ripple from '../Ripple';\nimport createComponent from '../../core/createComponent';\n\nimport '@iziui/styles/components/Button.scss';\n\nexport interface ButtonProps extends PropsWithChildren<ButtonHTMLAttributes<HTMLButtonElement>> {\n size?: Size;\n color?: Colors;\n endIcon?: React.JSX.Element;\n startIcon?: React.JSX.Element;\n loading?: React.JSX.Element | boolean;\n variant?: 'contained' | 'outlined' | 'text';\n};\nfunction Button({\n size = 'medium',\n color = 'primary',\n variant = 'contained',\n startIcon,\n endIcon,\n loading,\n children,\n ...props\n}: ButtonProps) {\n const cls = joinClass(\n `${prefix}-button`,\n `${prefix}-button--${size}`,\n `${prefix}-button--${color}`,\n `${prefix}-button--${color}--${variant}`,\n props.className\n );\n\n const renderIcon = (icon: React.JSX.Element, direction: 'left' | 'right') => {\n return cloneElement<IconProps>(icon, {\n color: `${color}.contrast`,\n className: joinClass(icon.props.className, `${prefix}-button__icon`, `${prefix}-button__icon--${direction}`)\n });\n };\n\n const renderLoading = (loading: React.JSX.Element) => {\n return cloneElement<LoadingProps>(loading, {\n className: joinClass(loading.props.className, `${prefix}-button__loading`, `${prefix}-button__loading--${size}`),\n size: '1.1rem',\n });\n };\n\n
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/actions/Button/Button.tsx"],"sourcesContent":["import { type PropsWithChildren, type ButtonHTMLAttributes, cloneElement } from 'react';\n\nimport { prefix } from '@iziui/tokens/web/js';\n\nimport type { Colors, Size } from '@iziui/core/theme';\nimport { joinClass } from '@iziui/core/utils';\n\nimport type { LoadingProps } from '@/feedback/Loading';\n\nimport type { IconProps } from '../../display/Icon';\nimport Ripple from '../Ripple';\nimport createComponent from '../../core/createComponent';\n\nimport '@iziui/styles/components/Button.scss';\n\nexport interface ButtonProps extends PropsWithChildren<ButtonHTMLAttributes<HTMLButtonElement>> {\n size?: Size;\n color?: Colors;\n endIcon?: React.JSX.Element;\n startIcon?: React.JSX.Element;\n loading?: React.JSX.Element | boolean;\n variant?: 'contained' | 'outlined' | 'text';\n};\nfunction Button({\n size = 'medium',\n color = 'primary',\n variant = 'contained',\n startIcon,\n endIcon,\n loading,\n children,\n ...props\n}: ButtonProps) {\n const cls = joinClass(\n `${prefix}-button`,\n `${prefix}-button--${size}`,\n `${prefix}-button--${color}`,\n `${prefix}-button--${color}--${variant}`,\n props.className\n );\n\n const renderIcon = (icon: React.JSX.Element, direction: 'left' | 'right') => {\n return cloneElement<IconProps>(icon, {\n color: `${color}.contrast`,\n className: joinClass(icon.props.className, `${prefix}-button__icon`, `${prefix}-button__icon--${direction}`)\n });\n };\n\n const renderLoading = (loading: React.JSX.Element) => {\n return cloneElement<LoadingProps>(loading, {\n className: joinClass(loading.props.className, `${prefix}-button__loading`, `${prefix}-button__loading--${size}`),\n size: '1.1rem',\n });\n };\n\n return (\n <button\n {...props}\n className={cls}\n onClick={(e) => !loading && props.onClick?.(e)}\n >\n {\n loading ? renderLoading(loading as React.JSX.Element) : (\n <>\n {startIcon && renderIcon(startIcon, 'left')}\n {children}\n {endIcon && renderIcon(endIcon, 'right')}\n </>\n )\n }\n <Ripple />\n </button>\n );\n}\n\nexport default createComponent(Button);"],"names":["Button","size","color","variant","startIcon","endIcon","loading","children","props","cls","joinClass","prefix","renderIcon","icon","direction","cloneElement","jsxs","e","Fragment","Ripple","Button_default","createComponent"],"mappings":"0WAuBA,SAASA,EAAO,CACd,KAAAC,EAAO,SACP,MAAAC,EAAQ,UACR,QAAAC,EAAU,YACV,UAAAC,EACA,QAAAC,EACA,QAAAC,EACA,SAAAC,EACA,GAAGC,CACL,EAAgB,CACd,MAAMC,EAAMC,EACV,GAAGC,CAAM,UACT,GAAGA,CAAM,YAAYV,CAAI,GACzB,GAAGU,CAAM,YAAYT,CAAK,GAC1B,GAAGS,CAAM,YAAYT,CAAK,KAAKC,CAAO,GACtCK,EAAM,SAAA,EAGFI,EAAa,CAACC,EAAyBC,IACpCC,EAAwBF,EAAM,CACnC,MAAO,GAAGX,CAAK,YACf,UAAWQ,EAAUG,EAAK,MAAM,UAAW,GAAGF,CAAM,gBAAiB,GAAGA,CAAM,kBAAkBG,CAAS,EAAE,CAAA,CAC5G,EAUH,OACEE,EAAC,SAAA,CACE,GAAGR,EACJ,UAAWC,EACX,QAAUQ,GAAM,CAACX,GAAWE,EAAM,UAAUS,CAAC,EAG3C,SAAA,CAAAX,GAdiBA,GACdS,EAA2BT,EAAS,CACzC,UAAWI,EAAUJ,EAAQ,MAAM,UAAW,GAAGK,CAAM,mBAAoB,GAAGA,CAAM,qBAAqBV,CAAI,EAAE,EAC/G,KAAM,QAAA,CACP,GAU2BK,CAA4B,EAClDU,EAAAE,EAAA,CACG,SAAA,CAAAd,GAAaQ,EAAWR,EAAW,MAAM,EACzCG,EACAF,GAAWO,EAAWP,EAAS,OAAO,CAAA,EACzC,IAGHc,EAAA,CAAA,CAAO,CAAA,CAAA,CAAA,CAGd,CAEA,MAAAC,EAAeC,EAAgBrB,CAAM"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("../../chunks/ButtonIcon-
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("../../chunks/ButtonIcon-Bk1sFlaj.cjs");require("react/jsx-runtime");require("react");require("../../chunks/index-DYxwT4uW.cjs");require("../../chunks/joinClass-Jk3EszKD.cjs");require("../../chunks/convertPathToColor-BlQMLS4V.cjs");require("../../chunks/useTheme-DwBpyW-5.cjs");require("../../chunks/Ripple-Dy4i91j1.cjs");require("../../chunks/createComponent-ixuQW53A.cjs");exports.default=e.ButtonIcon;
|
|
2
2
|
//# sourceMappingURL=index.cjs.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{B as l}from"../../chunks/ButtonIcon-
|
|
1
|
+
import{B as l}from"../../chunks/ButtonIcon-BP2upur5.js";import"react/jsx-runtime";import"react";import"../../chunks/index-CZ41y9Hn.js";import"../../chunks/joinClass-anSpaauN.js";import"../../chunks/convertPathToColor-D2SdAqGh.js";import"../../chunks/useTheme-BkUhhydo.js";import"../../chunks/Ripple-Bq9bxg4k.js";import"../../chunks/createComponent-C6TL60ri.js";export{l as default};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("../../chunks/Card-
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("../../chunks/Card-CVrUgBCJ.cjs"),r=require("../../chunks/CardContent-5JyK0TcD.cjs");require("react/jsx-runtime");require("../../chunks/index-DYxwT4uW.cjs");require("../../chunks/joinClass-Jk3EszKD.cjs");require("../../chunks/Ripple-Dy4i91j1.cjs");require("react");require("../../chunks/createComponent-ixuQW53A.cjs");require("../../chunks/useTheme-DwBpyW-5.cjs");exports.Card=e.Card;exports.CardContent=r.CardContent;
|
|
2
2
|
//# sourceMappingURL=index.cjs.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{C as d}from"../../chunks/Card-
|
|
1
|
+
import{C as d}from"../../chunks/Card-BjoXz5bX.js";import{C as n}from"../../chunks/CardContent-srKirxQF.js";import"react/jsx-runtime";import"../../chunks/index-CZ41y9Hn.js";import"../../chunks/joinClass-anSpaauN.js";import"../../chunks/Ripple-Bq9bxg4k.js";import"react";import"../../chunks/createComponent-C6TL60ri.js";import"../../chunks/useTheme-BkUhhydo.js";export{d as Card,n as CardContent};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const r=require("react/jsx-runtime"),e=require("../../chunks/index-DYxwT4uW.cjs"),x=require("../../chunks/joinClass-Jk3EszKD.cjs"),h=require("../../chunks/Stack-
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const r=require("react/jsx-runtime"),e=require("../../chunks/index-DYxwT4uW.cjs"),x=require("../../chunks/joinClass-Jk3EszKD.cjs"),h=require("../../chunks/Stack-Bpv8iA8b.cjs"),b=require("../../chunks/createComponent-ixuQW53A.cjs");require("react");require("../../chunks/useTheme-DwBpyW-5.cjs");function k({label:n,name:c,color:t="primary",checked:s,disabled:i,error:l,helperText:o,...u}){const a=x.joinClass(`${e.prefix}-checkbox`,`${e.prefix}-checkbox--${t}`,s&&`${e.prefix}-checkbox--${t}--checked`,i&&`${e.prefix}-checkbox--disabled`),p=x.joinClass(`${e.prefix}-checkbox__helper-text`,o&&`${e.prefix}-checkbox__helper-text--visible`,l&&`${e.prefix}-checkbox__helper-text--error`);return r.jsxs(h.Stack,{gap:4,children:[r.jsxs("label",{htmlFor:c,className:a,children:[r.jsx("input",{type:"checkbox",...u,id:c,name:c,checked:s,disabled:i}),n]}),r.jsx("span",{className:p,children:o})]})}const f=b.createComponent(k);exports.default=f;
|
|
2
2
|
//# sourceMappingURL=index.cjs.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsxs as p,jsx as i}from"react/jsx-runtime";import{p as e}from"../../chunks/index-CZ41y9Hn.js";import{j as h}from"../../chunks/joinClass-anSpaauN.js";import{S as n}from"../../chunks/Stack-
|
|
1
|
+
import{jsxs as p,jsx as i}from"react/jsx-runtime";import{p as e}from"../../chunks/index-CZ41y9Hn.js";import{j as h}from"../../chunks/joinClass-anSpaauN.js";import{S as n}from"../../chunks/Stack-BXkZSPdw.js";import{c as k}from"../../chunks/createComponent-C6TL60ri.js";import"react";import"../../chunks/useTheme-BkUhhydo.js";function f({label:x,name:o,color:c="primary",checked:r,disabled:t,error:a,helperText:s,...l}){const m=h(`${e}-checkbox`,`${e}-checkbox--${c}`,r&&`${e}-checkbox--${c}--checked`,t&&`${e}-checkbox--disabled`),b=h(`${e}-checkbox__helper-text`,s&&`${e}-checkbox__helper-text--visible`,a&&`${e}-checkbox__helper-text--error`);return p(n,{gap:4,children:[p("label",{htmlFor:o,className:m,children:[i("input",{type:"checkbox",...l,id:o,name:o,checked:r,disabled:t}),x]}),i("span",{className:b,children:s})]})}const N=k(f);export{N as default};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const C=require("react/jsx-runtime"),c=require("react"),x=require("../../chunks/index-DYxwT4uW.cjs"),b=require("../../chunks/joinClass-Jk3EszKD.cjs"),q=require("../../chunks/Stack-
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const C=require("react/jsx-runtime"),c=require("react"),x=require("../../chunks/index-DYxwT4uW.cjs"),b=require("../../chunks/joinClass-Jk3EszKD.cjs"),q=require("../../chunks/Stack-Bpv8iA8b.cjs"),E=require("../../chunks/createComponent-ixuQW53A.cjs");require("../../chunks/useTheme-DwBpyW-5.cjs");let g=0;function j({children:d,values:r,onChange:a,className:l}){const i=++g,n=c.Children.toArray(d),k=b.joinClass(`${x.prefix}-checkbox-group`,l),[s,p]=c.useState(n.map(e=>({id:e.props.name,value:e.props.value,checked:r?r.some(o=>o===e.props.name):!1}))),m=c.useCallback(()=>n.map((e,o)=>{const f=e.props.name;return c.cloneElement(e,{key:o,name:`${e.props.name}-${i}`,checked:e.props.checked||s[o].checked,onChange:h=>{const u=s.map(t=>t.id===f?{...t,checked:h.target.checked}:t);a&&a(u),p(u)}})}),[r,s]);return c.useEffect(()=>{p(n.map(e=>({id:e.props.name,value:e.props.value,checked:r?r.some(o=>o===e.props.name):!1})))},[r]),C.jsx(q.Stack,{gap:2,className:k,children:m()})}const y=E.createComponent(j);exports.default=y;
|
|
2
2
|
//# sourceMappingURL=index.cjs.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as i}from"react/jsx-runtime";import{Children as C,useState as x,useCallback as b,cloneElement as E,useEffect as y}from"react";import{p as g}from"../../chunks/index-CZ41y9Hn.js";import{j}from"../../chunks/joinClass-anSpaauN.js";import{S}from"../../chunks/Stack-
|
|
1
|
+
import{jsx as i}from"react/jsx-runtime";import{Children as C,useState as x,useCallback as b,cloneElement as E,useEffect as y}from"react";import{p as g}from"../../chunks/index-CZ41y9Hn.js";import{j}from"../../chunks/joinClass-anSpaauN.js";import{S}from"../../chunks/Stack-BXkZSPdw.js";import{c as $}from"../../chunks/createComponent-C6TL60ri.js";import"../../chunks/useTheme-BkUhhydo.js";let A=0;function G({children:m,values:r,onChange:a,className:f}){const k=++A,c=C.toArray(m),d=j(`${g}-checkbox-group`,f),[p,n]=x(c.map(e=>({id:e.props.name,value:e.props.value,checked:r?r.some(o=>o===e.props.name):!1}))),u=b(()=>c.map((e,o)=>{const h=e.props.name;return E(e,{key:o,name:`${e.props.name}-${k}`,checked:e.props.checked||p[o].checked,onChange:l=>{const t=p.map(s=>s.id===h?{...s,checked:l.target.checked}:s);a&&a(t),n(t)}})}),[r,p]);return y(()=>{n(c.map(e=>({id:e.props.name,value:e.props.value,checked:r?r.some(o=>o===e.props.name):!1})))},[r]),i(S,{gap:2,className:d,children:u()})}const I=$(G);export{I as default};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|