{
  "version": 3,
  "sources": ["../../../static_src/js/pages/lineup-constellation.js"],
  "sourcesContent": ["// lineup-constellation.js \u2014 line-up SEM hor\u00E1rio: o evento no meio e os artistas\n// flutuando ligados a ele por fios brilhantes (rosa \u2192 violeta), com um raiozinho de\n// energia viajando do centro pra cada artista. Read-only (n\u00E3o seleciona nada).\n// Espelha a constela\u00E7\u00E3o do p\u00FAblico. CSP-safe: posi\u00E7\u00E3o via CSSOM, zero inline.\nconst PINK = [255, 45, 155];\nconst VIOLET = [162, 107, 255];\n\nfunction mix(t) {\n  t = t < 0 ? 0 : t > 1 ? 1 : t;\n  const r = (PINK[0] + (VIOLET[0] - PINK[0]) * t) | 0;\n  const g = (PINK[1] + (VIOLET[1] - PINK[1]) * t) | 0;\n  const b = (PINK[2] + (VIOLET[2] - PINK[2]) * t) | 0;\n  return `rgb(${r},${g},${b})`;\n}\n\nfunction init() {\n  const root = document.querySelector('[data-lineup-constellation]');\n  if (!root) return;\n  const canvas = root.querySelector('[data-lc-lines]');\n  const ctx = canvas.getContext('2d');\n  const center = root.querySelector('[data-center]');\n  const reduce = matchMedia('(prefers-reduced-motion: reduce)').matches;\n\n  const items = [...root.querySelectorAll('[data-node]')].map((el, i) => ({\n    el,\n    phase: i * 0.7,\n    pulse: (i % 5) / 5, // desencontra os raios de energia entre os fios\n    bx: 0,\n    by: 0,\n    x: 0,\n    y: 0,\n  }));\n\n  let W = 0;\n  let H = 0;\n  let cx = 0;\n  let cy = 0;\n  let t = 0;\n  let raf = 0;\n\n  function layout() {\n    const dpr = Math.min(window.devicePixelRatio || 1, 2);\n    W = root.clientWidth;\n    H = root.clientHeight;\n    canvas.width = Math.round(W * dpr);\n    canvas.height = Math.round(H * dpr);\n    ctx.setTransform(dpr, 0, 0, dpr, 0, 0);\n    cx = W / 2;\n    cy = H / 2;\n    center.style.left = `${cx}px`;\n    center.style.top = `${cy}px`;\n    // phyllotaxis (girassol): espalha bonito e sem sobrepor demais\n    const n = items.length;\n    const golden = Math.PI * (3 - Math.sqrt(5));\n    const maxR = Math.min(W, H) * 0.42;\n    const minR = Math.min(W, H) * 0.16;\n    items.forEach((it, i) => {\n      const frac = n > 1 ? i / (n - 1) : 0;\n      const r = minR + (maxR - minR) * Math.sqrt(frac);\n      const a = i * golden;\n      it.bx = cx + Math.cos(a) * r;\n      it.by = cy + Math.sin(a) * r * 0.82;\n    });\n  }\n\n  function frame() {\n    t += 0.016;\n    ctx.clearRect(0, 0, W, H);\n    for (const it of items) {\n      it.x = it.bx + (reduce ? 0 : Math.cos(t * 0.6 + it.phase) * 6);\n      it.y = it.by + (reduce ? 0 : Math.sin(t * 0.5 + it.phase) * 6);\n      it.el.style.left = `${it.x}px`;\n      it.el.style.top = `${it.y}px`;\n      const col = mix((it.x / W + it.y / H) / 2);\n      // fio base\n      ctx.strokeStyle = col;\n      ctx.shadowColor = col;\n      ctx.shadowBlur = 6;\n      ctx.globalAlpha = 0.22 + Math.sin(t * 2 + it.phase) * 0.06;\n      ctx.lineWidth = 1;\n      ctx.beginPath();\n      ctx.moveTo(cx, cy);\n      ctx.lineTo(it.x, it.y);\n      ctx.stroke();\n      // raiozinho de energia viajando do centro pro artista\n      if (!reduce) {\n        const p = ((t * 0.45 + it.pulse) % 1);\n        const ex = cx + (it.x - cx) * p;\n        const ey = cy + (it.y - cy) * p;\n        ctx.globalAlpha = 1 - Math.abs(p - 0.5) * 1.4; // some nas pontas\n        ctx.shadowBlur = 12;\n        ctx.fillStyle = col;\n        ctx.beginPath();\n        ctx.arc(ex, ey, 2.4, 0, Math.PI * 2);\n        ctx.fill();\n      }\n    }\n    ctx.shadowBlur = 0;\n    ctx.globalAlpha = 1;\n    if (!reduce) raf = requestAnimationFrame(frame);\n  }\n\n  let rt;\n  window.addEventListener('resize', () => {\n    clearTimeout(rt);\n    rt = setTimeout(() => {\n      layout();\n      if (reduce) frame();\n    }, 150);\n  });\n\n  layout();\n  frame();\n  document.addEventListener('visibilitychange', () => {\n    cancelAnimationFrame(raf);\n    if (!document.hidden && !reduce) frame();\n  });\n}\n\ninit();\n"],
  "mappings": "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",
  "names": ["PINK", "VIOLET", "mix", "t", "r", "g", "b", "init", "root", "canvas", "ctx", "center", "reduce", "items", "el", "i", "W", "H", "cx", "cy", "raf", "layout", "dpr", "n", "golden", "maxR", "minR", "it", "frac", "a", "frame", "col", "p", "ex", "ey", "rt"]
}
