fixed recurs
This commit is contained in:
parent
ee537a781b
commit
03a8d13683
29
main.ts
29
main.ts
@ -1,34 +1,47 @@
|
||||
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({
|
||||
Pos:{_:"position", Abs:"absolute", Rel:"relative"},
|
||||
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())
|
||||
|
||||
Loading…
Reference in New Issue
Block a user