41 lines
		
	
	
		
			1007 B
		
	
	
	
		
			TypeScript
		
	
	
			
		
		
	
	
			41 lines
		
	
	
		
			1007 B
		
	
	
	
		
			TypeScript
		
	
	
import type { AlignType, BuildInPlacements, AlignPoint } from '../interface';
 | 
						|
 | 
						|
function isPointsEq(a1: AlignPoint[], a2: AlignPoint[], isAlignPoint: boolean): boolean {
 | 
						|
  if (isAlignPoint) {
 | 
						|
    return a1[0] === a2[0];
 | 
						|
  }
 | 
						|
  return a1[0] === a2[0] && a1[1] === a2[1];
 | 
						|
}
 | 
						|
 | 
						|
export function getAlignFromPlacement(
 | 
						|
  builtinPlacements: BuildInPlacements,
 | 
						|
  placementStr: string,
 | 
						|
  align: AlignType,
 | 
						|
): AlignType {
 | 
						|
  const baseAlign = builtinPlacements[placementStr] || {};
 | 
						|
  return {
 | 
						|
    ...baseAlign,
 | 
						|
    ...align,
 | 
						|
  };
 | 
						|
}
 | 
						|
 | 
						|
export function getAlignPopupClassName(
 | 
						|
  builtinPlacements: BuildInPlacements,
 | 
						|
  prefixCls: string,
 | 
						|
  align: AlignType,
 | 
						|
  isAlignPoint: boolean,
 | 
						|
): string {
 | 
						|
  const { points } = align;
 | 
						|
 | 
						|
  const placements = Object.keys(builtinPlacements);
 | 
						|
 | 
						|
  for (let i = 0; i < placements.length; i += 1) {
 | 
						|
    const placement = placements[i];
 | 
						|
    if (isPointsEq(builtinPlacements[placement].points, points, isAlignPoint)) {
 | 
						|
      return `${prefixCls}-placement-${placement}`;
 | 
						|
    }
 | 
						|
  }
 | 
						|
 | 
						|
  return '';
 | 
						|
}
 |