Merge pull request #538 from gabrielsjoberg/external_updates

Update autolink.js and taphold.js from upstream.
This commit is contained in:
Jon Atkins 2013-09-04 13:53:13 -07:00
commit 1d5412689b
2 changed files with 29 additions and 50 deletions

34
external/autolink.js vendored
View File

@ -1,33 +1 @@
// Generated by CoffeeScript 1.4.0
(function() {
var autoLink,
__slice = [].slice;
autoLink = function() {
var callbackThunk, key, link_attributes, option, options, url_pattern, value;
options = 1 <= arguments.length ? __slice.call(arguments, 0) : [];
link_attributes = '';
option = options[0];
url_pattern = /(^|\s)(\b(https?|ftp):\/\/[\-A-Z0-9+\u0026@#\/%?=~_|!:,.;]*[\-A-Z0-9+\u0026@#\/%=~_|])/gi;
if (!(options.length > 0)) {
return this.replace(url_pattern, "$1<a href='$2'>$2</a>");
}
if ((option['callback'] != null) && typeof option['callback'] === 'function') {
callbackThunk = option['callback'];
delete option['callback'];
}
for (key in option) {
value = option[key];
link_attributes += " " + key + "='" + value + "'";
}
return this.replace(url_pattern, function(match, space, url) {
var link, returnCallback;
returnCallback = callbackThunk && callbackThunk(url);
link = returnCallback || ("<a href='" + url + "'" + link_attributes + ">" + url + "</a>");
return "" + space + link;
});
};
String.prototype['autoLink'] = autoLink;
}).call(this);
(function(){var f=[].slice;String.prototype.autoLink=function(){var c,e,d,a,b;a=1<=arguments.length?f.call(arguments,0):[];e="";d=a[0];b=/(^|\s)((?:https?|ftp):\/\/[\-A-Z0-9+\u0026@#\/%?=~_|!:,.;]*[\-A-Z0-9+\u0026@#\/%=~_|])/gi;if(!(0<a.length))return this.replace(b,"$1<a href='$2'>$2</a>");for(c in d)a=d[c],"callback"!==c&&(e+=" "+c+"='"+a+"'");return this.replace(b,function(a,c,b){a=("function"===typeof d.callback?d.callback(b):void 0)||"<a href='"+b+"'"+e+">"+b+"</a>";return""+c+a})}}).call(this);

45
external/taphold.js vendored
View File

@ -1,26 +1,35 @@
// @author Rich Adams <rich@richadams.me>
// Implements a tap and hold functionality. If you click/tap and release, it will trigger a normal
// click event. But if you click/tap and hold for 1s, it will trigger a taphold event instead.
// click event. But if you click/tap and hold for 1s (default), it will trigger a taphold event instead.
;(function($)
{
// Default options
var defaults = {
duration: 1000, // ms
clickHandler: null
}
// When start of a taphold event is triggered.
function startHandler(event)
{
var $elem = jQuery(this);
// Merge the defaults and any user defined settings.
settings = jQuery.extend({}, defaults, event.data);
// If object also has click handler, store it and unbind. Taphold will trigger the
// click itself, rather than normal propagation.
if (typeof $elem.data("events") != "undefined"
&& typeof $elem.data("events").click != "undefined")
if (typeof $_data($elem, "events") != "undefined"
&& typeof $_data($elem, "events").click != "undefined")
{
// Find the one without a namespace defined.
for (var c in $elem.data("events").click)
for (var c in $_data($elem, "events").click)
{
if ($elem.data("events").click[c].namespace == "")
if ($_data($elem, "events").click[c].namespace == "")
{
var handler = $elem.data("events").click[c].handler
var handler = $_data($elem, "events").click[c].handler
$elem.data("taphold_click_handler", handler);
$elem.unbind("click", handler);
break;
@ -28,11 +37,9 @@
}
}
// Otherwise, if a custom click handler was explicitly defined, then store it instead.
else if (typeof event.data != "undefined"
&& event.data != null
&& typeof event.data.clickHandler == "function")
else if (typeof settings.clickHandler == "function")
{
$elem.data("taphold_click_handler", event.data.clickHandler);
$elem.data("taphold_click_handler", settings.clickHandler);
}
// Reset the flags
@ -52,7 +59,7 @@
$elem.trigger(jQuery.extend(event, jQuery.Event("taphold")));
$elem.data("taphold_triggered", true);
}
}, 1000));
}, settings.duration));
}
// When user ends a tap or click, decide what we should do.
@ -88,19 +95,23 @@
$(this).data("taphold_cancelled", true);
}
// Determine if touch events are supported.
var touchSupported = ("ontouchstart" in window) // Most browsers
|| ("onmsgesturechange" in window); // Mircosoft
var taphold = $.event.special.taphold =
{
setup: function(data)
{
$(this).bind("touchstart mousedown", data, startHandler)
.bind("touchend mouseup", stopHandler)
.bind("touchmove mouseleave", leaveHandler);
$(this).bind((touchSupported ? "touchstart" : "mousedown"), data, startHandler)
.bind((touchSupported ? "touchend" : "mouseup"), stopHandler)
.bind((touchSupported ? "touchmove" : "mouseleave"), leaveHandler);
},
teardown: function(namespaces)
{
$(this).unbind("touchstart mousedown", startHandler)
.unbind("touchend mouseup", stopHandler)
.unbind("touchmove mouseleave", leaveHandler);
$(this).unbind((touchSupported ? "touchstart" : "mousedown"), startHandler)
.unbind((touchSupported ? "touchend" : "mouseup"), stopHandler)
.unbind((touchSupported ? "touchmove" : "mouseleave"), leaveHandler);
}
};
})(jQuery);