/**
* @typedef {{
* text: {text: string};
* numbers: {number: number};
* date: {date: string, time: string};
* }} ColumnTypeMap
*/
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
| /* WOL Reader: reads a wol.jw.org page aloud, sentence by sentence, with optional scripture reading. | |
| Paste into the DevTools console on any wol.jw.org page and press Enter, then press ▶ (or K). | |
| Keys: K = play/pause J / L = previous / next sentence Shift+J / Shift+L = previous / next paragraph | |
| V = read the most recent scripture reference now Esc = stop | |
| Alt+click a sentence to start reading there. | |
| Alt+click a scripture link to hear that scripture read. | |
| */ | |
| (() => { | |
| 'use strict'; |
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
| const growl = (() => { | |
| let styleEl; | |
| let container; | |
| function ensureUI() { | |
| if (!styleEl) { | |
| styleEl = document.createElement('style'); | |
| styleEl.textContent = ` | |
| .growl-container { |
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
| /** | |
| * Creates a debounced function with an immediate side-effect callback | |
| * and a maximum wait time (throttle) ceiling. | |
| * | |
| * @param {Object} options - Configuration options for the debounce. | |
| * @param {number} options.waitMS - The delay in milliseconds to wait after the | |
| * last call before execution. | |
| * @param {Function} options.afterWait - The primary callback executed after the | |
| * debounce or maxWait period. | |
| * @param {Function} [options.immediate] - Optional function invoked immediately |
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 |
NewerOlder