/* eslint-disable import/prefer-default-export */
import type { CSSObject } from '@ant-design/cssinjs' ;
import seedToken from '../themes/default' ;
export const roundedArrow = ( width : number , outerRadius : number , bgColor : string ) : CSSObject = > {
const cornerHeight = outerRadius * ( 1 - 1 / Math . sqrt ( 2 ) ) ;
const { radiusBase } = seedToken ;
const ax = width - cornerHeight ;
const ay = 2 * width + cornerHeight ;
const bx = ax + outerRadius * ( 1 / Math . sqrt ( 2 ) ) ;
const by = 2 * width ;
const cx = 2 * width - radiusBase ;
const cy = 2 * width ;
const dx = 2 * width ;
const dy = 2 * width - radiusBase ;
const fx = 2 * width + cornerHeight ;
const fy = width - cornerHeight ;
const ex = 2 * width ;
const ey = fy + outerRadius * ( 1 / Math . sqrt ( 2 ) ) ;
const gx = fx - 1 ;
const gy = fy ;
const hx = ax ;
const hy = ay - 1 ;
return {
borderRadius : { _skip_check_ : true , value : ` 0 0 2px ` } ,
pointerEvents : 'none' ,
'&::before' : {
position : 'absolute' ,
top : - width ,
insetInlineStart : - width ,
width : width * 3 ,
height : width * 3 ,
background : bgColor ,
// Hack firefox: https://github.com/ant-design/ant-design/pull/33710#issuecomment-1015287825
backgroundRepeat : 'no-repeat' ,
backgroundPosition : ` ${ Math . ceil ( - width + 1 ) } px ${ Math . ceil ( - width + 1 ) } px ` ,
content : '""' ,
clipPath : ` path('M ${ ax } ${ ay } A ${ outerRadius } ${ outerRadius } 0 0 1 ${ bx } ${ by } L ${ cx } ${ cy } A ${ radiusBase } ${ radiusBase } 0 0 0 ${ dx } ${ dy } L ${ ex } ${ ey } A ${ outerRadius } ${ outerRadius } 0 0 1 ${ fx } ${ fy } L ${ gx } ${ gy } L ${ hx } ${ hy } Z') ` ,
} ,
} ;
} ;