Skip to content

Instantly share code, notes, and snippets.

View iambriansreed's full-sized avatar
🏠
Working from my office at home

Brian Reed iambriansreed

🏠
Working from my office at home
View GitHub Profile
@iambriansreed
iambriansreed / useAddonManager.ts
Created October 28, 2024 17:10
A simple Ladle addon hook that can be used to hide and show addons on the fly. I don't want users to be able to view source on pure documentation pages for example.
import { useCallback, useEffect, useState } from 'react';
type AddonKey =
| 'control'
| 'theme'
| 'mode'
| 'width'
| 'rtl'
| 'source'
| 'a11y'
export default function CustomAddon({ children, id }: PropsWithChildren<{ id: string }>) {
const element =
document.getElementById(id) ||
(() => {
const addonsContainer = document.querySelector(".ladle-addons > ul");
const element = document.createElement("li");
element.id = id;
addonsContainer?.prepend(element);
return element;
})();
@iambriansreed
iambriansreed / fileUnimportedFiles.ts
Created November 4, 2022 19:34
Find files not imported.
import { resolve } from 'path';
import { promises, readFileSync } from 'fs';
const { readdir } = promises;
const ignoreFolders = ['__generated__', '__tests__'];
const notImported: string[] = ['/webpack.config', '/globals.d'];
const fileContent: Record<string, string> = {};
@iambriansreed
iambriansreed / isEqualish.test.ts
Last active November 3, 2022 04:44
isEqualish - deep-equal but ignores array order
import isEqualish from './isEqualish';
describe('compare', () => {
it('arrays should be true when different order', () => {
const obj1 = { x: 1, y: 2 };
const obj2 = { x: 3, y: 4 };
const a = [obj1, obj2];
const b = [obj2, obj1];
@iambriansreed
iambriansreed / filesDownloader.ts
Created October 30, 2022 21:11
Files Downloader - Node,TypeScript
import fs from 'fs';
import https from 'https';
async function filesDownloader(url: (iterator: number) => string, response: (iterator: number, data: string) => void, iteratorMax: number, iteratorStart = 0) {
async function getUrlData(url: string): Promise<string> {
return new Promise((resolve, reject) => {
@iambriansreed
iambriansreed / deepSet.ts
Last active October 19, 2020 22:43
Sets the value at path of object. If a portion of path doesn't exist, it's created. An alternative to https://lodash.com/docs/#set
/**
* Sets the value at path of object. If a portion of path doesn't exist, it's created.
* An alternative to https://lodash.com/docs/#set
*
* @param {object} obj
* @param {string} keyPath
* @param {any} value
*/
export default function deepSet(
obj: { [key: string]: any },
function datesToLocalTime(...times){
const [announcementTimeStr, tooEarlyTimeStr] = times
.map((date) => date.toLocaleString().split(', ')[1].toLowerCase().replace(/:00/g, ''));
return `At ${announcementTimeStr} Steve said that ${tooEarlyTimeStr} is too early.`;
}
console.log(datesToLocalTime(
new Date('2020-03-08T19:47:00.000Z'),
new Date('2020-03-08T04:30:00.000Z')
))
'use strict';
var promiseList = [function () {
return Promise.resolve(2);
}, promiseGenerator(), promiseGenerator(), promiseGenerator(), promiseGenerator(), promiseGenerator()];
function promiseGenerator() {
return function (val) {
return new Promise(function (resolve, reject) {
resolve(val * 2);
@iambriansreed
iambriansreed / command.js
Last active June 12, 2017 00:33
Backtick Twitter Share Modal
/* NOTE: Comments need to be in multiline format like this, instead of "// Comment" */
alert("Hello World");
@iambriansreed
iambriansreed / command.js
Last active November 1, 2024 08:51 — forked from BacktickIO/command.js
WhatFont
(function(){var d=document,s=d.createElement('scr'+'ipt'),b=d.body,l=d.location;s.setAttribute('src','https://chengyinliu.com/wf.js?o='+encodeURIComponent(l.href)+'&t='+(new Date().getTime()));b.appendChild(s)})();