// for persistence interface SimpleLayoutTab { type: "tab"; light9Element: string; } export interface SimpleLayout { type: string; weight?: number; children: (SimpleLayout | SimpleLayoutTab)[]; } // for FlexLayout interface FullLayoutTab { type: "tab"; name: string; component: string; } interface FullLayout { type: string; weight?: number; children: (FullLayout | FullLayoutTab)[]; } function tabConfigFromSimpleTabName(name: string): FullLayoutTab { return { type: "tab", name: name.replace(/^light9-/, ""), component: name }; } export function simpleLayout(full: FullLayout | FullLayoutTab): SimpleLayout | SimpleLayoutTab { if (full.type == "tab") { return { type: "tab", light9Element: (full as FullLayoutTab).component }; } else { return { ...(full as FullLayout), children: (full as FullLayout).children.map(simpleLayout) }; } } export function fullLayout(simple: SimpleLayout | SimpleLayoutTab): FullLayout | FullLayoutTab { if (simple.type == "tab") { return tabConfigFromSimpleTabName((simple as SimpleLayoutTab).light9Element); } else { return { ...(simple as SimpleLayout), children: (simple as SimpleLayout).children.map(fullLayout) }; } } export const persistedLayout: SimpleLayout = { type: "row", children: [ // { // type: "tabset", // weight: 50, // children: [ // { // type: "tab", // light9Element: "light9-device-settings", // }, // ], // }, // { // type: "row", // weight: 50, // children: [ // { // type: "tabset", // weight: 50, // children: [ // { // type: "tab", // light9Element: "light9-fade-ui", // }, // ], // }, // { // type: "tabset", // weight: 50, // children: [ // { // type: "tab", // light9Element: "light9-collector-ui", // }, // ], // }, // ], // }, ], };