word-count-button.tsx 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. import { useDetachCompileContext as useCompileContext } from '@/shared/context/detach-compile-context'
  2. import { useTranslation } from 'react-i18next'
  3. import { isSplitTestEnabled } from '@/utils/splitTestUtils'
  4. import LeftMenuButton from '@/features/editor-left-menu/components/left-menu-button'
  5. import OLTooltip from '@/features/ui/components/ol/ol-tooltip'
  6. import { memo } from 'react'
  7. export const WordCountButton = memo<{
  8. handleShowModal: () => void
  9. }>(function WordCountButton({ handleShowModal }) {
  10. const { pdfUrl } = useCompileContext()
  11. const { t } = useTranslation()
  12. const enabled = pdfUrl || isSplitTestEnabled('word-count-client')
  13. if (!enabled) {
  14. return (
  15. <OLTooltip
  16. id="disabled-word-count"
  17. description={t('please_compile_pdf_before_word_count')}
  18. overlayProps={{
  19. placement: 'top',
  20. }}
  21. >
  22. {/* OverlayTrigger won't fire unless the child is a non-react html element (e.g div, span) */}
  23. <div>
  24. <LeftMenuButton
  25. icon="match_case"
  26. disabled
  27. disabledAccesibilityText={t('please_compile_pdf_before_word_count')}
  28. >
  29. {t('word_count')}
  30. </LeftMenuButton>
  31. </div>
  32. </OLTooltip>
  33. )
  34. }
  35. return (
  36. <LeftMenuButton onClick={handleShowModal} icon="match_case">
  37. {t('word_count')}
  38. </LeftMenuButton>
  39. )
  40. })