This file contains 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
function resolveClassName(className: string | string[], ...more: (string | string[])[]): string { | |
return Array.from( | |
new Set( | |
[''].concat(className, more.flat()).filter(Boolean).join(' ').split(/\s+/) | |
) | |
).reduce((classes, cur) => { | |
if ((cur = cur.trim())) { | |
classes.push(cur); | |
} | |
return classes; |
This file contains 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
/** | |
* Insert 'insert' 2-D array after 'after' key in 'map' | |
* WARNING: THIS MUTATES THE ORIGINAL Map! | |
* @param {Map} map - Map to insert into | |
* @param {any} after - key to insert after | |
* @param {[any, any]} insert - 2-D array for entry to insert | |
* @returns {Map} - returns mutated 'map' passed as first argument | |
*/ | |
function insertAfterKey(map, after, insert){ | |
const [insertKey, insertValue] = insert; |
This file contains 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
// Return a tuple of the minimum and maximum values in `arr` array | |
function arrayMinMax(arr){ | |
return [...arr].reduce(([min, max], value) => { | |
return [ | |
value < min ? value : min, | |
value > max ? value : max | |
]; | |
}, [Infinity, -Infinity]); | |
} |
This file contains 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
// Export regular expressions used in this module that other modules may need. | |
// ----- | |
// Characters used to indicate a `#document-fragment` should be created | |
export const fragRE = /^([!#]+|<>|<\/>)/; | |
// Characters that indicate a new element should be created... | |
// ...possibly from another library, like: parseTag('<div>'); | |
export const createRE = /^[\s<+=]*|[/>\s]*$/g; | |
// ----- | |
/** |
This file contains 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
/** | |
* Find or make the DOM things | |
*/ | |
let createRE = /^<\s*|\s*\/*>$/g; | |
createRE = /^<\s*|\s*\/?>$/g; | |
function parseTag(tag) { | |
This file contains 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
/*! | |
* Replace some functionality of jQuery's $.extend() method | |
* with only native JavaScript. Unlike $.extend(), this | |
* function will ONLY merge plain objects (not arrays). | |
* https://gist.github.com/Error601/9a181a0b9f414b752c38 | |
*/ | |
function isObject( obj ){ | |
return Object.prototype.toString.call(obj) === '[object Object]'; |
This file contains 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
/*! | |
* Hipster filler text generator. | |
* Inspired by (and words taken from): | |
* http://hipsum.co/ | |
* | |
* Usage: | |
* | |
* // sentences only | |
* APP.utils.hipster.sentence(); // generates 1 sentence with 9, 12, or 18 words | |
* APP.utils.hipster.sentences(3); // generates 3 sentences |
This file contains 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
/** | |
* Open a new browser window centered to the parent window. | |
* @param {string} url - Required URL for popup window | |
* @param {string} [name] - optional window name | |
* @param {object} [cfg] - optional config object for window.open parameters | |
* @returns {*} - returns reference to popup | |
* @example | |
* | |
* // open a 600x400 popup named 'foo' centered over parent window: | |
* centeredPopup('/page/foo', 'foo', { width: 600, height: 400 }); |
This file contains 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
function writeOutput(inputData) { | |
// Start writing code here to consume input, and return result. | |
// split lines of input string into an array | |
const inputParts = inputData.split('\n'); | |
// get value of first element to serve as line count | |
const lineCount = Number(inputParts[0]); | |
// update this after we have a result to minimize time complexity (no nested loops) |
This file contains 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
function writeOutput(inputData) { | |
// Start writing code here to consume input, and return result. | |
// separate input for consumptino | |
const inputParts = inputData.split('\n'); | |
// shift first element to serve as line count | |
const lineCount = Number(inputParts.shift()); | |
// update this after we have a result to minimize time complexity (no nested loops) |
NewerOlder