{
  "version": 3,
  "sources": ["/cdn/shop/t/83/assets/laley-vending-machine.js?lly=laley-custom-20260908-illustrations-v848"],
  "sourcesContent": ["/* ==========================================================================\n   Laley Vending Machine\n\n   Hjulene er utsnitt av maskin-illustrasjonen, ett utsnitt per rom i hylla.\n   Hver trekning: fritt rull -> hjulene bremser ett av gangen -> alle tre\n   lander med samme gave paa midtlinjen -> dialogen apner med gaven.\n\n   Gaven leveres av Klaviyo: e-posten meldes paa listen og en hendelse\n   sendes med gaven som egenskaper, sa en Flow kan sende den ut.\n\n   All konfigurasjon kommer fra seksjonens JSON. Ingen produkter,\n   priser eller noekler er hardkodet her.\n   ========================================================================== */\n\n(function () {\n  'use strict';\n\n  var MOUNTED = 'llyGmMounted';\n  /* Samme revision som kundeklubb-popupen bruker. Fra 2025-01-15 tar\n     /client/subscriptions/ imot en subscriptions-blokk, og det er DEN som\n     gjor samtykket til ekte Klaviyo-samtykke i stedet for bare en egenskap. */\n  var REVISION = '2025-01-15';\n\n  ready(function () {\n    var roots = document.querySelectorAll('[data-lly-gm]');\n    Array.prototype.forEach.call(roots, mount);\n  });\n\n  function ready(fn) {\n    if (document.readyState === 'loading') {\n      document.addEventListener('DOMContentLoaded', fn, { once: true });\n    } else {\n      fn();\n    }\n  }\n\n  function mount(root) {\n    if (root.dataset[MOUNTED] === 'true') return;\n\n    var cfg = readConfig(root);\n    if (!cfg || !cfg.prizes.length) return;\n\n    root.dataset[MOUNTED] = 'true';\n\n    var el = {\n      glass: root.querySelector('[data-lly-gm-glass]'),\n      won: root.querySelector('[data-lly-gm-won]'),\n      stage: root.querySelector('[data-lly-gm-stage]'),\n      reels: root.querySelector('[data-lly-gm-reels]'),\n      lever: root.querySelector('[data-lly-gm-lever]'),\n      leverLabel: root.querySelector('[data-lly-gm-lever-label]'),\n      status: root.querySelector('[data-lly-gm-status]'),\n      dialog: document.querySelector('[data-lly-gm-dialog=\"' + root.dataset.llyGmId + '\"]')\n    };\n    if (!el.glass || !el.reels || !el.lever || !el.dialog) return;\n\n    var dlg = {\n      card: el.dialog.querySelector('[data-lly-gm-card]'),\n      kicker: el.dialog.querySelector('[data-lly-gm-kicker]'),\n      colors: el.dialog.querySelector('[data-lly-gm-colors]'),\n      body: el.dialog.querySelector('[data-lly-gm-body]'),\n      art: el.dialog.querySelector('[data-lly-gm-art]'),\n      title: el.dialog.querySelector('[data-lly-gm-title]'),\n      value: el.dialog.querySelector('[data-lly-gm-value]'),\n      detail: el.dialog.querySelector('[data-lly-gm-detail]'),\n      reveal: el.dialog.querySelector('[data-lly-gm-reveal]'),\n      start: el.dialog.querySelector('[data-lly-gm-start]'),\n      form: el.dialog.querySelector('[data-lly-gm-form]'),\n      phone: el.dialog.querySelector('[data-lly-gm-phone]'),\n      email: el.dialog.querySelector('[data-lly-gm-email]'),\n      birthDay: el.dialog.querySelector('[data-lly-gm-birth-day]'),\n      birthMonth: el.dialog.querySelector('[data-lly-gm-birth-month]'),\n      consent: el.dialog.querySelector('[data-lly-gm-consent]'),\n      submit: el.dialog.querySelector('[data-lly-gm-submit]'),\n      see: el.dialog.querySelector('[data-lly-gm-see]'),\n      note: el.dialog.querySelector('[data-lly-gm-note]'),\n      code: el.dialog.querySelector('[data-lly-gm-code]'),\n      codeValue: el.dialog.querySelector('[data-lly-gm-code-value]'),\n      error: el.dialog.querySelector('[data-lly-gm-error]'),\n      close: el.dialog.querySelector('[data-lly-gm-close]')\n    };\n\n    var reduce = window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n    var SET = cfg.strips[0].length;\n\n    var busy = false;\n    var runId = 0;\n    var timers = [];\n    var anims = [];\n    var prize = null;\n    var sending = false;\n    var reveal = 0;\n\n    if (window.location.search.indexOf('nullstill=1') > -1) resetStore();\n\n    /* setPhase skriver data-lly-gm-spent paa maskinen, sa referansen maa\n       finnes foer den forste kallet. */\n    el.machine = root.querySelector('.lly-gm');\n\n    buildReels();\n    setPhase('ready');\n\n    var waiting = pendingPrize();\n    if (waiting) {\n      prize = waiting;\n      for (var w = 0; w < cfg.strips.length; w++) settleReel(w, SET, waiting);\n      setPhase('revealed');\n      showWon(waiting);\n      el.lever.disabled = false;\n      if (el.leverLabel) el.leverLabel.textContent = cfg.copy.leverClaim;\n      if (el.status) el.status.textContent = cfg.copy.statusPending;\n    } else if (!maySpin()) {\n      el.lever.disabled = true;\n      if (el.leverLabel) el.leverLabel.textContent = cfg.copy.leverSpent;\n      if (el.status) el.status.textContent = cfg.copy.statusSpent;\n    }\n\n    el.lever.addEventListener('click', handleLever);\n\n    /* hele maskinen er trykkflate: folk peker paa maskinen, ikke paa knappen */\n    if (el.machine) {\n      el.machine.addEventListener('click', function (e) {\n        if (e.target.closest && e.target.closest('[data-lly-gm-lever]')) return;\n        handleLever();\n      });\n    }\n    dlg.close.addEventListener('click', closeDialog);\n    el.dialog.addEventListener('click', function (e) {\n      if (e.target === el.dialog) closeDialog();\n    });\n    document.addEventListener('keydown', function (e) {\n      if (e.key === 'Escape' && el.dialog.classList.contains('is-open')) closeDialog();\n    });\n    if (dlg.form) dlg.form.addEventListener('submit', claim);\n\n    /* Steg 1 viser bare gaven. Skjemaet, og koden, kommer etter at man har\n       trykket hent. Uten dette kunne man hoppet over skjemaet og tatt koden. */\n    if (dlg.start) {\n      dlg.start.addEventListener('click', function () {\n        if (dlg.reveal) dlg.reveal.hidden = true;\n        if (dlg.form) dlg.form.hidden = false;\n        if (dlg.email) dlg.email.focus();\n      });\n    }\n\n    /* ---------------------------------------------------------------- data */\n\n    function readConfig(node) {\n      var holder = node.querySelector('[data-lly-gm-data]');\n      if (!holder) return null;\n      try {\n        var parsed = JSON.parse(holder.textContent);\n        if (!parsed || !parsed.prizes || !parsed.strips) return null;\n        return parsed;\n      } catch (err) {\n        return null;\n      }\n    }\n\n    /* --------------------------------------------------------------- hjul */\n\n    function spritePosition(key) {\n      var pos = cfg.symbols[key];\n      if (!pos) return '50% 50%';\n      var x = pos[0] / (cfg.sprite.w - cfg.sprite.cellW) * 100;\n      var y = pos[1] / (cfg.sprite.h - cfg.sprite.cellH) * 100;\n      return x + '% ' + y + '%';\n    }\n\n    function symbolMarkup(key) {\n      return '<div class=\"lly-gm__sym\" style=\"background-position:' + spritePosition(key) + '\"></div>';\n    }\n\n    /* et symbol paa hjulet er enten en gaves egen visning eller et rom i hylla */\n    function reelSymbol(key) {\n      return symbolMarkup(key);\n    }\n\n    function cellMarkup(key, extra) {\n      return '<div class=\"lly-gm__cell' + (extra ? ' ' + extra + '' : '') + '\">' + reelSymbol(key) + '</div>';\n    }\n\n    function buildReels() {\n      var html = '';\n      for (var r = 0; r < cfg.strips.length; r++) {\n        var strip = cfg.strips[r].concat(cfg.strips[r]);\n        var cells = '';\n        for (var c = 0; c < strip.length; c++) cells += cellMarkup(strip[c]);\n        html += '<div class=\"lly-gm__reel\"><div class=\"lly-gm__track stocked\" style=\"animation-duration:' +\n                rollMs(r) + 'ms\">' + cells + '</div></div>';\n      }\n      el.reels.innerHTML = html;\n    }\n\n    function tracks() {\n      return el.reels.querySelectorAll('.lly-gm__track');\n    }\n\n    function rollMs(index) {\n      return cfg.tempo.roll + index * cfg.tempo.step;\n    }\n\n    function setPhase(next) {\n      el.glass.className = 'lly-gm__glass lly-gm--' + next;\n      el.stage.className = 'lly-gm__stage ' + (next === 'rolling' ? 'is-rolling' : (prize ? 'is-won' : 'is-stocked'));\n      el.glass.setAttribute('aria-busy', next === 'rolling' ? 'true' : 'false');\n      if (el.machine) el.machine.setAttribute('data-lly-gm-spent', maySpin() ? 'false' : 'true');\n    }\n\n    function offsetOf(track) {\n      var value = getComputedStyle(track).transform;\n      if (!value || value === 'none') return 0;\n      try {\n        return Math.max(0, -new DOMMatrixReadOnly(value).m42);\n      } catch (err) {\n        return 0;\n      }\n    }\n\n    /* ---------------------------------------------------------- tidsstyring */\n\n    function wait(ms) {\n      return new Promise(function (resolve) {\n        var id = window.setTimeout(function () { resolve(true); }, ms);\n        timers.push(function () { window.clearTimeout(id); resolve(false); });\n      });\n    }\n\n    function clearTimers() {\n      timers.forEach(function (cancel) {\n        try { typeof cancel === 'function' ? cancel() : window.clearTimeout(cancel); } catch (err) {}\n      });\n      timers = [];\n    }\n\n    function cancelAnims() {\n      anims.forEach(function (a) { try { a.cancel(); } catch (err) {} });\n      anims = [];\n    }\n\n    /* ------------------------------------------------------------- trekning */\n\n    function handleLever() {\n      var waiting = pendingPrize();\n      if (waiting) {\n        prize = waiting;\n        showWon(waiting);\n        openDialog(waiting);\n        return;\n      }\n      spin();\n    }\n\n    function spin() {\n      if (busy) return;\n      if (!maySpin()) {\n        if (el.status) el.status.textContent = cfg.copy.statusSpent;\n        el.lever.disabled = true;\n        return;\n      }\n\n      var run = ++runId;\n      var alive = function () { return run === runId; };\n\n      busy = true;\n      try {\n        closeDialog(true);\n        clearWon();\n        cancelAnims();\n        clearTimers();\n      } catch (err) {\n        busy = false;\n        return;\n      }\n\n      prize = null;\n      buildReels();\n      setPhase('rolling');\n\n      el.lever.disabled = true;\n      if (el.leverLabel) el.leverLabel.textContent = cfg.copy.leverRolling;\n      if (el.status) el.status.textContent = cfg.copy.statusRolling;\n\n      var won = drawPrize();\n      if (!won) { busy = false; return; }\n\n      if (reduce) {\n        land(won, [SET, SET, SET]);\n        return;\n      }\n\n      var list = tracks();\n      for (var i = 0; i < list.length; i++) {\n        list[i].classList.remove('stocked');\n        list[i].classList.add('moving');\n      }\n\n      var rows = [];\n\n      /* om nettleseren fryser animasjonene, for eksempel i en skjult fane,\n         skal trekningen likevel lande */\n      var guard = window.setTimeout(function () {\n        if (alive() && !prize) land(won, rows);\n      }, cfg.tempo.cruise + cfg.tempo.stagger * list.length + 5000);\n      timers.push(function () { window.clearTimeout(guard); });\n\n      wait(cfg.tempo.cruise).then(function () {\n        if (!alive()) return null;\n        var jobs = [];\n        for (var n = 0; n < list.length; n++) {\n          jobs.push(function (index) {\n            return wait(index * cfg.tempo.stagger).then(function () {\n              if (!alive()) return null;\n              return stopReel(list[index], index, won, run).then(function (row) { rows[index] = row; });\n            });\n          }(n));\n        }\n        return Promise.all(jobs);\n      }).then(function () {\n        return alive() ? wait(180) : null;\n      }).then(function () {\n        if (!alive() || prize) return;\n        window.clearTimeout(guard);\n        land(won, rows);\n      });\n    }\n\n    /* vektet trekning: 50 prosent skal vaere sjelden, og en vekt paa 0 trekkes aldri */\n    /* Merk: dette er en hoeflighetssperre paa enheten, ikke en sikkerhetsgrense.\n       Den ekte grensen er en gave per profil, og den settes i Klaviyo-flowen. */\n    function store(key, value) {\n      try {\n        if (value === undefined) return window.localStorage.getItem('llyGm:v2:' + key);\n        window.localStorage.setItem('llyGm:v2:' + key, value);\n      } catch (err) {}\n      return null;\n    }\n\n    /* ?nullstill=1 toemmer maskinens minne i denne nettleseren.\n       Brukes til testing, og av support naar en kunde sier maskinen er laast. */\n    function resetStore() {\n      try {\n        ['spins', 'claimed', 'pending'].forEach(function (key) {\n          window.localStorage.removeItem('llyGm:v2:' + key);\n        });\n      } catch (err) {}\n    }\n\n    function spinsUsed() {\n      return parseInt(store('spins') || '0', 10) || 0;\n    }\n\n    function maySpin() {\n      if (store('claimed') === '1' && cfg.limits.lockAfterClaim) return false;\n      if (pendingPrize()) return false;\n      if (!cfg.limits.spins) return true;\n      return spinsUsed() < cfg.limits.spins;\n    }\n\n    /* En trekning som har landet uten at gaven er hentet, er ikke brukt opp.\n       Gaven ligger og venter, og spaken henter den fram igjen. */\n    function pendingPrize() {\n      if (store('claimed') === '1') return null;\n      var key = store('pending');\n      if (!key) return null;\n      for (var i = 0; i < cfg.prizes.length; i++) {\n        if (cfg.prizes[i].key === key) return cfg.prizes[i];\n      }\n      return null;\n    }\n\n    function drawPrize() {\n      var pool = cfg.prizes.filter(function (p) { return (p.weight || 0) > 0; });\n      if (!pool.length) return cfg.prizes[0] || null;\n      var total = pool.reduce(function (sum, p) { return sum + p.weight; }, 0);\n      var roll = Math.random() * total;\n      for (var i = 0; i < pool.length; i++) {\n        roll -= pool[i].weight;\n        if (roll <= 0) return pool[i];\n      }\n      return pool[pool.length - 1];\n    }\n\n    function stopReel(track, index, won, run) {\n      return new Promise(function (resolve) {\n        if (run !== runId) { resolve(0); return; }\n\n        var first = track.firstElementChild;\n        var cell = first ? first.getBoundingClientRect().height : 0;\n        if (!cell) { resolve(SET); return; }\n\n        var from = offsetOf(track);\n        var row = Math.floor(from / cell) + cfg.tempo.ahead;\n        var strip = cfg.strips[index].concat(cfg.strips[index]);\n        var middle = row + 1;\n        if (middle >= strip.length) {\n          row = strip.length - 3;\n          middle = row + 1;\n        }\n\n        /* gaven legges paa midtcellen for hjulet lander der */\n        var cells = track.children;\n        if (cells[middle]) cells[middle].innerHTML = symbolMarkup(won.key);\n\n        var fromCss = 'translateY(-' + from + 'px)';\n        var toCss = 'translateY(-' + (row * cell) + 'px)';\n\n        track.classList.remove('moving');\n        track.style.animation = 'none';\n        track.style.transform = fromCss;\n\n        var speed = SET * cell / rollMs(index);\n        var duration = cfg.tempo.decel * (row * cell - from) / speed;\n\n        if (!duration || typeof track.animate !== 'function') {\n          track.style.transform = toCss;\n          resolve(row);\n          return;\n        }\n\n        var anim = track.animate(\n          [{ transform: fromCss }, { transform: toCss }],\n          { duration: duration, easing: 'cubic-bezier(.333333,.666667,.666667,1)', fill: 'forwards' }\n        );\n        anims.push(anim);\n        anim.finished.catch(function () {}).then(function () {\n          track.style.transform = toCss;\n          try { anim.cancel(); } catch (err) {}\n          resolve(row);\n        });\n      });\n    }\n\n    function settleReel(index, row, won) {\n      var strip = cfg.strips[index];\n      var above = strip[row % strip.length];\n      var below = strip[(row + 2) % strip.length];\n      var reel = el.reels.children[index];\n      if (!reel) return;\n      reel.className = 'lly-gm__reel matched';\n      reel.innerHTML = '<div class=\"lly-gm__settled\">' +\n        cellMarkup(above, 'lly-gm__ghost') +\n        cellMarkup(won.key, 'lly-gm__win') +\n        cellMarkup(below, 'lly-gm__ghost') +\n        '</div>';\n    }\n\n    function land(won, rows) {\n      prize = won;\n      /* Trekningen telles her, ikke naar hjulene starter. Lastet noen siden\n         paa nytt midt i rullingen, brant spillet uten at de fikk en gave. */\n      store('pending', won.key);\n      store('spins', spinsUsed() + 1);\n      for (var i = 0; i < cfg.strips.length; i++) settleReel(i, rows[i] || SET, won);\n      setPhase('revealed');\n\n      el.lever.disabled = false;\n      if (el.leverLabel) el.leverLabel.textContent = cfg.copy.leverClaim;\n      if (el.status) el.status.textContent = cfg.copy.statusWon.replace('[gave]', won.title);\n\n      busy = false;\n\n      showWon(won);\n\n      reveal = window.setTimeout(function () { openDialog(won); }, reduce ? 0 : WIN_HOLD);\n      timers.push(function () { window.clearTimeout(reveal); });\n    }\n\n    /* --------------------------------------------------------------- dialog */\n\n    /* Galleri: vinneren skal kunne bla gjennom produktbildene og se hva plagget er.\n       Dobbeltoppforinger lukes ut ved aa sammenligne stien foran spormaalet. */\n    function galleryMarkup(won) {\n      var seen = {};\n      var kilde = (won.images && won.images.length) ? won.images : (won.image ? [won.image] : []);\n      var shots = kilde.filter(function (url) {\n        if (!url) return false;\n        var key = String(url).split('?')[0];\n        if (seen[key]) return false;\n        seen[key] = true;\n        return true;\n      });\n\n      if (!shots.length) return '';\n\n      if (shots.length === 1) {\n        return '<img src=\"' + shots[0] + '\" alt=\"' + escapeAttr(won.title) + '\" width=\"420\" height=\"420\" loading=\"lazy\">';\n      }\n\n      var slides = shots.map(function (url, i) {\n        return '<div class=\"lly-gm-shots__slide\"><img src=\"' + url + '\" alt=\"' +\n               escapeAttr(won.title) + ' ' + (i + 1) + '\" loading=\"lazy\"></div>';\n      }).join('');\n\n      var dots = shots.map(function (url, i) {\n        return '<button type=\"button\" class=\"lly-gm-shots__dot' + (i ? '' : ' is-on') +\n               '\" data-lly-gm-dot=\"' + i + '\" aria-label=\"Bilde ' + (i + 1) + '\"></button>';\n      }).join('');\n\n      return '<div class=\"lly-gm-shots\" data-lly-gm-shots>' +\n             '<div class=\"lly-gm-shots__strip\" data-lly-gm-strip>' + slides + '</div>' +\n             '<button type=\"button\" class=\"lly-gm-shots__arrow lly-gm-shots__arrow--prev\" data-lly-gm-shot-prev aria-label=\"Forrige bilde\"></button>' +\n             '<button type=\"button\" class=\"lly-gm-shots__arrow lly-gm-shots__arrow--next\" data-lly-gm-shot-next aria-label=\"Neste bilde\"></button>' +\n             '</div>' +\n             '<div class=\"lly-gm-shots__dots\">' + dots + '</div>';\n    }\n\n    function bindGallery() {\n      var shots = dlg.art.querySelector('[data-lly-gm-shots]');\n      if (!shots) return;\n      var strip = shots.querySelector('[data-lly-gm-strip]');\n      var dots = Array.prototype.slice.call(dlg.art.querySelectorAll('[data-lly-gm-dot]'));\n      if (!strip) return;\n\n      function index() {\n        return Math.round(strip.scrollLeft / Math.max(1, strip.clientWidth));\n      }\n      function go(i) {\n        strip.scrollTo({ left: i * strip.clientWidth, behavior: reduce ? 'auto' : 'smooth' });\n      }\n      function paint() {\n        var at = index();\n        dots.forEach(function (d, i) { d.classList.toggle('is-on', i === at); });\n      }\n\n      strip.addEventListener('scroll', function () {\n        window.clearTimeout(strip._t);\n        strip._t = window.setTimeout(paint, 60);\n      });\n      dots.forEach(function (d, i) { d.addEventListener('click', function () { go(i); }); });\n      var prev = dlg.art.querySelector('[data-lly-gm-shot-prev]');\n      var next = dlg.art.querySelector('[data-lly-gm-shot-next]');\n      if (prev) prev.addEventListener('click', function () { go(Math.max(0, index() - 1)); });\n      if (next) next.addEventListener('click', function () { go(Math.min(dots.length - 1, index() + 1)); });\n    }\n\n\n    /* Fargevelgeren i gave-popupen. Markupen er produktkortets egen\n       (product-item__color-swatch fra laley-product-card.css), sa det finnes\n       bare ett fargeuttrykk i butikken. Elementet er en knapp og ikke en\n       lenke: her skal fargen VELGES i kortet, ikke apne produktsiden, og\n       innlosningslenken folger valget. */\n    function paintColors(won) {\n      if (!dlg.colors) return;\n      var list = won.colors || [];\n      if (list.length < 2) {\n        dlg.colors.innerHTML = '';\n        dlg.colors.hidden = true;\n        return;\n      }\n      var rows = list.map(function (c, i) {\n        var on = c.aktiv ? ' is-active' : '';\n        return '<button type=\"button\" class=\"product-item__color-swatch' + on + '\" role=\"radio\"' +\n               ' aria-checked=\"' + (c.aktiv ? 'true' : 'false') + '\"' +\n               ' aria-label=\"' + escapeAttr((c.aktiv ? cfg.copy.colorChosen : cfg.copy.colorShow) + ' ' + c.label) + '\"' +\n               ' data-lly-gm-color=\"' + i + '\">' +\n               '<span class=\"product-item__color-swatch-dot swatches\" style=\"--swatch: ' +\n               escapeAttr(c.hex) + '\" aria-hidden=\"true\"></span></button>';\n      }).join('');\n      dlg.colors.innerHTML = '<span class=\"product-item__farger\">' +\n        '<span class=\"product-item__color-swatches\" role=\"radiogroup\" aria-label=\"' +\n        escapeAttr(cfg.copy.colorGroup) + '\">' + rows + '</span></span>';\n      dlg.colors.hidden = false;\n\n      Array.prototype.forEach.call(dlg.colors.querySelectorAll('[data-lly-gm-color]'), function (btn) {\n        btn.addEventListener('click', function () {\n          var valgt = list[parseInt(btn.getAttribute('data-lly-gm-color'), 10)];\n          if (!valgt) return;\n          list.forEach(function (c) { c.aktiv = c === valgt; });\n          won.claim = valgt.claim;\n          won.url = valgt.url;\n          won.images = valgt.images || won.images;\n          won.image = valgt.image || won.image;\n          won.image_abs = absolutt(valgt.image) || won.image_abs;\n          won.farge = valgt.label;\n          dlg.art.innerHTML = galleryMarkup(won);\n          bindGallery();\n          paintColors(won);\n          if (dlg.see) dlg.see.href = won.claim || won.url || '#';\n        });\n      });\n    }\n\n    /* Gaven blir staaende og vugge inne i maskinens skjerm. Den forsvinner\n       forst naar maskinen trekkes paa nytt, sa den staar der ogsaa etter at\n       produktkortet er lukket. */\n    var WIN_HOLD = 2200;\n\n    function showWon(won) {\n      if (!el.won) return;\n      var illu = (won && (won.illustration || won.image)) || '';\n      if (!illu) return;\n      el.won.innerHTML =\n        '<img class=\"lly-gm__won-art\" src=\"' + escapeAttr(illu) + '\" alt=\"\">' +\n        '<p class=\"lly-gm__won-text\">' +\n        '<span class=\"lly-gm__won-label\">' + escapeAttr(cfg.copy.wonGlass || '') + '</span>' +\n        '<span class=\"lly-gm__won-name\">' + escapeAttr(won.title || '') + '</span>' +\n        '</p>';\n      el.won.hidden = false;\n      if (el.glass) el.glass.classList.add('lly-gm--won');\n      /* Kortet kommer om et par sekunder. Hent forste produktbilde na, sa det\n         ikke er det forste man venter pa etterpa. */\n      if (won.images && won.images[0]) new Image().src = won.images[0];\n    }\n\n    function clearWon() {\n      if (!el.won) return;\n      el.won.hidden = true;\n      el.won.innerHTML = '';\n      if (el.glass) el.glass.classList.remove('lly-gm--won');\n    }\n\n    function openDialog(won) {\n      /* Trykker noen \u00ABFaa gaven min\u00BB foer ventetiden er ute, skal ikke timeren\n         etterpaa aapne kortet paa nytt og nullstille skjemaet de fyller ut. */\n      window.clearTimeout(reveal);\n\n      dlg.kicker.textContent = won.lead || cfg.copy.kicker;\n      dlg.kicker.hidden = true;\n      var forvalgt = (won.colors || []).filter(function (c) { return c.aktiv; })[0];\n      if (forvalgt && !won.farge) won.farge = forvalgt.label;\n      dlg.art.innerHTML = galleryMarkup(won);\n      bindGallery();\n      paintColors(won);\n      dlg.title.textContent = won.title;\n      dlg.value.textContent = won.value;\n      dlg.detail.textContent = won.detail || '';\n      dlg.detail.hidden = !won.detail;\n\n      if (dlg.see) {\n        var target = won.claim || won.url;\n        dlg.see.href = target || '#';\n        dlg.see.textContent = won.code ? cfg.copy.seeWithCode : cfg.copy.see;\n        dlg.see.hidden = true;\n      }\n      if (dlg.reveal) dlg.reveal.hidden = false;\n      if (dlg.form) dlg.form.hidden = true;\n      if (dlg.consent) dlg.consent.checked = false;\n      if (dlg.note) dlg.note.hidden = true;\n      if (dlg.code) dlg.code.hidden = true;\n      if (dlg.error) dlg.error.hidden = true;\n      if (dlg.submit) {\n        dlg.submit.disabled = false;\n        dlg.submit.textContent = cfg.copy.claim;\n      }\n\n      el.dialog.classList.add('is-open');\n      el.dialog.setAttribute('aria-hidden', 'false');\n      /* Tvungen reflow, saa visibility faktisk er visible foer vi flytter\n         fokus. Et element i en skjult gren kan ikke ta fokus, og stilen fra\n         linja over er ikke beregnet enna. */\n      void el.dialog.offsetHeight;\n      lockScroll();\n      /* Steg 1-knappen er det eneste synlige fokuserbare elementet naar kortet\n         aapner. E-postfeltet ligger i et hidden skjema, og fokus paa noe i en\n         display:none-gren gjoer ingenting. Fokus maa vente en ramme: dialogen\n         gaar fra visibility:hidden i samme blokk, og et element i en skjult\n         gren kan ikke ta fokus. */\n      if (dlg.start) dlg.start.focus();\n    }\n\n    function closeDialog(silent) {\n      el.dialog.classList.remove('is-open');\n      el.dialog.setAttribute('aria-hidden', 'true');\n      unlockScroll();\n      if (!silent) {\n        var tilbake = el.lever.disabled ? el.machine : el.lever;\n        if (tilbake) tilbake.focus();\n      }\n    }\n\n    /* Bakgrunnen skal ikke kunne scrolles bak kortet. Temaet har \u00E9n laas for\n       dette; alle andre Laley-overlays bruker den. Eierskapssjekken er samme\n       moenster som laley-panel.js, sa vi ikke laaser opp en laas vi ikke eier. */\n    var laast = false;\n    var eierLaas = false;\n\n    function lockScroll() {\n      if (laast) return;\n      laast = true;\n      eierLaas = !document.documentElement.hasAttribute('data-scroll-locked');\n      if (!eierLaas) return;\n      document.dispatchEvent(new CustomEvent('theme:scroll:lock', {\n        bubbles: true,\n        detail: dlg.card\n      }));\n    }\n\n    function unlockScroll() {\n      if (!laast) return;\n      laast = false;\n      if (!eierLaas) return;\n      eierLaas = false;\n      document.dispatchEvent(new CustomEvent('theme:scroll:unlock', { bubbles: true }));\n    }\n\n    /* --------------------------------------------------------------- Klaviyo */\n\n    function normalisePhone(raw) {\n      var value = String(raw || '').replace(/[\\s()\\-.]/g, '');\n      if (!value) return '';\n      if (value.indexOf('00') === 0) value = '+' + value.slice(2);\n      if (value.charAt(0) !== '+') {\n        value = value.replace(/^0+/, '');\n        value = /^\\d{8}$/.test(value) ? '+47' + value : '+' + value;\n      }\n      return /^\\+\\d{8,15}$/.test(value) ? value : '';\n    }\n\n    function pad(value) {\n      var n = String(parseInt(value, 10) || 0);\n      return n.length < 2 ? '0' + n : n;\n    }\n\n    function claim(event) {\n      event.preventDefault();\n      if (sending || !prize) return;\n\n      var phone = normalisePhone(dlg.phone && dlg.phone.value);\n      var email = dlg.email ? (dlg.email.value || '').trim() : '';\n      var day = dlg.birthDay ? dlg.birthDay.value : '';\n      var month = dlg.birthMonth ? dlg.birthMonth.value : '';\n\n      if (!/^[^\\s@]+@[^\\s@]+\\.[^\\s@]{2,}$/.test(email)) {\n        showError(cfg.copy.errorEmail);\n        if (dlg.email) dlg.email.focus();\n        return;\n      }\n      if (!day || !month) {\n        showError(cfg.copy.errorBirthday);\n        if (dlg.birthDay) dlg.birthDay.focus();\n        return;\n      }\n      if (!phone) {\n        showError(cfg.copy.errorPhone);\n        if (dlg.phone) dlg.phone.focus();\n        return;\n      }\n      if (dlg.consent && !dlg.consent.checked) {\n        showError(cfg.copy.errorConsent);\n        dlg.consent.focus();\n        return;\n      }\n\n      var profile = {\n        email: email,\n        properties: {\n          'Gavemaskinen gave': prize.title,\n          'Gavemaskinen verdi': prize.value,\n          'Gavemaskinen hentet': new Date().toISOString(),\n          Bursdag: pad(day) + '.' + pad(month),\n          Bursdagsdag: parseInt(day, 10),\n          Bursdagsmaned: parseInt(month, 10),\n          Kilde: cfg.klaviyo.source,\n          /* Klaviyo registrerer e-postsamtykket selv. SMS-samtykket kan den\n             ikke registrere for den norske avsenderen er godkjent, sa det\n             dokumenteres her og kan konverteres til ekte samtykke etterpa. */\n          'Samtykke e-post': true,\n          'Samtykke SMS': true\n        }\n      };\n      if (phone) profile.phone_number = phone;\n\n      sending = true;\n      dlg.submit.disabled = true;\n      dlg.submit.textContent = cfg.copy.claimSending;\n      if (dlg.error) dlg.error.hidden = true;\n\n      Promise.all([subscribe(profile), trackEvent(profile, prize)]).then(function (results) {\n        sending = false;\n        if (!results.every(Boolean)) {\n          dlg.submit.disabled = false;\n          dlg.submit.textContent = cfg.copy.claim;\n          showError(cfg.copy.errorSend);\n          return;\n        }\n        store('claimed', '1');\n        store('pending', '');\n        dlg.form.hidden = true;\n        if (dlg.see) dlg.see.hidden = !prize.claim && !prize.url;\n        if (dlg.code && dlg.codeValue && prize.code) {\n          dlg.codeValue.textContent = prize.code;\n          dlg.code.hidden = false;\n        }\n        dlg.kicker.textContent = cfg.copy.kickerDone;\n        dlg.kicker.hidden = false;\n        if (dlg.note) {\n          var note = cfg.copy.note;\n          if (prize.code && cfg.copy.deadline) note += ' ' + cfg.copy.deadline;\n          dlg.note.textContent = note;\n          dlg.note.hidden = false;\n        }\n        if (el.status) el.status.textContent = cfg.copy.statusClaimed;\n        if (cfg.limits.lockAfterClaim) {\n          el.lever.disabled = true;\n          if (el.leverLabel) el.leverLabel.textContent = cfg.copy.leverSpent;\n        }\n      });\n    }\n\n    function showError(message) {\n      if (!dlg.error) return;\n      dlg.error.textContent = message;\n      dlg.error.hidden = false;\n    }\n\n    function klaviyoPost(path, payload) {\n      if (!cfg.klaviyo.companyId) return Promise.resolve(false);\n      return fetch('https://a.klaviyo.com/client/' + path + '/?company_id=' + encodeURIComponent(cfg.klaviyo.companyId), {\n        method: 'POST',\n        headers: { 'Content-Type': 'application/json', revision: REVISION },\n        body: JSON.stringify(payload),\n        keepalive: true\n      }).then(function (res) {\n        return res.ok;\n      }).catch(function () {\n        return false;\n      });\n    }\n\n    /* Samtykket i skjemaet gjelder begge kanaler og registreres som ekte\n       Klaviyo-samtykke, samme moenster som kundeklubb-popupen. SMS settes\n       bare naar det finnes et nummer \u2014 Klaviyo avviser SMS-samtykke uten. */\n    function subscribe(profile) {\n      if (!cfg.klaviyo.listId) return Promise.resolve(true);\n\n      var attrs = {};\n      for (var key in profile) {\n        if (Object.prototype.hasOwnProperty.call(profile, key)) attrs[key] = profile[key];\n      }\n      attrs.subscriptions = { email: { marketing: { consent: 'SUBSCRIBED' } } };\n      if (attrs.phone_number) {\n        attrs.subscriptions.sms = { marketing: { consent: 'SUBSCRIBED' } };\n      }\n\n      return klaviyoPost('subscriptions', {\n        data: {\n          type: 'subscription',\n          attributes: {\n            custom_source: cfg.klaviyo.source,\n            profile: { data: { type: 'profile', attributes: attrs } }\n          },\n          relationships: { list: { data: { type: 'list', id: cfg.klaviyo.listId } } }\n        }\n      });\n    }\n\n    function trackEvent(profile, won) {\n      if (!cfg.klaviyo.metric) return Promise.resolve(true);\n      return klaviyoPost('events', {\n        data: {\n          type: 'event',\n          attributes: {\n            properties: {\n              Gave: won.title,\n              Verdi: won.value,\n              Detalj: won.detail || '',\n              Farge: won.farge || '',\n              Produktlenke: won.url || '',\n              Innlosningslenke: absolutt(won.claim || won.url),\n              Kode: won.code || '',\n              Frist: won.code ? (cfg.copy.deadline || '') : '',\n              Bilde: absolutt(won.image_abs || won.image),\n              Rabatt: won.percent || '',\n              Kilde: cfg.klaviyo.source\n            },\n            metric: { data: { type: 'metric', attributes: { name: cfg.klaviyo.metric } } },\n            profile: { data: { type: 'profile', attributes: profile } }\n          }\n        }\n      });\n    }\n\n    /* Klaviyo-e-posten trenger absolutte URL-er */\n    function absolutt(url) {\n      if (!url) return '';\n      if (url.indexOf('//') === 0) return 'https:' + url;\n      if (url.indexOf('http') === 0) return url;\n      return 'https://' + window.location.host + url;\n    }\n\n    function escapeAttr(value) {\n      return String(value).replace(/&/g, '&amp;').replace(/\"/g, '&quot;').replace(/</g, '&lt;');\n    }\n  }\n})();\n"],
  "mappings": "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",
  "names": ["waiting"]
}
