UNPKG

@snups/rjsf-utils

Version:
28 lines 1.56 kB
/** Returns the template with the given `name` from either the `uiSchema` if it is defined or from the `registry` * otherwise. NOTE, since `ButtonTemplates` are not overridden in `uiSchema` only those in the `registry` are returned. * * @param name - The name of the template to fetch, restricted to the keys of `TemplatesType` * @param registry - The `Registry` from which to read the template * @param [uiOptions={}] - The `UIOptionsType` from which to read an alternate template * @returns - The template from either the `uiSchema` or `registry` for the `name` */ export default function getTemplate(name, registry, uiOptions = {}) { const { templates } = registry; if (name === 'ButtonTemplates') { return templates[name]; } // Allow templates to be customized per-field by using string keys from the registry if (Object.hasOwn(uiOptions, name) && typeof uiOptions[name] === 'string' && Object.hasOwn(templates, uiOptions[name])) { const key = uiOptions[name]; // Evaluating templates[key] results in TS2590: Expression produces a union type that is too complex to represent // To avoid that, we cast templates to `any` before accessing the key field return templates[key]; } return ( // Evaluating uiOptions[name] results in TS2590: Expression produces a union type that is too complex to represent // To avoid that, we cast uiOptions to `any` before accessing the name field uiOptions[name] || templates[name]); } //# sourceMappingURL=getTemplate.js.map