fixed recurs
This commit is contained in:
parent
ee537a781b
commit
03a8d13683
49
main.ts
49
main.ts
@ -1,24 +1,36 @@
|
|||||||
type EnumDefinition = Record<string, string>;
|
type EnumDefinition = Record<string, string>;
|
||||||
type EnumBlock = Record<string, EnumDefinition&{_:string}>;
|
type EnumBlock = Record<string, EnumDefinition&{_:string}>;
|
||||||
|
type RecursiveObject<Obj extends EnumBlock> =
|
||||||
function Block<Fields extends EnumBlock>(options:Fields):{[F in keyof Fields]:{[E in keyof Fields[F]]:Fields}}
|
|
||||||
{
|
{
|
||||||
const list = [];
|
[F in keyof Obj]:
|
||||||
let fieldLookup = {};
|
{
|
||||||
|
[E in keyof Omit<Obj[F], "_">]:RecursiveObject<Obj>
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
const proxyOuter = new Proxy({}, {get(_target, propName){
|
function Block<Fields extends EnumBlock>(options:Fields):()=>RecursiveObject<Fields>
|
||||||
fieldLookup = options[propName];
|
{
|
||||||
list.push(fieldLookup._);
|
return ()=>{
|
||||||
return proxyInner
|
const list = [];
|
||||||
}});
|
let fieldLookup = {};
|
||||||
|
|
||||||
const proxyInner = new Proxy({}, {get(_target, valName){
|
const proxyOuter = new Proxy(function(){
|
||||||
list.push(`:${fieldLookup[valName]};`);
|
return list;
|
||||||
console.log(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]};`);
|
||||||
|
return proxyOuter;
|
||||||
|
}});
|
||||||
return proxyOuter;
|
return proxyOuter;
|
||||||
}});
|
}
|
||||||
|
|
||||||
return proxyOuter;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const styles = Block({
|
const styles = Block({
|
||||||
@ -26,9 +38,10 @@ const styles = Block({
|
|||||||
Display:{_:"display", Flex:"flex", Grid:"grid", None:"none", Block:"block", InlineBlock:"inline-block"}
|
Display:{_:"display", Flex:"flex", Grid:"grid", None:"none", Block:"block", InlineBlock:"inline-block"}
|
||||||
});
|
});
|
||||||
|
|
||||||
export default styles
|
function Sheet<UserClasses extends Record<string, ReturnType<typeof styles>>>(userClasses:UserClasses):{[Class in keyof UserClasses]:string}
|
||||||
|
|
||||||
function Sheet<UserClasses extends Record<string, typeof styles>>(userClasses:UserClasses):{[Class in keyof UserClasses]:string}
|
|
||||||
{
|
{
|
||||||
return new Proxy({}, {get(_target, className){}});
|
return new Proxy({}, {get(_target, className){}});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
console.log(styles().Display.Block.Pos.Abs())
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user