feat: 完善导出设置与打印预览

This commit is contained in:
SkyJourney
2026-07-26 01:36:51 +08:00
parent ec14f7970a
commit 52cf816683
20 changed files with 1552 additions and 146 deletions
+44
View File
@@ -0,0 +1,44 @@
import {
defaultExportConfig,
exportConfigSchema,
type ExportConfig
} from "@md-to-pdf/core";
export const EXPORT_CONFIG_STORAGE_KEY = "md-to-pdf.export-config.v2";
type SettingsStorage = Pick<Storage, "getItem" | "setItem">;
function cloneDefaultExportConfig() {
return structuredClone(defaultExportConfig);
}
export function parseStoredExportConfig(rawValue: string | null): ExportConfig {
if (!rawValue) {
return cloneDefaultExportConfig();
}
try {
const parsed = exportConfigSchema.safeParse(JSON.parse(rawValue));
return parsed.success ? parsed.data : cloneDefaultExportConfig();
} catch {
return cloneDefaultExportConfig();
}
}
export function loadExportConfig(
storage: SettingsStorage = window.localStorage
) {
return parseStoredExportConfig(storage.getItem(EXPORT_CONFIG_STORAGE_KEY));
}
export function saveExportConfig(
config: ExportConfig,
storage: SettingsStorage = window.localStorage
) {
const parsed = exportConfigSchema.parse(config);
storage.setItem(EXPORT_CONFIG_STORAGE_KEY, JSON.stringify(parsed));
}
export function resetExportConfig() {
return cloneDefaultExportConfig();
}