1 | declare var require: any;
|
2 | import * as React from 'react';
|
3 | import { IRoute } from './routed-app';
|
4 |
|
5 |
|
6 | const RoutesContext = React.createContext({});
|
7 |
|
8 | interface IAttachRoutesProps {
|
9 | routes: Array<IRoute>
|
10 | }
|
11 |
|
12 |
|
13 |
|
14 | const 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 |
|
25 |
|
26 |
|
27 | export 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 |
|
43 | export default AttachRoutes;
|
44 |
|
45 |
|
46 |
|
47 |
|