{
  "version": 3,
  "sources": ["/cdn/shop/t/19/assets/tac-stock-planner-halloween.js?tac_build=stock-planner-pass4-20261020a"],
  "sourcesContent": ["// Each scene runs for eight seconds, followed by fifteen seconds of quiet.\nconst SLOT_MS = 23_000;\nconst EVENT_MS = 8_000;\nconst INITIAL_DELAY_MS = 15_000;\nconst EVENTS = Object.freeze(['bats', 'pumpkin', 'skeleton', 'witch']);\n\nfunction normalizedElapsed(value) {\n  const elapsed = Number(value);\n  return Number.isFinite(elapsed) && elapsed > 0 ? elapsed : 0;\n}\n\nexport function halloweenEventAt(elapsedMs) {\n  const elapsed = normalizedElapsed(elapsedMs);\n  if (elapsed < INITIAL_DELAY_MS) {\n    return Object.freeze({ name: 'idle', elapsedMs: 0, untilNextMs: INITIAL_DELAY_MS - elapsed });\n  }\n\n  const sequenceElapsed = elapsed - INITIAL_DELAY_MS;\n  const slotElapsed = sequenceElapsed % SLOT_MS;\n  const slotIndex = Math.floor(sequenceElapsed / SLOT_MS) % EVENTS.length;\n  if (slotElapsed >= EVENT_MS) {\n    return Object.freeze({ name: 'idle', elapsedMs: 0, untilNextMs: SLOT_MS - slotElapsed });\n  }\n  return Object.freeze({ name: EVENTS[slotIndex], elapsedMs: slotElapsed, untilNextMs: EVENT_MS - slotElapsed });\n}\n\nexport function applyHalloweenEvent(section, layer, phase) {\n  const name = EVENTS.includes(phase?.name) ? phase.name : 'idle';\n  const offset = name === 'idle' ? 0 : Math.max(0, Math.min(EVENT_MS, Number(phase.elapsedMs) || 0));\n  section.dataset.halloweenEvent = name;\n  layer.dataset.halloweenEvent = name;\n  section.style.setProperty('--tac-event-offset', `${-offset}ms`);\n  layer.style.setProperty('--tac-event-offset', `${-offset}ms`);\n}\n\nexport function createHalloweenSequence(section, options = {}) {\n  const layer = section?.querySelector?.('[data-halloween-layer]');\n  if (!layer) throw new Error('Missing Halloween animation layer');\n\n  const now = options.now || (() => performance.now());\n  const schedule = options.schedule || ((callback, delay) => globalThis.setTimeout(callback, delay));\n  const cancel = options.cancel || ((timer) => globalThis.clearTimeout(timer));\n  const hidden = options.hidden || (() => document.visibilityState === 'hidden');\n  const reducedMotion = options.reducedMotion || globalThis.matchMedia?.('(prefers-reduced-motion: reduce)');\n  const startedAt = now();\n  let timer = null;\n  let destroyed = false;\n\n  const clearTimer = () => {\n    if (timer !== null) cancel(timer);\n    timer = null;\n  };\n\n  const refresh = () => {\n    clearTimer();\n    if (destroyed) return;\n    if (hidden() || reducedMotion?.matches) {\n      applyHalloweenEvent(section, layer, { name: 'idle', elapsedMs: 0 });\n      return;\n    }\n    const phase = halloweenEventAt(now() - startedAt);\n    applyHalloweenEvent(section, layer, phase);\n    timer = schedule(refresh, Math.max(16, Math.ceil(phase.untilNextMs) + 16));\n  };\n\n  const onVisibility = () => refresh();\n  const onMotion = () => refresh();\n  if (typeof document !== 'undefined') document.addEventListener('visibilitychange', onVisibility);\n  if (reducedMotion?.addEventListener) reducedMotion.addEventListener('change', onMotion);\n  else reducedMotion?.addListener?.(onMotion);\n  refresh();\n\n  return Object.freeze({\n    refresh,\n    phaseAt: (elapsedMs) => halloweenEventAt(elapsedMs),\n    destroy() {\n      destroyed = true;\n      clearTimer();\n      if (typeof document !== 'undefined') document.removeEventListener('visibilitychange', onVisibility);\n      if (reducedMotion?.removeEventListener) reducedMotion.removeEventListener('change', onMotion);\n      else reducedMotion?.removeListener?.(onMotion);\n      applyHalloweenEvent(section, layer, { name: 'idle', elapsedMs: 0 });\n    },\n  });\n}\n\nexport function mountHalloweenExperience(section) {\n  if (!section || section.dataset.halloweenMounted === 'true') return section?.__tacHalloweenController || null;\n  const controller = createHalloweenSequence(section);\n  section.dataset.halloweenMounted = 'true';\n  section.__tacHalloweenController = controller;\n  return controller;\n}\n\nif (typeof document !== 'undefined') {\n  document.querySelectorAll('[data-tac-stock-planner]').forEach((section) => {\n    try { mountHalloweenExperience(section); }\n    catch { section.dataset.halloweenMounted = 'failed'; }\n  });\n}\n"],
  "mappings": "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",
  "names": ["timer"]
}
