Skip to content

Instantly share code, notes, and snippets.

Isiah Meadows isiahmeadows

Block or report user

Report or block isiahmeadows

Hide content and notifications from this user.

Learn more about blocking users

Contact Support about this user’s behavior.

Learn more about reporting abuse

Report abuse
View GitHub Profile
isiahmeadows / mithril-react.mjs
Created Jan 23, 2020
Mithril to React adapters
View mithril-react.mjs
import m from "mithril"
import React from "react"
import ReactDOM from "react-dom"
// Bottom-up to Mithril, top-down to React
export function reactify(Comp, wrapper) {
return class extends React.Component {
ref = React.createRef()
prev = undefined
render() {
View foo.js
import {api} from '../../share/hlp'
import Header from './header'
import pgList from '../../cmp/pgList'
import editBox from '../../cmp/editBox'
import Modal from '../../cmp/modal'
export default function Storage(){
let modalstate = false
let folderView = 1
let folder = ""
let dataList = []
isiahmeadows /
Last active May 1, 2019
Mini CSS-in-JS framework in under 50 lines of ES6 code

A mini CSS-in-JS framework

It exports two functions:

  • renderToString(styles) - Render the CSS to a string. (This has no DOM dependency, and it omits the @charset - that's for you to set.)
  • renderToDOM(styles) - Render the CSS to the DOM.

Note that renderToString omits any charset - the user should specify that before emitting.

Styles are specified as follows:

isiahmeadows / mithril-fontawesome.js
Last active Jan 23, 2020
Mithril port of react-fontawesome
View mithril-fontawesome.js
// This is a direct API port of
// to Mithril, with a few optimizations for faster vnode creation and more
// efficient normalization. It's also combined into a single UMD file and
// written to support a pure ES5 environment without transpiling. It's less than
// 200 lines of code excluding this long introductory comment, and is about
// 1.2KB min+gzip.
// Here's a few example vnodes:
// ```js
View id-generate.js
"use strict"
// Creates a `generate` function using an alphabet, for optimally small IDs
// if you can only use certain characters. This could be useful for file name
// generators, minifiers, among many others. You *do* need to expand letter
// ranges, though.
module.exports = alphabet => {
const charTable = [ Set(Array.from(alphabet, x => `${x}`))]
let counter = 0
if (charTable.length < 2) {
isiahmeadows / classnames-object.js
Created Dec 16, 2018
`classnames`, but emitting an object instead of a string.
View classnames-object.js
var hasOwn = {}.hasOwnProperty
function writeClasses() {
for (var i = 0; i < arguments.length; i++) {
var arg = arguments[i]
if (!arg) continue
if (typeof arg === 'string' || typeof arg === 'number') {
this[arg] = true
} else if (typeof arg === 'string') {
isiahmeadows / 0-react-hooks.jsx
Created Oct 29, 2018
React if they went with a new language rather than an embedded DSL
View 0-react-hooks.jsx
// This is a rough port of their TodoMVC app, using their Hooks API
import React, { useRef, useState, useEffect, useMemo } from "react"
import { render } from "react-dom"
function uuid() {
let uuid = ""
for (let i = 0; i < 32; i++) {
if (i === 8 || i === 12 || i === 16 || i === 20) uuid += "-"
View uncached-load.js
var Module = require("module")
function requireUncached(file, baseDir) {
// Hack: hijack Node's internal resolution algorithm to require the file
// as if from a fake module in the correct base directory. It also will
// avoid several bugs with the `resolve` module (Node's is necessarily
// more stable).
var dirname = path.resolve(baseDir)
var m = new Module(path.join(dirname, "dummy.js"))
isiahmeadows / mithril-remove-node-from-dom.js
Created Aug 28, 2018
Recast Mithril node removal code
View mithril-remove-node-from-dom.js
function removeNodeFromDOM(vnode) {
var parent = vnode.dom.parentNode
if (parent != null) {
var count = vnode.domSize
if (count != null && count > 1) {
while (--count) parent.removeChild(vnode.dom.nextSibling)
isiahmeadows / weak-collections.js
Last active Jul 30, 2018
Weak maps and weak sets in terms of private symbols
View weak-collections.js
const _wmSymbol = Symbol.private("wmSymbol")
const _wsSymbol = Symbol.private("wsSymbol")
const call =
const hasOwn ={}.hasOwnProperty)
const getOwn = Object.getOwnPropertyDescriptor
const TE = TypeError
const checkMapThisKey = makeChecker("WeakMap", "weak map", _wmSymbol)
const checkSetThisKey = makeChecker("WeakSet", "weak set", _wsSymbol)
function makeChecker(name, human, symbol) {
You can’t perform that action at this time.