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"; import { IExplorerExtensibilityGroup, DebugLayerTab } from 'babylonjs/Debug/debugLayer'; 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, extensibilityGroups?: IExplorerExtensibilityGroup[], initialTab?: DebugLayerTab } export class EmbedHostComponent extends React.Component { private _once = true; private splitRef: React.RefObject; private topPartRef: React.RefObject; private bottomPartRef: React.RefObject; constructor(props: IEmbedHostComponentProps) { super(props); this.splitRef = React.createRef(); this.topPartRef = React.createRef(); this.bottomPartRef = React.createRef(); } componentDidMount() { const container = this.splitRef.current; if (!container) { return; } Split([this.topPartRef.current, this.bottomPartRef.current], { 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()} ); } }