petals-ui
Version:
Front-end UI components foundation
36 lines (35 loc) • 1.43 kB
JavaScript
import { isNumber, isFunction, isPlainObject, noop, mixin } from '@ntks/toolbox';
function generateShortcutMethod(callback) {
return (content, optsOrHandlerOrDuration, optsOrHandler, options) => {
let resolvedDuration = 3;
let resolvedCloseHandler = noop;
let resolvedOptions;
if (options) {
resolvedOptions = isPlainObject(options) ? options : {};
}
if (optsOrHandler) {
if (!resolvedOptions && isPlainObject(optsOrHandler)) {
resolvedOptions = optsOrHandler;
}
else if (isFunction(optsOrHandler)) {
resolvedCloseHandler = optsOrHandler;
}
}
if (optsOrHandlerOrDuration !== undefined) {
if (!resolvedOptions && isPlainObject(optsOrHandlerOrDuration)) {
resolvedOptions = optsOrHandlerOrDuration;
}
else if (isFunction(optsOrHandlerOrDuration)) {
resolvedCloseHandler = optsOrHandlerOrDuration;
}
else if (isNumber(optsOrHandlerOrDuration)) {
resolvedDuration = optsOrHandlerOrDuration;
}
}
if (!resolvedOptions) {
resolvedOptions = {};
}
callback(mixin(true, { type: 'info', content, duration: resolvedDuration, onClose: resolvedCloseHandler }, resolvedOptions));
};
}
export { generateShortcutMethod };