UNPKG

1.01 kBTypeScriptView Raw
1declare var require: any;
2import * as React from 'react';
3import { IRoute } from './routed-app';
4
5// create empty context as default
6const RoutesContext = React.createContext({});
7
8interface IAttachRoutesProps {
9 routes: Array<IRoute>
10}
11/**
12 * This HOC attaches the Routes of a SinglePageApp or a WebApp
13 */
14const AttachRoutes: React.SFC<IAttachRoutesProps> = (props) => {
15
16 return <RoutesContext.Provider
17 value={{
18 routes: props.routes
19 }}>{props.children}</RoutesContext.Provider>
20
21};
22
23/**
24 * @param Component
25 * @returns {function(any): any}
26 */
27export function withRoutes(Component) {
28 return function WrapperComponent(props) {
29 return (
30 <RoutesContext.Consumer>
31 {(context: any) => {
32
33 return <Component
34 {...props}
35 routes={context.routes}
36 />
37 }}
38 </RoutesContext.Consumer>
39 );
40 };
41}
42
43export default AttachRoutes;
44
45
46
47