import type { Accessor, ParentComponent } from 'solid-js'; import { flatten, translator } from '@solid-primitives/i18n'; import { merge } from 'lodash-es'; import { createContext, useContext } from 'solid-js'; type ToolProviderContext = { toolLocaleDict: Accessor>; }; 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'); } return { t: translator(() => flatten(merge({}, defaultDictionary, context.toolLocaleDict()))), }; } export const CurrentToolProvider: ParentComponent = (props) => { return ( {props.children} ); };