tweak-tools
Version:
Tweak your React projects until awesomeness
48 lines (47 loc) • 1.87 kB
JavaScript
;
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __exportStar = (this && this.__exportStar) || function(m, exports) {
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.useTh = exports.mergeTheme = void 0;
const react_1 = require("react");
const stitches_config_1 = require("./stitches.config");
const context_1 = require("../context");
const utils_1 = require("../utils");
function mergeTheme(newTheme) {
const defaultTheme = (0, stitches_config_1.getDefaultTheme)();
if (!newTheme)
return { theme: defaultTheme, className: '' };
Object.keys(newTheme).forEach((key) => {
// @ts-ignore
Object.assign(defaultTheme[key], newTheme[key]);
});
const customTheme = (0, stitches_config_1.createTheme)(defaultTheme);
return { theme: defaultTheme, className: customTheme.className };
}
exports.mergeTheme = mergeTheme;
function useTh(category, key) {
const { theme } = (0, react_1.useContext)(context_1.ThemeContext);
if (!(category in theme) || !(key in theme[category])) {
console.warn(utils_1.TweakErrors.THEME_ERROR, category, key);
return '';
}
let _key = key;
while (true) {
// @ts-ignore
let value = theme[category][_key];
if (typeof value === 'string' && value.charAt(0) === '$')
_key = value.substr(1);
else
return value;
}
}
exports.useTh = useTh;
__exportStar(require("./stitches.config"), exports);