UNPKG

@ark-ui/solid

Version:

A collection of unstyled, accessible UI components for Solid, utilizing state machines for seamless interaction.

28 lines (26 loc) 1.03 kB
// src/utils/create-context.ts import { hasProp, isFunction } from "@zag-js/utils"; import { createContext as createSolidContext, useContext as useSolidContext } from "solid-js"; function getErrorMessage(hook, provider) { return `${hook} returned \`undefined\`. Seems you forgot to wrap component within ${provider}`; } function createContext(options = {}) { const { strict = true, hookName = "useContext", providerName = "Provider", errorMessage, defaultValue } = options; const Context = createSolidContext(defaultValue); function useContext() { const context = useSolidContext(Context); if (!context && strict) { const error = new Error(errorMessage ?? getErrorMessage(hookName, providerName)); error.name = "ContextError"; if (hasProp(Error, "captureStackTrace") && isFunction(Error.captureStackTrace)) { Error.captureStackTrace(error, useContext); } throw error; } return context; } return [Context.Provider, useContext, Context]; } export { createContext };