From afb9c0aa99848d4d1d3f0601fcb9b6fe8225a7d9 Mon Sep 17 00:00:00 2001 From: Henry Jameson Date: Wed, 12 Feb 2025 14:36:35 +0200 Subject: [PATCH 1/2] cleanup --- src/App.scss | 6 ------ src/services/theme_data/pleromafe.t3.js | 2 -- 2 files changed, 8 deletions(-) delete mode 100644 src/services/theme_data/pleromafe.t3.js diff --git a/src/App.scss b/src/App.scss index c0f2e3fec..0bdc88735 100644 --- a/src/App.scss +++ b/src/App.scss @@ -762,12 +762,6 @@ option { margin-left: 0.7em; margin-top: -1em; } - - &.-neutral { - background-color: var(--badgeNeutral); - color: white; - color: var(--badgeNeutralText, white); - } } .alert { diff --git a/src/services/theme_data/pleromafe.t3.js b/src/services/theme_data/pleromafe.t3.js deleted file mode 100644 index db612a5b5..000000000 --- a/src/services/theme_data/pleromafe.t3.js +++ /dev/null @@ -1,2 +0,0 @@ -export const sampleRules = [ -] From 96a236ed28812a287bbaff6dcbfcf1f4991463a9 Mon Sep 17 00:00:00 2001 From: Henry Jameson Date: Wed, 12 Feb 2025 15:45:46 +0200 Subject: [PATCH 2/2] themes3 optimization --- src/components/button_unstyled.style.js | 1 + .../rich_content/rich_content.style.js | 1 + src/components/root.style.js | 21 -------- .../theme_data/theme_data_3.service.js | 48 ++++++++++++++++++- 4 files changed, 48 insertions(+), 23 deletions(-) diff --git a/src/components/button_unstyled.style.js b/src/components/button_unstyled.style.js index 4142f9a3c..a387ed954 100644 --- a/src/components/button_unstyled.style.js +++ b/src/components/button_unstyled.style.js @@ -2,6 +2,7 @@ export default { name: 'ButtonUnstyled', selector: '.button-unstyled', notEditable: true, + transparent: true, states: { toggled: '.toggled', disabled: ':disabled', diff --git a/src/components/rich_content/rich_content.style.js b/src/components/rich_content/rich_content.style.js index d9cd17aee..eaba9c4b1 100644 --- a/src/components/rich_content/rich_content.style.js +++ b/src/components/rich_content/rich_content.style.js @@ -2,6 +2,7 @@ export default { name: 'RichContent', selector: '.RichContent', notEditable: true, + transparent: true, validInnerComponents: [ 'Text', 'FunText', diff --git a/src/components/root.style.js b/src/components/root.style.js index 9ad614c78..5075e33c8 100644 --- a/src/components/root.style.js +++ b/src/components/root.style.js @@ -2,27 +2,6 @@ export default { name: 'Root', selector: ':root', notEditable: true, - validInnerComponents: [ - // These are purely for --parent--text et such to work - 'Text', - 'Link', - 'Border', - - 'Underlay', - 'Modals', - 'Popover', - 'TopBar', - 'Scrollbar', - 'ScrollbarElement', - 'MobileDrawer', - 'Alert', - 'Button' // mobile post button - ], - validInnerComponentsLite: [ - 'Underlay', - 'Scrollbar', - 'ScrollbarElement' - ], defaultRules: [ { directives: { diff --git a/src/services/theme_data/theme_data_3.service.js b/src/services/theme_data/theme_data_3.service.js index ef00f5435..670d482d8 100644 --- a/src/services/theme_data/theme_data_3.service.js +++ b/src/services/theme_data/theme_data_3.service.js @@ -32,6 +32,7 @@ const components = { Link: null, Icon: null, Border: null, + PanelHeader: null, Panel: null, Chat: null, ChatMessage: null @@ -151,6 +152,25 @@ componentsContext.keys().forEach(key => { } components[component.name] = component }) +Object.keys(components).forEach(key => { + if (key === 'Root') return + components.Root.validInnerComponents = components.Root.validInnerComponents || [] + components.Root.validInnerComponents.push(key) +}) + + +Object.keys(components).forEach(key => { + const component = components[key] + const { validInnerComponents = [] } = component + validInnerComponents.forEach(inner => { + const child = components[inner] + component.possibleChildren = component.possibleChildren || [] + component.possibleChildren.push(child) + child.possibleParents = child.possibleParents || [] + child.possibleParents.push(component) + }) +}) + const engineChecksum = sum(components) @@ -244,7 +264,21 @@ export const init = ({ } const virtualComponents = new Set(Object.values(components).filter(c => c.virtual).map(c => c.name)) + const transparentComponents = new Set(Object.values(components).filter(c => c.transparent).map(c => c.name)) const nonEditableComponents = new Set(Object.values(components).filter(c => c.notEditable).map(c => c.name)) + const extraCompileComponents = new Set([]) + + Object.values(components).forEach(component => { + const relevantRules = ruleset.filter(r => r.component === component.name) + const backgrounds = relevantRules.map(r => r.directives.background).filter(x => x) + const opacities = relevantRules.map(r => r.directives.opacity).filter(x => x) + if ( + backgrounds.some(x => x.match(/--parent/)) || + opacities.some(x => x != null && x < 1)) + { + extraCompileComponents.add(component.name) + } + }) const processCombination = (combination) => { try { @@ -473,11 +507,21 @@ export const init = ({ let validInnerComponents if (editMode) { const temp = (component.validInnerComponentsLite || component.validInnerComponents || []) - validInnerComponents = temp.filter(c => virtualComponents.has(c) && !nonEditableComponents.has(c)) + validInnerComponents = temp + .filter(c => virtualComponents.has(c) && !nonEditableComponents.has(c)) } else if (liteMode) { validInnerComponents = (component.validInnerComponentsLite || component.validInnerComponents || []) - } else { + } else if (component.name === 'Root') { validInnerComponents = component.validInnerComponents || [] + } else { + validInnerComponents = component + .validInnerComponents + ?.filter( + c => virtualComponents.has(c) + || transparentComponents.has(c) + || extraCompileComponents.has(c) + ) + || [] } // Normalizing states and variants to always include "normal"