refactor(core): trim color grading api surface

This commit is contained in:
ukimsanov
2026-06-16 13:41:28 -07:00
parent 90582d7faa
commit 8aaaaf1812
4 changed files with 12 additions and 24 deletions
+6 -7
View File
@@ -4,13 +4,12 @@ import {
isHfColorGradingActive,
normalizeHfColorGrading,
normalizeHfColorGradingWithVariables,
parseHfColorGradingAttribute,
serializeHfColorGrading,
} from "./colorGrading";
describe("color grading", () => {
it("parses preset shorthand", () => {
const grading = parseHfColorGradingAttribute("warm-clean");
const grading = normalizeHfColorGrading("warm-clean");
expect(grading?.preset).toBe("warm-clean");
expect(grading?.colorSpace).toBe(HF_COLOR_GRADING_COLOR_SPACE);
expect(grading?.adjust.temperature).toBeGreaterThan(0);
@@ -42,17 +41,17 @@ describe("color grading", () => {
expect(grading?.lut?.intensity).toBe(1);
});
it("returns null for disabled or invalid looks", () => {
it("returns null for disabled or invalid grading", () => {
expect(normalizeHfColorGrading({ enabled: false, preset: "warm-clean" })).toBeNull();
expect(parseHfColorGradingAttribute("{nope")).toBeNull();
expect(parseHfColorGradingAttribute("")).toBeNull();
expect(normalizeHfColorGrading("{nope")).toBeNull();
expect(normalizeHfColorGrading("")).toBeNull();
});
it("serializes normalized looks for data-color-grading", () => {
it("serializes normalized grading for data-color-grading", () => {
const grading = normalizeHfColorGrading({ adjust: { exposure: 0.25 } });
const serialized = serializeHfColorGrading(grading);
expect(serialized).toContain('"exposure":0.25');
expect(parseHfColorGradingAttribute(serialized)?.adjust.exposure).toBe(0.25);
expect(normalizeHfColorGrading(serialized)?.adjust.exposure).toBe(0.25);
});
it("treats zero global intensity as inactive even with LUT data", () => {
+1 -13
View File
@@ -256,9 +256,6 @@ export function resolveHfColorGradingVariables(
return raw;
}
}
if (Array.isArray(raw)) {
return raw.map((item) => resolveHfColorGradingVariables(item, variables));
}
if (!isRecord(raw)) return raw;
const resolved: Record<string, unknown> = {};
@@ -268,9 +265,7 @@ export function resolveHfColorGradingVariables(
return resolved;
}
export function getHfColorGradingPreset(
id: string | null | undefined,
): HfColorGradingPreset | null {
function getHfColorGradingPreset(id: string | null | undefined): HfColorGradingPreset | null {
if (!id) return null;
return PRESETS_BY_ID.get(id) ?? null;
}
@@ -305,13 +300,6 @@ export function normalizeHfColorGrading(raw: unknown): NormalizedHfColorGrading
};
}
export function parseHfColorGradingAttribute(
value: string | null | undefined,
): NormalizedHfColorGrading | null {
if (value == null) return null;
return normalizeHfColorGrading(value);
}
export function normalizeHfColorGradingWithVariables(
raw: unknown,
variables: HfColorGradingVariableMap,
+5 -2
View File
@@ -222,7 +222,7 @@ function maybeInlineRelativeAssetUrl(urlValue: string, projectDir: string): stri
}
// fallow-ignore-next-line complexity
function rewriteLookLutWithInlinedAssets(value: string, projectDir: string): string {
function rewriteColorGradingLutWithInlinedAssets(value: string, projectDir: string): string {
if (!value.trim().startsWith("{")) return value;
let parsed: unknown;
try {
@@ -979,7 +979,10 @@ export async function bundleToSingleHtml(
for (const el of [...document.querySelectorAll(`[${HF_COLOR_GRADING_ATTR}]`)]) {
const value = el.getAttribute(HF_COLOR_GRADING_ATTR);
if (value) {
el.setAttribute(HF_COLOR_GRADING_ATTR, rewriteLookLutWithInlinedAssets(value, projectDir));
el.setAttribute(
HF_COLOR_GRADING_ATTR,
rewriteColorGradingLutWithInlinedAssets(value, projectDir),
);
}
}
-2
View File
@@ -137,11 +137,9 @@ export {
HF_COLOR_GRADING_ADJUST_KEYS,
HF_COLOR_GRADING_COLOR_SPACE,
HF_COLOR_GRADING_PRESETS,
getHfColorGradingPreset,
isHfColorGradingActive,
normalizeHfColorGrading,
normalizeHfColorGradingWithVariables,
parseHfColorGradingAttribute,
resolveHfColorGradingVariables,
serializeHfColorGrading,
type HfColorGrading,