Skip to content

Instantly share code, notes, and snippets.

Avatar

Konrad Dzwinel kdzwinel

View GitHub Profile
@kdzwinel
kdzwinel / kata.js
Last active Feb 11, 2020
Code kata featuring: fetch, promises, array.sort, array.reduce, array.map
View kata.js
// 1) fetch members of polish parlament (poslowie)
// 2) group them by occupation
// 3) sort occupations by number of members and occupation name
// 4) get top 5 entries
// 5) print result on the screen
(function() {
'use strict';
const POSLOWIE_ENDPOINT = 'https://api-v3.mojepanstwo.pl/dane/poslowie/';
@kdzwinel
kdzwinel / main.js
Created Apr 15, 2016
Animate any UI component in a fancy way
View main.js
function getFamilyTree(el) {
const levels = new Map();
function bfs(el, level) {
const levelElements = levels.get(level) || [];
for (const child of el.children) {
child.style.opacity = '0';
levelElements.push(child);
@kdzwinel
kdzwinel / concentrate.js
Last active Feb 11, 2020
DevTools snippet that lets you focus on a single element during developement
View concentrate.js
(function() {
function hideEvertyhingAround($el) {
const $parent = $el.parentElement;
$parent.style.transition = 'background-color 150ms ease-in';
$parent.style.backgroundColor = 'white';
$parent.childNodes.forEach($child => {
if($child !== $el && $child.style) {
@kdzwinel
kdzwinel / scroll_to.js
Created May 2, 2017
Scroll to element or scroll by value
View scroll_to.js
let rafId;
function scrollToElement(el, offsetTop = 0) {
scrollByValue(el.getBoundingClientRect().top - offsetTop);
}
function scrollByValue(offsetTop = 0) {
if (offsetTop !== 0) {
if (rafId) {
cancelAnimationFrame(rafId);
@kdzwinel
kdzwinel / catch-globals.js
Last active Feb 11, 2020
Unfinished globals proxy
View catch-globals.js
function evalCode(code) {
const func = new Function ('window', `with (window) { ${code} }`);
const obj = {};
const proxy = new Proxy(obj, {
get(target, propKey, receiver) {
console.log(`GET ${String(propKey)}`);
if (propKey === 'window') return proxy;
return Reflect.get(window, propKey, receiver);
},
set(target, propKey, value, receiver) {
@kdzwinel
kdzwinel / filter-out-ads.js
Last active Mar 22, 2018
TrackJS custom onError callback that tries to filter out noise from ads
View filter-out-ads.js
// ES5 for compat
window._trackJs.onError = function(error) {
try {
var fileURL = new URL(error.file);
if (fileURL) {
// safelist includes current domain + some third-parties we want to track
var safe = domainSafelist.some(function (domain) {
return fileURL.host.endsWith(domain);
});
@kdzwinel
kdzwinel / lhjson.js
Created Jan 25, 2018
__LIGHTHOUSE_JSON__ analysis script
View lhjson.js
(function() {
function strSize(obj) {
const string = JSON.stringify(obj);
return string ? string.length : 0;
}
const lhj = __LIGHTHOUSE_JSON__;
const fullSize = strSize(lhj);
const maxLevels = 5;
@kdzwinel
kdzwinel / ps4devtools.js
Created Oct 8, 2017
Gamepad - Chrome DevTools integration
View ps4devtools.js
(function(){
let gamepad = null;
let loopInterval = null;
window.addEventListener("gamepadconnected", connectHandler);
window.addEventListener("gamepaddisconnected", disconnectHandler);
function connectHandler(e) {
if (!gamepad) {
@kdzwinel
kdzwinel / get-selector-simple.js
Created Dec 8, 2017
Simple alternative to the axe-core getSelector
View get-selector-simple.js
const commonNodes = [
'div', 'span', 'p',
'b', 'i', 'u', 'strong', 'em',
'h2', 'h3',
];
/**
* @param {Array<string>} attributes
* @returns {Map<string, string>}
*/
View index.html
<head>
...
<meta name="viewport" content="width=device-width">
...
</head>
You can’t perform that action at this time.