diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..b943dbc --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "deno.enable": true +} \ No newline at end of file diff --git a/main.ts b/main.ts index c20fe6e..9511917 100644 --- a/main.ts +++ b/main.ts @@ -1,6 +1,6 @@ // tss.ts type PseudoKeys = ["hover"|"before"|"after"] | ["hover", "after"|"before"]; -type ValueSignature = (...args:number[])=>void +type ValueSignature = (...args:any[])=>string type EnumDefinition = [property:string, options:Record, values?:Signature]; type EnumBlock = Record>; type RecursiveObject> = @@ -25,31 +25,37 @@ function Block"[StyleProxy]"; @@ -88,16 +97,40 @@ function Blockamount +const funcUnitTRBL = (...args:[t:UnitString, r?:UnitString, b?:UnitString, l?:UnitString])=>args.join(" ") + const styles = Block( { - Pos:["position", { Abs:"absolute", Rel:"relative" }], - Display:[ "display", { Flex:"flex", Grid:"grid", None:"none", Block:"block", InlineBlock:"inline-block" }], - Left:[ "left", { Auto:"auto" }, (left)=>{}] + Pos:["position", { Abs:"absolute", Rel:"relative", Fix:"fixed", Pin:"sticky", No:"static" }], + Dis:["display", { Flex:"flex", Grid:"grid", None:"none", Block:"block", InlineBlock:"inline-block" }], + Box:["box-sizing", { Border:"border-box", Content:"content-box" }], + + L:[ "left", { Auto:"auto"}, funcUnitSingle], + R:[ "right", { Auto:"auto"}, funcUnitSingle], + T:[ "top", { Auto:"auto"}, funcUnitSingle], + B:[ "bottom", { Auto:"auto"}, funcUnitSingle], + + Pad: ["padding", {}, funcUnitTRBL ], + PadT:["padding-top", {}, funcUnitSingle], + PadR:["padding-right", {}, funcUnitSingle], + PadB:["padding-bottom", {}, funcUnitSingle], + PadL:["padding-left", {}, funcUnitSingle], + + Mar: ["margin", {}, funcUnitTRBL ], + MarT:["margin-top", {}, funcUnitSingle], + MarR:["margin-right", {}, funcUnitSingle], + MarB:["margin-bottom", {}, funcUnitSingle], + MarL:["margin-left", {}, funcUnitSingle] } ); let masterSheet = []; -export function Sheet)=>void >>(userClasses:UserClasses):{[Class in keyof UserClasses]:string} + +export function Sheet)=>void >>(userClasses:UserClasses):{[Class in keyof UserClasses]:string} { const hash = Math.floor(Math.random()*10000); return new Proxy(function(){}, {get(_target, className){ @@ -122,28 +155,4 @@ export function Sheet