function newTabMenuTemplate(table: string) { return { label: { translatable: true, message: `New ${table}`, }, routeInfo: { route: 'record', fields: { table: table, sysId: '-1', }, multiInstField: 'sysId', }, condition: { tableDescription: { table: table, canCreate: true, }, }, } } export function createChromeTabJsonStringForPageProp(tables: string[]) { return JSON.stringify({ contextual: ['record'], newTabMenu: tables.map((table) => newTabMenuTemplate(table)), maxMainTabLimit: 10, maxTotalSubTabLimit: 30, }) } // This next function reverse engineers createChromeTab to take that output as input (stringified JSON) and returns the tables export function parsePagePropChromeTabJson(chromeTab: string): string[] { try { const chromeTabJson = JSON.parse(chromeTab) return chromeTabJson.newTabMenu.map( (item: { routeInfo: { fields: { table: string } } }) => item.routeInfo.fields.table ) } catch (e) { console.log(`Failed to parse chrome tab json for Workspace plugin | ${e}`) return [] } }