{"version":3,"file":"index.cjs","names":[],"sources":["../../../src/components/SwitchCase/index.tsx"],"sourcesContent":["import { isNil } from '@modern-kit/utils';\nimport React from 'react';\n\ninterface SwitchCaseProps<Case extends PropertyKey> {\n  value: Case | null | undefined;\n  caseBy: Record<Case, React.ReactNode>;\n  defaultComponent?: React.ReactNode;\n}\n\n/**\n * @description value 값에 따라 다른 컴포넌트를 `Switch` 형태로 조건부 렌더링하는 컴포넌트입니다.\n *\n * @param {SwitchCaseProps<Case>} props - `SwitchCase` 컴포넌트의 속성\n * @param {Case | null | undefined} props.value - 렌더링할 케이스를 결정하는 값\n * @param {Record<Case, React.ReactNode>} props.caseBy - `value` 값에 대응하는 컴포넌트들을 담은 객체\n * @param {React.ReactNode} props.defaultComponent - `value`가 `null`이거나 `caseBy`에 해당하는 컴포넌트가 없을 때 렌더링할 기본 컴포넌트\n *\n * @returns {JSX.Element} - 조건부로 렌더링된 컴포넌트\n *\n * @example\n * ```tsx\n * <SwitchCase\n *   value={status}\n *   caseBy={{ success: <SuccessView />, error: <ErrorView /> }}\n *   defaultComponent={<DefaultView />}\n * />\n * ```\n */\nexport const SwitchCase = <Case extends PropertyKey>({\n  caseBy,\n  value,\n  defaultComponent = null,\n}: SwitchCaseProps<Case>): React.JSX.Element => {\n  if (isNil(value)) {\n    return <>{defaultComponent}</>;\n  }\n\n  return <>{caseBy[value] ?? defaultComponent}</>;\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AA4BA,MAAa,cAAwC,EACnD,QACA,OACA,mBAAmB,WAC2B;CAC9C,KAAA,GAAA,kBAAA,OAAU,MAAM,EACd,OAAO,iBAAA,GAAA,kBAAA,KAAA,kBAAA,UAAA,EAAA,UAAG,kBAAoB,CAAA;CAGhC,OAAO,iBAAA,GAAA,kBAAA,KAAA,kBAAA,UAAA,EAAA,UAAG,OAAO,UAAU,kBAAoB,CAAA"}