Skip to content

Instantly share code, notes, and snippets.

Avatar

Jim Montgomery jimmont

View GitHub Profile
@jimmont
jimmont / interactivecontent.js
Created Dec 13, 2021
interactive content HTML elements where tab through document gives focus
View interactivecontent.js
/*
needed to manage tab focus (focusin) events leading to the following selector to adjust;
reference
* https://html.spec.whatwg.org/multipage/dom.html#interactive-content
additional info:
* https://www.tpgi.com/using-the-tabindex-attribute/
* https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex
and various linked/related in the above (or simply Google a bit)
*/
View deps.bundle.js
(function() {
'use strict';
if (typeof document === 'undefined' || 'adoptedStyleSheets' in document) {
return;
}
var hasShadyCss = 'ShadyCSS' in window && !ShadyCSS.nativeShadow;
var bootstrapper = document.implementation.createHTMLDocument('');
var closedShadowRootRegistry = new WeakMap();
var _DOMException = typeof DOMException === 'object' ? Error : DOMException;
var defineProperty = Object.defineProperty;
@jimmont
jimmont / uitest.js
Last active Sep 15, 2021
async Deno.test() tests
View uitest.js
import puppeteer from 'https://deno.land/x/puppeteer/mod.ts';
import { assert } from 'https://deno.land/std/testing/asserts.ts';
/*
related:
async runTests()
https://github.com/denoland/deno/issues/10941
https://github.com/denoland/deno_std/issues/162
discussion of testing API
@jimmont
jimmont / polyfill.Events.js
Created Apr 27, 2021
Event related polyfills (for evergreen browsers)
View polyfill.Events.js
if( !('SubmitEvent' in self && 'submitter' in SubmitEvent.prototype) ){
// polyfill SubmitEvent.submitter (a Safari issue as-of 2021)
// https://developer.mozilla.org/docs/Web/API/SubmitEvent
const submitter = Symbol.for('submitter');
Event[ submitter ] = null;
const submitterSelector = 'input[type=submit], input[type=image], input[type=button], button';
Object.defineProperty(Event.prototype, 'submitter', {
get: function(){
if('submit' === this.type){
@jimmont
jimmont / .dockerignore
Created Feb 19, 2021
Deno on Cloud Run
View .dockerignore
# TODO cleanup
log/
logs/
**/log/
**/logs/
**/*.log
secrets.txt
.git
@jimmont
jimmont / ReactHTM.html
Created Nov 16, 2020
use HTM to reduce work in React apps by removing the need for JSX translation in build processes
View ReactHTM.html
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8" >
<meta name="viewport" content="width=device-width, minimum-scale=1, initial-scale=1, user-scalable=yes">
<title>use HTM to reduce work in React apps</title>
<meta name="description" content="example using HTM with React to replace JSX and reduce work">
<style>
html,body{margin:0;padding:0;min-width:320px;min-height:320px;box-sizing:border-box;background-color:#cf0;}
body{
@jimmont
jimmont / websockets.js
Created Jul 27, 2020
http upgrade websocket
View websockets.js
/*
running with Deno 1.2
deno run --inspect --allow-net ./websockets.js
*/
import { Application, Router, HttpError, send, Status } from "https://deno.land/x/oak@v6.0.1/mod.ts";
import { isWebSocketCloseEvent } from "https://deno.land/std@0.61.0/ws/mod.ts";
const port = 8123;
const users = new Set();
const app = new Application({state:{users}});
View linkedlist.js
/*
add,remove,length, reverse
{value,next}
*/
class List{
constructor(){
}
}
class Node{
@jimmont
jimmont / jsx-template-transformer.js
Last active Feb 26, 2020
transform jsx to tagged template literals
View jsx-template-transformer.js
/*
transform JSX to tagged template literals
history:
2019-01-25 initial working draft
https://stackoverflow.com/a/54381294/965666
https://astexplorer.net/#/gist/fdaed19a884dc75fe4a92092826bd635/9bc3c34e276eaf74cc318da9b87bbe0cfd37ff6d
https://astexplorer.net/#/gist/fdaed19a884dc75fe4a92092826bd635/9a47a064fe0734868f8c5c46ceb99de6ebfe3600
@jimmont
jimmont / flat-arbitrary.js
Last active Feb 22, 2020
array flat arbitrary
View flat-arbitrary.js
/*
Write some code, that will flatten an array of arbitrarily nested arrays of integers into a flat array of integers. e.g. [[1,2,[3]],4] -> [1,2,3,4].
Your solution should be a link to a gist on gist.github.com with your implementation.
When writing this code, you can use any language you're comfortable with. The code must be well tested and documented. Please include unit tests and any documentation you feel is necessary. In general, treat the quality of the code as if it was ready to ship to production.
Try to avoid using language defined methods like Ruby's Array#flatten or JavaScript's Array.flat.
*/