{"version":3,"file":"TableRows.mjs","sources":["../../../../admin/src/components/TableList/TableRows.tsx"],"sourcesContent":["import { Checkbox, Flex, IconButton, Tbody, Td, Tr } from '@strapi/design-system';\nimport { Eye, Pencil } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { Link } from 'react-router-dom';\n\nimport { tableHeaders as cells } from '../../constants';\nimport { getTrad } from '../../utils';\n\nimport { CellContent } from './CellContent';\n\nimport type { File } from '../../../../shared/contracts/files';\nimport type { Folder } from '../../../../shared/contracts/folders';\n\ninterface FileRow extends File {\n  folderURL?: string;\n  isSelectable?: boolean;\n  type?: string;\n}\n\ninterface FolderRow extends Folder {\n  folderURL?: string;\n  isSelectable?: boolean;\n  type?: string;\n}\n\nexport interface TableRowsProps {\n  onChangeFolder?: ((folderId: number, folderPath?: string) => void) | null;\n  onEditAsset: (asset: FileRow) => void;\n  onEditFolder: (folder: FolderRow) => void;\n  onSelectOne: (element: FileRow | FolderRow) => void;\n  rows: FileRow[] | FolderRow[];\n  selected: FileRow[] | FolderRow[];\n}\n\nexport const TableRows = ({\n  onChangeFolder = null,\n  onEditAsset,\n  onEditFolder,\n  onSelectOne,\n  rows = [],\n  selected = [],\n}: TableRowsProps) => {\n  const { formatMessage } = useIntl();\n\n  const handleRowClickFn = (\n    element: FileRow | FolderRow,\n    id: number,\n    path: FolderRow['path'],\n    elementType?: string\n  ) => {\n    if (elementType === 'asset') {\n      onEditAsset(element as FileRow);\n    } else {\n      if (onChangeFolder) {\n        onChangeFolder(id, path);\n      }\n    }\n  };\n\n  return (\n    <Tbody>\n      {rows.map((element) => {\n        const { path, id, isSelectable, name, folderURL, type: contentType } = element;\n\n        const isSelected = !!selected.find(\n          (currentRow) => currentRow.id === id && currentRow.type === contentType\n        );\n\n        return (\n          <Tr\n            key={id}\n            onClick={() => handleRowClickFn(element, id, path || undefined, contentType)}\n          >\n            <Td onClick={(e) => e.stopPropagation()}>\n              <Checkbox\n                aria-label={formatMessage(\n                  {\n                    id: contentType === 'asset' ? 'list-assets-select' : 'list.folder.select',\n                    defaultMessage:\n                      contentType === 'asset' ? 'Select {name} asset' : 'Select {name} folder',\n                  },\n                  { name }\n                )}\n                disabled={!isSelectable}\n                onCheckedChange={() => onSelectOne(element)}\n                checked={isSelected}\n              />\n            </Td>\n            {cells.map(({ name, type: cellType }) => {\n              return (\n                <Td key={name}>\n                  <CellContent\n                    content={element as FileRow}\n                    cellType={cellType}\n                    contentType={contentType}\n                    name={name}\n                  />\n                </Td>\n              );\n            })}\n\n            <Td onClick={(e) => e.stopPropagation()}>\n              <Flex justifyContent=\"flex-end\">\n                {contentType === 'folder' &&\n                  (folderURL ? (\n                    <IconButton\n                      tag={Link}\n                      label={formatMessage({\n                        id: getTrad('list.folders.link-label'),\n                        defaultMessage: 'Access folder',\n                      })}\n                      to={folderURL}\n                      variant=\"ghost\"\n                    >\n                      <Eye />\n                    </IconButton>\n                  ) : (\n                    <IconButton\n                      tag=\"button\"\n                      label={formatMessage({\n                        id: getTrad('list.folders.link-label'),\n                        defaultMessage: 'Access folder',\n                      })}\n                      onClick={() => onChangeFolder && onChangeFolder(id)}\n                      variant=\"ghost\"\n                    >\n                      <Eye />\n                    </IconButton>\n                  ))}\n                <IconButton\n                  label={formatMessage({\n                    id: getTrad('control-card.edit'),\n                    defaultMessage: 'Edit',\n                  })}\n                  onClick={() =>\n                    contentType === 'asset'\n                      ? onEditAsset(element as FileRow)\n                      : onEditFolder(element as FolderRow)\n                  }\n                  variant=\"ghost\"\n                >\n                  <Pencil />\n                </IconButton>\n              </Flex>\n            </Td>\n          </Tr>\n        );\n      })}\n    </Tbody>\n  );\n};\n"],"names":["TableRows","onChangeFolder","onEditAsset","onEditFolder","onSelectOne","rows","selected","formatMessage","useIntl","handleRowClickFn","element","id","path","elementType","_jsx","Tbody","map","isSelectable","name","folderURL","type","contentType","isSelected","find","currentRow","_jsxs","Tr","onClick","undefined","Td","e","stopPropagation","Checkbox","aria-label","defaultMessage","disabled","onCheckedChange","checked","cells","cellType","CellContent","content","Flex","justifyContent","IconButton","tag","Link","label","getTrad","to","variant","Eye","Pencil"],"mappings":"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"}