'use client'; import _extends from "@babel/runtime/helpers/esm/extends"; import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose"; const _excluded = ["count", "getItemAriaLabel", "onPageChange", "page", "rowsPerPage", "showFirstButton", "showLastButton", "direction", "ownerState", "slotProps", "slots"]; var _span, _span2, _span3, _span4; import * as React from 'react'; import { useSlotProps } from '../utils'; import { jsx as _jsx } from "react/jsx-runtime"; import { jsxs as _jsxs } from "react/jsx-runtime"; function LastPageIconDefault() { return _span || (_span = /*#__PURE__*/_jsx("span", { children: '⇾|' })); } function FirstPageIconDefault() { return _span2 || (_span2 = /*#__PURE__*/_jsx("span", { children: '|⇽' })); } function NextPageIconDefault() { return _span3 || (_span3 = /*#__PURE__*/_jsx("span", { children: '⇾' })); } function BackPageIconDefault() { return _span4 || (_span4 = /*#__PURE__*/_jsx("span", { children: '⇽' })); } function defaultGetAriaLabel(type) { return `Go to ${type} page`; } /** * @ignore - internal component. */ const TablePaginationActions = /*#__PURE__*/React.forwardRef(function TablePaginationActions(props, forwardedRef) { var _slots$root, _slots$firstButton, _slots$lastButton, _slots$nextButton, _slots$backButton, _slots$lastPageIcon, _slots$firstPageIcon, _slots$nextPageIcon, _slots$backPageIcon; const { count, getItemAriaLabel = defaultGetAriaLabel, onPageChange, page, rowsPerPage, showFirstButton = false, showLastButton = false, direction // @ts-ignore , slotProps = {}, slots = {} } = props, other = _objectWithoutPropertiesLoose(props, _excluded); const ownerState = props; const handleFirstPageButtonClick = event => { onPageChange(event, 0); }; const handleBackButtonClick = event => { onPageChange(event, page - 1); }; const handleNextButtonClick = event => { onPageChange(event, page + 1); }; const handleLastPageButtonClick = event => { onPageChange(event, Math.max(0, Math.ceil(count / rowsPerPage) - 1)); }; const Root = (_slots$root = slots.root) != null ? _slots$root : 'div'; const rootProps = useSlotProps({ elementType: Root, externalSlotProps: slotProps.root, externalForwardedProps: other, additionalProps: { ref: forwardedRef }, ownerState }); const FirstButton = (_slots$firstButton = slots.firstButton) != null ? _slots$firstButton : 'button'; const firstButtonProps = useSlotProps({ elementType: FirstButton, externalSlotProps: slotProps.firstButton, additionalProps: { onClick: handleFirstPageButtonClick, disabled: page === 0, 'aria-label': getItemAriaLabel('first', page), title: getItemAriaLabel('first', page) }, ownerState }); const LastButton = (_slots$lastButton = slots.lastButton) != null ? _slots$lastButton : 'button'; const lastButtonProps = useSlotProps({ elementType: LastButton, externalSlotProps: slotProps.lastButton, additionalProps: { onClick: handleLastPageButtonClick, disabled: page >= Math.ceil(count / rowsPerPage) - 1, 'aria-label': getItemAriaLabel('last', page), title: getItemAriaLabel('last', page) }, ownerState }); const NextButton = (_slots$nextButton = slots.nextButton) != null ? _slots$nextButton : 'button'; const nextButtonProps = useSlotProps({ elementType: NextButton, externalSlotProps: slotProps.nextButton, additionalProps: { onClick: handleNextButtonClick, disabled: count !== -1 ? page >= Math.ceil(count / rowsPerPage) - 1 : false, 'aria-label': getItemAriaLabel('next', page), title: getItemAriaLabel('next', page) }, ownerState }); const BackButton = (_slots$backButton = slots.backButton) != null ? _slots$backButton : 'button'; const backButtonProps = useSlotProps({ elementType: BackButton, externalSlotProps: slotProps.backButton, additionalProps: { onClick: handleBackButtonClick, disabled: page === 0, 'aria-label': getItemAriaLabel('previous', page), title: getItemAriaLabel('previous', page) }, ownerState }); const LastPageIcon = (_slots$lastPageIcon = slots.lastPageIcon) != null ? _slots$lastPageIcon : LastPageIconDefault; const FirstPageIcon = (_slots$firstPageIcon = slots.firstPageIcon) != null ? _slots$firstPageIcon : FirstPageIconDefault; const NextPageIcon = (_slots$nextPageIcon = slots.nextPageIcon) != null ? _slots$nextPageIcon : NextPageIconDefault; const BackPageIcon = (_slots$backPageIcon = slots.backPageIcon) != null ? _slots$backPageIcon : BackPageIconDefault; return /*#__PURE__*/_jsxs(Root, _extends({}, rootProps, { children: [showFirstButton && /*#__PURE__*/_jsx(FirstButton, _extends({}, firstButtonProps, { children: direction === 'rtl' ? /*#__PURE__*/_jsx(LastPageIcon, {}) : /*#__PURE__*/_jsx(FirstPageIcon, {}) })), /*#__PURE__*/_jsx(BackButton, _extends({}, backButtonProps, { children: direction === 'rtl' ? /*#__PURE__*/_jsx(NextPageIcon, {}) : /*#__PURE__*/_jsx(BackPageIcon, {}) })), /*#__PURE__*/_jsx(NextButton, _extends({}, nextButtonProps, { children: direction === 'rtl' ? /*#__PURE__*/_jsx(BackPageIcon, {}) : /*#__PURE__*/_jsx(NextPageIcon, {}) })), showLastButton && /*#__PURE__*/_jsx(LastButton, _extends({}, lastButtonProps, { children: direction === 'rtl' ? /*#__PURE__*/_jsx(FirstPageIcon, {}) : /*#__PURE__*/_jsx(LastPageIcon, {}) }))] })); }); export { TablePaginationActions };