diff options
| author | Craig Jennings <c@cjennings.net> | 2026-06-13 16:53:22 -0500 |
|---|---|---|
| committer | Craig Jennings <c@cjennings.net> | 2026-06-13 16:53:22 -0500 |
| commit | f2285ee52f9712ef431fa010ffeb1590dcc6983c (patch) | |
| tree | 2df2bb36a1886fe5dd51676e409e1d5b61a87f77 /scripts/theme-studio/app-core.js | |
| parent | 4ec1d39e5be7dfcd12103b9ba998e44b9d50d97f (diff) | |
| download | dotemacs-f2285ee52f9712ef431fa010ffeb1590dcc6983c.tar.gz dotemacs-f2285ee52f9712ef431fa010ffeb1590dcc6983c.zip | |
Fix theme studio bg-prefixed span inference
Diffstat (limited to 'scripts/theme-studio/app-core.js')
| -rw-r--r-- | scripts/theme-studio/app-core.js | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/scripts/theme-studio/app-core.js b/scripts/theme-studio/app-core.js index 3e9e93d8..1a4a121f 100644 --- a/scripts/theme-studio/app-core.js +++ b/scripts/theme-studio/app-core.js @@ -135,9 +135,12 @@ function lMax(hue,chroma,fgSet,target){ // assignment re-point across a regenerate. function oklchOf(hex){return oklab2oklch(srgb2oklab(hex));} +function isReservedGroundLikeName(name){return /^(bg|fg)(?:[-_+].+|\d.*)$/i.test(name||'');} function columnStem(name){name=name||'color';if(/^color-\d+$/.test(name))return name;name=name.replace(/[+-]\d+$/,'');return name.replace(/\d+$/,'')||'color';} function columnOffset(name){const m=(name||'').match(/([+-]\d+)$/);return m?parseInt(m[1],10):0;} -function columnIdOf(entry){return (entry&&entry[2])||columnStem(entry&&entry[1]);} +function legacyColumnStem(name){return isReservedGroundLikeName(name)?name:columnStem(name);} +function legacyColumnOffset(name){return isReservedGroundLikeName(name)?0:columnOffset(name);} +function columnIdOf(entry){return (entry&&entry[2])||legacyColumnStem(entry&&entry[1]);} function groundRoleOfEntry(entry,ground){ if(!entry)return null; const [hex,name]=entry,col=entry[2],n=(name||'').toLowerCase(),h=(hex||'').toLowerCase(); @@ -171,9 +174,9 @@ function columnsFromPalette(palette,ground){ for(const entry of palette){ const [hex,name]=entry; if(groundRoleOfEntry(entry,ground))continue; - const column=columnIdOf(entry); + const column=columnIdOf(entry),offset=entry[2]?columnOffset(name):legacyColumnOffset(name); if(!byColumn.has(column))byColumn.set(column,{column,members:[]}); - byColumn.get(column).members.push({hex,name,offset:columnOffset(name),column}); + byColumn.get(column).members.push({hex,name,offset,column}); } for(const f of byColumn.values()){ const base=(f.members.find(m=>m.offset===0)||f.members[0]).hex; |
