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 trimSvgWhitespace() { | |
// get all SVG objects in the DOM | |
var svgs = document.getElementsByTagName("svg"); | |
// go through each one and add a viewbox that ensures all children are visible | |
for (var i=0, l=svgs.length; i<l; i++) { | |
var svg = svgs[i], | |
box = svg.getBBox(), // <- get the visual boundary required to view all children |
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
/** | |
* Removes invalid XML characters from a string | |
* @param {string} str - a string containing potentially invalid XML characters (non-UTF8 characters, STX, EOX etc) | |
* @param {boolean} removeDiscouragedChars - should it remove discouraged but valid XML characters | |
* @return {string} a sanitized string stripped of invalid XML characters | |
*/ | |
function removeXMLInvalidChars(str, removeDiscouragedChars) { | |
// remove everything forbidden by XML 1.0 specifications, plus the unicode replacement character U+FFFD | |
var regex = /((?:[\0-\x08\x0B\f\x0E-\x1F\uFFFD\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]))/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
/** | |
* Adds query params to existing URLs (inc merging duplicates) | |
* @param {string} url - src URL to modify | |
* @param {object} params - key/value object of params to add | |
* @example | |
* // returns /guides?tag=api | |
* addQueryParamsToUrl('/guides?tag=hardware', { tag:'api' }) | |
* @example | |
* // returns https://orcascan.com/guides?tag=api | |
* addQueryParamsToUrl('https://orcascan.com/guides?tag=hardware', { tag: 'api' }) |
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
/** | |
* Convert a URL into a readable filename safe string | |
* - sort query params | |
* - remove protocol | |
* - replace / with ! | |
* - replace ? with !! | |
* - replace remaining illegal characters with - | |
* @example | |
* INPUT: convertUrlToReadableFilename('https://orcascan.com/guides/how-to-scan-barcodes-into-microsoft-excel-59fd67f9'); |
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 (window) { | |
'use strict'; | |
var oldSetTimeout = window.setTimeout; | |
/** | |
* Behaves the same as setTimeout but uses requestAnimationFrame() for better performance | |
* @param {function} fn The callback function | |
* @param {int} delay The delay in milliseconds |
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
/** | |
* Removes empty values, trims whitespace and removes duplicate from a comma separated string in JavaScript | |
* @example | |
* cleanCsvString('one, ,, , two,two,two, three'); // returns 'one,two,three' | |
* cleanCsvString('one, ,, , two,two,two, three', false); // returns 'one,two,two,two,three' | |
* @param {string} str - string to modify | |
* @param {boolean} removeDuplicates - should remove duplicate items? (default = true) | |
* @returns {string} cleaned CSV string | |
*/ | |
function cleanCsvString(str, removeDuplicates) { |
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
/** | |
* local storage helper (takes care of casting types) | |
*/ | |
var localStorageHelper = { | |
/** | |
* Check if item exists in local storage. | |
* @param {string} key - variable name | |
* @return {boolean} true if key exists, otherwise false | |
*/ |
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
var fileStorage = { | |
/** | |
* Saves a file on the device | |
* @param {string} name - filename (can include sub folders) | |
* @param {string} data - file contents | |
* @param {boolean} useSandbox - uses protected sandbox if true, otherwise external (default false) | |
* @returns {Promise} executes .then with saved file path as first param | |
*/ | |
write: function (name, data, useSandbox) { |
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
/** | |
* Waits for multiple DOM events to fire | |
* @example | |
* waitForEvents(window, [ | |
* 'DOMContentLoaded', | |
* 'online' | |
* ]) | |
* .then(function(result) { | |
* // do stuff |
NewerOlder