From 4a10417ed47cdfe08b2ff4939212116dba3e965f Mon Sep 17 00:00:00 2001 From: Henry Jameson Date: Mon, 19 Feb 2024 19:59:38 +0200 Subject: initial work on dynamic slots + move remaining css stuff into separate file --- src/services/theme_data/theme_data_3.service.js | 88 +++---------------------- 1 file changed, 10 insertions(+), 78 deletions(-) (limited to 'src/services/theme_data/theme_data_3.service.js') diff --git a/src/services/theme_data/theme_data_3.service.js b/src/services/theme_data/theme_data_3.service.js index 88bff2aa..af40758c 100644 --- a/src/services/theme_data/theme_data_3.service.js +++ b/src/services/theme_data/theme_data_3.service.js @@ -13,12 +13,6 @@ import { process } from './theme3_slot_functions.js' -import { - getCssShadow, - getCssShadowFilter, - getCssColorString -} from './css_utils.js' - const DEBUG = false // Ensuring the order of components @@ -105,78 +99,6 @@ const getTextColorAlpha = (directives, intendedTextColor, dynamicVars, staticVar } } -export const getCssRules = (rules, staticVars) => rules.map(rule => { - let selector = rule.selector - if (!selector) { - selector = 'body' - } - const header = selector + ' {' - const footer = '}' - - const virtualDirectives = Object.entries(rule.virtualDirectives || {}).map(([k, v]) => { - return ' ' + k + ': ' + v - }).join(';\n') - - let directives - if (rule.component !== 'Root') { - directives = Object.entries(rule.directives).map(([k, v]) => { - switch (k) { - case 'roundness': { - return ' ' + [ - '--roundness: ' + v + 'px' - ].join(';\n ') - } - case 'shadow': { - return ' ' + [ - '--shadow: ' + getCssShadow(rule.dynamicVars.shadow), - '--shadowFilter: ' + getCssShadowFilter(rule.dynamicVars.shadow), - '--shadowInset: ' + getCssShadow(rule.dynamicVars.shadow, true) - ].join(';\n ') - } - case 'background': { - if (v === 'transparent') { - return [ - rule.directives.backgroundNoCssColor !== 'yes' ? ('background-color: ' + v) : '', - ' --background: ' + v - ].filter(x => x).join(';\n') - } - const color = getCssColorString(rule.dynamicVars.background, rule.directives.opacity) - return [ - rule.directives.backgroundNoCssColor !== 'yes' ? ('background-color: ' + color) : '', - ' --background: ' + color - ].filter(x => x).join(';\n') - } - case 'textColor': { - if (rule.directives.textNoCssColor === 'yes') { return '' } - return 'color: ' + v - } - default: - if (k.startsWith('--')) { - const [type, value] = v.split('|').map(x => x.trim()) // woah, Extreme! - switch (type) { - case 'color': - return k + ': ' + rgba2css(findColor(value, rule.dynamicVars, staticVars)) - default: - return '' - } - } - return '' - } - }).filter(x => x).map(x => ' ' + x).join(';\n') - } else { - directives = {} - } - - return [ - header, - directives + ';', - (!rule.virtual && rule.directives.textNoCssColor !== 'yes') ? ' color: var(--text);' : '', - '', - virtualDirectives, - footer - ].join('\n') -}).filter(x => x) - // Loading all style.js[on] files dynamically const componentsContext = require.context('src', true, /\.style.js(on)?$/) componentsContext.keys().forEach(key => { @@ -587,6 +509,16 @@ export const init = (extraRuleset, palette) => { dynamicVars.stacked = lowerLevelStackedBackground dynamicVars.background = computed[selector].background + const dynamicSlots = Object.entries(computedDirectives).filter(([k, v]) => k.startsWith('--')) + + dynamicSlots.forEach(([k, v]) => { + const [type, value] = v.split('|').map(x => x.trim()) // woah, Extreme! + switch (type) { + case 'color': + dynamicVars[k] = findColor(value, dynamicVars, palette) + } + }) + addRule({ dynamicVars, selector: cssSelector, -- cgit v1.2.3-70-g09d2