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 = (data) => 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() })