{"version":3,"file":"FragmentRenderer.mjs","names":[],"sources":["../../src/react/FragmentRenderer.tsx"],"sourcesContent":["import * as React from 'react';\nimport {\n  type ExtractReadFromStore,\n  type IsographEntrypoint,\n} from '../core/entrypoint';\nimport { type FragmentReference } from '../core/FragmentReference';\nimport { type NetworkRequestReaderOptions } from '../core/read';\nimport { useResult } from './useResult';\nimport type { NetworkResponseObject } from '../core/cache';\n\nexport type IsExactlyIntrinsicAttributes<T> = T extends JSX.IntrinsicAttributes\n  ? JSX.IntrinsicAttributes extends T\n    ? true\n    : false\n  : false;\n\nexport function FragmentRenderer<\n  TProps extends Record<any, any>,\n  TRawResponseType extends NetworkResponseObject,\n  TEntrypoint extends IsographEntrypoint<\n    any,\n    React.FC<TProps>,\n    any,\n    TRawResponseType\n  >,\n>(\n  props: IsExactlyIntrinsicAttributes<TProps> extends true\n    ? {\n        fragmentReference: FragmentReference<\n          ExtractReadFromStore<TEntrypoint>,\n          React.FC<TProps>\n        >;\n        additionalProps?: Record<PropertyKey, never>;\n        networkRequestOptions?: Partial<NetworkRequestReaderOptions>;\n      }\n    : {\n        fragmentReference: FragmentReference<\n          ExtractReadFromStore<TEntrypoint>,\n          React.FC<TProps>\n        >;\n        additionalProps: Omit<TProps, keyof JSX.IntrinsicAttributes>;\n        networkRequestOptions?: Partial<NetworkRequestReaderOptions>;\n      },\n): React.ReactNode {\n  const Component = useResult(\n    props.fragmentReference,\n    props.networkRequestOptions,\n  );\n  // TypeScript is not understanding that if additionalProps is Record<PropertyKey, never>,\n  // it means that TProps === JSX.IntrinsicAttributes.\n  // @ts-expect-error\n  return <Component {...props.additionalProps} />;\n}\n"],"mappings":";;;;AAgBA,SAAgB,iBAUd,OAiBiB;CACjB,MAAM,YAAY,UAChB,MAAM,mBACN,MAAM,sBACP;AAID,QAAO,sCAAC,WAAc,MAAM,gBAAmB"}