47 lines
1.8 KiB
TypeScript
47 lines
1.8 KiB
TypeScript
// Metro module 16014 (f16015).
|
|
import { memo } from "react";
|
|
import { PixelRatio } from "react-native";
|
|
import * as _CircleWithCutoutUtils from "./CircleWithCutoutUtils";
|
|
import { getCutoutCenterX, getCutoutCenterY } from "./CircleWithCutoutUtils";
|
|
import Module8531, { Defs, Mask, Rect, Circle } from "../../../../_bundle/Module8531";
|
|
let c11481_5 = PixelRatio.get();
|
|
const r26 = memo(function CircleWithCutout(props) {
|
|
const { fill, circleRadius, cutoutRadius, enableCutout, cutoutPositionInDegrees } = props;
|
|
let alignBadgeEdgeWithCircleEdge = props.alignBadgeEdgeWithCircleEdge;
|
|
if (alignBadgeEdgeWithCircleEdge === void 0) {
|
|
alignBadgeEdgeWithCircleEdge = false;
|
|
}
|
|
const { badgeRadius, scaleToPixelDensity = true } = props;
|
|
const r22 = scaleToPixelDensity ? c11481_5 : 1;
|
|
const cx = circleRadius * r22;
|
|
const r27 = badgeRadius != null ? badgeRadius * r22 : void 0;
|
|
const height = 2 * cx;
|
|
const cutoutCenterX = getCutoutCenterX(cx, cutoutPositionInDegrees);
|
|
const cutoutCenterY = getCutoutCenterY(cx, cutoutPositionInDegrees);
|
|
if (alignBadgeEdgeWithCircleEdge) {
|
|
alignBadgeEdgeWithCircleEdge = r27 != null;
|
|
}
|
|
let cy = cutoutCenterY;
|
|
let cx2 = cutoutCenterX;
|
|
if (alignBadgeEdgeWithCircleEdge) {
|
|
cx2 = 2 * cx - r27;
|
|
cy = r27;
|
|
}
|
|
return <Module8531 height={height} width={height} style={{
|
|
transform: [{
|
|
scale: 1 / r22
|
|
}]
|
|
}}>
|
|
<Defs>
|
|
<Mask id="mask">
|
|
<Rect width={height} height={height} fill="white" />
|
|
<Circle cx={cx2} cy={cy} r={cutoutRadius * r22} fill="black" />
|
|
</Mask>
|
|
</Defs>
|
|
<Circle cx={cx} cy={cx} r={cx} fill={fill} mask={enableCutout ? "url(#mask)" : void 0} />
|
|
</Module8531>;
|
|
});
|
|
export default r26;
|
|
export const getBadgeLeft = _CircleWithCutoutUtils.getBadgeLeft;
|
|
export const getBadgeTop = _CircleWithCutoutUtils.getBadgeTop;
|