import * as React from "react"; import { HeaderComponent } from "../headerComponent"; import Resizable from "re-resizable"; import { SceneExplorerComponent } from "../sceneExplorer/sceneExplorerComponent"; import { ActionTabsComponent } from "../actionTabs/actionTabsComponent"; import { Scene } from "babylonjs/scene"; import { GlobalState } from "../../components/globalState"; const Split = require('split.js').default; require("./embedHost.scss"); interface IEmbedHostComponentProps { scene: Scene, globalState: GlobalState, popupMode: boolean, noClose?: boolean, noExpand?: boolean, onClose: () => void, onPopup: () => void } export class EmbedHostComponent extends React.Component { private _once = true; constructor(props: IEmbedHostComponentProps) { super(props); } componentDidMount() { const container = this.refs.split; if (!container) { return; } Split([this.refs.topPart, this.refs.bottomPart], { direction: "vertical", minSize: [200, 200], gutterSize: 4 }) } renderContent() { if (this.props.popupMode) { return (
) } return (
) } render() { if (this.props.popupMode) { return (
this.props.onClose()} onPopup={() => this.props.onPopup()} onSelectionChangedObservable={this.props.globalState.onSelectionChangedObservable} /> {this.renderContent()}
); } if (this._once) { this._once = false; // A bit hacky but no other way to force the initial width to 300px and not auto setTimeout(() => { const element = document.getElementById("embed"); if (!element) { return; } element.style.width = "300px"; }, 150); } return ( this.props.onClose()} onPopup={() => this.props.onPopup()} onSelectionChangedObservable={this.props.globalState.onSelectionChangedObservable} /> {this.renderContent()} ); } }