@selfcommunity/react-ui
Version:
React UI Components to integrate a Community created with SelfCommunity Platform.
34 lines (33 loc) • 1.61 kB
JavaScript
import { __rest } from "tslib";
import { jsx as _jsx } from "react/jsx-runtime";
import { CircularProgress } from '@mui/material';
import { styled } from '@mui/material/styles';
import { useCallback, useState } from 'react';
import { PhotoSlider } from 'react-photo-view';
import { PREFIX } from './constants';
const classes = {
root: `${PREFIX}-root`
};
const Root = styled(PhotoSlider, {
name: PREFIX,
slot: 'Root',
overridesResolver: (_props, styles) => styles.root
})(() => ({}));
const BaseLightbox = (props) => {
const { images = [], index, onClose, visible = true, afterClose, onIndexChange, toolbarRender, toolbarButtons } = props, rest = __rest(props, ["images", "index", "onClose", "visible", "afterClose", "onIndexChange", "toolbarRender", "toolbarButtons"]);
// STATE
const [currentImageIndex, setCurrentImageIndex] = useState(index || 0);
const handleIndexChange = useCallback((index) => {
onIndexChange === null || onIndexChange === void 0 ? void 0 : onIndexChange(index);
setCurrentImageIndex(index);
}, [onIndexChange, setCurrentImageIndex]);
/**
* Renders root object
*/
return (_jsx(Root, Object.assign({}, rest, { className: classes.root, images: images, visible: visible && index !== -1, index: currentImageIndex, onIndexChange: handleIndexChange, onClose: onClose, afterClose: afterClose, loadingElement: _jsx(CircularProgress, { color: 'primary' }), toolbarRender: toolbarRender
? toolbarRender
: () => {
return toolbarButtons;
} })));
};
export default BaseLightbox;