{"version":3,"sources":["../../src/Controller/index.ts"],"names":["useValue_default"],"mappings":";;;;;AAgBA,IAAM,UAAc,GAAA,CAAC,EAAE,MAAA,EAAQ,OAC7B,KAAA,MAAA;AAAA,EACEA,mCAAS,KAAK,CAAA;AAAA,EACd,MAAO,CAAA,MAAA,GAAS,CAAK,IAAAA,kCAAA,CAAS,MAAM,QAAQ,CAAA;AAAA,EAC5C,MAAO,CAAA,MAAA,GAAS,CAAK,IAAAA,kCAAA,CAAS,MAAM,KAAK;AAC3C,CAAA;AA6BF,IAAO,kBAAQ,GAAA","file":"chunk-6CWGV2BD.cjs","sourcesContent":["import type { FC } from 'react';\nimport type { AsyncState, StateBase as State } from '../types';\nimport useValue from '../useValue';\n\ntype Props<S extends State> = {\n  state: S;\n  /** Function that renders the state’s value. */\n  render(\n    ...args: S extends AsyncState<infer V, infer E>\n      ? [value: V | undefined, isLoaded: boolean, error: E | undefined]\n      : S extends State<infer V>\n        ? [value: V]\n        : never\n  ): ReturnType<FC>;\n};\n\nconst Controller = (({ render, state }: Props<AsyncState>) =>\n  render(\n    useValue(state),\n    render.length > 1 && useValue(state.isLoaded),\n    render.length > 2 && useValue(state.error)\n  )) as {\n  /**\n   * A controller component that renders the value from the given {@link Props.state state}.\n   * This component wraps the {@link useValue} hook and provides a flexible way\n   * to render state values along with their loading and error statuses when applicable.\n   * @example\n   * ```jsx\n   * <Controller\n   *   state={state}\n   *   render={(value) => <div>{value}</div>}\n   * />\n   *\n   * <Controller\n   *   state={asyncState}\n   *   render={(value, isLoaded, error) => (\n   *     <div>\n   *       {isLoaded ? (\n   *         error ? <span>Error: {error}</span> : <span>Value: {value}</span>\n   *       ) : (\n   *         <span>Loading...</span>\n   *       )}\n   *     </div>\n   *   )}\n   * />\n   * ```\n   */\n  <S extends State>(props: Props<S>): ReturnType<FC>;\n};\n\nexport default Controller;\n"]}