Skip to content

Instantly share code, notes, and snippets.

View malte-wessel's full-sized avatar

Malte Wessel malte-wessel

View GitHub Profile
import { Component } from 'melody-component';
import { component } from 'melody-idom';
export default function mapProps(mapper) {
return Component => class MapPropsComponent extends Component {
render() {
return component(Component, 'child', mapper(props));
}
};
}
import { createComponent } from 'melody-component';
import { component } from 'melody-idom';
export default function mapProps(mapper) {
return Component => createComponent({
render() {
return component(Component, 'child', mapper(props));
}
});
}
// Stateful
const MyComponent = createComponent({
render(state, props, children, childrenArgs) {
elementOpen('section');
children(...childrenArgs);
elementClose('section');
}
});
// Stateless
{% property 'expandable' with { type: 'boolean', required: true } %}
{% property 'expanded' with { type: 'boolean', required: true } %}
{% property 'toggle' with { type: 'function' } %}
{% property 'modifier' with { type: 'string' } %}
{% property 'children' with { type: 'node', required: true } %}
{% property 'title' with { type: 'node' } %}
<div
class={{ "box box--" + modifier }}
import { component } from 'melody-component';
const mapProps = mapper => Component => props => component(Component, props.key, mapper(props));
const Box = props => {
const { children, childrenArgs, title } = props;
o('div', { className: 'box' });
if (title) {
o('div', { className: 'box__title' });
text(title);
c('div');
}
o('div', { className: 'box__body' });
children(...childrenArgs);
@malte-wessel
malte-wessel / index.js
Created June 6, 2017 19:36
requirebin sketch
const code = 'console.log("foo")';
console.log(require("babylon").parse(code, {
// parse in strict mode and allow module declarations
sourceType: "module",
plugins: [
// enable jsx and flow syntax
"jsx",
@malte-wessel
malte-wessel / index.js
Created June 6, 2017 20:05
requirebin sketch
const Inferno = require('inferno');
const InfernoServer = require('inferno-server');
const createElement = require('inferno-create-element');
const tree = createElement('div', { className: 'basic' },
createElement('span', { className: 'foo' }, 'Hello World')
);
const root = document.getElementById('root');
// https://github.com/salsita/geo-tree
// Red-black tree for geo coordinates, scalar indices with z-curve
import GeoTree from 'geo-tree';
const gt = new GeoTree();
// Items sorted by relevance, data holds itemId
const items = [
{lat: 48.85886, lng: 2.34706, data: 3849712},
{lat: 52.50754, lng: 13.42614, data: 234910},
@malte-wessel
malte-wessel / poll.js
Last active December 14, 2018 09:47
Polling with Observables / RxJs
import { Observable } from 'rxjs/Observable';
import { fromPromise } from 'rxjs/observable/fromPromise';
import 'rxjs/add/operator/delay';
import 'rxjs/add/operator/map';
import 'rxjs/add/operator/expand';
import 'rxjs/add/operator/takeWhile';
import 'rxjs/add/operator/catch';
const defaultIsComplete = () => false;
const defaultKeepIntervalLow = () => false;