@mkljczk/lexical-remark
Version:
This package contains Markdown helpers and functionality for Lexical using remark-parse.
27 lines (26 loc) • 828 B
JavaScript
const own = {}.hasOwnProperty;
/**
* Handle values based on a field.
*/
export function zwitchFunc(key, options) {
const settings = options || {};
function one(value, ...parameters) {
let fn = one.invalid;
const handlers = one.handlers;
// @ts-expect-error Indexable.
if (value && typeof value[key] === 'function') {
// @ts-expect-error Indexable.
const id = String(value[key]());
// @ts-expect-error Indexable.
fn = own.call(handlers, id) ? handlers[id] : one.unknown;
}
if (fn) {
return fn.call(this, value, ...parameters);
}
}
one.handlers = settings.handlers || {};
one.invalid = settings.invalid;
one.unknown = settings.unknown;
// @ts-expect-error: matches!
return one;
}