{"version":3,"file":"Form.mjs","names":["Form","AntForm"],"sources":["../../src/Form/Form.tsx"],"sourcesContent":["'use client';\n\nimport { Form as AntForm } from 'antd';\nimport { cx, useResponsive } from 'antd-style';\nimport { isUndefined } from 'es-toolkit/compat';\nimport { memo, useCallback, useState } from 'react';\n\nimport FormFlatGroup from './components/FormFlatGroup';\nimport FormGroup from './components/FormGroup';\nimport FormItem from './components/FormItem';\nimport { FormProvider } from './components/FormProvider';\nimport { variants } from './style';\nimport type { FormGroupItemType, FormItemProps, FormProps } from './type';\n\nconst Form = memo<FormProps>(\n  ({\n    className,\n    itemMinWidth,\n    footer,\n    form,\n    items = [],\n    children,\n    itemsType = 'group',\n    itemVariant,\n    variant = 'borderless',\n    classNames,\n    styles: customStyles,\n    gap,\n    style,\n    collapsible,\n    defaultActiveKey,\n    initialValues,\n    activeKey,\n    onCollapse,\n    onFinish,\n    ref,\n    layout,\n    ...rest\n  }) => {\n    const { mobile } = useResponsive();\n    const [submitLoading, setSubmitLoading] = useState(false);\n\n    const mapFlat = useCallback(\n      (item: FormItemProps, itemIndex: number) => (\n        <FormItem\n          className={classNames?.item}\n          divider={itemIndex !== 0}\n          key={itemIndex}\n          minWidth={itemMinWidth}\n          style={customStyles?.item}\n          variant={variant}\n          {...item}\n        />\n      ),\n      [itemMinWidth, variant, classNames, customStyles],\n    );\n\n    const mapTree = useCallback(\n      (group: FormGroupItemType, groupIndex: number) => {\n        const key = group?.key || groupIndex;\n        return (\n          <FormGroup\n            active={activeKey && group?.key ? activeKey.includes(key) : undefined}\n            className={classNames?.group}\n            classNames={classNames}\n            collapsible={isUndefined(group.collapsible) ? collapsible : group.collapsible}\n            extra={group?.extra}\n            icon={group?.icon}\n            key={key}\n            keyValue={key}\n            style={customStyles?.group}\n            styles={customStyles}\n            title={group.title}\n            variant={group?.variant || variant}\n            defaultActive={\n              defaultActiveKey && group?.key ? defaultActiveKey.includes(key) : group?.defaultActive\n            }\n            onCollapse={(active) => {\n              let keys: (string | number)[] = activeKey || defaultActiveKey || [];\n              keys = keys.filter((k) => k !== key);\n              onCollapse?.(active ? [...keys, key] : keys);\n            }}\n          >\n            {Array.isArray(group.children)\n              ? group.children.filter((item) => !item.hidden).map((item, i) => mapFlat(item, i))\n              : group.children}\n          </FormGroup>\n        );\n      },\n      [activeKey, collapsible, defaultActiveKey, onCollapse, variant, classNames, customStyles],\n    );\n\n    return (\n      <FormProvider\n        config={{\n          form,\n          initialValues,\n          submitLoading,\n        }}\n      >\n        <AntForm\n          className={cx(variants({ variant }), className)}\n          colon={false}\n          form={form}\n          initialValues={initialValues}\n          layout={layout || (mobile ? 'vertical' : 'horizontal')}\n          ref={ref}\n          variant={itemVariant}\n          style={{\n            gap,\n            ...style,\n          }}\n          onFinish={async (...finishProps) => {\n            if (!onFinish) return;\n            setSubmitLoading(true);\n            await onFinish(...finishProps);\n            setSubmitLoading(false);\n          }}\n          {...rest}\n        >\n          {items && items?.length > 0 ? (\n            itemsType === 'group' ? (\n              (items as FormGroupItemType[])?.map((item, i) => mapTree(item, i))\n            ) : (\n              <FormFlatGroup\n                className={classNames?.group}\n                style={customStyles?.group}\n                variant={variant}\n              >\n                {(items as FormItemProps[])\n                  ?.filter((item) => !item.hidden)\n                  .map((item, i) => mapFlat(item, i))}\n              </FormFlatGroup>\n            )\n          ) : undefined}\n          {children}\n          {footer}\n        </AntForm>\n      </FormProvider>\n    );\n  },\n);\n\nForm.displayName = 'Form';\n\nexport default Form;\n"],"mappings":";;;;;;;;;;;;AAcA,MAAMA,SAAO,MACV,EACC,WACA,cACA,QACA,MACA,QAAQ,EAAE,EACV,UACA,YAAY,SACZ,aACA,UAAU,cACV,YACA,QAAQ,cACR,KACA,OACA,aACA,kBACA,eACA,WACA,YACA,UACA,KACA,QACA,GAAG,WACC;CACJ,MAAM,EAAE,WAAW,eAAe;CAClC,MAAM,CAAC,eAAe,oBAAoB,SAAS,MAAM;CAEzD,MAAM,UAAU,aACb,MAAqB,cACpB,oBAAC,UAAD;EACE,WAAW,YAAY;EACvB,SAAS,cAAc;EAEvB,UAAU;EACV,OAAO,cAAc;EACZ;EACT,GAAI;EACJ,EALK,UAKL,EAEJ;EAAC;EAAc;EAAS;EAAY;EAAa,CAClD;CAED,MAAM,UAAU,aACb,OAA0B,eAAuB;EAChD,MAAM,MAAM,OAAO,OAAO;AAC1B,SACE,oBAAC,WAAD;GACE,QAAQ,aAAa,OAAO,MAAM,UAAU,SAAS,IAAI,GAAG,KAAA;GAC5D,WAAW,YAAY;GACX;GACZ,aAAa,YAAY,MAAM,YAAY,GAAG,cAAc,MAAM;GAClE,OAAO,OAAO;GACd,MAAM,OAAO;GAEb,UAAU;GACV,OAAO,cAAc;GACrB,QAAQ;GACR,OAAO,MAAM;GACb,SAAS,OAAO,WAAW;GAC3B,eACE,oBAAoB,OAAO,MAAM,iBAAiB,SAAS,IAAI,GAAG,OAAO;GAE3E,aAAa,WAAW;IACtB,IAAI,OAA4B,aAAa,oBAAoB,EAAE;AACnE,WAAO,KAAK,QAAQ,MAAM,MAAM,IAAI;AACpC,iBAAa,SAAS,CAAC,GAAG,MAAM,IAAI,GAAG,KAAK;;aAG7C,MAAM,QAAQ,MAAM,SAAS,GAC1B,MAAM,SAAS,QAAQ,SAAS,CAAC,KAAK,OAAO,CAAC,KAAK,MAAM,MAAM,QAAQ,MAAM,EAAE,CAAC,GAChF,MAAM;GACA,EAlBL,IAkBK;IAGhB;EAAC;EAAW;EAAa;EAAkB;EAAY;EAAS;EAAY;EAAa,CAC1F;AAED,QACE,oBAAC,cAAD;EACE,QAAQ;GACN;GACA;GACA;GACD;YAED,qBAACC,MAAD;GACE,WAAW,GAAG,SAAS,EAAE,SAAS,CAAC,EAAE,UAAU;GAC/C,OAAO;GACD;GACS;GACf,QAAQ,WAAW,SAAS,aAAa;GACpC;GACL,SAAS;GACT,OAAO;IACL;IACA,GAAG;IACJ;GACD,UAAU,OAAO,GAAG,gBAAgB;AAClC,QAAI,CAAC,SAAU;AACf,qBAAiB,KAAK;AACtB,UAAM,SAAS,GAAG,YAAY;AAC9B,qBAAiB,MAAM;;GAEzB,GAAI;aAlBN;IAoBG,SAAS,OAAO,SAAS,IACxB,cAAc,UACX,OAA+B,KAAK,MAAM,MAAM,QAAQ,MAAM,EAAE,CAAC,GAElE,oBAAC,eAAD;KACE,WAAW,YAAY;KACvB,OAAO,cAAc;KACZ;eAEP,OACE,QAAQ,SAAS,CAAC,KAAK,OAAO,CAC/B,KAAK,MAAM,MAAM,QAAQ,MAAM,EAAE,CAAC;KACvB,CAAA,GAEhB,KAAA;IACH;IACA;IACO;;EACG,CAAA;EAGpB;AAED,OAAK,cAAc"}