// Credit: http://gist.github.com/399624 // The click event will be fired with a small delay but will not fire upon a double click. $.fn.clickSingleDouble = function(singleClickCallback, doubleClickCallback, delay = 250) { return this.each(() => { var clicks; clicks = 0; return $(this).click((event) => { clicks++; if (clicks === 1) { return setTimeout(() => { if (clicks === 1) { singleClickCallback.call(this, event); } else { doubleClickCallback.call(this, event); } return clicks = 0; }, delay); } }); }); }; // Credit: https://stackoverflow.com/a/15191130/1544937 // Credit: https://gist.github.com/hoandang/5989980 // Rotate any jQuery selected element. $.fn.rotate = function(degree = 0, duration = 1000) { var element, rotation; element = $(this); rotation = () => { var matrix; matrix = element.css("-webkit-transform" || element.css("-moz-transform" || element.css("-ms-transform" || element.css("-o-transform" || element.css("transform"))))); if (matrix !== "none") { matrix = matrix.split("(")[1].split(")")[0].split(","); return Math.round(Math.atan2(matrix[1], matrix[0]) * (180 / Math.PI)); } else { return 0; } }; rotation = rotation(); if (rotation !== degree) { return $({ "deg": rotation }).animate({ "deg": degree }, { "duration": duration, "step": (now) => { return element.css({ "transform": "rotate(" + now + "deg)" }); } }); } };