推进 INI 面板 shell control-page contract helper

This commit is contained in:
2026-06-15 05:58:15 +08:00
parent f7de24d4a5
commit 41caecf116
8 changed files with 199 additions and 0 deletions

View File

@@ -61,6 +61,23 @@ export function createIniPanelLauncherLinkViewModel(entries = getVisibleIniPanel
}));
}
export function createIniPanelShellControlPageContract() {
const readonlyStatusApiManifest = createMachineSessionReadonlyStatusApiManifest();
return {
methodNames: [
"createController",
"loadSessionState",
"readStatus",
"refresh",
"renderView",
],
readonlyStatusApiManifest,
readonlyStatusApiMethodNames: Object.keys(readonlyStatusApiManifest.methods),
readonlyStatusApiStatusFields: readonlyStatusApiManifest.statusFields,
relatedControlPageMethods: readonlyStatusApiManifest.relatedControlPageMethods,
};
}
export function createIniPanelShellViewModel(entries = getVisibleIniPanelEntries()) {
return {
pages: entries.map(({ id, href, title }) => ({
@@ -70,6 +87,7 @@ export function createIniPanelShellViewModel(entries = getVisibleIniPanelEntries
})),
launcherLinks: createIniPanelLauncherLinkViewModel(entries),
controlPage: {
contract: createIniPanelShellControlPageContract(),
createController: createMachineSessionControlPageController,
loadSessionState: loadMachineSessionForControlPageWorkflow,
readonlyStatusApiManifest: createMachineSessionReadonlyStatusApiManifest(),