@uifabric/utilities
Version:
Fluent UI React utilities for building components.
1 lines • 2.22 kB
Source Map (JSON)
{"version":3,"file":"composeRenderFunction.js","sourceRoot":"../src/","sources":["renderFunction/composeRenderFunction.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAM5C,SAAS,4BAA4B,CACnC,KAA8B;IAE9B,IAAM,aAAa,GAAG,cAAc,CAAC,UAAC,KAA8B;QAClE,IAAM,aAAa,GAAG,cAAc,CAAC,UAAC,aAAsC;YAC1E,OAAO,UAAC,UAAmB;gBACzB,OAAO,KAAK,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;YAC1C,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,OAAO,UAAC,UAAmB,EAAE,aAAuC;YAClE,OAAO,KAAK,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QACjF,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,OAAO,aAAa,CAAC;AACvB,CAAC;AAED,IAAM,QAAQ,GAAG,cAAc,CAA0B,4BAA4B,CAAC,CAAC;AAEvF;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CACnC,KAA8B,EAC9B,KAA8B;IAE9B,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC;AAChC,CAAC","sourcesContent":["import { IRenderFunction } from '../IRenderFunction';\nimport { createMemoizer } from '../memoize';\n\ninterface IRenderFunctionComposer {\n <TProps>(outer: IRenderFunction<TProps>): (inner: IRenderFunction<TProps>) => IRenderFunction<TProps>;\n}\n\nfunction createComposedRenderFunction<TProps>(\n outer: IRenderFunction<TProps>,\n): (inner: IRenderFunction<TProps>) => IRenderFunction<TProps> {\n const outerMemoizer = createMemoizer((inner: IRenderFunction<TProps>) => {\n const innerMemoizer = createMemoizer((defaultRender: IRenderFunction<TProps>) => {\n return (innerProps?: TProps) => {\n return inner(innerProps, defaultRender);\n };\n });\n\n return (outerProps?: TProps, defaultRender?: IRenderFunction<TProps>) => {\n return outer(outerProps, defaultRender ? innerMemoizer(defaultRender) : inner);\n };\n });\n\n return outerMemoizer;\n}\n\nconst memoizer = createMemoizer<IRenderFunctionComposer>(createComposedRenderFunction);\n\n/**\n * Composes two 'render functions' to produce a final render function that renders\n * the outer function, passing the inner function as 'default render'. The inner function\n * is then passed the original 'default render' prop.\n * @public\n */\nexport function composeRenderFunction<TProps>(\n outer: IRenderFunction<TProps>,\n inner: IRenderFunction<TProps>,\n): IRenderFunction<TProps> {\n return memoizer(outer)(inner);\n}\n"]}