84 lines
2.0 KiB
JavaScript
84 lines
2.0 KiB
JavaScript
export const consolePrefix = 'SweetAlert2:'
|
|
|
|
/**
|
|
* Filter the unique values into a new array
|
|
* @param arr
|
|
*/
|
|
export const uniqueArray = (arr) => {
|
|
const result = []
|
|
for (let i = 0; i < arr.length; i++) {
|
|
if (result.indexOf(arr[i]) === -1) {
|
|
result.push(arr[i])
|
|
}
|
|
}
|
|
return result
|
|
}
|
|
|
|
/**
|
|
* Capitalize the first letter of a string
|
|
* @param str
|
|
*/
|
|
export const capitalizeFirstLetter = (str) => str.charAt(0).toUpperCase() + str.slice(1)
|
|
|
|
/**
|
|
* Returns the array ob object values (Object.values isn't supported in IE11)
|
|
* @param obj
|
|
*/
|
|
export const objectValues = (obj) => Object.keys(obj).map(key => obj[key])
|
|
|
|
/**
|
|
* Convert NodeList to Array
|
|
* @param nodeList
|
|
*/
|
|
export const toArray = (nodeList) => Array.prototype.slice.call(nodeList)
|
|
|
|
/**
|
|
* Standardise console warnings
|
|
* @param message
|
|
*/
|
|
export const warn = (message) => {
|
|
console.warn(`${consolePrefix} ${message}`)
|
|
}
|
|
|
|
/**
|
|
* Standardise console errors
|
|
* @param message
|
|
*/
|
|
export const error = (message) => {
|
|
console.error(`${consolePrefix} ${message}`)
|
|
}
|
|
|
|
/**
|
|
* Private global state for `warnOnce`
|
|
* @type {Array}
|
|
* @private
|
|
*/
|
|
const previousWarnOnceMessages = []
|
|
|
|
/**
|
|
* Show a console warning, but only if it hasn't already been shown
|
|
* @param message
|
|
*/
|
|
export const warnOnce = (message) => {
|
|
if (!previousWarnOnceMessages.includes(message)) {
|
|
previousWarnOnceMessages.push(message)
|
|
warn(message)
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Show a one-time console warning about deprecated params/methods
|
|
*/
|
|
export const warnAboutDepreation = (deprecatedParam, useInstead) => {
|
|
warnOnce(`"${deprecatedParam}" is deprecated and will be removed in the next major release. Please use "${useInstead}" instead.`)
|
|
}
|
|
|
|
/**
|
|
* If `arg` is a function, call it (with no arguments or context) and return the result.
|
|
* Otherwise, just pass the value through
|
|
* @param arg
|
|
*/
|
|
export const callIfFunction = (arg) => typeof arg === 'function' ? arg() : arg
|
|
|
|
export const isPromise = (arg) => arg && Promise.resolve(arg) === arg
|