{"version":3,"file":"index.js","names":["RenderServerComponent","PREFERENCE_KEYS","React","getPreferences","ModularDashboardClient","ModularDashboard","props","defaultLayout","widgets","payload","config","admin","dashboard","importMap","user","cookies","locale","permissions","req","initPageResult","i18n","layout","getItemsFromPreferences","getItemsFromConfig","serverLayout","map","layoutItem","widgetSlug","id","slice","lastIndexOf","component","Component","find","widget","slug","ComponentPath","serverProps","item","clientWidgets","_","label","rest","t","_jsx","clientLayout","savedPreferences","DASHBOARD_LAYOUT","collection","value","layouts","widgetInstances","widgetInstance","index","maxWidth","minWidth","width"],"sources":["../../../../../src/views/Dashboard/Default/ModularDashboard/index.tsx"],"sourcesContent":["import type { TFunction } from '@payloadcms/translations'\nimport type {\n BasePayload,\n ClientWidget,\n DashboardConfig,\n PayloadRequest,\n TypedUser,\n Widget,\n WidgetInstance,\n WidgetServerProps,\n} from 'payload'\n\nimport { RenderServerComponent } from '@payloadcms/ui/elements/RenderServerComponent'\nimport { PREFERENCE_KEYS } from 'payload/shared'\nimport React from 'react'\n\nimport type { DashboardViewServerProps } from '../index.js'\nimport type { WidgetInstanceClient, WidgetItem } from './index.client.js'\n\nimport { getPreferences } from '../../../../utilities/getPreferences.js'\nimport { ModularDashboardClient } from './index.client.js'\nimport './index.scss'\n\ntype ServerLayout = WidgetInstanceClient[]\n\nexport async function ModularDashboard(props: DashboardViewServerProps) {\n const { defaultLayout = [], widgets = [] } = props.payload.config.admin.dashboard || {}\n const { importMap } = props.payload\n const { user } = props\n const { cookies, locale, permissions, req } = props.initPageResult\n const { i18n } = req\n\n const layout =\n (await getItemsFromPreferences(props.payload, user)) ??\n (await getItemsFromConfig(defaultLayout, req, widgets))\n\n const serverLayout: ServerLayout = layout.map((layoutItem) => {\n const widgetSlug = layoutItem.id.slice(0, layoutItem.id.lastIndexOf('-'))\n return {\n component: RenderServerComponent({\n Component: widgets.find((widget) => widget.slug === widgetSlug)?.ComponentPath,\n importMap,\n serverProps: {\n cookies,\n locale,\n permissions,\n req,\n widgetSlug,\n // TODO: widgets will support state in the future\n // widgetData: layoutItem.data,\n } satisfies WidgetServerProps,\n }),\n item: layoutItem,\n }\n })\n\n // Resolve function labels to static labels for client components\n const clientWidgets: ClientWidget[] = widgets.map((widget) => {\n const { ComponentPath: _, label, ...rest } = widget\n return {\n ...rest,\n label: typeof label === 'function' ? label({ i18n, t: i18n.t as TFunction }) : label,\n }\n })\n\n return (\n