@hyperframes/core 0.6.106 → 0.6.108
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/colorGrading.d.ts +45 -0
- package/dist/colorGrading.d.ts.map +1 -0
- package/dist/colorGrading.js +249 -0
- package/dist/colorGrading.js.map +1 -0
- package/dist/colorLuts.d.ts +23 -0
- package/dist/colorLuts.d.ts.map +1 -0
- package/dist/colorLuts.js +172 -0
- package/dist/colorLuts.js.map +1 -0
- package/dist/compiler/htmlBundler.d.ts.map +1 -1
- package/dist/compiler/htmlBundler.js +40 -0
- package/dist/compiler/htmlBundler.js.map +1 -1
- package/dist/generated/runtime-inline.js +1 -1
- package/dist/generated/runtime-inline.js.map +1 -1
- package/dist/hyperframe.manifest.json +1 -1
- package/dist/hyperframe.runtime.iife.js +25 -23
- package/dist/hyperframe.runtime.mjs +25 -23
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/inline-scripts/runtimeContract.d.ts +1 -1
- package/dist/inline-scripts/runtimeContract.d.ts.map +1 -1
- package/dist/inline-scripts/runtimeContract.js +2 -0
- package/dist/inline-scripts/runtimeContract.js.map +1 -1
- package/dist/parsers/gsapWriterAcorn.d.ts +2 -2
- package/dist/parsers/gsapWriterAcorn.d.ts.map +1 -1
- package/dist/parsers/gsapWriterAcorn.js +345 -34
- package/dist/parsers/gsapWriterAcorn.js.map +1 -1
- package/dist/studio-api/helpers/mime.d.ts.map +1 -1
- package/dist/studio-api/helpers/mime.js +1 -0
- package/dist/studio-api/helpers/mime.js.map +1 -1
- package/dist/studio-api/routes/preview.js +1 -1
- package/dist/studio-api/routes/preview.js.map +1 -1
- package/package.json +9 -1
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
export declare const HF_COLOR_GRADING_ATTR = "data-color-grading";
|
|
2
|
+
export declare const HF_COLOR_GRADING_COLOR_SPACE = "rec709";
|
|
3
|
+
export type HfColorGradingPresetId = "neutral" | "warm-clean" | "cool-clean" | "soft-boost" | "bright-pop" | "deep-contrast";
|
|
4
|
+
export type HfColorGradingAdjustKey = "exposure" | "contrast" | "highlights" | "shadows" | "whites" | "blacks" | "temperature" | "tint" | "saturation";
|
|
5
|
+
export type HfColorGradingAdjust = Partial<Record<HfColorGradingAdjustKey, number>>;
|
|
6
|
+
export interface HfColorGradingLutRef {
|
|
7
|
+
src: string;
|
|
8
|
+
intensity?: number;
|
|
9
|
+
}
|
|
10
|
+
export interface HfColorGrading {
|
|
11
|
+
enabled?: boolean;
|
|
12
|
+
preset?: HfColorGradingPresetId | string | null;
|
|
13
|
+
intensity?: number;
|
|
14
|
+
adjust?: HfColorGradingAdjust;
|
|
15
|
+
lut?: HfColorGradingLutRef | string | null;
|
|
16
|
+
colorSpace?: typeof HF_COLOR_GRADING_COLOR_SPACE | string;
|
|
17
|
+
}
|
|
18
|
+
export interface NormalizedHfColorGrading {
|
|
19
|
+
enabled: boolean;
|
|
20
|
+
preset: HfColorGradingPresetId | string | null;
|
|
21
|
+
intensity: number;
|
|
22
|
+
adjust: Record<HfColorGradingAdjustKey, number>;
|
|
23
|
+
lut: HfColorGradingLutRef | null;
|
|
24
|
+
colorSpace: typeof HF_COLOR_GRADING_COLOR_SPACE | string;
|
|
25
|
+
}
|
|
26
|
+
export interface HfColorGradingTarget {
|
|
27
|
+
id?: string | null;
|
|
28
|
+
hfId?: string | null;
|
|
29
|
+
selector?: string | null;
|
|
30
|
+
selectorIndex?: number | null;
|
|
31
|
+
}
|
|
32
|
+
export interface HfColorGradingPreset {
|
|
33
|
+
id: HfColorGradingPresetId;
|
|
34
|
+
label: string;
|
|
35
|
+
adjust: Record<HfColorGradingAdjustKey, number>;
|
|
36
|
+
}
|
|
37
|
+
export type HfColorGradingVariableMap = Record<string, unknown>;
|
|
38
|
+
export declare const HF_COLOR_GRADING_ADJUST_KEYS: readonly HfColorGradingAdjustKey[];
|
|
39
|
+
export declare const HF_COLOR_GRADING_PRESETS: readonly HfColorGradingPreset[];
|
|
40
|
+
export declare function resolveHfColorGradingVariables(raw: unknown, variables: HfColorGradingVariableMap): unknown;
|
|
41
|
+
export declare function normalizeHfColorGrading(raw: unknown): NormalizedHfColorGrading | null;
|
|
42
|
+
export declare function normalizeHfColorGradingWithVariables(raw: unknown, variables: HfColorGradingVariableMap): NormalizedHfColorGrading | null;
|
|
43
|
+
export declare function serializeHfColorGrading(grading: NormalizedHfColorGrading | HfColorGrading | null): string;
|
|
44
|
+
export declare function isHfColorGradingActive(grading: NormalizedHfColorGrading | null): grading is NormalizedHfColorGrading;
|
|
45
|
+
//# sourceMappingURL=colorGrading.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"colorGrading.d.ts","sourceRoot":"","sources":["../src/colorGrading.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,qBAAqB,uBAAuB,CAAC;AAE1D,eAAO,MAAM,4BAA4B,WAAW,CAAC;AAErD,MAAM,MAAM,sBAAsB,GAC9B,SAAS,GACT,YAAY,GACZ,YAAY,GACZ,YAAY,GACZ,YAAY,GACZ,eAAe,CAAC;AAEpB,MAAM,MAAM,uBAAuB,GAC/B,UAAU,GACV,UAAU,GACV,YAAY,GACZ,SAAS,GACT,QAAQ,GACR,QAAQ,GACR,aAAa,GACb,MAAM,GACN,YAAY,CAAC;AAEjB,MAAM,MAAM,oBAAoB,GAAG,OAAO,CAAC,MAAM,CAAC,uBAAuB,EAAE,MAAM,CAAC,CAAC,CAAC;AAEpF,MAAM,WAAW,oBAAoB;IACnC,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,sBAAsB,GAAG,MAAM,GAAG,IAAI,CAAC;IAChD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,oBAAoB,CAAC;IAC9B,GAAG,CAAC,EAAE,oBAAoB,GAAG,MAAM,GAAG,IAAI,CAAC;IAC3C,UAAU,CAAC,EAAE,OAAO,4BAA4B,GAAG,MAAM,CAAC;CAC3D;AAED,MAAM,WAAW,wBAAwB;IACvC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,sBAAsB,GAAG,MAAM,GAAG,IAAI,CAAC;IAC/C,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC,uBAAuB,EAAE,MAAM,CAAC,CAAC;IAChD,GAAG,EAAE,oBAAoB,GAAG,IAAI,CAAC;IACjC,UAAU,EAAE,OAAO,4BAA4B,GAAG,MAAM,CAAC;CAC1D;AAED,MAAM,WAAW,oBAAoB;IACnC,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B;AAED,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,sBAAsB,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC,uBAAuB,EAAE,MAAM,CAAC,CAAC;CACjD;AAED,MAAM,MAAM,yBAAyB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAchE,eAAO,MAAM,4BAA4B,EAAE,SAAS,uBAAuB,EAU1E,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,SAAS,oBAAoB,EAqEnE,CAAC;AAuFF,wBAAgB,8BAA8B,CAC5C,GAAG,EAAE,OAAO,EACZ,SAAS,EAAE,yBAAyB,GACnC,OAAO,CAmBT;AAOD,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,OAAO,GAAG,wBAAwB,GAAG,IAAI,CA4BrF;AAED,wBAAgB,oCAAoC,CAClD,GAAG,EAAE,OAAO,EACZ,SAAS,EAAE,yBAAyB,GACnC,wBAAwB,GAAG,IAAI,CAEjC;AAED,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,wBAAwB,GAAG,cAAc,GAAG,IAAI,GACxD,MAAM,CAKR;AAED,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,wBAAwB,GAAG,IAAI,GACvC,OAAO,IAAI,wBAAwB,CAKrC"}
|
|
@@ -0,0 +1,249 @@
|
|
|
1
|
+
export const HF_COLOR_GRADING_ATTR = "data-color-grading";
|
|
2
|
+
export const HF_COLOR_GRADING_COLOR_SPACE = "rec709";
|
|
3
|
+
const ADJUST_ZERO = {
|
|
4
|
+
exposure: 0,
|
|
5
|
+
contrast: 0,
|
|
6
|
+
highlights: 0,
|
|
7
|
+
shadows: 0,
|
|
8
|
+
whites: 0,
|
|
9
|
+
blacks: 0,
|
|
10
|
+
temperature: 0,
|
|
11
|
+
tint: 0,
|
|
12
|
+
saturation: 0,
|
|
13
|
+
};
|
|
14
|
+
export const HF_COLOR_GRADING_ADJUST_KEYS = [
|
|
15
|
+
"exposure",
|
|
16
|
+
"contrast",
|
|
17
|
+
"highlights",
|
|
18
|
+
"shadows",
|
|
19
|
+
"whites",
|
|
20
|
+
"blacks",
|
|
21
|
+
"temperature",
|
|
22
|
+
"tint",
|
|
23
|
+
"saturation",
|
|
24
|
+
];
|
|
25
|
+
export const HF_COLOR_GRADING_PRESETS = [
|
|
26
|
+
{
|
|
27
|
+
id: "neutral",
|
|
28
|
+
label: "Neutral",
|
|
29
|
+
adjust: { ...ADJUST_ZERO },
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
id: "warm-clean",
|
|
33
|
+
label: "Warm Clean",
|
|
34
|
+
adjust: {
|
|
35
|
+
...ADJUST_ZERO,
|
|
36
|
+
exposure: 0.05,
|
|
37
|
+
contrast: 0.08,
|
|
38
|
+
highlights: -0.08,
|
|
39
|
+
shadows: 0.08,
|
|
40
|
+
temperature: 0.16,
|
|
41
|
+
saturation: 0.06,
|
|
42
|
+
},
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
id: "cool-clean",
|
|
46
|
+
label: "Cool Clean",
|
|
47
|
+
adjust: {
|
|
48
|
+
...ADJUST_ZERO,
|
|
49
|
+
contrast: 0.06,
|
|
50
|
+
highlights: -0.06,
|
|
51
|
+
shadows: 0.06,
|
|
52
|
+
temperature: -0.12,
|
|
53
|
+
tint: 0.04,
|
|
54
|
+
saturation: 0.04,
|
|
55
|
+
},
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
id: "soft-boost",
|
|
59
|
+
label: "Soft Boost",
|
|
60
|
+
adjust: {
|
|
61
|
+
...ADJUST_ZERO,
|
|
62
|
+
exposure: 0.06,
|
|
63
|
+
contrast: -0.04,
|
|
64
|
+
highlights: -0.14,
|
|
65
|
+
shadows: 0.16,
|
|
66
|
+
saturation: 0.1,
|
|
67
|
+
},
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
id: "bright-pop",
|
|
71
|
+
label: "Bright Pop",
|
|
72
|
+
adjust: {
|
|
73
|
+
...ADJUST_ZERO,
|
|
74
|
+
exposure: 0.12,
|
|
75
|
+
contrast: 0.12,
|
|
76
|
+
whites: 0.08,
|
|
77
|
+
blacks: -0.04,
|
|
78
|
+
saturation: 0.14,
|
|
79
|
+
},
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
id: "deep-contrast",
|
|
83
|
+
label: "Deep Contrast",
|
|
84
|
+
adjust: {
|
|
85
|
+
...ADJUST_ZERO,
|
|
86
|
+
exposure: -0.03,
|
|
87
|
+
contrast: 0.2,
|
|
88
|
+
highlights: -0.08,
|
|
89
|
+
shadows: -0.08,
|
|
90
|
+
blacks: -0.12,
|
|
91
|
+
saturation: 0.06,
|
|
92
|
+
},
|
|
93
|
+
},
|
|
94
|
+
];
|
|
95
|
+
const PRESETS_BY_ID = new Map(HF_COLOR_GRADING_PRESETS.map((preset) => [preset.id, preset]));
|
|
96
|
+
const VARIABLE_REF_RE = /^\$(?:\{([A-Za-z0-9_.:-]+)\}|([A-Za-z0-9_.:-]+))$/;
|
|
97
|
+
const ADJUST_LIMITS = {
|
|
98
|
+
exposure: { min: -2, max: 2 },
|
|
99
|
+
contrast: { min: -1, max: 1 },
|
|
100
|
+
highlights: { min: -1, max: 1 },
|
|
101
|
+
shadows: { min: -1, max: 1 },
|
|
102
|
+
whites: { min: -1, max: 1 },
|
|
103
|
+
blacks: { min: -1, max: 1 },
|
|
104
|
+
temperature: { min: -1, max: 1 },
|
|
105
|
+
tint: { min: -1, max: 1 },
|
|
106
|
+
saturation: { min: -1, max: 1 },
|
|
107
|
+
};
|
|
108
|
+
function isRecord(value) {
|
|
109
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
110
|
+
}
|
|
111
|
+
function clamp(value, min, max) {
|
|
112
|
+
if (!Number.isFinite(value))
|
|
113
|
+
return 0;
|
|
114
|
+
return Math.min(max, Math.max(min, value));
|
|
115
|
+
}
|
|
116
|
+
function clampUnit(value, fallback) {
|
|
117
|
+
const parsed = typeof value === "number" ? value : Number(value);
|
|
118
|
+
if (!Number.isFinite(parsed))
|
|
119
|
+
return fallback;
|
|
120
|
+
return Math.min(1, Math.max(0, parsed));
|
|
121
|
+
}
|
|
122
|
+
function readAdjustValue(value, key) {
|
|
123
|
+
const parsed = typeof value === "number" ? value : Number(value);
|
|
124
|
+
if (!Number.isFinite(parsed))
|
|
125
|
+
return 0;
|
|
126
|
+
const limit = ADJUST_LIMITS[key];
|
|
127
|
+
return clamp(parsed, limit.min, limit.max);
|
|
128
|
+
}
|
|
129
|
+
function normalizePresetId(value) {
|
|
130
|
+
if (value == null)
|
|
131
|
+
return null;
|
|
132
|
+
const preset = String(value).trim();
|
|
133
|
+
return preset ? preset : null;
|
|
134
|
+
}
|
|
135
|
+
function normalizeLut(value) {
|
|
136
|
+
if (value == null)
|
|
137
|
+
return null;
|
|
138
|
+
if (typeof value === "string") {
|
|
139
|
+
const src = value.trim();
|
|
140
|
+
return src ? { src, intensity: 1 } : null;
|
|
141
|
+
}
|
|
142
|
+
if (!isRecord(value))
|
|
143
|
+
return null;
|
|
144
|
+
const rawSrc = value.src;
|
|
145
|
+
if (typeof rawSrc !== "string" || rawSrc.trim() === "")
|
|
146
|
+
return null;
|
|
147
|
+
return {
|
|
148
|
+
src: rawSrc.trim(),
|
|
149
|
+
intensity: clampUnit(value.intensity, 1),
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
function readColorGradingObject(raw) {
|
|
153
|
+
if (typeof raw === "string") {
|
|
154
|
+
const trimmed = raw.trim();
|
|
155
|
+
if (!trimmed)
|
|
156
|
+
return null;
|
|
157
|
+
if (trimmed.startsWith("{")) {
|
|
158
|
+
try {
|
|
159
|
+
const parsed = JSON.parse(trimmed);
|
|
160
|
+
return isRecord(parsed) ? parsed : null;
|
|
161
|
+
}
|
|
162
|
+
catch {
|
|
163
|
+
return null;
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
return { preset: trimmed, intensity: 1 };
|
|
167
|
+
}
|
|
168
|
+
return isRecord(raw) ? raw : null;
|
|
169
|
+
}
|
|
170
|
+
function resolveStringVariableRef(value, variables) {
|
|
171
|
+
const match = value.trim().match(VARIABLE_REF_RE);
|
|
172
|
+
if (!match)
|
|
173
|
+
return value;
|
|
174
|
+
const key = match[1] ?? match[2] ?? "";
|
|
175
|
+
return key && Object.hasOwn(variables, key) ? variables[key] : value;
|
|
176
|
+
}
|
|
177
|
+
export function resolveHfColorGradingVariables(raw, variables) {
|
|
178
|
+
if (typeof raw === "string") {
|
|
179
|
+
const direct = resolveStringVariableRef(raw, variables);
|
|
180
|
+
if (direct !== raw)
|
|
181
|
+
return direct;
|
|
182
|
+
const trimmed = raw.trim();
|
|
183
|
+
if (!trimmed.startsWith("{"))
|
|
184
|
+
return raw;
|
|
185
|
+
try {
|
|
186
|
+
return resolveHfColorGradingVariables(JSON.parse(trimmed), variables);
|
|
187
|
+
}
|
|
188
|
+
catch {
|
|
189
|
+
return raw;
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
if (!isRecord(raw))
|
|
193
|
+
return raw;
|
|
194
|
+
const resolved = {};
|
|
195
|
+
for (const [key, value] of Object.entries(raw)) {
|
|
196
|
+
resolved[key] = resolveHfColorGradingVariables(value, variables);
|
|
197
|
+
}
|
|
198
|
+
return resolved;
|
|
199
|
+
}
|
|
200
|
+
function getHfColorGradingPreset(id) {
|
|
201
|
+
if (!id)
|
|
202
|
+
return null;
|
|
203
|
+
return PRESETS_BY_ID.get(id) ?? null;
|
|
204
|
+
}
|
|
205
|
+
export function normalizeHfColorGrading(raw) {
|
|
206
|
+
const grading = readColorGradingObject(raw);
|
|
207
|
+
if (!grading)
|
|
208
|
+
return null;
|
|
209
|
+
if (grading.enabled === false)
|
|
210
|
+
return null;
|
|
211
|
+
const presetId = normalizePresetId(grading.preset);
|
|
212
|
+
const preset = getHfColorGradingPreset(presetId);
|
|
213
|
+
const presetAdjust = preset?.adjust ?? ADJUST_ZERO;
|
|
214
|
+
const rawAdjust = isRecord(grading.adjust) ? grading.adjust : {};
|
|
215
|
+
const adjust = HF_COLOR_GRADING_ADJUST_KEYS.reduce((result, key) => {
|
|
216
|
+
result[key] = readAdjustValue(rawAdjust[key] ?? presetAdjust[key], key);
|
|
217
|
+
return result;
|
|
218
|
+
}, { ...ADJUST_ZERO });
|
|
219
|
+
return {
|
|
220
|
+
enabled: true,
|
|
221
|
+
preset: presetId,
|
|
222
|
+
intensity: clampUnit(grading.intensity, 1),
|
|
223
|
+
adjust,
|
|
224
|
+
lut: normalizeLut(grading.lut),
|
|
225
|
+
colorSpace: typeof grading.colorSpace === "string" && grading.colorSpace.trim()
|
|
226
|
+
? grading.colorSpace.trim()
|
|
227
|
+
: HF_COLOR_GRADING_COLOR_SPACE,
|
|
228
|
+
};
|
|
229
|
+
}
|
|
230
|
+
export function normalizeHfColorGradingWithVariables(raw, variables) {
|
|
231
|
+
return normalizeHfColorGrading(resolveHfColorGradingVariables(raw, variables));
|
|
232
|
+
}
|
|
233
|
+
export function serializeHfColorGrading(grading) {
|
|
234
|
+
const normalized = normalizeHfColorGrading(grading);
|
|
235
|
+
if (!normalized)
|
|
236
|
+
return "";
|
|
237
|
+
const { enabled: _enabled, ...serializable } = normalized;
|
|
238
|
+
return JSON.stringify(serializable);
|
|
239
|
+
}
|
|
240
|
+
export function isHfColorGradingActive(grading) {
|
|
241
|
+
if (!grading?.enabled)
|
|
242
|
+
return false;
|
|
243
|
+
if (grading.intensity === 0)
|
|
244
|
+
return false;
|
|
245
|
+
if (grading.lut && grading.lut.intensity !== 0)
|
|
246
|
+
return true;
|
|
247
|
+
return HF_COLOR_GRADING_ADJUST_KEYS.some((key) => Math.abs(grading.adjust[key]) > 0.0001);
|
|
248
|
+
}
|
|
249
|
+
//# sourceMappingURL=colorGrading.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"colorGrading.js","sourceRoot":"","sources":["../src/colorGrading.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,qBAAqB,GAAG,oBAAoB,CAAC;AAE1D,MAAM,CAAC,MAAM,4BAA4B,GAAG,QAAQ,CAAC;AA6DrD,MAAM,WAAW,GAA4C;IAC3D,QAAQ,EAAE,CAAC;IACX,QAAQ,EAAE,CAAC;IACX,UAAU,EAAE,CAAC;IACb,OAAO,EAAE,CAAC;IACV,MAAM,EAAE,CAAC;IACT,MAAM,EAAE,CAAC;IACT,WAAW,EAAE,CAAC;IACd,IAAI,EAAE,CAAC;IACP,UAAU,EAAE,CAAC;CACd,CAAC;AAEF,MAAM,CAAC,MAAM,4BAA4B,GAAuC;IAC9E,UAAU;IACV,UAAU;IACV,YAAY;IACZ,SAAS;IACT,QAAQ;IACR,QAAQ;IACR,aAAa;IACb,MAAM;IACN,YAAY;CACb,CAAC;AAEF,MAAM,CAAC,MAAM,wBAAwB,GAAoC;IACvE;QACE,EAAE,EAAE,SAAS;QACb,KAAK,EAAE,SAAS;QAChB,MAAM,EAAE,EAAE,GAAG,WAAW,EAAE;KAC3B;IACD;QACE,EAAE,EAAE,YAAY;QAChB,KAAK,EAAE,YAAY;QACnB,MAAM,EAAE;YACN,GAAG,WAAW;YACd,QAAQ,EAAE,IAAI;YACd,QAAQ,EAAE,IAAI;YACd,UAAU,EAAE,CAAC,IAAI;YACjB,OAAO,EAAE,IAAI;YACb,WAAW,EAAE,IAAI;YACjB,UAAU,EAAE,IAAI;SACjB;KACF;IACD;QACE,EAAE,EAAE,YAAY;QAChB,KAAK,EAAE,YAAY;QACnB,MAAM,EAAE;YACN,GAAG,WAAW;YACd,QAAQ,EAAE,IAAI;YACd,UAAU,EAAE,CAAC,IAAI;YACjB,OAAO,EAAE,IAAI;YACb,WAAW,EAAE,CAAC,IAAI;YAClB,IAAI,EAAE,IAAI;YACV,UAAU,EAAE,IAAI;SACjB;KACF;IACD;QACE,EAAE,EAAE,YAAY;QAChB,KAAK,EAAE,YAAY;QACnB,MAAM,EAAE;YACN,GAAG,WAAW;YACd,QAAQ,EAAE,IAAI;YACd,QAAQ,EAAE,CAAC,IAAI;YACf,UAAU,EAAE,CAAC,IAAI;YACjB,OAAO,EAAE,IAAI;YACb,UAAU,EAAE,GAAG;SAChB;KACF;IACD;QACE,EAAE,EAAE,YAAY;QAChB,KAAK,EAAE,YAAY;QACnB,MAAM,EAAE;YACN,GAAG,WAAW;YACd,QAAQ,EAAE,IAAI;YACd,QAAQ,EAAE,IAAI;YACd,MAAM,EAAE,IAAI;YACZ,MAAM,EAAE,CAAC,IAAI;YACb,UAAU,EAAE,IAAI;SACjB;KACF;IACD;QACE,EAAE,EAAE,eAAe;QACnB,KAAK,EAAE,eAAe;QACtB,MAAM,EAAE;YACN,GAAG,WAAW;YACd,QAAQ,EAAE,CAAC,IAAI;YACf,QAAQ,EAAE,GAAG;YACb,UAAU,EAAE,CAAC,IAAI;YACjB,OAAO,EAAE,CAAC,IAAI;YACd,MAAM,EAAE,CAAC,IAAI;YACb,UAAU,EAAE,IAAI;SACjB;KACF;CACF,CAAC;AAEF,MAAM,aAAa,GAAG,IAAI,GAAG,CAC3B,wBAAwB,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAC9D,CAAC;AAEF,MAAM,eAAe,GAAG,mDAAmD,CAAC;AAE5E,MAAM,aAAa,GAAkE;IACnF,QAAQ,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE;IAC7B,QAAQ,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE;IAC7B,UAAU,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE;IAC/B,OAAO,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE;IAC5B,MAAM,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE;IAC3B,MAAM,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE;IAC3B,WAAW,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE;IAChC,IAAI,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE;IACzB,UAAU,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE;CAChC,CAAC;AAEF,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED,SAAS,KAAK,CAAC,KAAa,EAAE,GAAW,EAAE,GAAW;IACpD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IACtC,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;AAC7C,CAAC;AAED,SAAS,SAAS,CAAC,KAAc,EAAE,QAAgB;IACjD,MAAM,MAAM,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACjE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,QAAQ,CAAC;IAC9C,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;AAC1C,CAAC;AAED,SAAS,eAAe,CAAC,KAAc,EAAE,GAA4B;IACnE,MAAM,MAAM,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACjE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,CAAC,CAAC;IACvC,MAAM,KAAK,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;IACjC,OAAO,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;AAC7C,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAc;IACvC,IAAI,KAAK,IAAI,IAAI;QAAE,OAAO,IAAI,CAAC;IAC/B,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;IACpC,OAAO,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;AAChC,CAAC;AAED,SAAS,YAAY,CAAC,KAAc;IAClC,IAAI,KAAK,IAAI,IAAI;QAAE,OAAO,IAAI,CAAC;IAC/B,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;QACzB,OAAO,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IAC5C,CAAC;IACD,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAClC,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC;IACzB,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE;QAAE,OAAO,IAAI,CAAC;IACpE,OAAO;QACL,GAAG,EAAE,MAAM,CAAC,IAAI,EAAE;QAClB,SAAS,EAAE,SAAS,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC;KACzC,CAAC;AACJ,CAAC;AAED,SAAS,sBAAsB,CAAC,GAAY;IAC1C,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC5B,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;QAC3B,IAAI,CAAC,OAAO;YAAE,OAAO,IAAI,CAAC;QAC1B,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC5B,IAAI,CAAC;gBACH,MAAM,MAAM,GAAY,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBAC5C,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;YAC1C,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;QACD,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC;IAC3C,CAAC;IACD,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;AACpC,CAAC;AAED,SAAS,wBAAwB,CAAC,KAAa,EAAE,SAAoC;IACnF,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;IAClD,IAAI,CAAC,KAAK;QAAE,OAAO,KAAK,CAAC;IACzB,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACvC,OAAO,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AACvE,CAAC;AAED,MAAM,UAAU,8BAA8B,CAC5C,GAAY,EACZ,SAAoC;IAEpC,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC5B,MAAM,MAAM,GAAG,wBAAwB,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;QACxD,IAAI,MAAM,KAAK,GAAG;YAAE,OAAO,MAAM,CAAC;QAClC,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;QAC3B,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,OAAO,GAAG,CAAC;QACzC,IAAI,CAAC;YACH,OAAO,8BAA8B,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAY,EAAE,SAAS,CAAC,CAAC;QACnF,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,GAAG,CAAC;QACb,CAAC;IACH,CAAC;IACD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,GAAG,CAAC;IAE/B,MAAM,QAAQ,GAA4B,EAAE,CAAC;IAC7C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QAC/C,QAAQ,CAAC,GAAG,CAAC,GAAG,8BAA8B,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IACnE,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,uBAAuB,CAAC,EAA6B;IAC5D,IAAI,CAAC,EAAE;QAAE,OAAO,IAAI,CAAC;IACrB,OAAO,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC;AACvC,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,GAAY;IAClD,MAAM,OAAO,GAAG,sBAAsB,CAAC,GAAG,CAAC,CAAC;IAC5C,IAAI,CAAC,OAAO;QAAE,OAAO,IAAI,CAAC;IAC1B,IAAI,OAAO,CAAC,OAAO,KAAK,KAAK;QAAE,OAAO,IAAI,CAAC;IAE3C,MAAM,QAAQ,GAAG,iBAAiB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACnD,MAAM,MAAM,GAAG,uBAAuB,CAAC,QAAQ,CAAC,CAAC;IACjD,MAAM,YAAY,GAAG,MAAM,EAAE,MAAM,IAAI,WAAW,CAAC;IACnD,MAAM,SAAS,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;IACjE,MAAM,MAAM,GAAG,4BAA4B,CAAC,MAAM,CAChD,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE;QACd,MAAM,CAAC,GAAG,CAAC,GAAG,eAAe,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,YAAY,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;QACxE,OAAO,MAAM,CAAC;IAChB,CAAC,EACD,EAAE,GAAG,WAAW,EAAE,CACnB,CAAC;IAEF,OAAO;QACL,OAAO,EAAE,IAAI;QACb,MAAM,EAAE,QAAQ;QAChB,SAAS,EAAE,SAAS,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;QAC1C,MAAM;QACN,GAAG,EAAE,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC;QAC9B,UAAU,EACR,OAAO,OAAO,CAAC,UAAU,KAAK,QAAQ,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,EAAE;YACjE,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,EAAE;YAC3B,CAAC,CAAC,4BAA4B;KACnC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,oCAAoC,CAClD,GAAY,EACZ,SAAoC;IAEpC,OAAO,uBAAuB,CAAC,8BAA8B,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC,CAAC;AACjF,CAAC;AAED,MAAM,UAAU,uBAAuB,CACrC,OAAyD;IAEzD,MAAM,UAAU,GAAG,uBAAuB,CAAC,OAAO,CAAC,CAAC;IACpD,IAAI,CAAC,UAAU;QAAE,OAAO,EAAE,CAAC;IAC3B,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,YAAY,EAAE,GAAG,UAAU,CAAC;IAC1D,OAAO,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;AACtC,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,OAAwC;IAExC,IAAI,CAAC,OAAO,EAAE,OAAO;QAAE,OAAO,KAAK,CAAC;IACpC,IAAI,OAAO,CAAC,SAAS,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAC1C,IAAI,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC,SAAS,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAC5D,OAAO,4BAA4B,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC;AAC5F,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export type CubeLutVec3 = readonly [number, number, number];
|
|
2
|
+
export interface CubeLut3D {
|
|
3
|
+
title: string | null;
|
|
4
|
+
size: number;
|
|
5
|
+
domainMin: CubeLutVec3;
|
|
6
|
+
domainMax: CubeLutVec3;
|
|
7
|
+
data: Float32Array;
|
|
8
|
+
}
|
|
9
|
+
export interface PackedCubeLut2D {
|
|
10
|
+
width: number;
|
|
11
|
+
height: number;
|
|
12
|
+
data: Uint8Array;
|
|
13
|
+
}
|
|
14
|
+
export interface ParseCubeLutOptions {
|
|
15
|
+
maxSize?: number;
|
|
16
|
+
}
|
|
17
|
+
export declare class CubeLutParseError extends Error {
|
|
18
|
+
readonly lineNumber: number | null;
|
|
19
|
+
constructor(message: string, lineNumber?: number | null);
|
|
20
|
+
}
|
|
21
|
+
export declare function parseCubeLut(input: string, options?: ParseCubeLutOptions): CubeLut3D;
|
|
22
|
+
export declare function packCubeLutToRgba8(lut: CubeLut3D): PackedCubeLut2D;
|
|
23
|
+
//# sourceMappingURL=colorLuts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"colorLuts.d.ts","sourceRoot":"","sources":["../src/colorLuts.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,WAAW,GAAG,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAE5D,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,WAAW,CAAC;IACvB,SAAS,EAAE,WAAW,CAAC;IACvB,IAAI,EAAE,YAAY,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,UAAU,CAAC;CAClB;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,iBAAkB,SAAQ,KAAK;IAC1C,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;gBAEvB,OAAO,EAAE,MAAM,EAAE,UAAU,GAAE,MAAM,GAAG,IAAW;CAK9D;AAkED,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,mBAAwB,GAAG,SAAS,CAuFxF;AAWD,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,SAAS,GAAG,eAAe,CAoBlE"}
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
export class CubeLutParseError extends Error {
|
|
2
|
+
lineNumber;
|
|
3
|
+
constructor(message, lineNumber = null) {
|
|
4
|
+
super(lineNumber == null ? message : `${message} at line ${lineNumber}`);
|
|
5
|
+
this.name = "CubeLutParseError";
|
|
6
|
+
this.lineNumber = lineNumber;
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
const DEFAULT_DOMAIN_MIN = [0, 0, 0];
|
|
10
|
+
const DEFAULT_DOMAIN_MAX = [1, 1, 1];
|
|
11
|
+
const DEFAULT_MAX_SIZE = 64;
|
|
12
|
+
function stripComment(line) {
|
|
13
|
+
let inQuote = false;
|
|
14
|
+
for (let i = 0; i < line.length; i++) {
|
|
15
|
+
const char = line[i];
|
|
16
|
+
if (char === '"')
|
|
17
|
+
inQuote = !inQuote;
|
|
18
|
+
if (char === "#" && !inQuote)
|
|
19
|
+
return line.slice(0, i);
|
|
20
|
+
}
|
|
21
|
+
return line;
|
|
22
|
+
}
|
|
23
|
+
function parseFiniteNumber(value, lineNumber) {
|
|
24
|
+
const parsed = Number(value);
|
|
25
|
+
if (!Number.isFinite(parsed)) {
|
|
26
|
+
throw new CubeLutParseError(`Invalid number "${value}"`, lineNumber);
|
|
27
|
+
}
|
|
28
|
+
return parsed;
|
|
29
|
+
}
|
|
30
|
+
function parseVec3(parts, keyword, lineNumber) {
|
|
31
|
+
if (parts.length !== 3) {
|
|
32
|
+
throw new CubeLutParseError(`${keyword} expects three numbers`, lineNumber);
|
|
33
|
+
}
|
|
34
|
+
return [
|
|
35
|
+
parseFiniteNumber(parts[0], lineNumber),
|
|
36
|
+
parseFiniteNumber(parts[1], lineNumber),
|
|
37
|
+
parseFiniteNumber(parts[2], lineNumber),
|
|
38
|
+
];
|
|
39
|
+
}
|
|
40
|
+
function parseSize(value, keyword, lineNumber) {
|
|
41
|
+
if (!value)
|
|
42
|
+
throw new CubeLutParseError(`${keyword} expects a size`, lineNumber);
|
|
43
|
+
const parsed = Number(value);
|
|
44
|
+
if (!Number.isInteger(parsed) || parsed < 2) {
|
|
45
|
+
throw new CubeLutParseError(`${keyword} must be an integer greater than 1`, lineNumber);
|
|
46
|
+
}
|
|
47
|
+
return parsed;
|
|
48
|
+
}
|
|
49
|
+
function validateDomain(domainMin, domainMax) {
|
|
50
|
+
if (domainMax[0] <= domainMin[0] ||
|
|
51
|
+
domainMax[1] <= domainMin[1] ||
|
|
52
|
+
domainMax[2] <= domainMin[2]) {
|
|
53
|
+
throw new CubeLutParseError("DOMAIN_MAX values must be greater than DOMAIN_MIN values");
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
function parseTitle(line) {
|
|
57
|
+
const quoted = /^TITLE\s+"([^"]*)"\s*$/i.exec(line);
|
|
58
|
+
if (quoted)
|
|
59
|
+
return quoted[1] ?? null;
|
|
60
|
+
const bare = /^TITLE\s+(.+)\s*$/i.exec(line);
|
|
61
|
+
return bare ? (bare[1] ?? "").trim() || null : null;
|
|
62
|
+
}
|
|
63
|
+
function isNumericDataLine(token) {
|
|
64
|
+
return /^[+-]?(?:\d|\.\d)/.test(token);
|
|
65
|
+
}
|
|
66
|
+
// fallow-ignore-next-line complexity
|
|
67
|
+
export function parseCubeLut(input, options = {}) {
|
|
68
|
+
const maxSize = options.maxSize ?? DEFAULT_MAX_SIZE;
|
|
69
|
+
let title = null;
|
|
70
|
+
let domainMin = DEFAULT_DOMAIN_MIN;
|
|
71
|
+
let domainMax = DEFAULT_DOMAIN_MAX;
|
|
72
|
+
let lut1dSize = null;
|
|
73
|
+
let lut3dSize = null;
|
|
74
|
+
const rows = [];
|
|
75
|
+
const lines = input.replace(/^\uFEFF/, "").split(/\r?\n/);
|
|
76
|
+
for (let i = 0; i < lines.length; i++) {
|
|
77
|
+
const lineNumber = i + 1;
|
|
78
|
+
const line = stripComment(lines[i] ?? "").trim();
|
|
79
|
+
if (!line)
|
|
80
|
+
continue;
|
|
81
|
+
const parts = line.split(/\s+/);
|
|
82
|
+
const keyword = (parts[0] ?? "").toUpperCase();
|
|
83
|
+
const rest = parts.slice(1);
|
|
84
|
+
if (keyword === "TITLE") {
|
|
85
|
+
title = parseTitle(line);
|
|
86
|
+
continue;
|
|
87
|
+
}
|
|
88
|
+
if (keyword === "DOMAIN_MIN") {
|
|
89
|
+
domainMin = parseVec3(rest, keyword, lineNumber);
|
|
90
|
+
continue;
|
|
91
|
+
}
|
|
92
|
+
if (keyword === "DOMAIN_MAX") {
|
|
93
|
+
domainMax = parseVec3(rest, keyword, lineNumber);
|
|
94
|
+
continue;
|
|
95
|
+
}
|
|
96
|
+
if (keyword === "LUT_1D_SIZE") {
|
|
97
|
+
lut1dSize = parseSize(rest[0], keyword, lineNumber);
|
|
98
|
+
continue;
|
|
99
|
+
}
|
|
100
|
+
if (keyword === "LUT_3D_SIZE") {
|
|
101
|
+
lut3dSize = parseSize(rest[0], keyword, lineNumber);
|
|
102
|
+
if (lut3dSize > maxSize) {
|
|
103
|
+
throw new CubeLutParseError(`LUT_3D_SIZE ${lut3dSize} exceeds max ${maxSize}`, lineNumber);
|
|
104
|
+
}
|
|
105
|
+
continue;
|
|
106
|
+
}
|
|
107
|
+
if (!isNumericDataLine(keyword)) {
|
|
108
|
+
if (keyword.startsWith("LUT_")) {
|
|
109
|
+
throw new CubeLutParseError(`Unsupported cube keyword ${keyword}`, lineNumber);
|
|
110
|
+
}
|
|
111
|
+
continue;
|
|
112
|
+
}
|
|
113
|
+
if (!lut3dSize) {
|
|
114
|
+
if (lut1dSize) {
|
|
115
|
+
throw new CubeLutParseError("1D cube LUTs are not supported yet", lineNumber);
|
|
116
|
+
}
|
|
117
|
+
throw new CubeLutParseError("LUT data appears before LUT_3D_SIZE", lineNumber);
|
|
118
|
+
}
|
|
119
|
+
if (parts.length !== 3) {
|
|
120
|
+
throw new CubeLutParseError("LUT data rows must contain three numbers", lineNumber);
|
|
121
|
+
}
|
|
122
|
+
rows.push(parseFiniteNumber(parts[0], lineNumber), parseFiniteNumber(parts[1], lineNumber), parseFiniteNumber(parts[2], lineNumber));
|
|
123
|
+
}
|
|
124
|
+
if (lut1dSize && lut3dSize) {
|
|
125
|
+
throw new CubeLutParseError("Mixed 1D and 3D cube LUTs are not supported yet");
|
|
126
|
+
}
|
|
127
|
+
if (!lut3dSize) {
|
|
128
|
+
if (lut1dSize)
|
|
129
|
+
throw new CubeLutParseError("1D cube LUTs are not supported yet");
|
|
130
|
+
throw new CubeLutParseError("Missing LUT_3D_SIZE");
|
|
131
|
+
}
|
|
132
|
+
validateDomain(domainMin, domainMax);
|
|
133
|
+
const expectedRows = lut3dSize * lut3dSize * lut3dSize;
|
|
134
|
+
if (rows.length !== expectedRows * 3) {
|
|
135
|
+
throw new CubeLutParseError(`Expected ${expectedRows} LUT rows for size ${lut3dSize}, found ${rows.length / 3}`);
|
|
136
|
+
}
|
|
137
|
+
return {
|
|
138
|
+
title,
|
|
139
|
+
size: lut3dSize,
|
|
140
|
+
domainMin,
|
|
141
|
+
domainMax,
|
|
142
|
+
data: new Float32Array(rows),
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
function clampUnit(value) {
|
|
146
|
+
if (!Number.isFinite(value))
|
|
147
|
+
return 0;
|
|
148
|
+
return Math.min(1, Math.max(0, value));
|
|
149
|
+
}
|
|
150
|
+
function toByte(value) {
|
|
151
|
+
return Math.round(clampUnit(value) * 255);
|
|
152
|
+
}
|
|
153
|
+
export function packCubeLutToRgba8(lut) {
|
|
154
|
+
const size = lut.size;
|
|
155
|
+
const width = size * size;
|
|
156
|
+
const height = size;
|
|
157
|
+
const packed = new Uint8Array(width * height * 4);
|
|
158
|
+
for (let b = 0; b < size; b++) {
|
|
159
|
+
for (let g = 0; g < size; g++) {
|
|
160
|
+
for (let r = 0; r < size; r++) {
|
|
161
|
+
const lutIndex = ((b * size + g) * size + r) * 3;
|
|
162
|
+
const pixelIndex = (g * width + b * size + r) * 4;
|
|
163
|
+
packed[pixelIndex] = toByte(lut.data[lutIndex] ?? 0);
|
|
164
|
+
packed[pixelIndex + 1] = toByte(lut.data[lutIndex + 1] ?? 0);
|
|
165
|
+
packed[pixelIndex + 2] = toByte(lut.data[lutIndex + 2] ?? 0);
|
|
166
|
+
packed[pixelIndex + 3] = 255;
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
return { width, height, data: packed };
|
|
171
|
+
}
|
|
172
|
+
//# sourceMappingURL=colorLuts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"colorLuts.js","sourceRoot":"","sources":["../src/colorLuts.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"htmlBundler.d.ts","sourceRoot":"","sources":["../../src/compiler/htmlBundler.ts"],"names":[],"mappings":"AAIA,OAAO,EAAe,KAAK,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"htmlBundler.d.ts","sourceRoot":"","sources":["../../src/compiler/htmlBundler.ts"],"names":[],"mappings":"AAIA,OAAO,EAAe,KAAK,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAmYvE,eAAO,MAAM,gCAAgC,UAW5C,CAAC;AAEF,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,OAAO,GAAG,OAAO,CAmBrE;AA2KD,MAAM,WAAW,aAAa;IAC5B,oGAAoG;IACpG,kBAAkB,CAAC,EAAE,mBAAmB,CAAC;IACzC;;;;;;;;;;;;;;OAcG;IACH,OAAO,CAAC,EAAE,QAAQ,GAAG,aAAa,CAAC;CACpC;AAmFD,wBAAsB,kBAAkB,CACtC,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,aAAa,GACtB,OAAO,CAAC,MAAM,CAAC,CAkSjB"}
|
|
@@ -11,6 +11,7 @@ import { getHyperframeRuntimeScript } from "../generated/runtime-inline";
|
|
|
11
11
|
import { readDeclaredDefaults } from "../runtime/getVariables";
|
|
12
12
|
import { inlineSubCompositions } from "./inlineSubCompositions";
|
|
13
13
|
import { isSafePath, resolveWithinProject } from "../safePath.js";
|
|
14
|
+
import { HF_COLOR_GRADING_ATTR } from "../colorGrading";
|
|
14
15
|
const DEFAULT_RUNTIME_SCRIPT_URL = "";
|
|
15
16
|
function getRuntimeScriptUrl() {
|
|
16
17
|
const configured = (process.env.HYPERFRAME_RUNTIME_URL || "").trim();
|
|
@@ -185,6 +186,7 @@ const INLINE_MIME = {
|
|
|
185
186
|
".svg": "image/svg+xml",
|
|
186
187
|
".json": "application/json",
|
|
187
188
|
".txt": "text/plain",
|
|
189
|
+
".cube": "text/plain",
|
|
188
190
|
".xml": "application/xml",
|
|
189
191
|
};
|
|
190
192
|
function maybeInlineRelativeAssetUrl(urlValue, projectDir) {
|
|
@@ -206,6 +208,38 @@ function maybeInlineRelativeAssetUrl(urlValue, projectDir) {
|
|
|
206
208
|
const dataUrl = `data:${mimeType};base64,${content.toString("base64")}`;
|
|
207
209
|
return appendSuffixToUrl(dataUrl, suffix);
|
|
208
210
|
}
|
|
211
|
+
// fallow-ignore-next-line complexity
|
|
212
|
+
function rewriteColorGradingLutWithInlinedAssets(value, projectDir) {
|
|
213
|
+
if (!value.trim().startsWith("{"))
|
|
214
|
+
return value;
|
|
215
|
+
let parsed;
|
|
216
|
+
try {
|
|
217
|
+
parsed = JSON.parse(value);
|
|
218
|
+
}
|
|
219
|
+
catch {
|
|
220
|
+
return value;
|
|
221
|
+
}
|
|
222
|
+
if (typeof parsed !== "object" || parsed === null || Array.isArray(parsed))
|
|
223
|
+
return value;
|
|
224
|
+
const lut = Reflect.get(parsed, "lut");
|
|
225
|
+
if (typeof lut === "string") {
|
|
226
|
+
const inlined = maybeInlineRelativeAssetUrl(lut, projectDir);
|
|
227
|
+
if (!inlined)
|
|
228
|
+
return value;
|
|
229
|
+
Reflect.set(parsed, "lut", inlined);
|
|
230
|
+
return JSON.stringify(parsed);
|
|
231
|
+
}
|
|
232
|
+
if (typeof lut !== "object" || lut === null || Array.isArray(lut))
|
|
233
|
+
return value;
|
|
234
|
+
const lutSrc = Reflect.get(lut, "src");
|
|
235
|
+
if (typeof lutSrc !== "string")
|
|
236
|
+
return value;
|
|
237
|
+
const inlined = maybeInlineRelativeAssetUrl(lutSrc, projectDir);
|
|
238
|
+
if (!inlined)
|
|
239
|
+
return value;
|
|
240
|
+
Reflect.set(lut, "src", inlined);
|
|
241
|
+
return JSON.stringify(parsed);
|
|
242
|
+
}
|
|
209
243
|
function rewriteSrcsetWithInlinedAssets(srcsetValue, projectDir) {
|
|
210
244
|
if (!srcsetValue)
|
|
211
245
|
return srcsetValue;
|
|
@@ -851,6 +885,12 @@ export async function bundleToSingleHtml(projectDir, options) {
|
|
|
851
885
|
for (const el of [...document.querySelectorAll("[style]")]) {
|
|
852
886
|
el.setAttribute("style", rewriteCssUrlsWithInlinedAssets(el.getAttribute("style") || "", projectDir));
|
|
853
887
|
}
|
|
888
|
+
for (const el of [...document.querySelectorAll(`[${HF_COLOR_GRADING_ATTR}]`)]) {
|
|
889
|
+
const value = el.getAttribute(HF_COLOR_GRADING_ATTR);
|
|
890
|
+
if (value) {
|
|
891
|
+
el.setAttribute(HF_COLOR_GRADING_ATTR, rewriteColorGradingLutWithInlinedAssets(value, projectDir));
|
|
892
|
+
}
|
|
893
|
+
}
|
|
854
894
|
return document.toString();
|
|
855
895
|
}
|
|
856
896
|
//# sourceMappingURL=htmlBundler.js.map
|