Skip to content

Instantly share code, notes, and snippets.

View mjackson's full-sized avatar
💿

Michael Jackson mjackson

💿
View GitHub Profile
@mjackson
mjackson / color-conversion-algorithms.js
Last active April 14, 2024 08:46
RGB, HSV, and HSL color conversion algorithms in JavaScript
/**
* Converts an RGB color value to HSL. Conversion formula
* adapted from http://en.wikipedia.org/wiki/HSL_color_space.
* Assumes r, g, and b are contained in the set [0, 255] and
* returns h, s, and l in the set [0, 1].
*
* @param Number r The red color value
* @param Number g The green color value
* @param Number b The blue color value
* @return Array The HSL representation
@mjackson
mjackson / FirebaseStateMixin.js
Last active February 5, 2016 11:34
A simple mixin for React components that need to bind state to a Firebase ref
var Firebase = require('firebase');
var baseRef = new Firebase('https://my-firebase.firebaseio.com');
function getSnapshotValue(snapshot) {
return snapshot.val();
}
/**
* A mixin for components that want to bind the value of a state variable
* to the value at a Firebase ref.
@mjackson
mjackson / Dispatcher.js
Created August 21, 2014 19:55
An async version of Facebook's flux dispatcher
var d = require('d');
var warning = require('react/lib/warning');
var Promise = require('es6-promise').Promise;
function isNotNull(object) {
return object != null;
}
function Dispatcher() {
this._currentActionName = null;
@mjackson
mjackson / example.js
Last active August 29, 2015 14:06
A proposal for <Route didTransitionTo>
var App = React.createClass({
render: function () {
return (
<this.props.activeRouteHandler/>
);
}
});
var User = React.createClass({
statics: {
willTransitionTo: function (transition, params, query) {
// possibly cancel the transition to a page
},
willTransitionFrom: function (transition, component) {
// possibly cancel the transition away from a page
var App = React.createClass({
statics: {
getRouteProps: function (params, query) {
return {
currentUser: getCurrentUser()
};
}
},
render: function () {
return <this.activeRouteHandler/>;
var promise = new AbortablePromise(function (resolve, reject, onAbort) {
// Use resolve & reject as you normally would.
var request = makeRequest( ... , function (error, response) {
if (error) {
reject(error);
} else {
resolve(response);
}
});
var React = require('react');
var escapeRegExp = require('./utils/escapeRegExp');
var CATALOG = [
{
category: 'Sporting Goods',
products: [
{ name: 'Basketball', price: 4000 },
{ name: 'Boxing Gloves', price: 3500, inStock: true },
{ name: 'Baseball', price: 1000 }
@mjackson
mjackson / AutoBindingComponent.js
Created May 6, 2015 20:35
A React.Component subclass that mimics 0.12's auto-binding behavior
var React = require('react');
class AutoBindingComponent extends React.Component {
constructor(props) {
super(props);
for (var property in this) {
if (this.hasOwnProperty(property) && typeof this[property] === 'function') {
this[property] = this[property].bind(this);
}
@mjackson
mjackson / .gvimrc
Last active November 1, 2019 07:43
My vim setup
set guifont=Monaco:h14
set background=dark
set transparency=3
color base16-chalk