Skip to content

Instantly share code, notes, and snippets.

View ezekielchentnik's full-sized avatar

Ezekiel Chentnik ezekielchentnik

View GitHub Profile
const raff = (render, raf = window.requestAnimationFrame) => {
let redraw = false
let args = null
return (...yargs) => {
if (args === null && !redraw) {
redraw = true
raf(() => {
redraw = false
const app = require('express')();
const http = require('http').Server(app);
const io = require('./io.js')(http);
io.on('connection', socket =>{
console.log('someone connected');
socket.on('start', msg => {
io.emit('message', msg);
});
socket.on('disconnect', () => {
export const connect = store => litElement =>
class extends litElement {
connectedCallback() {
if (super.connectedCallback) {
super.connectedCallback();
}
this._storeUnsubscribe = store.subscribe(() => this.stateChanged(store.getState()));
this.stateChanged(store.getState());
}
@ezekielchentnik
ezekielchentnik / server.js
Created May 1, 2019 12:51
super duper simple static server
const fs = require('fs');
const path = require('path');
const http = require('http');
const root = path.resolve('./dist');
const server = http.createServer((req, res) => {
const file = path.join(
root,
path.normalize(req.url).replace(/^(\.\.[\/\\])+/, '')
let _id = 0;
let cache = {};
const uuid = () => 'x' + (_id++).toString(36);
const sheet = new CSSStyleSheet();
const css = css => {
const className = cache[css] || uuid()
const cached = !!cache[css]
cache[css] = className
let _id = 0
export const uuid = () => 'x' + (_id++).toString(36)
import React, { createContext, useContext, useState } from 'react'
export const createStore = initialState => {
const context = createContext(initialState)
const { Provider } = context
let currentState = initialState
let setState = value => Object.assign(currentState, value)
const useStore = () => [useContext(context), setState]
const Provider = ({ children }) => {
import React from "react";
class Component extends React.Component {
state = this.props.initialState;
_setState = (...args) => this.setState(...args);
_forceUpdate = (...args) => this.forceUpdate(...args);
getArgs() {
const {
state,
// Libraries
import React, { Component, createElement } from "react";
import { from, throwError } from "rxjs";
import { map, distinctUntilChanged } from "rxjs/operators";
// A Component to subscribe to observable streams
export class Stream extends Component {
subscription = null; // keep track of our subscription
_isMounted = false; // keep track if we have mounted, used in subscription to set initial state
@ezekielchentnik
ezekielchentnik / useConfirm.js
Created October 29, 2018 07:20
react hook for confirm
const useConfirm = text => {
const [did, setDid] = useState(false)
const [show, setShow] = useState(false)
useEffect(() => {
if (show) {
setDid(confirm(show))
setShow(false)
}
}, [show]);
return [did, (t = text) => setShow(t)];