UNPKG

@modern-kit/react

Version:
1 lines 1.83 kB
{"version":3,"file":"index.mjs","sources":["../../../src/components/SeparatedIterator/index.tsx"],"sourcesContent":["import { useCallback } from 'react';\nimport { Iterator, IteratorProps } from '../Iterator';\n\ninterface SeparatedIteratorProps<T> extends IteratorProps<T> {\n separator: JSX.Element;\n separatorInterval?: number;\n includeLastSeparator?: boolean;\n}\n\nexport const SeparatedIterator = <T,>({\n itemKey,\n items,\n separator,\n renderItem,\n separatorInterval = 1,\n includeLastSeparator = false,\n}: SeparatedIteratorProps<T>) => {\n const isRenderSeparator = useCallback(\n (index: number) => {\n if (index === items.length - 1) {\n return includeLastSeparator;\n }\n return (index + 1) % separatorInterval === 0;\n },\n [includeLastSeparator, separatorInterval, items.length]\n );\n\n return (\n <Iterator\n items={items}\n itemKey={itemKey}\n renderItem={(item, index) => (\n <>\n {renderItem(item, index)}\n {isRenderSeparator(index) && separator}\n </>\n )}\n />\n );\n};\n"],"names":[],"mappings":";;;;;AASO,MAAM,oBAAoB,CAAK;AAAA,EACpC,OAAA;AAAA,EACA,KAAA;AAAA,EACA,SAAA;AAAA,EACA,UAAA;AAAA,EACA,iBAAA,GAAoB,CAAA;AAAA,EACpB,oBAAA,GAAuB;AACzB,CAAA,KAAiC;AAC/B,EAAA,MAAM,iBAAA,GAAoB,WAAA;AAAA,IACxB,CAAC,KAAA,KAAkB;AACjB,MAAA,IAAI,KAAA,KAAU,KAAA,CAAM,MAAA,GAAS,CAAA,EAAG;AAC9B,QAAA,OAAO,oBAAA;AAAA,MACT;AACA,MAAA,OAAA,CAAQ,KAAA,GAAQ,KAAK,iBAAA,KAAsB,CAAA;AAAA,IAC7C,CAAA;AAAA,IACA,CAAC,oBAAA,EAAsB,iBAAA,EAAmB,KAAA,CAAM,MAAM;AAAA,GACxD;AAEA,EAAA,uBACE,GAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MACC,KAAA;AAAA,MACA,OAAA;AAAA,MACA,UAAA,EAAY,CAAC,IAAA,EAAM,KAAA,qBACjB,IAAA,CAAA,QAAA,EAAA,EACG,QAAA,EAAA;AAAA,QAAA,UAAA,CAAW,MAAM,KAAK,CAAA;AAAA,QACtB,iBAAA,CAAkB,KAAK,CAAA,IAAK;AAAA,OAAA,EAC/B;AAAA;AAAA,GAEJ;AAEJ;;;;"}