{"version":3,"file":"CardList.mjs","names":["React","useState","PropTypes","makeStyles","clsx","Pagination","CircularProgress","PaginationPlacement","useStyles","paginationWrapper","display","centerPagination","justifyContent","rightPagination","CardList","t0","$","_c","itemComponent","ItemComponent","data","t1","componentDataMap","pagination","t2","itemsPerPage","t3","isServerSide","t4","totalItems","t5","onPageChange","t6","currentPage","t7","isLoading","t8","paginationPlacement","t9","t10","undefined","LEFT","clientPage","setClientPage","classes","page","t11","Array","isArray","safeData","t12","slice","paginatedData","t13","event","value","handlePageChange","t14","item","props","key","value_0","Object","entries","mappedData","t15","map","item_0","index","CENTER","RIGHT","Math","ceil","length","propTypes","elementType","isRequired","arrayOf","object","objectOf","string","bool","number","func","defaultProps"],"sources":["../../../../src/UI/dataDisplay/cardList/CardList.jsx"],"sourcesContent":["import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { makeStyles } from '@material-ui/core';\nimport clsx from 'clsx';\nimport Pagination from '@material-ui/lab/Pagination';\nimport { CircularProgress } from '../../loading/CircularProgress';\nimport { PaginationPlacement } from './enum';\n\nconst useStyles = makeStyles(() => ({\n  paginationWrapper: {\n    display: 'flex'\n  },\n  centerPagination: {\n    justifyContent: 'center'\n  },\n  rightPagination: {\n    justifyContent: 'flex-end'\n  }\n}));\n\nexport const CardList = ({\n  itemComponent: ItemComponent,\n  data = [],\n  componentDataMap,\n  pagination = false,\n  itemsPerPage = 10,\n  isServerSide = false,\n  totalItems = 0,\n  onPageChange = null,\n  currentPage = 1,\n  isLoading = false,\n  paginationPlacement = PaginationPlacement.LEFT\n}) => {\n  const [clientPage, setClientPage] = useState(1);\n  const classes = useStyles();\n\n  const page = isServerSide ? currentPage : clientPage;\n\n  const safeData = Array.isArray(data) ? data : [];\n\n  const paginatedData =\n    pagination && !isServerSide\n      ? safeData.slice((page - 1) * itemsPerPage, page * itemsPerPage)\n      : safeData;\n\n  const handlePageChange = (event, value) => {\n    if (isServerSide) {\n      onPageChange(value);\n    } else {\n      setClientPage(value);\n    }\n  };\n\n  const mappedData = (item) => {\n    const props = {};\n    for (const [key, value] of Object.entries(componentDataMap)) {\n      props[value] = item[key];\n    }\n    return props;\n  };\n\n  return (\n    <div>\n      {isLoading ? (\n        <CircularProgress />\n      ) : (\n        <>\n          {paginatedData.map((item, index) => (\n            <ItemComponent key={index} {...mappedData(item)} />\n          ))}\n          {pagination && (\n            <div\n              className={clsx(classes.paginationWrapper, {\n                [classes.centerPagination]:\n                  paginationPlacement === PaginationPlacement.CENTER,\n                [classes.rightPagination]:\n                  paginationPlacement === PaginationPlacement.RIGHT\n              })}\n            >\n              <Pagination\n                count={Math.ceil(\n                  isServerSide\n                    ? totalItems / itemsPerPage\n                    : safeData.length / itemsPerPage\n                )}\n                page={page}\n                onChange={handlePageChange}\n                disabled={isLoading}\n              />\n            </div>\n          )}\n        </>\n      )}\n    </div>\n  );\n};\n\nCardList.propTypes = {\n  itemComponent: PropTypes.elementType.isRequired,\n  data: PropTypes.arrayOf(PropTypes.object),\n  componentDataMap: PropTypes.objectOf(PropTypes.string).isRequired,\n  pagination: PropTypes.bool,\n  itemsPerPage: PropTypes.number,\n  isServerSide: PropTypes.bool,\n  totalItems: PropTypes.number,\n  onPageChange: PropTypes.func,\n  currentPage: PropTypes.number,\n  isLoading: PropTypes.bool,\n  paginationPlacement: PropTypes.string\n};\n\nCardList.defaultProps = {\n  data: [],\n  pagination: false,\n  itemsPerPage: 10,\n  isServerSide: false,\n  totalItems: 0,\n  onPageChange: null,\n  currentPage: 1,\n  isLoading: false,\n  paginationPlacement: PaginationPlacement.LEFT\n};\n"],"mappings":"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"}