react-fancy-qrcode
Version:
Customizable QR code generated for React & React Native
51 lines • 2.03 kB
JavaScript
import React from "react";
/**
* Builds a positioning set of squares
*/
export default function PositionPattern(_a) {
var placement = _a.placement, cellSize = _a.cellSize, positionColor = _a.positionColor, sideCount = _a.sideCount, positionRadius = _a.positionRadius, svgDom = _a.svgDom;
var innerOffset = cellSize * 2;
var innerSize = 3 * cellSize;
var outerSize = 7 * cellSize;
var outerX = 0;
var outerY = 0;
if (placement === "top-right") {
outerX = (sideCount - 7) * cellSize;
}
else if (placement === "bottom-left") {
outerY = (sideCount - 7) * cellSize;
}
// Keep the stroke inside the box
outerSize -= cellSize;
var strokeCorrection = cellSize / 2;
// Get radius values
var outerRx = 0;
var outerRy = 0;
var innerRx = 0;
var innerRy = 0;
if (typeof positionRadius === "string" ||
typeof positionRadius === "number") {
outerRx = outerRy = innerRx = innerRy = positionRadius;
}
else if (Array.isArray(positionRadius)) {
if (typeof positionRadius[0] === "object") {
outerRx = positionRadius[0].rx;
outerRy = positionRadius[0].ry;
}
else {
outerRx = outerRy = positionRadius[0];
}
if (typeof positionRadius[1] === "object") {
innerRx = positionRadius[1].rx;
innerRy = positionRadius[1].ry;
}
else {
innerRx = innerRy = positionRadius[1];
}
}
var G = svgDom.G, Rect = svgDom.Rect;
return (React.createElement(G, null,
React.createElement(Rect, { x: outerX + strokeCorrection, y: outerY + strokeCorrection, width: outerSize, height: outerSize, stroke: positionColor, strokeWidth: cellSize, rx: outerRx, ry: outerRy, fillOpacity: 0 }),
React.createElement(Rect, { x: outerX + innerOffset, y: outerY + innerOffset, width: innerSize, height: innerSize, fill: positionColor, rx: innerRx, ry: innerRy })));
}
//# sourceMappingURL=PositionPattern.js.map