import cs from 'classnames' import { action, computed, observable } from 'mobx' import { observer } from 'mobx-react' import React, { Component, createRef } from 'react' import Tooltip from '@cypress/react-tooltip' import { $ } from '@packages/driver' import { ViewportInfo } from '../viewport-info' import { SelectorPlayground } from '../selector-playground/SelectorPlayground' import { selectorPlaygroundModel } from '../selector-playground' import { Studio, studioRecorder } from '../studio' import { eventManager } from '../event-manager' interface BaseState { isLoading: boolean isRunning: boolean width: number height: number displayScale: number | undefined defaults: { width: number height: number } updateWindowDimensions: (payload: { headerHeight: number }) => void } interface StateCT { runner: 'component' state: { screenshotting: boolean } & BaseState } interface StateE2E { runner: 'e2e' state: { url: string isLoadingUrl: boolean highlightUrl: boolean } & BaseState } interface HeaderBaseProps { config: { configFile: string [k: string]: unknown } } type CtHeaderProps = StateCT & HeaderBaseProps type E2EHeaderProps = StateE2E & HeaderBaseProps type HeaderProps = CtHeaderProps | E2EHeaderProps @observer export class Header extends Component { @observable showingViewportMenu = false @observable urlInput = '' @observable previousSelectorPlaygroundOpen: boolean = false @observable previousRecorderIsOpen: boolean = false urlInputRef = createRef() headerRef = createRef() get studioForm () { if (this.props.runner !== 'e2e') { return } return (

Please enter a valid URL to visit.

...loading {' '} ) } render () { const { config, state } = this.props return (