{"version":3,"file":"placementArrow.cjs","sources":["../../../../../packages/theme/style/placementArrow.ts"],"sourcesContent":["import type { CSSInterpolation } from '../cssinjs';\nimport type { AliasToken } from '../token';\nimport type { TokenWithCommonCls } from '../token/util/genComponentStyleHook';\nimport { roundedArrow } from './roundedArrow';\n\nfunction connectArrowCls(classList: string[], showArrowCls = '') {\n  return classList.map(cls => `${showArrowCls}${cls}`).join(',');\n}\n\nexport const MAX_VERTICAL_CONTENT_RADIUS = 8;\n\nexport function getArrowOffset(options: {\n  sizePopupArrow: number\n  contentRadius: number\n  borderRadiusOuter: number\n  limitVerticalRadius?: boolean\n}) {\n  const maxVerticalContentRadius = MAX_VERTICAL_CONTENT_RADIUS;\n  const { sizePopupArrow, contentRadius, borderRadiusOuter, limitVerticalRadius } = options;\n  const arrowInnerOffset = sizePopupArrow / 2 - Math.ceil(borderRadiusOuter * (Math.sqrt(2) - 1));\n  const dropdownArrowOffset = (contentRadius > 12 ? contentRadius + 2 : 12) - arrowInnerOffset;\n  const dropdownArrowOffsetVertical = limitVerticalRadius\n    ? maxVerticalContentRadius - arrowInnerOffset\n    : dropdownArrowOffset;\n  return { dropdownArrowOffset, dropdownArrowOffsetVertical };\n}\n\nexport default function getArrowStyle<Token extends TokenWithCommonCls<AliasToken>>(\n  token: Token,\n  options: {\n    colorBg: string\n    showArrowCls?: string\n    contentRadius?: number\n    limitVerticalRadius?: boolean\n  },\n): CSSInterpolation {\n  const {\n    componentCls,\n    sizePopupArrow,\n    marginXXS,\n    borderRadiusXS,\n    borderRadiusOuter,\n    boxShadowPopoverArrow,\n  } = token;\n\n  const {\n    colorBg,\n    showArrowCls,\n    contentRadius = token.borderRadiusLG,\n    limitVerticalRadius,\n  } = options;\n\n  const { dropdownArrowOffsetVertical, dropdownArrowOffset } = getArrowOffset({\n    sizePopupArrow,\n    contentRadius,\n    borderRadiusOuter,\n    limitVerticalRadius,\n  });\n  const dropdownArrowDistance = sizePopupArrow / 2 + marginXXS;\n\n  return {\n    [componentCls]: {\n      // ============================ Basic ============================\n      [`${componentCls}-arrow`]: [\n        {\n          'position': 'absolute',\n          'zIndex': 1, // lift it up so the menu wouldn't cask shadow on it\n          'display': 'block',\n\n          ...roundedArrow(\n            sizePopupArrow,\n            borderRadiusXS,\n            borderRadiusOuter,\n            colorBg,\n            boxShadowPopoverArrow,\n          ),\n\n          '&:before': {\n            background: colorBg,\n          },\n        },\n      ],\n\n      // ========================== Placement ==========================\n      // Here handle the arrow position and rotate stuff\n      // >>>>> Top\n      [[\n        `&-placement-top ${componentCls}-arrow`,\n        `&-placement-topLeft ${componentCls}-arrow`,\n        `&-placement-topRight ${componentCls}-arrow`,\n      ].join(',')]: {\n        bottom: 0,\n        transform: 'translateY(100%) rotate(180deg)',\n      },\n\n      [`&-placement-top ${componentCls}-arrow`]: {\n        left: {\n          _skip_check_: true,\n          value: '50%',\n        },\n        transform: 'translateX(-50%) translateY(100%) rotate(180deg)',\n      },\n\n      [`&-placement-topLeft ${componentCls}-arrow`]: {\n        left: {\n          _skip_check_: true,\n          value: dropdownArrowOffset,\n        },\n      },\n\n      [`&-placement-topRight ${componentCls}-arrow`]: {\n        right: {\n          _skip_check_: true,\n          value: dropdownArrowOffset,\n        },\n      },\n\n      // >>>>> Bottom\n      [[\n        `&-placement-bottom ${componentCls}-arrow`,\n        `&-placement-bottomLeft ${componentCls}-arrow`,\n        `&-placement-bottomRight ${componentCls}-arrow`,\n      ].join(',')]: {\n        top: 0,\n        transform: 'translateY(-100%)',\n      },\n\n      [`&-placement-bottom ${componentCls}-arrow`]: {\n        left: {\n          _skip_check_: true,\n          value: '50%',\n        },\n        transform: 'translateX(-50%) translateY(-100%)',\n      },\n\n      [`&-placement-bottomLeft ${componentCls}-arrow`]: {\n        left: {\n          _skip_check_: true,\n          value: dropdownArrowOffset,\n        },\n      },\n\n      [`&-placement-bottomRight ${componentCls}-arrow`]: {\n        right: {\n          _skip_check_: true,\n          value: dropdownArrowOffset,\n        },\n      },\n\n      // >>>>> Left\n      [[\n        `&-placement-left ${componentCls}-arrow`,\n        `&-placement-leftTop ${componentCls}-arrow`,\n        `&-placement-leftBottom ${componentCls}-arrow`,\n      ].join(',')]: {\n        right: {\n          _skip_check_: true,\n          value: 0,\n        },\n        transform: 'translateX(100%) rotate(90deg)',\n      },\n\n      [`&-placement-left ${componentCls}-arrow`]: {\n        top: {\n          _skip_check_: true,\n          value: '50%',\n        },\n        transform: 'translateY(-50%) translateX(100%) rotate(90deg)',\n      },\n\n      [`&-placement-leftTop ${componentCls}-arrow`]: {\n        top: dropdownArrowOffsetVertical,\n      },\n\n      [`&-placement-leftBottom ${componentCls}-arrow`]: {\n        bottom: dropdownArrowOffsetVertical,\n      },\n\n      // >>>>> Right\n      [[\n        `&-placement-right ${componentCls}-arrow`,\n        `&-placement-rightTop ${componentCls}-arrow`,\n        `&-placement-rightBottom ${componentCls}-arrow`,\n      ].join(',')]: {\n        left: {\n          _skip_check_: true,\n          value: 0,\n        },\n        transform: 'translateX(-100%) rotate(-90deg)',\n      },\n\n      [`&-placement-right ${componentCls}-arrow`]: {\n        top: {\n          _skip_check_: true,\n          value: '50%',\n        },\n        transform: 'translateY(-50%) translateX(-100%) rotate(-90deg)',\n      },\n\n      [`&-placement-rightTop ${componentCls}-arrow`]: {\n        top: dropdownArrowOffsetVertical,\n      },\n\n      [`&-placement-rightBottom ${componentCls}-arrow`]: {\n        bottom: dropdownArrowOffsetVertical,\n      },\n\n      // =========================== Offset ============================\n      // Offset the popover to account for the dropdown arrow\n      // >>>>> Top\n      [connectArrowCls(\n        [`&-placement-topLeft`, `&-placement-top`, `&-placement-topRight`].map(\n          cls => (cls += ':not(&-arrow-hidden)'),\n        ),\n        showArrowCls,\n      )]: {\n        paddingBottom: dropdownArrowDistance,\n      },\n\n      // >>>>> Bottom\n      [connectArrowCls(\n        [`&-placement-bottomLeft`, `&-placement-bottom`, `&-placement-bottomRight`].map(\n          cls => (cls += ':not(&-arrow-hidden)'),\n        ),\n        showArrowCls,\n      )]: {\n        paddingTop: dropdownArrowDistance,\n      },\n\n      // >>>>> Left\n      [connectArrowCls(\n        [`&-placement-leftTop`, `&-placement-left`, `&-placement-leftBottom`].map(\n          cls => (cls += ':not(&-arrow-hidden)'),\n        ),\n        showArrowCls,\n      )]: {\n        paddingRight: {\n          _skip_check_: true,\n          value: dropdownArrowDistance,\n        },\n      },\n\n      // >>>>> Right\n      [connectArrowCls(\n        [`&-placement-rightTop`, `&-placement-right`, `&-placement-rightBottom`].map(\n          cls => (cls += ':not(&-arrow-hidden)'),\n        ),\n        showArrowCls,\n      )]: {\n        paddingLeft: {\n          _skip_check_: true,\n          value: dropdownArrowDistance,\n        },\n      },\n    },\n  };\n}\n"],"names":["roundedArrow"],"mappings":"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"}