{"version":3,"sources":["../../src/MergedController/index.ts"],"names":["useMergedValue_default"],"mappings":";;;;;AA4BA,IAAM,gBAAA,GAAmB,CACvB,KAAA,KACmB,KAAM,CAAA,MAAA,CAAOA,yCAAe,KAAM,CAAA,MAAA,EAAQ,KAAM,CAAA,MAAM,CAAC,CAAA;AAE5E,IAAO,wBAAQ,GAAA","file":"chunk-MBLZUBMO.cjs","sourcesContent":["import type { FC } from 'react';\nimport type { AsyncState, StateBase as State } from '../types';\nimport useMergedValue from '../useMergedValue';\n\ntype Props<S extends State[], V> = {\n  states: S;\n  /** Function that merges the values from the provided {@link Props.states states}. */\n  merger(values: {\n    [index in keyof S]: S[index] extends State<infer K>\n      ? K | (S[index] extends AsyncState ? undefined : never)\n      : never;\n  }): V;\n  /** Function that renders the merged value. */\n  render(mergedValue: V): ReturnType<FC>;\n};\n\n/**\n * A controller that {@link Props.merger merges} values from multiple {@link Props.states states} and passes the result to a {@link Props.render render} function.\n * This component serves as a wrapper for the {@link useMergedValue} hook.\n * @example\n * ```jsx\n * <MergedController\n *   states={[state1, state2]}\n *   merger={(value1, value2) => `${value1} and ${value2}`}\n *   render={(mergedValue) => <span>Merged: {mergedValue}</span>}\n * />\n * ```\n */\nconst MergedController = <const S extends State[], V>(\n  props: Props<S, V>\n): ReturnType<FC> => props.render(useMergedValue(props.states, props.merger));\n\nexport default MergedController;\n"]}