@muban/muban
Version:
Writing components for server-rendered HTML
22 lines (21 loc) • 1.01 kB
JavaScript
import dedent from 'ts-dedent';
import { convertSourceValue } from './convertSourceValue';
export function createCustomPropertySource() {
return () => {
return {
sourceName: 'custom',
hasProp: (propInfo) => Boolean(propInfo.source.target),
getProp: (propInfo) => {
var _a, _b;
if (!((_a = propInfo.source.options) === null || _a === void 0 ? void 0 : _a.customSource)) {
// eslint-disable-next-line no-console
console.warn(dedent `The property "${propInfo.name}" doesn't have a valid 'customSource' function
Returning "undefined".`);
return undefined;
}
const rawValue = (_b = propInfo.source.options) === null || _b === void 0 ? void 0 : _b.customSource(propInfo.source.target);
return rawValue !== undefined ? convertSourceValue(propInfo, String(rawValue)) : rawValue;
},
};
};
}