fixed recurs

This commit is contained in:
Seth Trowbridge 2025-10-19 20:55:01 -04:00
parent ee537a781b
commit 03a8d13683

29
main.ts
View File

@ -1,24 +1,36 @@
type EnumDefinition = Record<string, string>;
type EnumBlock = Record<string, EnumDefinition&{_:string}>;
function Block<Fields extends EnumBlock>(options:Fields):{[F in keyof Fields]:{[E in keyof Fields[F]]:Fields}}
type RecursiveObject<Obj extends EnumBlock> =
{
[F in keyof Obj]:
{
[E in keyof Omit<Obj[F], "_">]:RecursiveObject<Obj>
}
}
function Block<Fields extends EnumBlock>(options:Fields):()=>RecursiveObject<Fields>
{
return ()=>{
const list = [];
let fieldLookup = {};
const proxyOuter = new Proxy({}, {get(_target, propName){
const proxyOuter = new Proxy(function(){
return list;
}, {get(_target, propName){
fieldLookup = options[propName];
if(fieldLookup)
{
list.push(fieldLookup._);
}
return proxyInner
}});
const proxyInner = new Proxy({}, {get(_target, valName){
list.push(`:${fieldLookup[valName]};`);
console.log(list);
return proxyOuter;
}});
return proxyOuter;
}
}
const styles = Block({
@ -26,9 +38,10 @@ const styles = Block({
Display:{_:"display", Flex:"flex", Grid:"grid", None:"none", Block:"block", InlineBlock:"inline-block"}
});
export default styles
function Sheet<UserClasses extends Record<string, typeof styles>>(userClasses:UserClasses):{[Class in keyof UserClasses]:string}
function Sheet<UserClasses extends Record<string, ReturnType<typeof styles>>>(userClasses:UserClasses):{[Class in keyof UserClasses]:string}
{
return new Proxy({}, {get(_target, className){}});
}
console.log(styles().Display.Block.Pos.Abs())