|
|
|
import { init } from "../../build/package/init.js";
|
|
|
|
import { attributesModule } from "../../build/package/modules/attributes.js";
|
|
|
|
import { styleModule } from "../../build/package/modules/style.js";
|
|
|
|
import { eventListenersModule } from "../../build/package/modules/eventlisteners.js";
|
|
|
|
import { h } from "../../build/package/h.js";
|
|
|
|
|
|
|
|
var patch = init([attributesModule, styleModule, eventListenersModule]);
|
|
|
|
|
|
|
|
var vnode;
|
|
|
|
|
|
|
|
var data = {
|
|
|
|
degRotation: 0,
|
|
|
|
};
|
|
|
|
|
|
|
|
function gRotation() {
|
|
|
|
// console.log("gRotation: %s", data.degRotation);
|
|
|
|
return "rotate(" + data.degRotation + "deg)";
|
|
|
|
}
|
|
|
|
|
|
|
|
function triangleClick(id) {
|
|
|
|
console.log("triangleClick: %s", id);
|
|
|
|
render();
|
|
|
|
}
|
|
|
|
|
|
|
|
function handleRotate(degs) {
|
|
|
|
data.degRotation += degs;
|
|
|
|
console.log("handleRotate: %s, %s", degs, data.degRotation);
|
|
|
|
render();
|
|
|
|
}
|
|
|
|
|
|
|
|
function handleReset(degs) {
|
|
|
|
data.degRotation = degs;
|
|
|
|
console.log("handleReset: %s", degs);
|
|
|
|
render();
|
|
|
|
}
|
|
|
|
|
|
|
|
function render() {
|
|
|
|
vnode = patch(vnode, view(data));
|
|
|
|
}
|
|
|
|
|
|
|
|
const hTriangle = (id, degRotation) =>
|
|
|
|
h("polygon#" + id, {
|
|
|
|
attrs: {
|
|
|
|
points: "-50,-88 0,-175 50,-88",
|
|
|
|
transform: "rotate(" + degRotation + ")",
|
|
|
|
"stroke-width": 3,
|
|
|
|
},
|
|
|
|
on: {
|
|
|
|
click: () => {
|
|
|
|
triangleClick(id);
|
|
|
|
},
|
|
|
|
},
|
|
|
|
});
|
|
|
|
|
|
|
|
const view = () =>
|
|
|
|
h("div.view", [
|
|
|
|
h("h1", "Snabbdom SVG Carousel"),
|
|
|
|
h(
|
|
|
|
"svg",
|
|
|
|
{ attrs: { width: 380, height: 380, viewBox: [-190, -190, 380, 380] } },
|
|
|
|
[
|
|
|
|
h(
|
|
|
|
"g#carousel",
|
|
|
|
{
|
|
|
|
style: { "-webkit-transform": gRotation(), transform: gRotation() },
|
|
|
|
},
|
|
|
|
[
|
|
|
|
hTriangle("yellow", 0),
|
|
|
|
hTriangle("green", 60),
|
|
|
|
hTriangle("magenta", 120),
|
|
|
|
hTriangle("red", 180),
|
|
|
|
hTriangle("cyan", 240),
|
|
|
|
hTriangle("blue", 300),
|
|
|
|
]
|
|
|
|
),
|
|
|
|
]
|
|
|
|
),
|
|
|
|
h(
|
|
|
|
"button",
|
|
|
|
{
|
|
|
|
on: {
|
|
|
|
click: () => {
|
|
|
|
handleRotate(60);
|
|
|
|
},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
"Rotate Clockwise"
|
|
|
|
),
|
|
|
|
h(
|
|
|
|
"button",
|
|
|
|
{
|
|
|
|
on: {
|
|
|
|
click: () => {
|
|
|
|
handleRotate(-60);
|
|
|
|
},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
"Rotate Anticlockwise"
|
|
|
|
),
|
|
|
|
h(
|
|
|
|
"button",
|
|
|
|
{
|
|
|
|
on: {
|
|
|
|
click: () => {
|
|
|
|
handleReset(0);
|
|
|
|
},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
"Reset"
|
|
|
|
),
|
|
|
|
]);
|
|
|
|
|
|
|
|
window.addEventListener("DOMContentLoaded", () => {
|
|
|
|
var container = document.getElementById("container");
|
|
|
|
vnode = patch(container, view(data));
|
|
|
|
render();
|
|
|
|
});
|