import classNames from 'classnames'; import {defineMessages, injectIntl, intlShape} from 'react-intl'; import PropTypes from 'prop-types'; import React from 'react'; import {connect} from 'react-redux'; import VM from 'scratch-vm'; import Box from '../box/box.jsx'; import Button from '../button/button.jsx'; import ToggleButtons from '../toggle-buttons/toggle-buttons.jsx'; import Controls from '../../containers/controls.jsx'; import {getStageDimensions} from '../../lib/screen-utils'; import {STAGE_DISPLAY_SIZES, STAGE_SIZE_MODES} from '../../lib/layout-constants'; import fullScreenIcon from './icon--fullscreen.svg'; import unFullScreenIcon from './icon--unfullscreen.svg'; import largeStageIcon from '!../../lib/tw-recolor/build!./icon--large-stage.svg'; import smallStageIcon from '!../../lib/tw-recolor/build!./icon--small-stage.svg'; import fullStageIcon from '!../../lib/tw-recolor/build!./icon--full-stage.svg'; import settingsIcon from './icon--settings.svg'; import styles from './stage-header.css'; import FullscreenAPI from '../../lib/tw-fullscreen-api'; const messages = defineMessages({ largeStageSizeMessage: { defaultMessage: 'Switch to large stage', description: 'Button to change stage size to large', id: 'gui.stageHeader.stageSizeLarge' }, smallStageSizeMessage: { defaultMessage: 'Switch to small stage', description: 'Button to change stage size to small', id: 'gui.stageHeader.stageSizeSmall' }, fullStageSizeMessage: { defaultMessage: 'Switch to full stage', description: 'Button to change stage size to its full size', id: 'tw.stageHeader.full' }, fullScreenMessage: { defaultMessage: 'Enter full screen mode', description: 'Button to change stage size to full screen', id: 'gui.stageHeader.stageSizeFull' }, unFullScreenMessage: { defaultMessage: 'Exit full screen mode', description: 'Button to get out of full screen mode', id: 'gui.stageHeader.stageSizeUnFull' }, fullscreenControl: { defaultMessage: 'Full Screen Control', description: 'Button to enter/exit full screen mode', id: 'gui.stageHeader.fullscreenControl' }, openSettingsMessage: { defaultMessage: 'Open advanced settings', description: 'Button to open advanced settings in embeds', id: 'tw.openAdvanced' } }); const enableSettingsButton = new URLSearchParams(location.search).has('settings-button'); const StageHeaderComponent = function (props) { const { customStageSize, showFixedLargeSize, isFullScreen, isPlayerOnly, onKeyPress, onSetStageFullScreen, onSetStageUnFullScreen, onSetStageLarge, onSetStageSmall, onSetStageFull, onOpenSettings, isEmbedded, stageSize, stageSizeMode, vm } = props; let header = null; const stageDimensions = getStageDimensions(stageSize, customStageSize, isFullScreen || isEmbedded); if (isFullScreen || isEmbedded) { const settingsButton = isEmbedded && enableSettingsButton ? (