UNPKG

zod-form-kit

Version:

UI-agnostic form generation library based on Zod schemas with extensible adapter pattern

61 lines (60 loc) 2.88 kB
import { useCallback } from 'react'; import { pluginRegistry, registerFieldRenderer, registerUIAdapter, getRegisteredRenderer, getUIAdapter, getDefaultAdapter, setDefaultAdapter, registerSchemaPatternRenderer, getMatchingPatternRenderer, removeSchemaPatternRenderer, getAllPatternRenderers, clearPatternRenderers } from '../utils/plugin-registry'; /** * React hook for accessing the plugin system functionality */ export function usePluginSystem() { const registerFieldRendererCallback = useCallback((fieldType, component) => { registerFieldRenderer(fieldType, component); }, []); const registerUIAdapterCallback = useCallback((adapter) => { registerUIAdapter(adapter); }, []); const getRegisteredRendererCallback = useCallback((fieldType) => { return getRegisteredRenderer(fieldType); }, []); const getUIAdapterCallback = useCallback((adapterName) => { return getUIAdapter(adapterName); }, []); const getDefaultAdapterCallback = useCallback(() => { return getDefaultAdapter(); }, []); const setDefaultAdapterCallback = useCallback((adapterName) => { setDefaultAdapter(adapterName); }, []); // Pattern registration callbacks const registerSchemaPatternRendererCallback = useCallback((id, matcher, component, priority) => { registerSchemaPatternRenderer(id, matcher, component, priority); }, []); const getMatchingPatternRendererCallback = useCallback((zodSchema, parsedField, formValue) => { return getMatchingPatternRenderer(zodSchema, parsedField, formValue); }, []); const removeSchemaPatternRendererCallback = useCallback((id) => { return removeSchemaPatternRenderer(id); }, []); const getAllPatternRenderersCallback = useCallback(() => { return getAllPatternRenderers(); }, []); const clearPatternRenderersCallback = useCallback(() => { clearPatternRenderers(); }, []); return { // Registration methods registerFieldRenderer: registerFieldRendererCallback, registerUIAdapter: registerUIAdapterCallback, // Retrieval methods getRegisteredRenderer: getRegisteredRendererCallback, getUIAdapter: getUIAdapterCallback, getDefaultAdapter: getDefaultAdapterCallback, // Configuration methods setDefaultAdapter: setDefaultAdapterCallback, // Pattern registration methods registerSchemaPatternRenderer: registerSchemaPatternRendererCallback, getMatchingPatternRenderer: getMatchingPatternRendererCallback, removeSchemaPatternRenderer: removeSchemaPatternRendererCallback, getAllPatternRenderers: getAllPatternRenderersCallback, clearPatternRenderers: clearPatternRenderersCallback, // Direct access to registry for advanced usage registry: pluginRegistry }; }