"use strict"; import React, { Component } from "react"; import ReactDOM from "react-dom"; const _ = browser.i18n.getMessage; let winWidth = 350; let winHeight = 200; let frameHeight; let frameWidth; class App extends Component { constructor () { super(); this.state = { receivers: [] , selectedMedia: "app" , isLoading: false }; // Store window ref browser.windows.getCurrent().then(win => { this.win = win; frameHeight = win.height - window.innerHeight; frameWidth = win.width - window.innerWidth; }); } componentDidMount () { browser.runtime.sendMessage({ subject: "shim:popupReady" }); browser.runtime.onMessage.addListener(message => { switch (message.subject) { case "popup:populate": this.setState({ receivers: message.data.receivers , selectedMedia: message.data.selectedMedia }); winHeight = document.body.clientHeight + frameHeight; browser.windows.update(this.win.id, { height: winHeight }); break; case "popup:close": window.close(); break; } }); } onCast (receiver) { this.setState({ isLoading: true }); browser.runtime.sendMessage({ subject: "shim:selectReceiver" , data: { receiver , selectedMedia: this.state.selectedMedia } }); } onSelectChange (ev) { this.setState({ selectedMedia: ev.target.value }); } render () { const shareMedia = this.state.selectedMedia === "tab" || this.state.selectedMedia === "screen"; return (