import React = require("react"); import { EditorStore } from "@tandem/editor/browser/stores"; import { BaseApplicationComponent, appComponentContextTypes, inject } from "@tandem/common"; import { ReactComponentFactoryProvider, PageFactoryProvider, EditorStoreProvider } from "@tandem/editor/browser/providers"; export class RegisteredComponent extends BaseApplicationComponent<{ ns: string, providers?: ReactComponentFactoryProvider[] } & any, any> { render() { return { (this.props.providers || ((this.kernel && this.kernel.queryAll(this.props.ns)) || []).map((dependency, i) => { return dependency.create(Object.assign({ key: dependency.id }, this.props)); }))} ; } } export class PageOutletComponent extends BaseApplicationComponent<{ pageName: string } & any, any> { @inject(EditorStoreProvider.ID) private _store: EditorStore; render() { const pageName: string = this._store.router.state[this.props.routeName]; if (!pageName) return null; return { this.kernel.queryAll(PageFactoryProvider.getId(pageName)).map((dependency, i) => { return dependency.create(Object.assign({ key: i }, this.props)); })} ; } }