Skip to content

Instantly share code, notes, and snippets.

View johnloy's full-sized avatar

John Loy johnloy

View GitHub Profile
@johnloy
johnloy / index.html
Last active July 30, 2019 13:38
State management with custom DOM events
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<script type="module">
const createAction = (el, initialState, name, action) => {
let currentState = initialState;
document.body.addEventListener(name, (e) => {
el.render(e.detail.state);
});
@johnloy
johnloy / unbounded-filter.js
Last active January 20, 2020 21:59
Unbound array function in JS using Function.prototype.bind
const filter = Function.prototype.call.bind(Array.prototype.filter)
filter([1,2,3], (x) => x > 1 )
@johnloy
johnloy / isError.js
Created January 23, 2020 13:55
Determine if a value is an error, in a browser context
function isError(value) {
switch (Object.prototype.toString.call(value)) {
case '[object Error]':
return true;
case '[object Exception]':
return true;
case '[object DOMException]':
return true;
import { fileURLToPath } from 'url'
const __filename = fileURLToPath(import.meta.url)
const __dirname = path.dirname(__filename)
@johnloy
johnloy / convertFromBaseToBase.js
Last active February 7, 2021 18:20
Convert the string representation of a number to another base
function convertFromBaseToBase(str, fromBase, toBase) {
var num = parseInt(str, fromBase);
return num.toString(toBase);
}
@johnloy
johnloy / bytesToSize.js
Created March 1, 2021 13:34 — forked from lanqy/bytesToSize.js
JavaScript To Convert Bytes To MB, KB, Etc
// from http://scratch99.com/web-development/javascript/convert-bytes-to-mb-kb/
function bytesToSize(bytes) {
var sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB'];
if (bytes == 0) return 'n/a';
var i = parseInt(Math.floor(Math.log(bytes) / Math.log(1024)));
if (i == 0) return bytes + ' ' + sizes[i];
return (bytes / Math.pow(1024, i)).toFixed(1) + ' ' + sizes[i];
};
@johnloy
johnloy / convert-seconds.js
Created March 28, 2021 12:56 — forked from martinbean/convert-seconds.js
Convert seconds to HH:MM:SS format in JavaScript.
new Date(seconds * 1000).toISOString().substr(11, 8)
function isDstObserved(date = new Date()) {
var jan = new Date(0, 1);
var jul = new Date(6, 1);
const stdTimezoneOffset = Math.max(
jan.getTimezoneOffset(),
jul.getTimezoneOffset()
);
return date.getTimezoneOffset() < stdTimezoneOffset;
}
// tzName is one of the tz database names at https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
// Example: 'Pacific/Honolulu' (UTC-10)
function getUTCOffset(tzName, date) {
date = new Date(date || Date.now());
date.setMilliseconds(0);
// 1) Get the local UTC offset
// ---------------------------
// Convert date UTC offset to true hours offset.
// Date.prototype.getTimezoneOffset() confusingly returns positive
@johnloy
johnloy / bundle.js
Created May 6, 2021 20:49
Webpack runtime example
/*
* ATTENTION: The "eval" devtool has been used (maybe by default in mode: "development").
* This devtool is neither made for production nor for readable output files.
* It uses "eval()" calls to create a separate source file in the browser devtools.
* If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/)
* or disable the default devtool with "devtool: false".
* If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/).
*/
/******/ (() => { // webpackBootstrap
/******/ "use strict";