ws workshop
parent
899ad58adf
commit
2ad3496510
Binary file not shown.
Binary file not shown.
@ -0,0 +1,93 @@
|
|||||||
|
body {
|
||||||
|
font-size: 1.75rem;
|
||||||
|
font-family: serif;
|
||||||
|
}
|
||||||
|
|
||||||
|
nav, nav * {
|
||||||
|
font-size: 1rem !important;
|
||||||
|
background-color: #ff8d00;
|
||||||
|
color: white!important;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
header.project--header {
|
||||||
|
background-color: #ff8d00;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
a {
|
||||||
|
color: #ff8d00;
|
||||||
|
font-family: sans-serif;
|
||||||
|
}
|
||||||
|
|
||||||
|
a:hover {
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
||||||
|
|
||||||
|
a:after {
|
||||||
|
content: '';
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
h2, h3 {
|
||||||
|
font-size: 2.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
main.project--content {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
main.project--content > * {
|
||||||
|
display: block;
|
||||||
|
margin-inline: auto;
|
||||||
|
max-width: 80ch;
|
||||||
|
}
|
||||||
|
|
||||||
|
video, img {
|
||||||
|
max-height: 80vh;
|
||||||
|
max-width: 100%;
|
||||||
|
object-fit: contain;
|
||||||
|
}
|
||||||
|
|
||||||
|
#svg-container {
|
||||||
|
|
||||||
|
position: fixed;
|
||||||
|
z-index: 200;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
max-width: 100%;
|
||||||
|
max-height: 100%;
|
||||||
|
|
||||||
|
pointer-events: none;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.drawing {
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
pointer-events: all;
|
||||||
|
}
|
||||||
|
|
||||||
|
.drawing:hover {
|
||||||
|
rotate: 1turn;
|
||||||
|
transition: rotate 0.5s ease-out;
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes grow {
|
||||||
|
0% {
|
||||||
|
scale: 0.1;
|
||||||
|
}
|
||||||
|
100% {
|
||||||
|
scale: 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.destination svg path {
|
||||||
|
/* This section calls the slideInFromLeft animation we defined above */
|
||||||
|
animation: 1s cubic-bezier(0.68, -0.6, 0.32, 1.6) 0s 1 grow;
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,29 @@
|
|||||||
|
const socket = new WebSocket('wss://hub.xpub.nl/soupboat/drw/')
|
||||||
|
const svgModel = document.querySelector('#svgElement')
|
||||||
|
const container = document.querySelector('#svg-container')
|
||||||
|
|
||||||
|
socket.onopen = (event) => {
|
||||||
|
socket.send(JSON.stringify({type: 'hello'}))
|
||||||
|
console.log("Connected as destination!")
|
||||||
|
}
|
||||||
|
|
||||||
|
socket.onmessage = (event) => {
|
||||||
|
let message;
|
||||||
|
try {
|
||||||
|
message = JSON.parse(event.data);
|
||||||
|
} catch (e) {}
|
||||||
|
|
||||||
|
if (message?.type == "drawings") {
|
||||||
|
let svg = svgModel.cloneNode();
|
||||||
|
svg.classList.remove("hidden");
|
||||||
|
let path = document.createElementNS("http://www.w3.org/2000/svg", "path");
|
||||||
|
path.setAttribute("d", message.paths);
|
||||||
|
path.setAttribute("fill", "white");
|
||||||
|
path.setAttribute("stroke", "currentColor");
|
||||||
|
path.setAttribute("stroke-width", 16);
|
||||||
|
svg.appendChild(path);
|
||||||
|
svg.style.translate = `${Math.random()*100}vw ${Math.random()*100}vh`
|
||||||
|
svg.addEventListener('click', ()=>{svg.remove()})
|
||||||
|
container.appendChild(svg);
|
||||||
|
}
|
||||||
|
};
|
Loading…
Reference in New Issue