diff --git a/compiled/_internal/searchWorker.min.js b/compiled/_internal/searchWorker.min.js index 2bb58fdf2f..5a7ef14301 100644 --- a/compiled/_internal/searchWorker.min.js +++ b/compiled/_internal/searchWorker.min.js @@ -1 +1 @@ -"use strict";(()=>{var P=Object.create;var k=Object.defineProperty;var z=Object.getOwnPropertyDescriptor;var D=Object.getOwnPropertyNames,R=Object.getOwnPropertySymbols,B=Object.getPrototypeOf,E=Object.prototype.hasOwnProperty,L=Object.prototype.propertyIsEnumerable;var O=(i,e,n)=>e in i?k(i,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):i[e]=n,I=(i,e)=>{for(var n in e||(e={}))E.call(e,n)&&O(i,n,e[n]);if(R)for(var n of R(e))L.call(e,n)&&O(i,n,e[n]);return i};var N=(i,e)=>()=>(e||i((e={exports:{}}).exports,e),e.exports);var F=(i,e,n,u)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of D(e))!E.call(i,r)&&r!==n&&k(i,r,{get:()=>e[r],enumerable:!(u=z(e,r))||u.enumerable});return i};var W=(i,e,n)=>(n=i!=null?P(B(i)):{},F(e||!i||!i.__esModule?k(n,"default",{value:i,enumerable:!0}):n,i));var j=N((K,w)=>{w.exports=function(i){var e={};function n(u){if(e[u])return e[u].exports;var r=e[u]={exports:{},id:u,loaded:!1};return i[u].call(r.exports,r,r.exports,n),r.loaded=!0,r.exports}return n.m=i,n.c=e,n.p="",n(0)}([function(i,e,n){i.exports=n(1)},function(i,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var u=n(2);Object.defineProperty(e,"combineChunks",{enumerable:!0,get:function(){return u.combineChunks}}),Object.defineProperty(e,"fillInChunks",{enumerable:!0,get:function(){return u.fillInChunks}}),Object.defineProperty(e,"findAll",{enumerable:!0,get:function(){return u.findAll}}),Object.defineProperty(e,"findChunks",{enumerable:!0,get:function(){return u.findChunks}})},function(i,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=e.findAll=function(t){var g=t.autoEscape,c=t.caseSensitive,f=c===void 0?!1:c,d=t.findChunks,o=d===void 0?r:d,h=t.sanitize,v=t.searchWords,T=t.textToHighlight;return l({chunksToHighlight:u({chunks:o({autoEscape:g,caseSensitive:f,sanitize:h,searchWords:v,textToHighlight:T})}),totalLength:T?T.length:0})},u=e.combineChunks=function(t){var g=t.chunks;return g=g.sort(function(c,f){return c.start-f.start}).reduce(function(c,f){if(c.length===0)return[f];var d=c.pop();if(f.start<=d.end){var o=Math.max(d.end,f.end);c.push({highlight:!1,start:d.start,end:o})}else c.push(d,f);return c},[]),g},r=function(t){var g=t.autoEscape,c=t.caseSensitive,f=t.sanitize,d=f===void 0?p:f,o=t.searchWords,h=t.textToHighlight;return h=d(h),o.filter(function(v){return v}).reduce(function(v,T){T=d(T),g&&(T=a(T));for(var m=new RegExp(T,c?"g":"gi"),y=void 0;y=m.exec(h);){var S=y.index,$=m.lastIndex;$>S&&v.push({highlight:!1,start:S,end:$}),y.index===m.lastIndex&&m.lastIndex++}return v},[])};e.findChunks=r;var l=e.fillInChunks=function(t){var g=t.chunksToHighlight,c=t.totalLength,f=[],d=function(v,T,m){T-v>0&&f.push({start:v,end:T,highlight:m})};if(g.length===0)d(0,c,!1);else{var o=0;g.forEach(function(h){d(o,h.start,!1),d(h.start,h.end,!0),o=h.end}),d(o,c,!1)}return f};function p(s){return s}function a(s){return s.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")}}])});var C=W(j()),H="tab";function M(i,e,n,u,r){let l=r!==void 0,p=u.reduce((a,s)=>(s.tocIndex===r&&(a[s.paraId]=(a[s.paraId]||"").concat(s.value)),a),[]).filter(Boolean);return Boolean(p.length)||l?{rawTitle:i,title:e,link:n,paragraphs:u.reduce((a,s)=>{var t,g;return s.tocIndex===r&&((g=a[t=s.paraId])!=null||(a[t]=""),a[s.paraId]+=s.value),a},[]).filter(Boolean)}:null}function x(i){return[i.title,i.subtitle].filter(Boolean).join(" ")}function _(i,e,n){let u=[],r=Object.values(e).reduce((l,p)=>{var a,s;return p.asset&&((s=l[a=p.routeId])!=null||(l[a]=[]),l[p.routeId].push(p)),l},{});return Object.values(i).forEach(l=>{var p;if("meta"in l&&!("isLayout"in l)){let a=l.meta,s=l.path.replace(/^([^/])/,"/$1")||"/",t=n.find(o=>s===o.link||s.startsWith(`${o.activePath}/`)),g=(r[l.id]||[]).map(o=>{var h;return(h=o.asset)==null?void 0:h.id}),c=M("",x(a.frontmatter),s,a.texts),f=a.toc.reduce((o,h,v)=>(!g.includes(h.id)&&h.depth>1&&o.push(M(h.title,`${x(a.frontmatter)} - ${h.title}`,`${s}#${h.id}`,a.texts,v)),o),[]),d=(a.tabs||[]).reduce((o,{key:h,meta:v})=>{let T=M("",`${x(a.frontmatter)} - ${v.frontmatter.title}`,`${s}?${H}=${h}`,v.texts);return T&&o.push(T),o.push(...v.toc.map((m,y)=>M(m.title,`${x(a.frontmatter)} - ${v.frontmatter.title} - ${m.title}`,`${s}?${H}=${h}#${m.id}`,v.texts,y))),o},[]);u.push({navTitle:t==null?void 0:t.title,navOrder:t?n.indexOf(t):1/0,title:x(a.frontmatter),link:s,sections:[...c?[c]:[],...f,...d],demos:((p=r[l.id])==null?void 0:p.map(o=>({link:`${s}#${o.asset.id}`,rawTitle:o.asset.title||"",title:o.asset.title||x(a.frontmatter),description:o.asset.description||"",keywords:o.asset.keywords||[]})))||[]})}}),u}function b(i="",e,n=1){let u=(0,C.findAll)({textToHighlight:i,searchWords:e,autoEscape:!0}),r={};return[u.map(({start:l,end:p,highlight:a},s)=>{let t={text:i.slice(l,p)};return s===0&&!a&&u.length>1&&t.text.length>20&&(t.text=`...${t.text.slice(-20)}`),a&&(t.highlighted=!0,r[e.find(g=>t.text.includes(g))]=n),t}),r]}function Y(i,e){let n=e.split(" "),u=new RegExp(e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&").replace(" ","|"),"gi"),r={};return i.forEach(l=>{var a,s;let p=[];if(l.sections.forEach(t=>{for(let g of t.paragraphs)if(u.test(g)){let[c,f]=b(t.title,n,10),[d,o]=b(g,n);p.push({type:"content",link:t.link,priority:Object.values(I(I({},o),f)).reduce((h,v)=>h+v,0),highlightTitleTexts:c,highlightTexts:d});return}if(u.test(t.rawTitle)){let[g,c]=b(t.title,n,10);p.push({type:"title",link:t.link,priority:Object.values(c).reduce((f,d)=>f+d,0),highlightTitleTexts:g,highlightTexts:b(t.paragraphs[0]||"",n)[0]})}}),l.demos.forEach(t=>{if(u.test(t.rawTitle)||u.test(t.description)){let[g,c]=b(t.title,n,10),[f,d]=b(t.description,n);p.push({type:"demo",link:t.link,priority:Object.values(I(I({},d),c)).reduce((o,h)=>o+h,0),highlightTitleTexts:g,highlightTexts:f})}}),u.test(l.title)){let[t,g]=b(l.title,n,100);p.push({type:"page",link:l.link,priority:Object.values(g).reduce((c,f)=>c+f,0),highlightTitleTexts:t,highlightTexts:b(((a=l.sections[0])==null?void 0:a.paragraphs[0])||"",n)[0]})}if(p.length){let t=l.navTitle||"$ROOT";(s=r[t])!=null||(r[t]={title:l.navTitle,priority:l.navOrder*1e3,hints:[]}),r[t].hints.push(...p)}}),Object.values(r).forEach(({hints:l})=>{l.sort((p,a)=>a.priority-p.priority)}),Object.values(r).sort((l,p)=>p.priority-l.priority)}var A;self.onmessage=({data:i})=>{switch(i.action){case"generate-metadata":A=_(i.args.routes,i.args.demos,i.args.nav);break;case"get-search-result":self.postMessage(Y(A,i.args.keywords));break;default:}};})(); +"use strict";(()=>{var P=Object.create;var I=Object.defineProperty;var z=Object.getOwnPropertyDescriptor;var D=Object.getOwnPropertyNames,R=Object.getOwnPropertySymbols,B=Object.getPrototypeOf,E=Object.prototype.hasOwnProperty,L=Object.prototype.propertyIsEnumerable;var O=(e,t,i)=>t in e?I(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i,M=(e,t)=>{for(var i in t||(t={}))E.call(t,i)&&O(e,i,t[i]);if(R)for(var i of R(t))L.call(t,i)&&O(e,i,t[i]);return e};var F=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var N=(e,t,i,h)=>{if(t&&typeof t=="object"||typeof t=="function")for(let a of D(t))!E.call(e,a)&&a!==i&&I(e,a,{get:()=>t[a],enumerable:!(h=z(t,a))||h.enumerable});return e};var W=(e,t,i)=>(i=e!=null?P(B(e)):{},N(t||!e||!e.__esModule?I(i,"default",{value:e,enumerable:!0}):i,e));var j=F((K,w)=>{w.exports=function(e){var t={};function i(h){if(t[h])return t[h].exports;var a=t[h]={exports:{},id:h,loaded:!1};return e[h].call(a.exports,a,a.exports,i),a.loaded=!0,a.exports}return i.m=e,i.c=t,i.p="",i(0)}([function(e,t,i){e.exports=i(1)},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var h=i(2);Object.defineProperty(t,"combineChunks",{enumerable:!0,get:function(){return h.combineChunks}}),Object.defineProperty(t,"fillInChunks",{enumerable:!0,get:function(){return h.fillInChunks}}),Object.defineProperty(t,"findAll",{enumerable:!0,get:function(){return h.findAll}}),Object.defineProperty(t,"findChunks",{enumerable:!0,get:function(){return h.findChunks}})},function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=t.findAll=function(s){var n=s.autoEscape,c=s.caseSensitive,f=c===void 0?!1:c,p=s.findChunks,u=p===void 0?a:p,g=s.sanitize,v=s.searchWords,T=s.textToHighlight;return o({chunksToHighlight:h({chunks:u({autoEscape:n,caseSensitive:f,sanitize:g,searchWords:v,textToHighlight:T})}),totalLength:T?T.length:0})},h=t.combineChunks=function(s){var n=s.chunks;return n=n.sort(function(c,f){return c.start-f.start}).reduce(function(c,f){if(c.length===0)return[f];var p=c.pop();if(f.start<=p.end){var u=Math.max(p.end,f.end);c.push({highlight:!1,start:p.start,end:u})}else c.push(p,f);return c},[]),n},a=function(s){var n=s.autoEscape,c=s.caseSensitive,f=s.sanitize,p=f===void 0?d:f,u=s.searchWords,g=s.textToHighlight;return g=p(g),u.filter(function(v){return v}).reduce(function(v,T){T=p(T),n&&(T=r(T));for(var m=new RegExp(T,c?"g":"gi"),x=void 0;x=m.exec(g);){var S=x.index,$=m.lastIndex;$>S&&v.push({highlight:!1,start:S,end:$}),x.index===m.lastIndex&&m.lastIndex++}return v},[])};t.findChunks=a;var o=t.fillInChunks=function(s){var n=s.chunksToHighlight,c=s.totalLength,f=[],p=function(v,T,m){T-v>0&&f.push({start:v,end:T,highlight:m})};if(n.length===0)p(0,c,!1);else{var u=0;n.forEach(function(g){p(u,g.start,!1),p(g.start,g.end,!0),u=g.end}),p(u,c,!1)}return f};function d(l){return l}function r(l){return l.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")}}])});var C=W(j());var H="tab";function k(e,t,i,h,a){let o=a!==void 0,d=h.reduce((r,l)=>(l.tocIndex===a&&(r[l.paraId]=(r[l.paraId]||"").concat(l.value)),r),[]).filter(Boolean);return Boolean(d.length)||o?{rawTitle:e,title:t,link:i,paragraphs:h.reduce((r,l)=>{var s,n;return l.tocIndex===a&&((n=r[s=l.paraId])!=null||(r[s]=""),r[l.paraId]+=l.value),r},[]).filter(Boolean)}:null}function y(e){return[e.title,e.subtitle].filter(Boolean).join(" ")}function _(e,t,i){let h=[],a=Object.values(t).reduce((o,d)=>{var r,l;return d.asset&&((l=o[r=d.routeId])!=null||(o[r]=[]),o[d.routeId].push(d)),o},{});return Object.values(e).forEach(o=>{var d;if("meta"in o&&!("isLayout"in o)){let r=o.meta,l=o.path.replace(/^([^/])/,"/$1")||"/",s=i.find(u=>l===u.link||l.startsWith(`${u.activePath}/`)),n=(a[o.id]||[]).map(u=>{var g;return(g=u.asset)==null?void 0:g.id}),c=k("",y(r.frontmatter),l,r.texts),f=r.toc.reduce((u,g,v)=>(!n.includes(g.id)&&g.depth>1&&u.push(k(g.title,`${y(r.frontmatter)} - ${g.title}`,`${l}#${g.id}`,r.texts,v)),u),[]),p=(r.tabs||[]).reduce((u,{key:g,meta:v})=>{let T=k("",`${y(r.frontmatter)} - ${v.frontmatter.title}`,`${l}?${H}=${g}`,v.texts);return T&&u.push(T),u.push(...v.toc.map((m,x)=>k(m.title,`${y(r.frontmatter)} - ${v.frontmatter.title} - ${m.title}`,`${l}?${H}=${g}#${m.id}`,v.texts,x))),u},[]);h.push({navTitle:s==null?void 0:s.title,navOrder:s?i.indexOf(s):1/0,title:y(r.frontmatter),link:l,sections:[...c?[c]:[],...f,...p],demos:((d=a[o.id])==null?void 0:d.map(u=>({link:`${l}#${u.asset.id}`,rawTitle:u.asset.title||"",title:u.asset.title||y(r.frontmatter),description:u.asset.description||"",keywords:u.asset.keywords||[]})))||[]})}}),h}function b(e="",t,i=1){let h=(0,C.findAll)({textToHighlight:e,searchWords:t,autoEscape:!0}),a={};return[h.map(({start:o,end:d,highlight:r},l)=>{let s={text:e.slice(o,d)};return l===0&&!r&&h.length>1&&s.text.length>20&&(s.text=`...${s.text.slice(-20)}`),r&&(s.highlighted=!0,a[t.find(n=>s.text.includes(n))]=i),s}),a]}function Y(e,t){let i=t.split(" "),h=new RegExp(t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&").replace(" ","|"),"i"),a={};return e.forEach(o=>{var l,s;let d=o.title,r=[];if(o.sections.forEach(n=>{for(let c of n.paragraphs)if(h.test(c)){let[f,p]=b(n.title,i,10),[u,g]=b(c,i);r.push({type:"content",link:n.link,priority:Object.values(M(M({},g),p)).reduce((v,T)=>v+T,0),highlightTitleTexts:f,highlightTexts:u,pageTitle:d});return}if(h.test(n.rawTitle)){let[c,f]=b(n.title,i,10);r.push({type:"title",link:n.link,priority:Object.values(f).reduce((p,u)=>p+u,0),highlightTitleTexts:c,highlightTexts:b(n.paragraphs[0]||"",i)[0],pageTitle:d})}}),o.demos.forEach(n=>{if(h.test(n.rawTitle)||h.test(n.description)){let[c,f]=b(n.title,i,10),[p,u]=b(n.description,i);r.push({type:"demo",link:n.link,priority:Object.values(M(M({},u),f)).reduce((g,v)=>g+v,0),highlightTitleTexts:c,highlightTexts:p,pageTitle:d})}}),h.test(o.title)){let[n,c]=b(o.title,i,100);r.push({type:"page",link:o.link,priority:Object.values(c).reduce((f,p)=>f+p,0),highlightTitleTexts:n,highlightTexts:b(((l=o.sections[0])==null?void 0:l.paragraphs[0])||"",i)[0],pageTitle:d})}if(r.length){let n=o.navTitle||"$ROOT";(s=a[n])!=null||(a[n]={title:o.navTitle,priority:o.navOrder*1e3,hints:[]}),a[n].hints.push(...r)}}),Object.values(a).forEach(({hints:o})=>{o.sort((d,r)=>r.priority-d.priority)}),Object.values(a).sort((o,d)=>d.priority-o.priority)}var A;self.onmessage=({data:e})=>{switch(e.action){case"generate-metadata":A=_(e.args.routes,e.args.demos,e.args.nav);break;case"get-search-result":self.postMessage(Y(A,e.args.keywords));break;default:}};})(); diff --git a/src/client/theme-api/useSiteSearch/index.ts b/src/client/theme-api/useSiteSearch/index.ts index 30c55e529a..653d46717b 100644 --- a/src/client/theme-api/useSiteSearch/index.ts +++ b/src/client/theme-api/useSiteSearch/index.ts @@ -16,6 +16,7 @@ export interface ISearchNavResult { type: 'page' | 'title' | 'demo' | 'content'; link: string; priority: number; + pageTitle: string; highlightTitleTexts: IHighlightText[]; highlightTexts: IHighlightText[]; }[]; diff --git a/src/client/theme-api/useSiteSearch/searchWorker.ts b/src/client/theme-api/useSiteSearch/searchWorker.ts index 8f4d40a427..74c38817fe 100644 --- a/src/client/theme-api/useSiteSearch/searchWorker.ts +++ b/src/client/theme-api/useSiteSearch/searchWorker.ts @@ -247,6 +247,7 @@ function generateSearchResult(metadata: ISearchMetadata, keywordsStr: string) { // traverse metadata from all routes metadata.forEach((data) => { + const pageTitle = data.title; const hints: ISearchResult[0]['hints'] = []; // find content & section hints @@ -270,6 +271,7 @@ function generateSearchResult(metadata: ISearchMetadata, keywordsStr: string) { }).reduce((acc, p) => acc + p, 0), highlightTitleTexts, highlightTexts, + pageTitle, }); // match at most once in the same section @@ -297,6 +299,7 @@ function generateSearchResult(metadata: ISearchMetadata, keywordsStr: string) { sec.paragraphs[0] || '', keywords, )[0], + pageTitle, }); } }); @@ -323,6 +326,7 @@ function generateSearchResult(metadata: ISearchMetadata, keywordsStr: string) { }).reduce((acc, p) => acc + p, 0), highlightTitleTexts, highlightTexts, + pageTitle, }); } }); @@ -347,6 +351,7 @@ function generateSearchResult(metadata: ISearchMetadata, keywordsStr: string) { data.sections[0]?.paragraphs[0] || '', keywords, )[0], + pageTitle, }); }