{
  "version": 3,
  "sources": ["../../javascripts/social-buttons.js", "../../javascripts/custom.js", "../../javascripts/gallery-lightbox.js", "../../javascripts/gallery-map.js", "../../javascripts/main.js"],
  "sourcesContent": ["/* For social buttons */\ndocument.addEventListener('click', function(event) {\n  var btn = event.target.closest('.btn-popup');\n  if (!btn) {\n    return;\n  }\n  event.preventDefault();\n  PopupCenter( btn.getAttribute('href'), \"share\", 600, 300 );\n});\n\nfunction PopupCenter(url, title, w, h) {\n    // Fixes dual-screen position                         Most browsers      Firefox\n    var dualScreenLeft = window.screenLeft != undefined ? window.screenLeft : screen.left;\n    var dualScreenTop = window.screenTop != undefined ? window.screenTop : screen.top;\n\n    width = window.innerWidth ? window.innerWidth : document.documentElement.clientWidth ? document.documentElement.clientWidth : screen.width;\n    height = window.innerHeight ? window.innerHeight : document.documentElement.clientHeight ? document.documentElement.clientHeight : screen.height;\n\n    var left = ((width / 2) - (w / 2)) + dualScreenLeft;\n    var top = ((height / 2) - (h / 2)) + dualScreenTop;\n    var newWindow = window.open(url, title, 'scrollbars=yes, width=' + w + ', height=' + h + ', top=' + top + ', left=' + left);\n\n    // Puts focus on the newWindow\n    if (window.focus) {\n        newWindow.focus();\n    }\n}\n\n", "var cbpAnimatedHeader = (function() {\n  if (location.pathname != '/') {\n    return\n  }\n  var docElem = document.documentElement,\n      header = document.querySelector('.cbp-af-header'),\n      didScroll = false,\n      changeHeaderOn = 300;\n  function init() {\n    scrollPage();\n    window.addEventListener( 'scroll', function( event ) {\n      if( !didScroll ) {\n        didScroll = true;\n        setTimeout( scrollPage, 200 );\n      }\n    }, false );\n  }\n  function scrollPage() {\n    var sy = scrollY();\n    if (header) {\n      header.classList.toggle('cbp-af-header-shrink', sy >= changeHeaderOn);\n    }\n    didScroll = false;\n  }\n  function scrollY() {\n    return window.pageYOffset || docElem.scrollTop;\n  }\n  init();\n})();\n", "(function () {\n  var overlay = null;\n  var shareBtn = null;\n  var sharePanel = null;\n  var infoBar = null;\n  var captionBar = null;\n  var items = [];\n  var currentIndex = -1;\n  var pushedState = false;\n  var currentPostTitle = '';\n\n  // Same icons/colors/behavior as source/_share_buttons.html.slim, so the\n  // lightbox's share popup matches the buttons already used on every post.\n  // .btn-popup is handled by the existing global listener in social-buttons.js.\n  var SHARE_OPTIONS = [\n    {\n      name: 'Facebook', color: '#3b5998', extraClass: 'btn-popup', target: '_blank',\n      viewBox: '0 0 512 512',\n      path: 'M512 256C512 114.6 397.4 0 256 0S0 114.6 0 256C0 376 82.7 476.8 194.2 504.5V334.2H141.4V256h52.8V222.3c0-87.1 39.4-127.5 125-127.5c16.2 0 44.2 3.2 55.7 6.4V172c-6-.6-16.5-1-29.6-1c-42 0-58.2 15.9-58.2 57.2V256h83.6l-14.4 78.2H287V510.1C413.8 494.8 512 386.9 512 256h0z',\n      hrefFor: function (url) { return 'https://facebook.com/sharer/sharer.php?u=' + encodeURIComponent(url); }\n    },\n    {\n      name: 'Twitter', color: '#55acee', extraClass: 'btn-popup', target: '_blank',\n      viewBox: '0 0 512 512',\n      path: 'M389.2 48h70.6L305.6 224.2 487 464H345L233.7 318.6 106.5 464H35.8L200.7 275.5 26.8 48H172.4L272.9 180.9 389.2 48zM364.4 421.8h39.1L151.1 88h-42L364.4 421.8z',\n      hrefFor: function (url) { return 'https://twitter.com/intent/tweet/?url=' + encodeURIComponent(url); }\n    },\n    {\n      name: 'LinkedIn', color: '#0077b5', extraClass: '', target: null,\n      viewBox: '0 0 448 512',\n      path: 'M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3zM135.4 416H69V202.2h66.5V416zm-33.2-243c-21.3 0-38.5-17.3-38.5-38.5S80.9 96 102.2 96c21.2 0 38.5 17.3 38.5 38.5 0 21.3-17.2 38.5-38.5 38.5zm282.1 243h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9V416z',\n      hrefFor: function (url, title) {\n        return 'https://www.linkedin.com/shareArticle?mini=true&url=' + encodeURIComponent(url) + '&title=' + encodeURIComponent(title) + '&source=' + encodeURIComponent(url);\n      }\n    },\n    {\n      name: 'E-Mail', color: '#5e5e5e', extraClass: 'window-popup', target: '_blank',\n      viewBox: '0 0 512 512',\n      path: 'M48 64C21.5 64 0 85.5 0 112c0 15.1 7.1 29.3 19.2 38.4L236.8 313.6c11.4 8.5 27 8.5 38.4 0L492.8 150.4c12.1-9.1 19.2-23.3 19.2-38.4c0-26.5-21.5-48-48-48H48zM0 176V384c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V176L294.4 339.2c-22.8 17.1-54 17.1-76.8 0L0 176z',\n      hrefFor: function (url, title) { return 'mailto:?subject=' + encodeURIComponent('Cowholio4: ' + title) + '&body=' + encodeURIComponent(url); }\n    }\n  ];\n\n  function buildSharePanel() {\n    var panel = document.createElement('div');\n    panel.className = 'lightbox-share-panel join w-full';\n    panel.setAttribute('role', 'group');\n\n    SHARE_OPTIONS.forEach(function (opt) {\n      var a = document.createElement('a');\n      a.className = 'join-item btn grow text-white ' + opt.extraClass;\n      a.style.backgroundColor = opt.color;\n      a.style.borderColor = opt.color;\n      a.setAttribute('aria-label', opt.name);\n      if (opt.target) a.target = opt.target;\n      a.innerHTML = '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"' + opt.viewBox + '\" class=\"h-5 w-5 fill-current\" aria-hidden=\"true\" focusable=\"false\"><path d=\"' + opt.path + '\"></path></svg>';\n      a.addEventListener('click', function () {\n        panel.classList.remove('open');\n      });\n      panel.appendChild(a);\n    });\n\n    return panel;\n  }\n\n  function toggleSharePanel() {\n    var opening = !sharePanel.classList.contains('open');\n    if (opening) {\n      var url = location.href;\n      Array.prototype.forEach.call(sharePanel.children, function (a, i) {\n        a.href = SHARE_OPTIONS[i].hrefFor(url, currentPostTitle);\n      });\n    }\n    sharePanel.classList.toggle('open', opening);\n  }\n\n  function buildOverlay() {\n    overlay = document.createElement('div');\n    overlay.id = 'gallery-lightbox';\n\n    var img = document.createElement('img');\n    overlay.appendChild(img);\n\n    shareBtn = document.createElement('button');\n    shareBtn.type = 'button';\n    shareBtn.className = 'lightbox-share';\n    shareBtn.setAttribute('aria-label', 'Share this photo');\n    shareBtn.innerHTML = '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\" class=\"h-5 w-5 fill-current\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M352 224c53 0 96-43 96-96s-43-96-96-96s-96 43-96 96c0 4 .2 8 .7 11.9l-94.1 47.1c-17.4-14.5-39.9-23-64.6-23c-53 0-96 43-96 96s43 96 96 96c24.7 0 47.2-8.5 64.6-23l94.1 47.1c-.5 3.9-.7 7.9-.7 11.9c0 53 43 96 96 96s96-43 96-96s-43-96-96-96c-24.7 0-47.2 8.5-64.6 23l-94.1-47.1c.5-3.9 .7-7.9 .7-11.9s-.2-8-.7-11.9l94.1-47.1c17.4 14.5 39.9 23 64.6 23z\"></path></svg>';\n    shareBtn.addEventListener('click', function (e) {\n      e.stopPropagation();\n      toggleSharePanel();\n    });\n    overlay.appendChild(shareBtn);\n\n    sharePanel = buildSharePanel();\n    overlay.appendChild(sharePanel);\n\n    var closeBtn = document.createElement('button');\n    closeBtn.type = 'button';\n    closeBtn.className = 'lightbox-close';\n    closeBtn.setAttribute('aria-label', 'Close');\n    closeBtn.textContent = '\u00D7';\n    closeBtn.addEventListener('click', close);\n    overlay.appendChild(closeBtn);\n\n    var prevBtn = document.createElement('button');\n    prevBtn.type = 'button';\n    prevBtn.className = 'lightbox-prev';\n    prevBtn.setAttribute('aria-label', 'Previous photo');\n    prevBtn.textContent = '\u2039';\n    prevBtn.addEventListener('click', function (e) {\n      e.stopPropagation();\n      navigate(-1);\n    });\n    overlay.appendChild(prevBtn);\n\n    var nextBtn = document.createElement('button');\n    nextBtn.type = 'button';\n    nextBtn.className = 'lightbox-next';\n    nextBtn.setAttribute('aria-label', 'Next photo');\n    nextBtn.textContent = '\u203A';\n    nextBtn.addEventListener('click', function (e) {\n      e.stopPropagation();\n      navigate(1);\n    });\n    overlay.appendChild(nextBtn);\n\n    var metaBar = document.createElement('div');\n    metaBar.className = 'lightbox-meta';\n    overlay.appendChild(metaBar);\n\n    captionBar = document.createElement('div');\n    captionBar.className = 'lightbox-caption';\n    metaBar.appendChild(captionBar);\n\n    infoBar = document.createElement('div');\n    infoBar.className = 'lightbox-info';\n    metaBar.appendChild(infoBar);\n\n    overlay.addEventListener('click', function (e) {\n      if (e.target === overlay) close();\n    });\n\n    document.body.appendChild(overlay);\n  }\n\n  // The photo's own caption from Immich (data-description), distinct from\n  // the camera/location/GPS metadata pill below it.\n  function updateCaption(link) {\n    var description = link.getAttribute('data-description');\n    captionBar.textContent = description || '';\n    captionBar.classList.toggle('open', !!description);\n  }\n\n  // Camera model, reverse-geocoded location, and GPS coordinates, when\n  // Immich has them for this photo (bin/immich_gallery_sync writes camera\n  // and GPS into the image files themselves; location is Immich-only and\n  // exposes them here via data-camera/data-location/data-gps-lat/data-gps-lng).\n  function updateInfoBar(link) {\n    infoBar.innerHTML = '';\n    var hasContent = false;\n\n    var camera = link.getAttribute('data-camera');\n    if (camera) {\n      var cameraSpan = document.createElement('span');\n      cameraSpan.className = 'lightbox-info-camera';\n      cameraSpan.textContent = camera;\n      infoBar.appendChild(cameraSpan);\n      hasContent = true;\n    }\n\n    var location = link.getAttribute('data-location');\n    if (location) {\n      if (hasContent) {\n        var locationSep = document.createElement('span');\n        locationSep.className = 'lightbox-info-sep';\n        locationSep.textContent = ' \u00B7 ';\n        infoBar.appendChild(locationSep);\n      }\n      var locationSpan = document.createElement('span');\n      locationSpan.className = 'lightbox-info-location';\n      locationSpan.textContent = location;\n      infoBar.appendChild(locationSpan);\n      hasContent = true;\n    }\n\n    var lat = link.getAttribute('data-gps-lat');\n    var lng = link.getAttribute('data-gps-lng');\n    if (lat && lng) {\n      if (hasContent) {\n        var sep = document.createElement('span');\n        sep.className = 'lightbox-info-sep';\n        sep.textContent = ' \u00B7 ';\n        infoBar.appendChild(sep);\n      }\n      var latNum = parseFloat(lat);\n      var lngNum = parseFloat(lng);\n      var gpsLink = document.createElement('a');\n      gpsLink.className = 'lightbox-info-gps';\n      gpsLink.href = 'https://www.google.com/maps?q=' + latNum + ',' + lngNum;\n      gpsLink.target = '_blank';\n      gpsLink.rel = 'noopener';\n      gpsLink.textContent = latNum.toFixed(5) + ', ' + lngNum.toFixed(5);\n      infoBar.appendChild(gpsLink);\n      hasContent = true;\n    }\n\n    infoBar.classList.toggle('open', hasContent);\n  }\n\n  // Fires once per photo shown in the lightbox (open, prev/next, deep link,\n  // or back/forward through the pushed history entries) so GA sees a view\n  // for each photo rather than just once per gallery visit.\n  function trackView(link) {\n    if (typeof gtag !== 'function') return;\n    gtag('event', 'select_content', {\n      content_type: 'gallery_photo',\n      item_id: link.id || link.getAttribute('href'),\n      item_name: currentPostTitle || document.title\n    });\n  }\n\n  // Each gallery item's permanent link is its own id (\"photo-<asset-id>\"),\n  // set by the gallery generator. Opening/navigating updates location.hash\n  // to match via the History API, so a photo can be linked to directly.\n  function show(index, push) {\n    if (!overlay) buildOverlay();\n    currentIndex = index;\n    sharePanel.classList.remove('open');\n\n    var link = items[currentIndex];\n    overlay.querySelector('img').setAttribute('src', link.getAttribute('href'));\n    overlay.classList.add('open');\n    document.body.style.overflow = 'hidden';\n    updateCaption(link);\n    updateInfoBar(link);\n    trackView(link);\n\n    if (link.id) {\n      if (push) {\n        pushedState = true;\n        history.pushState({ lightboxPhoto: link.id }, '', '#' + link.id);\n      } else {\n        history.replaceState({ lightboxPhoto: link.id }, '', '#' + link.id);\n      }\n    }\n  }\n\n  function hideOverlay() {\n    if (!overlay) return;\n    overlay.classList.remove('open');\n    sharePanel.classList.remove('open');\n    captionBar.classList.remove('open');\n    infoBar.classList.remove('open');\n    document.body.style.overflow = '';\n    currentIndex = -1;\n    pushedState = false;\n  }\n\n  function close() {\n    if (!overlay || !overlay.classList.contains('open')) return;\n\n    if (pushedState) {\n      // Undoes the single history entry pushed on open; the resulting\n      // popstate event calls hideOverlay() once the URL is back to normal.\n      pushedState = false;\n      history.back();\n    } else {\n      // Reached this photo via a direct permalink (no entry to pop) \u2014\n      // just strip the hash in place.\n      history.replaceState(null, '', location.pathname + location.search);\n      hideOverlay();\n    }\n  }\n\n  function navigate(delta) {\n    if (currentIndex === -1 || items.length === 0) return;\n    var nextIndex = (currentIndex + delta + items.length) % items.length;\n    show(nextIndex, false);\n  }\n\n  function openLink(link, push) {\n    var grid = link.closest('.gallery-grid');\n\n    // Posts are also rendered in full on the home page and blog index, so\n    // this grid isn't necessarily on the post's own page. When it isn't,\n    // send the browser to the real post instead of faking a lightbox here \u2014\n    // that's what keeps the permalink meaningful from anywhere it's clicked.\n    var postUrl = grid ? grid.getAttribute('data-post-url') : null;\n    if (postUrl && postUrl !== location.pathname) {\n      location.href = postUrl + '#' + link.id;\n      return;\n    }\n\n    currentPostTitle = (grid && grid.getAttribute('data-post-title')) || document.title;\n    items = grid ? Array.prototype.slice.call(grid.querySelectorAll('a.gallery-item')) : [link];\n    show(items.indexOf(link), push);\n  }\n\n  function openById(id, push) {\n    var link = document.getElementById(id);\n    if (!link || !link.classList.contains('gallery-item')) return false;\n    openLink(link, push);\n    return true;\n  }\n\n  document.addEventListener('click', function (e) {\n    var link = e.target.closest ? e.target.closest('a.gallery-item') : null;\n    if (!link) return;\n\n    e.preventDefault();\n    openLink(link, true);\n  });\n\n  document.addEventListener('click', function (e) {\n    if (!sharePanel || !sharePanel.classList.contains('open')) return;\n    if (sharePanel.contains(e.target) || shareBtn.contains(e.target)) return;\n    sharePanel.classList.remove('open');\n  });\n\n  document.addEventListener('keydown', function (e) {\n    if (!overlay || !overlay.classList.contains('open')) return;\n\n    if (e.key === 'Escape') close();\n    if (e.key === 'ArrowLeft') navigate(-1);\n    if (e.key === 'ArrowRight') navigate(1);\n  });\n\n  window.addEventListener('popstate', function () {\n    var id = location.hash.slice(1);\n    if (!id || !openById(id, false)) hideOverlay();\n  });\n\n  // Deep link: open straight to the photo named in the URL on page load.\n  if (location.hash) openById(location.hash.slice(1), false);\n})();\n", "(function () {\n  var LEAFLET_VERSION = '1.9.4';\n  var LEAFLET_BASE = 'https://unpkg.com/leaflet@' + LEAFLET_VERSION + '/dist/';\n  var leafletPromise = null;\n\n  // Loaded from a CDN rather than bundled into main.js: Leaflet is only\n  // needed on the (few) pages showing a geotagged gallery, and only once the\n  // map toggle is actually clicked, so most page loads never pay for it.\n  function loadLeaflet() {\n    if (window.L) return Promise.resolve(window.L);\n    if (leafletPromise) return leafletPromise;\n\n    leafletPromise = new Promise(function (resolve, reject) {\n      var link = document.createElement('link');\n      link.rel = 'stylesheet';\n      link.href = LEAFLET_BASE + 'leaflet.css';\n      document.head.appendChild(link);\n\n      var script = document.createElement('script');\n      script.src = LEAFLET_BASE + 'leaflet.js';\n      script.onload = function () {\n        resolve(window.L);\n      };\n      script.onerror = reject;\n      document.head.appendChild(script);\n    });\n\n    return leafletPromise;\n  }\n\n  function geotaggedItems(grid) {\n    return Array.prototype.slice.call(grid.querySelectorAll('a.gallery-item[data-gps-lat][data-gps-lng]'));\n  }\n\n  // A plain L.Icon (rather than L.Icon.Default.mergeOptions) so the absolute\n  // CDN URLs are used as-is \u2014 Icon.Default._getIconUrl prepends its own\n  // auto-detected CDN base path even when you override iconUrl, producing a\n  // duplicated/broken URL.\n  function buildMarkerIcon(L) {\n    return new L.Icon({\n      iconUrl: LEAFLET_BASE + 'images/marker-icon.png',\n      iconRetinaUrl: LEAFLET_BASE + 'images/marker-icon-2x.png',\n      shadowUrl: LEAFLET_BASE + 'images/marker-shadow.png',\n      iconSize: [25, 41],\n      iconAnchor: [12, 41],\n      popupAnchor: [1, -34],\n      shadowSize: [41, 41]\n    });\n  }\n\n  function buildMap(L, mapEl, items) {\n    var map = L.map(mapEl);\n    L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {\n      maxZoom: 19,\n      attribution: '&copy; <a href=\"https://www.openstreetmap.org/copyright\" target=\"_blank\" rel=\"noopener\">OpenStreetMap</a> contributors'\n    }).addTo(map);\n\n    var icon = buildMarkerIcon(L);\n    var markers = items.map(function (link) {\n      var lat = parseFloat(link.getAttribute('data-gps-lat'));\n      var lng = parseFloat(link.getAttribute('data-gps-lng'));\n      var img = link.querySelector('img');\n      var marker = L.marker([lat, lng], { icon: icon }).addTo(map);\n\n      if (img) {\n        var popupImg = document.createElement('img');\n        popupImg.src = img.src;\n        popupImg.alt = '';\n        popupImg.className = 'w-32 h-32 object-cover rounded cursor-pointer';\n        popupImg.addEventListener('click', function () {\n          link.click();\n        });\n        // Leaflet auto-sizes the popup to the content's measured width, which\n        // defaults to a 50px floor (minWidth) \u2014 too narrow for our 128px\n        // (w-32) square thumbnail, squishing it into a tall sliver via the\n        // img's max-width:100%. Force the floor up to fit the image.\n        marker.bindPopup(popupImg, { minWidth: 136 });\n      }\n\n      return marker;\n    });\n\n    map.fitBounds(L.featureGroup(markers).getBounds().pad(0.2));\n    return map;\n  }\n\n  function initGrid(grid) {\n    var items = geotaggedItems(grid);\n    if (items.length === 0) return;\n\n    var toggle = document.createElement('a');\n    toggle.href = '#';\n    toggle.className = 'gallery-map-toggle link link-primary text-sm inline-block mb-2';\n    toggle.textContent = 'Map view';\n    grid.parentNode.insertBefore(toggle, grid);\n\n    var mapEl = document.createElement('div');\n    mapEl.className = 'gallery-map not-prose rounded my-6';\n    mapEl.style.display = 'none';\n    grid.parentNode.insertBefore(mapEl, grid);\n\n    var map = null;\n    var showingMap = false;\n\n    toggle.addEventListener('click', function (e) {\n      e.preventDefault();\n      showingMap = !showingMap;\n      toggle.textContent = showingMap ? 'Grid view' : 'Map view';\n      grid.style.display = showingMap ? 'none' : '';\n      mapEl.style.display = showingMap ? '' : 'none';\n\n      if (!showingMap) return;\n\n      if (!map) {\n        loadLeaflet().then(function (L) {\n          map = buildMap(L, mapEl, items);\n        });\n      } else {\n        map.invalidateSize();\n      }\n    });\n  }\n\n  Array.prototype.slice.call(document.querySelectorAll('.gallery-grid')).forEach(initGrid);\n})();\n", "require('./social-buttons.js')\nrequire('./custom.js')\nrequire('./gallery-lightbox.js')\nrequire('./gallery-map.js')\n"],
  "mappings": "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",
  "names": ["location"]
}
