@vimeo/iris
Version:
Vimeo Design System
47 lines (45 loc) • 1.43 kB
JavaScript
var DEFAULT_MODE = {
COLOR: 'light',
SIZE: 'desktop',
};
function readToken(token, grade) {
if (grade === void 0) { grade = 500; }
if (token.type === 'SIZE') {
var key = 'desktop';
var value = token.modes[key];
if (typeof value === 'string')
return value;
if (typeof value === 'function')
return value(grade);
}
if (token.type === 'COLOR') {
return function (_a) {
var theme = _a.theme;
var key;
// Determine if `theme` is theme name string or a theme object.
if (typeof theme === 'string')
key = theme;
if (typeof (theme === null || theme === void 0 ? void 0 : theme.name) === 'string')
key = theme.name;
var value = validate(token, key);
if (typeof value === 'string')
return value;
if (typeof value === 'function')
return value(grade);
};
}
}
function validate(token, key) {
var value = token.modes[key];
var valid = typeof value === 'function' || typeof value === 'string';
if (!valid) {
console.warn('Invalid Theme: ' + key);
if (token.default)
key = token.default;
if (!token.default)
key = DEFAULT_MODE[token.type];
value = token.modes[key];
}
return value;
}
export { readToken };