调整Q Scheme构造组件对于已记录值的获取和处理。

This commit is contained in:
徐涛 2025-02-07 09:01:26 +08:00
parent 853b9b6b75
commit f9f855e818

View File

@ -11,7 +11,7 @@ import { FloatColorPicker } from '../../../components/FloatcolorPicker';
import { ScrollArea } from '../../../components/ScrollArea';
import { VSegmentedControl } from '../../../components/VSegmentedControl';
import { SchemeContent } from '../../../models';
import { QSchemeSource, QSchemeStorage } from '../../../q-scheme';
import { QSchemeSetting, QSchemeSource, QSchemeStorage } from '../../../q-scheme';
import { useUpdateScheme } from '../../../stores/schemes';
import { defaultEmptyFormData } from '../../../utls';
import styles from './Builder.module.css';
@ -28,50 +28,35 @@ export function QSchemeBuilder({ scheme, onBuildCompleted }: QSchemeBuilderProps
try {
if (!colorFn) throw 'Web Assembly functions is not available';
const defaultValues = colorFn.q_scheme_default_settings();
if (!scheme.schemeStorage.source?.setting)
return {
hover: {
chroma:
scheme.schemeStorage.source?.setting?.hover.chroma ?? defaultValues.hover.chroma,
lightness:
scheme.schemeStorage.source?.setting?.hover.lightness ??
defaultValues.hover.lightness,
},
active: {
chroma:
scheme.schemeStorage.source?.setting?.active.chroma ?? defaultValues.active.chroma,
lightness:
scheme.schemeStorage.source?.setting?.active.lightness ??
if (scheme.schemeStorage.source?.setting)
return new SchemeSetting(
new ColorShifting(
scheme.schemeStorage.source?.setting?.hover.chroma ?? defaultValues.hover.chroma,
scheme.schemeStorage.source?.setting?.hover.lightness ?? defaultValues.hover.lightness,
),
new ColorShifting(
scheme.schemeStorage.source?.setting?.active.chroma ?? defaultValues.active.chroma,
scheme.schemeStorage.source?.setting?.active.lightness ??
defaultValues.active.lightness,
},
focus: {
chroma:
scheme.schemeStorage.source?.setting?.focus.chroma ?? defaultValues.focus.chroma,
lightness:
scheme.schemeStorage.source?.setting?.focus.lightness ??
defaultValues.focus.lightness,
},
disabled: {
chroma:
scheme.schemeStorage.source?.setting?.disabled.chroma ??
defaultValues.disabled.chroma,
lightness:
scheme.schemeStorage.source?.setting?.disabled.lightness ??
),
new ColorShifting(
scheme.schemeStorage.source?.setting?.focus.chroma ?? defaultValues.focus.chroma,
scheme.schemeStorage.source?.setting?.focus.lightness ?? defaultValues.focus.lightness,
),
new ColorShifting(
scheme.schemeStorage.source?.setting?.disabled.chroma ?? defaultValues.disabled.chroma,
scheme.schemeStorage.source?.setting?.disabled.lightness ??
defaultValues.disabled.lightness,
},
dark_convert: {
chroma:
scheme.schemeStorage.source?.setting?.dark_convert.chroma ??
),
new ColorShifting(
scheme.schemeStorage.source?.setting?.dark_convert.chroma ??
defaultValues.dark_convert.chroma,
lightness:
scheme.schemeStorage.source?.setting?.dark_convert.lightness ??
scheme.schemeStorage.source?.setting?.dark_convert.lightness ??
defaultValues.dark_convert.lightness,
},
expand_method:
scheme.schemeStorage.source?.setting?.expand_method ?? defaultValues.expand_method,
wacg_follows:
scheme.schemeStorage.source?.setting?.wacg_follows ?? defaultValues.wacg_follows,
} as SchemeSetting;
),
scheme.schemeStorage.source?.setting?.expand_method ?? defaultValues.expand_method,
scheme.schemeStorage.source?.setting?.wacg_follows ?? defaultValues.wacg_follows,
);
return defaultValues;
} catch (e) {
console.error('[Q scheme builder]', e);
@ -139,6 +124,7 @@ export function QSchemeBuilder({ scheme, onBuildCompleted }: QSchemeBuilderProps
Number(formData.get('expanding')) as ColorExpand,
Number(formData.get('wacg')) as WACGSetting,
);
const dumpedSetting = schemeSetting.toJsValue() as QSchemeSetting;
const source: QSchemeSource = {
primary: defaultEmptyFormData(formData, 'primary', null),
@ -151,7 +137,7 @@ export function QSchemeBuilder({ scheme, onBuildCompleted }: QSchemeBuilderProps
info: defaultEmptyFormData(formData, 'info', null),
foreground: defaultEmptyFormData(formData, 'foreground', null),
background: defaultEmptyFormData(formData, 'background', null),
setting: schemeSetting,
setting: dumpedSetting,
};
const generatedScheme = every([source.secondary, source.tertiary, source.accent], isNil)
? colorFn?.generate_q_scheme_automatically(
@ -162,7 +148,7 @@ export function QSchemeBuilder({ scheme, onBuildCompleted }: QSchemeBuilderProps
source.info,
source.foreground,
source.background,
source.setting,
schemeSetting,
)
: colorFn?.generate_q_scheme_manually(
source.primary,
@ -175,7 +161,7 @@ export function QSchemeBuilder({ scheme, onBuildCompleted }: QSchemeBuilderProps
source.info,
source.foreground,
source.background,
source.setting,
schemeSetting,
);
updateScheme((prev) => {
prev.schemeStorage.source = source;