import type { Accessor, ParentComponent } from 'solid-js'; import type { ToolDefinition } from './tools.types'; import { flatten, translator } from '@solid-primitives/i18n'; import { merge } from 'lodash-es'; import { createContext, useContext } from 'solid-js'; type ToolProviderContext = { toolLocaleDict: Accessor>; tool: Accessor & { name: string; description: string }>; }; const CurrentToolContext = createContext(); export function useCurrentTool({ defaultDictionary }: { defaultDictionary: T }) { const context = useContext(CurrentToolContext); if (!context) { throw new Error('useCurrentTool must be used within a CurrentToolProvider'); } const { toolLocaleDict, tool } = context; return { t: translator(() => flatten(merge({}, defaultDictionary, toolLocaleDict()))), getTool: tool, }; } export const CurrentToolProvider: ParentComponent = (props) => { return ( {props.children} ); };