primevue-mirror/components/lib/themes/helpers/dt.js

34 lines
1.1 KiB
JavaScript

import { SharedUtils, Theme } from 'primevue/themes';
export const $dt = (tokenPath) => {
const theme = Theme.getTheme();
const variable = dtwt(theme, tokenPath, undefined, 'variable');
const name = variable.match(/--[\w-]+/g)?.[0];
const value = dtwt(theme, tokenPath, undefined, 'value');
return {
name,
variable,
value
};
};
export const dt = (...args) => {
return dtwt(Theme.getTheme(), ...args);
};
export const dtwt = (theme = {}, tokenPath, fallback, type = 'variable') => {
if (tokenPath) {
const { variable: VARIABLE, options: OPTIONS } = Theme.defaults || {};
const { prefix, transform } = theme?.options || OPTIONS || {};
const regex = /{([^}]*)}/g;
const token = SharedUtils.object.test(regex, tokenPath) ? tokenPath : `{${tokenPath}}`;
const isStrictTransform = type === 'value' || transform === 'strict'; // @todo - TRANSFORM: strict | lenient(default)
return isStrictTransform ? Theme.getTokenValue(tokenPath) : SharedUtils.object.getVariableValue(token, undefined, prefix, [VARIABLE.excludedKeyRegex], fallback);
}
return '';
};