window.balloonCanvas = { resizeToIframe: function () { const iframe = document.querySelector("iframe"); const canvas = document.getElementById("balloonCanvas"); if (!iframe || !canvas) return; const rect = iframe.getBoundingClientRect(); canvas.width = rect.width; canvas.height = rect.height; }, clear: function () { const canvas = document.getElementById("balloonCanvas"); if (!canvas) return; const ctx = canvas.getContext("2d"); ctx.clearRect(0, 0, canvas.width, canvas.height); }, draw: function (balloons) { const canvas = document.getElementById("balloonCanvas"); if (!canvas) return; const ctx = canvas.getContext("2d"); ctx.clearRect(0, 0, canvas.width, canvas.height); balloons.forEach(b => { const x = b.x * canvas.width; const y = b.y * canvas.height; ctx.beginPath(); ctx.arc(x, y, 12, 0, 2 * Math.PI); ctx.fillStyle = b.selected ? "#ffe5e5" : "#ffffff"; ctx.strokeStyle = "#000000"; ctx.lineWidth = 2; ctx.fill(); ctx.stroke(); ctx.fillStyle = "#000000"; ctx.font = "12px Arial"; ctx.textAlign = "center"; ctx.textBaseline = "middle"; ctx.fillText(b.number.toString(), x, y); }); } };