/**
* @typedef {{
* text: {text: string};
* numbers: {number: number};
* date: {date: string, time: string};
* }} ColumnTypeMap
*/
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| /** | |
| * @typedef {Object} FieldOption | |
| * @property {string} [value] - The underlying data value for the option. Defaults to the label if omitted. | |
| * @property {string} label - The visible text display for the option. | |
| */ | |
| /** | |
| * @typedef {Object} BoxField | |
| * @property {string} label - The unique identifier and visible text label for the form field. | |
| * @property {string} [description] - Optional subtext or instructions displayed below the label. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| /** | |
| * @typedef poll__options | |
| * @property {((criteriaResult: any) => void)=} callback | |
| * Optional. If not specified then `poll` returns a promise that will resolve once `criteria` returns a `true`-ish value. | |
| * @property {number} [timeout=50] | |
| * Optional. Number of milliseconds between one call to criteria and the next (excluding the initial which is immediate). Defaults to `50`. | |
| * @property {boolean} [ignoreErrors=false] | |
| * Optional. Whether or not an error coming from `criteria` will be ignored. Defaults to `false`. | |
| */ | |
| /** |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| /** | |
| * @overload | |
| * @param {string} uniqueBaseChars | |
| * @returns {(str: string) => number} | |
| */ | |
| /** | |
| * @overload | |
| * @param {string} uniqueBaseChars | |
| * @param {string} str | |
| * @returns {number} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| /** | |
| * Takes an array and removes all of the duplicate values determined by the | |
| * specified hash function. | |
| * @template {any[]} T | |
| * @param {T} array | |
| * @param {(value: T[number], index: number, array: T) => any} hash | |
| * @returns {T} | |
| */ | |
| function dedupe(array, hash) { | |
| const hashedValues = new Set(); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| /** | |
| * @license Copyright 2026 - Chris West - MIT Licensed | |
| * @see https://gist.github.com/westc/f1bf5453b74a055bb4013f4e23da96eb | |
| * | |
| * Converts a JS value to a canonical JSON string that will be the same every | |
| * time regardless of the order in which the keys are defined in the underlying | |
| * objects. | |
| * @param {any} value | |
| * A JavaScript value, usually an object or array, to be converted. | |
| * @param {Parameters<typeof JSON.stringify>[1]} replacer |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| var random = (() => { | |
| const uints = new Uint32Array(2); | |
| /** | |
| * @typedef $randomOptions | |
| * @property {boolean} [returnInt=false] | |
| * Defaults to `false`. If `true` then the returned number will be an | |
| * integer. Floats will be rounded down if `includedLimit` is less than | |
| * `excludedLimit`, otherwise they will be rounded up. | |
| * @property {boolean} [useCrypto=false] |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| /** | |
| * Sets the character stored in FAVICON_CHARACTER as the favicon for this page. | |
| */ | |
| addEventListener('DOMContentLoaded', () => { | |
| // The single character that will appear as the favicon for this page. | |
| const FAVICON_CHARACTER = '\u{1F510}'; | |
| // Remove all `<link>` elements that are for icons. | |
| document.querySelectorAll("link[rel~='icon']").forEach(el => el.remove()); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| /** | |
| * Sets the favicon for the page to show one letter per second of the | |
| * MARQUEE_TEXT constant. The background will be a solid color that slowly | |
| * changes, cycling through different hues. | |
| */ | |
| addEventListener('DOMContentLoaded', () => { | |
| const MARQUEE_TEXT = 'A TEST '; | |
| // The canvas that will be used to generate the image that will show as the | |
| // favicon once every second. |
NewerOlder