PageSourceSearch

https://zerx.dev/_astro/BlogSearchBox.astro_astro_type_script_index_0_lang.BdDBFwQh.js

js zerx.dev collected 2026-09-24 11:58:58 UTC 4,711 bytes, 1 lines download raw bytes

1import{u as L}from"./ui.XsTdHkqH.js";const T={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"};function g(e){return e?e.replace(/[&<>"']/g,t=>T[t]??t):""}function B(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function A(e,t){const r=e??"",n=(t??"").trim();if(r.length===0)return"";if(n.length===0)return g(r);let i;try{i=new RegExp(B(n),"gi")}catch{return g(r)}if(i.source.length===0)return g(r);let c="",s=0;for(const o of r.matchAll(i)){const l=o.index??-1;if(l<0)continue;const m=l+o[0].length;l>s&&(c+=g(r.slice(s,l))),c+=`<mark class="search-hit">${g(o[0])}</mark>`,s=m}return s<r.length&&(c+=g(r.slice(s))),c.length===0?g(r):c}function I(e,t){const r=typeof e=="string"?new Date(e):e;if(Number.isNaN(r.getTime()))return"";const n=t==="zh"?"zh-CN":"en-US";return r.toLocaleDateString(n,{year:"numeric",month:t==="zh"?"long":"short",day:"numeric"})}const N=new Map;function $(e){let t=N.get(e);return t||(t=fetch(`/search/${e}.json`).then(r=>r.ok?r.json():[]).catch(()=>[]),N.set(e,t)),t}function S(){const e=document.createElement("span");return e.setAttribute("aria-hidden","true"),e.className="text-[color:var(--color-ink-muted)]",e.textContent="·",e}function q(e,t,r,n){const i=document.createElement("a");i.href=`${r}/${e.slug}/`,i.className="search-result-card group relative flex flex-col gap-2 px-4 sm:px-5 lg:px-6 py-5 lg:py-6 bg-transparent hover:bg-[color:var(--color-paper-muted)]/60 transition-colors duration-[var(--duration-base)] ease-[var(--ease-standard)] no-underline cursor-pointer";const c=document.createElement("h3");c.className="font-medium text-[color:var(--color-ink-primary)] tracking-[-0.015em] leading-[1.35] text-[17px] sm:text-[18px] lg:text-[19px] line-clamp-2",c.innerHTML=A(e.title,t);const s=document.createElement("p");s.className="text-[color:var(--color-ink-secondary)] text-[13.5px] sm:text-[14px] leading-[1.6] line-clamp-2 max-w-[72ch]",s.innerHTML=A(e.excerpt,t);const o=document.createElement("div");if(o.className="flex items-center gap-2 flex-wrap font-[var(--font-mono)] text-[10.5px] sm:text-[11px] leading-none tracking-[var(--tracking-wide)] text-[color:var(--color-ink-tertiary)] tabular-nums",e.categoryName){const a=document.createElement("span");a.className="uppercase text-[color:var(--color-ink-secondary)]",a.textContent=e.categoryName,o.append(a,S())}const l=document.createElement("time"),m=new Date(e.date);if(Number.isNaN(m.getTime())||(l.dateTime=m.toISOString()),l.textContent=I(e.date,n),o.append(l),e.readingTime>0){const a=document.createElement("span");a.className="uppercase",a.textContent=`${e.readingTime} ${L[n]["blog.minutes"]}`,o.append(S(),a)}return i.append(c,s,o),i}function D(e){if(e.__blogSearchInitialized)return;e.__blogSearchInitialized=!0;const t=e.querySelector("[data-blog-search-toggle]"),r=e.querySelector("[data-blog-search-panel]"),n=e.querySelector("[data-blog-search-input]"),i=e.querySelector("[data-blog-search-clear]");if(!t||!r||!n)return;const c=e.getAttribute("data-lang")??"zh",s=e.getAttribute("data-list-base")??"/blog",o=document.getElementById("post-grid"),l=document.getElementById("blog-pagination"),m=document.getElementById("blog-category-tabs"),a=document.getElementById("search-results"),p=document.getElementById("search-empty");function f(u,d=!1){e.setAttribute("data-expanded",u?"true":"false"),t.setAttribute("aria-expanded",u?"true":"false"),u&&d&&requestAnimationFrame(()=>n.focus())}function h(){i&&(i.hidden=n.value.length===0)}function k(){a?.setAttribute("hidden",""),p?.setAttribute("hidden",""),o?.removeAttribute("hidden"),l?.removeAttribute("hidden"),m?.removeAttribute("hidden")}function w(){o?.setAttribute("hidden",""),l?.setAttribute("hidden",""),m?.setAttribute("hidden","")}async function x(u){const d=u.trim();if(d.length===0){k();return}w();const y=d.toLowerCase(),C=await $(c);if(n.value.trim().toLowerCase()!==y||!a||!p)return;const E=C.filter(b=>b.text.includes(y));a.replaceChildren(...E.map(b=>q(b,d,s,c))),E.length===0?(a.setAttribute("hidden",""),p.removeAttribute("hidden")):(a.removeAttribute("hidden"),p.setAttribute("hidden",""))}f(!1),h(),t.addEventListener("click",()=>{f(!0,!0)}),n.addEventListener("input",()=>{h(),x(n.value)}),i?.addEventListener("click",()=>{n.value="",h(),x(""),n.focus()}),n.addEventListener("keydown",u=>{u.key==="Escape"&&(n.value.length>0?(n.value="",h(),x(""),u.preventDefault()):(f(!1),t.focus()))}),document.addEventListener("click",u=>{const d=u.target;d&&(e.contains(d)||n.value.length===0&&f(!1))},{capture:!0})}function v(){document.querySelectorAll("[data-blog-search]").forEach(D)}
1document.readyState==="loading"?document.addEventListener("DOMContentLoaded",v):v();document.addEventListener("astro:page-load",v);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.