/* global window */ /* global document */ import React from 'react' import PropTypes from 'prop-types' import {withRouter, connect} from 'umi' import { AppLayout } from 'components' import { enquireScreen, unenquireScreen } from 'enquire-js' import store from 'store' import classnames from 'classnames' import { app_config } from 'config' import { theme } from 'core/libs/style' import * as antd from 'antd' import contextMenuList from 'globals/contextMenu' import styles from './PrimaryLayout.less' const { Content } = antd.Layout const { Sider, Overlay, ContextMenu } = AppLayout const isActive = (key) => { return key? key.active : false } @withRouter @connect(({ app, loading }) => ({ app, loading })) class PrimaryLayout extends React.Component { constructor(props) { super(props) this.state = { collapsed: app_config.default_collapse_sider ? true : false, isMobile: false }, this.handleContextMenu = document.getElementById("root").addEventListener("contextmenu", (e) => { e.preventDefault() window.contextMenu.open({ xPos: e.clientX, yPos: e.clientY, fragment: window.contextMenu.generate(contextMenuList, e) }) }, false) // include API extensions window.requireQuery = (require) =>{ return new Promise(resolve => { this.props.dispatch({ type: 'app/isUser', payload: require, callback: (e) => { resolve(e) } }) }) } window.inspectElement = (e) => this.props.dispatch({ type: "app/ipcInvoke", payload: { key: "inspectElement", payload: { x: e.clientX, y: e.clientY } } }) window.toogleSidebarCollapse = () => { this.props.dispatch({ type: "app/handleCollapseSidebar", payload: !this.props.app.sidebar_collapsed }) } window.contextMenu = this.props.app.contextMenu window.contextMenu.open = (payload) => { if (!payload) return false this.props.dispatch({ type: "app/updateState", payload: {contextMenu: { ...this.props.app.contextMenu, xPos: payload.xPos, yPos: payload.yPos, fragment: payload.fragment, visible: true }} }) } window.contextMenu.handle = (e, ...rest) => { if(!e || typeof(e) == 'undefined') { return false } typeof(e.onClick) !== 'undefined' && e.onClick ? e.onClick(...rest) : null typeof(e.keepOnClick) !== 'undefined' && e.keepOnClick ? null : window.contextMenu.toogle() } window.contextMenu.generate = (payload, ...rest) => { if(!payload) return false let tmp = [] payload.forEach(async(e) => { if (typeof(e.params.require) !== 'undefined') { if(await window.requireQuery(e.params.require)){ e.valid = true tmp.push(e) }else{ // bruh } }else{ tmp.push(e) } }) return tmp.map((e) => { return(