{"version":3,"file":"List.mjs","names":[],"sources":["../../../src/base-ui/List/List.tsx"],"sourcesContent":["'use client';\n\nimport { cx } from 'antd-style';\nimport { type Key, memo, type MouseEvent, useState } from 'react';\n\nimport ListRow from './ListRow';\nimport { styles } from './style';\nimport type { ListDividerType, ListItem, ListItemType, ListProps } from './type';\n\nconst isDivider = (item: ListItem): item is ListDividerType => item.type === 'divider';\n\nconst variantClass = {\n  borderless: undefined,\n  filled: styles.filled,\n  outlined: styles.outlined,\n};\n\nconst List = memo<ListProps>(\n  ({\n    activeKey,\n    className,\n    classNames,\n    compact = false,\n    defaultActiveKey,\n    items,\n    onActiveChange,\n    onClick,\n    ref,\n    selectable = false,\n    styles: customStyles,\n    variant = 'borderless',\n    ...rest\n  }) => {\n    const [innerKey, setInnerKey] = useState<Key | undefined>(defaultActiveKey);\n    const currentKey = activeKey === undefined ? innerKey : activeKey;\n\n    const handleSelect = (item: ListItemType, domEvent: MouseEvent<HTMLElement>) => {\n      const info = { domEvent, item, key: item.key };\n      item.onClick?.(info);\n      onClick?.(info);\n\n      if (!selectable || item.key === currentKey) return;\n      if (activeKey === undefined) setInnerKey(item.key);\n      onActiveChange?.(item.key);\n    };\n\n    return (\n      <ul\n        className={cx(styles.root, variantClass[variant], compact && styles.compact, className)}\n        ref={ref}\n        role=\"list\"\n        {...rest}\n      >\n        {items.map((item, index) =>\n          isDivider(item) ? (\n            <li className={styles.divider} key={item.key ?? `divider-${index}`} role=\"separator\" />\n          ) : (\n            <ListRow\n              active={currentKey !== undefined && currentKey !== null && item.key === currentKey}\n              classNames={classNames}\n              item={item}\n              key={item.key}\n              styles={customStyles}\n              onSelect={handleSelect}\n            />\n          ),\n        )}\n      </ul>\n    );\n  },\n);\n\nList.displayName = 'List';\n\nexport default List;\n"],"mappings":";;;;;;;AASA,MAAM,aAAa,SAA4C,KAAK,SAAS;AAE7E,MAAM,eAAe;CACnB,YAAY,KAAA;CACZ,QAAQ,OAAO;CACf,UAAU,OAAO;AACnB;AAEA,MAAM,OAAO,MACV,EACC,WACA,WACA,YACA,UAAU,OACV,kBACA,OACA,gBACA,SACA,KACA,aAAa,OACb,QAAQ,cACR,UAAU,cACV,GAAG,WACC;CACJ,MAAM,CAAC,UAAU,eAAe,SAA0B,gBAAgB;CAC1E,MAAM,aAAa,cAAc,KAAA,IAAY,WAAW;CAExD,MAAM,gBAAgB,MAAoB,aAAsC;EAC9E,MAAM,OAAO;GAAE;GAAU;GAAM,KAAK,KAAK;EAAI;EAC7C,KAAK,UAAU,IAAI;EACnB,UAAU,IAAI;EAEd,IAAI,CAAC,cAAc,KAAK,QAAQ,YAAY;EAC5C,IAAI,cAAc,KAAA,GAAW,YAAY,KAAK,GAAG;EACjD,iBAAiB,KAAK,GAAG;CAC3B;CAEA,OACE,oBAAC,MAAD;EACE,WAAW,GAAG,OAAO,MAAM,aAAa,UAAU,WAAW,OAAO,SAAS,SAAS;EACjF;EACL,MAAK;EACL,GAAI;EAEH,UAAA,MAAM,KAAK,MAAM,UAChB,UAAU,IAAI,IACZ,oBAAC,MAAD;GAAI,WAAW,OAAO;GAA8C,MAAK;EAAa,GAAlD,KAAK,OAAO,WAAW,OAA2B,IAEtF,oBAAC,SAAD;GACE,QAAQ,eAAe,KAAA,KAAa,eAAe,QAAQ,KAAK,QAAQ;GAC5D;GACN;GAEN,QAAQ;GACR,UAAU;EACX,GAHM,KAAK,GAGX,CAEL;CACE,CAAA;AAER,CACF;AAEA,KAAK,cAAc"}