refun
Version:
A collection of React Hook-enabled functions that compose harmoniously with each other. Similar to `recompose`, but:
1 lines • 10.7 kB
Source Map (JSON)
{"version":3,"sources":["component.tsx"],"names":["component","uses","Component","props","reduce","use"],"mappings":"AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA+BA,OAAO,SAASA,SAAT,GAAmC;AAAA,oCAAbC,IAAa;AAAbA,IAAAA,IAAa;AAAA;;AACxC,SAAO,UAACC,SAAD;AAAA,WAAwB,UAACC,KAAD;AAAA,aAAgBD,SAAS,CACtDD,IAAI,CAACG,MAAL,CAAY,UAACD,KAAD,EAAQE,GAAR;AAAA,eAAgBA,GAAG,CAACF,KAAD,CAAnB;AAAA,OAAZ,EAAwCA,KAAxC,CADsD,CAAzB;AAAA,KAAxB;AAAA,GAAP;AAGD","sourcesContent":["/* eslint-disable @typescript-eslint/consistent-type-definitions */\nimport type { FC } from 'react'\n\n// Generator\n// let str = 'export function component<T1, T2, R> (fn1: (p: T1) => T2, fn2: (p: T2) => R): (Component: FC<R>) => TComponent<T1>'\n// for (let i = 0; i < 100; i++) {\n// const regexpResult = /^export function component<(T(\\d+), )+R>.*$/.exec(str)\n// const last = Number(regexpResult[regexpResult.length - 1])\n// const next = last + 1\n// str = str\n// .replace(`T${last}, R>`, `T${last}, T${next}, R>`)\n// .replace(`fn${last}: (p: T${last}) => R`, `fn${last}: (p: T${last}) => T${next}, fn${next}: (p: T${next}) => R`)\n// console.log(str)\n// }\n\nexport interface TComponent<T> extends FC<T> {\n [k: string]: any,\n}\n\nexport function component<T1, R> (fn: (p: T1) => R): (Component: FC<R>) => TComponent<T1>\nexport function component<T1, T2, R> (fn1: (p: T1) => T2, fn2: (p: T2) => R): (Component: FC<R>) => TComponent<T1>\nexport function component<T1, T2, T3, R> (fn1: (p: T1) => T2, fn2: (p: T2) => T3, fn3: (p: T3) => R): (Component: FC<R>) => TComponent<T1>\nexport function component<T1, T2, T3, T4, R> (fn1: (p: T1) => T2, fn2: (p: T2) => T3, fn3: (p: T3) => T4, fn4: (p: T4) => R): (Component: FC<R>) => TComponent<T1>\nexport function component<T1, T2, T3, T4, T5, R> (fn1: (p: T1) => T2, fn2: (p: T2) => T3, fn3: (p: T3) => T4, fn4: (p: T4) => T5, fn5: (p: T5) => R): (Component: FC<R>) => TComponent<T1>\nexport function component<T1, T2, T3, T4, T5, T6, R> (fn1: (p: T1) => T2, fn2: (p: T2) => T3, fn3: (p: T3) => T4, fn4: (p: T4) => T5, fn5: (p: T5) => T6, fn6: (p: T6) => R): (Component: FC<R>) => TComponent<T1>\nexport function component<T1, T2, T3, T4, T5, T6, T7, R> (fn1: (p: T1) => T2, fn2: (p: T2) => T3, fn3: (p: T3) => T4, fn4: (p: T4) => T5, fn5: (p: T5) => T6, fn6: (p: T6) => T7, fn7: (p: T7) => R): (Component: FC<R>) => TComponent<T1>\nexport function component<T1, T2, T3, T4, T5, T6, T7, T8, R> (fn1: (p: T1) => T2, fn2: (p: T2) => T3, fn3: (p: T3) => T4, fn4: (p: T4) => T5, fn5: (p: T5) => T6, fn6: (p: T6) => T7, fn7: (p: T7) => T8, fn8: (p: T8) => R): (Component: FC<R>) => TComponent<T1>\nexport function component<T1, T2, T3, T4, T5, T6, T7, T8, T9, R> (fn1: (p: T1) => T2, fn2: (p: T2) => T3, fn3: (p: T3) => T4, fn4: (p: T4) => T5, fn5: (p: T5) => T6, fn6: (p: T6) => T7, fn7: (p: T7) => T8, fn8: (p: T8) => T9, fn9: (p: T9) => R): (Component: FC<R>) => TComponent<T1>\nexport function component<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, R> (fn1: (p: T1) => T2, fn2: (p: T2) => T3, fn3: (p: T3) => T4, fn4: (p: T4) => T5, fn5: (p: T5) => T6, fn6: (p: T6) => T7, fn7: (p: T7) => T8, fn8: (p: T8) => T9, fn9: (p: T9) => T10, fn10: (p: T10) => R): (Component: FC<R>) => TComponent<T1>\nexport function component<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, R> (fn1: (p: T1) => T2, fn2: (p: T2) => T3, fn3: (p: T3) => T4, fn4: (p: T4) => T5, fn5: (p: T5) => T6, fn6: (p: T6) => T7, fn7: (p: T7) => T8, fn8: (p: T8) => T9, fn9: (p: T9) => T10, fn10: (p: T10) => T11, fn11: (p: T11) => R): (Component: FC<R>) => TComponent<T1>\nexport function component<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, R> (fn1: (p: T1) => T2, fn2: (p: T2) => T3, fn3: (p: T3) => T4, fn4: (p: T4) => T5, fn5: (p: T5) => T6, fn6: (p: T6) => T7, fn7: (p: T7) => T8, fn8: (p: T8) => T9, fn9: (p: T9) => T10, fn10: (p: T10) => T11, fn11: (p: T11) => T12, fn12: (p: T12) => R): (Component: FC<R>) => TComponent<T1>\nexport function component<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, R> (fn1: (p: T1) => T2, fn2: (p: T2) => T3, fn3: (p: T3) => T4, fn4: (p: T4) => T5, fn5: (p: T5) => T6, fn6: (p: T6) => T7, fn7: (p: T7) => T8, fn8: (p: T8) => T9, fn9: (p: T9) => T10, fn10: (p: T10) => T11, fn11: (p: T11) => T12, fn12: (p: T12) => T13, fn13: (p: T13) => R): (Component: FC<R>) => TComponent<T1>\nexport function component<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, R> (fn1: (p: T1) => T2, fn2: (p: T2) => T3, fn3: (p: T3) => T4, fn4: (p: T4) => T5, fn5: (p: T5) => T6, fn6: (p: T6) => T7, fn7: (p: T7) => T8, fn8: (p: T8) => T9, fn9: (p: T9) => T10, fn10: (p: T10) => T11, fn11: (p: T11) => T12, fn12: (p: T12) => T13, fn13: (p: T13) => T14, fn14: (p: T14) => R): (Component: FC<R>) => TComponent<T1>\nexport function component<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, R> (fn1: (p: T1) => T2, fn2: (p: T2) => T3, fn3: (p: T3) => T4, fn4: (p: T4) => T5, fn5: (p: T5) => T6, fn6: (p: T6) => T7, fn7: (p: T7) => T8, fn8: (p: T8) => T9, fn9: (p: T9) => T10, fn10: (p: T10) => T11, fn11: (p: T11) => T12, fn12: (p: T12) => T13, fn13: (p: T13) => T14, fn14: (p: T14) => T15, fn15: (p: T15) => R): (Component: FC<R>) => TComponent<T1>\nexport function component<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, R> (fn1: (p: T1) => T2, fn2: (p: T2) => T3, fn3: (p: T3) => T4, fn4: (p: T4) => T5, fn5: (p: T5) => T6, fn6: (p: T6) => T7, fn7: (p: T7) => T8, fn8: (p: T8) => T9, fn9: (p: T9) => T10, fn10: (p: T10) => T11, fn11: (p: T11) => T12, fn12: (p: T12) => T13, fn13: (p: T13) => T14, fn14: (p: T14) => T15, fn15: (p: T15) => T16, fn16: (p: T16) => R): (Component: FC<R>) => TComponent<T1>\nexport function component<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, R> (fn1: (p: T1) => T2, fn2: (p: T2) => T3, fn3: (p: T3) => T4, fn4: (p: T4) => T5, fn5: (p: T5) => T6, fn6: (p: T6) => T7, fn7: (p: T7) => T8, fn8: (p: T8) => T9, fn9: (p: T9) => T10, fn10: (p: T10) => T11, fn11: (p: T11) => T12, fn12: (p: T12) => T13, fn13: (p: T13) => T14, fn14: (p: T14) => T15, fn15: (p: T15) => T16, fn16: (p: T16) => T17, fn17: (p: T17) => R): (Component: FC<R>) => TComponent<T1>\nexport function component<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, R> (fn1: (p: T1) => T2, fn2: (p: T2) => T3, fn3: (p: T3) => T4, fn4: (p: T4) => T5, fn5: (p: T5) => T6, fn6: (p: T6) => T7, fn7: (p: T7) => T8, fn8: (p: T8) => T9, fn9: (p: T9) => T10, fn10: (p: T10) => T11, fn11: (p: T11) => T12, fn12: (p: T12) => T13, fn13: (p: T13) => T14, fn14: (p: T14) => T15, fn15: (p: T15) => T16, fn16: (p: T16) => T17, fn17: (p: T17) => T18, fn18: (p: T18) => R): (Component: FC<R>) => TComponent<T1>\nexport function component<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, R> (fn1: (p: T1) => T2, fn2: (p: T2) => T3, fn3: (p: T3) => T4, fn4: (p: T4) => T5, fn5: (p: T5) => T6, fn6: (p: T6) => T7, fn7: (p: T7) => T8, fn8: (p: T8) => T9, fn9: (p: T9) => T10, fn10: (p: T10) => T11, fn11: (p: T11) => T12, fn12: (p: T12) => T13, fn13: (p: T13) => T14, fn14: (p: T14) => T15, fn15: (p: T15) => T16, fn16: (p: T16) => T17, fn17: (p: T17) => T18, fn18: (p: T18) => T19, fn19: (p: T19) => R): (Component: FC<R>) => TComponent<T1>\nexport function component<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, R> (fn1: (p: T1) => T2, fn2: (p: T2) => T3, fn3: (p: T3) => T4, fn4: (p: T4) => T5, fn5: (p: T5) => T6, fn6: (p: T6) => T7, fn7: (p: T7) => T8, fn8: (p: T8) => T9, fn9: (p: T9) => T10, fn10: (p: T10) => T11, fn11: (p: T11) => T12, fn12: (p: T12) => T13, fn13: (p: T13) => T14, fn14: (p: T14) => T15, fn15: (p: T15) => T16, fn16: (p: T16) => T17, fn17: (p: T17) => T18, fn18: (p: T18) => T19, fn19: (p: T19) => T20, fn20: (p: T20) => R): (Component: FC<R>) => TComponent<T1>\nexport function component<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, R> (fn1: (p: T1) => T2, fn2: (p: T2) => T3, fn3: (p: T3) => T4, fn4: (p: T4) => T5, fn5: (p: T5) => T6, fn6: (p: T6) => T7, fn7: (p: T7) => T8, fn8: (p: T8) => T9, fn9: (p: T9) => T10, fn10: (p: T10) => T11, fn11: (p: T11) => T12, fn12: (p: T12) => T13, fn13: (p: T13) => T14, fn14: (p: T14) => T15, fn15: (p: T15) => T16, fn16: (p: T16) => T17, fn17: (p: T17) => T18, fn18: (p: T18) => T19, fn19: (p: T19) => T20, fn20: (p: T20) => T21, fn21: (p: T21) => R): (Component: FC<R>) => TComponent<T1>\nexport function component<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, R> (fn1: (p: T1) => T2, fn2: (p: T2) => T3, fn3: (p: T3) => T4, fn4: (p: T4) => T5, fn5: (p: T5) => T6, fn6: (p: T6) => T7, fn7: (p: T7) => T8, fn8: (p: T8) => T9, fn9: (p: T9) => T10, fn10: (p: T10) => T11, fn11: (p: T11) => T12, fn12: (p: T12) => T13, fn13: (p: T13) => T14, fn14: (p: T14) => T15, fn15: (p: T15) => T16, fn16: (p: T16) => T17, fn17: (p: T17) => T18, fn18: (p: T18) => T19, fn19: (p: T19) => T20, fn20: (p: T20) => T21, fn21: (p: T21) => T22, fn22: (p: T22) => R): (Component: FC<R>) => TComponent<T1>\nexport function component<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, R> (fn1: (p: T1) => T2, fn2: (p: T2) => T3, fn3: (p: T3) => T4, fn4: (p: T4) => T5, fn5: (p: T5) => T6, fn6: (p: T6) => T7, fn7: (p: T7) => T8, fn8: (p: T8) => T9, fn9: (p: T9) => T10, fn10: (p: T10) => T11, fn11: (p: T11) => T12, fn12: (p: T12) => T13, fn13: (p: T13) => T14, fn14: (p: T14) => T15, fn15: (p: T15) => T16, fn16: (p: T16) => T17, fn17: (p: T17) => T18, fn18: (p: T18) => T19, fn19: (p: T19) => T20, fn20: (p: T20) => T21, fn21: (p: T21) => T22, fn22: (p: T22) => T23, fn23: (p: T23) => R): (Component: FC<R>) => TComponent<T1>\nexport function component<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, R> (fn1: (p: T1) => T2, fn2: (p: T2) => T3, fn3: (p: T3) => T4, fn4: (p: T4) => T5, fn5: (p: T5) => T6, fn6: (p: T6) => T7, fn7: (p: T7) => T8, fn8: (p: T8) => T9, fn9: (p: T9) => T10, fn10: (p: T10) => T11, fn11: (p: T11) => T12, fn12: (p: T12) => T13, fn13: (p: T13) => T14, fn14: (p: T14) => T15, fn15: (p: T15) => T16, fn16: (p: T16) => T17, fn17: (p: T17) => T18, fn18: (p: T18) => T19, fn19: (p: T19) => T20, fn20: (p: T20) => T21, fn21: (p: T21) => T22, fn22: (p: T22) => T23, fn23: (p: T23) => T24, fn24: (p: T24) => R): (Component: FC<R>) => TComponent<T1>\n\nexport function component(...uses: any[]) {\n return (Component: FC<any>) => (props: any) => Component(\n uses.reduce((props, use) => use(props), props)\n )\n}\n"],"file":"component.js"}