UNPKG

@brizy/media-gallery

Version:
74 lines (73 loc) 2.42 kB
import { useCallback } from "react"; export * from "./Header"; import * as State from "../types/State"; import * as MediaLibraryPage from "../mediaLibrary/containers"; import * as MediaLibraryPageState from "../mediaLibrary/types/State"; import * as MediaLibraryPageActions from "../mediaLibrary/types/Actions"; import * as StockPhotosPage from "../stockPhotos/containers"; import * as StockPhotosPageState from "../stockPhotos/types/State"; import { match } from "fp-utilities"; import { createElement } from "../../utils/react/createElement"; import { useDispatch, useSelector } from "react-redux"; import React from "react"; import { selectState } from "../selectors"; import { MainLayout } from "../../containers/layouts/Main"; import { pipe } from "ramda"; import { Header } from "./Header"; var CContent = match([ MediaLibraryPageState.isState, createElement(MediaLibraryPage.Content) ], [ StockPhotosPageState.isState, createElement(StockPhotosPage.Content) ]); var CFooter = match([ MediaLibraryPageState.isState, createElement(MediaLibraryPage.Footer) ], [ StockPhotosPageState.isState, createElement(StockPhotosPage.Footer) ]); var CSidebar = match([ MediaLibraryPageState.isState, createElement(MediaLibraryPage.Sidebar) ], [ StockPhotosPageState.isState, createElement(StockPhotosPage.Sidebar) ]); var Content = match([ State.isInnerState, createElement(CContent) ]); var Footer = match([ State.isInnerState, createElement(CFooter) ]); var Sidebar = match([ State.isInnerState, createElement(CSidebar) ]); export var Container = function(state) { var dispatch = useDispatch(); var header = React.createElement(Header, state); var content = React.createElement(Content, state); var footer = React.createElement(Footer, state); var sidebar = React.createElement(Sidebar, state); var onUpload = useCallback(function(v) { return pipe(MediaLibraryPageActions.upload, dispatch)(v); }, [ dispatch ]); return React.createElement(MainLayout, { Sidebar: sidebar, Header: header, Content: content, Footer: footer, onUpload: MediaLibraryPageState.isState(state) ? onUpload : undefined, height: state.height }); }; export var Pages = function() { var state = useSelector(selectState); return React.createElement(Container, state); };