Separate parserender test, small template additions and fixes

This commit is contained in:
metacryst
2024-05-02 15:38:02 -05:00
parent fae1797c1c
commit 99be6cba99
6 changed files with 78 additions and 59 deletions

View File

@@ -148,52 +148,4 @@ window.testSuites.push( class testParse {
window.Registry.parseConstructor(Space)
}
// CopyTo() {
// let str = "render=()=>{VStack(()=>{"
// let ret = str.copyTo("{")
// if(ret !== "render=()=>") return "Copy 1 failed!"
// }
ParseRender() {
class Sidebar extends Shadow {
$$windowState = windowState
$$form = Forms.observe(window.location.pathname)
$sidebarPos = -200
render = () => {
VStack(() => {
ForEach(this.form.children, (form) => {
switch(form.constructor.name) {
case "File":
SidebarFile(form)
break
case "Space":
SidebarSpace(form)
break
}
})
})
.background("black")
.positionType("absolute")
.x(this.windowState.sidebarOut ? 0 : -200)
.y(0)
.width(200, "px")
.height(100, "vh")
}
}
let result = new Registry.parseRender(Sidebar).parse()
console.log(result)
let expectedOutput = "[[VStack.ForEach, form.children], [VStack.x, windowState.sidebarOut]]"
if(JSON.stringify(result) !== JSON.stringify(expectedOutput)) {
return "Result does not match expected array!"
}
}
// disallow addEventListener inside of render
})

54
Test/parserender.test.js Normal file
View File

@@ -0,0 +1,54 @@
window.testSuites.push(
class ParseRender {
// CopyTo() {
// let str = "render=()=>{VStack(()=>{"
// let ret = str.copyTo("{")
// if(ret !== "render=()=>") return "Copy 1 failed!"
// }
ParseRender() {
class Sidebar extends Shadow {
$$windowState = windowState
$$form = Forms.observe(window.location.pathname)
$sidebarPos = -200
render = () => {
VStack(() => {
ForEach(this.form.children, (form) => {
switch(form.constructor.name) {
case "File":
SidebarFile(form)
break
case "Space":
SidebarSpace(form)
break
}
})
})
.background("black")
.positionType("absolute")
.x(this.windowState.sidebarOut ? 0 : -200)
.y(0)
.width(200, "px")
.height(100, "vh")
}
}
let result = new Registry.parseRender(Sidebar).parse()
console.log(result)
let expectedOutput = "[[VStack.ForEach, form.children], [VStack.x, windowState.sidebarOut]]"
if(JSON.stringify(result) !== JSON.stringify(expectedOutput)) {
return "Result does not match expected array!"
}
}
// only functions which return a view may be called
// no addEventListener usage
}
)

View File

@@ -5,6 +5,7 @@ await import ("./parse.test.js")
await import ("./init.test.js")
await import ("./render.test.js")
await import ("./observedobject.test.js")
await import ("./parserender.test.js")
window.randomName = function randomName(prefix) {
const sanitizedPrefix = prefix.toLowerCase().replace(/[^a-z0-9]/g, '');

13
app.js Normal file
View File

@@ -0,0 +1,13 @@
/*
Captured Sun
*/
"use strict";
class Home extends Page {
render = () => {
("hello world")
}
}
export default Home

View File

@@ -5,18 +5,13 @@
<link rel="icon" href="">
<link rel="stylesheet" href="">
<script src=""></script>
<script type="module" src="https://server.parchment.page/quill.js"></script>
<script src="Quill/index.js"></script>
<script type="module">
// EXAMPLE ROUTES
// import President from "./Web/President/President.js";
// import RepublicanPrimaries from "./Web/President/RepublicanPrimaries.js";
// import MyRepresentatives from "./Web/myRepresentatives/MyRepresentatives.js";
// window.routes = {
// "/": President,
// "/exampleone": RepublicanPrimaries,
// "/exampletwo/examplethree": MyRepresentatives
// }
import Home from "./app.js"
window.routes = {
"/": Home
}
</script>
</head>
<body>

View File

@@ -675,6 +675,10 @@ function extendHTMLElementWithStyleSetters() {
extendHTMLElementWithStyleSetters();
HTMLElement.prototype.padding = function(direction, value) {
if(!value) {
this.style.padding = direction;
}
const directionName = `padding${direction.charAt(0).toUpperCase()}${direction.slice(1)}`;
if (typeof value === 'number') {
this.style[directionName] = `${value}px`;