@ozen-ui/kit
Version:
React component library
40 lines (39 loc) • 1.55 kB
JavaScript
import { __assign, __read, __values } from "tslib";
import { useMemo } from 'react';
import { useTheme, cnThemeProvider, themeHelper, } from '../../components/ThemeProvider';
var lastThemeTokens;
var res;
/**
* @deprecated Хук устарел. Для замены используйте {@link useThemeVariables}
*/
export function useThemeVars() {
var themeTokens = (useTheme() || {}).tokens;
return useMemo(function () {
var e_1, _a, _b;
if (lastThemeTokens === themeTokens) {
return res;
}
lastThemeTokens = themeTokens;
var el = document.createElement('div');
el.className = cnThemeProvider(themeTokens);
document.body.appendChild(el);
try {
for (var _c = __values(Object.entries(themeHelper)), _d = _c.next(); !_d.done; _d = _c.next()) {
var _e = __read(_d.value, 2), key = _e[0], value = _e[1];
res = __assign(__assign({}, res), (_b = {}, _b[key] = value.reduce(function (acc, value) {
var _a;
return (__assign(__assign({}, acc), (_a = {}, _a[value] = window.getComputedStyle(el).getPropertyValue(value).trim(), _a)));
}, {}), _b));
}
}
catch (e_1_1) { e_1 = { error: e_1_1 }; }
finally {
try {
if (_d && !_d.done && (_a = _c.return)) _a.call(_c);
}
finally { if (e_1) throw e_1.error; }
}
el.remove();
return res;
}, [themeTokens]);
}