diff --git a/src/config/defaultKhanegiUiConfig.ts b/src/config/defaultKhanegiUiConfig.ts index b9c621d..0633e09 100644 --- a/src/config/defaultKhanegiUiConfig.ts +++ b/src/config/defaultKhanegiUiConfig.ts @@ -116,4 +116,30 @@ export function createDefaultKhanegiUiConfig() { } } -export type UiConfig = ReturnType +export type UiConfigBase = ReturnType + +export type UiConfig = UiConfigBase & { + /** Immutable factory look — set once; never overwrite on normal save */ + defaultSnapshot?: { + app: UiConfigBase['app'] + pages: Record + } +} + +export function cloneKhanegiAppSnapshot(config: { + app: UiConfigBase['app'] + pages?: Record +}) { + return { + app: JSON.parse(JSON.stringify(config.app)) as UiConfigBase['app'], + pages: JSON.parse(JSON.stringify(config.pages || {})) as Record, + } +} + +/** Strip SuperAdmin-only meta before sending to product apps via /get_user */ +export function stripKhanegiSaMeta | null | undefined>(ui: T): T { + if (!ui || typeof ui !== 'object') return ui + const { defaultSnapshot: _snap, _backfill, ...rest } = ui as Record + return rest as T +} + diff --git a/src/pages/UiConfigPage.vue b/src/pages/UiConfigPage.vue index 9246275..6aa052c 100644 --- a/src/pages/UiConfigPage.vue +++ b/src/pages/UiConfigPage.vue @@ -1,10 +1,13 @@