mirror of
https://github.com/Stremio/stremio-web.git
synced 2026-03-29 01:28:48 +00:00
RoutesContainerContext, providers and consumers implemented
This commit is contained in:
parent
04a47d4e54
commit
a04dd5ff7e
5 changed files with 63 additions and 0 deletions
|
|
@ -0,0 +1,7 @@
|
|||
const React = require('react');
|
||||
|
||||
const RoutesContainerContext = React.createContext(null);
|
||||
|
||||
RoutesContainerContext.displayName = 'RoutesContainerContext';
|
||||
|
||||
module.exports = RoutesContainerContext;
|
||||
|
|
@ -0,0 +1,26 @@
|
|||
const React = require('react');
|
||||
const PropTypes = require('prop-types');
|
||||
const RoutesContainerContext = require('./RoutesContainerContext');
|
||||
|
||||
const RoutesContainerProvider = React.memo(({ containerClassName, children }) => {
|
||||
const [container, setContainer] = React.useState(null);
|
||||
return (
|
||||
<RoutesContainerContext.Provider value={container}>
|
||||
<div ref={setContainer} className={containerClassName}>
|
||||
{container instanceof HTMLElement ? children : null}
|
||||
</div>
|
||||
</RoutesContainerContext.Provider>
|
||||
);
|
||||
});
|
||||
|
||||
RoutesContainerProvider.displayName = 'RoutesContainerProvider';
|
||||
|
||||
RoutesContainerProvider.propTypes = {
|
||||
containerClassName: PropTypes.string,
|
||||
children: PropTypes.oneOfType([
|
||||
PropTypes.arrayOf(PropTypes.node),
|
||||
PropTypes.node
|
||||
])
|
||||
};
|
||||
|
||||
module.exports = RoutesContainerProvider;
|
||||
9
src/navigation/RoutesContainerContext/index.js
Normal file
9
src/navigation/RoutesContainerContext/index.js
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
const RoutesContainerProvider = require('./RoutesContainerProvider');
|
||||
const useRoutesContainer = require('./useRoutesContainer.js');
|
||||
const withRoutesContainer = require('./withRoutesContainer');
|
||||
|
||||
module.exports = {
|
||||
RoutesContainerProvider,
|
||||
useRoutesContainer,
|
||||
withRoutesContainer
|
||||
};
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
const React = require('react');
|
||||
const RoutesContainerContext = require('./RoutesContainerContext');
|
||||
|
||||
const useRoutesContainer = () => {
|
||||
return React.useContext(RoutesContainerContext);
|
||||
};
|
||||
|
||||
module.exports = useRoutesContainer;
|
||||
13
src/navigation/RoutesContainerContext/withRoutesContainer.js
Normal file
13
src/navigation/RoutesContainerContext/withRoutesContainer.js
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
const React = require('react');
|
||||
const useRoutesContainer = require('./useRoutesContainer');
|
||||
|
||||
const withRoutesContainer = (Component) => {
|
||||
return (props) => {
|
||||
const routesContainer = useRoutesContainer();
|
||||
return (
|
||||
<Component {...props} routesContainer={routesContainer} />
|
||||
);
|
||||
};
|
||||
};
|
||||
|
||||
module.exports = withRoutesContainer;
|
||||
Loading…
Reference in a new issue