import { Modal } from 'antd' ; import { ReactNode } from 'react' ; export function randomNum ( minNum , maxNum ) { switch ( arguments . length ) { case 1 : return Math . floor ( Math . random ( ) * minNum + 1 ) ; break ; case 2 : return Math . floor ( Math . random ( ) * ( maxNum - minNum + 1 ) + minNum ) ; break ; default : return 0 ; break ; } } export const getPosition = ( random , fontSize ) => { if ( ! random ) { return { fontSize , } ; } const { fontSizeRange } = random ; const [ minNum , maxNum ] = fontSizeRange ; const fontSizeFin = randomNum ( minNum , maxNum ) ; const top = randomNum ( 0 , 100 ) + '%' ; const left = randomNum ( 0 , 100 ) + '%' ; return { fontSize : fontSizeFin , top , left } ; } ; export function generateUuid ( len = 32 , radix = 10 ) { const chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz' . split ( '' ) ; const uuid = [ ] ; let i ; radix = radix || chars . length ; if ( len ) { for ( i = 0 ; i < len ; i ++ ) uuid [ i ] = chars [ 0 | ( Math . random ( ) * radix ) ] ; } else { let r ; uuid [ 8 ] = uuid [ 13 ] = uuid [ 18 ] = uuid [ 23 ] = '-' ; uuid [ 14 ] = '4' ; for ( i = 0 ; i < 36 ; i ++ ) { if ( ! uuid [ i ] ) { r = 0 | ( Math . random ( ) * 16 ) ; uuid [ i ] = chars [ i == 19 ? ( r & 0x3 ) | 0x8 : r ] ; } } } return uuid . join ( '' ) ; } interface confirmUtilAsyncProps { content : string | ReactNode ; [ key ] : any ; } const { confirm } = Modal ; param { confirmUtilAsyncProps } props export const confirmUtilAsync = ( props ) => new Promise < boolean > ( ( resolve , reject ) => { const { content , okType = 'primary' , ... restProps } = props ; confirm ( { title : '提示' , content , cancelText : '取消' , okText : '确定' , okType , okButtonProps : { size : 'small' , } , zIndex : 9999 , cancelButtonProps : { size : 'small' , } , onOk ( ) { resolve ( true ) ; } , onCancel ( ) { resolve ( false ) ; } , ... restProps , } ) ; } ) ; export function reducer ( state , action ) { switch ( action . type ) { case 'save' : return { ... state , ... action . payload , } ; } }