File: //usr/share/nodejs/turbolinks/src/turbolinks/helpers.js
// Generated by CoffeeScript 1.12.8
(function() {
var closest, match, preventDefaultSupported,
slice = [].slice;
Turbolinks.copyObject = function(object) {
var key, result, value;
result = {};
for (key in object) {
value = object[key];
result[key] = value;
}
return result;
};
Turbolinks.closest = function(element, selector) {
return closest.call(element, selector);
};
closest = (function() {
var html, ref;
html = document.documentElement;
return (ref = html.closest) != null ? ref : function(selector) {
var node;
node = this;
while (node) {
if (node.nodeType === Node.ELEMENT_NODE && match.call(node, selector)) {
return node;
}
node = node.parentNode;
}
};
})();
Turbolinks.defer = function(callback) {
return setTimeout(callback, 1);
};
Turbolinks.throttle = function(fn) {
var request;
request = null;
return function() {
var args;
args = 1 <= arguments.length ? slice.call(arguments, 0) : [];
return request != null ? request : request = requestAnimationFrame((function(_this) {
return function() {
request = null;
return fn.apply(_this, args);
};
})(this));
};
};
Turbolinks.dispatch = function(eventName, arg) {
var cancelable, data, event, preventDefault, ref, target;
ref = arg != null ? arg : {}, target = ref.target, cancelable = ref.cancelable, data = ref.data;
event = document.createEvent("Events");
event.initEvent(eventName, true, cancelable === true);
event.data = data != null ? data : {};
if (event.cancelable && !preventDefaultSupported) {
preventDefault = event.preventDefault;
event.preventDefault = function() {
if (!this.defaultPrevented) {
Object.defineProperty(this, "defaultPrevented", {
get: function() {
return true;
}
});
}
return preventDefault.call(this);
};
}
(target != null ? target : document).dispatchEvent(event);
return event;
};
preventDefaultSupported = (function() {
var event;
event = document.createEvent("Events");
event.initEvent("test", true, true);
event.preventDefault();
return event.defaultPrevented;
})();
Turbolinks.match = function(element, selector) {
return match.call(element, selector);
};
match = (function() {
var html, ref, ref1, ref2;
html = document.documentElement;
return (ref = (ref1 = (ref2 = html.matchesSelector) != null ? ref2 : html.webkitMatchesSelector) != null ? ref1 : html.msMatchesSelector) != null ? ref : html.mozMatchesSelector;
})();
Turbolinks.uuid = function() {
var i, j, result;
result = "";
for (i = j = 1; j <= 36; i = ++j) {
if (i === 9 || i === 14 || i === 19 || i === 24) {
result += "-";
} else if (i === 15) {
result += "4";
} else if (i === 20) {
result += (Math.floor(Math.random() * 4) + 8).toString(16);
} else {
result += Math.floor(Math.random() * 15).toString(16);
}
}
return result;
};
}).call(this);