-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathapp-v3-ui-settings.js
More file actions
26 lines (23 loc) · 926 Bytes
/
Copy pathapp-v3-ui-settings.js
File metadata and controls
26 lines (23 loc) · 926 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
export const FALLBACK_SITE_SETTINGS = Object.freeze({
shellWidth: 1200,
sectionGap: 24,
surfaceRadius: 32,
mediaFit: "cover"
});
function toFiniteNumber(value, fallback) {
const numberValue = Number(value);
return Number.isFinite(numberValue) ? numberValue : fallback;
}
export function normalizeUiSiteSettings(settings = {}, defaults = FALLBACK_SITE_SETTINGS) {
const safeDefaults = {
...FALLBACK_SITE_SETTINGS,
...(defaults && typeof defaults === "object" ? defaults : {})
};
const source = settings && typeof settings === "object" ? settings : {};
return {
shellWidth: toFiniteNumber(source.shellWidth, safeDefaults.shellWidth),
sectionGap: toFiniteNumber(source.sectionGap, safeDefaults.sectionGap),
surfaceRadius: toFiniteNumber(source.surfaceRadius, safeDefaults.surfaceRadius),
mediaFit: source.mediaFit === "contain" ? "contain" : safeDefaults.mediaFit || "cover"
};
}