Skip to content

Instantly share code, notes, and snippets.

View avisek's full-sized avatar

Avisek Das avisek

  • Planet Earth
View GitHub Profile
@avisek
avisek / round.js
Last active October 7, 2018 18:50
function round(number, places) {
places = Math.max(0, Math.min(places || 0, String(number).split(".")[1].length || 0));
return Math.round(number * Math.pow(10, places)) / Math.pow(10, places);
}
function swapDomNodes(a, b) {
var afterA = a.nextSibling;
if (afterA == b) {
swapDomNodes(b, a);
return;
}
var aParent = a.parentNode;
b.parentNode.replaceChild(a, b);
aParent.insertBefore(b, afterA);
}
// Getting a random number between 0 (inclusive) and 1 (exclusive)
function getRandom() {
return Math.random();
}
// Getting a random number between two values
function getRandomArbitrary(min, max) {
return Math.random() * (max - min) + min;
}
/** Whether we are using a Mac or not. */
function isMac() {
return /Mac/.test(navigator.platform);
}
/** Whether this is on the Windows platform or not. */
function isWindows() {
return /Win/.test(navigator.platform);
}
function getOffset(element) {
var left = element.offsetLeft;
var top = element.offsetTop;
while (element = element.offsetParent) {
left += element.offsetLeft + element.clientLeft - element.scrollLeft;
top += element.offsetTop + element.clientTop - element.scrollTop;
}
return {
left: left,
top: top
/**
* Return the first ancestor for which the {@code predicate} returns true.
* @param {Node} node The node to check.
* @param {function(Node):boolean} predicate The function that tests the
* nodes.
* @return {Node} The found ancestor or null if not found.
*/
function findAncestor(node, predicate) {
var last = false;
while (node != null && !(last = predicate(node))) {
@avisek
avisek / colorpicker-tool.markdown
Created November 2, 2018 08:32
ColorPicker tool
function getRandomColor() {
var x = Math.round(0xffffff * Math.random()).toString(16);
var y = (6 - x.length);
var z = '000000';
var z1 = z.substring(0, y);
return '#' + z1 + x;
}
@avisek
avisek / flexbox-holy-albatross-quantity-query.markdown
Created October 3, 2019 07:51
Flexbox Holy Albatross + Quantity Query
@avisek
avisek / ResizeObserverPolyfill.js
Created April 19, 2022 19:53
Tiny ResizeObserver polyfill
// https://codepen.io/dgca/pen/WoJoNB
export const ResizeObserver = window.ResizeObserver || class ResizeObserver {
constructor(callback) {
this.observables = [];
// Array of observed elements that looks like this:
// [{
// el: domNode,
// size: {height: x, width: y}
// }]
this.boundCheck = this.check.bind(this);