import React, { Fragment, useRef } from 'react' import { Button, InputNumber } from 'antd' import { observer } from '@formily/reactive-react' import { CursorType, ScreenType } from '@designable/core' import { useCursor, useHistory, useScreen, usePrefix, useWorkbench, } from '../../hooks' import { IconWidget } from '../IconWidget' import cls from 'classnames' import './styles.less' type DesignerToolsType = 'HISTORY' | 'CURSOR' | 'SCREEN_TYPE' export type IDesignerToolsWidgetProps = { className?: string style?: React.CSSProperties use?: DesignerToolsType[] } export const DesignerToolsWidget: React.FC = observer((props) => { const screen = useScreen() const cursor = useCursor() const workbench = useWorkbench() const history = useHistory() const sizeRef = useRef<{ width?: any; height?: any }>({}) const prefix = usePrefix('designer-tools') const renderHistoryController = () => { if (!props.use.includes('HISTORY')) return null return ( ) } const renderCursorController = () => { if (workbench.type !== 'DESIGNABLE') return null if (!props.use.includes('CURSOR')) return null return ( ) } const renderResponsiveController = () => { if (!props.use.includes('SCREEN_TYPE')) return null if (screen.type !== ScreenType.Responsive) return null return ( { sizeRef.current.width = value }} onPressEnter={() => { screen.setSize(sizeRef.current.width, screen.height) }} /> { sizeRef.current.height = value }} onPressEnter={() => { screen.setSize(screen.width, sizeRef.current.height) }} /> {(screen.width !== '100%' || screen.height !== '100%') && ( )} ) } const renderScreenTypeController = () => { if (!props.use.includes('SCREEN_TYPE')) return null return ( ) } const renderMobileController = () => { if (!props.use.includes('SCREEN_TYPE')) return null if (screen.type !== ScreenType.Mobile) return return ( ) } return (
{renderHistoryController()} {renderCursorController()} {renderScreenTypeController()} {renderMobileController()} {renderResponsiveController()}
) }) DesignerToolsWidget.defaultProps = { use: ['HISTORY', 'CURSOR', 'SCREEN_TYPE'], }