picture_in_picture_placeholder.jsx 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. import PropTypes from 'prop-types';
  2. import { PureComponent } from 'react';
  3. import { FormattedMessage } from 'react-intl';
  4. import { connect } from 'react-redux';
  5. import CancelPresentationIcon from '@/material-icons/400-24px/cancel_presentation.svg?react';
  6. import { removePictureInPicture } from 'mastodon/actions/picture_in_picture';
  7. import { Icon } from 'mastodon/components/icon';
  8. class PictureInPicturePlaceholder extends PureComponent {
  9. static propTypes = {
  10. dispatch: PropTypes.func.isRequired,
  11. aspectRatio: PropTypes.string,
  12. };
  13. handleClick = () => {
  14. const { dispatch } = this.props;
  15. dispatch(removePictureInPicture());
  16. };
  17. render () {
  18. const { aspectRatio } = this.props;
  19. return (
  20. <div className='picture-in-picture-placeholder' style={{ aspectRatio }} role='button' tabIndex={0} onClick={this.handleClick}>
  21. <Icon id='window-restore' icon={CancelPresentationIcon} />
  22. <FormattedMessage id='picture_in_picture.restore' defaultMessage='Put it back' />
  23. </div>
  24. );
  25. }
  26. }
  27. export default connect()(PictureInPicturePlaceholder);