Skip to content

Instantly share code, notes, and snippets.

View SaulDoesCode's full-sized avatar
🕳️
Just being happy

Saul van der Walt SaulDoesCode

🕳️
Just being happy
View GitHub Profile
class ReactiveVariable {
constructor(val, handle) {
if(typeof handle === 'function') {
this.Value = val;
this.Handle = handle;
} else console.error('ReactiveVariable needs a handler function after the value');
return this.Value;
}
set(val) {
if(this.Value !== val) {
@SaulDoesCode
SaulDoesCode / Observable.js
Last active February 22, 2016 21:40
Small Observable function for data-binding and stuff using Proxies or Object.observe if Proxies are unavailable.
"use strict";
((doc,root) => {
let isArraylike = o => typeof o['length'] !== "undefined",
isFunc = o => typeof o === 'function';
function omitFrom(Arr, ...values) {
if (values.length === 1) {
let temp = [],
@SaulDoesCode
SaulDoesCode / CSSRules.js
Created April 29, 2016 15:58
add or revoke css rules from sheets
function CSSRule(index, selector, rules, sheet) {
if (toString.call(rules) === '[object Object]') {
let temp = '';
for(let key in rules) temp += key + ': ' + (rules[key].includes(';') ? rules[key] : rules[key] + ';\n');
rules = temp
}
sheet.insertRule(selector + "{" + rules + "}", index)
}
function revokeCSSRule(index, sheet) {
@SaulDoesCode
SaulDoesCode / animFrame.js
Created May 2, 2016 21:15
lil' system to make requesting and canceling AnimationFrames a breeze
function animFrame(func) {
return new class {
constructor(fn) {
this.fn = fn
}
start() {
this.fn();
this.interval = requestAnimationFrame(this.start.bind(this));
return this
}
@SaulDoesCode
SaulDoesCode / GetScript.js
Created May 7, 2016 19:56
fetches a script and returns a promise when it's loaded
"use strict";
function GetScript(loc) {
return new Promise((resolve, reject) => {
fetch(loc)
.then(res => res.text())
.then(code => {
let script = document.createElement('script');
script.src = URL.createObjectURL(new Blob([code]));
script.onload = resolve;
document.head.appendChild(script);
@SaulDoesCode
SaulDoesCode / ObservableV2.js
Last active June 10, 2016 19:03
Small Proxy based observables/eventemitters
(function (root) {
let isFunc = o => typeof o === 'function',
isString = o => typeof o === 'string',
isObj = o => toString.call(o) === '[object Object]',
defineprop = Object.defineProperty;
function eventemitter(obj) {
let options = {
evtlisteners: new Set,
@SaulDoesCode
SaulDoesCode / semifunctional-number-experiment.js
Created July 14, 2016 19:33
semi functional experiment with numbers
var plus = (a, b) => a + b;
var minus = (a, b) => a - b;
var divide = (a,b) => a / b;
var multiply = (a,b) => a * b;
var num = a => ({
add(b) {
a = plus(a, b);
return this;
},
@SaulDoesCode
SaulDoesCode / eventSystem.js
Created July 23, 2016 22:05
simple ES6 event system
class eventSystem {
constructor() {
this.listeners = new Map;
}
hasListener(type,func) {
return this.listeners.has(type) && this.listeners.get(type).has(func);
}
addListener(type,func) {
if(!this.listeners.has(type)) this.listeners.set(type,new Set);
this.listeners.get(type).add(func);
@SaulDoesCode
SaulDoesCode / eventListenerAbstraction.js
Created July 25, 2016 14:01
some simple abstraction over target.addEventListener
const eventListener = (target, type, handle) => ({
on(alt, options) {
if (typeof alt != "function") {
options = alt;
alt = null;
}
this.active = true;
this.options = options != undefined ? options : this.options || false;
if (target.addEventListener) target.addEventListener(type, alt || handle, this.options);
return this;
@SaulDoesCode
SaulDoesCode / eventSystemMixinStyle.js
Created July 25, 2016 14:20
self standing event system
const eventSystem = (obj = {}) => {
const listeners = new Map;
function makeHandle(type, func) {
const eventsys = this;
return {
off() {
eventsys.off(type, func);
return this;
},
on() {