From 94893a2c7ab4e46fa9cad2da47121d96983e59bf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Goetz?= Date: Thu, 19 Sep 2019 22:00:34 +0200 Subject: [PATCH] Use flexsearch to power search --- package.json | 3 +- search/search.min.js | 2 +- search/search.min.js.map | 2 +- src/js/search/Pagination.js | 2 +- src/js/search/Result.js | 21 ++--- src/js/search/Search.js | 44 +++------ src/js/search/index.js | 44 +++++++-- src/js/search/stopwords.js | 177 ----------------------------------- src/js/search/translation.js | 3 - src/js/search/utils.js | 120 ------------------------ yarn.lock | 13 ++- 11 files changed, 71 insertions(+), 360 deletions(-) delete mode 100644 src/js/search/stopwords.js delete mode 100644 src/js/search/utils.js diff --git a/package.json b/package.json index 0500900..d6ae45b 100644 --- a/package.json +++ b/package.json @@ -8,7 +8,8 @@ "@swissquote/crafty-preset-postcss": "^1.8.0", "@swissquote/crafty-runner-gulp": "^1.8.0", "@swissquote/crafty-runner-rollup": "^1.8.0", - "preact": "^8.5.2" + "flexsearch": "^0.6.30", + "preact": "^10.0.0-rc.3" }, "scripts": { "build": "crafty run", diff --git a/search/search.min.js b/search/search.min.js index fe6429b..553bcb9 100644 --- a/search/search.min.js +++ b/search/search.min.js @@ -1,2 +1,2 @@ -function e(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function t(e,t){for(var n=0;n2;)r.push(arguments[u]);for(s&&null!=s.children&&(r.length||r.push(s.children),delete s.children);r.length;)if((l=r.pop())&&void 0!==l.pop)for(u=l.length;u--;)r.push(l[u]);else"boolean"==typeof l&&(l=null),(c="function"!=typeof e)&&(null==l?l="":"number"==typeof l?l=String(l):"string"!=typeof l&&(c=!1)),c&&a?i[i.length-1]+=l:i===o?i=[l]:i.push(l),a=c;var h=new t;return h.nodeName=e,h.children=i,h.attributes=null==s?void 0:s,h.key=null==s?void 0:s.key,void 0!==n.vnode&&n.vnode(h),h}function i(e,t){for(var n in t)e[n]=t[n];return e}function a(e,t){e&&("function"==typeof e?e(t):e.current=t)}var l="function"==typeof Promise?Promise.resolve().then.bind(Promise.resolve()):setTimeout;function c(e,t){return s(e.nodeName,i(i({},e.attributes),t),arguments.length>2?[].slice.call(arguments,2):e.children)}var u=0,h=1,d=2,p=3,f="__preactattr_",v=/acit|ex(?:s|g|n|p|$)|rph|ows|mnc|ntw|ine[ch]|zoo|^ord/i,m=[];function g(e){!e._dirty&&(e._dirty=!0)&&1==m.push(e)&&(n.debounceRendering||l)(y)}function y(){for(var e=void 0;e=m.pop();)e._dirty&&W(e)}function _(e,t,n){return"string"==typeof t||"number"==typeof t?void 0!==e.splitText:"string"==typeof t.nodeName?!e._componentConstructor&&w(e,t.nodeName):n||e._componentConstructor===t.nodeName}function w(e,t){return e.normalizedNodeName===t||e.nodeName.toLowerCase()===t.toLowerCase()}function b(e){var t=i({},e.attributes);t.children=e.children;var n=e.nodeName.defaultProps;if(void 0!==n)for(var r in n)void 0===t[r]&&(t[r]=n[r]);return t}function C(e){var t=e.parentNode;t&&t.removeChild(e)}function S(e,t,n,r,o){if("className"===t&&(t="class"),"key"===t);else if("ref"===t)a(n,null),a(r,e);else if("class"!==t||o)if("style"===t){if(r&&"string"!=typeof r&&"string"!=typeof n||(e.style.cssText=r||""),r&&"object"==typeof r){if("string"!=typeof n)for(var s in n)s in r||(e.style[s]="");for(var i in r)e.style[i]="number"==typeof r[i]&&!1===v.test(i)?r[i]+"px":r[i]}}else if("dangerouslySetInnerHTML"===t)r&&(e.innerHTML=r.__html||"");else if("o"==t[0]&&"n"==t[1]){var l=t!==(t=t.replace(/Capture$/,""));t=t.toLowerCase().substring(2),r?n||e.addEventListener(t,x,l):e.removeEventListener(t,x,l),(e._listeners||(e._listeners={}))[t]=r}else if("list"!==t&&"type"!==t&&!o&&t in e){try{e[t]=null==r?"":r}catch(e){}null!=r&&!1!==r||"spellcheck"==t||e.removeAttribute(t)}else{var c=o&&t!==(t=t.replace(/^xlink:?/,""));null==r||!1===r?c?e.removeAttributeNS("http://www.w3.org/1999/xlink",t.toLowerCase()):e.removeAttribute(t):"function"!=typeof r&&(c?e.setAttributeNS("http://www.w3.org/1999/xlink",t.toLowerCase(),r):e.setAttribute(t,r))}else e.className=r||""}function x(e){return this._listeners[e.type](n.event&&n.event(e)||e)}var N=[],k=0,P=!1,O=!1;function R(){for(var e=void 0;e=N.shift();)n.afterMount&&n.afterMount(e),e.componentDidMount&&e.componentDidMount()}function L(e,t,n,r,o,s){k++||(P=null!=o&&void 0!==o.ownerSVGElement,O=null!=e&&!(f in e));var i=T(e,t,n,r,s);return o&&i.parentNode!==o&&o.appendChild(i),--k||(O=!1,s||R()),i}function T(e,t,n,r,o){var s=e,i=P;if(null!=t&&"boolean"!=typeof t||(t=""),"string"==typeof t||"number"==typeof t)return e&&void 0!==e.splitText&&e.parentNode&&(!e._component||o)?e.nodeValue!=t&&(e.nodeValue=t):(s=document.createTextNode(t),e&&(e.parentNode&&e.parentNode.replaceChild(s,e),E(e,!0))),s[f]=!0,s;var a,l,c=t.nodeName;if("function"==typeof c)return function(e,t,n,r){for(var o=e&&e._component,s=o,i=e,a=o&&e._componentConstructor===t.nodeName,l=a,c=b(t);o&&!l&&(o=o._parentComponent);)l=o.constructor===t.nodeName;return o&&l&&(!r||o._component)?(B(o,c,p,n,r),e=o.base):(s&&!a&&(I(s),e=i=null),o=D(t.nodeName,c,n),e&&!o.nextBase&&(o.nextBase=e,i=null),B(o,c,h,n,r),e=o.base,i&&e!==i&&(i._component=null,E(i,!1))),e}(e,t,n,r);if(P="svg"===c||"foreignObject"!==c&&P,c=String(c),(!e||!w(e,c))&&(a=c,(l=P?document.createElementNS("http://www.w3.org/2000/svg",a):document.createElement(a)).normalizedNodeName=a,s=l,e)){for(;e.firstChild;)s.appendChild(e.firstChild);e.parentNode&&e.parentNode.replaceChild(s,e),E(e,!0)}var u=s.firstChild,d=s[f],v=t.children;if(null==d){d=s[f]={};for(var m=s.attributes,g=m.length;g--;)d[m[g].name]=m[g].value}return!O&&v&&1===v.length&&"string"==typeof v[0]&&null!=u&&void 0!==u.splitText&&null==u.nextSibling?u.nodeValue!=v[0]&&(u.nodeValue=v[0]):(v&&v.length||null!=u)&&function(e,t,n,r,o){var s=e.childNodes,i=[],a={},l=0,c=0,u=s.length,h=0,d=t?t.length:0,p=void 0,v=void 0,m=void 0,g=void 0,y=void 0;if(0!==u)for(var w=0;w0&&h.h("li",{className:"Pager--prev"},h.h("a",{className:"SearchResults__footer__link",onClick:function(){return s(r-o.show)}},C)),l,a+1!==i&&h.h("li",{className:"Pager--next"},h.h("a",{className:"SearchResults__footer__link",onClick:function(){return s(r+o.show)}},S))))}function E(e){var t,n=e.settings,r=e.item;return r.desc&&(t=r.desc.split(" ").slice(0,n.descriptiveWords).join(" "),r.desc.length=r&&nt.show&&h.h(T,{counter:o,start:i,settings:t,onPageSelect:this.handlePaginate})))}}]),r}(),I=document.title,H=function(){function t(n){var s=this;e(this,t),this.keyUpHandler=function(e){27===e.which&&s.handleClose()},this.handleClose=function(){document.title=I,document.removeEventListener("keyup",s.keyUpHandler),document.body.classList.remove("with-search"),h.render("",s.resultContainer,s.renderedElement),s.resultContainer=null,s.renderedElement=null},this.settings=function(e){for(var t=1;t3)for(n=[n],i=3;i=i&&(this.u=this.g),this.u===this.g&&(this.cache&&this.j.set(e,this.o),this.F&&this.F(this.o))),this}function r(t,e){const n=t.length,i=m(e),r=[];for(let s=0,o=0;s=o&&((t=(t=t[l-(r+.5>>0)])[n]||(t[n]=[]))[t.length]=i),r)}function u(t,e){if(t){const n=Object.keys(t);for(let i=0,r=n.length;i(t=t.length-e.length)?1:t?-1:0}function p(t,e){return(t=t[T])<(e=e[T])?-1:t>e?1:0}function d(t,e){const n=T.length;for(let i=0;ie?1:0}function _(t,e,n){return t?{page:t,next:e?""+e:null,result:n}:n}function g(t,e,n,i,r,s,o){let l,h=[];if(!0===n){n="0";var c=""}else c=n&&n.split(":");const u=t.length;if(1o&&(c=0),(l=(c=c||0)+e)=this.m.length&&(this.C=0),this.m[this.C].postMessage({add:!0,id:t,content:e}),this.c[o]=""+this.C,n&&n(),this;if(!s){if(this.async&&"function"!=typeof importScripts){let r=this;return o=new Promise((function(n){setTimeout((function(){r.add(t,e,null,i,!0),r=null,n()}))})),n?(o.then(n),this):o}if(n)return this.add(t,e,null,i,!0),n(),this}if(!(e=this.encode(e)).length)return this;s=m(n=this.f)?n(e):e.split(this.split),this.filter&&(s=r(s,this.filter));const p=x();p._ctx=x();const d=s.length,_=this.threshold,g=this.depth,y=this.b,v=this.i,b=this.D;for(let e=0;ef;n--)c(v,p,a=l.substring(f,n),t,e,u,_,y-1)}break;default:if(h=c(v,p,l,t,1,u,_,y-1),g&&1=_)for(h=p._ctx[l]||(p._ctx[l]=x()),l=this.h[l]||(this.h[l]=k(y-(_||0))),0>(u=e-g)&&(u=0),(a=e+g+1)>d&&(a=d);ur;n--)i=s[n-1],s[n]=i,e[i]=n;s[r]=t,e[t]=r}}}return e},t}();return n}(function(){const t={},e="undefined"!=typeof Blob&&"undefined"!=typeof URL&&URL.createObjectURL;return function(n,i,r,s,o){return r=e?URL.createObjectURL(new Blob(["("+r.toString()+")()"],{type:"text/javascript"})):n+".min.js",t[n+="-"+i]||(t[n]=[]),t[n][o]=new Worker(r),t[n][o].onmessage=s,t[n][o]}}()),M)})),W=window.searchTranslation,B=W.Link_previous,F=W.Link_next,z=W.Search_no_results,H=W.Search_one_character_or_more,q=W.Search_one_result,G=W.Search_results,$=W.Search_should_be_x_or_more,J=W.Search_too_short,V=B,K=F,Q=z,X=H,Y=q,Z=G,tt=$,et=J;function nt(t){var e,n=t.counter,i=t.start,r=t.settings,s=t.onPageSelect,o=Math.ceil(n/r.show),l=i/r.show;e=l<=2?Math.min(o,3):Math.min(o,l+2);for(var h=[],c=function(t){t===l?h.push(v("li",{className:"current"},t+1)):h.push(v("li",null,v("a",{className:"SearchResults__footer__link",onClick:function(){return s(t*r.show)}},t+1)))},u=0;u0&&v("li",{className:"Pager--prev"},v("a",{className:"SearchResults__footer__link",onClick:function(){return s(i-r.show)}},V)),h,l+1!==o&&v("li",{className:"Pager--next"},v("a",{className:"SearchResults__footer__link",onClick:function(){return s(i+r.show)}},K))))}function it(t){var e,n=t.settings,i=t.item;return i.text&&(e=i.text.split(" ").slice(0,n.descriptiveWords).join(" "),i.text.length=e&&ie.show&&v(nt,{counter:r,start:o,settings:e,onPageSelect:this.handlePaginate})))}}]),i}(),st=document.title;function ot(t){var e=new RegExp("[?|&]".concat(t,"=([^&;]+?)(&|#|;|$)")).exec(window.location.search);return decodeURIComponent((e&&e[1]||"").replace(/\+/g,"%20"))||null}var lt=function(){function e(n){var s=this;t(this,e),this.keyUpHandler=function(t){27===t.which&&s.handleClose()},this.handleClose=function(){document.title=st,document.removeEventListener("keyup",s.keyUpHandler),document.body.classList.remove("with-search"),I(null,s.resultContainer),s.resultContainer=null},this.settings=function(t){for(var e=1;e 2;) {\n\t\t\tstack.push(arguments[i]);\n\t\t}\n\t\tif (attributes && attributes.children != null) {\n\t\t\tif (!stack.length) stack.push(attributes.children);\n\t\t\tdelete attributes.children;\n\t\t}\n\t\twhile (stack.length) {\n\t\t\tif ((child = stack.pop()) && child.pop !== undefined) {\n\t\t\t\tfor (i = child.length; i--;) {\n\t\t\t\t\tstack.push(child[i]);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (typeof child === 'boolean') child = null;\n\n\t\t\t\tif (simple = typeof nodeName !== 'function') {\n\t\t\t\t\tif (child == null) child = '';else if (typeof child === 'number') child = String(child);else if (typeof child !== 'string') simple = false;\n\t\t\t\t}\n\n\t\t\t\tif (simple && lastSimple) {\n\t\t\t\t\tchildren[children.length - 1] += child;\n\t\t\t\t} else if (children === EMPTY_CHILDREN) {\n\t\t\t\t\tchildren = [child];\n\t\t\t\t} else {\n\t\t\t\t\tchildren.push(child);\n\t\t\t\t}\n\n\t\t\t\tlastSimple = simple;\n\t\t\t}\n\t\t}\n\n\t\tvar p = new VNode();\n\t\tp.nodeName = nodeName;\n\t\tp.children = children;\n\t\tp.attributes = attributes == null ? undefined : attributes;\n\t\tp.key = attributes == null ? undefined : attributes.key;\n\n\t\tif (options.vnode !== undefined) options.vnode(p);\n\n\t\treturn p;\n\t}\n\n\tfunction extend(obj, props) {\n\t for (var i in props) {\n\t obj[i] = props[i];\n\t }return obj;\n\t}\n\n\tfunction applyRef(ref, value) {\n\t if (ref) {\n\t if (typeof ref == 'function') ref(value);else ref.current = value;\n\t }\n\t}\n\n\tvar defer = typeof Promise == 'function' ? Promise.resolve().then.bind(Promise.resolve()) : setTimeout;\n\n\tfunction cloneElement(vnode, props) {\n\t return h(vnode.nodeName, extend(extend({}, vnode.attributes), props), arguments.length > 2 ? [].slice.call(arguments, 2) : vnode.children);\n\t}\n\n\tvar NO_RENDER = 0;\n\n\tvar SYNC_RENDER = 1;\n\n\tvar FORCE_RENDER = 2;\n\n\tvar ASYNC_RENDER = 3;\n\n\tvar ATTR_KEY = '__preactattr_';\n\n\tvar IS_NON_DIMENSIONAL = /acit|ex(?:s|g|n|p|$)|rph|ows|mnc|ntw|ine[ch]|zoo|^ord/i;\n\n\tvar items = [];\n\n\tfunction enqueueRender(component) {\n\t\tif (!component._dirty && (component._dirty = true) && items.push(component) == 1) {\n\t\t\t(options.debounceRendering || defer)(rerender);\n\t\t}\n\t}\n\n\tfunction rerender() {\n\t\tvar p = void 0;\n\t\twhile (p = items.pop()) {\n\t\t\tif (p._dirty) renderComponent(p);\n\t\t}\n\t}\n\n\tfunction isSameNodeType(node, vnode, hydrating) {\n\t\tif (typeof vnode === 'string' || typeof vnode === 'number') {\n\t\t\treturn node.splitText !== undefined;\n\t\t}\n\t\tif (typeof vnode.nodeName === 'string') {\n\t\t\treturn !node._componentConstructor && isNamedNode(node, vnode.nodeName);\n\t\t}\n\t\treturn hydrating || node._componentConstructor === vnode.nodeName;\n\t}\n\n\tfunction isNamedNode(node, nodeName) {\n\t\treturn node.normalizedNodeName === nodeName || node.nodeName.toLowerCase() === nodeName.toLowerCase();\n\t}\n\n\tfunction getNodeProps(vnode) {\n\t\tvar props = extend({}, vnode.attributes);\n\t\tprops.children = vnode.children;\n\n\t\tvar defaultProps = vnode.nodeName.defaultProps;\n\t\tif (defaultProps !== undefined) {\n\t\t\tfor (var i in defaultProps) {\n\t\t\t\tif (props[i] === undefined) {\n\t\t\t\t\tprops[i] = defaultProps[i];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn props;\n\t}\n\n\tfunction createNode(nodeName, isSvg) {\n\t\tvar node = isSvg ? document.createElementNS('http://www.w3.org/2000/svg', nodeName) : document.createElement(nodeName);\n\t\tnode.normalizedNodeName = nodeName;\n\t\treturn node;\n\t}\n\n\tfunction removeNode(node) {\n\t\tvar parentNode = node.parentNode;\n\t\tif (parentNode) parentNode.removeChild(node);\n\t}\n\n\tfunction setAccessor(node, name, old, value, isSvg) {\n\t\tif (name === 'className') name = 'class';\n\n\t\tif (name === 'key') {} else if (name === 'ref') {\n\t\t\tapplyRef(old, null);\n\t\t\tapplyRef(value, node);\n\t\t} else if (name === 'class' && !isSvg) {\n\t\t\tnode.className = value || '';\n\t\t} else if (name === 'style') {\n\t\t\tif (!value || typeof value === 'string' || typeof old === 'string') {\n\t\t\t\tnode.style.cssText = value || '';\n\t\t\t}\n\t\t\tif (value && typeof value === 'object') {\n\t\t\t\tif (typeof old !== 'string') {\n\t\t\t\t\tfor (var i in old) {\n\t\t\t\t\t\tif (!(i in value)) node.style[i] = '';\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfor (var _i in value) {\n\t\t\t\t\tnode.style[_i] = typeof value[_i] === 'number' && IS_NON_DIMENSIONAL.test(_i) === false ? value[_i] + 'px' : value[_i];\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (name === 'dangerouslySetInnerHTML') {\n\t\t\tif (value) node.innerHTML = value.__html || '';\n\t\t} else if (name[0] == 'o' && name[1] == 'n') {\n\t\t\tvar useCapture = name !== (name = name.replace(/Capture$/, ''));\n\t\t\tname = name.toLowerCase().substring(2);\n\t\t\tif (value) {\n\t\t\t\tif (!old) node.addEventListener(name, eventProxy, useCapture);\n\t\t\t} else {\n\t\t\t\tnode.removeEventListener(name, eventProxy, useCapture);\n\t\t\t}\n\t\t\t(node._listeners || (node._listeners = {}))[name] = value;\n\t\t} else if (name !== 'list' && name !== 'type' && !isSvg && name in node) {\n\t\t\ttry {\n\t\t\t\tnode[name] = value == null ? '' : value;\n\t\t\t} catch (e) {}\n\t\t\tif ((value == null || value === false) && name != 'spellcheck') node.removeAttribute(name);\n\t\t} else {\n\t\t\tvar ns = isSvg && name !== (name = name.replace(/^xlink:?/, ''));\n\n\t\t\tif (value == null || value === false) {\n\t\t\t\tif (ns) node.removeAttributeNS('http://www.w3.org/1999/xlink', name.toLowerCase());else node.removeAttribute(name);\n\t\t\t} else if (typeof value !== 'function') {\n\t\t\t\tif (ns) node.setAttributeNS('http://www.w3.org/1999/xlink', name.toLowerCase(), value);else node.setAttribute(name, value);\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction eventProxy(e) {\n\t\treturn this._listeners[e.type](options.event && options.event(e) || e);\n\t}\n\n\tvar mounts = [];\n\n\tvar diffLevel = 0;\n\n\tvar isSvgMode = false;\n\n\tvar hydrating = false;\n\n\tfunction flushMounts() {\n\t\tvar c = void 0;\n\t\twhile (c = mounts.shift()) {\n\t\t\tif (options.afterMount) options.afterMount(c);\n\t\t\tif (c.componentDidMount) c.componentDidMount();\n\t\t}\n\t}\n\n\tfunction diff(dom, vnode, context, mountAll, parent, componentRoot) {\n\t\tif (!diffLevel++) {\n\t\t\tisSvgMode = parent != null && parent.ownerSVGElement !== undefined;\n\n\t\t\thydrating = dom != null && !(ATTR_KEY in dom);\n\t\t}\n\n\t\tvar ret = idiff(dom, vnode, context, mountAll, componentRoot);\n\n\t\tif (parent && ret.parentNode !== parent) parent.appendChild(ret);\n\n\t\tif (! --diffLevel) {\n\t\t\thydrating = false;\n\n\t\t\tif (!componentRoot) flushMounts();\n\t\t}\n\n\t\treturn ret;\n\t}\n\n\tfunction idiff(dom, vnode, context, mountAll, componentRoot) {\n\t\tvar out = dom,\n\t\t prevSvgMode = isSvgMode;\n\n\t\tif (vnode == null || typeof vnode === 'boolean') vnode = '';\n\n\t\tif (typeof vnode === 'string' || typeof vnode === 'number') {\n\t\t\tif (dom && dom.splitText !== undefined && dom.parentNode && (!dom._component || componentRoot)) {\n\t\t\t\tif (dom.nodeValue != vnode) {\n\t\t\t\t\tdom.nodeValue = vnode;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tout = document.createTextNode(vnode);\n\t\t\t\tif (dom) {\n\t\t\t\t\tif (dom.parentNode) dom.parentNode.replaceChild(out, dom);\n\t\t\t\t\trecollectNodeTree(dom, true);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tout[ATTR_KEY] = true;\n\n\t\t\treturn out;\n\t\t}\n\n\t\tvar vnodeName = vnode.nodeName;\n\t\tif (typeof vnodeName === 'function') {\n\t\t\treturn buildComponentFromVNode(dom, vnode, context, mountAll);\n\t\t}\n\n\t\tisSvgMode = vnodeName === 'svg' ? true : vnodeName === 'foreignObject' ? false : isSvgMode;\n\n\t\tvnodeName = String(vnodeName);\n\t\tif (!dom || !isNamedNode(dom, vnodeName)) {\n\t\t\tout = createNode(vnodeName, isSvgMode);\n\n\t\t\tif (dom) {\n\t\t\t\twhile (dom.firstChild) {\n\t\t\t\t\tout.appendChild(dom.firstChild);\n\t\t\t\t}\n\t\t\t\tif (dom.parentNode) dom.parentNode.replaceChild(out, dom);\n\n\t\t\t\trecollectNodeTree(dom, true);\n\t\t\t}\n\t\t}\n\n\t\tvar fc = out.firstChild,\n\t\t props = out[ATTR_KEY],\n\t\t vchildren = vnode.children;\n\n\t\tif (props == null) {\n\t\t\tprops = out[ATTR_KEY] = {};\n\t\t\tfor (var a = out.attributes, i = a.length; i--;) {\n\t\t\t\tprops[a[i].name] = a[i].value;\n\t\t\t}\n\t\t}\n\n\t\tif (!hydrating && vchildren && vchildren.length === 1 && typeof vchildren[0] === 'string' && fc != null && fc.splitText !== undefined && fc.nextSibling == null) {\n\t\t\tif (fc.nodeValue != vchildren[0]) {\n\t\t\t\tfc.nodeValue = vchildren[0];\n\t\t\t}\n\t\t} else if (vchildren && vchildren.length || fc != null) {\n\t\t\t\tinnerDiffNode(out, vchildren, context, mountAll, hydrating || props.dangerouslySetInnerHTML != null);\n\t\t\t}\n\n\t\tdiffAttributes(out, vnode.attributes, props);\n\n\t\tisSvgMode = prevSvgMode;\n\n\t\treturn out;\n\t}\n\n\tfunction innerDiffNode(dom, vchildren, context, mountAll, isHydrating) {\n\t\tvar originalChildren = dom.childNodes,\n\t\t children = [],\n\t\t keyed = {},\n\t\t keyedLen = 0,\n\t\t min = 0,\n\t\t len = originalChildren.length,\n\t\t childrenLen = 0,\n\t\t vlen = vchildren ? vchildren.length : 0,\n\t\t j = void 0,\n\t\t c = void 0,\n\t\t f = void 0,\n\t\t vchild = void 0,\n\t\t child = void 0;\n\n\t\tif (len !== 0) {\n\t\t\tfor (var i = 0; i < len; i++) {\n\t\t\t\tvar _child = originalChildren[i],\n\t\t\t\t props = _child[ATTR_KEY],\n\t\t\t\t key = vlen && props ? _child._component ? _child._component.__key : props.key : null;\n\t\t\t\tif (key != null) {\n\t\t\t\t\tkeyedLen++;\n\t\t\t\t\tkeyed[key] = _child;\n\t\t\t\t} else if (props || (_child.splitText !== undefined ? isHydrating ? _child.nodeValue.trim() : true : isHydrating)) {\n\t\t\t\t\tchildren[childrenLen++] = _child;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (vlen !== 0) {\n\t\t\tfor (var _i = 0; _i < vlen; _i++) {\n\t\t\t\tvchild = vchildren[_i];\n\t\t\t\tchild = null;\n\n\t\t\t\tvar _key = vchild.key;\n\t\t\t\tif (_key != null) {\n\t\t\t\t\tif (keyedLen && keyed[_key] !== undefined) {\n\t\t\t\t\t\tchild = keyed[_key];\n\t\t\t\t\t\tkeyed[_key] = undefined;\n\t\t\t\t\t\tkeyedLen--;\n\t\t\t\t\t}\n\t\t\t\t} else if (min < childrenLen) {\n\t\t\t\t\t\tfor (j = min; j < childrenLen; j++) {\n\t\t\t\t\t\t\tif (children[j] !== undefined && isSameNodeType(c = children[j], vchild, isHydrating)) {\n\t\t\t\t\t\t\t\tchild = c;\n\t\t\t\t\t\t\t\tchildren[j] = undefined;\n\t\t\t\t\t\t\t\tif (j === childrenLen - 1) childrenLen--;\n\t\t\t\t\t\t\t\tif (j === min) min++;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\tchild = idiff(child, vchild, context, mountAll);\n\n\t\t\t\tf = originalChildren[_i];\n\t\t\t\tif (child && child !== dom && child !== f) {\n\t\t\t\t\tif (f == null) {\n\t\t\t\t\t\tdom.appendChild(child);\n\t\t\t\t\t} else if (child === f.nextSibling) {\n\t\t\t\t\t\tremoveNode(f);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdom.insertBefore(child, f);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (keyedLen) {\n\t\t\tfor (var _i2 in keyed) {\n\t\t\t\tif (keyed[_i2] !== undefined) recollectNodeTree(keyed[_i2], false);\n\t\t\t}\n\t\t}\n\n\t\twhile (min <= childrenLen) {\n\t\t\tif ((child = children[childrenLen--]) !== undefined) recollectNodeTree(child, false);\n\t\t}\n\t}\n\n\tfunction recollectNodeTree(node, unmountOnly) {\n\t\tvar component = node._component;\n\t\tif (component) {\n\t\t\tunmountComponent(component);\n\t\t} else {\n\t\t\tif (node[ATTR_KEY] != null) applyRef(node[ATTR_KEY].ref, null);\n\n\t\t\tif (unmountOnly === false || node[ATTR_KEY] == null) {\n\t\t\t\tremoveNode(node);\n\t\t\t}\n\n\t\t\tremoveChildren(node);\n\t\t}\n\t}\n\n\tfunction removeChildren(node) {\n\t\tnode = node.lastChild;\n\t\twhile (node) {\n\t\t\tvar next = node.previousSibling;\n\t\t\trecollectNodeTree(node, true);\n\t\t\tnode = next;\n\t\t}\n\t}\n\n\tfunction diffAttributes(dom, attrs, old) {\n\t\tvar name = void 0;\n\n\t\tfor (name in old) {\n\t\t\tif (!(attrs && attrs[name] != null) && old[name] != null) {\n\t\t\t\tsetAccessor(dom, name, old[name], old[name] = undefined, isSvgMode);\n\t\t\t}\n\t\t}\n\n\t\tfor (name in attrs) {\n\t\t\tif (name !== 'children' && name !== 'innerHTML' && (!(name in old) || attrs[name] !== (name === 'value' || name === 'checked' ? dom[name] : old[name]))) {\n\t\t\t\tsetAccessor(dom, name, old[name], old[name] = attrs[name], isSvgMode);\n\t\t\t}\n\t\t}\n\t}\n\n\tvar recyclerComponents = [];\n\n\tfunction createComponent(Ctor, props, context) {\n\t\tvar inst = void 0,\n\t\t i = recyclerComponents.length;\n\n\t\tif (Ctor.prototype && Ctor.prototype.render) {\n\t\t\tinst = new Ctor(props, context);\n\t\t\tComponent.call(inst, props, context);\n\t\t} else {\n\t\t\tinst = new Component(props, context);\n\t\t\tinst.constructor = Ctor;\n\t\t\tinst.render = doRender;\n\t\t}\n\n\t\twhile (i--) {\n\t\t\tif (recyclerComponents[i].constructor === Ctor) {\n\t\t\t\tinst.nextBase = recyclerComponents[i].nextBase;\n\t\t\t\trecyclerComponents.splice(i, 1);\n\t\t\t\treturn inst;\n\t\t\t}\n\t\t}\n\n\t\treturn inst;\n\t}\n\n\tfunction doRender(props, state, context) {\n\t\treturn this.constructor(props, context);\n\t}\n\n\tfunction setComponentProps(component, props, renderMode, context, mountAll) {\n\t\tif (component._disable) return;\n\t\tcomponent._disable = true;\n\n\t\tcomponent.__ref = props.ref;\n\t\tcomponent.__key = props.key;\n\t\tdelete props.ref;\n\t\tdelete props.key;\n\n\t\tif (typeof component.constructor.getDerivedStateFromProps === 'undefined') {\n\t\t\tif (!component.base || mountAll) {\n\t\t\t\tif (component.componentWillMount) component.componentWillMount();\n\t\t\t} else if (component.componentWillReceiveProps) {\n\t\t\t\tcomponent.componentWillReceiveProps(props, context);\n\t\t\t}\n\t\t}\n\n\t\tif (context && context !== component.context) {\n\t\t\tif (!component.prevContext) component.prevContext = component.context;\n\t\t\tcomponent.context = context;\n\t\t}\n\n\t\tif (!component.prevProps) component.prevProps = component.props;\n\t\tcomponent.props = props;\n\n\t\tcomponent._disable = false;\n\n\t\tif (renderMode !== NO_RENDER) {\n\t\t\tif (renderMode === SYNC_RENDER || options.syncComponentUpdates !== false || !component.base) {\n\t\t\t\trenderComponent(component, SYNC_RENDER, mountAll);\n\t\t\t} else {\n\t\t\t\tenqueueRender(component);\n\t\t\t}\n\t\t}\n\n\t\tapplyRef(component.__ref, component);\n\t}\n\n\tfunction renderComponent(component, renderMode, mountAll, isChild) {\n\t\tif (component._disable) return;\n\n\t\tvar props = component.props,\n\t\t state = component.state,\n\t\t context = component.context,\n\t\t previousProps = component.prevProps || props,\n\t\t previousState = component.prevState || state,\n\t\t previousContext = component.prevContext || context,\n\t\t isUpdate = component.base,\n\t\t nextBase = component.nextBase,\n\t\t initialBase = isUpdate || nextBase,\n\t\t initialChildComponent = component._component,\n\t\t skip = false,\n\t\t snapshot = previousContext,\n\t\t rendered = void 0,\n\t\t inst = void 0,\n\t\t cbase = void 0;\n\n\t\tif (component.constructor.getDerivedStateFromProps) {\n\t\t\tstate = extend(extend({}, state), component.constructor.getDerivedStateFromProps(props, state));\n\t\t\tcomponent.state = state;\n\t\t}\n\n\t\tif (isUpdate) {\n\t\t\tcomponent.props = previousProps;\n\t\t\tcomponent.state = previousState;\n\t\t\tcomponent.context = previousContext;\n\t\t\tif (renderMode !== FORCE_RENDER && component.shouldComponentUpdate && component.shouldComponentUpdate(props, state, context) === false) {\n\t\t\t\tskip = true;\n\t\t\t} else if (component.componentWillUpdate) {\n\t\t\t\tcomponent.componentWillUpdate(props, state, context);\n\t\t\t}\n\t\t\tcomponent.props = props;\n\t\t\tcomponent.state = state;\n\t\t\tcomponent.context = context;\n\t\t}\n\n\t\tcomponent.prevProps = component.prevState = component.prevContext = component.nextBase = null;\n\t\tcomponent._dirty = false;\n\n\t\tif (!skip) {\n\t\t\trendered = component.render(props, state, context);\n\n\t\t\tif (component.getChildContext) {\n\t\t\t\tcontext = extend(extend({}, context), component.getChildContext());\n\t\t\t}\n\n\t\t\tif (isUpdate && component.getSnapshotBeforeUpdate) {\n\t\t\t\tsnapshot = component.getSnapshotBeforeUpdate(previousProps, previousState);\n\t\t\t}\n\n\t\t\tvar childComponent = rendered && rendered.nodeName,\n\t\t\t toUnmount = void 0,\n\t\t\t base = void 0;\n\n\t\t\tif (typeof childComponent === 'function') {\n\n\t\t\t\tvar childProps = getNodeProps(rendered);\n\t\t\t\tinst = initialChildComponent;\n\n\t\t\t\tif (inst && inst.constructor === childComponent && childProps.key == inst.__key) {\n\t\t\t\t\tsetComponentProps(inst, childProps, SYNC_RENDER, context, false);\n\t\t\t\t} else {\n\t\t\t\t\ttoUnmount = inst;\n\n\t\t\t\t\tcomponent._component = inst = createComponent(childComponent, childProps, context);\n\t\t\t\t\tinst.nextBase = inst.nextBase || nextBase;\n\t\t\t\t\tinst._parentComponent = component;\n\t\t\t\t\tsetComponentProps(inst, childProps, NO_RENDER, context, false);\n\t\t\t\t\trenderComponent(inst, SYNC_RENDER, mountAll, true);\n\t\t\t\t}\n\n\t\t\t\tbase = inst.base;\n\t\t\t} else {\n\t\t\t\tcbase = initialBase;\n\n\t\t\t\ttoUnmount = initialChildComponent;\n\t\t\t\tif (toUnmount) {\n\t\t\t\t\tcbase = component._component = null;\n\t\t\t\t}\n\n\t\t\t\tif (initialBase || renderMode === SYNC_RENDER) {\n\t\t\t\t\tif (cbase) cbase._component = null;\n\t\t\t\t\tbase = diff(cbase, rendered, context, mountAll || !isUpdate, initialBase && initialBase.parentNode, true);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (initialBase && base !== initialBase && inst !== initialChildComponent) {\n\t\t\t\tvar baseParent = initialBase.parentNode;\n\t\t\t\tif (baseParent && base !== baseParent) {\n\t\t\t\t\tbaseParent.replaceChild(base, initialBase);\n\n\t\t\t\t\tif (!toUnmount) {\n\t\t\t\t\t\tinitialBase._component = null;\n\t\t\t\t\t\trecollectNodeTree(initialBase, false);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (toUnmount) {\n\t\t\t\tunmountComponent(toUnmount);\n\t\t\t}\n\n\t\t\tcomponent.base = base;\n\t\t\tif (base && !isChild) {\n\t\t\t\tvar componentRef = component,\n\t\t\t\t t = component;\n\t\t\t\twhile (t = t._parentComponent) {\n\t\t\t\t\t(componentRef = t).base = base;\n\t\t\t\t}\n\t\t\t\tbase._component = componentRef;\n\t\t\t\tbase._componentConstructor = componentRef.constructor;\n\t\t\t}\n\t\t}\n\n\t\tif (!isUpdate || mountAll) {\n\t\t\tmounts.push(component);\n\t\t} else if (!skip) {\n\n\t\t\tif (component.componentDidUpdate) {\n\t\t\t\tcomponent.componentDidUpdate(previousProps, previousState, snapshot);\n\t\t\t}\n\t\t\tif (options.afterUpdate) options.afterUpdate(component);\n\t\t}\n\n\t\twhile (component._renderCallbacks.length) {\n\t\t\tcomponent._renderCallbacks.pop().call(component);\n\t\t}if (!diffLevel && !isChild) flushMounts();\n\t}\n\n\tfunction buildComponentFromVNode(dom, vnode, context, mountAll) {\n\t\tvar c = dom && dom._component,\n\t\t originalComponent = c,\n\t\t oldDom = dom,\n\t\t isDirectOwner = c && dom._componentConstructor === vnode.nodeName,\n\t\t isOwner = isDirectOwner,\n\t\t props = getNodeProps(vnode);\n\t\twhile (c && !isOwner && (c = c._parentComponent)) {\n\t\t\tisOwner = c.constructor === vnode.nodeName;\n\t\t}\n\n\t\tif (c && isOwner && (!mountAll || c._component)) {\n\t\t\tsetComponentProps(c, props, ASYNC_RENDER, context, mountAll);\n\t\t\tdom = c.base;\n\t\t} else {\n\t\t\tif (originalComponent && !isDirectOwner) {\n\t\t\t\tunmountComponent(originalComponent);\n\t\t\t\tdom = oldDom = null;\n\t\t\t}\n\n\t\t\tc = createComponent(vnode.nodeName, props, context);\n\t\t\tif (dom && !c.nextBase) {\n\t\t\t\tc.nextBase = dom;\n\n\t\t\t\toldDom = null;\n\t\t\t}\n\t\t\tsetComponentProps(c, props, SYNC_RENDER, context, mountAll);\n\t\t\tdom = c.base;\n\n\t\t\tif (oldDom && dom !== oldDom) {\n\t\t\t\toldDom._component = null;\n\t\t\t\trecollectNodeTree(oldDom, false);\n\t\t\t}\n\t\t}\n\n\t\treturn dom;\n\t}\n\n\tfunction unmountComponent(component) {\n\t\tif (options.beforeUnmount) options.beforeUnmount(component);\n\n\t\tvar base = component.base;\n\n\t\tcomponent._disable = true;\n\n\t\tif (component.componentWillUnmount) component.componentWillUnmount();\n\n\t\tcomponent.base = null;\n\n\t\tvar inner = component._component;\n\t\tif (inner) {\n\t\t\tunmountComponent(inner);\n\t\t} else if (base) {\n\t\t\tif (base[ATTR_KEY] != null) applyRef(base[ATTR_KEY].ref, null);\n\n\t\t\tcomponent.nextBase = base;\n\n\t\t\tremoveNode(base);\n\t\t\trecyclerComponents.push(component);\n\n\t\t\tremoveChildren(base);\n\t\t}\n\n\t\tapplyRef(component.__ref, null);\n\t}\n\n\tfunction Component(props, context) {\n\t\tthis._dirty = true;\n\n\t\tthis.context = context;\n\n\t\tthis.props = props;\n\n\t\tthis.state = this.state || {};\n\n\t\tthis._renderCallbacks = [];\n\t}\n\n\textend(Component.prototype, {\n\t\tsetState: function setState(state, callback) {\n\t\t\tif (!this.prevState) this.prevState = this.state;\n\t\t\tthis.state = extend(extend({}, this.state), typeof state === 'function' ? state(this.state, this.props) : state);\n\t\t\tif (callback) this._renderCallbacks.push(callback);\n\t\t\tenqueueRender(this);\n\t\t},\n\t\tforceUpdate: function forceUpdate(callback) {\n\t\t\tif (callback) this._renderCallbacks.push(callback);\n\t\t\trenderComponent(this, FORCE_RENDER);\n\t\t},\n\t\trender: function render() {}\n\t});\n\n\tfunction render(vnode, parent, merge) {\n\t return diff(merge, vnode, {}, false, parent, false);\n\t}\n\n\tfunction createRef() {\n\t\treturn {};\n\t}\n\n\tvar preact = {\n\t\th: h,\n\t\tcreateElement: h,\n\t\tcloneElement: cloneElement,\n\t\tcreateRef: createRef,\n\t\tComponent: Component,\n\t\trender: render,\n\t\trerender: rerender,\n\t\toptions: options\n\t};\n\n\texports.default = preact;\n\texports.h = h;\n\texports.createElement = h;\n\texports.cloneElement = cloneElement;\n\texports.createRef = createRef;\n\texports.Component = Component;\n\texports.render = render;\n\texports.rerender = rerender;\n\texports.options = options;\n\n\tObject.defineProperty(exports, '__esModule', { value: true });\n\n})));\n//# sourceMappingURL=preact.umd.js.map\n","/* eslint-disable camelcase */\nconst {\n Link_previous,\n Link_next,\n Search_common_words_ignored,\n Search_no_results,\n Search_one_character_or_more,\n Search_one_result,\n Search_results,\n Search_should_be_x_or_more,\n Search_too_short\n} = window.searchTranslation;\n\nconst textLinkPrevious = Link_previous;\nconst textLinkNext = Link_next;\nconst textSearchCommonWordsIgnored = Search_common_words_ignored;\nconst textSearchNoResults = Search_no_results;\nconst textSearchOneCharacterOrMore = Search_one_character_or_more;\nconst textSearchOneResult = Search_one_result;\nconst textSearchResults = Search_results;\nconst textSearchShouldBeXOrMore = Search_should_be_x_or_more;\nconst textSearchTooShort = Search_too_short;\n/* eslint-enable camelcase */\n\nexport {\n textLinkPrevious,\n textLinkNext,\n textSearchCommonWordsIgnored,\n textSearchNoResults,\n textSearchOneCharacterOrMore,\n textSearchOneResult,\n textSearchResults,\n textSearchShouldBeXOrMore,\n textSearchTooShort\n};\n","import preact from \"preact\";\nimport { textLinkPrevious, textLinkNext } from \"./translation\";\n/** @jsx preact.h */\n\nexport default function Pagination({ counter, start, settings, onPageSelect }) {\n const pages = Math.ceil(counter / settings.show);\n const page = start / settings.show;\n\n let displayedPages;\n if (page <= 2) {\n // Display max three pages\n displayedPages = Math.min(pages, 3);\n } else {\n // Display two more pages, but don't overflow\n displayedPages = Math.min(pages, page + 2);\n }\n\n const items = [];\n\n for (let f = 0; f < displayedPages; f++) {\n if (f === page) {\n items.push(
  • {f + 1}
  • );\n } else {\n items.push(\n
  • \n onPageSelect(f * settings.show)}\n >\n {f + 1}\n \n
  • \n );\n }\n }\n\n return (\n
    \n
      \n {start > 0 && (\n
    • \n onPageSelect(start - settings.show)}\n >\n {textLinkPrevious}\n \n
    • \n )}\n {items}\n {page + 1 !== pages && (\n
    • \n onPageSelect(start + settings.show)}\n >\n {textLinkNext}\n \n
    • \n )}\n
    \n
    \n );\n}\n","import preact from \"preact\";\n/** @jsx preact.h */\n\n// TODO :: restore highlight\n/*function highlightText(search, text) {\n if (settings.highlightTerms) {\n var pattern = new RegExp(\n `(${search})`,\n settings.highlightEveryTerm ? \"gi\" : \"i\"\n );\n text = text.replace(\n pattern,\n '$1'\n );\n }\n\n return text;\n}*/\n\nexport default function Result({ settings, item }) {\n let description;\n if (item.desc) {\n description = item.desc\n .split(\" \")\n .slice(0, settings.descriptiveWords)\n .join(\" \");\n if (\n item.desc.length < description.length &&\n description.charAt(description.length - 1) !== \".\"\n ) {\n description += \" ...\";\n }\n }\n\n return (\n
    \n \n {settings.debug && (\n
    Score: {item.score}
    \n )}\n {settings.showURL && (\n \n )}\n {description.desc && (\n
    {description}
    \n )}\n
    \n );\n}\n","// Stop words (list from http://www.ranks.nl/stopwords)\nexport default [\n \"a\",\n \"about\",\n \"above\",\n \"after\",\n \"again\",\n \"against\",\n \"all\",\n \"am\",\n \"an\",\n \"and\",\n \"any\",\n \"are\",\n \"aren't\",\n \"as\",\n \"at\",\n \"be\",\n \"because\",\n \"been\",\n \"before\",\n \"being\",\n \"below\",\n \"between\",\n \"both\",\n \"but\",\n \"by\",\n \"can't\",\n \"cannot\",\n \"could\",\n \"couldn't\",\n \"did\",\n \"didn't\",\n \"do\",\n \"does\",\n \"doesn't\",\n \"doing\",\n \"don't\",\n \"down\",\n \"during\",\n \"each\",\n \"few\",\n \"for\",\n \"from\",\n \"further\",\n \"had\",\n \"hadn't\",\n \"has\",\n \"hasn't\",\n \"have\",\n \"haven't\",\n \"having\",\n \"he\",\n \"he'd\",\n \"he'll\",\n \"he's\",\n \"her\",\n \"here\",\n \"here's\",\n \"hers\",\n \"herself\",\n \"him\",\n \"himself\",\n \"his\",\n \"how\",\n \"how's\",\n \"i\",\n \"i'd\",\n \"i'll\",\n \"i'm\",\n \"i've\",\n \"if\",\n \"in\",\n \"into\",\n \"is\",\n \"isn't\",\n \"it\",\n \"it's\",\n \"its\",\n \"itself\",\n \"let's\",\n \"me\",\n \"more\",\n \"most\",\n \"mustn't\",\n \"my\",\n \"myself\",\n \"no\",\n \"nor\",\n \"not\",\n \"of\",\n \"off\",\n \"on\",\n \"once\",\n \"only\",\n \"or\",\n \"other\",\n \"ought\",\n \"our\",\n \"ours\",\n \"ourselves\",\n \"out\",\n \"over\",\n \"own\",\n \"same\",\n \"shan't\",\n \"she\",\n \"she'd\",\n \"she'll\",\n \"she's\",\n \"should\",\n \"shouldn't\",\n \"so\",\n \"some\",\n \"such\",\n \"than\",\n \"that\",\n \"that's\",\n \"the\",\n \"their\",\n \"theirs\",\n \"them\",\n \"themselves\",\n \"then\",\n \"there\",\n \"there's\",\n \"these\",\n \"they\",\n \"they'd\",\n \"they'll\",\n \"they're\",\n \"they've\",\n \"this\",\n \"those\",\n \"through\",\n \"to\",\n \"too\",\n \"under\",\n \"until\",\n \"up\",\n \"very\",\n \"was\",\n \"wasn't\",\n \"we\",\n \"we'd\",\n \"we'll\",\n \"we're\",\n \"we've\",\n \"were\",\n \"weren't\",\n \"what\",\n \"what's\",\n \"when\",\n \"when's\",\n \"where\",\n \"where's\",\n \"which\",\n \"while\",\n \"who\",\n \"who's\",\n \"whom\",\n \"why\",\n \"why's\",\n \"with\",\n \"won't\",\n \"would\",\n \"wouldn't\",\n \"you\",\n \"you'd\",\n \"you'll\",\n \"you're\",\n \"you've\",\n \"your\",\n \"yours\",\n \"yourself\",\n \"yourselves\"\n];\n","import stopWords from \"./stopwords\";\n\nexport function getURLP(name) {\n const elements = new RegExp(`[?|&]${name}=([^&;]+?)(&|#|;|$)`).exec(\n window.location.search\n );\n\n return (\n decodeURIComponent(\n ((elements && elements[1]) || \"\").replace(/\\+/g, \"%20\")\n ) || null\n );\n}\n\nfunction getScore(searchFor, page) {\n let score = 0;\n const pat = new RegExp(searchFor, \"gi\");\n\n if (page.title.search(pat) !== -1) {\n score += 20 * page.title.match(pat).length;\n }\n\n if (page.text.search(pat) !== -1) {\n score += 20 * page.text.match(pat).length;\n }\n\n if (page.tags.search(pat) !== -1) {\n score += 10 * page.tags.match(pat).length;\n }\n\n if (page.url.search(pat) !== -1) {\n score += 20;\n }\n\n return score;\n}\n\nfunction getStandardScore(searchWords, page) {\n let score = 0;\n for (let f = 0; f < searchWords.length; f++) {\n if (searchWords[f].match(\"^-\")) {\n const pat = new RegExp(searchWords[f].substring(1), \"i\");\n if (\n page.title.search(pat) !== -1 ||\n page.text.search(pat) !== -1 ||\n page.tags.search(pat) !== -1\n ) {\n score = 0;\n }\n } else {\n score += getScore(searchWords[f], page);\n }\n }\n\n return score;\n}\n\nexport function getSearchString(search) {\n let isStandard = true;\n let hasStopWords = false;\n if (\n (search.match('^\"') && search.match('\"$')) ||\n (search.match(\"^'\") && search.match(\"'$\"))\n ) {\n isStandard = false;\n }\n\n let searchFor;\n if (isStandard) {\n const searchWords = search.split(\" \");\n searchFor = searchWords\n .filter(word => stopWords.indexOf(word) === -1)\n .join(\" \");\n hasStopWords = search !== searchFor;\n } else {\n searchFor = searchFor.substring(1, searchFor.length - 1);\n }\n\n return {\n hasStopWords,\n isStandard,\n searchFor\n };\n}\n\nfunction makeResult(score, { title, url }, desc) {\n return {\n score,\n title,\n desc,\n url\n };\n}\n\nexport function getResults(index, searchFor, standard) {\n const found = [];\n\n let pages = index.pages;\n\n // If a searchLanguage is set, filter out all other pages\n if (window.searchLanguage) {\n pages = pages.filter(\n item => item.url.indexOf(`${window.searchLanguage}/`) === 0\n );\n }\n\n const searchWords = searchFor.split(\" \");\n for (let i = 0; i < pages.length; i++) {\n const score = standard\n ? getStandardScore(searchWords, pages[i])\n : getScore(searchFor, pages[i]);\n if (score !== 0) {\n found.push(makeResult(score, pages[i], pages[i].text));\n }\n }\n\n found.sort((a, b) => b.score - a.score);\n\n return found;\n}\n","import preact from \"preact\";\n\nimport Pagination from \"./Pagination\";\nimport Result from \"./Result\";\nimport {\n textSearchCommonWordsIgnored,\n textSearchNoResults,\n textSearchOneCharacterOrMore,\n textSearchOneResult,\n textSearchResults,\n textSearchShouldBeXOrMore,\n textSearchTooShort\n} from \"./translation\";\nimport { getResults, getSearchString } from \"./utils\";\n\n/** @jsx preact.h */\n\nexport default class Search extends preact.Component {\n constructor(props) {\n super(props);\n\n this.state = {\n search: this.props.settings.field.value || \"\",\n start: 0\n };\n }\n\n // \"click\", \".SearchResults__close\"\n handleClose = () => {\n this.props.onClose();\n };\n\n scrollTop = () => {\n if (this.resultRef) {\n this.resultRef.scrollTop = 0;\n }\n };\n\n handlePaginate = start => {\n this.setState({ start }, this.scrollTop);\n };\n\n handleChange = event => {\n this.setState({ search: event.target.value, start: 0 }, this.scrollTop);\n\n this.props.settings.field.value = event.target.value;\n };\n\n getResults() {\n const { settings, searchIndex } = this.props;\n const { start } = this.state;\n\n const searchString = getSearchString(\n this.state.search.toLowerCase().trim()\n );\n const searchFor = searchString.searchFor;\n\n const warnings = [];\n let counter = 0;\n let results = [];\n\n if (searchFor.length < settings.minimumLength) {\n if (searchString.hasStopWords) {\n warnings.push(\n `${textSearchNoResults}. ${textSearchCommonWordsIgnored}`\n );\n } else {\n warnings.push(textSearchTooShort);\n warnings.push(\n settings.minimumLength === 1\n ? textSearchOneCharacterOrMore\n : textSearchShouldBeXOrMore.replace(\n \"!min\",\n settings.minimumLength\n )\n );\n }\n return { warnings, counter, results, start };\n }\n\n const found = getResults(\n searchIndex,\n searchString.searchFor,\n searchString.isStandard\n );\n\n counter = found.length;\n\n if (counter === 0) {\n warnings.push(textSearchNoResults);\n return { warnings, counter, results, start };\n }\n\n if (settings.showTitleCount) {\n this.props.onTitleChange(`(${counter})`);\n }\n\n results = found.filter(\n (item, itemNumber) =>\n itemNumber >= start && itemNumber < settings.show + start\n );\n\n return { warnings, counter, results, start };\n }\n\n render() {\n const { settings } = this.props;\n const { warnings, counter, results, start } = this.getResults();\n\n return (\n
    \n
    \n (this.resultRef = el)}\n >\n \n \n ×\n \n
    \n {counter === 1\n ? textSearchOneResult\n : textSearchResults.replace(\"!count\", counter)}\n
    \n {warnings.map(warning => (\n
    \n {warning}\n
    \n ))}\n {results.map(result => (\n \n ))}\n {counter > settings.show && (\n \n )}\n
    \n
    \n );\n }\n}\n","import preact from \"preact\";\n\nimport Search from \"./Search\";\n\nimport { getURLP } from \"./utils\";\n\n/** @jsx preact.h */\n\nconst originalTitle = document.title;\n\nclass SearchEngine {\n constructor(options) {\n this.settings = {\n field: document.getElementById(\"search_input\"),\n show: 10,\n showURL: true,\n showTitleCount: true,\n minimumLength: 3,\n descriptiveWords: 25,\n highlightTerms: true,\n highlightEveryTerm: false,\n contentLocation: \"search/search_index.json\",\n debug: false,\n ...options\n };\n\n this.searchIndex = {\n pages: []\n };\n }\n\n loadData() {\n if (!this.loadingPromise) {\n this.loadingPromise = fetch(\n this.settings.base_url + this.settings.contentLocation\n )\n .then(data => data.json())\n .then(json => {\n this.searchIndex = json;\n });\n }\n\n return this.loadingPromise;\n }\n\n run() {\n if (getURLP(\"q\")) {\n this.settings.field.value = getURLP(\"q\");\n\n this.loadData().then(() => {\n this.displaySearch();\n });\n }\n\n this.settings.field.addEventListener(\"keyup\", event => {\n // Start loading index once the user types text in the field, not before\n this.loadData();\n\n if (parseInt(event.keyCode, 10) === 13) {\n this.loadData().then(() => {\n this.displaySearch();\n });\n }\n });\n }\n\n keyUpHandler = e => {\n if (e.which === 27) {\n //escape\n this.handleClose();\n }\n };\n\n handleClose = () => {\n document.title = originalTitle;\n\n document.removeEventListener(\"keyup\", this.keyUpHandler);\n\n document.body.classList.remove(\"with-search\");\n preact.render(\"\", this.resultContainer, this.renderedElement);\n this.resultContainer = null;\n this.renderedElement = null;\n };\n\n displaySearch() {\n if (!this.resultContainer) {\n this.resultContainer = document.createElement(\"div\");\n document.body.appendChild(this.resultContainer);\n }\n\n document.addEventListener(\"keyup\", this.keyUpHandler);\n\n this.renderedElement = preact.render(\n {\n document.title = `${title} ${originalTitle}`;\n }}\n settings={this.settings}\n />,\n this.resultContainer\n );\n\n document.body.classList.add(\"with-search\");\n document.body.scrollTop = 0;\n }\n}\n\n// Main containers\n\nfunction search(options) {\n const instance = new SearchEngine(options);\n instance.run();\n}\n\n// Declare globally\nwindow.search = search;\n"],"names":["exports","VNode","options","stack","EMPTY_CHILDREN","h","nodeName","attributes","children","lastSimple","child","simple","i","arguments","length","push","pop","undefined","String","p","key","vnode","extend","obj","props","applyRef","ref","value","current","defer","Promise","resolve","then","bind","setTimeout","cloneElement","slice","call","NO_RENDER","SYNC_RENDER","FORCE_RENDER","ASYNC_RENDER","ATTR_KEY","IS_NON_DIMENSIONAL","items","enqueueRender","component","_dirty","debounceRendering","rerender","renderComponent","isSameNodeType","node","hydrating","splitText","_componentConstructor","isNamedNode","normalizedNodeName","toLowerCase","getNodeProps","defaultProps","removeNode","parentNode","removeChild","setAccessor","name","old","isSvg","style","cssText","_i","test","innerHTML","__html","useCapture","replace","substring","addEventListener","eventProxy","removeEventListener","_listeners","e","removeAttribute","ns","removeAttributeNS","setAttributeNS","setAttribute","className","this","type","event","mounts","diffLevel","isSvgMode","flushMounts","c","shift","afterMount","componentDidMount","diff","dom","context","mountAll","parent","componentRoot","ownerSVGElement","ret","idiff","appendChild","out","prevSvgMode","_component","nodeValue","document","createTextNode","replaceChild","recollectNodeTree","vnodeName","originalComponent","oldDom","isDirectOwner","isOwner","_parentComponent","constructor","setComponentProps","base","unmountComponent","createComponent","nextBase","buildComponentFromVNode","createElementNS","createElement","firstChild","fc","vchildren","a","nextSibling","isHydrating","originalChildren","childNodes","keyed","keyedLen","min","len","childrenLen","vlen","j","f","vchild","_child","__key","trim","_key","insertBefore","_i2","innerDiffNode","dangerouslySetInnerHTML","attrs","diffAttributes","unmountOnly","removeChildren","lastChild","next","previousSibling","recyclerComponents","Ctor","inst","prototype","render","Component","doRender","splice","state","renderMode","_disable","__ref","getDerivedStateFromProps","componentWillMount","componentWillReceiveProps","prevContext","prevProps","syncComponentUpdates","isChild","previousProps","previousState","prevState","previousContext","isUpdate","initialBase","initialChildComponent","skip","snapshot","rendered","cbase","shouldComponentUpdate","componentWillUpdate","getChildContext","getSnapshotBeforeUpdate","childComponent","toUnmount","childProps","baseParent","componentRef","t","componentDidUpdate","afterUpdate","_renderCallbacks","beforeUnmount","componentWillUnmount","inner","merge","createRef","setState","callback","forceUpdate","preact","default","Object","defineProperty","factory","window","searchTranslation","Link_previous","Link_next","Search_common_words_ignored","Search_no_results","Search_one_character_or_more","Search_one_result","Search_results","Search_should_be_x_or_more","Search_too_short","textLinkPrevious","textLinkNext","textSearchCommonWordsIgnored","textSearchNoResults","textSearchOneCharacterOrMore","textSearchOneResult","textSearchResults","textSearchShouldBeXOrMore","textSearchTooShort","Pagination","displayedPages","counter","start","settings","onPageSelect","pages","Math","ceil","show","page","onClick","Result","description","item","desc","split","descriptiveWords","join","charAt","href","base_url","url","title","debug","score","showURL","getURLP","elements","RegExp","exec","location","search","decodeURIComponent","getScore","searchFor","pat","match","text","tags","getStandardScore","searchWords","makeResult","Search","handleClose","onClose","scrollTop","_this","resultRef","handlePaginate","handleChange","target","field","searchIndex","searchString","isStandard","hasStopWords","filter","word","stopWords","indexOf","getSearchString","warnings","results","minimumLength","found","index","standard","searchLanguage","sort","b","getResults","showTitleCount","onTitleChange","itemNumber","el","_this2","placeholder","autoComplete","autoSave","onInput","map","warning","result","originalTitle","SearchEngine","keyUpHandler","which","body","classList","remove","resultContainer","renderedElement","getElementById","highlightTerms","highlightEveryTerm","contentLocation","loadingPromise","fetch","data","json","loadData","_this3","displaySearch","parseInt","keyCode","add","run"],"mappings":"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IhI,UAAU,8BACVoK,QAAS,kBAAMN,EAAaF,EAAQC,EAASK,QAE5CjB,MCrCd,SAASoB,SAChBC,EADyBT,IAAAA,SAAUU,IAAAA,YAEnCA,EAAKC,OACLF,EAAcC,EAAKC,KACdC,MAAM,KACN5N,MAAM,EAAGgN,EAASa,kBAClBC,KAAK,KAENJ,EAAKC,KAAKjP,OAAS+O,EAAY/O,QACgB,MAA/C+O,EAAYM,OAAON,EAAY/O,OAAS,KAExC+O,GAAe,SAKnBtC,WAAKhI,UAAU,gBACXgI,WAAKhI,UAAU,wBACXgI,SAAG6C,KAAMhB,EAASiB,SAAWP,EAAKQ,KAAMR,EAAKS,QAEhDnB,EAASoB,OACNjD,WAAKhI,UAAU,kCAA+BuK,EAAKW,OAEtDrB,EAASsB,SACNnD,WAAKhI,UAAU,sBACXgI,SAAG6C,KAAMhB,EAASiB,SAAWP,EAAKQ,KAC7BR,EAAKQ,IAAI5M,cAAciB,QAAQ,eAAgB,MAI3DkL,EAAYE,MACTxC,WAAKhI,UAAU,uBAAuBsK,ICjDtD,MAAe,CACX,IACA,QACA,QACA,QACA,QACA,UACA,MACA,KACA,KACA,MACA,MACA,MACA,SACA,KACA,KACA,KACA,UACA,OACA,SACA,QACA,QACA,UACA,OACA,MACA,KACA,QACA,SACA,QACA,WACA,MACA,SACA,KACA,OACA,UACA,QACA,QACA,OACA,SACA,OACA,MACA,MACA,OACA,UACA,MACA,SACA,MACA,SACA,OACA,UACA,SACA,KACA,OACA,QACA,OACA,MACA,OACA,SACA,OACA,UACA,MACA,UACA,MACA,MACA,QACA,IACA,MACA,OACA,MACA,OACA,KACA,KACA,OACA,KACA,QACA,KACA,OACA,MACA,SACA,QACA,KACA,OACA,OACA,UACA,KACA,SACA,KACA,MACA,MACA,KACA,MACA,KACA,OACA,OACA,KACA,QACA,QACA,MACA,OACA,YACA,MACA,OACA,MACA,OACA,SACA,MACA,QACA,SACA,QACA,SACA,YACA,KACA,OACA,OACA,OACA,OACA,SACA,MACA,QACA,SACA,OACA,aACA,OACA,QACA,UACA,QA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"} \ No newline at end of file +{"version":3,"file":"search.min.js.map","sources":["../node_modules/preact/dist/preact.module.js","../node_modules/flexsearch/dist/flexsearch.min.js","../src/js/search/translation.js","../src/js/search/Pagination.js","../src/js/search/Result.js","../src/js/search/Search.js","../src/js/search/index.js"],"sourcesContent":["var n,l,u,t,i,r,o,f={},e=[],c=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|^--/i;function s(n,l){for(var u in l)n[u]=l[u];return n}function a(n){var l=n.parentNode;l&&l.removeChild(n)}function h(n,l,u){var t,i,r,o,f=arguments;if(l=s({},l),arguments.length>3)for(u=[u],t=3;t2&&(l.children=e.slice.call(arguments,2)),v(n.type,l,l.key||n.key,l.ref||n.ref)}function O(n){var l={},u={__c:\"__cC\"+o++,__p:n,Consumer:function(n,l){return this.shouldComponentUpdate=function(n,u,t){return t!==l},n.children(l)},Provider:function(n){var t,i=this;return this.getChildContext||(t=[],this.getChildContext=function(){return l[u.__c]=i,l},this.shouldComponentUpdate=function(n){t.some(function(l){l.__P&&(l.context=n.value,k(l))})},this.sub=function(n){t.push(n);var l=n.componentWillUnmount;n.componentWillUnmount=function(){t.splice(t.indexOf(n),1),l&&l.call(n)}}),n.children}};return u.Consumer.contextType=u,u}n={},l=function(n){return null!=n&&void 0===n.constructor},m.prototype.setState=function(n,l){var u=this.__s!==this.state&&this.__s||(this.__s=s({},this.state));(\"function\"!=typeof n||(n=n(u,this.props)))&&s(u,n),null!=n&&this.__v&&(l&&this.__h.push(l),k(this))},m.prototype.forceUpdate=function(n){var l,u,t,i=this.__v,r=this.__v.__e,o=this.__P;o&&(l=!1!==n,u=[],t=$(o,i,s({},i),this.__n,void 0!==o.ownerSVGElement,null,u,l,null==r?w(i):r),j(u,i),t!=r&&g(i)),n&&n()},m.prototype.render=y,u=[],t=\"function\"==typeof Promise?Promise.prototype.then.bind(Promise.resolve()):setTimeout,i=n.debounceRendering,n.__e=function(n,l,u){for(var t;l=l.__p;)if((t=l.__c)&&!t.__p)try{if(t.constructor&&null!=t.constructor.getDerivedStateFromError)t.setState(t.constructor.getDerivedStateFromError(n));else{if(null==t.componentDidCatch)continue;t.componentDidCatch(n)}return k(t.__E=t)}catch(l){n=l}throw n},r=f,o=0;export{I as render,L as hydrate,h as createElement,h,y as Fragment,p as createRef,l as isValidElement,m as Component,M as cloneElement,O as createContext,x as toChildArray,D as _unmount,n as options};\n//# sourceMappingURL=preact.module.js.map\n","/*\r\n FlexSearch v0.6.30\r\n Copyright 2019 Nextapps GmbH\r\n Author: Thomas Wilkerling\r\n Released under the Apache 2.0 Licence\r\n https://github.com/nextapps-de/flexsearch\r\n*/\r\n'use strict';(function(K,R,w){let L;(L=w.define)&&L.amd?L([],function(){return R}):(L=w.modules)?L[K.toLowerCase()]=R:\"object\"===typeof exports?module.exports=R:w[K]=R})(\"FlexSearch\",function ma(K){function w(a,c){const b=c?c.id:a&&a.id;this.id=b||0===b?b:na++;this.init(a,c);fa(this,\"index\",function(){return this.a?Object.keys(this.a.index[this.a.keys[0]].c):Object.keys(this.c)});fa(this,\"length\",function(){return this.index.length})}function L(a,c,b,d){this.u!==this.g&&(this.o=this.o.concat(b),this.u++,\r\nd&&this.o.length>=d&&(this.u=this.g),this.u===this.g&&(this.cache&&this.j.set(c,this.o),this.F&&this.F(this.o)));return this}function S(a){const c=B();for(const b in a)if(a.hasOwnProperty(b)){const d=a[b];F(d)?c[b]=d.slice(0):G(d)?c[b]=S(d):c[b]=d}return c}function W(a,c){const b=a.length,d=O(c),e=[];for(let g=0,f=0;g=f&&(a=a[h-(e+.5>>0)],a=a[b]||(a[b]=[]),\r\na[a.length]=d);return e}function ba(a,c){if(a){const b=Object.keys(a);for(let d=0,e=b.length;da?1:a?-1:0}function pa(a,c){a=a[M];c=c[M];return ac?1:0}function oa(a,c){const b=M.length;for(let d=0;dc?1:0}function T(a,c,b){return a?{page:a,next:c?\"\"+c:null,result:b}:b}function ha(a,c,b,d,e,g,f){let h,k=[];if(!0===b){b=\"0\";var l=\"\"}else l=b&&b.split(\":\");const n=a.length;if(1f&&(l=0),l=l||0,h=l+c,h=this.m.length&&(this.C=0),this.m[this.C].postMessage({add:!0,id:a,\r\ncontent:c}),this.c[g]=\"\"+this.C,b&&b(),this;if(!e){if(this.async&&\"function\"!==typeof importScripts){let t=this;g=new Promise(function(v){setTimeout(function(){t.add(a,c,null,d,!0);t=null;v()})});if(b)g.then(b);else return g;return this}if(b)return this.add(a,c,null,d,!0),b(),this}c=this.encode(c);if(!c.length)return this;b=this.f;e=O(b)?b(c):c.split(this.split);this.filter&&(e=W(e,this.filter));const p=B();p._ctx=B();const m=e.length,u=this.threshold,q=this.depth,A=this.b,z=this.i,y=this.D;for(let t=\r\n0;tn;x--)l=f.substring(n,x),V(z,p,l,a,v,k,u,A-1)}break;default:if(h=V(z,p,f,a,1,k,u,A-1),q&&1=u)for(h=p._ctx[f]||(p._ctx[f]=B()),f=this.h[f]||(this.h[f]=ia(A-(u||0))),k=t-q,l=t+q+1,0>k&&(k=0),l>\r\nm&&(l=m);kf;d--)e=h[d-1],h[d]=e,g[e]=d;h[f]=c;g[c]=f}}}return b};return a}();return w}(function(){const K={},R=\"undefined\"!==typeof Blob&&\"undefined\"!==typeof URL&&URL.createObjectURL;return function(w,L,S,W,P){S=R?URL.createObjectURL(new Blob([\"(\"+S.toString()+\")()\"],{type:\"text/javascript\"})):w+\".min.js\";w+=\"-\"+L;K[w]||(K[w]=[]);K[w][P]=new Worker(S);K[w][P].onmessage=W;return K[w][P]}}()),this);\r\n","/* eslint-disable camelcase */\nconst {\n Link_previous,\n Link_next,\n Search_no_results,\n Search_one_character_or_more,\n Search_one_result,\n Search_results,\n Search_should_be_x_or_more,\n Search_too_short\n} = window.searchTranslation;\n\nconst textLinkPrevious = Link_previous;\nconst textLinkNext = Link_next;\nconst textSearchNoResults = Search_no_results;\nconst textSearchOneCharacterOrMore = Search_one_character_or_more;\nconst textSearchOneResult = Search_one_result;\nconst textSearchResults = Search_results;\nconst textSearchShouldBeXOrMore = Search_should_be_x_or_more;\nconst textSearchTooShort = Search_too_short;\n/* eslint-enable camelcase */\n\nexport {\n textLinkPrevious,\n textLinkNext,\n textSearchNoResults,\n textSearchOneCharacterOrMore,\n textSearchOneResult,\n textSearchResults,\n textSearchShouldBeXOrMore,\n textSearchTooShort\n};\n","import * as preact from \"preact\";\nimport { textLinkPrevious, textLinkNext } from \"./translation\";\n/** @jsx preact.h */\n\nexport default function Pagination({ counter, start, settings, onPageSelect }) {\n const pages = Math.ceil(counter / settings.show);\n const page = start / settings.show;\n\n let displayedPages;\n if (page <= 2) {\n // Display max three pages\n displayedPages = Math.min(pages, 3);\n } else {\n // Display two more pages, but don't overflow\n displayedPages = Math.min(pages, page + 2);\n }\n\n const items = [];\n\n for (let f = 0; f < displayedPages; f++) {\n if (f === page) {\n items.push(
  • {f + 1}
  • );\n } else {\n items.push(\n
  • \n onPageSelect(f * settings.show)}\n >\n {f + 1}\n \n
  • \n );\n }\n }\n\n return (\n
    \n
      \n {start > 0 && (\n
    • \n onPageSelect(start - settings.show)}\n >\n {textLinkPrevious}\n \n
    • \n )}\n {items}\n {page + 1 !== pages && (\n
    • \n onPageSelect(start + settings.show)}\n >\n {textLinkNext}\n \n
    • \n )}\n
    \n
    \n );\n}\n","import * as preact from \"preact\";\n/** @jsx preact.h */\n\n// TODO :: restore highlight\n/*function highlightText(search, text) {\n if (settings.highlightTerms) {\n var pattern = new RegExp(\n `(${search})`,\n settings.highlightEveryTerm ? \"gi\" : \"i\"\n );\n text = text.replace(\n pattern,\n '$1'\n );\n }\n\n return text;\n}*/\n\nexport default function Result({ settings, item }) {\n let text;\n if (item.text) {\n text = item.text\n .split(\" \")\n .slice(0, settings.descriptiveWords)\n .join(\" \");\n if (\n item.text.length < text.length &&\n text.charAt(text.length - 1) !== \".\"\n ) {\n text += \" ...\";\n }\n }\n\n return (\n
    \n \n {settings.showURL && (\n \n )}\n {text &&
    {text}
    }\n
    \n );\n}\n","import * as preact from \"preact\";\n\nimport Pagination from \"./Pagination\";\nimport Result from \"./Result\";\nimport {\n textSearchNoResults,\n textSearchOneCharacterOrMore,\n textSearchOneResult,\n textSearchResults,\n textSearchShouldBeXOrMore,\n textSearchTooShort\n} from \"./translation\";\n\n/** @jsx preact.h */\n\nexport default class Search extends preact.Component {\n constructor(props) {\n super(props);\n\n this.state = {\n search: this.props.settings.field.value || \"\",\n start: 0\n };\n }\n\n // \"click\", \".SearchResults__close\"\n handleClose = () => {\n this.props.onClose();\n };\n\n scrollTop = () => {\n if (this.resultRef) {\n this.resultRef.scrollTop = 0;\n }\n };\n\n handlePaginate = start => {\n this.setState({ start }, this.scrollTop);\n };\n\n handleChange = event => {\n this.setState({ search: event.target.value, start: 0 }, this.scrollTop);\n\n this.props.settings.field.value = event.target.value;\n };\n\n getResults() {\n const { settings } = this.props;\n const { start } = this.state;\n\n const warnings = [];\n let counter = 0;\n let results = [];\n\n if (this.state.search.length < settings.minimumLength) {\n warnings.push(textSearchTooShort);\n warnings.push(\n settings.minimumLength === 1\n ? textSearchOneCharacterOrMore\n : textSearchShouldBeXOrMore.replace(\n \"!min\",\n settings.minimumLength\n )\n );\n\n return { warnings, counter, results, start };\n }\n\n const found = this.props.onSearch(this.state.search);\n\n counter = found.length;\n\n if (counter === 0) {\n warnings.push(textSearchNoResults);\n return { warnings, counter, results, start };\n }\n\n if (settings.showTitleCount) {\n this.props.onTitleChange(`(${counter})`);\n }\n\n results = found.filter(\n (item, itemNumber) =>\n itemNumber >= start && itemNumber < settings.show + start\n );\n\n return { warnings, counter, results, start };\n }\n\n render() {\n const { settings } = this.props;\n const { warnings, counter, results, start } = this.getResults();\n\n return (\n
    \n
    \n (this.resultRef = el)}\n >\n \n \n ×\n \n
    \n {counter === 1\n ? textSearchOneResult\n : textSearchResults.replace(\"!count\", counter)}\n
    \n {warnings.map(warning => (\n
    \n {warning}\n
    \n ))}\n {results.map(result => (\n \n ))}\n {counter > settings.show && (\n \n )}\n
    \n
    \n );\n }\n}\n","import * as preact from \"preact\";\nimport FlexSearch from \"flexsearch\";\n\nimport Search from \"./Search\";\n\n/** @jsx preact.h */\n\nconst originalTitle = document.title;\n\nfunction getURLP(name) {\n const elements = new RegExp(`[?|&]${name}=([^&;]+?)(&|#|;|$)`).exec(\n window.location.search\n );\n\n return (\n decodeURIComponent(\n ((elements && elements[1]) || \"\").replace(/\\+/g, \"%20\")\n ) || null\n );\n}\n\nclass SearchEngine {\n constructor(options) {\n this.settings = {\n field: document.getElementById(\"search_input\"),\n show: 10,\n showURL: true,\n showTitleCount: true,\n minimumLength: 3,\n descriptiveWords: 25,\n highlightTerms: true,\n highlightEveryTerm: false,\n contentLocation: \"search/search_index.json\",\n ...options\n };\n\n this.searchIndex = {\n pages: []\n };\n }\n\n loadData() {\n if (!this.loadingPromise) {\n this.loadingPromise = fetch(\n this.settings.base_url + this.settings.contentLocation\n )\n .then(data => data.json())\n .then(json => {\n this.searchIndex = new FlexSearch({\n doc: {\n id: \"url\",\n field: [\"title\", \"text\", \"tags\"]\n }\n });\n\n let pages = json.pages;\n\n // Only keep the pages related to the current language\n if (window.searchLanguage) {\n const pagePrefix = `${window.searchLanguage}/`;\n pages = pages.filter(\n item => item.url.indexOf(pagePrefix) === 0\n );\n }\n\n this.searchIndex.add(pages);\n });\n }\n\n return this.loadingPromise;\n }\n\n run() {\n if (getURLP(\"q\")) {\n this.settings.field.value = getURLP(\"q\");\n\n this.loadData().then(() => {\n this.displaySearch();\n });\n }\n\n this.settings.field.addEventListener(\"keyup\", event => {\n // Start loading index once the user types text in the field, not before\n this.loadData();\n\n if (parseInt(event.keyCode, 10) === 13) {\n this.loadData().then(() => {\n this.displaySearch();\n });\n }\n });\n }\n\n keyUpHandler = e => {\n if (e.which === 27) {\n //escape\n this.handleClose();\n }\n };\n\n handleClose = () => {\n document.title = originalTitle;\n\n document.removeEventListener(\"keyup\", this.keyUpHandler);\n\n document.body.classList.remove(\"with-search\");\n preact.render(null, this.resultContainer);\n this.resultContainer = null;\n };\n\n displaySearch() {\n if (!this.resultContainer) {\n this.resultContainer = document.createElement(\"div\");\n document.body.appendChild(this.resultContainer);\n }\n\n document.addEventListener(\"keyup\", this.keyUpHandler);\n\n preact.render(\n this.searchIndex.search(term)}\n onClose={this.handleClose}\n onTitleChange={title => {\n document.title = `${title} ${originalTitle}`;\n }}\n settings={this.settings}\n />,\n this.resultContainer\n );\n\n document.body.classList.add(\"with-search\");\n document.body.scrollTop = 0;\n }\n}\n\n// Main containers\n\nfunction search(options) {\n const instance = new SearchEngine(options);\n instance.run();\n}\n\n// Declare globally\nwindow.search = search;\n"],"names":["n","u","t","i","r","f","e","c","s","l","a","parentNode","removeChild","h","o","arguments","length","push","children","defaultProps","key","ref","v","type","props","__k","__p","__b","__e","__c","constructor","vnode","y","m","this","context","w","indexOf","k","__d","debounceRendering","_","sort","__v","pop","forceUpdate","b","p","d","g","x","$","appendChild","nextSibling","insertBefore","value","D","A","Array","isArray","P","setProperty","test","N","style","cssText","replace","toLowerCase","slice","addEventListener","T","removeEventListener","removeAttributeNS","setAttributeNS","removeAttribute","setAttribute","event","C","contextType","__E","prototype","render","H","sub","state","__n","__h","__s","getDerivedStateFromProps","componentWillMount","componentDidMount","componentWillReceiveProps","shouldComponentUpdate","componentWillUpdate","__r","__P","getChildContext","getSnapshotBeforeUpdate","base","call","componentDidUpdate","z","diffed","j","nodeType","localName","document","createTextNode","createElementNS","createElement","data","childNodes","dangerouslySetInnerHTML","__html","innerHTML","checked","current","unmount","componentWillUnmount","I","ownerSVGElement","setState","Promise","then","bind","resolve","setTimeout","getDerivedStateFromError","componentDidCatch","K","R","L","define","amd","modules","module","ma","id","na","init","fa","Object","keys","index","concat","cache","set","F","W","O","ha","page","next","result","where","M","split","oa","pa","defineProperty","get","RegExp","Q","V","ba","splice","G","ca","qa","B","da","X","ea","Y","E","parseInt","J","ra","q","Z","ia","create","sa","self","onmessage","search","content","threshold","limit","postMessage","add","update","remove","clear","info","worker","console","log","register","options","async","Function","substring","lastIndexOf","ta","cursor","suggest","toString","encode","depth","ja","memory","speed","match","score","balance","fast","aa","ka","la","registerMatcher","hasOwnProperty","registerEncoder","U","registerLanguage","filter","stemmer","preset","Worker","tokenize","rtl","resolution","matcher","addMatcher","lang","doc","S","field","tag","store","ua","importScripts","_ctx","query","callback","bool","all","apply","find","items","contextual","destroy","export","serialize","JSON","stringify","import","parse","va","icase","simple","advanced","extra","join","count","Blob","URL","createObjectURL","window","searchTranslation","Link_previous","Link_next","Search_no_results","Search_one_character_or_more","Search_one_result","Search_results","Search_should_be_x_or_more","Search_too_short","textLinkPrevious","textLinkNext","textSearchNoResults","textSearchOneCharacterOrMore","textSearchOneResult","textSearchResults","textSearchShouldBeXOrMore","textSearchTooShort","Pagination","displayedPages","counter","start","settings","onPageSelect","pages","Math","ceil","show","min","preact.h","className","onClick","Result","text","item","descriptiveWords","charAt","href","base_url","url","title","showURL","Search","handleClose","onClose","scrollTop","_this","resultRef","handlePaginate","handleChange","target","preact","warnings","results","minimumLength","found","onSearch","showTitleCount","onTitleChange","itemNumber","getResults","el","_this2","placeholder","autoComplete","autoSave","onInput","map","warning","originalTitle","getURLP","name","elements","exec","location","decodeURIComponent","SearchEngine","keyUpHandler","which","body","classList","resultContainer","getElementById","highlightTerms","highlightEveryTerm","contentLocation","searchIndex","loadingPromise","fetch","json","FlexSearch","searchLanguage","pagePrefix","loadData","_this3","displaySearch","keyCode","term","_this4","run"],"mappings":"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"} \ No newline at end of file diff --git a/src/js/search/Pagination.js b/src/js/search/Pagination.js index d514bfc..e637538 100644 --- a/src/js/search/Pagination.js +++ b/src/js/search/Pagination.js @@ -1,4 +1,4 @@ -import preact from "preact"; +import * as preact from "preact"; import { textLinkPrevious, textLinkNext } from "./translation"; /** @jsx preact.h */ diff --git a/src/js/search/Result.js b/src/js/search/Result.js index 196f747..e737b1f 100644 --- a/src/js/search/Result.js +++ b/src/js/search/Result.js @@ -1,4 +1,4 @@ -import preact from "preact"; +import * as preact from "preact"; /** @jsx preact.h */ // TODO :: restore highlight @@ -18,17 +18,17 @@ import preact from "preact"; }*/ export default function Result({ settings, item }) { - let description; - if (item.desc) { - description = item.desc + let text; + if (item.text) { + text = item.text .split(" ") .slice(0, settings.descriptiveWords) .join(" "); if ( - item.desc.length < description.length && - description.charAt(description.length - 1) !== "." + item.text.length < text.length && + text.charAt(text.length - 1) !== "." ) { - description += " ..."; + text += " ..."; } } @@ -37,9 +37,6 @@ export default function Result({ settings, item }) { - {settings.debug && ( -
    Score: {item.score}
    - )} {settings.showURL && ( )} - {description.desc && ( -
    {description}
    - )} + {text &&
    {text}
    } ); } diff --git a/src/js/search/Search.js b/src/js/search/Search.js index 4417b68..c05628d 100644 --- a/src/js/search/Search.js +++ b/src/js/search/Search.js @@ -1,9 +1,8 @@ -import preact from "preact"; +import * as preact from "preact"; import Pagination from "./Pagination"; import Result from "./Result"; import { - textSearchCommonWordsIgnored, textSearchNoResults, textSearchOneCharacterOrMore, textSearchOneResult, @@ -11,7 +10,6 @@ import { textSearchShouldBeXOrMore, textSearchTooShort } from "./translation"; -import { getResults, getSearchString } from "./utils"; /** @jsx preact.h */ @@ -47,42 +45,28 @@ export default class Search extends preact.Component { }; getResults() { - const { settings, searchIndex } = this.props; + const { settings } = this.props; const { start } = this.state; - const searchString = getSearchString( - this.state.search.toLowerCase().trim() - ); - const searchFor = searchString.searchFor; - const warnings = []; let counter = 0; let results = []; - if (searchFor.length < settings.minimumLength) { - if (searchString.hasStopWords) { - warnings.push( - `${textSearchNoResults}. ${textSearchCommonWordsIgnored}` - ); - } else { - warnings.push(textSearchTooShort); - warnings.push( - settings.minimumLength === 1 - ? textSearchOneCharacterOrMore - : textSearchShouldBeXOrMore.replace( - "!min", - settings.minimumLength - ) - ); - } + if (this.state.search.length < settings.minimumLength) { + warnings.push(textSearchTooShort); + warnings.push( + settings.minimumLength === 1 + ? textSearchOneCharacterOrMore + : textSearchShouldBeXOrMore.replace( + "!min", + settings.minimumLength + ) + ); + return { warnings, counter, results, start }; } - const found = getResults( - searchIndex, - searchString.searchFor, - searchString.isStandard - ); + const found = this.props.onSearch(this.state.search); counter = found.length; diff --git a/src/js/search/index.js b/src/js/search/index.js index 0dfecfe..0aa16da 100644 --- a/src/js/search/index.js +++ b/src/js/search/index.js @@ -1,13 +1,24 @@ -import preact from "preact"; +import * as preact from "preact"; +import FlexSearch from "flexsearch"; import Search from "./Search"; -import { getURLP } from "./utils"; - /** @jsx preact.h */ const originalTitle = document.title; +function getURLP(name) { + const elements = new RegExp(`[?|&]${name}=([^&;]+?)(&|#|;|$)`).exec( + window.location.search + ); + + return ( + decodeURIComponent( + ((elements && elements[1]) || "").replace(/\+/g, "%20") + ) || null + ); +} + class SearchEngine { constructor(options) { this.settings = { @@ -20,7 +31,6 @@ class SearchEngine { highlightTerms: true, highlightEveryTerm: false, contentLocation: "search/search_index.json", - debug: false, ...options }; @@ -36,7 +46,24 @@ class SearchEngine { ) .then(data => data.json()) .then(json => { - this.searchIndex = json; + this.searchIndex = new FlexSearch({ + doc: { + id: "url", + field: ["title", "text", "tags"] + } + }); + + let pages = json.pages; + + // Only keep the pages related to the current language + if (window.searchLanguage) { + const pagePrefix = `${window.searchLanguage}/`; + pages = pages.filter( + item => item.url.indexOf(pagePrefix) === 0 + ); + } + + this.searchIndex.add(pages); }); } @@ -77,9 +104,8 @@ class SearchEngine { document.removeEventListener("keyup", this.keyUpHandler); document.body.classList.remove("with-search"); - preact.render("", this.resultContainer, this.renderedElement); + preact.render(null, this.resultContainer); this.resultContainer = null; - this.renderedElement = null; }; displaySearch() { @@ -90,9 +116,9 @@ class SearchEngine { document.addEventListener("keyup", this.keyUpHandler); - this.renderedElement = preact.render( + preact.render( this.searchIndex.search(term)} onClose={this.handleClose} onTitleChange={title => { document.title = `${title} ${originalTitle}`; diff --git a/src/js/search/stopwords.js b/src/js/search/stopwords.js deleted file mode 100644 index 6766bbd..0000000 --- a/src/js/search/stopwords.js +++ /dev/null @@ -1,177 +0,0 @@ -// Stop words (list from http://www.ranks.nl/stopwords) -export default [ - "a", - "about", - "above", - "after", - "again", - "against", - "all", - "am", - "an", - "and", - "any", - "are", - "aren't", - "as", - "at", - "be", - "because", - "been", - "before", - "being", - "below", - "between", - "both", - "but", - "by", - "can't", - "cannot", - "could", - "couldn't", - "did", - "didn't", - "do", - "does", - "doesn't", - "doing", - "don't", - "down", - "during", - "each", - "few", - "for", - "from", - "further", - "had", - "hadn't", - "has", - "hasn't", - "have", - "haven't", - "having", - "he", - "he'd", - "he'll", - "he's", - "her", - "here", - "here's", - "hers", - "herself", - "him", - "himself", - "his", - "how", - "how's", - "i", - "i'd", - "i'll", - "i'm", - "i've", - "if", - "in", - "into", - "is", - "isn't", - "it", - "it's", - "its", - "itself", - "let's", - "me", - "more", - "most", - "mustn't", - "my", - "myself", - "no", - "nor", - "not", - "of", - "off", - "on", - "once", - "only", - "or", - "other", - "ought", - "our", - "ours", - "ourselves", - "out", - "over", - "own", - "same", - "shan't", - "she", - "she'd", - "she'll", - "she's", - "should", - "shouldn't", - "so", - "some", - "such", - "than", - "that", - "that's", - "the", - "their", - "theirs", - "them", - "themselves", - "then", - "there", - "there's", - "these", - "they", - "they'd", - "they'll", - "they're", - "they've", - "this", - "those", - "through", - "to", - "too", - "under", - "until", - "up", - "very", - "was", - "wasn't", - "we", - "we'd", - "we'll", - "we're", - "we've", - "were", - "weren't", - "what", - "what's", - "when", - "when's", - "where", - "where's", - "which", - "while", - "who", - "who's", - "whom", - "why", - "why's", - "with", - "won't", - "would", - "wouldn't", - "you", - "you'd", - "you'll", - "you're", - "you've", - "your", - "yours", - "yourself", - "yourselves" -]; diff --git a/src/js/search/translation.js b/src/js/search/translation.js index ee6ab51..9a9cfa9 100644 --- a/src/js/search/translation.js +++ b/src/js/search/translation.js @@ -2,7 +2,6 @@ const { Link_previous, Link_next, - Search_common_words_ignored, Search_no_results, Search_one_character_or_more, Search_one_result, @@ -13,7 +12,6 @@ const { const textLinkPrevious = Link_previous; const textLinkNext = Link_next; -const textSearchCommonWordsIgnored = Search_common_words_ignored; const textSearchNoResults = Search_no_results; const textSearchOneCharacterOrMore = Search_one_character_or_more; const textSearchOneResult = Search_one_result; @@ -25,7 +23,6 @@ const textSearchTooShort = Search_too_short; export { textLinkPrevious, textLinkNext, - textSearchCommonWordsIgnored, textSearchNoResults, textSearchOneCharacterOrMore, textSearchOneResult, diff --git a/src/js/search/utils.js b/src/js/search/utils.js deleted file mode 100644 index b16f92b..0000000 --- a/src/js/search/utils.js +++ /dev/null @@ -1,120 +0,0 @@ -import stopWords from "./stopwords"; - -export function getURLP(name) { - const elements = new RegExp(`[?|&]${name}=([^&;]+?)(&|#|;|$)`).exec( - window.location.search - ); - - return ( - decodeURIComponent( - ((elements && elements[1]) || "").replace(/\+/g, "%20") - ) || null - ); -} - -function getScore(searchFor, page) { - let score = 0; - const pat = new RegExp(searchFor, "gi"); - - if (page.title.search(pat) !== -1) { - score += 20 * page.title.match(pat).length; - } - - if (page.text.search(pat) !== -1) { - score += 20 * page.text.match(pat).length; - } - - if (page.tags.search(pat) !== -1) { - score += 10 * page.tags.match(pat).length; - } - - if (page.url.search(pat) !== -1) { - score += 20; - } - - return score; -} - -function getStandardScore(searchWords, page) { - let score = 0; - for (let f = 0; f < searchWords.length; f++) { - if (searchWords[f].match("^-")) { - const pat = new RegExp(searchWords[f].substring(1), "i"); - if ( - page.title.search(pat) !== -1 || - page.text.search(pat) !== -1 || - page.tags.search(pat) !== -1 - ) { - score = 0; - } - } else { - score += getScore(searchWords[f], page); - } - } - - return score; -} - -export function getSearchString(search) { - let isStandard = true; - let hasStopWords = false; - if ( - (search.match('^"') && search.match('"$')) || - (search.match("^'") && search.match("'$")) - ) { - isStandard = false; - } - - let searchFor; - if (isStandard) { - const searchWords = search.split(" "); - searchFor = searchWords - .filter(word => stopWords.indexOf(word) === -1) - .join(" "); - hasStopWords = search !== searchFor; - } else { - searchFor = searchFor.substring(1, searchFor.length - 1); - } - - return { - hasStopWords, - isStandard, - searchFor - }; -} - -function makeResult(score, { title, url }, desc) { - return { - score, - title, - desc, - url - }; -} - -export function getResults(index, searchFor, standard) { - const found = []; - - let pages = index.pages; - - // If a searchLanguage is set, filter out all other pages - if (window.searchLanguage) { - pages = pages.filter( - item => item.url.indexOf(`${window.searchLanguage}/`) === 0 - ); - } - - const searchWords = searchFor.split(" "); - for (let i = 0; i < pages.length; i++) { - const score = standard - ? getStandardScore(searchWords, pages[i]) - : getScore(searchFor, pages[i]); - if (score !== 0) { - found.push(makeResult(score, pages[i], pages[i].text)); - } - } - - found.sort((a, b) => b.score - a.score); - - return found; -} diff --git a/yarn.lock b/yarn.lock index 57401cd..21f4681 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3470,6 +3470,11 @@ flatten@^1.0.2: resolved "https://registry.yarnpkg.com/flatten/-/flatten-1.0.2.tgz#dae46a9d78fbe25292258cc1e780a41d95c03782" integrity sha1-2uRqnXj74lKSJYzB54CkHZXAN4I= +flexsearch@^0.6.30: + version "0.6.30" + resolved "https://registry.yarnpkg.com/flexsearch/-/flexsearch-0.6.30.tgz#d3f14389c9a4e5758b12290b3bafcd383cdc53de" + integrity sha512-zDBhMWbM65TsJJPBYoxV+MENufDylNtMz38e6MLTShwwuHeRNBxRYGAxR0DlwSkC4u+X2S8mlcdROWXMDleNwQ== + flush-write-stream@^1.0.0, flush-write-stream@^1.0.2: version "1.1.1" resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8" @@ -6269,10 +6274,10 @@ postcss@^6.0.0, postcss@^6.0.1, postcss@^6.0.10, postcss@^6.0.18, postcss@^6.0.2 source-map "^0.6.1" supports-color "^5.4.0" -preact@^8.5.2: - version "8.5.2" - resolved "https://registry.yarnpkg.com/preact/-/preact-8.5.2.tgz#2f532da485287c07369e08150cf4d23921a09789" - integrity sha512-37tlDJGq5IQKqGUbqPZ7qPtsTOWFyxe+ojAOFfzKo0dEPreenqrqgJuS83zGpeGAqD9h9L9Yr7QuxH2W4ZrKxg== +preact@^10.0.0-rc.3: + version "10.0.0-rc.3" + resolved "https://registry.yarnpkg.com/preact/-/preact-10.0.0-rc.3.tgz#258d1bbf11744e0460b8681422cd6a0c18200df7" + integrity sha512-IvDc2AGvHJncEtORciLDzpluDF2MsZqf9eo6xHt7HVY4E6OvxZzAePYJtv3siVdEntxmB9NciQpbToT1APqJYQ== prelude-ls@~1.1.2: version "1.1.2"