import React, { useCallback } from 'react'; import PropTypes from 'prop-types'; import { withTranslation } from 'react-i18next'; import { UncontrolledTooltip } from 'reactstrap'; import { withUnstatedContainers } from '../UnstatedUtils'; import AppContainer from '../../services/AppContainer'; /* eslint-disable react/prop-types */ const PageEditorModeButtonWrapper = React.memo(({ editorMode, isBtnDisabled, onClick, targetMode, icon, label, id, }) => { const classNames = [`btn btn-outline-primary ${targetMode}-button px-1`]; if (editorMode === targetMode) { classNames.push('active'); } if (isBtnDisabled) { classNames.push('disabled'); } return ( ); }); /* eslint-enable react/prop-types */ function PageEditorModeManager(props) { const { t, appContainer, editorMode, onPageEditorModeButtonClicked, isBtnDisabled, isDeviceSmallerThanMd, } = props; const isAdmin = appContainer.isAdmin; const isHackmdEnabled = appContainer.config.env.HACKMD_URI != null; const showHackmdBtn = isHackmdEnabled || isAdmin; const showHackmdDisabledTooltip = isAdmin && !isHackmdEnabled && editorMode !== 'hackmd'; const pageEditorModeButtonClickedHandler = useCallback((viewType) => { if (isBtnDisabled) { return; } if (onPageEditorModeButtonClicked != null) { onPageEditorModeButtonClicked(viewType); } }, [isBtnDisabled, onPageEditorModeButtonClicked]); return ( <>