Skip to content

Instantly share code, notes, and snippets.

@peerreynders
peerreynders / 01before.html
Last active September 21, 2020 23:53
useRefreshCallback - custom hook that also avoids creating garbage functions
<!doctype html>
<html lang="eng">
<head>
<meta charset="utf-8"/>
<title>useCallback alternative BEFORE</title>
</head>
<body>
<script type="module">
import {
html, render, useState, useCallback
@peerreynders
peerreynders / index.html
Created September 11, 2020 20:51
A progressive disclosure component with wickedElements
<!doctype html>
<html lang="eng">
<!--
"A progressive disclosure component"
https://hankchizljaw.com/wrote/a-progressive-disclosure-component/
with wickedElements
https://github.com/WebReflection/wicked-elements
function log(value) {
console.log(value);
}
function executor(resolve, _reject) {
const resolveValue = () => resolve('3 Resolved now');
self.setTimeout(resolveValue, 1000);
}
const pending = new Promise(executor);
@peerreynders
peerreynders / filterMap.html
Last active June 10, 2020 18:47
filterMap utility function using JavaScript iteration protocols
<!DOCTYPE html>
<html lang="en-us">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>Filter Map</title>
</head>
<body>
<script>
@peerreynders
peerreynders / DisclosureToggle.svelte
Last active April 18, 2020 01:19
Andy Bell's progressive disclosure (web) component implemented with Svelte 3
<!-- file: src/DisclosureToggle.svelte -->
<svelte:options tag={ null }/>
<script>
import { onMount } from 'svelte';
// prop names ("buttonLabel") aren't converted to
// attribute names ("button-label")
export let label = 'Toggle content';
let trigger;
@peerreynders
peerreynders / demo.exs
Last active September 8, 2019 00:27
Vampire Numbers Elixir demonstration script
# Cobbled together ("untested") demonstration code - no production value
# The intention is to flood all CPU cores with "work"
#
# Created for: https://elixirforum.com/t/finding-vampire-numbers/25098/10
#
defmodule Primes do
require Integer
@primes :primes
@init_last 3
@peerreynders
peerreynders / another_handler.ex
Created July 29, 2019 00:29
Replacing GenEvent with DynamicSupervisor + GenServer
# file: lib/em_demo/some_handler.ex
#
defmodule EmDemo.AnotherHandler do
use GenServer
@impl true
def init([to_pid, token] = arg) do
IO.puts("#{__MODULE__}: init(#{inspect(arg)})")
{:ok, {to_pid, token}}
end
@peerreynders
peerreynders / colorpicker_karma-test.mjs
Created April 14, 2019 20:53
Web Components in Action v7; 13.3 Comparing to a Standard Test Setup with Karma - minimal with modules
/* file: components/wcia-color-picker/test/karma-test.mjs
original: https://github.com/bengfarrell/webcomponentsinaction/blob/master/chapter12and13/components/colorpicker/test/karma-test.js
*/
import _dontCare from '../src/wcia-color-picker.mjs'
const makePicker = (function() {
const pickerSize = 500
const thumbCenterOffset = 5/2 + 3 // width/2 + left border
const markup =`
<wcia-color-picker
@peerreynders
peerreynders / index.html
Created April 5, 2019 13:07
Web Components in Action v6; Listing 10.10 Using CSS Variables in a Web Component’s Shadow DOM
<!DOCTYPE html>
<html>
<head lang="en">
<!--
file: index.html
Web Components in Action MEAP v6
original: https://github.com/bengfarrell/webcomponentsinaction/blob/master/chapter10/10.2-cssvariables/shadow.html
#1
Defining a default value in case the custom property is not defined
@peerreynders
peerreynders / biz-card.mjs
Last active April 2, 2019 18:39
Web Components in Action v6: 7.5 Entering the Shadow DOM with Slots (p.152)
// file: components/biz-card/biz-card.mjs
import { patchContentMap } from '../../helpers/templateLoader.mjs'
/*
#1:
See patchContentMap call below which creates
static get _contentMap
static set _templateUri
#2: