UNPKG

refun

Version:

A collection of React Hook-enabled functions that compose harmoniously with each other. Similar to `recompose`, but:

1 lines 11.9 kB
{"version":3,"sources":["pure-component.tsx"],"names":["useRef","EMPTY_OBJECT","shallowEquals","pureComponent","uses","Component","props","renderResultRef","prevOutPropsRef","outProps","reduce","use","current"],"mappings":"AAAA,SAASA,MAAT,QAAuB,OAAvB;AAEA,SAASC,YAAT,QAA6B,MAA7B;AAEA,SAASC,aAAT,QAA8B,SAA9B;AA2BA,OAAO,SAASC,aAAT,GAAuC;AAAA,oCAAbC,IAAa;AAAbA,IAAAA,IAAa;AAAA;;AAC5C,SAAO,UAACC,SAAD;AAAA,WAAwB,UAACC,KAAD,EAAgB;AAC7C,UAAMC,eAAe,GAAGP,MAAM,CAAsB,IAAtB,CAA9B;AACA,UAAMQ,eAAe,GAAGR,MAAM,CAACC,YAAD,CAA9B;AACA,UAAMQ,QAAQ,GAAGL,IAAI,CAACM,MAAL,CAAY,UAACJ,KAAD,EAAQK,GAAR;AAAA,eAAgBA,GAAG,CAACL,KAAD,CAAnB;AAAA,OAAZ,EAAwCA,KAAxC,CAAjB;;AAEA,UAAIE,eAAe,CAACI,OAAhB,KAA4BX,YAA5B,IAA4C,CAACC,aAAa,CAACM,eAAe,CAACI,OAAjB,EAA0BH,QAA1B,CAA9D,EAAmG;AACjGD,QAAAA,eAAe,CAACI,OAAhB,GAA0BH,QAA1B;AACAF,QAAAA,eAAe,CAACK,OAAhB,GAA0BP,SAAS,CAACI,QAAD,CAAnC;AACD;;AAED,aAAOF,eAAe,CAACK,OAAvB;AACD,KAXM;AAAA,GAAP;AAYD,C,CAED;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA","sourcesContent":["import { useRef } from 'react'\nimport type { ReactElement, FC } from 'react'\nimport { EMPTY_OBJECT } from 'tsfn'\nimport type { TComponent } from './component'\nimport { shallowEquals } from './utils'\n\nexport function pureComponent<T1, R> (fn: (p: T1) => R): (Component: FC<R>) => TComponent<T1>\nexport function pureComponent<T1, T2, R> (fn1: (p: T1) => T2, fn2: (p: T2) => R): (Component: FC<R>) => TComponent<T1>\nexport function pureComponent<T1, T2, T3, R> (fn1: (p: T1) => T2, fn2: (p: T2) => T3, fn3: (p: T3) => R): (Component: FC<R>) => TComponent<T1>\nexport function pureComponent<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 pureComponent<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 pureComponent<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 pureComponent<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 pureComponent<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 pureComponent<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 pureComponent<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 pureComponent<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 pureComponent<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 pureComponent<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 pureComponent<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 pureComponent<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 pureComponent<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 pureComponent<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 pureComponent<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 pureComponent<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 pureComponent<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 pureComponent<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 pureComponent<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 pureComponent<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 pureComponent<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 pureComponent(...uses: any[]) {\n return (Component: FC<any>) => (props: any) => {\n const renderResultRef = useRef<ReactElement | null>(null)\n const prevOutPropsRef = useRef(EMPTY_OBJECT)\n const outProps = uses.reduce((props, use) => use(props), props)\n\n if (prevOutPropsRef.current === EMPTY_OBJECT || !shallowEquals(prevOutPropsRef.current, outProps)) {\n prevOutPropsRef.current = outProps\n renderResultRef.current = Component(outProps)\n }\n\n return renderResultRef.current\n }\n}\n\n// export function pureComponent(...uses: any[]) {\n// return (displayComponent: FC<any>) => {\n// const MemoComponent = memo(Component)\n// const MemoRefComponent = memo(forwardRef((props: any, ref) => Component({ ...props, ref })))\n// const Result = memo((props: any) => {\n// const outProps = uses.reduce((props, use) => use(props, { displayName }), props)\n\n// if (isUndefined(outProps.ref)) {\n// return (\n// <MemoComponent {...outProps} />\n// )\n// }\n\n// return (\n// <MemoRefComponent {...outProps}/>\n// )\n// })\n// Result.displayName = displayName\n\n// return Result\n// }\n// }\n"],"file":"pure-component.js"}