import React, { useCallback } from 'react'; import PropTypes from 'prop-types'; import { useTranslation } from 'react-i18next'; import { UncontrolledTooltip } from 'reactstrap'; import AppContainer from '~/client/services/AppContainer'; import { EditorMode, useIsDeviceSmallerThanMd } from '~/stores/ui'; import { withUnstatedContainers } from '../UnstatedUtils'; /* 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 { appContainer, editorMode, onPageEditorModeButtonClicked, isBtnDisabled, } = props; const { t } = useTranslation(); const { data: isDeviceSmallerThanMd } = useIsDeviceSmallerThanMd(); const isAdmin = appContainer.isAdmin; const isHackmdEnabled = appContainer.config.env.HACKMD_URI != null; const showHackmdBtn = isHackmdEnabled || isAdmin; const pageEditorModeButtonClickedHandler = useCallback((viewType) => { if (isBtnDisabled) { return; } if (onPageEditorModeButtonClicked != null) { onPageEditorModeButtonClicked(viewType); } }, [isBtnDisabled, onPageEditorModeButtonClicked]); return ( <>