| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- import React, { createContext, useContext } from 'react'
- import PropTypes from 'prop-types'
- import useScopeValue from './util/scope-value-hook'
- export const LayoutContext = createContext()
- LayoutContext.Provider.propTypes = {
- value: PropTypes.shape({
- view: PropTypes.string,
- setView: PropTypes.func.isRequired,
- chatIsOpen: PropTypes.bool,
- setChatIsOpen: PropTypes.func.isRequired,
- reviewPanelOpen: PropTypes.bool,
- setReviewPanelOpen: PropTypes.func.isRequired,
- leftMenuShown: PropTypes.bool,
- setLeftMenuShown: PropTypes.func.isRequired,
- pdfLayout: PropTypes.oneOf(['sideBySide', 'flat', 'split']).isRequired,
- }).isRequired,
- }
- export function LayoutProvider({ children, $scope }) {
- const [view, setView] = useScopeValue('ui.view', $scope)
- const [chatIsOpen, setChatIsOpen] = useScopeValue('ui.chatOpen', $scope)
- const [reviewPanelOpen, setReviewPanelOpen] = useScopeValue(
- 'ui.reviewPanelOpen',
- $scope
- )
- const [leftMenuShown, setLeftMenuShown] = useScopeValue(
- 'ui.leftMenuShown',
- $scope
- )
- const [pdfLayout] = useScopeValue('ui.pdfLayout', $scope)
- const layoutContextValue = {
- view,
- setView,
- chatIsOpen,
- setChatIsOpen,
- reviewPanelOpen,
- setReviewPanelOpen,
- leftMenuShown,
- setLeftMenuShown,
- pdfLayout,
- }
- return (
- <LayoutContext.Provider value={layoutContextValue}>
- {children}
- </LayoutContext.Provider>
- )
- }
- LayoutProvider.propTypes = {
- children: PropTypes.any,
- $scope: PropTypes.any.isRequired,
- }
- export function useLayoutContext(propTypes) {
- const data = useContext(LayoutContext)
- PropTypes.checkPropTypes(propTypes, data, 'data', 'LayoutContext.Provider')
- return data
- }
|