{
  "version": 3,
  "sources": ["/cdn/shop/t/28/assets/piv-lesson-search.js?cb=245621"],
  "sourcesContent": ["/* Adds \"Courses & lessons\" (Learning Center lessons) to the header autocomplete and to the /search results page.\n   Shopify's header dropdown and /search page do not return articles, so the lessons come from the alternate\n   template templates/search.plc.liquid (JSON of lesson matches only): /search?q=<term>&type=article&view=plc.\n   Which blogs count as courses is set in snippets/piv-plc-blogs.liquid. Same pattern as piv-event-search.js. */\n(function () {\n  var cache = {};\n\n  function esc(s) {\n    return String(s == null ? '' : s).replace(/[&<>\"']/g, function (c) {\n      return { '&': '&amp;', '<': '&lt;', '>': '&gt;', '\"': '&quot;', \"'\": '&#39;' }[c];\n    });\n  }\n  function addStyles() {\n    if (document.getElementById('piv-lesson-search-css')) return;\n    var st = document.createElement('style');\n    st.id = 'piv-lesson-search-css';\n    st.textContent =\n      '.piv-lessons-group{padding:0 0 1rem;margin-bottom:.5rem;border-bottom:.1rem solid rgba(var(--color-base-text),.08)}' +\n      '.piv-ls-meta{display:block;font-size:1.2rem;opacity:.7;margin-top:.2rem}' +\n      '.piv-lesson-results{margin:2rem auto;max-width:var(--page-width,120rem);padding:0 1.5rem}' +\n      '.piv-lesson-results ul{list-style:none;margin:1rem 0 0;padding:0}' +\n      '.piv-lesson-results li{padding:.9rem 0;border-bottom:.1rem solid rgba(var(--color-base-text),.1)}' +\n      '.piv-lesson-results h2{color:rgb(var(--color-secondary-heading))}' +\n      '.piv-lesson-results a{color:rgb(var(--color-base-heading));font-weight:500;text-decoration:underline;text-underline-offset:.3rem}' +\n      '.piv-lesson-results a:hover{opacity:.8}' +\n      '.piv-lesson-results .piv-ls-meta{font-size:1.3rem}' +\n      '.piv-lesson-results .piv-ls-excerpt{margin:.4rem 0 0;font-size:1.4rem;line-height:1.5}' +\n      '.piv-lesson-results .piv-ls-note{font-size:1.3rem;opacity:.7;margin-top:1rem}';\n    document.head.appendChild(st);\n  }\n  function withHl(url, term) {\n    return url + (url.indexOf('?') > -1 ? '&' : '?') + 'hl=' + encodeURIComponent(term);\n  }\n  function fetchPage(term, p) {\n    return fetch('/search?q=' + encodeURIComponent(term) + '&type=article&view=plc&page=' + p)\n      .then(function (r) { if (!r.ok) throw new Error(r.status); return r.json(); });\n  }\n\n  /* ---------- header autocomplete ---------- */\n  function lookup(term) {\n    var key = term.toLowerCase();\n    if (!cache[key]) {\n      cache[key] = fetchPage(term, 1).catch(function () { delete cache[key]; return { lessons: [], total: 0, pages: 1 }; });\n    }\n    return cache[key];\n  }\n  function inject(container, term, stillCurrent) {\n    if (!container || !term) return Promise.resolve();\n    addStyles();\n    return lookup(term).then(function (d) {\n      if (stillCurrent && !stillCurrent()) return;   // the user kept typing, or closed the dropdown\n      var old = container.querySelector('.piv-lessons-group');\n      if (old) old.remove();\n      var lessons = d.lessons || [];\n      if (!lessons.length) return;\n      var shown = lessons.slice(0, 5);\n      var items = shown.map(function (l, i) {\n        return '<li id=\"predictive-search-option-lesson-' + (i + 1) + '\" class=\"predictive-search__list-item\" role=\"option\" aria-selected=\"false\">' +\n          '<a href=\"' + esc(withHl(l.u, term)) + '\" class=\"predictive-search__item link link--text\" tabindex=\"-1\">' +\n          '<div class=\"predictive-search__item-content predictive-search__item-content--centered\">' +\n          '<p class=\"predictive-search__item-heading h6\">' + esc(l.t) + (l.c ? '<span class=\"piv-ls-meta\">' + esc(l.c) + '</span>' : '') + '</p>' +\n          '</div></a></li>';\n      }).join('');\n      var more = (lessons.length > shown.length || d.pages > 1)\n        ? '<li class=\"predictive-search__list-item\"><a class=\"predictive-search__item link link--text\" tabindex=\"-1\" href=\"/search?q=' +\n          encodeURIComponent(term) + '\"><div class=\"predictive-search__item-content predictive-search__item-content--centered\"><p class=\"predictive-search__item-heading h6\">See all lessons</p></div></a></li>'\n        : '';\n      var wrap = document.createElement('div');\n      wrap.className = 'piv-lessons-group predictive-search__result-group piv-grp piv-grp--lessons';\n      wrap.innerHTML = '<div><h2 id=\"predictive-search-lessons\" class=\"predictive-search__heading\">Courses &amp; Lessons</h2>' +\n        '<ul class=\"predictive-search__results-list list-unstyled\" role=\"group\" aria-labelledby=\"predictive-search-lessons\">' + items + more + '</ul></div>';\n      var ev = container.querySelector('.piv-events-group');   // events (if present) stay on top, lessons follow\n      if (ev) container.insertBefore(wrap, ev.nextSibling);\n      else container.insertBefore(wrap, container.firstChild);\n    });\n  }\n\n  /* ---------- /search results page ---------- */\n  var MAX_PAGES = 4;   // 50 article hits per page, so up to 200 hits are scanned for lessons\n  var SHOW = 40;\n  function collect(term, page, acc) {\n    return fetchPage(term, page).then(function (d) {\n      acc.lessons = acc.lessons.concat(d.lessons || []);\n      acc.pages = d.pages || 1;\n      if (page < Math.min(acc.pages, MAX_PAGES)) return collect(term, page + 1, acc);\n      acc.more = acc.pages > MAX_PAGES;\n      return acc;\n    });\n  }\n  function renderResultsPage(acc, term) {\n    var anchor = document.getElementById('ProductGridContainer');\n    if (!anchor || !acc.lessons.length) return;\n    addStyles();\n    var box = document.createElement('div');\n    box.className = 'piv-lesson-results';\n    var shown = acc.lessons.slice(0, SHOW);\n    var count = acc.lessons.length + (acc.more ? '+' : '');\n    box.innerHTML = '<h2 class=\"h4\">Courses &amp; Lessons (' + count + ')</h2><ul>' +\n      shown.map(function (l) {\n        return '<li><a href=\"' + esc(withHl(l.u, term)) + '\">' + esc(l.t) + '</a>' +\n          (l.c ? '<span class=\"piv-ls-meta\">' + esc(l.c) + '</span>' : '') +\n          (l.x ? '<p class=\"piv-ls-excerpt\">' + esc(l.x) + '</p>' : '') + '</li>';\n      }).join('') + '</ul>' +\n      (acc.lessons.length > shown.length ? '<p class=\"piv-ls-note\">Showing the first ' + shown.length + '. Add more words to narrow the list.</p>' : '');\n    anchor.parentNode.insertBefore(box, anchor);\n    // Shopify's own result cards can show the same lessons: make their links carry the search words too\n    var paths = acc.lessons.map(function (l) { return l.u.split('?')[0]; });\n    document.querySelectorAll('a[href]').forEach(function (a) {\n      try {\n        var u = new URL(a.getAttribute('href'), location.origin);\n        if (paths.indexOf(u.pathname) > -1 && !u.searchParams.has('hl')) a.setAttribute('href', withHl(u.pathname, term));\n      } catch (e) { /* ignore odd hrefs */ }\n    });\n  }\n  function resultsPage() {\n    var q = new URLSearchParams(location.search).get('q');\n    if (!q) return;\n    collect(q, 1, { lessons: [], pages: 1, more: false }).then(function (acc) { renderResultsPage(acc, q); }).catch(function () { /* the search page still works without the group */ });\n  }\n\n  window.pivLessonSearch = { inject: inject };\n  if (/^\\/search\\/?$/.test(location.pathname)) {\n    if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', resultsPage);\n    else resultsPage();\n  }\n})();\n"],
  "mappings": "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",
  "names": []
}
