diff --git a/dapps/pos-app/app.json b/dapps/pos-app/app.json index dce8b09f..ede7115b 100644 --- a/dapps/pos-app/app.json +++ b/dapps/pos-app/app.json @@ -45,7 +45,7 @@ "android.permission.BLUETOOTH_ADVERTISE", "android.permission.USB_PERMISSION" ], - "versionCode": 12 + "versionCode": 13 }, "web": { "output": "static", diff --git a/dapps/pos-app/components/qr-code.tsx b/dapps/pos-app/components/qr-code.tsx index b2f02556..18209bc2 100644 --- a/dapps/pos-app/components/qr-code.tsx +++ b/dapps/pos-app/components/qr-code.tsx @@ -34,7 +34,7 @@ function QrCode_({ logoBorderRadius, }: QrCodeProps) { const Theme = useTheme("light"); - const containerPadding = Spacing["spacing-5"]; + const containerPadding = Spacing["spacing-4"]; const qrSize = size - containerPadding * 2; const _logoSize = arenaClear ? 0 : (logoSize ?? qrSize / 4); const logoAreaSize = _logoSize > 0 ? _logoSize + Spacing["spacing-6"] : 0; @@ -69,9 +69,10 @@ function QrCode_({ errorCorrectionLevel="Q" pathStyle="fill" shapeOptions={{ - shape: "rounded", - eyePatternShape: "rounded", - gap: 0, + shape: "line", + eyeShape: "rounded", + pupilShape: "circle", + gap: 1.2, eyePatternGap: 0, logoAreaBorderRadius: logoBorderRadius, }} diff --git a/dapps/pos-app/patches/react-native-qrcode-skia+0.3.1.patch b/dapps/pos-app/patches/react-native-qrcode-skia+0.3.1.patch index 3ac669ae..1196ee0a 100644 --- a/dapps/pos-app/patches/react-native-qrcode-skia+0.3.1.patch +++ b/dapps/pos-app/patches/react-native-qrcode-skia+0.3.1.patch @@ -1,61 +1,624 @@ +diff --git a/node_modules/react-native-qrcode-skia/lib/commonjs/qrcode/transform-matrix-into-path.js b/node_modules/react-native-qrcode-skia/lib/commonjs/qrcode/transform-matrix-into-path.js +index cd7b1c4..3387e58 100644 +--- a/node_modules/react-native-qrcode-skia/lib/commonjs/qrcode/transform-matrix-into-path.js ++++ b/node_modules/react-native-qrcode-skia/lib/commonjs/qrcode/transform-matrix-into-path.js +@@ -8,14 +8,18 @@ const defaultShapeOptions = { + shape: 'rounded', + eyePatternShape: 'rounded', + gap: 0, +- eyePatternGap: 0 ++ eyePatternGap: 0, ++ logoAreaBorderRadius: 0 + }; + const transformMatrixIntoPath = (matrix, size, options = defaultShapeOptions, logoSize = 0) => { + const { + shape = 'rounded', + eyePatternShape = 'rounded', + gap = 0, +- eyePatternGap = 0 ++ eyePatternGap = 0, ++ logoAreaBorderRadius = 0, ++ eyeShape, ++ pupilShape + } = options; + const cellSize = size / matrix.length; + let path = ''; +@@ -78,7 +82,41 @@ const transformMatrixIntoPath = (matrix, size, options = defaultShapeOptions, lo + if (logoSize === 0) return false; + const center = Math.floor(matrix.length / 2); + const logoRadius = Math.floor(logoSize / cellSize / 2); +- return i >= center - logoRadius && i <= center + logoRadius && j >= center - logoRadius && j <= center + logoRadius; ++ if (logoAreaBorderRadius === 0) { ++ return i >= center - logoRadius && i <= center + logoRadius && j >= center - logoRadius && j <= center + logoRadius; ++ } ++ ++ // Rounded rectangle logic ++ const logoAreaX = (center - logoRadius) * cellSize; ++ const logoAreaY = (center - logoRadius) * cellSize; ++ const logoAreaSize = (logoRadius * 2 + 1) * cellSize; ++ const r = Math.min(logoAreaBorderRadius, logoAreaSize / 2); ++ const cellCenterX = j * cellSize + cellSize / 2; ++ const cellCenterY = i * cellSize + cellSize / 2; ++ ++ // Center rectangle (excluding corners) ++ if (cellCenterX >= logoAreaX + r && cellCenterX <= logoAreaX + logoAreaSize - r && cellCenterY >= logoAreaY && cellCenterY <= logoAreaY + logoAreaSize) return true; ++ if (cellCenterY >= logoAreaY + r && cellCenterY <= logoAreaY + logoAreaSize - r && cellCenterX >= logoAreaX && cellCenterX <= logoAreaX + logoAreaSize) return true; ++ ++ // Corner circle checks ++ const inCornerCircle = (cx, cy) => { ++ const dx = cellCenterX - cx; ++ const dy = cellCenterY - cy; ++ return dx * dx + dy * dy <= r * r; ++ }; ++ ++ // Top-left ++ if (cellCenterX < logoAreaX + r && cellCenterY < logoAreaY + r) return inCornerCircle(logoAreaX + r, logoAreaY + r); ++ ++ // Top-right ++ if (cellCenterX > logoAreaX + logoAreaSize - r && cellCenterY < logoAreaY + r) return inCornerCircle(logoAreaX + logoAreaSize - r, logoAreaY + r); ++ ++ // Bottom-right ++ if (cellCenterX > logoAreaX + logoAreaSize - r && cellCenterY > logoAreaY + logoAreaSize - r) return inCornerCircle(logoAreaX + logoAreaSize - r, logoAreaY + logoAreaSize - r); ++ ++ // Bottom-left ++ if (cellCenterX < logoAreaX + r && cellCenterY > logoAreaY + logoAreaSize - r) return inCornerCircle(logoAreaX + r, logoAreaY + logoAreaSize - r); ++ return false; + }; + const renderElement = (corners, neighbors, i, j) => { + const { +@@ -162,16 +200,155 @@ const transformMatrixIntoPath = (matrix, size, options = defaultShapeOptions, lo + } + return path + ' Z'; + }; +- matrix.forEach((row, i) => { +- row.forEach((cell, j) => { +- if (cell === 1 && !isLogoArea(i, j)) { +- const isDetectionPattern = i < 7 && j < 7 || i < 7 && j >= matrix.length - 7 || i >= matrix.length - 7 && j < 7; +- const corners = getCorners(i, j, isDetectionPattern); +- const neighbors = getNeighbors(i, j); +- path += renderElement(corners, neighbors, i, j); ++ const isDetectionPatternCell = (i, j) => { ++ return i < 7 && j < 7 || i < 7 && j >= matrix.length - 7 || i >= matrix.length - 7 && j < 7; ++ }; ++ const getDetectionPatternOrigin = (i, j) => { ++ if (i < 7 && j < 7) return { ++ row: 0, ++ col: 0 ++ }; ++ if (i < 7 && j >= matrix.length - 7) return { ++ row: 0, ++ col: matrix.length - 7 ++ }; ++ if (i >= matrix.length - 7 && j < 7) return { ++ row: matrix.length - 7, ++ col: 0 ++ }; ++ return null; ++ }; ++ const useCustomEyeShape = eyeShape !== undefined || pupilShape !== undefined; ++ const renderEye = (originRow, originCol) => { ++ const padding = eyePatternGap / 2; ++ let eyePath = ''; ++ ++ // Eye frame (outer) - 7x7 cells area with 1 cell thick stroke ++ const outerX = originCol * cellSize + padding; ++ const outerY = originRow * cellSize + padding; ++ const outerSize = 7 * cellSize - eyePatternGap; ++ ++ // Inner cutout for the frame - 5x5 cells (creates 1 cell thick border) ++ const cutoutX = (originCol + 1) * cellSize + padding; ++ const cutoutY = (originRow + 1) * cellSize + padding; ++ const cutoutSize = 5 * cellSize - eyePatternGap; ++ ++ // Pupil - 3x3 cells centered ++ const pupilX = (originCol + 2) * cellSize + padding; ++ const pupilY = (originRow + 2) * cellSize + padding; ++ const pupilSize = 3 * cellSize - eyePatternGap; ++ const currentEyeShape = eyeShape ?? 'square'; ++ const currentPupilShape = pupilShape ?? 'square'; ++ ++ // Render Eye frame based on shape ++ if (currentEyeShape === 'circle') { ++ const outerRadius = outerSize / 2; ++ const cutoutRadius = cutoutSize / 2; ++ const centerX = outerX + outerSize / 2; ++ const centerY = outerY + outerSize / 2; ++ // Outer circle ++ eyePath += `M${centerX - outerRadius} ${centerY} a${outerRadius},${outerRadius} 0 1,0 ${outerSize},0 a${outerRadius},${outerRadius} 0 1,0 -${outerSize},0 `; ++ // Inner cutout circle (reverse winding for cutout) ++ eyePath += `M${centerX - cutoutRadius} ${centerY} a${cutoutRadius},${cutoutRadius} 0 1,1 ${cutoutSize},0 a${cutoutRadius},${cutoutRadius} 0 1,1 -${cutoutSize},0 `; ++ } else if (currentEyeShape === 'rounded') { ++ const outerR = outerSize * 0.35; ++ const cutoutR = cutoutSize * 0.3; ++ // Outer rounded rect ++ eyePath += `M${outerX + outerR} ${outerY} H${outerX + outerSize - outerR} Q${outerX + outerSize} ${outerY} ${outerX + outerSize} ${outerY + outerR} V${outerY + outerSize - outerR} Q${outerX + outerSize} ${outerY + outerSize} ${outerX + outerSize - outerR} ${outerY + outerSize} H${outerX + outerR} Q${outerX} ${outerY + outerSize} ${outerX} ${outerY + outerSize - outerR} V${outerY + outerR} Q${outerX} ${outerY} ${outerX + outerR} ${outerY} Z `; ++ // Inner cutout rounded rect (reverse winding) ++ eyePath += `M${cutoutX + cutoutR} ${cutoutY} Q${cutoutX} ${cutoutY} ${cutoutX} ${cutoutY + cutoutR} V${cutoutY + cutoutSize - cutoutR} Q${cutoutX} ${cutoutY + cutoutSize} ${cutoutX + cutoutR} ${cutoutY + cutoutSize} H${cutoutX + cutoutSize - cutoutR} Q${cutoutX + cutoutSize} ${cutoutY + cutoutSize} ${cutoutX + cutoutSize} ${cutoutY + cutoutSize - cutoutR} V${cutoutY + cutoutR} Q${cutoutX + cutoutSize} ${cutoutY} ${cutoutX + cutoutSize - cutoutR} ${cutoutY} Z `; ++ } else { ++ // Square ++ eyePath += `M${outerX} ${outerY} H${outerX + outerSize} V${outerY + outerSize} H${outerX} Z `; ++ // Inner cutout (reverse winding) ++ eyePath += `M${cutoutX} ${cutoutY} V${cutoutY + cutoutSize} H${cutoutX + cutoutSize} V${cutoutY} Z `; ++ } ++ ++ // Render Pupil based on shape ++ if (currentPupilShape === 'circle') { ++ const pupilRadius = pupilSize / 2; ++ const centerX = pupilX + pupilSize / 2; ++ const centerY = pupilY + pupilSize / 2; ++ eyePath += `M${centerX - pupilRadius} ${centerY} a${pupilRadius},${pupilRadius} 0 1,0 ${pupilSize},0 a${pupilRadius},${pupilRadius} 0 1,0 -${pupilSize},0`; ++ } else if (currentPupilShape === 'rounded') { ++ const pupilR = pupilSize * 0.25; ++ eyePath += `M${pupilX + pupilR} ${pupilY} H${pupilX + pupilSize - pupilR} Q${pupilX + pupilSize} ${pupilY} ${pupilX + pupilSize} ${pupilY + pupilR} V${pupilY + pupilSize - pupilR} Q${pupilX + pupilSize} ${pupilY + pupilSize} ${pupilX + pupilSize - pupilR} ${pupilY + pupilSize} H${pupilX + pupilR} Q${pupilX} ${pupilY + pupilSize} ${pupilX} ${pupilY + pupilSize - pupilR} V${pupilY + pupilR} Q${pupilX} ${pupilY} ${pupilX + pupilR} ${pupilY} Z`; ++ } else { ++ // Square ++ eyePath += `M${pupilX} ${pupilY} H${pupilX + pupilSize} V${pupilY + pupilSize} H${pupilX} Z`; ++ } ++ return eyePath; ++ }; ++ const renderedEyes = new Set(); ++ const renderVerticalPill = (col, startRow, endRow) => { ++ const padding = gap / 2; ++ const x = col * cellSize + padding; ++ const yStart = startRow * cellSize + padding; ++ const yEnd = (endRow + 1) * cellSize - padding; ++ const width = cellSize - gap; ++ const radius = width / 2; ++ return `M${x} ${yStart + radius} A${radius} ${radius} 0 0 1 ${x + width} ${yStart + radius} L${x + width} ${yEnd - radius} A${radius} ${radius} 0 0 1 ${x} ${yEnd - radius} Z`; ++ }; ++ const handleEyeCell = (i, j) => { ++ if (useCustomEyeShape) { ++ const origin = getDetectionPatternOrigin(i, j); ++ if (origin) { ++ const eyeKey = `${origin.row},${origin.col}`; ++ if (!renderedEyes.has(eyeKey)) { ++ renderedEyes.add(eyeKey); ++ path += renderEye(origin.row, origin.col); ++ } ++ return true; ++ } ++ } ++ return false; ++ }; ++ if (shape === 'line') { ++ const processed = Array.from({ ++ length: matrix.length ++ }, () => Array(matrix.length).fill(false)); ++ for (let j = 0; j < matrix.length; j++) { ++ for (let i = 0; i < matrix.length; i++) { ++ if (matrix[i][j] === 1 && !isLogoArea(i, j) && !processed[i][j]) { ++ if (isDetectionPatternCell(i, j)) { ++ if (!handleEyeCell(i, j)) { ++ const corners = getCorners(i, j, true); ++ const neighbors = getNeighbors(i, j); ++ path += renderElement(corners, neighbors, i, j); ++ } ++ processed[i][j] = true; ++ continue; ++ } ++ let runEnd = i; ++ while (runEnd < matrix.length && matrix[runEnd][j] === 1 && !isLogoArea(runEnd, j) && !isDetectionPatternCell(runEnd, j)) { ++ processed[runEnd][j] = true; ++ runEnd++; ++ } ++ if (runEnd - i === 1) { ++ const corners = getCorners(i, j, false); ++ const effectiveCellSize = cellSize - gap; ++ path += `M${corners.center.x} ${corners.center.y} m-${effectiveCellSize / 2}, 0 a${effectiveCellSize / 2},${effectiveCellSize / 2} 0 1,0 ${effectiveCellSize},0 a${effectiveCellSize / 2},${effectiveCellSize / 2} 0 1,0 -${effectiveCellSize},0`; ++ } else { ++ path += renderVerticalPill(j, i, runEnd - 1); ++ } ++ } + } ++ } ++ } else { ++ matrix.forEach((row, i) => { ++ row.forEach((cell, j) => { ++ if (cell === 1 && !isLogoArea(i, j)) { ++ const isDetectionPattern = isDetectionPatternCell(i, j); ++ if (isDetectionPattern && handleEyeCell(i, j)) { ++ return; ++ } ++ const corners = getCorners(i, j, isDetectionPattern); ++ const neighbors = getNeighbors(i, j); ++ path += renderElement(corners, neighbors, i, j); ++ } ++ }); + }); +- }); ++ } + return { + cellSize, + path +diff --git a/node_modules/react-native-qrcode-skia/lib/commonjs/qrcode/transform-matrix-into-path.js.map b/node_modules/react-native-qrcode-skia/lib/commonjs/qrcode/transform-matrix-into-path.js.map +index e20b012..4e245c1 100644 +--- a/node_modules/react-native-qrcode-skia/lib/commonjs/qrcode/transform-matrix-into-path.js.map ++++ b/node_modules/react-native-qrcode-skia/lib/commonjs/qrcode/transform-matrix-into-path.js.map +@@ -1 +1 @@ +-{"version":3,"names":["defaultShapeOptions","shape","eyePatternShape","gap","eyePatternGap","transformMatrixIntoPath","matrix","size","options","logoSize","cellSize","length","path","getCorners","i","j","isDetectionPattern","x","y","padding","center","effectiveCellSize","offset","q1","q2","q3","q4","d1","d2","d3","d4","getNeighbors","_matrix","_matrix$i","_matrix2","_matrix$i2","top","right","bottom","left","isLogoArea","Math","floor","logoRadius","renderElement","corners","neighbors","currentShape","renderRoundedSquare","renderDiamond","renderTriangle","renderStar","useRadius","d1d2","d2d3","d3d4","d4d1","isEyePattern","outerRadius","innerRadius","angle","PI","radius","cos","sin","forEach","row","cell","exports"],"sourceRoot":"../../../src","sources":["qrcode/transform-matrix-into-path.ts"],"mappings":"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","ignoreList":[]} +\ No newline at end of file ++{"version":3,"names":["defaultShapeOptions","shape","eyePatternShape","gap","eyePatternGap","logoAreaBorderRadius","transformMatrixIntoPath","matrix","size","options","logoSize","eyeShape","pupilShape","cellSize","length","path","getCorners","i","j","isDetectionPattern","x","y","padding","center","effectiveCellSize","offset","q1","q2","q3","q4","d1","d2","d3","d4","getNeighbors","_matrix","_matrix$i","_matrix2","_matrix$i2","top","right","bottom","left","isLogoArea","Math","floor","logoRadius","logoAreaX","logoAreaY","logoAreaSize","r","min","cellCenterX","cellCenterY","inCornerCircle","cx","cy","dx","dy","renderElement","corners","neighbors","currentShape","renderRoundedSquare","renderDiamond","renderTriangle","renderStar","useRadius","d1d2","d2d3","d3d4","d4d1","isEyePattern","outerRadius","innerRadius","angle","PI","radius","cos","sin","isDetectionPatternCell","getDetectionPatternOrigin","row","col","useCustomEyeShape","undefined","renderEye","originRow","originCol","eyePath","outerX","outerY","outerSize","cutoutX","cutoutY","cutoutSize","pupilX","pupilY","pupilSize","currentEyeShape","currentPupilShape","cutoutRadius","centerX","centerY","outerR","cutoutR","pupilRadius","pupilR","renderedEyes","Set","renderVerticalPill","startRow","endRow","yStart","yEnd","width","handleEyeCell","origin","eyeKey","has","add","processed","Array","from","fill","runEnd","forEach","cell","exports"],"sourceRoot":"../../../src","sources":["qrcode/transform-matrix-into-path.ts"],"mappings":";;;;;;AAuBA,MAAMA,mBAAiC,GAAG;EACxCC,KAAK,EAAE,SAAS;EAChBC,eAAe,EAAE,SAAS;EAC1BC,GAAG,EAAE,CAAC;EACNC,aAAa,EAAE,CAAC;EAChBC,oBAAoB,EAAE;AACxB,CAAC;AA0BD,MAAMC,uBAAuB,GAAGA,CAC9BC,MAAmB,EACnBC,IAAY,EACZC,OAAqB,GAAGT,mBAAmB,EAC3CU,QAAgB,GAAG,CAAC,KACjB;EACH,MAAM;IACJT,KAAK,GAAG,SAAS;IACjBC,eAAe,GAAG,SAAS;IAC3BC,GAAG,GAAG,CAAC;IACPC,aAAa,GAAG,CAAC;IACjBC,oBAAoB,GAAG,CAAC;IACxBM,QAAQ;IACRC;EACF,CAAC,GAAGH,OAAO;EACX,MAAMI,QAAQ,GAAGL,IAAI,GAAGD,MAAM,CAACO,MAAM;EACrC,IAAIC,IAAI,GAAG,EAAE;EAEb,MAAMC,UAAU,GAAGA,CACjBC,CAAS,EACTC,CAAS,EACTC,kBAA2B,KACf;IACZ,MAAMC,CAAC,GAAGF,CAAC,GAAGL,QAAQ;IACtB,MAAMQ,CAAC,GAAGJ,CAAC,GAAGJ,QAAQ;IACtB,MAAMS,OAAO,GAAGH,kBAAkB,GAAGf,aAAa,GAAG,CAAC,GAAGD,GAAG,GAAG,CAAC;IAChE,MAAMoB,MAAM,GAAG;MAAEH,CAAC,EAAEA,CAAC,GAAGP,QAAQ,GAAG,CAAC;MAAEQ,CAAC,EAAEA,CAAC,GAAGR,QAAQ,GAAG;IAAE,CAAC;IAC3D,MAAMW,iBAAiB,GACrBX,QAAQ,IAAIM,kBAAkB,GAAGf,aAAa,GAAGD,GAAG,CAAC;IACvD,MAAMsB,MAAM,GAAGD,iBAAiB,GAAG,CAAC;IACpC,OAAO;MACLE,EAAE,EAAE;QAAEN,CAAC,EAAEA,CAAC,GAAGP,QAAQ,GAAGS,OAAO;QAAED,CAAC,EAAEA,CAAC,GAAGC;MAAQ,CAAC;MACjDK,EAAE,EAAE;QAAEP,CAAC,EAAEA,CAAC,GAAGP,QAAQ,GAAGS,OAAO;QAAED,CAAC,EAAEA,CAAC,GAAGR,QAAQ,GAAGS;MAAQ,CAAC;MAC5DM,EAAE,EAAE;QAAER,CAAC,EAAEA,CAAC,GAAGE,OAAO;QAAED,CAAC,EAAEA,CAAC,GAAGR,QAAQ,GAAGS;MAAQ,CAAC;MACjDO,EAAE,EAAE;QAAET,CAAC,EAAEA,CAAC,GAAGE,OAAO;QAAED,CAAC,EAAEA,CAAC,GAAGC;MAAQ,CAAC;MACtCQ,EAAE,EAAE;QAAEV,CAAC,EAAEA,CAAC,GAAGP,QAAQ,GAAGS,OAAO,GAAGG,MAAM;QAAEJ,CAAC,EAAEA,CAAC,GAAGC;MAAQ,CAAC;MAC1DS,EAAE,EAAE;QAAEX,CAAC,EAAEA,CAAC,GAAGP,QAAQ,GAAGS,OAAO;QAAED,CAAC,EAAEA,CAAC,GAAGR,QAAQ,GAAGS,OAAO,GAAGG;MAAO,CAAC;MACrEO,EAAE,EAAE;QAAEZ,CAAC,EAAEA,CAAC,GAAGE,OAAO,GAAGG,MAAM;QAAEJ,CAAC,EAAEA,CAAC,GAAGR,QAAQ,GAAGS;MAAQ,CAAC;MAC1DW,EAAE,EAAE;QAAEb,CAAC,EAAEA,CAAC,GAAGE,OAAO;QAAED,CAAC,EAAEA,CAAC,GAAGC,OAAO,GAAGG;MAAO,CAAC;MAC/CF;IACF,CAAC;EACH,CAAC;EAED,MAAMW,YAAY,GAAGA,CAACjB,CAAS,EAAEC,CAAS;IAAA,IAAAiB,OAAA,EAAAC,SAAA,EAAAC,QAAA,EAAAC,UAAA;IAAA,OAAiB;MACzDC,GAAG,EAAEtB,CAAC,GAAG,CAAC,IAAI,EAAAkB,OAAA,GAAA5B,MAAM,CAACU,CAAC,GAAG,CAAC,CAAC,cAAAkB,OAAA,uBAAbA,OAAA,CAAgBjB,CAAC,CAAC,MAAK,CAAC;MACtCsB,KAAK,EAAEtB,CAAC,GAAGX,MAAM,CAACO,MAAM,GAAG,CAAC,IAAI,EAAAsB,SAAA,GAAA7B,MAAM,CAACU,CAAC,CAAC,cAAAmB,SAAA,uBAATA,SAAA,CAAYlB,CAAC,GAAG,CAAC,CAAC,MAAK,CAAC;MACxDuB,MAAM,EAAExB,CAAC,GAAGV,MAAM,CAACO,MAAM,GAAG,CAAC,IAAI,EAAAuB,QAAA,GAAA9B,MAAM,CAACU,CAAC,GAAG,CAAC,CAAC,cAAAoB,QAAA,uBAAbA,QAAA,CAAgBnB,CAAC,CAAC,MAAK,CAAC;MACzDwB,IAAI,EAAExB,CAAC,GAAG,CAAC,IAAI,EAAAoB,UAAA,GAAA/B,MAAM,CAACU,CAAC,CAAC,cAAAqB,UAAA,uBAATA,UAAA,CAAYpB,CAAC,GAAG,CAAC,CAAC,MAAK;IACxC,CAAC;EAAA,CAAC;EAEF,MAAMyB,UAAU,GAAGA,CAAC1B,CAAS,EAAEC,CAAS,KAAc;IACpD,IAAIR,QAAQ,KAAK,CAAC,EAAE,OAAO,KAAK;IAEhC,MAAMa,MAAM,GAAGqB,IAAI,CAACC,KAAK,CAACtC,MAAM,CAACO,MAAM,GAAG,CAAC,CAAC;IAC5C,MAAMgC,UAAU,GAAGF,IAAI,CAACC,KAAK,CAACnC,QAAQ,GAAGG,QAAQ,GAAG,CAAC,CAAC;IAEtD,IAAIR,oBAAoB,KAAK,CAAC,EAAE;MAC9B,OACEY,CAAC,IAAIM,MAAM,GAAGuB,UAAU,IACxB7B,CAAC,IAAIM,MAAM,GAAGuB,UAAU,IACxB5B,CAAC,IAAIK,MAAM,GAAGuB,UAAU,IACxB5B,CAAC,IAAIK,MAAM,GAAGuB,UAAU;IAE5B;;IAEA;IACA,MAAMC,SAAS,GAAG,CAACxB,MAAM,GAAGuB,UAAU,IAAIjC,QAAQ;IAClD,MAAMmC,SAAS,GAAG,CAACzB,MAAM,GAAGuB,UAAU,IAAIjC,QAAQ;IAClD,MAAMoC,YAAY,GAAG,CAACH,UAAU,GAAG,CAAC,GAAG,CAAC,IAAIjC,QAAQ;IACpD,MAAMqC,CAAC,GAAGN,IAAI,CAACO,GAAG,CAAC9C,oBAAoB,EAAE4C,YAAY,GAAG,CAAC,CAAC;IAE1D,MAAMG,WAAW,GAAGlC,CAAC,GAAGL,QAAQ,GAAGA,QAAQ,GAAG,CAAC;IAC/C,MAAMwC,WAAW,GAAGpC,CAAC,GAAGJ,QAAQ,GAAGA,QAAQ,GAAG,CAAC;;IAE/C;IACA,IACEuC,WAAW,IAAIL,SAAS,GAAGG,CAAC,IAC5BE,WAAW,IAAIL,SAAS,GAAGE,YAAY,GAAGC,CAAC,IAC3CG,WAAW,IAAIL,SAAS,IACxBK,WAAW,IAAIL,SAAS,GAAGC,YAAY,EAEvC,OAAO,IAAI;IAEb,IACEI,WAAW,IAAIL,SAAS,GAAGE,CAAC,IAC5BG,WAAW,IAAIL,SAAS,GAAGC,YAAY,GAAGC,CAAC,IAC3CE,WAAW,IAAIL,SAAS,IACxBK,WAAW,IAAIL,SAAS,GAAGE,YAAY,EAEvC,OAAO,IAAI;;IAEb;IACA,MAAMK,cAAc,GAAGA,CAACC,EAAU,EAAEC,EAAU,KAAc;MAC1D,MAAMC,EAAE,GAAGL,WAAW,GAAGG,EAAE;MAC3B,MAAMG,EAAE,GAAGL,WAAW,GAAGG,EAAE;MAC3B,OAAOC,EAAE,GAAGA,EAAE,GAAGC,EAAE,GAAGA,EAAE,IAAIR,CAAC,GAAGA,CAAC;IACnC,CAAC;;IAED;IACA,IAAIE,WAAW,GAAGL,SAAS,GAAGG,CAAC,IAAIG,WAAW,GAAGL,SAAS,GAAGE,CAAC,EAC5D,OAAOI,cAAc,CAACP,SAAS,GAAGG,CAAC,EAAEF,SAAS,GAAGE,CAAC,CAAC;;IAErD;IACA,IACEE,WAAW,GAAGL,SAAS,GAAGE,YAAY,GAAGC,CAAC,IAC1CG,WAAW,GAAGL,SAAS,GAAGE,CAAC,EAE3B,OAAOI,cAAc,CAACP,SAAS,GAAGE,YAAY,GAAGC,CAAC,EAAEF,SAAS,GAAGE,CAAC,CAAC;;IAEpE;IACA,IACEE,WAAW,GAAGL,SAAS,GAAGE,YAAY,GAAGC,CAAC,IAC1CG,WAAW,GAAGL,SAAS,GAAGC,YAAY,GAAGC,CAAC,EAE1C,OAAOI,cAAc,CACnBP,SAAS,GAAGE,YAAY,GAAGC,CAAC,EAC5BF,SAAS,GAAGC,YAAY,GAAGC,CAC7B,CAAC;;IAEH;IACA,IACEE,WAAW,GAAGL,SAAS,GAAGG,CAAC,IAC3BG,WAAW,GAAGL,SAAS,GAAGC,YAAY,GAAGC,CAAC,EAE1C,OAAOI,cAAc,CAACP,SAAS,GAAGG,CAAC,EAAEF,SAAS,GAAGC,YAAY,GAAGC,CAAC,CAAC;IAEpE,OAAO,KAAK;EACd,CAAC;EAED,MAAMS,aAAa,GAAGA,CACpBC,OAAgB,EAChBC,SAAoB,EACpB5C,CAAS,EACTC,CAAS,KACE;IACX,MAAM;MAAEQ,EAAE;MAAEC,EAAE;MAAEC,EAAE;MAAEC,EAAE;MAAEN;IAAO,CAAC,GAAGqC,OAAO;IAC1C,MAAMzC,kBAAkB,GACrBF,CAAC,GAAG,CAAC,IAAIC,CAAC,GAAG,CAAC,IACdD,CAAC,GAAG,CAAC,IAAIC,CAAC,IAAIX,MAAM,CAACO,MAAM,GAAG,CAAE,IAChCG,CAAC,IAAIV,MAAM,CAACO,MAAM,GAAG,CAAC,IAAII,CAAC,GAAG,CAAE;IACnC,MAAM4C,YAAY,GAAG3C,kBAAkB,GAAGjB,eAAe,GAAGD,KAAK;IACjE,MAAMuB,iBAAiB,GACrBX,QAAQ,IAAIM,kBAAkB,GAAGf,aAAa,GAAGD,GAAG,CAAC;IAEvD,QAAQ2D,YAAY;MAClB,KAAK,QAAQ;QACX,OAAQ,IAAGvC,MAAM,CAACH,CAAE,IAAGG,MAAM,CAACF,CAAE,MAAKG,iBAAiB,GAAG,CAAE,QAAOA,iBAAiB,GAAG,CAAE,IAAGA,iBAAiB,GAAG,CAAE,UAASA,iBAAkB,OAAMA,iBAAiB,GAAG,CAAE,IAAGA,iBAAiB,GAAG,CAAE,WAAUA,iBAAkB,IAAG;MAClO,KAAK,SAAS;QACZ,OAAOuC,mBAAmB,CAACH,OAAO,EAAEC,SAAS,EAAE,IAAI,CAAC;MACtD,KAAK,SAAS;QACZ,OAAOG,aAAa,CAACJ,OAAO,CAAC;MAC/B,KAAK,UAAU;QACb,OAAOK,cAAc,CAACL,OAAO,CAAC;MAChC,KAAK,MAAM;QACT,OAAOM,UAAU,CAACN,OAAO,EAAEzC,kBAAkB,CAAC;MAChD,KAAK,QAAQ;MACb;QACE,OAAQ,IAAGU,EAAE,CAACT,CAAE,IAAGS,EAAE,CAACR,CAAE,KAAIK,EAAE,CAACN,CAAE,KAAIO,EAAE,CAACN,CAAE,KAAIO,EAAE,CAACR,CAAE,IAAG;IAC1D;EACF,CAAC;EAED,MAAM2C,mBAAmB,GAAGA,CAC1BH,OAAgB,EAChBC,SAAoB,EACpBM,SAAkB,KACP;IACX,MAAM;MAAEzC,EAAE;MAAEC,EAAE;MAAEC,EAAE;MAAEC,EAAE;MAAEC,EAAE;MAAEC,EAAE;MAAEC,EAAE;MAAEC;IAAG,CAAC,GAAG2B,OAAO;IAElD,MAAMQ,IAAI,GACRP,SAAS,CAACtB,GAAG,IAAIsB,SAAS,CAACrB,KAAK,IAAI,CAAC2B,SAAS,GACzC,IAAGzC,EAAE,CAACN,CAAE,IAAGM,EAAE,CAACL,CAAE,KAAIU,EAAE,CAACX,CAAE,IAAGW,EAAE,CAACV,CAAE,EAAC,GAClC,IAAGS,EAAE,CAACV,CAAE,IAAGU,EAAE,CAACT,CAAE,KAAIK,EAAE,CAACN,CAAE,IAAGM,EAAE,CAACL,CAAE,IAAGU,EAAE,CAACX,CAAE,IAAGW,EAAE,CAACV,CAAE,EAAC;IAEzD,MAAMgD,IAAI,GACRR,SAAS,CAACrB,KAAK,IAAIqB,SAAS,CAACpB,MAAM,IAAI,CAAC0B,SAAS,GAC5C,IAAGxC,EAAE,CAACP,CAAE,IAAGO,EAAE,CAACN,CAAE,KAAIW,EAAE,CAACZ,CAAE,IAAGY,EAAE,CAACX,CAAE,EAAC,GAClC,IAAGU,EAAE,CAACX,CAAE,IAAGW,EAAE,CAACV,CAAE,KAAIM,EAAE,CAACP,CAAE,IAAGO,EAAE,CAACN,CAAE,IAAGW,EAAE,CAACZ,CAAE,IAAGY,EAAE,CAACX,CAAE,EAAC;IAEzD,MAAMiD,IAAI,GACRT,SAAS,CAACpB,MAAM,IAAIoB,SAAS,CAACnB,IAAI,IAAI,CAACyB,SAAS,GAC3C,IAAGvC,EAAE,CAACR,CAAE,IAAGQ,EAAE,CAACP,CAAE,KAAIY,EAAE,CAACb,CAAE,IAAGa,EAAE,CAACZ,CAAE,EAAC,GAClC,IAAGW,EAAE,CAACZ,CAAE,IAAGY,EAAE,CAACX,CAAE,KAAIO,EAAE,CAACR,CAAE,IAAGQ,EAAE,CAACP,CAAE,IAAGY,EAAE,CAACb,CAAE,IAAGa,EAAE,CAACZ,CAAE,EAAC;IAEzD,MAAMkD,IAAI,GACRV,SAAS,CAACnB,IAAI,IAAImB,SAAS,CAACtB,GAAG,IAAI,CAAC4B,SAAS,GACxC,IAAGtC,EAAE,CAACT,CAAE,IAAGS,EAAE,CAACR,CAAE,KAAIS,EAAE,CAACV,CAAE,IAAGU,EAAE,CAACT,CAAE,EAAC,GAClC,IAAGY,EAAE,CAACb,CAAE,IAAGa,EAAE,CAACZ,CAAE,KAAIQ,EAAE,CAACT,CAAE,IAAGS,EAAE,CAACR,CAAE,IAAGS,EAAE,CAACV,CAAE,IAAGU,EAAE,CAACT,CAAE,EAAC;IAEzD,OAAQ,IAAGS,EAAE,CAACV,CAAE,IAAGU,EAAE,CAACT,CAAE,IAAG+C,IAAK,IAAGC,IAAK,IAAGC,IAAK,IAAGC,IAAK,EAAC;EAC3D,CAAC;EAED,MAAMP,aAAa,GAAIJ,OAAgB,IAAa;IAClD,MAAM;MAAErC,MAAM;MAAEG,EAAE;MAAEC,EAAE;MAAEC,EAAE;MAAEC;IAAG,CAAC,GAAG+B,OAAO;IAC1C,OAAQ,IAAGrC,MAAM,CAACH,CAAE,IAAGS,EAAE,CAACR,CAAE,KAAIK,EAAE,CAACN,CAAE,IAAGG,MAAM,CAACF,CAAE,KAAIE,MAAM,CAACH,CAAE,IAAGO,EAAE,CAACN,CAAE,KAAIO,EAAE,CAACR,CAAE,IAAGG,MAAM,CAACF,CAAE,IAAG;EAChG,CAAC;EAED,MAAM4C,cAAc,GAAIL,OAAgB,IAAa;IACnD,MAAM;MAAErC,MAAM;MAAEG,EAAE;MAAEC,EAAE;MAAEC,EAAE;MAAEC;IAAG,CAAC,GAAG+B,OAAO;IAC1C,OAAQ,IAAGrC,MAAM,CAACH,CAAE,IAAGS,EAAE,CAACR,CAAE,KAAIK,EAAE,CAACN,CAAE,IAAGO,EAAE,CAACN,CAAE,KAAIO,EAAE,CAACR,CAAE,IAAGQ,EAAE,CAACP,CAAE,IAAG;EACnE,CAAC;EAED,MAAM6C,UAAU,GAAGA,CAACN,OAAgB,EAAEY,YAAqB,KAAa;IACtE,MAAM;MAAEjD,MAAM;MAAEM;IAAG,CAAC,GAAG+B,OAAO;IAC9B,MAAMa,WAAW,GAAG,CAAC5D,QAAQ,IAAI2D,YAAY,GAAGpE,aAAa,GAAGD,GAAG,CAAC,IAAI,CAAC;IACzE,MAAMuE,WAAW,GAAGD,WAAW,GAAG,GAAG;IACrC;IACA,IAAI1D,IAAI,GAAI,IAAGQ,MAAM,CAACH,CAAE,IAAGS,EAAE,CAACR,CAAE,EAAC;IACjC,KAAK,IAAIJ,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG,EAAE,EAAEA,CAAC,EAAE,EAAE;MAC3B,MAAM0D,KAAK,GAAI/B,IAAI,CAACgC,EAAE,GAAG,CAAC,GAAI3D,CAAC,GAAG2B,IAAI,CAACgC,EAAE,GAAG,CAAC;MAC7C,MAAMC,MAAM,GAAG5D,CAAC,GAAG,CAAC,KAAK,CAAC,GAAGwD,WAAW,GAAGC,WAAW;MACtD,MAAMtD,CAAC,GAAGG,MAAM,CAACH,CAAC,GAAGyD,MAAM,GAAGjC,IAAI,CAACkC,GAAG,CAACH,KAAK,CAAC;MAC7C,MAAMtD,CAAC,GAAGE,MAAM,CAACF,CAAC,GAAGwD,MAAM,GAAGjC,IAAI,CAACmC,GAAG,CAACJ,KAAK,CAAC;MAC7C5D,IAAI,IAAK,KAAIK,CAAE,IAAGC,CAAE,EAAC;IACvB;IACA,OAAON,IAAI,GAAG,IAAI;EACpB,CAAC;EAED,MAAMiE,sBAAsB,GAAGA,CAAC/D,CAAS,EAAEC,CAAS,KAAc;IAChE,OACGD,CAAC,GAAG,CAAC,IAAIC,CAAC,GAAG,CAAC,IACdD,CAAC,GAAG,CAAC,IAAIC,CAAC,IAAIX,MAAM,CAACO,MAAM,GAAG,CAAE,IAChCG,CAAC,IAAIV,MAAM,CAACO,MAAM,GAAG,CAAC,IAAII,CAAC,GAAG,CAAE;EAErC,CAAC;EAED,MAAM+D,yBAAyB,GAAGA,CAChChE,CAAS,EACTC,CAAS,KAC+B;IACxC,IAAID,CAAC,GAAG,CAAC,IAAIC,CAAC,GAAG,CAAC,EAAE,OAAO;MAAEgE,GAAG,EAAE,CAAC;MAAEC,GAAG,EAAE;IAAE,CAAC;IAC7C,IAAIlE,CAAC,GAAG,CAAC,IAAIC,CAAC,IAAIX,MAAM,CAACO,MAAM,GAAG,CAAC,EACjC,OAAO;MAAEoE,GAAG,EAAE,CAAC;MAAEC,GAAG,EAAE5E,MAAM,CAACO,MAAM,GAAG;IAAE,CAAC;IAC3C,IAAIG,CAAC,IAAIV,MAAM,CAACO,MAAM,GAAG,CAAC,IAAII,CAAC,GAAG,CAAC,EACjC,OAAO;MAAEgE,GAAG,EAAE3E,MAAM,CAACO,MAAM,GAAG,CAAC;MAAEqE,GAAG,EAAE;IAAE,CAAC;IAC3C,OAAO,IAAI;EACb,CAAC;EAED,MAAMC,iBAAiB,GAAGzE,QAAQ,KAAK0E,SAAS,IAAIzE,UAAU,KAAKyE,SAAS;EAE5E,MAAMC,SAAS,GAAGA,CAACC,SAAiB,EAAEC,SAAiB,KAAa;IAClE,MAAMlE,OAAO,GAAGlB,aAAa,GAAG,CAAC;IACjC,IAAIqF,OAAO,GAAG,EAAE;;IAEhB;IACA,MAAMC,MAAM,GAAGF,SAAS,GAAG3E,QAAQ,GAAGS,OAAO;IAC7C,MAAMqE,MAAM,GAAGJ,SAAS,GAAG1E,QAAQ,GAAGS,OAAO;IAC7C,MAAMsE,SAAS,GAAG,CAAC,GAAG/E,QAAQ,GAAGT,aAAa;;IAE9C;IACA,MAAMyF,OAAO,GAAG,CAACL,SAAS,GAAG,CAAC,IAAI3E,QAAQ,GAAGS,OAAO;IACpD,MAAMwE,OAAO,GAAG,CAACP,SAAS,GAAG,CAAC,IAAI1E,QAAQ,GAAGS,OAAO;IACpD,MAAMyE,UAAU,GAAG,CAAC,GAAGlF,QAAQ,GAAGT,aAAa;;IAE/C;IACA,MAAM4F,MAAM,GAAG,CAACR,SAAS,GAAG,CAAC,IAAI3E,QAAQ,GAAGS,OAAO;IACnD,MAAM2E,MAAM,GAAG,CAACV,SAAS,GAAG,CAAC,IAAI1E,QAAQ,GAAGS,OAAO;IACnD,MAAM4E,SAAS,GAAG,CAAC,GAAGrF,QAAQ,GAAGT,aAAa;IAE9C,MAAM+F,eAAe,GAAGxF,QAAQ,IAAI,QAAQ;IAC5C,MAAMyF,iBAAiB,GAAGxF,UAAU,IAAI,QAAQ;;IAEhD;IACA,IAAIuF,eAAe,KAAK,QAAQ,EAAE;MAChC,MAAM1B,WAAW,GAAGmB,SAAS,GAAG,CAAC;MACjC,MAAMS,YAAY,GAAGN,UAAU,GAAG,CAAC;MACnC,MAAMO,OAAO,GAAGZ,MAAM,GAAGE,SAAS,GAAG,CAAC;MACtC,MAAMW,OAAO,GAAGZ,MAAM,GAAGC,SAAS,GAAG,CAAC;MACtC;MACAH,OAAO,IAAK,IAAGa,OAAO,GAAG7B,WAAY,IAAG8B,OAAQ,KAAI9B,WAAY,IAAGA,WAAY,UAASmB,SAAU,OAAMnB,WAAY,IAAGA,WAAY,WAAUmB,SAAU,KAAI;MAC3J;MACAH,OAAO,IAAK,IAAGa,OAAO,GAAGD,YAAa,IAAGE,OAAQ,KAAIF,YAAa,IAAGA,YAAa,UAASN,UAAW,OAAMM,YAAa,IAAGA,YAAa,WAAUN,UAAW,KAAI;IACpK,CAAC,MAAM,IAAII,eAAe,KAAK,SAAS,EAAE;MACxC,MAAMK,MAAM,GAAGZ,SAAS,GAAG,IAAI;MAC/B,MAAMa,OAAO,GAAGV,UAAU,GAAG,GAAG;MAChC;MACAN,OAAO,IAAK,IAAGC,MAAM,GAAGc,MAAO,IAAGb,MAAO,KAAID,MAAM,GAAGE,SAAS,GAAGY,MAAO,KAAId,MAAM,GAAGE,SAAU,IAAGD,MAAO,IAAGD,MAAM,GAAGE,SAAU,IAAGD,MAAM,GAAGa,MAAO,KAAIb,MAAM,GAAGC,SAAS,GAAGY,MAAO,KAAId,MAAM,GAAGE,SAAU,IAAGD,MAAM,GAAGC,SAAU,IAAGF,MAAM,GAAGE,SAAS,GAAGY,MAAO,IAAGb,MAAM,GAAGC,SAAU,KAAIF,MAAM,GAAGc,MAAO,KAAId,MAAO,IAAGC,MAAM,GAAGC,SAAU,IAAGF,MAAO,IAAGC,MAAM,GAAGC,SAAS,GAAGY,MAAO,KAAIb,MAAM,GAAGa,MAAO,KAAId,MAAO,IAAGC,MAAO,IAAGD,MAAM,GAAGc,MAAO,IAAGb,MAAO,KAAI;MAC7b;MACAF,OAAO,IAAK,IAAGI,OAAO,GAAGY,OAAQ,IAAGX,OAAQ,KAAID,OAAQ,IAAGC,OAAQ,IAAGD,OAAQ,IAAGC,OAAO,GAAGW,OAAQ,KAAIX,OAAO,GAAGC,UAAU,GAAGU,OAAQ,KAAIZ,OAAQ,IAAGC,OAAO,GAAGC,UAAW,IAAGF,OAAO,GAAGY,OAAQ,IAAGX,OAAO,GAAGC,UAAW,KAAIF,OAAO,GAAGE,UAAU,GAAGU,OAAQ,KAAIZ,OAAO,GAAGE,UAAW,IAAGD,OAAO,GAAGC,UAAW,IAAGF,OAAO,GAAGE,UAAW,IAAGD,OAAO,GAAGC,UAAU,GAAGU,OAAQ,KAAIX,OAAO,GAAGW,OAAQ,KAAIZ,OAAO,GAAGE,UAAW,IAAGD,OAAQ,IAAGD,OAAO,GAAGE,UAAU,GAAGU,OAAQ,IAAGX,OAAQ,KAAI;IACld,CAAC,MAAM;MACL;MACAL,OAAO,IAAK,IAAGC,MAAO,IAAGC,MAAO,KAAID,MAAM,GAAGE,SAAU,KAAID,MAAM,GAAGC,SAAU,KAAIF,MAAO,KAAI;MAC7F;MACAD,OAAO,IAAK,IAAGI,OAAQ,IAAGC,OAAQ,KAAIA,OAAO,GAAGC,UAAW,KAAIF,OAAO,GAAGE,UAAW,KAAID,OAAQ,KAAI;IACtG;;IAEA;IACA,IAAIM,iBAAiB,KAAK,QAAQ,EAAE;MAClC,MAAMM,WAAW,GAAGR,SAAS,GAAG,CAAC;MACjC,MAAMI,OAAO,GAAGN,MAAM,GAAGE,SAAS,GAAG,CAAC;MACtC,MAAMK,OAAO,GAAGN,MAAM,GAAGC,SAAS,GAAG,CAAC;MACtCT,OAAO,IAAK,IAAGa,OAAO,GAAGI,WAAY,IAAGH,OAAQ,KAAIG,WAAY,IAAGA,WAAY,UAASR,SAAU,OAAMQ,WAAY,IAAGA,WAAY,WAAUR,SAAU,IAAG;IAC5J,CAAC,MAAM,IAAIE,iBAAiB,KAAK,SAAS,EAAE;MAC1C,MAAMO,MAAM,GAAGT,SAAS,GAAG,IAAI;MAC/BT,OAAO,IAAK,IAAGO,MAAM,GAAGW,MAAO,IAAGV,MAAO,KAAID,MAAM,GAAGE,SAAS,GAAGS,MAAO,KAAIX,MAAM,GAAGE,SAAU,IAAGD,MAAO,IAAGD,MAAM,GAAGE,SAAU,IAAGD,MAAM,GAAGU,MAAO,KAAIV,MAAM,GAAGC,SAAS,GAAGS,MAAO,KAAIX,MAAM,GAAGE,SAAU,IAAGD,MAAM,GAAGC,SAAU,IAAGF,MAAM,GAAGE,SAAS,GAAGS,MAAO,IAAGV,MAAM,GAAGC,SAAU,KAAIF,MAAM,GAAGW,MAAO,KAAIX,MAAO,IAAGC,MAAM,GAAGC,SAAU,IAAGF,MAAO,IAAGC,MAAM,GAAGC,SAAS,GAAGS,MAAO,KAAIV,MAAM,GAAGU,MAAO,KAAIX,MAAO,IAAGC,MAAO,IAAGD,MAAM,GAAGW,MAAO,IAAGV,MAAO,IAAG;IAC9b,CAAC,MAAM;MACL;MACAR,OAAO,IAAK,IAAGO,MAAO,IAAGC,MAAO,KAAID,MAAM,GAAGE,SAAU,KAAID,MAAM,GAAGC,SAAU,KAAIF,MAAO,IAAG;IAC9F;IAEA,OAAOP,OAAO;EAChB,CAAC;EAED,MAAMmB,YAAY,GAAG,IAAIC,GAAG,CAAS,CAAC;EAEtC,MAAMC,kBAAkB,GAAGA,CACzB3B,GAAW,EACX4B,QAAgB,EAChBC,MAAc,KACH;IACX,MAAM1F,OAAO,GAAGnB,GAAG,GAAG,CAAC;IACvB,MAAMiB,CAAC,GAAG+D,GAAG,GAAGtE,QAAQ,GAAGS,OAAO;IAClC,MAAM2F,MAAM,GAAGF,QAAQ,GAAGlG,QAAQ,GAAGS,OAAO;IAC5C,MAAM4F,IAAI,GAAG,CAACF,MAAM,GAAG,CAAC,IAAInG,QAAQ,GAAGS,OAAO;IAC9C,MAAM6F,KAAK,GAAGtG,QAAQ,GAAGV,GAAG;IAC5B,MAAM0E,MAAM,GAAGsC,KAAK,GAAG,CAAC;IAExB,OAAQ,IAAG/F,CAAE,IAAG6F,MAAM,GAAGpC,MAAO,KAAIA,MAAO,IAAGA,MAAO,UAASzD,CAAC,GAAG+F,KAAM,IAAGF,MAAM,GAAGpC,MAAO,KAAIzD,CAAC,GAAG+F,KAAM,IAAGD,IAAI,GAAGrC,MAAO,KAAIA,MAAO,IAAGA,MAAO,UAASzD,CAAE,IAAG8F,IAAI,GAAGrC,MAAO,IAAG;EAChL,CAAC;EAED,MAAMuC,aAAa,GAAGA,CAACnG,CAAS,EAAEC,CAAS,KAAc;IACvD,IAAIkE,iBAAiB,EAAE;MACrB,MAAMiC,MAAM,GAAGpC,yBAAyB,CAAChE,CAAC,EAAEC,CAAC,CAAC;MAC9C,IAAImG,MAAM,EAAE;QACV,MAAMC,MAAM,GAAI,GAAED,MAAM,CAACnC,GAAI,IAAGmC,MAAM,CAAClC,GAAI,EAAC;QAC5C,IAAI,CAACyB,YAAY,CAACW,GAAG,CAACD,MAAM,CAAC,EAAE;UAC7BV,YAAY,CAACY,GAAG,CAACF,MAAM,CAAC;UACxBvG,IAAI,IAAIuE,SAAS,CAAC+B,MAAM,CAACnC,GAAG,EAAEmC,MAAM,CAAClC,GAAG,CAAC;QAC3C;QACA,OAAO,IAAI;MACb;IACF;IACA,OAAO,KAAK;EACd,CAAC;EAED,IAAIlF,KAAK,KAAK,MAAM,EAAE;IACpB,MAAMwH,SAAS,GAAGC,KAAK,CAACC,IAAI,CAAC;MAAE7G,MAAM,EAAEP,MAAM,CAACO;IAAO,CAAC,EAAE,MACtD4G,KAAK,CAACnH,MAAM,CAACO,MAAM,CAAC,CAAC8G,IAAI,CAAC,KAAK,CACjC,CAAC;IAED,KAAK,IAAI1G,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGX,MAAM,CAACO,MAAM,EAAEI,CAAC,EAAE,EAAE;MACtC,KAAK,IAAID,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGV,MAAM,CAACO,MAAM,EAAEG,CAAC,EAAE,EAAE;QACtC,IAAIV,MAAM,CAACU,CAAC,CAAC,CAAEC,CAAC,CAAC,KAAK,CAAC,IAAI,CAACyB,UAAU,CAAC1B,CAAC,EAAEC,CAAC,CAAC,IAAI,CAACuG,SAAS,CAACxG,CAAC,CAAC,CAAEC,CAAC,CAAC,EAAE;UACjE,IAAI8D,sBAAsB,CAAC/D,CAAC,EAAEC,CAAC,CAAC,EAAE;YAChC,IAAI,CAACkG,aAAa,CAACnG,CAAC,EAAEC,CAAC,CAAC,EAAE;cACxB,MAAM0C,OAAO,GAAG5C,UAAU,CAACC,CAAC,EAAEC,CAAC,EAAE,IAAI,CAAC;cACtC,MAAM2C,SAAS,GAAG3B,YAAY,CAACjB,CAAC,EAAEC,CAAC,CAAC;cACpCH,IAAI,IAAI4C,aAAa,CAACC,OAAO,EAAEC,SAAS,EAAE5C,CAAC,EAAEC,CAAC,CAAC;YACjD;YACAuG,SAAS,CAACxG,CAAC,CAAC,CAAEC,CAAC,CAAC,GAAG,IAAI;YACvB;UACF;UAEA,IAAI2G,MAAM,GAAG5G,CAAC;UACd,OACE4G,MAAM,GAAGtH,MAAM,CAACO,MAAM,IACtBP,MAAM,CAACsH,MAAM,CAAC,CAAE3G,CAAC,CAAC,KAAK,CAAC,IACxB,CAACyB,UAAU,CAACkF,MAAM,EAAE3G,CAAC,CAAC,IACtB,CAAC8D,sBAAsB,CAAC6C,MAAM,EAAE3G,CAAC,CAAC,EAClC;YACAuG,SAAS,CAACI,MAAM,CAAC,CAAE3G,CAAC,CAAC,GAAG,IAAI;YAC5B2G,MAAM,EAAE;UACV;UAEA,IAAIA,MAAM,GAAG5G,CAAC,KAAK,CAAC,EAAE;YACpB,MAAM2C,OAAO,GAAG5C,UAAU,CAACC,CAAC,EAAEC,CAAC,EAAE,KAAK,CAAC;YACvC,MAAMM,iBAAiB,GAAGX,QAAQ,GAAGV,GAAG;YACxCY,IAAI,IAAK,IAAG6C,OAAO,CAACrC,MAAM,CAACH,CAAE,IAAGwC,OAAO,CAACrC,MAAM,CAACF,CAAE,MAAKG,iBAAiB,GAAG,CAAE,QAAOA,iBAAiB,GAAG,CAAE,IAAGA,iBAAiB,GAAG,CAAE,UAASA,iBAAkB,OAAMA,iBAAiB,GAAG,CAAE,IAAGA,iBAAiB,GAAG,CAAE,WAAUA,iBAAkB,IAAG;UACnP,CAAC,MAAM;YACLT,IAAI,IAAI+F,kBAAkB,CAAC5F,CAAC,EAAED,CAAC,EAAE4G,MAAM,GAAG,CAAC,CAAC;UAC9C;QACF;MACF;IACF;EACF,CAAC,MAAM;IACLtH,MAAM,CAACuH,OAAO,CAAC,CAAC5C,GAAG,EAAEjE,CAAC,KAAK;MACzBiE,GAAG,CAAC4C,OAAO,CAAC,CAACC,IAAI,EAAE7G,CAAC,KAAK;QACvB,IAAI6G,IAAI,KAAK,CAAC,IAAI,CAACpF,UAAU,CAAC1B,CAAC,EAAEC,CAAC,CAAC,EAAE;UACnC,MAAMC,kBAAkB,GAAG6D,sBAAsB,CAAC/D,CAAC,EAAEC,CAAC,CAAC;UACvD,IAAIC,kBAAkB,IAAIiG,aAAa,CAACnG,CAAC,EAAEC,CAAC,CAAC,EAAE;YAC7C;UACF;UACA,MAAM0C,OAAO,GAAG5C,UAAU,CAACC,CAAC,EAAEC,CAAC,EAAEC,kBAAkB,CAAC;UACpD,MAAM0C,SAAS,GAAG3B,YAAY,CAACjB,CAAC,EAAEC,CAAC,CAAC;UACpCH,IAAI,IAAI4C,aAAa,CAACC,OAAO,EAAEC,SAAS,EAAE5C,CAAC,EAAEC,CAAC,CAAC;QACjD;MACF,CAAC,CAAC;IACJ,CAAC,CAAC;EACJ;EAEA,OAAO;IACLL,QAAQ;IACRE;EACF,CAAC;AACH,CAAC;AAACiH,OAAA,CAAA1H,uBAAA,GAAAA,uBAAA","ignoreList":[]} +\ No newline at end of file +diff --git a/node_modules/react-native-qrcode-skia/lib/module/qrcode/transform-matrix-into-path.js b/node_modules/react-native-qrcode-skia/lib/module/qrcode/transform-matrix-into-path.js +index 166f706..af0626b 100644 +--- a/node_modules/react-native-qrcode-skia/lib/module/qrcode/transform-matrix-into-path.js ++++ b/node_modules/react-native-qrcode-skia/lib/module/qrcode/transform-matrix-into-path.js +@@ -2,14 +2,18 @@ const defaultShapeOptions = { + shape: 'rounded', + eyePatternShape: 'rounded', + gap: 0, +- eyePatternGap: 0 ++ eyePatternGap: 0, ++ logoAreaBorderRadius: 0 + }; + const transformMatrixIntoPath = (matrix, size, options = defaultShapeOptions, logoSize = 0) => { + const { + shape = 'rounded', + eyePatternShape = 'rounded', + gap = 0, +- eyePatternGap = 0 ++ eyePatternGap = 0, ++ logoAreaBorderRadius = 0, ++ eyeShape, ++ pupilShape + } = options; + const cellSize = size / matrix.length; + let path = ''; +@@ -72,7 +76,41 @@ const transformMatrixIntoPath = (matrix, size, options = defaultShapeOptions, lo + if (logoSize === 0) return false; + const center = Math.floor(matrix.length / 2); + const logoRadius = Math.floor(logoSize / cellSize / 2); +- return i >= center - logoRadius && i <= center + logoRadius && j >= center - logoRadius && j <= center + logoRadius; ++ if (logoAreaBorderRadius === 0) { ++ return i >= center - logoRadius && i <= center + logoRadius && j >= center - logoRadius && j <= center + logoRadius; ++ } ++ ++ // Rounded rectangle logic ++ const logoAreaX = (center - logoRadius) * cellSize; ++ const logoAreaY = (center - logoRadius) * cellSize; ++ const logoAreaSize = (logoRadius * 2 + 1) * cellSize; ++ const r = Math.min(logoAreaBorderRadius, logoAreaSize / 2); ++ const cellCenterX = j * cellSize + cellSize / 2; ++ const cellCenterY = i * cellSize + cellSize / 2; ++ ++ // Center rectangle (excluding corners) ++ if (cellCenterX >= logoAreaX + r && cellCenterX <= logoAreaX + logoAreaSize - r && cellCenterY >= logoAreaY && cellCenterY <= logoAreaY + logoAreaSize) return true; ++ if (cellCenterY >= logoAreaY + r && cellCenterY <= logoAreaY + logoAreaSize - r && cellCenterX >= logoAreaX && cellCenterX <= logoAreaX + logoAreaSize) return true; ++ ++ // Corner circle checks ++ const inCornerCircle = (cx, cy) => { ++ const dx = cellCenterX - cx; ++ const dy = cellCenterY - cy; ++ return dx * dx + dy * dy <= r * r; ++ }; ++ ++ // Top-left ++ if (cellCenterX < logoAreaX + r && cellCenterY < logoAreaY + r) return inCornerCircle(logoAreaX + r, logoAreaY + r); ++ ++ // Top-right ++ if (cellCenterX > logoAreaX + logoAreaSize - r && cellCenterY < logoAreaY + r) return inCornerCircle(logoAreaX + logoAreaSize - r, logoAreaY + r); ++ ++ // Bottom-right ++ if (cellCenterX > logoAreaX + logoAreaSize - r && cellCenterY > logoAreaY + logoAreaSize - r) return inCornerCircle(logoAreaX + logoAreaSize - r, logoAreaY + logoAreaSize - r); ++ ++ // Bottom-left ++ if (cellCenterX < logoAreaX + r && cellCenterY > logoAreaY + logoAreaSize - r) return inCornerCircle(logoAreaX + r, logoAreaY + logoAreaSize - r); ++ return false; + }; + const renderElement = (corners, neighbors, i, j) => { + const { +@@ -156,16 +194,155 @@ const transformMatrixIntoPath = (matrix, size, options = defaultShapeOptions, lo + } + return path + ' Z'; + }; +- matrix.forEach((row, i) => { +- row.forEach((cell, j) => { +- if (cell === 1 && !isLogoArea(i, j)) { +- const isDetectionPattern = i < 7 && j < 7 || i < 7 && j >= matrix.length - 7 || i >= matrix.length - 7 && j < 7; +- const corners = getCorners(i, j, isDetectionPattern); +- const neighbors = getNeighbors(i, j); +- path += renderElement(corners, neighbors, i, j); ++ const isDetectionPatternCell = (i, j) => { ++ return i < 7 && j < 7 || i < 7 && j >= matrix.length - 7 || i >= matrix.length - 7 && j < 7; ++ }; ++ const getDetectionPatternOrigin = (i, j) => { ++ if (i < 7 && j < 7) return { ++ row: 0, ++ col: 0 ++ }; ++ if (i < 7 && j >= matrix.length - 7) return { ++ row: 0, ++ col: matrix.length - 7 ++ }; ++ if (i >= matrix.length - 7 && j < 7) return { ++ row: matrix.length - 7, ++ col: 0 ++ }; ++ return null; ++ }; ++ const useCustomEyeShape = eyeShape !== undefined || pupilShape !== undefined; ++ const renderEye = (originRow, originCol) => { ++ const padding = eyePatternGap / 2; ++ let eyePath = ''; ++ ++ // Eye frame (outer) - 7x7 cells area with 1 cell thick stroke ++ const outerX = originCol * cellSize + padding; ++ const outerY = originRow * cellSize + padding; ++ const outerSize = 7 * cellSize - eyePatternGap; ++ ++ // Inner cutout for the frame - 5x5 cells (creates 1 cell thick border) ++ const cutoutX = (originCol + 1) * cellSize + padding; ++ const cutoutY = (originRow + 1) * cellSize + padding; ++ const cutoutSize = 5 * cellSize - eyePatternGap; ++ ++ // Pupil - 3x3 cells centered ++ const pupilX = (originCol + 2) * cellSize + padding; ++ const pupilY = (originRow + 2) * cellSize + padding; ++ const pupilSize = 3 * cellSize - eyePatternGap; ++ const currentEyeShape = eyeShape ?? 'square'; ++ const currentPupilShape = pupilShape ?? 'square'; ++ ++ // Render Eye frame based on shape ++ if (currentEyeShape === 'circle') { ++ const outerRadius = outerSize / 2; ++ const cutoutRadius = cutoutSize / 2; ++ const centerX = outerX + outerSize / 2; ++ const centerY = outerY + outerSize / 2; ++ // Outer circle ++ eyePath += `M${centerX - outerRadius} ${centerY} a${outerRadius},${outerRadius} 0 1,0 ${outerSize},0 a${outerRadius},${outerRadius} 0 1,0 -${outerSize},0 `; ++ // Inner cutout circle (reverse winding for cutout) ++ eyePath += `M${centerX - cutoutRadius} ${centerY} a${cutoutRadius},${cutoutRadius} 0 1,1 ${cutoutSize},0 a${cutoutRadius},${cutoutRadius} 0 1,1 -${cutoutSize},0 `; ++ } else if (currentEyeShape === 'rounded') { ++ const outerR = outerSize * 0.35; ++ const cutoutR = cutoutSize * 0.3; ++ // Outer rounded rect ++ eyePath += `M${outerX + outerR} ${outerY} H${outerX + outerSize - outerR} Q${outerX + outerSize} ${outerY} ${outerX + outerSize} ${outerY + outerR} V${outerY + outerSize - outerR} Q${outerX + outerSize} ${outerY + outerSize} ${outerX + outerSize - outerR} ${outerY + outerSize} H${outerX + outerR} Q${outerX} ${outerY + outerSize} ${outerX} ${outerY + outerSize - outerR} V${outerY + outerR} Q${outerX} ${outerY} ${outerX + outerR} ${outerY} Z `; ++ // Inner cutout rounded rect (reverse winding) ++ eyePath += `M${cutoutX + cutoutR} ${cutoutY} Q${cutoutX} ${cutoutY} ${cutoutX} ${cutoutY + cutoutR} V${cutoutY + cutoutSize - cutoutR} Q${cutoutX} ${cutoutY + cutoutSize} ${cutoutX + cutoutR} ${cutoutY + cutoutSize} H${cutoutX + cutoutSize - cutoutR} Q${cutoutX + cutoutSize} ${cutoutY + cutoutSize} ${cutoutX + cutoutSize} ${cutoutY + cutoutSize - cutoutR} V${cutoutY + cutoutR} Q${cutoutX + cutoutSize} ${cutoutY} ${cutoutX + cutoutSize - cutoutR} ${cutoutY} Z `; ++ } else { ++ // Square ++ eyePath += `M${outerX} ${outerY} H${outerX + outerSize} V${outerY + outerSize} H${outerX} Z `; ++ // Inner cutout (reverse winding) ++ eyePath += `M${cutoutX} ${cutoutY} V${cutoutY + cutoutSize} H${cutoutX + cutoutSize} V${cutoutY} Z `; ++ } ++ ++ // Render Pupil based on shape ++ if (currentPupilShape === 'circle') { ++ const pupilRadius = pupilSize / 2; ++ const centerX = pupilX + pupilSize / 2; ++ const centerY = pupilY + pupilSize / 2; ++ eyePath += `M${centerX - pupilRadius} ${centerY} a${pupilRadius},${pupilRadius} 0 1,0 ${pupilSize},0 a${pupilRadius},${pupilRadius} 0 1,0 -${pupilSize},0`; ++ } else if (currentPupilShape === 'rounded') { ++ const pupilR = pupilSize * 0.25; ++ eyePath += `M${pupilX + pupilR} ${pupilY} H${pupilX + pupilSize - pupilR} Q${pupilX + pupilSize} ${pupilY} ${pupilX + pupilSize} ${pupilY + pupilR} V${pupilY + pupilSize - pupilR} Q${pupilX + pupilSize} ${pupilY + pupilSize} ${pupilX + pupilSize - pupilR} ${pupilY + pupilSize} H${pupilX + pupilR} Q${pupilX} ${pupilY + pupilSize} ${pupilX} ${pupilY + pupilSize - pupilR} V${pupilY + pupilR} Q${pupilX} ${pupilY} ${pupilX + pupilR} ${pupilY} Z`; ++ } else { ++ // Square ++ eyePath += `M${pupilX} ${pupilY} H${pupilX + pupilSize} V${pupilY + pupilSize} H${pupilX} Z`; ++ } ++ return eyePath; ++ }; ++ const renderedEyes = new Set(); ++ const renderVerticalPill = (col, startRow, endRow) => { ++ const padding = gap / 2; ++ const x = col * cellSize + padding; ++ const yStart = startRow * cellSize + padding; ++ const yEnd = (endRow + 1) * cellSize - padding; ++ const width = cellSize - gap; ++ const radius = width / 2; ++ return `M${x} ${yStart + radius} A${radius} ${radius} 0 0 1 ${x + width} ${yStart + radius} L${x + width} ${yEnd - radius} A${radius} ${radius} 0 0 1 ${x} ${yEnd - radius} Z`; ++ }; ++ const handleEyeCell = (i, j) => { ++ if (useCustomEyeShape) { ++ const origin = getDetectionPatternOrigin(i, j); ++ if (origin) { ++ const eyeKey = `${origin.row},${origin.col}`; ++ if (!renderedEyes.has(eyeKey)) { ++ renderedEyes.add(eyeKey); ++ path += renderEye(origin.row, origin.col); ++ } ++ return true; + } ++ } ++ return false; ++ }; ++ if (shape === 'line') { ++ const processed = Array.from({ ++ length: matrix.length ++ }, () => Array(matrix.length).fill(false)); ++ for (let j = 0; j < matrix.length; j++) { ++ for (let i = 0; i < matrix.length; i++) { ++ if (matrix[i][j] === 1 && !isLogoArea(i, j) && !processed[i][j]) { ++ if (isDetectionPatternCell(i, j)) { ++ if (!handleEyeCell(i, j)) { ++ const corners = getCorners(i, j, true); ++ const neighbors = getNeighbors(i, j); ++ path += renderElement(corners, neighbors, i, j); ++ } ++ processed[i][j] = true; ++ continue; ++ } ++ let runEnd = i; ++ while (runEnd < matrix.length && matrix[runEnd][j] === 1 && !isLogoArea(runEnd, j) && !isDetectionPatternCell(runEnd, j)) { ++ processed[runEnd][j] = true; ++ runEnd++; ++ } ++ if (runEnd - i === 1) { ++ const corners = getCorners(i, j, false); ++ const effectiveCellSize = cellSize - gap; ++ path += `M${corners.center.x} ${corners.center.y} m-${effectiveCellSize / 2}, 0 a${effectiveCellSize / 2},${effectiveCellSize / 2} 0 1,0 ${effectiveCellSize},0 a${effectiveCellSize / 2},${effectiveCellSize / 2} 0 1,0 -${effectiveCellSize},0`; ++ } else { ++ path += renderVerticalPill(j, i, runEnd - 1); ++ } ++ } ++ } ++ } ++ } else { ++ matrix.forEach((row, i) => { ++ row.forEach((cell, j) => { ++ if (cell === 1 && !isLogoArea(i, j)) { ++ const isDetectionPattern = isDetectionPatternCell(i, j); ++ if (isDetectionPattern && handleEyeCell(i, j)) { ++ return; ++ } ++ const corners = getCorners(i, j, isDetectionPattern); ++ const neighbors = getNeighbors(i, j); ++ path += renderElement(corners, neighbors, i, j); ++ } ++ }); + }); +- }); ++ } + return { + cellSize, + path +diff --git a/node_modules/react-native-qrcode-skia/lib/module/qrcode/transform-matrix-into-path.js.map b/node_modules/react-native-qrcode-skia/lib/module/qrcode/transform-matrix-into-path.js.map +index 83b936d..6d1b70a 100644 +--- a/node_modules/react-native-qrcode-skia/lib/module/qrcode/transform-matrix-into-path.js.map ++++ b/node_modules/react-native-qrcode-skia/lib/module/qrcode/transform-matrix-into-path.js.map +@@ -1 +1 @@ +-{"version":3,"names":["defaultShapeOptions","shape","eyePatternShape","gap","eyePatternGap","transformMatrixIntoPath","matrix","size","options","logoSize","cellSize","length","path","getCorners","i","j","isDetectionPattern","x","y","padding","center","effectiveCellSize","offset","q1","q2","q3","q4","d1","d2","d3","d4","getNeighbors","_matrix","_matrix$i","_matrix2","_matrix$i2","top","right","bottom","left","isLogoArea","Math","floor","logoRadius","renderElement","corners","neighbors","currentShape","renderRoundedSquare","renderDiamond","renderTriangle","renderStar","useRadius","d1d2","d2d3","d3d4","d4d1","isEyePattern","outerRadius","innerRadius","angle","PI","radius","cos","sin","forEach","row","cell"],"sourceRoot":"../../../src","sources":["qrcode/transform-matrix-into-path.ts"],"mappings":"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","ignoreList":[]} +\ No newline at end of file ++{"version":3,"names":["defaultShapeOptions","shape","eyePatternShape","gap","eyePatternGap","logoAreaBorderRadius","transformMatrixIntoPath","matrix","size","options","logoSize","eyeShape","pupilShape","cellSize","length","path","getCorners","i","j","isDetectionPattern","x","y","padding","center","effectiveCellSize","offset","q1","q2","q3","q4","d1","d2","d3","d4","getNeighbors","_matrix","_matrix$i","_matrix2","_matrix$i2","top","right","bottom","left","isLogoArea","Math","floor","logoRadius","logoAreaX","logoAreaY","logoAreaSize","r","min","cellCenterX","cellCenterY","inCornerCircle","cx","cy","dx","dy","renderElement","corners","neighbors","currentShape","renderRoundedSquare","renderDiamond","renderTriangle","renderStar","useRadius","d1d2","d2d3","d3d4","d4d1","isEyePattern","outerRadius","innerRadius","angle","PI","radius","cos","sin","isDetectionPatternCell","getDetectionPatternOrigin","row","col","useCustomEyeShape","undefined","renderEye","originRow","originCol","eyePath","outerX","outerY","outerSize","cutoutX","cutoutY","cutoutSize","pupilX","pupilY","pupilSize","currentEyeShape","currentPupilShape","cutoutRadius","centerX","centerY","outerR","cutoutR","pupilRadius","pupilR","renderedEyes","Set","renderVerticalPill","startRow","endRow","yStart","yEnd","width","handleEyeCell","origin","eyeKey","has","add","processed","Array","from","fill","runEnd","forEach","cell"],"sourceRoot":"../../../src","sources":["qrcode/transform-matrix-into-path.ts"],"mappings":"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","ignoreList":[]} +\ No newline at end of file +diff --git a/node_modules/react-native-qrcode-skia/lib/typescript/src/__tests__/generate-matrix.test.d.ts b/node_modules/react-native-qrcode-skia/lib/typescript/src/__tests__/generate-matrix.test.d.ts +new file mode 100644 +index 0000000..2d7e251 +--- /dev/null ++++ b/node_modules/react-native-qrcode-skia/lib/typescript/src/__tests__/generate-matrix.test.d.ts +@@ -0,0 +1,2 @@ ++export {}; ++//# sourceMappingURL=generate-matrix.test.d.ts.map +\ No newline at end of file +diff --git a/node_modules/react-native-qrcode-skia/lib/typescript/src/__tests__/generate-matrix.test.d.ts.map b/node_modules/react-native-qrcode-skia/lib/typescript/src/__tests__/generate-matrix.test.d.ts.map +new file mode 100644 +index 0000000..2adf5bd +--- /dev/null ++++ b/node_modules/react-native-qrcode-skia/lib/typescript/src/__tests__/generate-matrix.test.d.ts.map +@@ -0,0 +1 @@ ++{"version":3,"file":"generate-matrix.test.d.ts","sourceRoot":"","sources":["../../../../src/__tests__/generate-matrix.test.tsx"],"names":[],"mappings":""} +\ No newline at end of file +diff --git a/node_modules/react-native-qrcode-skia/lib/typescript/src/__tests__/transform-matrix-into-path.test.d.ts b/node_modules/react-native-qrcode-skia/lib/typescript/src/__tests__/transform-matrix-into-path.test.d.ts +new file mode 100644 +index 0000000..8f90127 +--- /dev/null ++++ b/node_modules/react-native-qrcode-skia/lib/typescript/src/__tests__/transform-matrix-into-path.test.d.ts +@@ -0,0 +1,2 @@ ++export {}; ++//# sourceMappingURL=transform-matrix-into-path.test.d.ts.map +\ No newline at end of file +diff --git a/node_modules/react-native-qrcode-skia/lib/typescript/src/__tests__/transform-matrix-into-path.test.d.ts.map b/node_modules/react-native-qrcode-skia/lib/typescript/src/__tests__/transform-matrix-into-path.test.d.ts.map +new file mode 100644 +index 0000000..b13cff8 +--- /dev/null ++++ b/node_modules/react-native-qrcode-skia/lib/typescript/src/__tests__/transform-matrix-into-path.test.d.ts.map +@@ -0,0 +1 @@ ++{"version":3,"file":"transform-matrix-into-path.test.d.ts","sourceRoot":"","sources":["../../../../src/__tests__/transform-matrix-into-path.test.ts"],"names":[],"mappings":""} +\ No newline at end of file diff --git a/node_modules/react-native-qrcode-skia/lib/typescript/src/qrcode/transform-matrix-into-path.d.ts b/node_modules/react-native-qrcode-skia/lib/typescript/src/qrcode/transform-matrix-into-path.d.ts -index 0c62fc7..391e163 100644 +index 0c62fc7..0fdf307 100644 --- a/node_modules/react-native-qrcode-skia/lib/typescript/src/qrcode/transform-matrix-into-path.d.ts +++ b/node_modules/react-native-qrcode-skia/lib/typescript/src/qrcode/transform-matrix-into-path.d.ts -@@ -4,6 +4,7 @@ export type ShapeOptions = { - eyePatternShape?: BaseShapeOptions; +@@ -1,9 +1,14 @@ +-export type BaseShapeOptions = 'square' | 'circle' | 'rounded' | 'diamond' | 'triangle' | 'star'; ++export type BaseShapeOptions = 'square' | 'circle' | 'rounded' | 'diamond' | 'triangle' | 'star' | 'line'; ++export type EyeShapeOptions = Exclude; ++export type EyePupilShape = 'square' | 'rounded' | 'circle'; + export type ShapeOptions = { + shape?: BaseShapeOptions; +- eyePatternShape?: BaseShapeOptions; ++ eyePatternShape?: EyeShapeOptions; gap?: number; eyePatternGap?: number; + logoAreaBorderRadius?: number; ++ eyeShape?: EyePupilShape; ++ pupilShape?: EyePupilShape; }; declare const transformMatrixIntoPath: (matrix: (1 | 0)[][], size: number, options?: ShapeOptions, logoSize?: number) => { cellSize: number; -diff --git a/node_modules/react-native-qrcode-skia/src/index.tsx b/node_modules/react-native-qrcode-skia/src/index.tsx -index 7e8ab68..d72ff2d 100644 ---- a/node_modules/react-native-qrcode-skia/src/index.tsx -+++ b/node_modules/react-native-qrcode-skia/src/index.tsx -@@ -1,16 +1,16 @@ - import React, { useMemo } from 'react'; - - import { -- Skia, - Canvas, -- Path as SkiaPath, - Group, -+ Skia, -+ Path as SkiaPath, - } from '@shopify/react-native-skia'; - -+import { StyleSheet, View } from 'react-native'; - import { generateMatrix } from './qrcode/generate-matrix'; - import { transformMatrixIntoPath } from './qrcode/transform-matrix-into-path'; - import type { QRCodeProps } from './types'; --import { StyleSheet, View } from 'react-native'; - - const QRCode: React.FC = React.memo( - ({ +diff --git a/node_modules/react-native-qrcode-skia/lib/typescript/src/qrcode/transform-matrix-into-path.d.ts.map b/node_modules/react-native-qrcode-skia/lib/typescript/src/qrcode/transform-matrix-into-path.d.ts.map +index 5936f72..68e47f8 100644 +--- a/node_modules/react-native-qrcode-skia/lib/typescript/src/qrcode/transform-matrix-into-path.d.ts.map ++++ b/node_modules/react-native-qrcode-skia/lib/typescript/src/qrcode/transform-matrix-into-path.d.ts.map +@@ -1 +1 @@ +-{"version":3,"file":"transform-matrix-into-path.d.ts","sourceRoot":"","sources":["../../../../src/qrcode/transform-matrix-into-path.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,gBAAgB,GACxB,QAAQ,GACR,QAAQ,GACR,SAAS,GACT,SAAS,GACT,UAAU,GACV,MAAM,CAAC;AAEX,MAAM,MAAM,YAAY,GAAG;IACzB,KAAK,CAAC,EAAE,gBAAgB,CAAC;IACzB,eAAe,CAAC,EAAE,gBAAgB,CAAC;IACnC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAiCF,QAAA,MAAM,uBAAuB,WACnB,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,QACb,MAAM,YACH,YAAY,aACX,MAAM;;;CAiKjB,CAAC;AAEF,OAAO,EAAE,uBAAuB,EAAE,CAAC"} +\ No newline at end of file ++{"version":3,"file":"transform-matrix-into-path.d.ts","sourceRoot":"","sources":["../../../../src/qrcode/transform-matrix-into-path.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,gBAAgB,GACxB,QAAQ,GACR,QAAQ,GACR,SAAS,GACT,SAAS,GACT,UAAU,GACV,MAAM,GACN,MAAM,CAAC;AAEX,MAAM,MAAM,eAAe,GAAG,OAAO,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;AAEhE,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,CAAC;AAE5D,MAAM,MAAM,YAAY,GAAG;IACzB,KAAK,CAAC,EAAE,gBAAgB,CAAC;IACzB,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,UAAU,CAAC,EAAE,aAAa,CAAC;CAC5B,CAAC;AAkCF,QAAA,MAAM,uBAAuB,WACnB,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,QACb,MAAM,YACH,YAAY,aACX,MAAM;;;CAqYjB,CAAC;AAEF,OAAO,EAAE,uBAAuB,EAAE,CAAC"} +\ No newline at end of file +diff --git a/node_modules/react-native-qrcode-skia/lib/typescript/src/types.d.ts b/node_modules/react-native-qrcode-skia/lib/typescript/src/types.d.ts +index 4ef47e7..1e653d1 100644 +--- a/node_modules/react-native-qrcode-skia/lib/typescript/src/types.d.ts ++++ b/node_modules/react-native-qrcode-skia/lib/typescript/src/types.d.ts +@@ -1,8 +1,8 @@ + /// + import type { StyleProp, ViewStyle } from 'react-native'; + import type { ErrorCorrectionLevelType } from './qrcode/generate-matrix'; +-import type { ShapeOptions, BaseShapeOptions } from './qrcode/transform-matrix-into-path'; +-export type { ShapeOptions, BaseShapeOptions }; ++import type { ShapeOptions, BaseShapeOptions, EyeShapeOptions, EyePupilShape } from './qrcode/transform-matrix-into-path'; ++export type { ShapeOptions, BaseShapeOptions, EyeShapeOptions, EyePupilShape }; + /** + * Represents a base shared value. + * @template T - The type of the shared value. +diff --git a/node_modules/react-native-qrcode-skia/lib/typescript/src/types.d.ts.map b/node_modules/react-native-qrcode-skia/lib/typescript/src/types.d.ts.map +index 266eeea..4f9e948 100644 +--- a/node_modules/react-native-qrcode-skia/lib/typescript/src/types.d.ts.map ++++ b/node_modules/react-native-qrcode-skia/lib/typescript/src/types.d.ts.map +@@ -1 +1 @@ +-{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/types.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AACzE,OAAO,KAAK,EACV,YAAY,EACZ,gBAAgB,EACjB,MAAM,qCAAqC,CAAC;AAE7C,YAAY,EAAE,YAAY,EAAE,gBAAgB,EAAE,CAAC;AAE/C;;;GAGG;AACH,MAAM,MAAM,eAAe,CAAC,CAAC,IAAI;IAC/B,KAAK,EAAE,CAAC,CAAC;CACV,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG;IACxB,uCAAuC;IACvC,KAAK,EAAE,MAAM,CAAC;IACd,iDAAiD;IACjD,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B;;;;OAIG;IACH,oBAAoB,CAAC,EAAE,wBAAwB,CAAC;IAChD;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oEAAoE;IACpE,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC;IAC9B;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,8BAA8B;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb;;;OAGG;IACH,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CACxB,CAAC"} +\ No newline at end of file ++{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/types.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AACzE,OAAO,KAAK,EACV,YAAY,EACZ,gBAAgB,EAChB,eAAe,EACf,aAAa,EACd,MAAM,qCAAqC,CAAC;AAE7C,YAAY,EAAE,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,aAAa,EAAE,CAAC;AAE/E;;;GAGG;AACH,MAAM,MAAM,eAAe,CAAC,CAAC,IAAI;IAC/B,KAAK,EAAE,CAAC,CAAC;CACV,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG;IACxB,uCAAuC;IACvC,KAAK,EAAE,MAAM,CAAC;IACd,iDAAiD;IACjD,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B;;;;OAIG;IACH,oBAAoB,CAAC,EAAE,wBAAwB,CAAC;IAChD;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oEAAoE;IACpE,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC;IAC9B;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,8BAA8B;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb;;;OAGG;IACH,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CACxB,CAAC"} +\ No newline at end of file diff --git a/node_modules/react-native-qrcode-skia/src/qrcode/transform-matrix-into-path.ts b/node_modules/react-native-qrcode-skia/src/qrcode/transform-matrix-into-path.ts -index bdf8df0..01429e6 100644 +index bdf8df0..f607451 100644 --- a/node_modules/react-native-qrcode-skia/src/qrcode/transform-matrix-into-path.ts +++ b/node_modules/react-native-qrcode-skia/src/qrcode/transform-matrix-into-path.ts -@@ -11,6 +11,7 @@ export type ShapeOptions = { - eyePatternShape?: BaseShapeOptions; +@@ -4,13 +4,21 @@ export type BaseShapeOptions = + | 'rounded' + | 'diamond' + | 'triangle' +- | 'star'; ++ | 'star' ++ | 'line'; ++ ++export type EyeShapeOptions = Exclude; ++ ++export type EyePupilShape = 'square' | 'rounded' | 'circle'; + + export type ShapeOptions = { + shape?: BaseShapeOptions; +- eyePatternShape?: BaseShapeOptions; ++ eyePatternShape?: EyeShapeOptions; gap?: number; eyePatternGap?: number; + logoAreaBorderRadius?: number; ++ eyeShape?: EyePupilShape; ++ pupilShape?: EyePupilShape; }; const defaultShapeOptions: ShapeOptions = { -@@ -55,6 +56,7 @@ const transformMatrixIntoPath = ( +@@ -18,6 +26,7 @@ const defaultShapeOptions: ShapeOptions = { + eyePatternShape: 'rounded', + gap: 0, + eyePatternGap: 0, ++ logoAreaBorderRadius: 0, + }; + + type Point = { +@@ -55,6 +64,9 @@ const transformMatrixIntoPath = ( eyePatternShape = 'rounded', gap = 0, eyePatternGap = 0, + logoAreaBorderRadius = 0, ++ eyeShape, ++ pupilShape, } = options; const cellSize = size / matrix.length; let path = ''; -@@ -95,12 +97,67 @@ const transformMatrixIntoPath = ( +@@ -93,14 +105,81 @@ const transformMatrixIntoPath = ( + + const isLogoArea = (i: number, j: number): boolean => { if (logoSize === 0) return false; ++ const center = Math.floor(matrix.length / 2); const logoRadius = Math.floor(logoSize / cellSize / 2); - return ( @@ -64,85 +627,284 @@ index bdf8df0..01429e6 100644 - j >= center - logoRadius && - j <= center + logoRadius - ); -+ -+ // Calculate the logo area bounds ++ ++ if (logoAreaBorderRadius === 0) { ++ return ( ++ i >= center - logoRadius && ++ i <= center + logoRadius && ++ j >= center - logoRadius && ++ j <= center + logoRadius ++ ); ++ } ++ ++ // Rounded rectangle logic + const logoAreaX = (center - logoRadius) * cellSize; + const logoAreaY = (center - logoRadius) * cellSize; -+ const logoAreaWidth = (logoRadius * 2 + 1) * cellSize; -+ const logoAreaHeight = logoAreaWidth; -+ const borderRadius = logoAreaBorderRadius ?? logoAreaWidth / 4; -+ -+ // Get the cell's center point -+ const cellX = j * cellSize + cellSize / 2; -+ const cellY = i * cellSize + cellSize / 2; -+ -+ // Check if cell center is within the rounded rectangle -+ const r = Math.min(borderRadius, logoAreaWidth / 2, logoAreaHeight / 2); -+ -+ // Check if point is within the rounded rectangle -+ // First check if it's in the center rectangle (excluding corners) ++ const logoAreaSize = (logoRadius * 2 + 1) * cellSize; ++ const r = Math.min(logoAreaBorderRadius, logoAreaSize / 2); ++ ++ const cellCenterX = j * cellSize + cellSize / 2; ++ const cellCenterY = i * cellSize + cellSize / 2; ++ ++ // Center rectangle (excluding corners) + if ( -+ cellX >= logoAreaX + r && -+ cellX <= logoAreaX + logoAreaWidth - r && -+ cellY >= logoAreaY && -+ cellY <= logoAreaY + logoAreaHeight -+ ) { ++ cellCenterX >= logoAreaX + r && ++ cellCenterX <= logoAreaX + logoAreaSize - r && ++ cellCenterY >= logoAreaY && ++ cellCenterY <= logoAreaY + logoAreaSize ++ ) + return true; -+ } ++ + if ( -+ cellY >= logoAreaY + r && -+ cellY <= logoAreaY + logoAreaHeight - r && -+ cellX >= logoAreaX && -+ cellX <= logoAreaX + logoAreaWidth -+ ) { ++ cellCenterY >= logoAreaY + r && ++ cellCenterY <= logoAreaY + logoAreaSize - r && ++ cellCenterX >= logoAreaX && ++ cellCenterX <= logoAreaX + logoAreaSize ++ ) + return true; -+ } -+ -+ // Check if point is in one of the four rounded corners -+ // Top-left corner -+ if (cellX < logoAreaX + r && cellY < logoAreaY + r) { -+ const dx = cellX - (logoAreaX + r); -+ const dy = cellY - (logoAreaY + r); -+ return dx * dx + dy * dy <= r * r; -+ } -+ // Top-right corner -+ if (cellX > logoAreaX + logoAreaWidth - r && cellY < logoAreaY + r) { -+ const dx = cellX - (logoAreaX + logoAreaWidth - r); -+ const dy = cellY - (logoAreaY + r); ++ ++ // Corner circle checks ++ const inCornerCircle = (cx: number, cy: number): boolean => { ++ const dx = cellCenterX - cx; ++ const dy = cellCenterY - cy; + return dx * dx + dy * dy <= r * r; ++ }; ++ ++ // Top-left ++ if (cellCenterX < logoAreaX + r && cellCenterY < logoAreaY + r) ++ return inCornerCircle(logoAreaX + r, logoAreaY + r); ++ ++ // Top-right ++ if ( ++ cellCenterX > logoAreaX + logoAreaSize - r && ++ cellCenterY < logoAreaY + r ++ ) ++ return inCornerCircle(logoAreaX + logoAreaSize - r, logoAreaY + r); ++ ++ // Bottom-right ++ if ( ++ cellCenterX > logoAreaX + logoAreaSize - r && ++ cellCenterY > logoAreaY + logoAreaSize - r ++ ) ++ return inCornerCircle( ++ logoAreaX + logoAreaSize - r, ++ logoAreaY + logoAreaSize - r ++ ); ++ ++ // Bottom-left ++ if ( ++ cellCenterX < logoAreaX + r && ++ cellCenterY > logoAreaY + logoAreaSize - r ++ ) ++ return inCornerCircle(logoAreaX + r, logoAreaY + logoAreaSize - r); ++ ++ return false; + }; + + const renderElement = ( +@@ -191,19 +270,177 @@ const transformMatrixIntoPath = ( + return path + ' Z'; + }; + +- matrix.forEach((row, i) => { +- row.forEach((cell, j) => { +- if (cell === 1 && !isLogoArea(i, j)) { +- const isDetectionPattern = +- (i < 7 && j < 7) || +- (i < 7 && j >= matrix.length - 7) || +- (i >= matrix.length - 7 && j < 7); +- const corners = getCorners(i, j, isDetectionPattern); +- const neighbors = getNeighbors(i, j); +- path += renderElement(corners, neighbors, i, j); ++ const isDetectionPatternCell = (i: number, j: number): boolean => { ++ return ( ++ (i < 7 && j < 7) || ++ (i < 7 && j >= matrix.length - 7) || ++ (i >= matrix.length - 7 && j < 7) ++ ); ++ }; ++ ++ const getDetectionPatternOrigin = ( ++ i: number, ++ j: number ++ ): { row: number; col: number } | null => { ++ if (i < 7 && j < 7) return { row: 0, col: 0 }; ++ if (i < 7 && j >= matrix.length - 7) ++ return { row: 0, col: matrix.length - 7 }; ++ if (i >= matrix.length - 7 && j < 7) ++ return { row: matrix.length - 7, col: 0 }; ++ return null; ++ }; ++ ++ const useCustomEyeShape = eyeShape !== undefined || pupilShape !== undefined; ++ ++ const renderEye = (originRow: number, originCol: number): string => { ++ const padding = eyePatternGap / 2; ++ let eyePath = ''; ++ ++ // Eye frame (outer) - 7x7 cells area with 1 cell thick stroke ++ const outerX = originCol * cellSize + padding; ++ const outerY = originRow * cellSize + padding; ++ const outerSize = 7 * cellSize - eyePatternGap; ++ ++ // Inner cutout for the frame - 5x5 cells (creates 1 cell thick border) ++ const cutoutX = (originCol + 1) * cellSize + padding; ++ const cutoutY = (originRow + 1) * cellSize + padding; ++ const cutoutSize = 5 * cellSize - eyePatternGap; ++ ++ // Pupil - 3x3 cells centered ++ const pupilX = (originCol + 2) * cellSize + padding; ++ const pupilY = (originRow + 2) * cellSize + padding; ++ const pupilSize = 3 * cellSize - eyePatternGap; ++ ++ const currentEyeShape = eyeShape ?? 'square'; ++ const currentPupilShape = pupilShape ?? 'square'; ++ ++ // Render Eye frame based on shape ++ if (currentEyeShape === 'circle') { ++ const outerRadius = outerSize / 2; ++ const cutoutRadius = cutoutSize / 2; ++ const centerX = outerX + outerSize / 2; ++ const centerY = outerY + outerSize / 2; ++ // Outer circle ++ eyePath += `M${centerX - outerRadius} ${centerY} a${outerRadius},${outerRadius} 0 1,0 ${outerSize},0 a${outerRadius},${outerRadius} 0 1,0 -${outerSize},0 `; ++ // Inner cutout circle (reverse winding for cutout) ++ eyePath += `M${centerX - cutoutRadius} ${centerY} a${cutoutRadius},${cutoutRadius} 0 1,1 ${cutoutSize},0 a${cutoutRadius},${cutoutRadius} 0 1,1 -${cutoutSize},0 `; ++ } else if (currentEyeShape === 'rounded') { ++ const outerR = outerSize * 0.35; ++ const cutoutR = cutoutSize * 0.3; ++ // Outer rounded rect ++ eyePath += `M${outerX + outerR} ${outerY} H${outerX + outerSize - outerR} Q${outerX + outerSize} ${outerY} ${outerX + outerSize} ${outerY + outerR} V${outerY + outerSize - outerR} Q${outerX + outerSize} ${outerY + outerSize} ${outerX + outerSize - outerR} ${outerY + outerSize} H${outerX + outerR} Q${outerX} ${outerY + outerSize} ${outerX} ${outerY + outerSize - outerR} V${outerY + outerR} Q${outerX} ${outerY} ${outerX + outerR} ${outerY} Z `; ++ // Inner cutout rounded rect (reverse winding) ++ eyePath += `M${cutoutX + cutoutR} ${cutoutY} Q${cutoutX} ${cutoutY} ${cutoutX} ${cutoutY + cutoutR} V${cutoutY + cutoutSize - cutoutR} Q${cutoutX} ${cutoutY + cutoutSize} ${cutoutX + cutoutR} ${cutoutY + cutoutSize} H${cutoutX + cutoutSize - cutoutR} Q${cutoutX + cutoutSize} ${cutoutY + cutoutSize} ${cutoutX + cutoutSize} ${cutoutY + cutoutSize - cutoutR} V${cutoutY + cutoutR} Q${cutoutX + cutoutSize} ${cutoutY} ${cutoutX + cutoutSize - cutoutR} ${cutoutY} Z `; ++ } else { ++ // Square ++ eyePath += `M${outerX} ${outerY} H${outerX + outerSize} V${outerY + outerSize} H${outerX} Z `; ++ // Inner cutout (reverse winding) ++ eyePath += `M${cutoutX} ${cutoutY} V${cutoutY + cutoutSize} H${cutoutX + cutoutSize} V${cutoutY} Z `; + } -+ // Bottom-right corner -+ if (cellX > logoAreaX + logoAreaWidth - r && cellY > logoAreaY + logoAreaHeight - r) { -+ const dx = cellX - (logoAreaX + logoAreaWidth - r); -+ const dy = cellY - (logoAreaY + logoAreaHeight - r); -+ return dx * dx + dy * dy <= r * r; ++ ++ // Render Pupil based on shape ++ if (currentPupilShape === 'circle') { ++ const pupilRadius = pupilSize / 2; ++ const centerX = pupilX + pupilSize / 2; ++ const centerY = pupilY + pupilSize / 2; ++ eyePath += `M${centerX - pupilRadius} ${centerY} a${pupilRadius},${pupilRadius} 0 1,0 ${pupilSize},0 a${pupilRadius},${pupilRadius} 0 1,0 -${pupilSize},0`; ++ } else if (currentPupilShape === 'rounded') { ++ const pupilR = pupilSize * 0.25; ++ eyePath += `M${pupilX + pupilR} ${pupilY} H${pupilX + pupilSize - pupilR} Q${pupilX + pupilSize} ${pupilY} ${pupilX + pupilSize} ${pupilY + pupilR} V${pupilY + pupilSize - pupilR} Q${pupilX + pupilSize} ${pupilY + pupilSize} ${pupilX + pupilSize - pupilR} ${pupilY + pupilSize} H${pupilX + pupilR} Q${pupilX} ${pupilY + pupilSize} ${pupilX} ${pupilY + pupilSize - pupilR} V${pupilY + pupilR} Q${pupilX} ${pupilY} ${pupilX + pupilR} ${pupilY} Z`; ++ } else { ++ // Square ++ eyePath += `M${pupilX} ${pupilY} H${pupilX + pupilSize} V${pupilY + pupilSize} H${pupilX} Z`; + } -+ // Bottom-left corner -+ if (cellX < logoAreaX + r && cellY > logoAreaY + logoAreaHeight - r) { -+ const dx = cellX - (logoAreaX + r); -+ const dy = cellY - (logoAreaY + logoAreaHeight - r); -+ return dx * dx + dy * dy <= r * r; ++ ++ return eyePath; ++ }; ++ ++ const renderedEyes = new Set(); ++ ++ const renderVerticalPill = ( ++ col: number, ++ startRow: number, ++ endRow: number ++ ): string => { ++ const padding = gap / 2; ++ const x = col * cellSize + padding; ++ const yStart = startRow * cellSize + padding; ++ const yEnd = (endRow + 1) * cellSize - padding; ++ const width = cellSize - gap; ++ const radius = width / 2; ++ ++ return `M${x} ${yStart + radius} A${radius} ${radius} 0 0 1 ${x + width} ${yStart + radius} L${x + width} ${yEnd - radius} A${radius} ${radius} 0 0 1 ${x} ${yEnd - radius} Z`; ++ }; ++ ++ const handleEyeCell = (i: number, j: number): boolean => { ++ if (useCustomEyeShape) { ++ const origin = getDetectionPatternOrigin(i, j); ++ if (origin) { ++ const eyeKey = `${origin.row},${origin.col}`; ++ if (!renderedEyes.has(eyeKey)) { ++ renderedEyes.add(eyeKey); ++ path += renderEye(origin.row, origin.col); ++ } ++ return true; + } + } -+ + return false; - }; ++ }; ++ ++ if (shape === 'line') { ++ const processed = Array.from({ length: matrix.length }, () => ++ Array(matrix.length).fill(false) ++ ); ++ ++ for (let j = 0; j < matrix.length; j++) { ++ for (let i = 0; i < matrix.length; i++) { ++ if (matrix[i]![j] === 1 && !isLogoArea(i, j) && !processed[i]![j]) { ++ if (isDetectionPatternCell(i, j)) { ++ if (!handleEyeCell(i, j)) { ++ const corners = getCorners(i, j, true); ++ const neighbors = getNeighbors(i, j); ++ path += renderElement(corners, neighbors, i, j); ++ } ++ processed[i]![j] = true; ++ continue; ++ } ++ ++ let runEnd = i; ++ while ( ++ runEnd < matrix.length && ++ matrix[runEnd]![j] === 1 && ++ !isLogoArea(runEnd, j) && ++ !isDetectionPatternCell(runEnd, j) ++ ) { ++ processed[runEnd]![j] = true; ++ runEnd++; ++ } ++ ++ if (runEnd - i === 1) { ++ const corners = getCorners(i, j, false); ++ const effectiveCellSize = cellSize - gap; ++ path += `M${corners.center.x} ${corners.center.y} m-${effectiveCellSize / 2}, 0 a${effectiveCellSize / 2},${effectiveCellSize / 2} 0 1,0 ${effectiveCellSize},0 a${effectiveCellSize / 2},${effectiveCellSize / 2} 0 1,0 -${effectiveCellSize},0`; ++ } else { ++ path += renderVerticalPill(j, i, runEnd - 1); ++ } ++ } ++ } ++ } ++ } else { ++ matrix.forEach((row, i) => { ++ row.forEach((cell, j) => { ++ if (cell === 1 && !isLogoArea(i, j)) { ++ const isDetectionPattern = isDetectionPatternCell(i, j); ++ if (isDetectionPattern && handleEyeCell(i, j)) { ++ return; ++ } ++ const corners = getCorners(i, j, isDetectionPattern); ++ const neighbors = getNeighbors(i, j); ++ path += renderElement(corners, neighbors, i, j); ++ } ++ }); + }); +- }); ++ } - const renderElement = ( + return { + cellSize, diff --git a/node_modules/react-native-qrcode-skia/src/types.ts b/node_modules/react-native-qrcode-skia/src/types.ts -index 116ff71..b47a289 100644 +index 116ff71..985e2e6 100644 --- a/node_modules/react-native-qrcode-skia/src/types.ts +++ b/node_modules/react-native-qrcode-skia/src/types.ts -@@ -1,11 +1,11 @@ - import type { StyleProp, ViewStyle } from 'react-native'; - import type { ErrorCorrectionLevelType } from './qrcode/generate-matrix'; +@@ -3,9 +3,11 @@ import type { ErrorCorrectionLevelType } from './qrcode/generate-matrix'; import type { -- ShapeOptions, + ShapeOptions, BaseShapeOptions, -+ ShapeOptions, ++ EyeShapeOptions, ++ EyePupilShape, } from './qrcode/transform-matrix-into-path'; -export type { ShapeOptions, BaseShapeOptions }; -+export type { BaseShapeOptions, ShapeOptions }; ++export type { ShapeOptions, BaseShapeOptions, EyeShapeOptions, EyePupilShape }; /** * Represents a base shared value.