Skip to content

Instantly share code, notes, and snippets.

@wolfflow
wolfflow / EaseLookup.coffee
Created November 29, 2012 12:21
Bridge from jQuery.easing to GreenSock TweenLite/TweenMax easings
EaseLookup = {}
EaseLookup.find = (effect) ->
({
"linear": Linear.easeNone
"swing": Quad.easeOut
"easeIn": Linear.easeIn
"easeOut": Linear.easeOut
"easeInOut": Linear.easeInOut
@wolfflow
wolfflow / extend.rx.jquery.coffee
Created November 30, 2012 12:16
Extending rx.jquery bindings
UserEvents = {foo:"foo", bar:"bar"}
for key, value of UserEvents
$.fn[key+"AsObservable"] = (eventData) ->
@bindAsObservable value, eventData
@wolfflow
wolfflow / watcher.coffee
Created January 18, 2013 07:39
BaconJS activity/inactivity detection
activity = $(document).asEventStream "keyup mousemove"
inactivity = activity.skipDuplicates().map((x)->x.timeStamp).toProperty("")
activity.subscribe(-> $("#test").show())
inactivity.combine(inactivity.delay(1500), (a, b) -> a is b)
.filter((x)->x).subscribe(-> $("#test").hide())
@wolfflow
wolfflow / init.coffee
Last active December 11, 2015 17:09
BaconJS Timed KeySequence listener
arrayEquals = (a,b) -> $(a).not(b).length == 0 && $(b).not(a).length == 0
always = (value) -> (_) -> value
allKeyUps = $(document).asEventStream("keyup")
keyCodeIs = (keyCode) -> (event) -> event.keyCode is keyCode
keyUps = (keyCode) -> allKeyUps.filter keyCodeIs(keyCode)
keyState = (keyCode, value) -> keyUps(keyCode).map(always(value))
arrowKeyState = Bacon.mergeAll([
@wolfflow
wolfflow / init.coffee
Created January 25, 2013 15:31
BaconJS Konami code timed sequence
arrayEquals = (a,b) -> $(a).not(b).length == 0 && $(b).not(a).length == 0
always = (value) -> (_) -> value
allKeyUps = $(document).asEventStream("keyup")
keyCodeIs = (keyCode) -> (event) -> event.keyCode is keyCode
keyUps = (keyCode) -> allKeyUps.filter keyCodeIs(keyCode)
keyState = (keyCode, value) -> keyUps(keyCode).map(always(value))
arrowKeyState = Bacon.mergeAll([
@wolfflow
wolfflow / Bacon.UI.coffee
Last active December 12, 2015 07:48
CoffeeScript version done with js2coffee and some manual formatting ^ ^ )
nonEmpty = (x) -> x and x.length > 0
isChrome = navigator.userAgent.toLowerCase().indexOf("chrome") > -1
Bacon.UI = {}
Bacon.UI.textFieldValue = (textfield, initValue) ->
getValue = ->
textfield.val()
autofillPoller = ->
if textfield.attr("type") is "password"
Bacon.interval 100
else if isChrome
@wolfflow
wolfflow / Bacon.UI.js
Created February 8, 2013 14:22
Bacon.UI mini)
(function () {
Bacon.UI = {
ajax: function (params) {
return Bacon.fromPromise($.ajax(params))
},
get: function (url, data, dataType) {
return this.ajax({ url: url, dataType: dataType, data: data })
},
@wolfflow
wolfflow / doubleclick.coffee
Created February 14, 2013 07:46
Bacon.js user defined doubleclick
TIME_INTERVAL = 350
clicked = Bacon.fromEventTarget(document.body, "click").toProperty()
clicked.combine(clicked.delay(TIME_INTERVAL), (a,b)->
a isnt b and a.target is b.target and a.timeStamp - b.timeStamp <= TIME_INTERVAL
)
.filter((x)->x)
.assign((x)->console.log "DONE", x)
@wolfflow
wolfflow / doubleclick.coffee
Created February 14, 2013 07:56
another Bacon.js user defined doubleclick
TIME_INTERVAL = 350
clicked = Bacon.fromEventTarget(document.body, "click")
clicked.bufferWithCount(2)
.map((x) -> x[1].timeStamp - x[0].timeStamp)
.filter((x) -> x <= TIME_INTERVAL)
.assign((x) -> console.log "Done in #{x}")
@wolfflow
wolfflow / activity.coffee
Created February 14, 2013 12:29
prevent mousemove dupe values and sample with interval
$("body").asEventStream("mousemove")
.map((e)-> [e.screenX, e.screenY].join(""))
.toProperty()
.sample(100)
.skipDuplicates()
.map(->Date.now())
.assign (x) ->
console.log x