>(undefined)
        const generalSettings = new GeneralSettings(es, currentSetting);
        const languages = generalSettings.languages;
        const chronic = UIEventSource.Chronic(120 * 1000)
            .map(date => {
                if (es.data.id == undefined) {
                    return undefined
                }
                if (es.data.id === "") {
                    return undefined;
                }
                const pref = connection.GetLongPreference("installed-theme-" + es.data.id);
                pref.setData(encoded.data);
                return date;
            });
        const preview = new Combine([
            new VariableUiElement(iframe)
        ]).SetClass("preview")
        this.mainPanel = new TabbedComponent([
            {
                header: Svg.gear_img,
                content:
                    new PageSplit(
                        generalSettings.SetStyle("width: 50vw;"),
                        new Combine([
                            new HelpText(currentSetting).SetStyle("height:calc(100% - 65vh); width: 100%; display:block; overflow-y: auto"),
                            preview.SetStyle("height:65vh; width:100%; display:block")
                        ]).SetStyle("position:relative; width: 50%;")
                    )
            },
            {
                header: Svg.layers_img,
                content: new AllLayersPanel(es, languages, userDetails)
            },
            {
                header: Svg.floppy_img,
                content: new SavePanel(this.connection, es, chronic)
            },
            {
                header:Svg.share_img,
                content: new SharePanel(es, liveUrl, userDetails)
            }
        ])
    }
    InnerRender(): string {
        const ud = this.connection.userDetails.data;
        if (!ud.loggedIn) {
            return new Combine([
                "Not Logged in
",
                "You need to be logged in in order to create a custom theme",
                this.loginButton
            ]).Render();
        }
        const journey = Constants.userJourney;
        if (ud.csCount <= journey.themeGeneratorReadOnlyUnlock) {
            return new Combine([
                "Too little experience
",
                `Creating your own (readonly) themes can only be done if you have more then ${journey.themeGeneratorReadOnlyUnlock} changesets made
`,
                `Making a theme including survey options can be done at ${journey.themeGeneratorFullUnlock} changesets
`
            ]).Render();
        }
        return this.mainPanel.Render()
    }
}