I hereby claim:
- I am krofdrakula on github.
- I am krofdrakula (https://keybase.io/krofdrakula) on keybase.
- I have a public key whose fingerprint is A5B2 D08D 4333 E167 DB37 A7C0 6444 7954 106D 1D39
To claim this, I am signing this object:
| import { h, Component } from 'preact'; | |
| const withState = Wrapped => class extends Component { | |
| constructor(props) { | |
| super(props); | |
| this.state = props; | |
| } | |
| componentWillReceiveProps(nextProps) { | |
| this.setState(nextProps); |
| import { options } from 'preact'; | |
| import cx from 'classnames'; | |
| let old = options.vnode; | |
| options.vnode = vnode => { | |
| let isElement = typeof vnode.nodeName==='string', | |
| props = vnode.attributes || {}, | |
| key = props.class ? 'class' : 'className'; | |
| if (isElement && props[key] && typeof props[key]==='object') { | |
| props[key] = cx(props[key]); |
| class Vec2d { | |
| constructor(x, y) { this.reset(x, y); } | |
| get mag() { return Math.sqrt(this.dot(this)); } | |
| clone() { return new Vec2d(this.x, this.y); } | |
| reset(x, y) { this.x = x; this.y = y; return this; } | |
| neg() { return this.scale(-1); } | |
| norm() { | |
| let m = this.mag; | |
| if (m > 0) return this.scale(1 / m); | |
| return this; |
| scrolling: yes | |
| height: 800 |
| // Use `<% ... %>` to execute blocks of JavaScript, `<%= ... %>` to write | |
| // out the result of the embedded expression. | |
| function tmpl(str, params) { | |
| if (!str) return ''; | |
| function generateOutput(str) { | |
| return " p.push('" + str.replace(/'/g, "\\'").split(/\r?\n/g).join("\\n');\n p.push('") + "');\n"; | |
| } | |
| var fn; |
I hereby claim:
To claim this, I am signing this object:
| (function(global) { | |
| function extend(obj) { | |
| for (var i = 1; i < arguments.length; i++) { | |
| var source = arguments[i]; | |
| for (var name in source) if (source.hasOwnProperty(name)) | |
| obj[name] = source[name]; | |
| } | |
| return obj; | |
| } |
| (function(global) { | |
| function Dither(container, width, height) { | |
| this.container = container; | |
| this.width = width; | |
| this.height = height; | |
| this.canvas = null; | |
| this.image = null; | |
| this.draw = this.draw.bind(this); |
| function ObjectPool(Type) { | |
| this.Type = Type; | |
| this.available = []; | |
| this.active = []; | |
| } | |
| ObjectPool.prototype.create = function() { | |
| var args = [].slice.apply(arguments), self = this, inst, ret; | |
| if (this.available.length == 0) { | |
| var Temp = function() {}; |
| // A very light-weight templating function | |
| // Use <% ... %> to embed code, <%= ... %> to output expressions. | |
| // | |
| // Caveat: because the parser makes no attempts at interpreting | |
| // any `<%` and `%>` inside code blocks, so if you need | |
| // metatemplating, you need to escape those sequences | |
| // just like '<scr'+'ipt>' in script tags. | |
| // | |
| // See examples of usage below. | |
| function template(str, params) { |