🎩 You're Invited:Meet the Socket team at Black Hat in Las Vegas, August 3-6.RSVP
Sign In

staticsearch

Package Overview
Dependencies
Maintainers
1
Versions
11
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

staticsearch - npm Package Compare versions

Comparing version
0.7.0
to
0.8.0
+1
dist/js/staticsearch-here.js
import"./__SSDIR__/staticsearch-component.js";var t=document.body.querySelector('script[src$="staticsearch-here.js"]');if(t){let e=document.createElement("static-search");e.label="search",e.title="search Ctrl+K",e.innerHTML='<svg xmlns="http://www.w3.org/2000/svg" fill="currentColor" viewBox="0 0 24 24" width="1em" height="1em"><path d="M10 4a6 6 0 1 0 0 12 6 6 0 0 0 0-12Zm-8 6a8 8 0 1 1 14.3 5l5.4 5.3a1 1 0 0 1-1.4 1.4l-5.4-5.4A8 8 0 0 1 2 10Z"/></svg>',t.after(e)}
+1
-1

@@ -1,1 +0,1 @@

:host{--fsize: var(--staticsearch-fontsize, 1em);--dmax: var(--staticsearch-maxwidth, 60ch);--dmargin: var(--staticsearch-margin, 3vmin);--dpadding: var(--staticsearch-padding, 2vmin);--sheight: var(--staticsearch-fieldset-height, calc(3em + (2 * var(--dpadding))) );--colback0: var(--staticsearch-color-back, Canvas);--colbord0: var(--staticsearch-color-border, ButtonFace);--colfore0: var(--staticsearch-color-fore0, CanvasText);--colfore1: var(--staticsearch-color-fore1, color-mix(in oklab, CanvasText 80%, Canvas));--colfore2: var(--staticsearch-color-fore2, color-mix(in oklab, CanvasText 60%, Canvas));--collinkd: var(--staticsearch-color-link, color-mix(in oklab, LinkText 80%, CanvasText));--collinkv: var(--staticsearch-color-visited, color-mix(in oklab, VisitedText 80%, CanvasText));--colshad0: var(--staticsearch-color-shadow, #000);--colshad1: var(--staticsearch-color-backdrop, color-mix(in srgb, var(--colshad0), transparent 25%));--colblur0: var(--staticsearch-backdrop-blur, 3px)}template{display:none}*{box-sizing:border-box;font-size:inherit;padding:0;margin:0}@media(prefers-reduced-motion:reduce){*,*:before,*:after,::backdrop{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;transition-behavior:normal!important;scroll-behavior:auto!important}}[part=activate]{color:var(--colfore2);outline:none;&:hover,&:active,&:focus{color:var(--collinkd)}}dialog{position:fixed;font-size:var(--fsize);inline-size:var(--dmax);block-size:100%;max-inline-size:calc(100dvi - (2 * var(--dmargin)));max-block-size:calc(100dvb - (2 * var(--dmargin)));margin:auto;padding:0;color:var(--colfore0);background-color:var(--colback0);border:1px solid var(--colbord0);border-radius:5px;box-shadow:0 2px 4px var(--colshad0);overflow:hidden;transform-origin:50% 0;&,&::backdrop{transition:all .3s ease-in-out;transition-behavior:allow-discrete}&[open]{opacity:1;transform:scale(1);@starting-style{display:block;opacity:.5;transform:scaleX(.5) scaleY(0)}&::backdrop{background-color:var(--colshad1);-webkit-backdrop-filter:blur(var(--colblur0));backdrop-filter:blur(var(--colblur0));@starting-style{background-color:#0000;-webkit-backdrop-filter:blur(0);backdrop-filter:blur(0)}}}&:not([open]){display:none;opacity:0;transform:scaleX(.5) scaleY(0)}}[part=close]{position:absolute;inset-inline-end:0;inset-block-start:0;block-size:1.4em;inline-size:1.4em;min-block-size:unset;min-inline-size:unset;padding:0;margin:0;background-color:transparent;border:0 none;cursor:pointer;z-index:3;&:is(:hover,:focus,:active){color:var(--collinkd)}}[part=search]{position:absolute;block-size:var(--sheight);inset-inline:0;inset-block-start:0;padding-inline:var(--dpadding);padding-block-start:var(--dpadding);box-shadow:0 1px 5px var(--colshad0);overflow:hidden;z-index:2;&:focus-within{label,input{color:var(--colfore0)}input{border-color:var(--colfore1)}}}[part=searchlabel]{display:block;font-size:.8em;padding-inline-start:.625em;padding-block-end:.2em;color:var(--colfore1);-webkit-user-select:none;user-select:none}input[part=searchinput]{display:block;inline-size:100%;line-height:1.5;padding-block:.2em;padding-inline:.5em;color:var(--colfore1);background-color:transparent;border:1px solid transparent;border-radius:3px;outline-style:none}[part=results]{position:absolute;inset-inline:0;inset-block:0;inset-block-start:var(--sheight);padding:var(--dpadding);overflow:hidden auto;scrollbar-width:thin;scrollbar-color:var(--colfore2) transparent;overscroll-behavior-block:contain;outline:none;&:after{position:fixed;content:"";block-size:5vb;inset-inline:var(--dpadding);inset-block-end:0;background:linear-gradient(transparent,var(--colback0));pointer-events:none}}[part=searchterm]{font-style:italic;&:before,&:after{content:'"'}}[part=item]{margin-block:1.5em;margin-inline-start:1.5em}[part=title]{font-weight:bolder;line-height:1.2;text-wrap:balance;text-underline-offset:.2em;margin-block-end:.1em}[part=meta]{font-size:.75em;line-height:1.4;color:var(--colfore2)}[part=description]{font-size:.85em;line-height:1.4;text-wrap:pretty;color:var(--colfore1)}a:focus-visible{outline-color:var(--collinkd);outline-style:solid;outline-offset:.2em;outline-width:.2rem}a:link{display:block;text-decoration:none;color:var(--collinkd)}a:visited{color:var(--collinkv)}a:hover,a:focus,a:active{color:var(--collinkd);[part=title]{text-decoration:underline}}
:host{--fsize: var(--staticsearch-fontsize, max(16px, 1em));--dmax: var(--staticsearch-maxwidth, 60ch);--dmargin: var(--staticsearch-margin, 3vmin);--dpadding: var(--staticsearch-padding, 2vmin);--sheight: var(--staticsearch-fieldset-height, calc(3em + (2 * var(--dpadding))) );--colback0: var(--staticsearch-color-back, Canvas);--colbord0: var(--staticsearch-color-border, ButtonFace);--colfore0: var(--staticsearch-color-fore0, CanvasText);--colfore1: var(--staticsearch-color-fore1, color-mix(in oklab, CanvasText 80%, Canvas));--colfore2: var(--staticsearch-color-fore2, color-mix(in oklab, CanvasText 60%, Canvas));--collinkd: var(--staticsearch-color-link, color-mix(in oklab, LinkText 80%, CanvasText));--collinkv: var(--staticsearch-color-visited, color-mix(in oklab, VisitedText 80%, CanvasText));--colshad0: var(--staticsearch-color-shadow, #000);--colshad1: var(--staticsearch-color-backdrop, color-mix(in srgb, var(--colshad0), transparent 25%));--colblur0: var(--staticsearch-backdrop-blur, 3px)}template{display:none}*{box-sizing:border-box;font-size:inherit;padding:0;margin:0}@media(prefers-reduced-motion:reduce){*,*:before,*:after,::backdrop{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;transition-behavior:normal!important;scroll-behavior:auto!important}}[part=activate]{color:var(--colfore2);outline:none;&:hover,&:active,&:focus{color:var(--collinkd)}}dialog{position:fixed;font-size:var(--fsize);inline-size:var(--dmax);block-size:100%;max-inline-size:calc(100dvi - (2 * var(--dmargin)));max-block-size:calc(100dvb - (2 * var(--dmargin)));margin:auto;padding:0;color:var(--colfore0);background-color:var(--colback0);border:1px solid var(--colbord0);border-radius:5px;box-shadow:0 2px 4px var(--colshad0);overflow:hidden;transform-origin:50% 0;&,&::backdrop{transition:all .3s ease-in-out;transition-behavior:allow-discrete}&[open]{opacity:1;transform:scale(1);@starting-style{display:block;opacity:.5;transform:scaleX(.5) scaleY(0)}&::backdrop{background-color:var(--colshad1);-webkit-backdrop-filter:blur(var(--colblur0));backdrop-filter:blur(var(--colblur0));@starting-style{background-color:#0000;-webkit-backdrop-filter:blur(0);backdrop-filter:blur(0)}}}&:not([open]){display:none;opacity:0;transform:scaleX(.5) scaleY(0)}}[part=close]{position:absolute;inset-inline-end:0;inset-block-start:0;block-size:1.4em;inline-size:1.4em;min-block-size:unset;min-inline-size:unset;padding:0;margin:0;background-color:transparent;border:0 none;cursor:pointer;z-index:3;&:is(:hover,:focus,:active){color:var(--collinkd)}}[part=search]{position:absolute;block-size:var(--sheight);inset-inline:0;inset-block-start:0;padding-inline:var(--dpadding);padding-block-start:var(--dpadding);box-shadow:0 1px 5px var(--colshad0);overflow:hidden;z-index:2;&:focus-within{label,input{color:var(--colfore0)}input{border-color:var(--colfore1)}}}[part=searchlabel]{display:block;font-size:.8em;padding-inline-start:.625em;padding-block-end:.2em;color:var(--colfore1);-webkit-user-select:none;user-select:none}input[part=searchinput]{display:block;inline-size:100%;line-height:1.5;padding-block:.2em;padding-inline:.5em;color:var(--colfore1);background-color:transparent;border:1px solid transparent;border-radius:3px;outline-style:none}[part=results]{position:absolute;inset-inline:0;inset-block-start:var(--sheight);inset-block-end:0;padding:var(--dpadding);overflow:hidden auto;scrollbar-width:thin;scrollbar-color:var(--colfore2) transparent;overscroll-behavior-block:contain;outline:none;&:after{position:fixed;content:"";block-size:3em;inset-inline:var(--dpadding);inset-block-end:0;background:linear-gradient(transparent 0%,var(--colback0) 66%,var(--colback0));pointer-events:none}}[part=searchterm]{font-style:italic;&:before,&:after{content:'"'}}[part=item]{margin-block:1.5em;margin-inline-start:1.5em}[part=title]{font-weight:bolder;line-height:1.2;text-wrap:balance;text-underline-offset:.2em;margin-block-end:.1em}[part=meta]{font-size:.7em;line-height:1.4;color:var(--colfore2)}[part=description]{font-size:.85em;line-height:1.4;text-wrap:pretty;color:var(--colfore1)}a:focus-visible{outline-color:var(--collinkd);outline-style:solid;outline-offset:.2em;outline-width:.2rem}a:link{display:block;text-decoration:none;color:var(--collinkd)}a:visited{color:var(--collinkv)}a:hover,a:focus,a:active{color:var(--collinkd);[part=title]{text-decoration:underline}}[part=poweredby]{position:absolute;inset-inline:var(--dpadding);inset-block-start:auto;inset-block-end:0;font-size:.6em;text-align:end;padding:.5em 0;&:link,&:visited{color:var(--colfore2)}&:hover,&:active,&:focus{color:var(--colfore0)}}

@@ -1,1 +0,1 @@

import{staticsearch as v}from"./__SSDIR__/staticsearch.js";var S="q",w=0,T="__AGENT__",y=Symbol(T),C=500,I={date:new Intl.DateTimeFormat([],{dateStyle:"long"}).format,number:new Intl.NumberFormat([],{maximumFractionDigits:0}).format};(()=>{let t=document.getElementById("staticsearch_search"),r=document.getElementById("staticsearch_result");r&&L(r,{minFound:r.getAttribute("minfound"),minScore:r.getAttribute("minscore"),maxResults:r.getAttribute("maxresults"),highlight:r.hasAttribute("highlight")}),t&&t.tagName==="INPUT"&&F(t,{fuzzy:t.getAttribute("fuzzy")})})();function x(){return new URLSearchParams(location.search).get(S)||""}function A(t,r){let a=new URL(location);t?a.searchParams.set(S,t):a.searchParams.delete(S),a.hash=r||"",history.replaceState({},"",a.href)}function F(t,r={}){if(t[y])return;t[y]=!0;let a=parseFloat(r.fuzzy);(isNaN(a)||a<0)&&(a=6),t.name&&(S=t.name);let p=x()||sessionStorage.getItem(T)||"";p&&(t.value=p);let h=t.value;h&&f(h);let d;t.addEventListener("input",n=>{let o=n.target.value;clearTimeout(d),d=setTimeout(()=>f(o),C)},!1);function f(n){sessionStorage.setItem(T,n),!(n.length<2)&&v.find(n,a).then(o=>{})}}function L(t,r={}){if(t[y])return;t[y]=!0;let a="",p=parseFloat(r.minFound)||0,h=parseFloat(r.minScore)||0,d=parseFloat(r.maxResults)||0,f=!!r.highlight,n=r.resultElement||"ol",o=r.messageTemplate||document.getElementById("staticsearch_resultmessage");o||(o=document.createElement("template"),o.innerHTML='<p part="resultmessage"><span part="resultcount">0</span> found for <span part="searchterm"></span>&hellip;</p>');let g=r.itemTemplate||document.getElementById("staticsearch_item");g||(g=document.createElement("template"),g.innerHTML='<li part="item"><a part="link"><h2 part="title"></h2><p part="meta"><time part="date"></time> &ndash; <span part="words">0</span> words</p><p part="description"></p></a></li>'),t.addEventListener("click",l=>{let c=l.target.closest("a");c&&a&&A(a,c.id)}),document.addEventListener("staticsearch:result",l=>{a=l.detail.search;let c=l.detail.result,E=f?"#:~:"+a.split(/\W+/).reverse().map(e=>"text="+encodeURIComponent(e.trim().toLowerCase())).join("&"):"";t.innerHTML="";let u=document.createElement(n);u.setAttribute("part","searchresult"),c.forEach((e,b)=>{if(e.found<p||h&&e.relevancy<h||d&&b>=d)return;let m=g.content.cloneNode(!0);i(m,"link",null,{href:e.url+E,id:`staticsearchresult-${e.id}`}),i(m,"title",e.title),i(m,"description",e.description),e.date&&i(m,"date",I.date(new Date(e.date)),{datetime:e.date}),e.words&&i(m,"words",I.number(e.words)),u.appendChild(m)});let s=o.content.cloneNode(!0);if(i(s,"resultcount",u.childElementCount),i(s,"searchterm",a),t.appendChild(s),t.appendChild(u),!w&&location.hash){let e=t.querySelector(location.hash);e&&(e.focus(),e.scrollIntoView({behavior:"smooth",block:"nearest"}))}else t.scrollTop=0;w++},!1);function i(l,c,E,u={}){l.querySelectorAll(`[part="${c}"]`).forEach(s=>{for(let[e,b]of Object.entries(u))s.setAttribute(e,b);if(E){for(;s.firstElementChild;)s=s.firstElementChild;s.textContent=E}})}}export{F as staticSearchInput,x as staticSearchQuery,L as staticSearchResult,A as staticSearchSetQuery};
import{staticsearch as v}from"./__SSDIR__/staticsearch.js";var S="q",w=0,T="__AGENT__",y=Symbol(T),C=300,I={date:new Intl.DateTimeFormat([],{dateStyle:"long"}).format,number:new Intl.NumberFormat([],{maximumFractionDigits:0}).format};(()=>{let t=document.getElementById("staticsearch_search"),r=document.getElementById("staticsearch_result");r&&L(r,{minFound:r.getAttribute("minfound"),minScore:r.getAttribute("minscore"),maxResults:r.getAttribute("maxresults"),highlight:r.hasAttribute("highlight")}),t&&t.tagName==="INPUT"&&F(t,{fuzzy:t.getAttribute("fuzzy")})})();function x(){return new URLSearchParams(location.search).get(S)||""}function A(t,r){let a=new URL(location);t?a.searchParams.set(S,t):a.searchParams.delete(S),a.hash=r||"",history.replaceState({},"",a.href)}function F(t,r={}){if(t[y])return;t[y]=!0;let a=parseFloat(r.fuzzy);(isNaN(a)||a<0)&&(a=6),t.name&&(S=t.name);let p=x()||sessionStorage.getItem(T)||"";p&&(t.value=p);let h=t.value;h&&f(h);let d;t.addEventListener("input",n=>{let o=n.target.value;clearTimeout(d),d=setTimeout(()=>f(o),C)},!1);function f(n){sessionStorage.setItem(T,n),!(n.length<2)&&v.find(n,a).then(o=>{})}}function L(t,r={}){if(t[y])return;t[y]=!0;let a="",p=parseFloat(r.minFound)||0,h=parseFloat(r.minScore)||0,d=parseFloat(r.maxResults)||0,f=!!r.highlight,n=r.resultElement||"ol",o=r.messageTemplate||document.getElementById("staticsearch_resultmessage");o||(o=document.createElement("template"),o.innerHTML='<p part="resultmessage"><span part="resultcount">0</span> found for <span part="searchterm"></span>&hellip;</p>');let g=r.itemTemplate||document.getElementById("staticsearch_item");g||(g=document.createElement("template"),g.innerHTML='<li part="item"><a part="link"><h2 part="title"></h2><p part="meta"><time part="date"></time> &ndash; <span part="words">0</span> words</p><p part="description"></p></a></li>'),t.addEventListener("click",l=>{let c=l.target.closest("a");c&&a&&A(a,c.id)}),document.addEventListener("staticsearch:result",l=>{a=l.detail.search;let c=l.detail.result,E=f?"#:~:"+a.split(/\W+/).reverse().map(e=>"text="+encodeURIComponent(e.trim().toLowerCase())).join("&"):"";t.innerHTML="";let u=document.createElement(n);u.setAttribute("part","searchresult"),c.forEach((e,b)=>{if(e.found<p||h&&e.relevancy<h||d&&b>=d)return;let m=g.content.cloneNode(!0);i(m,"link",null,{href:e.url+E,id:`staticsearchresult-${e.id}`}),i(m,"title",e.title),i(m,"description",e.description),e.date&&i(m,"date",I.date(new Date(e.date)),{datetime:e.date}),e.words&&i(m,"words",I.number(e.words)),u.appendChild(m)});let s=o.content.cloneNode(!0);if(i(s,"resultcount",u.childElementCount),i(s,"searchterm",a),t.appendChild(s),t.appendChild(u),!w&&location.hash){let e=t.querySelector(location.hash);e&&(e.focus(),e.scrollIntoView({behavior:"smooth",block:"nearest"}))}else t.scrollTop=0;w++},!1);function i(l,c,E,u={}){l.querySelectorAll(`[part="${c}"]`).forEach(s=>{for(let[e,b]of Object.entries(u))s.setAttribute(e,b);if(E){for(;s.firstElementChild;)s=s.firstElementChild;s.textContent=E}})}}export{F as staticSearchInput,x as staticSearchQuery,L as staticSearchResult,A as staticSearchSetQuery};

@@ -1,1 +0,1 @@

import{staticSearchQuery as h,staticSearchSetQuery as l,staticSearchInput as n,staticSearchResult as o}from"./__SSDIR__/staticsearch-bind.js";var a=class r extends HTMLElement{static path=new URL(import.meta.url).pathname.replace("__FILENAME__","");#t=null;#s=null;#a=null;connectedCallback(){let e=this.firstElementChild;if(this.tabIndex=0,this.attachShadow({mode:"open",delegatesFocus:!0}),!e)return;e.getAttribute("part")||e.setAttribute("part","activate");let s=document.createElement("link");s.rel="stylesheet",s.href=`${r.path}css/component.css`,this.shadowRoot.appendChild(s);let i=this.shadowRoot.appendChild(e);this.#r(),i.tabIndex=0,i.style.cursor="pointer",i.addEventListener("click",t=>this.#e(t)),i.addEventListener("keydown",t=>{(t.key==="Enter"||t.key===" ")&&this.#e(t)}),window.addEventListener("keydown",t=>{t.key==="k"&&(t.ctrlKey||t.metaKey)&&this.#e(t)}),window.addEventListener("click",t=>{!this.#t.open&&t.target.dataset.staticSearch&&this.#e(t)}),h()&&this.#e()}#e(e){e&&e.preventDefault(),this.#t.open?this.#i():(this.#t.showModal(),this.setAttribute("aria-expanded","true"),this.#s.select(),this.#s.focus())}#i(){this.#t.close(),this.removeAttribute("aria-expanded"),l()}#r(){let e=document.createElement("dialog");e.setAttribute("closedby","any"),e.setAttribute("part","dialog"),e.innerHTML=`<form method="dialog"><button part="close"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path xmlns="http://www.w3.org/2000/svg" fill="currentColor" d="M5.3 5.3a1 1 0 0 1 1.4 0l5.3 5.3 5.3-5.3a1 1 0 1 1 1.4 1.4L13.4 12l5.3 5.3a1 1 0 0 1-1.4 1.4L12 13.4l-5.3 5.3a1 1 0 0 1-1.4-1.4l5.3-5.3-5.3-5.3a1 1 0 0 1 0-1.4Z"/></svg></button></form><search part="search"><label for="search" part="searchlabel">${this.getAttribute("label")||"search"}</label><input type="search" id="search" name="q" minlength="2" maxlength="300" part="searchinput" /></search><div part="results"></div>`,this.#t=this.shadowRoot.appendChild(e),this.#s=this.shadowRoot.querySelector("#search"),this.#a=this.shadowRoot.querySelector('[part="results"]'),o(this.#a,{minFound:this.getAttribute("minfound"),minScore:this.getAttribute("minscore"),maxResults:this.getAttribute("maxresults"),highlight:this.hasAttribute("highlight")}),n(this.#s,{fuzzy:this.getAttribute("fuzzy")}),this.#t.addEventListener("close",()=>this.#i()),this.#t.addEventListener("click",s=>{this.#t.open&&s.target===this.#t&&this.#i()})}};customElements.define("static-search",a);
import{staticSearchQuery as h,staticSearchSetQuery as o,staticSearchInput as l,staticSearchResult as n}from"./__SSDIR__/staticsearch-bind.js";var a=class r extends HTMLElement{static path=new URL(import.meta.url).pathname.replace("__FILENAME__","");#t=null;#e=null;#a=null;connectedCallback(){let e=this.firstElementChild;if(this.tabIndex=0,this.attachShadow({mode:"open",delegatesFocus:!0}),!e)return;e.getAttribute("part")||e.setAttribute("part","activate");let s=document.createElement("link");s.rel="stylesheet",s.href=`${r.path}css/component.css`,this.shadowRoot.appendChild(s);let i=this.shadowRoot.appendChild(e);this.#r(),i.tabIndex=0,i.style.cursor="pointer",i.addEventListener("click",t=>this.#s(t)),i.addEventListener("keydown",t=>{(t.key==="Enter"||t.key===" ")&&this.#s(t)}),window.addEventListener("keydown",t=>{t.key==="k"&&(t.ctrlKey||t.metaKey)&&this.#s(t),t.key==="Escape"&&this.#t.open&&!this.#e.value&&this.#i()}),window.addEventListener("click",t=>{!this.#t.open&&t.target.dataset.staticSearch&&this.#s(t)}),h()&&this.#s()}#s(e){e&&e.preventDefault(),this.#t.open?this.#i():(this.#t.showModal(),this.setAttribute("aria-expanded","true"),this.#e.select(),this.#e.focus())}#i(){this.#t.close(),this.removeAttribute("aria-expanded"),o()}#r(){let e=document.createElement("dialog");e.setAttribute("closedby","any"),e.setAttribute("part","dialog"),e.innerHTML=`<form method="dialog"><button part="close"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path xmlns="http://www.w3.org/2000/svg" fill="currentColor" d="M5.3 5.3a1 1 0 0 1 1.4 0l5.3 5.3 5.3-5.3a1 1 0 1 1 1.4 1.4L13.4 12l5.3 5.3a1 1 0 0 1-1.4 1.4L12 13.4l-5.3 5.3a1 1 0 0 1-1.4-1.4l5.3-5.3-5.3-5.3a1 1 0 0 1 0-1.4Z"/></svg></button></form><search part="search"><label for="search" part="searchlabel">${this.getAttribute("label")||"search"}</label><input type="search" id="search" name="q" minlength="2" maxlength="300" part="searchinput" /></search><div part="results"></div><a part="poweredby" href="https://staticsearch.com/">powered by StaticSearch</a>`,this.#t=this.shadowRoot.appendChild(e),this.#e=this.shadowRoot.querySelector("#search"),this.#a=this.shadowRoot.querySelector('[part="results"]'),n(this.#a,{minFound:this.getAttribute("minfound"),minScore:this.getAttribute("minscore"),maxResults:this.getAttribute("maxresults"),highlight:this.hasAttribute("highlight")}),l(this.#e,{fuzzy:this.getAttribute("fuzzy")}),this.#t.addEventListener("close",()=>this.#i()),this.#t.addEventListener("click",s=>{this.#t.open&&s.target===this.#t&&this.#i()})}};customElements.define("static-search",a);

@@ -0,1 +1,2 @@

import pkg from './package.json' with { type: 'json' };
import process from 'node:process';

@@ -26,3 +27,3 @@ import { readdir, readFile, cp } from 'node:fs/promises';

#agent = 'staticsearch';
#clientJS = ['staticsearch.js', 'staticsearch-bind.js', 'staticsearch-component.js'];
#clientJS = ['staticsearch.js', 'staticsearch-bind.js', 'staticsearch-component.js', 'staticsearch-here.js'];
#wordIndexChars = 2;

@@ -83,2 +84,16 @@ #JSONspacing = '';

const logLine = '─'.repeat(53);
concol.log([
logLine,
' ___ _ _ _ ___ _ ',
' / __| |_ __ _| |_(_)__/ __| ___ __ _ _ _ __| |_ ',
' \\__ \\ _/ _` | _| / _\\__ \\/ -_) _` | \'_/ _| \' \\ ',
' |___/\\__\\__,_|\\__|_\\__|___/\\___\\__,_|_| \\__|_||_|',
'',
(`version ${ pkg.version } `).padStart(34, ' '),
' https://staticsearch.com/',
'',
], 2);
concol.log(['StaticSearch indexing started', '', ['processing HTML files in', workingBuildDir], ['writing index data to', workingSearchDir], '' ], 1);

@@ -196,2 +211,4 @@

let ssPresent = 0;
// create search word indexes

@@ -246,2 +263,5 @@ buildFile.forEach((page, idx) => {

// StaticSearch client script found in at least one page
if (page.html.ssPresent) ssPresent += 1;
});

@@ -365,2 +385,32 @@

// percentage of pages with staticsearch
const ssPercent = Math.round(ssPresent / buildFile.length * 100);
concol.log(
[
`StaticSearch client-side functionality${ ssPresent ? '' : ' NOT'} found`,
'',
[ 'indexed pages with search', ssPresent ],
[ 'site search availability', ssPercent, '%' ],
(
ssPercent > 50 ? '' :
`
For options, see https://staticsearch.com/
Example: put this code in every page where you want a search icon:
<script type="module" src="${ workingSearchDir.replace(workingBuildDir, '') }/staticsearch-here.js"></script>
`
),
logLine,
],
2
);
}

@@ -367,0 +417,0 @@

@@ -61,3 +61,5 @@ // data parsing functions

// title: String,
// description, String,
// description: String,
// date: 'YYYY-MM-DD',
// ssPresent: true|false, // StaticSearch client script found
// word: {

@@ -134,2 +136,5 @@ // title: Set(),

// static search client present?
res.ssPresent = !!dom.querySelector('script[src*="staticsearch"]');
// extract words

@@ -136,0 +141,0 @@ res.word = {

{
"name": "staticsearch",
"version": "0.7.0",
"version": "0.8.0",
"description": "Simple static site search system.",

@@ -5,0 +5,0 @@ "type": "module",

@@ -5,3 +5,3 @@ # StaticSearch

StaticSearch works with [Publican](https://publican.dev/) sites but you can use it on any static site built by any generator. It works best on English sites, but supports most Latin-based languages.
StaticSearch works with [Publican](https://publican.dev/) sites but you can use it with any static site generator that outputs HTML pages. It works best on English sites, but supports most Latin-based languages.

@@ -56,20 +56,20 @@ **[Full documentation is available at staticsearch.com](https://staticsearch.com/)**

StaticSearch provides a [web component](https://publican.dev/tools/staticsearch/search-web-component/) to enable search facilities. Add the following snippet to your static site template, perhaps in the HTML `<header>`:
StaticSearch provides four ways to add a search facility on your site. The easiest is a single `<script>` tag placed inside your pages perhaps in the HTML `<header>`:
```html
<script type="module" src="/search/staticsearch-component.js"></script>
<static-search title="press Ctrl+K to search">
<p>search</p>
</static-search>
<script type="module" src="/search/staticsearch-here.js"></script>
```
Use any HTML element inside `<static-search>` to activate search when it's clicked. You can now rebuild your site to include the update and [re-run the indexer](#index-your-site) to ensure word indexes are up-to-date.
This displays a icon in the script's location on the page that opens a search dialog when clicked.
If necessary, you can now rebuild your site to include this update and [re-run the indexer](#index-your-site) to ensure word indexes are up-to-date.
For full help, refer to:
* [StaticSearch script](https://staticsearch.com/staticsearch-here/): adds search functionality with a single `<script>`
* [StaticSearch web component](https://staticsearch.com/search-web-component/): provides full search functionality
* [StaticSearch bind module](https://staticsearch.com/search-bind-module/): attach search functionality to HTML `<input>` and result elements
* [StaticSearch bind module](https://staticsearch.com/search-bind-module/): attach search functionality to custom HTML `<input>` and result elements
* [StaticSearch JavaScript search API](https://staticsearch.com/search-api/): create your own custom search functionality.