{
  "version": 3,
  "sources": ["/cdn/shop/t/79/assets/pmo-help-chat.js?x=1793756810074"],
  "sourcesContent": ["/* Peak Moto help chat.\n * Answers come from Peak Moto Ops (Help Chat) through the App Proxy; this file\n * draws the chat and runs the step-by-step parts: finding an order, working\n * out a size from the product's size chart, and a delivery date from Peak\n * Promise. Config comes from snippets/pmo-help-chat.liquid.\n */\n(function () {\n  \"use strict\";\n  var root = document.getElementById(\"pmo-hc\");\n  var cfgEl = document.getElementById(\"pmo-hc-config\");\n  if (!root || !cfgEl || root.dataset.ready) return;\n  root.dataset.ready = \"1\";\n  // Hidden until PMO says the chat is on (Settings -> Chat Bot).\n  root.classList.add(\"pmo-hc--off\");\n  var CFG = {};\n  try { CFG = JSON.parse(cfgEl.textContent); } catch (e) { return; }\n  var P = CFG.proxy || \"/apps/peakmoto\";\n  var SITE = \"https://peakmotogear.com.au\";\n\n  // ---------- little helpers ----------\n  var esc = function (s) { return String(s == null ? \"\" : s).replace(/[&<>\"']/g, function (c) { return { \"&\": \"&amp;\", \"<\": \"&lt;\", \">\": \"&gt;\", '\"': \"&quot;\", \"'\": \"&#39;\" }[c]; }); };\n  var $ = function (s, r) { return (r || root).querySelector(s); };\n  var ss = {\n    get: function (k) { try { return JSON.parse(sessionStorage.getItem(\"pmo.hc.\" + k)); } catch (e) { return null; } },\n    set: function (k, v) { try { sessionStorage.setItem(\"pmo.hc.\" + k, JSON.stringify(v)); } catch (e) {} }\n  };\n  var DOW = [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"];\n  var MON = [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"June\", \"July\", \"Aug\", \"Sept\", \"Oct\", \"Nov\", \"Dec\"];\n  function day(iso) {\n    var m = String(iso || \"\").match(/^(\\d{4})-(\\d{2})-(\\d{2})/);\n    if (!m) return \"\";\n    var d = new Date(Date.UTC(+m[1], +m[2] - 1, +m[3], 12));\n    return DOW[d.getUTCDay()] + \" \" + d.getUTCDate() + \" \" + MON[d.getUTCMonth()];\n  }\n  function range(a, b) { var x = day(a), y = day(b); return !y || x === y ? x : x + \" - \" + y; }\n  function api(path, body) {\n    var opts = body ? { method: \"POST\", headers: { \"Content-Type\": \"application/json\", Accept: \"application/json\" }, body: JSON.stringify(body) } : { headers: { Accept: \"application/json\" } };\n    return fetch(P + path, opts).then(function (r) { return r.json(); });\n  }\n  // Counted in PMO -> Help Chat -> Insights (sizes worked out, delivery dates given).\n  function note(type) { api(\"/help/event\", { type: type }).catch(function () {}); }\n  function pdpVariant() {\n    var u = new URLSearchParams(location.search).get(\"variant\");\n    if (u) return u;\n    var f = document.querySelector('form[action*=\"/cart/add\"] [name=\"id\"]');\n    return (f && f.value) || (CFG.product && CFG.product.variant) || null;\n  }\n\n  // ---------- the shell ----------\n  root.innerHTML =\n    '<button type=\"button\" class=\"pmo-hc__launch\" aria-haspopup=\"dialog\" aria-controls=\"pmo-hc-panel\">' +\n    '<svg width=\"22\" height=\"22\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.9\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M5 3h14a2.5 2.5 0 0 1 2.5 2.5v8.5a2.5 2.5 0 0 1-2.5 2.5h-7.5L6 21v-4.5H5A2.5 2.5 0 0 1 2.5 14V5.5A2.5 2.5 0 0 1 5 3z\"/><path d=\"M7 8h10M7 11.5h5\"/></svg><span>Help</span></button>' +\n    '<button type=\"button\" class=\"pmo-hc__hide\" aria-label=\"Hide the Help button\" title=\"Hide\">&times;</button>' +\n    '<div class=\"pmo-hc__toast\" role=\"status\" hidden></div>' +\n    '<section class=\"pmo-hc__panel\" id=\"pmo-hc-panel\" role=\"dialog\" aria-label=\"Peak Moto help\">' +\n    '<div class=\"pmo-hc__head\"><div><strong>Peak Moto</strong><span>Orders, sizing and delivery, sorted</span></div><button type=\"button\" class=\"pmo-hc__x\" aria-label=\"Close help\">&times;</button></div>' +\n    (CFG.product ? '<div class=\"pmo-hc__ctx\">Looking at: ' + esc(CFG.product.title) + \"</div>\" : \"\") +\n    '<div class=\"pmo-hc__log\" aria-live=\"polite\"></div>' +\n    '<form class=\"pmo-hc__compose\" autocomplete=\"off\"><button type=\"button\" class=\"pmo-hc__back\" hidden aria-label=\"Go back a step\">&#8617; Back</button>' +\n    '<label style=\"position:absolute;left:-9999px\" for=\"pmo-hc-say\">Message</label><input id=\"pmo-hc-say\" placeholder=\"Ask about an order, a size, delivery...\"><button type=\"submit\" class=\"pmo-hc__send\">Send</button></form>' +\n    '<div class=\"pmo-hc__foot\">Messages passed to the crew are answered within one business day.</div></section>';\n  var log = $(\".pmo-hc__log\"), say = $(\"#pmo-hc-say\"), backBtn = $(\".pmo-hc__back\");\n  var PLACE = \"Ask about an order, a size, delivery...\";\n\n  var S = { awaiting: null, postcode: ss.get(\"postcode\"), order: null, lastAsk: \"\", lastUnanswered: \"\", avoid: null };\n  var started = false;\n\n  function open() {\n    root.classList.add(\"pmo-hc--open\");\n    ss.set(\"open\", true);\n    if (!started) { started = true; if (!restore()) greet(); }\n    setTimeout(function () { say.focus(); }, 50);\n  }\n  function close() { root.classList.remove(\"pmo-hc--open\"); ss.set(\"open\", false); $(\".pmo-hc__launch\").focus(); }\n  $(\".pmo-hc__launch\").addEventListener(\"click\", open);\n  $(\".pmo-hc__x\").addEventListener(\"click\", close);\n\n  // ---------- hiding the bubble; Help in the header and the menu ----------\n  // Anyone who doesn't want the floating button can hide it (remembered in\n  // this browser). The chat stays one tap away: a chat icon in the desktop\n  // header, and \"Help & chat\" in the phone menu.\n  var ls = {\n    get: function (k) { try { return localStorage.getItem(\"pmo.hc.\" + k); } catch (e) { return null; } },\n    set: function (k, v) { try { if (v == null) localStorage.removeItem(\"pmo.hc.\" + k); else localStorage.setItem(\"pmo.hc.\" + k, v); } catch (e) {} }\n  };\n  var ICON = '<svg width=\"22\" height=\"22\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.9\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M5 3h14a2.5 2.5 0 0 1 2.5 2.5v8.5a2.5 2.5 0 0 1-2.5 2.5h-7.5L6 21v-4.5H5A2.5 2.5 0 0 1 2.5 14V5.5A2.5 2.5 0 0 1 5 3z\"/><path d=\"M7 8h10M7 11.5h5\"/></svg>';\n  function onPhone() {\n    var m = document.querySelector(\".header__mobile\");\n    return m ? getComputedStyle(m).display !== \"none\" : window.innerWidth < 990;\n  }\n  if (ls.get(\"bubble\") === \"off\") root.classList.add(\"pmo-hc--nobubble\");\n  var toastT;\n  $(\".pmo-hc__hide\").addEventListener(\"click\", function () {\n    ls.set(\"bubble\", \"off\");\n    root.classList.add(\"pmo-hc--nobubble\");\n    var t = $(\".pmo-hc__toast\");\n    t.innerHTML = \"<span>No worries! \" + (onPhone() ? \"You'll find <b>Help</b> at the top of the menu\" : \"Help is the chat icon at the top of the page\") + \" whenever you need it.</span><button type=\\\"button\\\" data-hc-undo>Undo</button><button type=\\\"button\\\" class=\\\"pmo-hc__toast-x\\\" data-hc-tclose aria-label=\\\"Close this message\\\">&times;</button><i class=\\\"pmo-hc__toast-bar\\\" aria-hidden=\\\"true\\\"></i>\";\n    t.hidden = false;\n    clearTimeout(toastT);\n    toastT = setTimeout(function () { t.hidden = true; }, 8000);\n  });\n  $(\".pmo-hc__toast\").addEventListener(\"click\", function (e) {\n    if (e.target.closest(\"[data-hc-tclose]\")) { clearTimeout(toastT); this.hidden = true; return; }\n    if (!e.target.closest(\"[data-hc-undo]\")) return;\n    ls.set(\"bubble\", null);\n    root.classList.remove(\"pmo-hc--nobubble\");\n    this.hidden = true;\n  });\n  function addEntries() {\n    var desk = document.querySelector(\".header__desktop__buttons\");\n    if (desk && !desk.querySelector(\".pmo-hc-entry\")) {\n      var cart = desk.querySelector(\".navlink--cart\");\n      var d = document.createElement(\"div\");\n      d.className = \"header__desktop__button pmo-hc-entry\";\n      d.innerHTML = '<a href=\"#help\" class=\"navlink\" title=\"Help\">' + ICON + '<span class=\"visually-hidden\">Help</span></a>';\n      desk.insertBefore(d, cart ? cart.closest(\".header__desktop__button\") : null);\n      d.querySelector(\"a\").addEventListener(\"click\", function (e) { e.preventDefault(); open(); });\n    }\n    // Phones: \"Help\" at the top of the menu, beside the close button.\n    var top = document.querySelector(\"#header-menu .drawer__top__left\");\n    if (top && !document.querySelector(\"#header-menu .pmo-hc-entry\")) {\n      var it = document.createElement(\"a\");\n      it.href = \"#help\";\n      it.className = \"pmo-hc-entry pmo-hc-drawer-help\";\n      it.innerHTML = ICON.replace('width=\"22\" height=\"22\"', 'width=\"20\" height=\"20\"') + \"<span>Help</span>\";\n      top.appendChild(it);\n      it.addEventListener(\"click\", function (e) {\n        e.preventDefault();\n        var x = document.querySelector('#header-menu [data-drawer-toggle=\"hamburger\"]');\n        if (x) x.click();\n        setTimeout(open, 250);\n      });\n    }\n  }\n  document.addEventListener(\"keydown\", function (e) { if (e.key === \"Escape\" && root.classList.contains(\"pmo-hc--open\")) close(); });\n\n  // ---------- messages ----------\n  var history = [], gen = 0, turn = 0;\n  function scroll() { log.scrollTop = log.scrollHeight; }\n  function me(text) {\n    var m = document.createElement(\"div\");\n    m.className = \"pmo-hc__msg pmo-hc__msg--me\";\n    m.innerHTML = '<div class=\"pmo-hc__bubble\">' + esc(text) + \"</div>\";\n    log.appendChild(m); scroll();\n  }\n  function bot(html, delay) {\n    var mine = gen;\n    var t = document.createElement(\"div\");\n    t.className = \"pmo-hc__typing\"; t.innerHTML = \"<i></i><i></i><i></i>\";\n    log.appendChild(t); scroll();\n    return new Promise(function (res) {\n      setTimeout(function () {\n        t.remove();\n        var m = document.createElement(\"div\");\n        m.className = \"pmo-hc__msg pmo-hc__msg--bot\";\n        m.innerHTML = '<div class=\"pmo-hc__bubble\">' + html + \"</div>\";\n        if (mine === gen) { log.appendChild(m); scroll(); }\n        res(m);\n      }, delay == null ? 350 : delay);\n    });\n  }\n  // Thinking while a request is out; replaced by the answer. If they've\n  // moved on before it lands, the late answer is dropped.\n  function wait(promise) {\n    var t = document.createElement(\"div\"), mine = turn;\n    t.className = \"pmo-hc__typing\"; t.innerHTML = \"<i></i><i></i><i></i>\";\n    log.appendChild(t); scroll();\n    var stale = function () { return new Promise(function () {}); };\n    return promise.then(function (x) { t.remove(); return mine === turn ? x : stale(); }, function (e) { t.remove(); if (mine !== turn) return stale(); throw e; });\n  }\n  function chips(list, onPick) {\n    if (!list || !list.length) return;\n    var c = document.createElement(\"div\");\n    c.className = \"pmo-hc__chips\";\n    list.forEach(function (item) {\n      var label = typeof item === \"string\" ? item : item.label;\n      var b = document.createElement(\"button\");\n      b.type = \"button\"; b.className = \"pmo-hc__chip\"; b.textContent = label;\n      b.addEventListener(\"click\", function () {\n        snap(); c.classList.add(\"pmo-hc__chips--used\"); me(label);\n        if (onPick) onPick(item); else handle(label);\n      });\n      c.appendChild(b);\n    });\n    log.appendChild(c); scroll();\n  }\n  function links(list) {\n    if (!list || !list.length) return \"\";\n    return '<div class=\"pmo-hc__links\">' + list.map(function (l) { return '<a href=\"' + esc(l.url) + '\">' + esc(l.label) + \" &rarr;</a>\"; }).join(\"\") + \"</div>\";\n  }\n  function homeChips() {\n    var base = [\"Track my order\", \"Find my size\", \"When will it arrive?\", \"Returns policy\", \"Message the crew\"];\n    return CFG.product ? [\"What size am I in this?\", \"When would this arrive?\", \"What protection does it have?\", \"Track my order\", \"Message the crew\"] : base;\n  }\n  // A dead end: the crew, plus the usual options so nobody's left stuck.\n  function deadEnd(first, noCrew) {\n    var list = [];\n    (first || []).concat([\"Message the crew\"], homeChips()).forEach(function (c) {\n      if (list.indexOf(c) > -1) return;\n      if (noCrew && c === \"Message the crew\") return;\n      list.push(c);\n    });\n    chips(list);\n  }\n  // After a product answer: its delivery date, or the usual options.\n  function moreFor(p) {\n    var list = [\"When would it arrive?\"];\n    homeChips().forEach(function (c) { if (!/arrive|size am I in this|the crew/i.test(c)) list.push(c); });\n    chips(list, function (x) { if (x === \"When would it arrive?\") return pickVariant(p); handle(x); });\n  }\n  function setPlace(p) { say.placeholder = p || PLACE; }\n\n  // Back a step: every customer action saves where the chat was first.\n  function frozen(n) { return n.classList.contains(\"pmo-hc__chips--used\") || !!n.querySelector(\"button[type=submit][disabled]\"); }\n  function snap() {\n    turn++;\n    history.push({ count: log.children.length, frozen: Array.prototype.map.call(log.children, frozen), state: JSON.parse(JSON.stringify(S)), place: say.placeholder });\n    if (history.length > 40) history.shift();\n    backBtn.hidden = false;\n  }\n  backBtn.addEventListener(\"click\", function () {\n    var h = history.pop();\n    if (!h) return;\n    gen++;\n    while (log.children.length > h.count) log.lastElementChild.remove();\n    Array.prototype.forEach.call(log.children, function (n, i) {\n      if (!h.frozen[i]) { n.classList.remove(\"pmo-hc__chips--used\"); n.querySelectorAll(\"button[type=submit][disabled]\").forEach(function (b) { b.disabled = false; }); }\n    });\n    S = h.state; say.placeholder = h.place;\n    backBtn.hidden = !history.length;\n    scroll(); say.focus();\n  });\n\n  $(\".pmo-hc__compose\").addEventListener(\"submit\", function (e) {\n    e.preventDefault();\n    var v = say.value.trim();\n    if (!v) return;\n    say.value = \"\"; snap(); me(v); handle(v);\n  });\n\n  function greet() {\n    api(\"/help\").then(function (r) {\n      bot((r && r.html) || \"<p>Hey! How can we help?</p>\", 200).then(function () { chips(homeChips()); });\n    }, function () {\n      bot(\"<p>Hey! How can we help?</p>\", 200).then(function () { chips(homeChips()); });\n    });\n  }\n\n  // ---------- routing ----------\n  var NAV = /^(something else|start over|menu)$/i;\n  function handle(text) {\n    var t = String(text).trim();\n    if (/message the (team|crew)|talk to (the )?(crew|team|someone|a person)|speak to/i.test(t)) { S.awaiting = null; return handoff(); }\n    if (t === \"Try again\" && !S.awaiting) { S.order = null; return startOrder(); }\n    if (NAV.test(t)) { S.awaiting = null; setPlace(); return bot(\"<p>What else can I help you with?</p>\").then(function () { chips(homeChips()); }); }\n    if (t === \"Change postcode\" && S.eta) { S.postcode = null; ss.set(\"postcode\", null); return askPostcode(); }\n    if (/^Try another (size|colour|option)$/.test(t) && S.eta) return pickVariant(S.eta.product);\n    if (t === \"A different product\") return askProductName(\"eta\");\n    if (t === \"Measure again\" && S.size) return askMeasure(S.size);\n    // Waiting for a product name, order number, email or postcode, but they've\n    // asked something else instead (\"Do you alter gear?\"): answer that.\n    if (S.awaiting && looksLikeQuestion(t) && !(S.awaiting === \"email\" && /@/.test(t)) && !(/^(order|postcode)$/.test(S.awaiting) && /\\d{3,}/.test(t))) {\n      S.awaiting = null; S.pendingSize = S.pendingEta = false; S.pendingFact = null; setPlace();\n    }\n    if (S.awaiting === \"order\") return orderNumber(t);\n    if (S.awaiting === \"email\") return orderEmail(t);\n    if (S.awaiting === \"postcode\") return postcode(t);\n    if (S.awaiting === \"productName\") return productName(t);\n    S.lastAsk = t;\n    // \"How about the Fiona jacket?\" straight after a product answer asks the\n    // same question about a different product.\n    var also = t.match(/^(?:and\\s+)?(?:how|what)\\s+about\\s+(.+?)\\??$|^(?:and|same\\s+(?:for|with))\\s+(?:the\\s+)?(.+?)\\??$/i);\n    if (also && S.lastFact) return ask(also[1] || also[2], { fact: S.lastFact, noPage: true, also: true });\n    var num = t.match(/(?:#|\\bpm\\s?)(\\d{4,6})\\b/i);\n    if (num) { S.order = \"PM\" + num[1]; return askEmail(); }\n    return ask(t, {});\n  }\n\n  function looksLikeQuestion(t) {\n    return /\\?\\s*$/.test(t) || /^(do|does|did|can|could|how|what|what's|whats|is|are|was|where|when|why|who|will|would|should|i'm|im|i am|i|my|hi|hello|hey|thanks|thank you)\\b/i.test(t) || t.split(/\\s+/).length > 6;\n  }\n  function ask(q, o) {\n    var body = { q: q, page: CFG.page, avoid: S.avoid };\n    if (o.pick) body.pick = o.pick;\n    if (o.fact) body.fact = o.fact;\n    if (o.also) body.also = true;\n    if (o.product) body.product = o.product;\n    // The product the chat is already about - the one just discussed, or the\n    // page they're on - so \"is it waterproof?\" follows on from the last answer.\n    var ctx = S.lastProduct || (CFG.product && CFG.product.handle);\n    if (ctx && !o.noPage && !o.product) body.context = ctx;\n    return wait(api(\"/help/ask\", body)).then(function (r) { return show(r, q); }, function () {\n      return bot(\"<p>Sorry, I can't reach our answers right now. You can still message the crew.</p>\").then(function () { deadEnd(); });\n    });\n  }\n\n  function show(r, q) {\n    r = r || {};\n    if (r.product && r.product.handle) { S.lastProduct = r.product.handle; S.lastFact = r.fact || null; }\n    var act = r.action || \"\";\n    if (r.kind === \"answer\" && act === \"order\") return startOrder();\n    if (r.kind === \"answer\" && act === \"change\") return startChange();\n    if (r.kind === \"answer\" && act === \"size\") return startSize();\n    if (r.kind === \"answer\" && act === \"eta\") return startEta();\n    if (r.kind === \"answer\" && act === \"handoff\" && !r.product) return handoff();\n    if (r.kind === \"answer\") {\n      S.avoid = r.answerId ? { answerId: r.answerId, variant: r.variant } : null;\n      return bot((r.html || \"\") + links(r.links), 0).then(function () {\n        if (act === \"handoff\") return deadEnd();\n        chips((r.followUps || []).concat([\"Something else\"]));\n      });\n    }\n    if (r.kind === \"choose\") {\n      return bot(r.html, 0).then(function () {\n        chips((r.options || []).map(function (o) { return { label: o.title, id: o.id }; }), function (o) { ask(\"\", { pick: o.id }); });\n      });\n    }\n    if (r.kind === \"choose_product\") {\n      // Confirm the product first; typing another name searches again.\n      S.awaiting = \"productName\"; S.pendingFact = r.fact; setPlace(\"Product name\");\n      return bot(\"<p>Could you confirm which one?</p>\", 0).then(function () {\n        chips((r.options || []).map(function (o) { return { label: o.title, handle: o.handle }; }).concat([{ label: \"Other\", other: true }]), function (o) {\n          if (o.other) { S.awaiting = \"productName\"; S.pendingFact = r.fact; setPlace(\"Product name\"); return bot(\"<p>No worries - type the product name and I'll look it up.</p>\"); }\n          S.awaiting = null; setPlace(); ask(\"\", { fact: r.fact, product: o.handle });\n        });\n      });\n    }\n    if (r.kind === \"need_product\") {\n      S.awaiting = \"productName\"; S.pendingFact = r.fact; setPlace(\"Product name\");\n      return bot(r.html, 0);\n    }\n    if (r.kind === \"products\") {\n      return bot((r.html || \"\") + '<div class=\"pmo-hc__card\">' + (r.products || []).map(function (p) {\n        return '<div><a href=\"' + esc(p.url) + '\">' + esc(p.title) + '</a><div class=\"pmo-hc__sub\">' + esc(p.vendor || \"\") + \"</div></div>\";\n      }).join(\"\") + links(r.links) + \"</div>\", 0).then(function () { chips((r.followUps || []).concat([\"Something else\"])); });\n    }\n    if (r.kind === \"noproduct\") {\n      S.lastUnanswered = q;\n      return bot(r.html, 0).then(handoff).then(function () { deadEnd(null, true); });\n    }\n    S.lastUnanswered = q;\n    return bot(r.html || \"<p>Hmm, that one's got me stumped. Want me to pass it to the crew?</p>\", 0).then(function () { deadEnd(r.followUps); });\n  }\n\n  function productName(t) {\n    S.awaiting = null; setPlace();\n    if (S.pendingSize) { S.pendingSize = false; return findProduct(t, startSizeFor); }\n    if (S.pendingEta) { S.pendingEta = false; return findProduct(t, pickVariant); }\n    return ask(t, { fact: S.pendingFact, noPage: true });\n  }\n\n  // ---------- products by name (for size and delivery) ----------\n  function loadProduct(handle) {\n    return fetch(\"/products/\" + encodeURIComponent(handle) + \"?view=pmo-help\").then(function (r) { return r.text(); }).then(function (t) { return JSON.parse(t); });\n  }\n  // The shop's own search (the same results as the search page, via\n  // templates/search.pmo-help.liquid), re-ordered so products with the\n  // customer's words in their name come first: \"disc lock\" puts the Alarm\n  // Disc Lock ahead of every Quad Lock that only shares the word \"lock\".\n  // Results that only matched on their description are left out.\n  function searchProducts(text) {\n    var words = String(text).toLowerCase().split(/[^a-z0-9]+/).filter(function (w) { return w.length > 1; }).map(function (w) { return w.length > 3 ? w.replace(/s$/, \"\") : w; });\n    return fetch(\"/search?q=\" + encodeURIComponent(text) + \"&type=product&view=pmo-help\").then(function (r) { return r.text(); }).then(function (t) {\n      return (JSON.parse(t).results || []).map(function (p, i) {\n        var title = String(p.title || \"\").toLowerCase(), type = String(p.type || \"\").toLowerCase();\n        var more = (String(p.vendor || \"\") + \" \" + (p.tags || []).join(\" \")).toLowerCase(), s = 0, all = true;\n        words.forEach(function (w) {\n          var re = new RegExp(\"(^|[^a-z0-9])\" + w);\n          if (re.test(title)) s += 3;\n          else { all = false; if (re.test(type)) s += 2; else if (re.test(more)) s += 1; }\n        });\n        if (all && words.length) s += 2;\n        if (!p.available) s -= 0.5;\n        return { p: p, s: s, i: i };\n      }).filter(function (x) { return x.s > 0 || !words.length; }).sort(function (a, b) { return b.s - a.s || a.i - b.i; }).map(function (x) { return x.p; });\n    });\n  }\n  function findProduct(text, next) {\n    var listen = function () { S.awaiting = \"productName\"; S[next === startSizeFor ? \"pendingSize\" : \"pendingEta\"] = true; };\n    return wait(searchProducts(text)).then(function (all) {\n      var ps = all.slice(0, 5);\n      if (!ps.length) {\n        // Shows up in PMO -> Help Chat -> Not answered yet.\n        api(\"/help/missed\", { q: text, page: CFG.page }).catch(function () {});\n        listen();\n        return bot(\"<p>I couldn't find a product called that. Try the name as it's written on the site, like \\\"Horizon 3 H2O\\\", or the brand.</p>\");\n      }\n      if (ps.length === 1) return withProduct(ps[0].handle, next);\n      // Still listening for a name, so typing another product searches again.\n      listen(); setPlace(\"Product name\");\n      var more = all.length > ps.length ? '<div class=\"pmo-hc__links\"><a href=\"/search?q=' + encodeURIComponent(text) + '&type=product\">See all search results &rarr;</a></div>' : \"\";\n      return bot(\"<p>Could you confirm which one?</p>\" + more, 0).then(function () {\n        chips(ps.map(function (p) { return { label: p.title, handle: p.handle }; }).concat([{ label: \"Other\", other: true }]), function (o) {\n          if (o.other) { listen(); setPlace(\"Product name\"); return bot(\"<p>No worries - type the product name, the brand, or what it's for and I'll search again.</p>\"); }\n          S.awaiting = null; S.pendingSize = S.pendingEta = false; setPlace(); withProduct(o.handle, next);\n        });\n      });\n    }, function () { return bot(\"<p>I couldn't search right now - try again in a moment.</p>\"); });\n  }\n  function withProduct(handle, next) {\n    return wait(loadProduct(handle)).then(function (p) { S.lastProduct = p.handle; return next(p); }, function () { return bot(\"<p>I couldn't open that product just now. Try again in a moment.</p>\"); });\n  }\n  function askProductName(kind) {\n    S.awaiting = \"productName\"; S.pendingSize = kind === \"size\"; S.pendingEta = kind === \"eta\";\n    setPlace(\"Product name\");\n    return bot(\"<p>Which product are you looking at? Type its name and I'll find it.</p>\");\n  }\n\n  // ---------- order ----------\n  function startOrder() {\n    if (S.order) return askEmail();\n    S.awaiting = \"order\"; setPlace(\"e.g. PM10482\");\n    return bot(\"<p>Let's find it. What's your order number? It starts with PM - you'll find it in your confirmation email.</p>\");\n  }\n  function orderNumber(t) {\n    var raw = t.replace(/\\s+/g, \"\").toUpperCase().replace(/^#/, \"\");\n    if (!/^[A-Z]*\\d+$/.test(raw)) return bot(\"<p>That doesn't look quite like an order number. It's PM and then numbers, like PM10482.</p>\");\n    S.order = /^\\d+$/.test(raw) ? \"PM\" + raw : raw;\n    return askEmail();\n  }\n  // \"Can I change my order?\" - only while nothing has gone out. Needs the\n  // order first, so it runs the lookup if it hasn't been done in this chat.\n  function startChange() {\n    S.wantChange = true;\n    if (S.orderChange) return changeVerdict(S.orderChange);\n    if (S.order) return askEmail();\n    S.awaiting = \"order\"; setPlace(\"e.g. PM10482\");\n    return bot(\"<p>Let's check whether it's gone out yet. What's your order number? It starts with PM - you'll find it in your confirmation email.</p>\");\n  }\n  function changeVerdict(c) {\n    S.wantChange = false;\n    if (c.state === \"open\") return bot(\"<p><b>Good news - it hasn't gone out yet</b>, so we can still change or cancel it. Message the crew now with what you'd like changed - the sooner the better.</p>\").then(handoff);\n    if (c.state === \"partly\") return bot(\"<p>Part of it has <b>already gone out</b>, so those items can't be changed - but the rest hasn't left yet. Message the crew now with what you'd like changed.</p>\").then(handoff);\n    if (c.state === \"cancelled\") return bot(\"<p>That order was cancelled, so there's nothing to change. Want to ask the crew about it?</p>\").then(function () { deadEnd(); });\n    return bot(\"<p>It's <b>already on its way</b>, so it can't be changed now. Once it arrives you can exchange or return it - exchanges are free.</p>\").then(function () { deadEnd([\"How do I start a return or exchange?\"]); });\n  }\n  function askEmail() {\n    S.awaiting = \"email\"; setPlace(\"you@example.com\");\n    return bot(\"<p>Got it. And the email you ordered with?</p>\").then(function () {\n      if (CFG.customer && CFG.customer.email) chips([CFG.customer.email]);\n    });\n  }\n  function orderEmail(t) {\n    if (!/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(t)) return bot(\"<p>That email doesn't look quite right - mind checking it?</p>\");\n    S.awaiting = null; setPlace();\n    return wait(api(\"/help/order\", { order: S.order, email: t })).then(function (r) {\n      if (!r || !r.ok) {\n        return bot(\"<p>\" + esc((r && r.message) || \"We couldn't find that order.\") + \"</p>\").then(function () { deadEnd([\"Try again\"]); });\n      }\n      var o = r.order;\n      var html = \"<p>Found it! Here's where everything's up to:</p><div class=\\\"pmo-hc__card\\\"><div><h4>Order \" + esc(o.name) + \"</h4>\" + (o.cancelled ? '<div class=\"pmo-hc__sub\">This order was cancelled.</div>' : \"\") + \"</div>\";\n      (o.items || []).forEach(function (it) {\n        html += '<div class=\"pmo-hc__item\"><div class=\"pmo-hc__item-head\">' + (it.imageUrl ? '<img src=\"' + esc(it.imageUrl) + '\" alt=\"\" loading=\"lazy\">' : \"\") +\n          \"<div><b>\" + esc(it.title) + \"</b>\" + (it.variantTitle ? '<div class=\"pmo-hc__sub\">' + esc(it.variantTitle) + (it.quantity > 1 ? \" &middot; \" + it.quantity : \"\") + \"</div>\" : \"\") + \"</div></div>\";\n        if (it.steps && it.steps.length) {\n          html += '<ol class=\"pmo-steps\">' + it.steps.map(function (s) {\n            return '<li class=\"pmo-step ' + (s.done ? \"pmo-step--done\" : \"pmo-step--todo\") + '\">' + esc(s.label) + (s.detail ? '<span class=\"pmo-step__detail\">' + esc(s.detail) + \"</span>\" : \"\") + \"</li>\";\n          }).join(\"\") + \"</ol>\";\n        } else if (it.headline) html += \"<div>\" + esc(it.headline) + \"</div>\";\n        (it.tracking || []).forEach(function (tr) { html += tr.url ? '<a href=\"' + esc(tr.url) + '\">Track: ' + esc(tr.label) + \" &rarr;</a>\" : '<div class=\"pmo-hc__sub\">' + esc(tr.label) + \"</div>\"; });\n        html += \"</div>\";\n      });\n      if (o.supplierNote) html += '<div class=\"pmo-hc__note\">' + esc(o.supplierNote) + \"</div>\";\n      if (o.change && o.change.state === \"open\") html += '<div class=\"pmo-hc__sub\">Nothing has gone out yet, so it can still be changed.</div>';\n      if (o.fullUrl) html += '<a href=\"' + esc(o.fullUrl) + '\">See full order status &rarr;</a>';\n      html += \"</div>\";\n      S.orderChange = o.change || null;\n      return bot(html, 0).then(function () {\n        if (S.wantChange && o.change) return changeVerdict(o.change);\n        chips([\"Can I change my order?\", \"Something else\"]);\n      });\n    }, function () { return bot(\"<p>I can't look up orders right now. Please try again in a minute, or message the crew.</p>\").then(function () { deadEnd([\"Try again\"]); }); });\n  }\n\n  // ---------- size ----------\n  function startSize() {\n    if (CFG.product) return withProduct(CFG.product.handle, startSizeFor);\n    return askProductName(\"size\");\n  }\n  function calc() {\n    if (window.PmoSizeCalc) return Promise.resolve(window.PmoSizeCalc);\n    return new Promise(function (res, rej) {\n      var s = document.createElement(\"script\"); s.src = CFG.calcUrl; s.onload = function () { res(window.PmoSizeCalc); }; s.onerror = rej;\n      document.head.appendChild(s);\n    });\n  }\n  function startSizeFor(p) {\n    var chart = p.chart && p.chart.charts && p.chart.charts.find(function (c) { return c.calc && c.calc.fields && c.calc.fields.length; });\n    if (!chart) {\n      note(\"size_nochart\");\n      // Nothing to measure here: point them at the product page, not the crew.\n      var si = -1, sizes = [];\n      (p.options || []).forEach(function (o, i) { if (si < 0 && /size/i.test(o)) si = i; });\n      if (si > -1) (p.variants || []).forEach(function (v) { var x = (v.options || [])[si]; if (x && sizes.indexOf(x) < 0) sizes.push(x); });\n      var sized = sizes.length > 1, list = sizes.length > 8 ? sizes.length + \" sizes\" : sizes.slice(0, -1).join(\", \") + \" and \" + sizes[sizes.length - 1];\n      return bot(\"<p>\" + (sized ? \"There's no size chart for the <b>\" + esc(p.title) + \"</b> - it comes in \" + esc(list) + \", and the product page has the details on each.\" : \"The <b>\" + esc(p.title) + \"</b> comes in one size, so there's nothing to measure - the product page has all the details.\") +\n        '</p><div style=\"margin-top:10px\"><a class=\"pmo-hc__cta\" href=\"' + esc(p.url) + '\">View the ' + esc(p.title) + \"</a></div>\").then(function () { moreFor(p); });\n    }\n    S.size = { p: p, chart: chart };\n    return askMeasure(S.size);\n  }\n  function askMeasure(sz) {\n    var c = sz.chart.calc, id = \"pmo-hc-m\" + Date.now();\n    var fields = c.fields.map(function (f, i) {\n      return '<label>' + esc(f.label) + '<input id=\"' + id + \"-\" + i + '\" inputmode=\"decimal\" required></label>';\n    }).join(\"\");\n    return bot(\"<p>Let's get you sorted. Pop in your body measurements for the <b>\" + esc(sz.p.title) + \"</b> - over thin clothes is best:</p>\" +\n      '<form class=\"pmo-hc__card pmo-hc__form\" id=\"' + id + '\"><div style=\"display:flex;justify-content:space-between;align-items:center;gap:8px\"><b style=\"font-size:14px\">Your measurements</b>' +\n      '<span class=\"pmo-hc__unit\" role=\"group\" aria-label=\"Units\"><button type=\"button\" data-u=\"cm\" aria-pressed=\"true\">cm</button><button type=\"button\" data-u=\"in\" aria-pressed=\"false\">in</button></span></div>' +\n      '<div class=\"pmo-hc__row2\">' + fields + '</div><button class=\"pmo-hc__btn\" type=\"submit\">Find my size</button>' +\n      '<a href=\"' + esc(CFG.measureUrl) + '\" style=\"font-size:14px\">How to measure &rarr;</a></form>').then(function (m) {\n      var form = m.querySelector(\"form\"); if (!form) return;\n      var unit = \"cm\";\n      form.querySelectorAll(\"[data-u]\").forEach(function (b) {\n        b.addEventListener(\"click\", function () { unit = b.dataset.u; form.querySelectorAll(\"[data-u]\").forEach(function (x) { x.setAttribute(\"aria-pressed\", x === b); }); });\n      });\n      form.addEventListener(\"submit\", function (e) {\n        e.preventDefault();\n        var raw = c.fields.map(function (f, i) { return parseFloat(String(form.querySelector(\"#\" + id + \"-\" + i).value).replace(\",\", \".\")); });\n        if (raw.some(function (v) { return !isFinite(v) || v <= 0; })) return;\n        snap(); form.querySelector(\"button[type=submit]\").disabled = true;\n        me(c.fields.map(function (f, i) { return f.label + \" \" + raw[i] + \" \" + unit; }).join(\", \"));\n        var cm = raw.map(function (v) { return unit === \"in\" ? Math.round(v * 2.54 * 10) / 10 : v; });\n        calc().then(function (K) { sizeResult(sz, cm, K); }, function () { bot(\"<p>The size calculator didn't load. Try again in a moment.</p>\"); });\n      });\n      form.querySelector(\"input\").focus();\n    });\n  }\n  function norm(s) { return String(s || \"\").toLowerCase().replace(/[^a-z0-9\u00BD]/g, \"\"); }\n  function variantFor(p, size) {\n    var want = norm(size);\n    var vs = (p.variants || []).filter(function (v) { return (v.options || []).some(function (o) { return norm(o) === want; }); });\n    if (!vs.length) vs = (p.variants || []).filter(function (v) { return norm(v.title).indexOf(want) > -1; });\n    if (!vs.length) return null;\n    var cur = CFG.product && CFG.product.handle === p.handle ? String(pdpVariant()) : null;\n    var curV = cur && (p.variants || []).find(function (v) { return String(v.id) === cur; });\n    if (curV) {\n      var keep = vs.find(function (v) { return v.options.every(function (o, i) { return norm(o) === want || o === curV.options[i] || norm(curV.options[i]) === want; }); });\n      if (keep) return keep;\n    }\n    return vs.find(function (v) { return v.available; }) || vs[0];\n  }\n  function sizeResult(sz, cm, K) {\n    var chart = sz.chart, c = chart.calc, table = chart.tables[c.table], p = sz.p;\n    var size = null;\n    if (c.mode === \"cover\") size = K.coverSize(table, c, cm).size;\n    else size = K.recommend(table, c, cm, \"regular\").size;\n    if (!size) {\n      note(\"size_outside\");\n      return bot(\"<p>Your measurements sit outside this product's size range. The Peak Moto team can find you something that fits properly - a free fit consult is the quickest way.</p>\").then(function () { deadEnd([\"Book a free fit consult\"]); });\n    }\n    note(\"size\");\n    var each = c.mode === \"cover\" ? [] : c.fields.map(function (f, i) {\n      var one = K.recommend(table, { size: c.size, fields: [f] }, [cm[i]], \"regular\");\n      return \"<li><b>\" + esc(f.label) + \" \" + cm[i] + \" cm</b> on its own: \" + esc(one.size || \"outside the chart\") + \"</li>\";\n    });\n    var v = variantFor(p, size);\n    var url = p.url + (v ? \"?variant=\" + v.id : \"\");\n    var html = '<div class=\"pmo-hc__card\"><div class=\"pmo-hc__sub\">' + esc(p.title) + '</div><div class=\"pmo-hc__big\">We\\'d go with <em>' + esc(size) + \"</em></div>\" +\n      (each.length ? '<ul style=\"margin:0;padding-left:18px\">' + each.join(\"\") + \"</ul>\" : \"\") +\n      (each.length > 1 ? '<div class=\"pmo-hc__sub\">Where they point to different sizes, the bigger one wins - gear that\\'s tight in one place won\\'t sit right over a layer.</div>' : \"\") +\n      (v && !v.available ? '<div class=\"pmo-hc__note\">That size is sold out right now - the product page has a waitlist.</div>' : \"\") +\n      '<div><a class=\"pmo-hc__cta\" href=\"' + esc(url) + '\">' + (CFG.product && CFG.product.handle === p.handle ? \"Choose \" + esc(size) : \"View in \" + esc(size)) + \"</a></div>\" +\n      (document.querySelector(\"pmo-size-guide [data-sg-open]\") && CFG.product && CFG.product.handle === p.handle ? '<button type=\"button\" class=\"pmo-hc__chip\" data-open-guide>Open the full size guide</button>' : \"\") +\n      \"</div>\";\n    S.eta = { product: p, variant: v ? v.id : null };\n    return bot(html, 0).then(function (m) {\n      var g = m.querySelector(\"[data-open-guide]\");\n      if (g) g.addEventListener(\"click\", function () { close(); document.querySelector(\"pmo-size-guide [data-sg-open]\").click(); });\n      chips([\"When would it arrive?\", \"Measure again\", \"Message the crew\"], function (x) {\n        if (x === \"When would it arrive?\") { if (S.eta.variant) return askPostcode(); return pickVariant(p); }\n        handle(x);\n      });\n    });\n  }\n\n  // ---------- delivery date ----------\n  function startEta() {\n    if (CFG.product) return withProduct(CFG.product.handle, pickVariant);\n    return askProductName(\"eta\");\n  }\n  // One option at a time (colour, then size...), as buttons, so nobody has to\n  // scroll a list of every combination. Each step only offers what exists\n  // with the choices made so far.\n  function pickVariant(p) {\n    S.eta = { product: p, variant: null };\n    var vs = p.variants || [], names = p.options || [];\n    if (vs.length === 1) { S.eta.variant = vs[0].id; return askPostcode(); }\n    var step = function (i, chosen) {\n      var fits = vs.filter(function (v) { return chosen.every(function (c, k) { return (v.options || [])[k] === c; }); });\n      if (i >= names.length || fits.length === 1) { S.eta.variant = fits[0].id; return askPostcode(); }\n      var vals = [];\n      fits.forEach(function (v) { var x = (v.options || [])[i]; if (x != null && vals.indexOf(x) < 0) vals.push(x); });\n      if (vals.length === 1) return step(i + 1, chosen.concat(vals));\n      var name = String(names[i] || \"option\").toLowerCase();\n      return bot(\"<p>\" + (i === 0 ? \"Which \" : \"And which \") + esc(name === \"title\" ? \"one\" : name) + \"?</p>\", 0).then(function () {\n        chips(vals, function (x) { step(i + 1, chosen.concat([x])); });\n      });\n    };\n    return step(0, []);\n  }\n  function anotherLabel(p) {\n    var o = (p.options || []).join(\" \");\n    return /size/i.test(o) ? \"Try another size\" : /colou?r/i.test(o) ? \"Try another colour\" : \"Try another option\";\n  }\n  function askPostcode() {\n    if (S.postcode) return showEta(true);\n    S.awaiting = \"postcode\"; setPlace(\"Postcode, e.g. 2000\");\n    return bot(\"<p>What's your postcode? I'll tell you when it'll hit your door.</p>\").then(function () { chips([\"Skip\"], function () { S.awaiting = null; setPlace(); showEta(false); }); });\n  }\n  function postcode(t) {\n    var pc = t.replace(/\\D/g, \"\");\n    if (pc.length === 3) pc = \"0\" + pc;\n    if (pc.length !== 4) return bot(\"<p>That doesn't look like an Australian postcode - it's four numbers, like 3000.</p>\");\n    S.awaiting = null; setPlace(); S.postcode = pc; ss.set(\"postcode\", pc);\n    return showEta(false);\n  }\n  var STATE = {\n    in_shop: [\"\", \"In stock - ready to post\"],\n    supplier: [\"blue\", \"Available to order - we bring it in from the brand\"],\n    incoming: [\"amber\", \"On its way to us\"],\n    backorder: [\"amber\", \"On backorder\"],\n    sold_out: [\"red\", \"Sold out in this one\"]\n  };\n  function showEta(remembered) {\n    var e = S.eta, p = e.product, v = (p.variants || []).find(function (x) { return String(x.id) === String(e.variant); });\n    var q = \"/availability?variant=\" + encodeURIComponent(e.variant) + (S.postcode ? \"&postcode=\" + S.postcode : \"\");\n    return wait(api(q)).then(function (r) {\n      if (!r || r.enabled === false || r.error) {\n        return bot(\"<p>I can't work out a date for that one right now. In-stock orders are posted within one business day - the shipping page has the rest.</p>\" + links([{ label: \"Shipping & delivery\", url: \"/pages/shipping\" }])).then(function () { deadEnd(); });\n      }\n      note(\"eta\");\n      var st = STATE[r.state] || [\"\", r.state];\n      var rows = [];\n      if (r.state === \"incoming\" && r.incoming && r.incoming.eta) rows.push([\"Arriving with us\", day(r.incoming.eta)]);\n      if (r.dispatch && r.dispatch.date) rows.push([r.dispatch.estimated ? \"Estimated dispatch\" : \"Posted\", day(r.dispatch.date)]);\n      if (r.delivery) {\n        rows.push([\"Standard to \" + (r.delivery.assumed ? r.delivery.zoneLabel : S.postcode), range(r.delivery.from, r.delivery.to)]);\n        if (r.delivery.express) rows.push([\"Express\" + (r.delivery.express.price ? \" (\" + r.delivery.express.price + \")\" : \"\"), range(r.delivery.express.from, r.delivery.express.to)]);\n      }\n      if (r.collect && r.collect.from) rows.push([\"Click & collect\" + (r.collect.shop ? \", \" + r.collect.shop : \"\"), day(r.collect.from)]);\n      var cut = r.dispatch && r.dispatch.secondsToCutoff > 0 ? Math.round(r.dispatch.secondsToCutoff / 60) : 0;\n      var html = '<div class=\"pmo-hc__card\"><div class=\"pmo-hc__sub\">' + esc(p.title) + (v && v.title !== \"Default Title\" ? \" - \" + esc(v.title) : \"\") + \"</div>\" +\n        '<div class=\"pmo-hc__stock\"><span class=\"pmo-hc__dot ' + (st[0] ? \"pmo-hc__dot--\" + st[0] : \"\") + '\"></span>' + esc(st[1]) + \"</div>\" +\n        (cut ? '<div class=\"pmo-hc__note pmo-hc__note--terra\"><b>Order in the next ' + (cut >= 60 ? Math.floor(cut / 60) + \"h \" : \"\") + (cut % 60) + \"m</b> and it's posted today.</div>\" : \"\") +\n        (rows.length ? '<div class=\"pmo-hc__dates\">' + rows.map(function (x) { return \"<div><span>\" + esc(x[0]) + \"</span><b>\" + esc(x[1]) + \"</b></div>\"; }).join(\"\") + \"</div>\" : \"\") +\n        (r.delivery && r.delivery.assumed ? '<div class=\"pmo-hc__sub\">Add your postcode for a date to your door.</div>' : remembered ? '<div class=\"pmo-hc__sub\">Using your postcode ' + esc(S.postcode) + \" from earlier.</div>\" : \"\") +\n        (r.state === \"backorder\" ? \"<div>We don't have a date from the brand yet. Order now and we'll email your delivery date within one business day.</div>\" : \"\") +\n        (r.state === \"sold_out\" ? \"<div>Join the waitlist on the product page and we'll email you when it's back.</div>\" : \"\") +\n        (r.caveat ? '<div class=\"pmo-hc__note\">' + esc(r.caveat) + \"</div>\" : \"\") +\n        '<div><a class=\"pmo-hc__cta\" href=\"' + esc(p.url + \"?variant=\" + e.variant) + '\">View this one</a></div></div>';\n      return bot(html, 0).then(function () {\n        chips((S.postcode ? [\"Change postcode\"] : []).concat((p.variants || []).length > 1 ? [anotherLabel(p)] : [], [\"A different product\", \"Something else\"]));\n      });\n    }, function () { return bot(\"<p>I can't work out a date right now. Please try again in a moment.</p>\"); });\n  }\n\n  // ---------- message the crew ----------\n  function subjectLine() {\n    var ask = String(S.lastAsk || \"\").replace(/(?:#|\\bpm\\s?)\\d{4,6}\\b/ig, \"\").replace(/\\s+/g, \" \").replace(/\\bi\\b/g, \"I\").trim();\n    var nice = ask ? ask.charAt(0).toUpperCase() + ask.slice(1) : \"\";\n    return S.order ? \"#\" + S.order + \" - \" + nice : nice;\n  }\n  function transcript() {\n    return Array.prototype.slice.call(log.querySelectorAll(\".pmo-hc__msg\")).slice(-14).map(function (m) {\n      return (m.classList.contains(\"pmo-hc__msg--me\") ? \"Customer: \" : \"Chat: \") + m.textContent.replace(/\\s+/g, \" \").trim().slice(0, 200);\n    }).join(\"\\n\");\n  }\n  function handoff() {\n    S.awaiting = null; setPlace();\n    var id = \"pmo-hc-h\" + Date.now(), c = CFG.customer || {};\n    return bot(\"<p>Easy. Leave your details and the crew will email you back within one business day.</p>\" +\n      '<form class=\"pmo-hc__card pmo-hc__form\" id=\"' + id + '\"><div class=\"pmo-hc__row2\"><label>First name<input name=\"n\" autocomplete=\"given-name\" required value=\"' + esc(c.first || \"\") + '\"></label>' +\n      '<label>Email<input name=\"e\" type=\"email\" autocomplete=\"email\" required value=\"' + esc(c.email || \"\") + '\"></label></div>' +\n      '<label>Subject<input name=\"s\" maxlength=\"160\" value=\"' + esc(subjectLine()) + '\"></label>' +\n      '<label>Anything else we should know?<textarea name=\"q\" rows=\"3\">' + esc(S.lastUnanswered || \"\") + \"</textarea></label>\" +\n      '<button class=\"pmo-hc__btn pmo-hc__btn--terra\" type=\"submit\">Send to the crew</button><span class=\"pmo-hc__hint\">This chat goes with it, so you won\\'t have to repeat yourself.</span></form>').then(function (m) {\n      var form = m.querySelector(\"form\"); if (!form) return;\n      form.addEventListener(\"submit\", function (e) {\n        e.preventDefault();\n        var f = form.elements, q = f.q.value.trim() || f.s.value.trim();\n        if (!q) { f.q.focus(); return; }\n        snap(); form.querySelector(\"button\").disabled = true;\n        me(\"Sent: \" + (f.s.value.trim() || q));\n        wait(api(\"/help/message\", { name: f.n.value.trim(), email: f.e.value.trim(), order: S.order, subject: f.s.value.trim(), question: q, transcript: transcript(), page: CFG.page })).then(function (r) {\n          if (r && r.ok) return bot(r.html || \"<p>Thanks, that's with the crew now.</p>\", 0).then(function () { deadEnd(null, true); });\n          form.querySelector(\"button\").disabled = false;\n          return bot(\"<p>\" + esc((r && r.error) || \"That didn't send - mind trying again?\") + \"</p>\");\n        }, function () { form.querySelector(\"button\").disabled = false; return bot(\"<p>That didn't send - mind trying again? Or email hello@peakmotogear.com.au.</p>\"); });\n      });\n    });\n  }\n\n  // ---------- keep the chat across pages ----------\n  // The conversation is kept for this visit, so following a link in the chat\n  // and coming back to it carries on where it left off instead of starting over.\n  function save() {\n    try {\n      var kids = Array.prototype.slice.call(log.children).filter(function (n) { return !n.classList.contains(\"pmo-hc__typing\"); }).slice(-40);\n      sessionStorage.setItem(\"pmo.hc.log\", JSON.stringify({ html: kids.map(function (n) { return n.outerHTML; }).join(\"\"), order: S.order, at: Date.now() }));\n    } catch (e) {}\n  }\n  var saveT;\n  if (window.MutationObserver) new MutationObserver(function () { clearTimeout(saveT); saveT = setTimeout(save, 250); }).observe(log, { childList: true, subtree: true, attributes: true });\n  function restore() {\n    var saved = ss.get(\"log\");\n    if (!saved || !saved.html || Date.now() - saved.at > 6 * 3600000) return false;\n    log.innerHTML = saved.html;\n    // Only one \"welcome back\" at a time: drop the last one if nothing came after it.\n    var last = log.querySelectorAll(\"[data-hc-back]\"), w = last.length && last[last.length - 1].closest(\".pmo-hc__msg\");\n    if (w && log.children.length - Array.prototype.indexOf.call(log.children, w) <= 2) { while (log.lastElementChild !== w) log.lastElementChild.remove(); w.remove(); }\n    // Earlier buttons and forms belonged to the last page; the new options below take over.\n    log.querySelectorAll(\".pmo-hc__chips\").forEach(function (c) { c.classList.add(\"pmo-hc__chips--used\"); });\n    log.querySelectorAll(\"form input, form select, form textarea, form button\").forEach(function (x) { x.disabled = true; });\n    if (saved.order) S.order = saved.order;\n    scroll();\n    bot(\"<p data-hc-back>Welcome back! What's next?</p>\", 150).then(function () { chips(homeChips()); });\n    return true;\n  }\n  // On a phone the chat covers the page, so a link in it closes the chat and\n  // the page they asked for shows; the conversation is there when they reopen it.\n  log.addEventListener(\"click\", function (e) {\n    var a = e.target.closest && e.target.closest(\"a[href]\");\n    if (a && window.matchMedia && window.matchMedia(\"(max-width: 560px)\").matches) ss.set(\"open\", false);\n  });\n\n  // Settings -> Chat Bot in PMO. Asked once every few minutes per visit; only\n  // an explicit \"off\" hides the chat, so a slow or missing answer never does.\n  function whenOn(go) {\n    var c = ss.get(\"on\");\n    if (c && Date.now() - c.at < 300000) { if (c.v) go(); return; }\n    fetch(P + \"/help/status\", { headers: { Accept: \"application/json\" } })\n      .then(function (r) { return r.ok ? r.json() : {}; })\n      .catch(function () { return {}; })\n      .then(function (j) {\n        var on = !(j && j.enabled === false);\n        ss.set(\"on\", { v: on, at: Date.now() });\n        if (on) go();\n      });\n  }\n  whenOn(function () {\n    root.classList.remove(\"pmo-hc--off\");\n    addEntries();\n    if (ss.get(\"open\")) open();\n  });\n})();\n"],
  "mappings": "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",
  "names": ["handle", "ask"]
}
