{"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={`${contentType}-${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                onPointerDown={(e) => {\n                  e.preventDefault();\n                }}\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","onPointerDown","preventDefault","checked","cells","cellType","CellContent","content","Flex","justifyContent","IconButton","tag","Link","label","getTrad","to","variant","Eye","Pencil"],"mappings":"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"}