{"version":3,"sources":["../../src/hocs/BooleanCase.tsx","../../src/hocs/SwitchCase.tsx"],"names":["BooleanCase","status","caseBy","SwitchCase","value","defaultComponent","_a"],"mappings":";AAqBO,IAAMA,EAAc,CAAC,CAAE,OAAAC,EAAQ,OAAAC,CAAO,IACvCD,EAAeC,EAAO,KAEnBA,EAAO,MCAT,IAAMC,EAAa,CAAsB,CAC9C,MAAAC,EACA,OAAAF,EACA,iBAAAG,EAAmB,IACrB,IAAmB,CA5BnB,IAAAC,EA6BE,OAAIF,IAAU,KACLC,GAGFC,EAAAJ,EAAOE,CAAK,IAAZ,KAAAE,EAAiBD,CAC1B","sourcesContent":["type TrueOrFalse = \"TRUE\" | \"FALSE\";\n\ninterface Props {\n  status: boolean | undefined; // status 자체가 없으면은 안되고, optional type으로 넘겨주는 경우가 있기 때문에 undefined 값을 넣어줬습니다.\n  caseBy: Record<TrueOrFalse, JSX.Element>;\n}\n\n/**\n * @name BooleanCase\n * @description boolean을 사용한 삼항 연산자 구문을 선언적으로 사용할 수 있는 컴포넌트입니다.\n *\n * @example\n * <BooleanCase\n *    status={isBoolean}\n *    caseBy={{\n *      TRUE: <div>if true</div>,\n *      FALSE: <div>if false</div>\n *    }}\n * />\n */\n\nexport const BooleanCase = ({ status, caseBy }: Props) => {\n  if (status) return caseBy.TRUE;\n\n  return caseBy.FALSE;\n};\n","import type { JSX } from \"react\";\n\ninterface Props<Case extends string> {\n  caseBy: Partial<Record<Case, JSX.Element | null>>;\n  value: Case;\n  defaultComponent?: JSX.Element | null;\n}\n\n/**\n * @name SwitchCase\n * @description switch-case 구문을 선언적으로 사용할 수 있는 컴포넌트입니다\n * @example\n *  <SwitchCase\n *    value={status}\n *    // status 값이 `'a'`, `'b'`, `'c'` 인지에 따라서 아래 컴포넌트가 render 됩니다.\n *    caseBy={{\n *      a: <TypeA />,\n *      b: <TypeB />,\n *      c: <TypeC />\n *    }}\n *    // status 값이 아무것도 해당되지 않는 경우, 이 컴포넌트가 render 됩니다.\n *    defaultComponent={<Default />}\n * />\n */\nexport const SwitchCase = <Case extends string>({\n  value,\n  caseBy,\n  defaultComponent = null,\n}: Props<Case>) => {\n  if (value === null) {\n    return defaultComponent;\n  }\n\n  return caseBy[value] ?? defaultComponent;\n};\n"]}