"use strict";
( () => {
var xe = Object.create;
var U = Object.defineProperty
, ve = Object.defineProperties
, Se = Object.getOwnPropertyDescriptor
, Te = Object.getOwnPropertyDescriptors
, Qe = Object.getOwnPropertyNames
, Y = Object.getOwnPropertySymbols
, Ee = Object.getPrototypeOf
, X = Object.prototype.hasOwnProperty
, be = Object.prototype.propertyIsEnumerable;
var Z = Math.pow
, J = (t, e, r) => e in t ? U(t, e, {
enumerable: !0,
configurable: !0,
writable: !0,
value: r
}) : t[e] = r
, A = (t, e) => {
for (var r in e || (e = {}))
X.call(e, r) && J(t, r, e[r]);
if (Y)
for (var r of Y(e))
be.call(e, r) && J(t, r, e[r]);
return t
}
, G = (t, e) => ve(t, Te(e));
var Le = (t, e) => () => (e || t((e = {
exports: {}
}).exports, e),
e.exports);
var we = (t, e, r, n) => {
if (e && typeof e == "object" || typeof e == "function")
for (let i of Qe(e))
!X.call(t, i) && i !== r && U(t, i, {
get: () => e[i],
enumerable: !(n = Se(e, i)) || n.enumerable
});
return t
}
;
var Pe = (t, e, r) => (r = t != null ? xe(Ee(t)) : {},
we(e || !t || !t.__esModule ? U(r, "default", {
value: t,
enumerable: !0
}) : r, t));
var B = (t, e, r) => new Promise( (n, i) => {
var s = u => {
try {
a(r.next(u))
} catch (c) {
i(c)
}
}
, o = u => {
try {
a(r.throw(u))
} catch (c) {
i(c)
}
}
, a = u => u.done ? n(u.value) : Promise.resolve(u.value).then(s, o);
a((r = r.apply(t, e)).next())
}
);
var te = Le( (K, ee) => {
/**
* lunr - http://lunrjs.com - A bit like Solr, but much smaller and not as bright - 2.3.9
* Copyright (C) 2020 Oliver Nightingale
* @license MIT
*/
(function() {
var t = function(e) {
var r = new t.Builder;
return r.pipeline.add(t.trimmer, t.stopWordFilter, t.stemmer),
r.searchPipeline.add(t.stemmer),
e.call(r, r),
r.build()
};
t.version = "2.3.9";
/*!
* lunr.utils
* Copyright (C) 2020 Oliver Nightingale
*/
t.utils = {},
t.utils.warn = function(e) {
return function(r) {
e.console && console.warn && console.warn(r)
}
}(this),
t.utils.asString = function(e) {
return e == null ? "" : e.toString()
}
,
t.utils.clone = function(e) {
if (e == null)
return e;
for (var r = Object.create(null), n = Object.keys(e), i = 0; i < n.length; i++) {
var s = n[i]
, o = e[s];
if (Array.isArray(o)) {
r[s] = o.slice();
continue
}
if (typeof o == "string" || typeof o == "number" || typeof o == "boolean") {
r[s] = o;
continue
}
throw new TypeError("clone is not deep and does not support nested objects")
}
return r
}
,
t.FieldRef = function(e, r, n) {
this.docRef = e,
this.fieldName = r,
this._stringValue = n
}
,
t.FieldRef.joiner = "/",
t.FieldRef.fromString = function(e) {
var r = e.indexOf(t.FieldRef.joiner);
if (r === -1)
throw "malformed field ref string";
var n = e.slice(0, r)
, i = e.slice(r + 1);
return new t.FieldRef(i,n,e)
}
,
t.FieldRef.prototype.toString = function() {
return this._stringValue == null && (this._stringValue = this.fieldName + t.FieldRef.joiner + this.docRef),
this._stringValue
}
;
/*!
* lunr.Set
* Copyright (C) 2020 Oliver Nightingale
*/
t.Set = function(e) {
if (this.elements = Object.create(null),
e) {
this.length = e.length;
for (var r = 0; r < this.length; r++)
this.elements[e[r]] = !0
} else
this.length = 0
}
,
t.Set.complete = {
intersect: function(e) {
return e
},
union: function() {
return this
},
contains: function() {
return !0
}
},
t.Set.empty = {
intersect: function() {
return this
},
union: function(e) {
return e
},
contains: function() {
return !1
}
},
t.Set.prototype.contains = function(e) {
return !!this.elements[e]
}
,
t.Set.prototype.intersect = function(e) {
var r, n, i, s = [];
if (e === t.Set.complete)
return this;
if (e === t.Set.empty)
return e;
this.length < e.length ? (r = this,
n = e) : (r = e,
n = this),
i = Object.keys(r.elements);
for (var o = 0; o < i.length; o++) {
var a = i[o];
a in n.elements && s.push(a)
}
return new t.Set(s)
}
,
t.Set.prototype.union = function(e) {
return e === t.Set.complete ? t.Set.complete : e === t.Set.empty ? this : new t.Set(Object.keys(this.elements).concat(Object.keys(e.elements)))
}
,
t.idf = function(e, r) {
var n = 0;
for (var i in e)
i != "_index" && (n += Object.keys(e[i]).length);
var s = (r - n + .5) / (n + .5);
return Math.log(1 + Math.abs(s))
}
,
t.Token = function(e, r) {
this.str = e || "",
this.metadata = r || {}
}
,
t.Token.prototype.toString = function() {
return this.str
}
,
t.Token.prototype.update = function(e) {
return this.str = e(this.str, this.metadata),
this
}
,
t.Token.prototype.clone = function(e) {
return e = e || function(r) {
return r
}
,
new t.Token(e(this.str, this.metadata),this.metadata)
}
;
/*!
* lunr.tokenizer
* Copyright (C) 2020 Oliver Nightingale
*/
t.tokenizer = function(e, r) {
if (e == null || e == null)
return [];
if (Array.isArray(e))
return e.map(function(g) {
return new t.Token(t.utils.asString(g).toLowerCase(),t.utils.clone(r))
});
for (var n = e.toString().toLowerCase(), i = n.length, s = [], o = 0, a = 0; o <= i; o++) {
var u = n.charAt(o)
, c = o - a;
if (u.match(t.tokenizer.separator) || o == i) {
if (c > 0) {
var f = t.utils.clone(r) || {};
f.position = [a, c],
f.index = s.length,
s.push(new t.Token(n.slice(a, o),f))
}
a = o + 1
}
}
return s
}
,
t.tokenizer.separator = /[\s\-]+/;
/*!
* lunr.Pipeline
* Copyright (C) 2020 Oliver Nightingale
*/
t.Pipeline = function() {
this._stack = []
}
,
t.Pipeline.registeredFunctions = Object.create(null),
t.Pipeline.registerFunction = function(e, r) {
r in this.registeredFunctions && t.utils.warn("Overwriting existing registered function: " + r),
e.label = r,
t.Pipeline.registeredFunctions[e.label] = e
}
,
t.Pipeline.warnIfFunctionNotRegistered = function(e) {
var r = e.label && e.label in this.registeredFunctions;
r || t.utils.warn(`Function is not registered with pipeline. This may cause problems when serialising the index.
`, e)
}
,
t.Pipeline.load = function(e) {
var r = new t.Pipeline;
return e.forEach(function(n) {
var i = t.Pipeline.registeredFunctions[n];
if (i)
r.add(i);
else
throw new Error("Cannot load unregistered function: " + n)
}),
r
}
,
t.Pipeline.prototype.add = function() {
var e = Array.prototype.slice.call(arguments);
e.forEach(function(r) {
t.Pipeline.warnIfFunctionNotRegistered(r),
this._stack.push(r)
}, this)
}
,
t.Pipeline.prototype.after = function(e, r) {
t.Pipeline.warnIfFunctionNotRegistered(r);
var n = this._stack.indexOf(e);
if (n == -1)
throw new Error("Cannot find existingFn");
n = n + 1,
this._stack.splice(n, 0, r)
}
,
t.Pipeline.prototype.before = function(e, r) {
t.Pipeline.warnIfFunctionNotRegistered(r);
var n = this._stack.indexOf(e);
if (n == -1)
throw new Error("Cannot find existingFn");
this._stack.splice(n, 0, r)
}
,
t.Pipeline.prototype.remove = function(e) {
var r = this._stack.indexOf(e);
r != -1 && this._stack.splice(r, 1)
}
,
t.Pipeline.prototype.run = function(e) {
for (var r = this._stack.length, n = 0; n < r; n++) {
for (var i = this._stack[n], s = [], o = 0; o < e.length; o++) {
var a = i(e[o], o, e);
if (!(a == null || a === ""))
if (Array.isArray(a))
for (var u = 0; u < a.length; u++)
s.push(a[u]);
else
s.push(a)
}
e = s
}
return e
}
,
t.Pipeline.prototype.runString = function(e, r) {
var n = new t.Token(e,r);
return this.run([n]).map(function(i) {
return i.toString()
})
}
,
t.Pipeline.prototype.reset = function() {
this._stack = []
}
,
t.Pipeline.prototype.toJSON = function() {
return this._stack.map(function(e) {
return t.Pipeline.warnIfFunctionNotRegistered(e),
e.label
})
}
;
/*!
* lunr.Vector
* Copyright (C) 2020 Oliver Nightingale
*/
t.Vector = function(e) {
this._magnitude = 0,
this.elements = e || []
}
,
t.Vector.prototype.positionForIndex = function(e) {
if (this.elements.length == 0)
return 0;
for (var r = 0, n = this.elements.length / 2, i = n - r, s = Math.floor(i / 2), o = this.elements[s * 2]; i > 1 && (o < e && (r = s),
o > e && (n = s),
o != e); )
i = n - r,
s = r + Math.floor(i / 2),
o = this.elements[s * 2];
if (o == e || o > e)
return s * 2;
if (o < e)
return (s + 1) * 2
}
,
t.Vector.prototype.insert = function(e, r) {
this.upsert(e, r, function() {
throw "duplicate index"
})
}
,
t.Vector.prototype.upsert = function(e, r, n) {
this._magnitude = 0;
var i = this.positionForIndex(e);
this.elements[i] == e ? this.elements[i + 1] = n(this.elements[i + 1], r) : this.elements.splice(i, 0, e, r)
}
,
t.Vector.prototype.magnitude = function() {
if (this._magnitude)
return this._magnitude;
for (var e = 0, r = this.elements.length, n = 1; n < r; n += 2) {
var i = this.elements[n];
e += i * i
}
return this._magnitude = Math.sqrt(e)
}
,
t.Vector.prototype.dot = function(e) {
for (var r = 0, n = this.elements, i = e.elements, s = n.length, o = i.length, a = 0, u = 0, c = 0, f = 0; c < s && f < o; )
a = n[c],
u = i[f],
a < u ? c += 2 : a > u ? f += 2 : a == u && (r += n[c + 1] * i[f + 1],
c += 2,
f += 2);
return r
}
,
t.Vector.prototype.similarity = function(e) {
return this.dot(e) / this.magnitude() || 0
}
,
t.Vector.prototype.toArray = function() {
for (var e = new Array(this.elements.length / 2), r = 1, n = 0; r < this.elements.length; r += 2,
n++)
e[n] = this.elements[r];
return e
}
,
t.Vector.prototype.toJSON = function() {
return this.elements
}
;
/*!
* lunr.stemmer
* Copyright (C) 2020 Oliver Nightingale
* Includes code from - http://tartarus.org/~martin/PorterStemmer/js.txt
*/
t.stemmer = function() {
var e = {
ational: "ate",
tional: "tion",
enci: "ence",
anci: "ance",
izer: "ize",
bli: "ble",
alli: "al",
entli: "ent",
eli: "e",
ousli: "ous",
ization: "ize",
ation: "ate",
ator: "ate",
alism: "al",
iveness: "ive",
fulness: "ful",
ousness: "ous",
aliti: "al",
iviti: "ive",
biliti: "ble",
logi: "log"
}
, r = {
icate: "ic",
ative: "",
alize: "al",
iciti: "ic",
ical: "ic",
ful: "",
ness: ""
}
, n = "[^aeiou]"
, i = "[aeiouy]"
, s = n + "[^aeiouy]*"
, o = i + "[aeiou]*"
, a = "^(" + s + ")?" + o + s
, u = "^(" + s + ")?" + o + s + "(" + o + ")?$"
, c = "^(" + s + ")?" + o + s + o + s
, f = "^(" + s + ")?" + i
, g = new RegExp(a)
, l = new RegExp(c)
, m = new RegExp(u)
, x = new RegExp(f)
, v = /^(.+?)(ss|i)es$/
, d = /^(.+?)([^s])s$/
, y = /^(.+?)eed$/
, b = /^(.+?)(ed|ing)$/
, E = /.$/
, w = /(at|bl|iz)$/
, R = new RegExp("([^aeiouylsz])\\1$")
, j = new RegExp("^" + s + i + "[^aeiouwxy]$")
, _ = /^(.+?[^aeiou])y$/
, D = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/
, N = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/
, C = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/
, V = /^(.+?)(s|t)(ion)$/
, P = /^(.+?)e$/
, z = /ll$/
, $ = new RegExp("^" + s + i + "[^aeiouwxy]$")
, M = function(h) {
var S, k, L, p, T, O, F;
if (h.length < 3)
return h;
if (L = h.substr(0, 1),
L == "y" && (h = L.toUpperCase() + h.substr(1)),
p = v,
T = d,
p.test(h) ? h = h.replace(p, "$1$2") : T.test(h) && (h = h.replace(T, "$1$2")),
p = y,
T = b,
p.test(h)) {
var Q = p.exec(h);
p = g,
p.test(Q[1]) && (p = E,
h = h.replace(p, ""))
} else if (T.test(h)) {
var Q = T.exec(h);
S = Q[1],
T = x,
T.test(S) && (h = S,
T = w,
O = R,
F = j,
T.test(h) ? h = h + "e" : O.test(h) ? (p = E,
h = h.replace(p, "")) : F.test(h) && (h = h + "e"))
}
if (p = _,
p.test(h)) {
var Q = p.exec(h);
S = Q[1],
h = S + "i"
}
if (p = D,
p.test(h)) {
var Q = p.exec(h);
S = Q[1],
k = Q[2],
p = g,
p.test(S) && (h = S + e[k])
}
if (p = N,
p.test(h)) {
var Q = p.exec(h);
S = Q[1],
k = Q[2],
p = g,
p.test(S) && (h = S + r[k])
}
if (p = C,
T = V,
p.test(h)) {
var Q = p.exec(h);
S = Q[1],
p = l,
p.test(S) && (h = S)
} else if (T.test(h)) {
var Q = T.exec(h);
S = Q[1] + Q[2],
T = l,
T.test(S) && (h = S)
}
if (p = P,
p.test(h)) {
var Q = p.exec(h);
S = Q[1],
p = l,
T = m,
O = $,
(p.test(S) || T.test(S) && !O.test(S)) && (h = S)
}
return p = z,
T = l,
p.test(h) && T.test(h) && (p = E,
h = h.replace(p, "")),
L == "y" && (h = L.toLowerCase() + h.substr(1)),
h
};
return function(I) {
return I.update(M)
}
}(),
t.Pipeline.registerFunction(t.stemmer, "stemmer");
/*!
* lunr.stopWordFilter
* Copyright (C) 2020 Oliver Nightingale
*/
t.generateStopWordFilter = function(e) {
var r = e.reduce(function(n, i) {
return n[i] = i,
n
}, {});
return function(n) {
if (n && r[n.toString()] !== n.toString())
return n
}
}
,
t.stopWordFilter = t.generateStopWordFilter(["a", "able", "about", "across", "after", "all", "almost", "also", "am", "among", "an", "and", "any", "are", "as", "at", "be", "because", "been", "but", "by", "can", "cannot", "could", "dear", "did", "do", "does", "either", "else", "ever", "every", "for", "from", "get", "got", "had", "has", "have", "he", "her", "hers", "him", "his", "how", "however", "i", "if", "in", "into", "is", "it", "its", "just", "least", "let", "like", "likely", "may", "me", "might", "most", "must", "my", "neither", "no", "nor", "not", "of", "off", "often", "on", "only", "or", "other", "our", "own", "rather", "said", "say", "says", "she", "should", "since", "so", "some", "than", "that", "the", "their", "them", "then", "there", "these", "they", "this", "tis", "to", "too", "twas", "us", "wants", "was", "we", "were", "what", "when", "where", "which", "while", "who", "whom", "why", "will", "with", "would", "yet", "you", "your"]),
t.Pipeline.registerFunction(t.stopWordFilter, "stopWordFilter");
/*!
* lunr.trimmer
* Copyright (C) 2020 Oliver Nightingale
*/
t.trimmer = function(e) {
return e.update(function(r) {
return r.replace(/^\W+/, "").replace(/\W+$/, "")
})
}
,
t.Pipeline.registerFunction(t.trimmer, "trimmer");
/*!
* lunr.TokenSet
* Copyright (C) 2020 Oliver Nightingale
*/
t.TokenSet = function() {
this.final = !1,
this.edges = {},
this.id = t.TokenSet._nextId,
t.TokenSet._nextId += 1
}
,
t.TokenSet._nextId = 1,
t.TokenSet.fromArray = function(e) {
for (var r = new t.TokenSet.Builder, n = 0, i = e.length; n < i; n++)
r.insert(e[n]);
return r.finish(),
r.root
}
,
t.TokenSet.fromClause = function(e) {
return "editDistance"in e ? t.TokenSet.fromFuzzyString(e.term, e.editDistance) : t.TokenSet.fromString(e.term)
}
,
t.TokenSet.fromFuzzyString = function(e, r) {
for (var n = new t.TokenSet, i = [{
node: n,
editsRemaining: r,
str: e
}]; i.length; ) {
var s = i.pop();
if (s.str.length > 0) {
var o = s.str.charAt(0), a;
o in s.node.edges ? a = s.node.edges[o] : (a = new t.TokenSet,
s.node.edges[o] = a),
s.str.length == 1 && (a.final = !0),
i.push({
node: a,
editsRemaining: s.editsRemaining,
str: s.str.slice(1)
})
}
if (s.editsRemaining != 0) {
if ("*"in s.node.edges)
var u = s.node.edges["*"];
else {
var u = new t.TokenSet;
s.node.edges["*"] = u
}
if (s.str.length == 0 && (u.final = !0),
i.push({
node: u,
editsRemaining: s.editsRemaining - 1,
str: s.str
}),
s.str.length > 1 && i.push({
node: s.node,
editsRemaining: s.editsRemaining - 1,
str: s.str.slice(1)
}),
s.str.length == 1 && (s.node.final = !0),
s.str.length >= 1) {
if ("*"in s.node.edges)
var c = s.node.edges["*"];
else {
var c = new t.TokenSet;
s.node.edges["*"] = c
}
s.str.length == 1 && (c.final = !0),
i.push({
node: c,
editsRemaining: s.editsRemaining - 1,
str: s.str.slice(1)
})
}
if (s.str.length > 1) {
var f = s.str.charAt(0), g = s.str.charAt(1), l;
g in s.node.edges ? l = s.node.edges[g] : (l = new t.TokenSet,
s.node.edges[g] = l),
s.str.length == 1 && (l.final = !0),
i.push({
node: l,
editsRemaining: s.editsRemaining - 1,
str: f + s.str.slice(2)
})
}
}
}
return n
}
,
t.TokenSet.fromString = function(e) {
for (var r = new t.TokenSet, n = r, i = 0, s = e.length; i < s; i++) {
var o = e[i]
, a = i == s - 1;
if (o == "*")
r.edges[o] = r,
r.final = a;
else {
var u = new t.TokenSet;
u.final = a,
r.edges[o] = u,
r = u
}
}
return n
}
,
t.TokenSet.prototype.toArray = function() {
for (var e = [], r = [{
prefix: "",
node: this
}]; r.length; ) {
var n = r.pop()
, i = Object.keys(n.node.edges)
, s = i.length;
n.node.final && (n.prefix.charAt(0),
e.push(n.prefix));
for (var o = 0; o < s; o++) {
var a = i[o];
r.push({
prefix: n.prefix.concat(a),
node: n.node.edges[a]
})
}
}
return e
}
,
t.TokenSet.prototype.toString = function() {
if (this._str)
return this._str;
for (var e = this.final ? "1" : "0", r = Object.keys(this.edges).sort(), n = r.length, i = 0; i < n; i++) {
var s = r[i]
, o = this.edges[s];
e = e + s + o.id
}
return e
}
,
t.TokenSet.prototype.intersect = function(e) {
for (var r = new t.TokenSet, n = void 0, i = [{
qNode: e,
output: r,
node: this
}]; i.length; ) {
n = i.pop();
for (var s = Object.keys(n.qNode.edges), o = s.length, a = Object.keys(n.node.edges), u = a.length, c = 0; c < o; c++)
for (var f = s[c], g = 0; g < u; g++) {
var l = a[g];
if (l == f || f == "*") {
var m = n.node.edges[l]
, x = n.qNode.edges[f]
, v = m.final && x.final
, d = void 0;
l in n.output.edges ? (d = n.output.edges[l],
d.final = d.final || v) : (d = new t.TokenSet,
d.final = v,
n.output.edges[l] = d),
i.push({
qNode: x,
output: d,
node: m
})
}
}
}
return r
}
,
t.TokenSet.Builder = function() {
this.previousWord = "",
this.root = new t.TokenSet,
this.uncheckedNodes = [],
this.minimizedNodes = {}
}
,
t.TokenSet.Builder.prototype.insert = function(e) {
var r, n = 0;
if (e < this.previousWord)
throw new Error("Out of order word insertion");
for (var i = 0; i < e.length && i < this.previousWord.length && e[i] == this.previousWord[i]; i++)
n++;
this.minimize(n),
this.uncheckedNodes.length == 0 ? r = this.root : r = this.uncheckedNodes[this.uncheckedNodes.length - 1].child;
for (var i = n; i < e.length; i++) {
var s = new t.TokenSet
, o = e[i];
r.edges[o] = s,
this.uncheckedNodes.push({
parent: r,
char: o,
child: s
}),
r = s
}
r.final = !0,
this.previousWord = e
}
,
t.TokenSet.Builder.prototype.finish = function() {
this.minimize(0)
}
,
t.TokenSet.Builder.prototype.minimize = function(e) {
for (var r = this.uncheckedNodes.length - 1; r >= e; r--) {
var n = this.uncheckedNodes[r]
, i = n.child.toString();
i in this.minimizedNodes ? n.parent.edges[n.char] = this.minimizedNodes[i] : (n.child._str = i,
this.minimizedNodes[i] = n.child),
this.uncheckedNodes.pop()
}
}
;
/*!
* lunr.Index
* Copyright (C) 2020 Oliver Nightingale
*/
t.Index = function(e) {
this.invertedIndex = e.invertedIndex,
this.fieldVectors = e.fieldVectors,
this.tokenSet = e.tokenSet,
this.fields = e.fields,
this.pipeline = e.pipeline
}
,
t.Index.prototype.search = function(e) {
return this.query(function(r) {
var n = new t.QueryParser(e,r);
n.parse()
})
}
,
t.Index.prototype.query = function(e) {
for (var r = new t.Query(this.fields), n = Object.create(null), i = Object.create(null), s = Object.create(null), o = Object.create(null), a = Object.create(null), u = 0; u < this.fields.length; u++)
i[this.fields[u]] = new t.Vector;
e.call(r, r);
for (var u = 0; u < r.clauses.length; u++) {
var c = r.clauses[u]
, f = null
, g = t.Set.empty;
c.usePipeline ? f = this.pipeline.runString(c.term, {
fields: c.fields
}) : f = [c.term];
for (var l = 0; l < f.length; l++) {
var m = f[l];
c.term = m;
var x = t.TokenSet.fromClause(c)
, v = this.tokenSet.intersect(x).toArray();
if (v.length === 0 && c.presence === t.Query.presence.REQUIRED) {
for (var d = 0; d < c.fields.length; d++) {
var y = c.fields[d];
o[y] = t.Set.empty
}
break
}
for (var b = 0; b < v.length; b++)
for (var E = v[b], w = this.invertedIndex[E], R = w._index, d = 0; d < c.fields.length; d++) {
var y = c.fields[d]
, j = w[y]
, _ = Object.keys(j)
, D = E + "/" + y
, N = new t.Set(_);
if (c.presence == t.Query.presence.REQUIRED && (g = g.union(N),
o[y] === void 0 && (o[y] = t.Set.complete)),
c.presence == t.Query.presence.PROHIBITED) {
a[y] === void 0 && (a[y] = t.Set.empty),
a[y] = a[y].union(N);
continue
}
if (i[y].upsert(R, c.boost, function(ye, me) {
return ye + me
}),
!s[D]) {
for (var C = 0; C < _.length; C++) {
var V = _[C], P = new t.FieldRef(V,y), z = j[V], $;
($ = n[P]) === void 0 ? n[P] = new t.MatchData(E,y,z) : $.add(E, y, z)
}
s[D] = !0
}
}
}
if (c.presence === t.Query.presence.REQUIRED)
for (var d = 0; d < c.fields.length; d++) {
var y = c.fields[d];
o[y] = o[y].intersect(g)
}
}
for (var M = t.Set.complete, I = t.Set.empty, u = 0; u < this.fields.length; u++) {
var y = this.fields[u];
o[y] && (M = M.intersect(o[y])),
a[y] && (I = I.union(a[y]))
}
var h = Object.keys(n)
, S = []
, k = Object.create(null);
if (r.isNegated()) {
h = Object.keys(this.fieldVectors);
for (var u = 0; u < h.length; u++) {
var P = h[u]
, L = t.FieldRef.fromString(P);
n[P] = new t.MatchData
}
}
for (var u = 0; u < h.length; u++) {
var L = t.FieldRef.fromString(h[u])
, p = L.docRef;
if (M.contains(p) && !I.contains(p)) {
var T = this.fieldVectors[L], O = i[L.fieldName].similarity(T), F;
if ((F = k[p]) !== void 0)
F.score += O,
F.matchData.combine(n[L]);
else {
var Q = {
ref: p,
score: O,
matchData: n[L]
};
k[p] = Q,
S.push(Q)
}
}
}
return S.sort(function(pe, ge) {
return ge.score - pe.score
})
}
,
t.Index.prototype.toJSON = function() {
var e = Object.keys(this.invertedIndex).sort().map(function(n) {
return [n, this.invertedIndex[n]]
}, this)
, r = Object.keys(this.fieldVectors).map(function(n) {
return [n, this.fieldVectors[n].toJSON()]
}, this);
return {
version: t.version,
fields: this.fields,
fieldVectors: r,
invertedIndex: e,
pipeline: this.pipeline.toJSON()
}
}
,
t.Index.load = function(e) {
var r = {}
, n = {}
, i = e.fieldVectors
, s = Object.create(null)
, o = e.invertedIndex
, a = new t.TokenSet.Builder
, u = t.Pipeline.load(e.pipeline);
e.version != t.version && t.utils.warn("Version mismatch when loading serialised index. Current version of lunr '" + t.version + "' does not match serialized index '" + e.version + "'");
for (var c = 0; c < i.length; c++) {
var f = i[c]
, g = f[0]
, l = f[1];
n[g] = new t.Vector(l)
}
for (var c = 0; c < o.length; c++) {
var f = o[c]
, m = f[0]
, x = f[1];
a.insert(m),
s[m] = x
}
return a.finish(),
r.fields = e.fields,
r.fieldVectors = n,
r.invertedIndex = s,
r.tokenSet = a.root,
r.pipeline = u,
new t.Index(r)
}
;
/*!
* lunr.Builder
* Copyright (C) 2020 Oliver Nightingale
*/
t.Builder = function() {
this._ref = "id",
this._fields = Object.create(null),
this._documents = Object.create(null),
this.invertedIndex = Object.create(null),
this.fieldTermFrequencies = {},
this.fieldLengths = {},
this.tokenizer = t.tokenizer,
this.pipeline = new t.Pipeline,
this.searchPipeline = new t.Pipeline,
this.documentCount = 0,
this._b = .75,
this._k1 = 1.2,
this.termIndex = 0,
this.metadataWhitelist = []
}
,
t.Builder.prototype.ref = function(e) {
this._ref = e
}
,
t.Builder.prototype.field = function(e, r) {
if (/\//.test(e))
throw new RangeError("Field '" + e + "' contains illegal character '/'");
this._fields[e] = r || {}
}
,
t.Builder.prototype.b = function(e) {
e < 0 ? this._b = 0 : e > 1 ? this._b = 1 : this._b = e
}
,
t.Builder.prototype.k1 = function(e) {
this._k1 = e
}
,
t.Builder.prototype.add = function(e, r) {
var n = e[this._ref]
, i = Object.keys(this._fields);
this._documents[n] = r || {},
this.documentCount += 1;
for (var s = 0; s < i.length; s++) {
var o = i[s]
, a = this._fields[o].extractor
, u = a ? a(e) : e[o]
, c = this.tokenizer(u, {
fields: [o]
})
, f = this.pipeline.run(c)
, g = new t.FieldRef(n,o)
, l = Object.create(null);
this.fieldTermFrequencies[g] = l,
this.fieldLengths[g] = 0,
this.fieldLengths[g] += f.length;
for (var m = 0; m < f.length; m++) {
var x = f[m];
if (l[x] == null && (l[x] = 0),
l[x] += 1,
this.invertedIndex[x] == null) {
var v = Object.create(null);
v._index = this.termIndex,
this.termIndex += 1;
for (var d = 0; d < i.length; d++)
v[i[d]] = Object.create(null);
this.invertedIndex[x] = v
}
this.invertedIndex[x][o][n] == null && (this.invertedIndex[x][o][n] = Object.create(null));
for (var y = 0; y < this.metadataWhitelist.length; y++) {
var b = this.metadataWhitelist[y]
, E = x.metadata[b];
this.invertedIndex[x][o][n][b] == null && (this.invertedIndex[x][o][n][b] = []),
this.invertedIndex[x][o][n][b].push(E)
}
}
}
}
,
t.Builder.prototype.calculateAverageFieldLengths = function() {
for (var e = Object.keys(this.fieldLengths), r = e.length, n = {}, i = {}, s = 0; s < r; s++) {
var o = t.FieldRef.fromString(e[s])
, a = o.fieldName;
i[a] || (i[a] = 0),
i[a] += 1,
n[a] || (n[a] = 0),
n[a] += this.fieldLengths[o]
}
for (var u = Object.keys(this._fields), s = 0; s < u.length; s++) {
var c = u[s];
n[c] = n[c] / i[c]
}
this.averageFieldLength = n
}
,
t.Builder.prototype.createFieldVectors = function() {
for (var e = {}, r = Object.keys(this.fieldTermFrequencies), n = r.length, i = Object.create(null), s = 0; s < n; s++) {
for (var o = t.FieldRef.fromString(r[s]), a = o.fieldName, u = this.fieldLengths[o], c = new t.Vector, f = this.fieldTermFrequencies[o], g = Object.keys(f), l = g.length, m = this._fields[a].boost || 1, x = this._documents[o.docRef].boost || 1, v = 0; v < l; v++) {
var d = g[v], y = f[d], b = this.invertedIndex[d]._index, E, w, R;
i[d] === void 0 ? (E = t.idf(this.invertedIndex[d], this.documentCount),
i[d] = E) : E = i[d],
w = E * ((this._k1 + 1) * y) / (this._k1 * (1 - this._b + this._b * (u / this.averageFieldLength[a])) + y),
w *= m,
w *= x,
R = Math.round(w * 1e3) / 1e3,
c.insert(b, R)
}
e[o] = c
}
this.fieldVectors = e
}
,
t.Builder.prototype.createTokenSet = function() {
this.tokenSet = t.TokenSet.fromArray(Object.keys(this.invertedIndex).sort())
}
,
t.Builder.prototype.build = function() {
return this.calculateAverageFieldLengths(),
this.createFieldVectors(),
this.createTokenSet(),
new t.Index({
invertedIndex: this.invertedIndex,
fieldVectors: this.fieldVectors,
tokenSet: this.tokenSet,
fields: Object.keys(this._fields),
pipeline: this.searchPipeline
})
}
,
t.Builder.prototype.use = function(e) {
var r = Array.prototype.slice.call(arguments, 1);
r.unshift(this),
e.apply(this, r)
}
,
t.MatchData = function(e, r, n) {
for (var i = Object.create(null), s = Object.keys(n || {}), o = 0; o < s.length; o++) {
var a = s[o];
i[a] = n[a].slice()
}
this.metadata = Object.create(null),
e !== void 0 && (this.metadata[e] = Object.create(null),
this.metadata[e][r] = i)
}
,
t.MatchData.prototype.combine = function(e) {
for (var r = Object.keys(e.metadata), n = 0; n < r.length; n++) {
var i = r[n]
, s = Object.keys(e.metadata[i]);
this.metadata[i] == null && (this.metadata[i] = Object.create(null));
for (var o = 0; o < s.length; o++) {
var a = s[o]
, u = Object.keys(e.metadata[i][a]);
this.metadata[i][a] == null && (this.metadata[i][a] = Object.create(null));
for (var c = 0; c < u.length; c++) {
var f = u[c];
this.metadata[i][a][f] == null ? this.metadata[i][a][f] = e.metadata[i][a][f] : this.metadata[i][a][f] = this.metadata[i][a][f].concat(e.metadata[i][a][f])
}
}
}
}
,
t.MatchData.prototype.add = function(e, r, n) {
if (!(e in this.metadata)) {
this.metadata[e] = Object.create(null),
this.metadata[e][r] = n;
return
}
if (!(r in this.metadata[e])) {
this.metadata[e][r] = n;
return
}
for (var i = Object.keys(n), s = 0; s < i.length; s++) {
var o = i[s];
o in this.metadata[e][r] ? this.metadata[e][r][o] = this.metadata[e][r][o].concat(n[o]) : this.metadata[e][r][o] = n[o]
}
}
,
t.Query = function(e) {
this.clauses = [],
this.allFields = e
}
,
t.Query.wildcard = new String("*"),
t.Query.wildcard.NONE = 0,
t.Query.wildcard.LEADING = 1,
t.Query.wildcard.TRAILING = 2,
t.Query.presence = {
OPTIONAL: 1,
REQUIRED: 2,
PROHIBITED: 3
},
t.Query.prototype.clause = function(e) {
return "fields"in e || (e.fields = this.allFields),
"boost"in e || (e.boost = 1),
"usePipeline"in e || (e.usePipeline = !0),
"wildcard"in e || (e.wildcard = t.Query.wildcard.NONE),
e.wildcard & t.Query.wildcard.LEADING && e.term.charAt(0) != t.Query.wildcard && (e.term = "*" + e.term),
e.wildcard & t.Query.wildcard.TRAILING && e.term.slice(-1) != t.Query.wildcard && (e.term = "" + e.term + "*"),
"presence"in e || (e.presence = t.Query.presence.OPTIONAL),
this.clauses.push(e),
this
}
,
t.Query.prototype.isNegated = function() {
for (var e = 0; e < this.clauses.length; e++)
if (this.clauses[e].presence != t.Query.presence.PROHIBITED)
return !1;
return !0
}
,
t.Query.prototype.term = function(e, r) {
if (Array.isArray(e))
return e.forEach(function(i) {
this.term(i, t.utils.clone(r))
}, this),
this;
var n = r || {};
return n.term = e.toString(),
this.clause(n),
this
}
,
t.QueryParseError = function(e, r, n) {
this.name = "QueryParseError",
this.message = e,
this.start = r,
this.end = n
}
,
t.QueryParseError.prototype = new Error,
t.QueryLexer = function(e) {
this.lexemes = [],
this.str = e,
this.length = e.length,
this.pos = 0,
this.start = 0,
this.escapeCharPositions = []
}
,
t.QueryLexer.prototype.run = function() {
for (var e = t.QueryLexer.lexText; e; )
e = e(this)
}
,
t.QueryLexer.prototype.sliceString = function() {
for (var e = [], r = this.start, n = this.pos, i = 0; i < this.escapeCharPositions.length; i++)
n = this.escapeCharPositions[i],
e.push(this.str.slice(r, n)),
r = n + 1;
return e.push(this.str.slice(r, this.pos)),
this.escapeCharPositions.length = 0,
e.join("")
}
,
t.QueryLexer.prototype.emit = function(e) {
this.lexemes.push({
type: e,
str: this.sliceString(),
start: this.start,
end: this.pos
}),
this.start = this.pos
}
,
t.QueryLexer.prototype.escapeCharacter = function() {
this.escapeCharPositions.push(this.pos - 1),
this.pos += 1
}
,
t.QueryLexer.prototype.next = function() {
if (this.pos >= this.length)
return t.QueryLexer.EOS;
var e = this.str.charAt(this.pos);
return this.pos += 1,
e
}
,
t.QueryLexer.prototype.width = function() {
return this.pos - this.start
}
,
t.QueryLexer.prototype.ignore = function() {
this.start == this.pos && (this.pos += 1),
this.start = this.pos
}
,
t.QueryLexer.prototype.backup = function() {
this.pos -= 1
}
,
t.QueryLexer.prototype.acceptDigitRun = function() {
var e, r;
do
e = this.next(),
r = e.charCodeAt(0);
while (r > 47 && r < 58);
e != t.QueryLexer.EOS && this.backup()
}
,
t.QueryLexer.prototype.more = function() {
return this.pos < this.length
}
,
t.QueryLexer.EOS = "EOS",
t.QueryLexer.FIELD = "FIELD",
t.QueryLexer.TERM = "TERM",
t.QueryLexer.EDIT_DISTANCE = "EDIT_DISTANCE",
t.QueryLexer.BOOST = "BOOST",
t.QueryLexer.PRESENCE = "PRESENCE",
t.QueryLexer.lexField = function(e) {
return e.backup(),
e.emit(t.QueryLexer.FIELD),
e.ignore(),
t.QueryLexer.lexText
}
,
t.QueryLexer.lexTerm = function(e) {
if (e.width() > 1 && (e.backup(),
e.emit(t.QueryLexer.TERM)),
e.ignore(),
e.more())
return t.QueryLexer.lexText
}
,
t.QueryLexer.lexEditDistance = function(e) {
return e.ignore(),
e.acceptDigitRun(),
e.emit(t.QueryLexer.EDIT_DISTANCE),
t.QueryLexer.lexText
}
,
t.QueryLexer.lexBoost = function(e) {
return e.ignore(),
e.acceptDigitRun(),
e.emit(t.QueryLexer.BOOST),
t.QueryLexer.lexText
}
,
t.QueryLexer.lexEOS = function(e) {
e.width() > 0 && e.emit(t.QueryLexer.TERM)
}
,
t.QueryLexer.termSeparator = t.tokenizer.separator,
t.QueryLexer.lexText = function(e) {
for (; ; ) {
var r = e.next();
if (r == t.QueryLexer.EOS)
return t.QueryLexer.lexEOS;
if (r.charCodeAt(0) == 92) {
e.escapeCharacter();
continue
}
if (r == ":")
return t.QueryLexer.lexField;
if (r == "~")
return e.backup(),
e.width() > 0 && e.emit(t.QueryLexer.TERM),
t.QueryLexer.lexEditDistance;
if (r == "^")
return e.backup(),
e.width() > 0 && e.emit(t.QueryLexer.TERM),
t.QueryLexer.lexBoost;
if (r == "+" && e.width() === 1 || r == "-" && e.width() === 1)
return e.emit(t.QueryLexer.PRESENCE),
t.QueryLexer.lexText;
if (r.match(t.QueryLexer.termSeparator))
return t.QueryLexer.lexTerm
}
}
,
t.QueryParser = function(e, r) {
this.lexer = new t.QueryLexer(e),
this.query = r,
this.currentClause = {},
this.lexemeIdx = 0
}
,
t.QueryParser.prototype.parse = function() {
this.lexer.run(),
this.lexemes = this.lexer.lexemes;
for (var e = t.QueryParser.parseClause; e; )
e = e(this);
return this.query
}
,
t.QueryParser.prototype.peekLexeme = function() {
return this.lexemes[this.lexemeIdx]
}
,
t.QueryParser.prototype.consumeLexeme = function() {
var e = this.peekLexeme();
return this.lexemeIdx += 1,
e
}
,
t.QueryParser.prototype.nextClause = function() {
var e = this.currentClause;
this.query.clause(e),
this.currentClause = {}
}
,
t.QueryParser.parseClause = function(e) {
var r = e.peekLexeme();
if (r != null)
switch (r.type) {
case t.QueryLexer.PRESENCE:
return t.QueryParser.parsePresence;
case t.QueryLexer.FIELD:
return t.QueryParser.parseField;
case t.QueryLexer.TERM:
return t.QueryParser.parseTerm;
default:
var n = "expected either a field or a term, found " + r.type;
throw r.str.length >= 1 && (n += " with value '" + r.str + "'"),
new t.QueryParseError(n,r.start,r.end)
}
}
,
t.QueryParser.parsePresence = function(e) {
var r = e.consumeLexeme();
if (r != null) {
switch (r.str) {
case "-":
e.currentClause.presence = t.Query.presence.PROHIBITED;
break;
case "+":
e.currentClause.presence = t.Query.presence.REQUIRED;
break;
default:
var n = "unrecognised presence operator'" + r.str + "'";
throw new t.QueryParseError(n,r.start,r.end)
}
var i = e.peekLexeme();
if (i == null) {
var n = "expecting term or field, found nothing";
throw new t.QueryParseError(n,r.start,r.end)
}
switch (i.type) {
case t.QueryLexer.FIELD:
return t.QueryParser.parseField;
case t.QueryLexer.TERM:
return t.QueryParser.parseTerm;
default:
var n = "expecting term or field, found '" + i.type + "'";
throw new t.QueryParseError(n,i.start,i.end)
}
}
}
,
t.QueryParser.parseField = function(e) {
var r = e.consumeLexeme();
if (r != null) {
if (e.query.allFields.indexOf(r.str) == -1) {
var n = e.query.allFields.map(function(o) {
return "'" + o + "'"
}).join(", ")
, i = "unrecognised field '" + r.str + "', possible fields: " + n;
throw new t.QueryParseError(i,r.start,r.end)
}
e.currentClause.fields = [r.str];
var s = e.peekLexeme();
if (s == null) {
var i = "expecting term, found nothing";
throw new t.QueryParseError(i,r.start,r.end)
}
switch (s.type) {
case t.QueryLexer.TERM:
return t.QueryParser.parseTerm;
default:
var i = "expecting term, found '" + s.type + "'";
throw new t.QueryParseError(i,s.start,s.end)
}
}
}
,
t.QueryParser.parseTerm = function(e) {
var r = e.consumeLexeme();
if (r != null) {
e.currentClause.term = r.str.toLowerCase(),
r.str.indexOf("*") != -1 && (e.currentClause.usePipeline = !1);
var n = e.peekLexeme();
if (n == null) {
e.nextClause();
return
}
switch (n.type) {
case t.QueryLexer.TERM:
return e.nextClause(),
t.QueryParser.parseTerm;
case t.QueryLexer.FIELD:
return e.nextClause(),
t.QueryParser.parseField;
case t.QueryLexer.EDIT_DISTANCE:
return t.QueryParser.parseEditDistance;
case t.QueryLexer.BOOST:
return t.QueryParser.parseBoost;
case t.QueryLexer.PRESENCE:
return e.nextClause(),
t.QueryParser.parsePresence;
default:
var i = "Unexpected lexeme type '" + n.type + "'";
throw new t.QueryParseError(i,n.start,n.end)
}
}
}
,
t.QueryParser.parseEditDistance = function(e) {
var r = e.consumeLexeme();
if (r != null) {
var n = parseInt(r.str, 10);
if (isNaN(n)) {
var i = "edit distance must be numeric";
throw new t.QueryParseError(i,r.start,r.end)
}
e.currentClause.editDistance = n;
var s = e.peekLexeme();
if (s == null) {
e.nextClause();
return
}
switch (s.type) {
case t.QueryLexer.TERM:
return e.nextClause(),
t.QueryParser.parseTerm;
case t.QueryLexer.FIELD:
return e.nextClause(),
t.QueryParser.parseField;
case t.QueryLexer.EDIT_DISTANCE:
return t.QueryParser.parseEditDistance;
case t.QueryLexer.BOOST:
return t.QueryParser.parseBoost;
case t.QueryLexer.PRESENCE:
return e.nextClause(),
t.QueryParser.parsePresence;
default:
var i = "Unexpected lexeme type '" + s.type + "'";
throw new t.QueryParseError(i,s.start,s.end)
}
}
}
,
t.QueryParser.parseBoost = function(e) {
var r = e.consumeLexeme();
if (r != null) {
var n = parseInt(r.str, 10);
if (isNaN(n)) {
var i = "boost must be numeric";
throw new t.QueryParseError(i,r.start,r.end)
}
e.currentClause.boost = n;
var s = e.peekLexeme();
if (s == null) {
e.nextClause();
return
}
switch (s.type) {
case t.QueryLexer.TERM:
return e.nextClause(),
t.QueryParser.parseTerm;
case t.QueryLexer.FIELD:
return e.nextClause(),
t.QueryParser.parseField;
case t.QueryLexer.EDIT_DISTANCE:
return t.QueryParser.parseEditDistance;
case t.QueryLexer.BOOST:
return t.QueryParser.parseBoost;
case t.QueryLexer.PRESENCE:
return e.nextClause(),
t.QueryParser.parsePresence;
default:
var i = "Unexpected lexeme type '" + s.type + "'";
throw new t.QueryParseError(i,s.start,s.end)
}
}
}
,
function(e, r) {
typeof define == "function" && define.amd ? define(r) : typeof K == "object" ? ee.exports = r() : e.lunr = r()
}(this, function() {
return t
})
}
)()
}
);
var de = Pe(te());
function re(t, e=document) {
let r = ke(t, e);
if (typeof r == "undefined")
throw new ReferenceError(`Missing element: expected "${t}" to be present`);
return r
}
function ke(t, e=document) {
return e.querySelector(t) || void 0
}
Object.entries || (Object.entries = function(t) {
let e = [];
for (let r of Object.keys(t))
e.push([r, t[r]]);
return e
}
);
Object.values || (Object.values = function(t) {
let e = [];
for (let r of Object.keys(t))
e.push(t[r]);
return e
}
);
typeof Element != "undefined" && (Element.prototype.scrollTo || (Element.prototype.scrollTo = function(t, e) {
typeof t == "object" ? (this.scrollLeft = t.left,
this.scrollTop = t.top) : (this.scrollLeft = t,
this.scrollTop = e)
}
),
Element.prototype.replaceWith || (Element.prototype.replaceWith = function(...t) {
let e = this.parentNode;
if (e) {
t.length === 0 && e.removeChild(this);
for (let r = t.length - 1; r >= 0; r--) {
let n = t[r];
typeof n == "string" ? n = document.createTextNode(n) : n.parentNode && n.parentNode.removeChild(n),
r ? e.insertBefore(this.previousSibling, n) : e.replaceChild(n, this)
}
}
}
));
function ne(t) {
let e = new Map;
for (let r of t) {
let[n] = r.location.split("#")
, i = e.get(n);
typeof i == "undefined" ? e.set(n, r) : (e.set(r.location, r),
r.parent = i)
}
return e
}
function W(t, e, r) {
var s;
e = new RegExp(e,"g");
let n, i = 0;
do {
n = e.exec(t);
let o = (s = n == null ? void 0 : n.index) != null ? s : t.length;
if (i < o && r(i, o),
n) {
let[a] = n;
i = n.index + a.length,
a.length === 0 && (e.lastIndex = n.index + 1)
}
} while (n)
}
function ie(t, e) {
let r = 0
, n = 0
, i = 0;
for (let s = 0; i < t.length; i++)
t.charAt(i) === "<" && i > n ? e(r, 1, n, n = i) : t.charAt(i) === ">" && (t.charAt(n + 1) === "/" ? --s === 0 && e(r++, 2, n, i + 1) : t.charAt(i - 1) !== "/" && s++ === 0 && e(r, 0, n, i + 1),
n = i + 1);
i > n && e(r, 1, n, i)
}
function se(t, e, r, n=!1) {
return q([t], e, r, n).pop()
}
function q(t, e, r, n=!1) {
let i = [0];
for (let s = 1; s < e.length; s++) {
let o = e[s - 1]
, a = e[s]
, u = o[o.length - 1] >>> 2 & 1023
, c = a[0] >>> 12;
i.push(+(u > c) + i[i.length - 1])
}
return t.map( (s, o) => {
let a = 0
, u = new Map;
for (let f of r.sort( (g, l) => g - l)) {
let g = f & 1048575
, l = f >>> 20;
if (i[l] !== o)
continue;
let m = u.get(l);
typeof m == "undefined" && u.set(l, m = []),
m.push(g)
}
if (u.size === 0)
return s;
let c = [];
for (let[f,g] of u) {
let l = e[f]
, m = l[0] >>> 12
, x = l[l.length - 1] >>> 12
, v = l[l.length - 1] >>> 2 & 1023;
n && m > a && c.push(s.slice(a, m));
let d = s.slice(m, x + v);
for (let y of g.sort( (b, E) => E - b)) {
let b = (l[y] >>> 12) - m
, E = (l[y] >>> 2 & 1023) + b;
d = [d.slice(0, b), "<mark>", d.slice(b, E), "</mark>", d.slice(E)].join("")
}
if (a = x + v,
c.push(d) === 2)
break
}
return n && a < s.length && c.push(s.slice(a)),
c.join("")
}
)
}
function oe(t) {
let e = [];
if (typeof t == "undefined")
return e;
let r = Array.isArray(t) ? t : [t];
for (let n = 0; n < r.length; n++) {
let i = lunr.tokenizer.table
, s = i.length;
ie(r[n], (o, a, u, c) => {
var f;
switch (i[f = o += s] || (i[f] = []),
a) {
case 0:
case 2:
i[o].push(u << 12 | c - u << 2 | a);
break;
case 1:
let g = r[n].slice(u, c);
W(g, lunr.tokenizer.separator, (l, m) => {
if (typeof lunr.segmenter != "undefined") {
let x = g.slice(l, m);
if (/^[MHIK]$/.test(lunr.segmenter.ctype_(x))) {
let v = lunr.segmenter.segment(x);
for (let d = 0, y = 0; d < v.length; d++)
i[o] || (i[o] = []),
i[o].push(u + l + y << 12 | v[d].length << 2 | a),
e.push(new lunr.Token(v[d].toLowerCase(),{
position: o << 20 | i[o].length - 1
})),
y += v[d].length;
return
}
}
i[o].push(u + l << 12 | m - l << 2 | a),
e.push(new lunr.Token(g.slice(l, m).toLowerCase(),{
position: o << 20 | i[o].length - 1
}))
}
)
}
}
)
}
return e
}
function ae(t, e=r => r) {
return t.trim().split(/"([^"]+)"/g).map( (r, n) => n & 1 ? r.replace(/^\b|^(?![^\x00-\x7F]|$)|\s+/g, " +") : r).join("").replace(/"|(?:^|\s+)[*+\-:^~]+(?=\s+|$)/g, "").split(/\s+/g).reduce( (r, n) => {
let i = e(n);
return [...r, ...Array.isArray(i) ? i : [i]]
}
, []).map(r => /([~^]$)/.test(r) ? `${r}1` : r).map(r => /(^[+-]|[~^]\d+$)/.test(r) ? r : `${r}*`).join(" ")
}
function ue(t) {
return ae(t, e => {
let r = []
, n = new lunr.QueryLexer(e);
n.run();
for (let {type: i, str: s, start: o, end: a} of n.lexemes)
switch (i) {
case "FIELD":
["title", "text", "tags"].includes(s) || (e = [e.slice(0, a), " ", e.slice(a + 1)].join(""));
break;
case "TERM":
W(s, lunr.tokenizer.separator, (...u) => {
r.push([e.slice(0, o), s.slice(...u), e.slice(a)].join(""))
}
)
}
return r
}
)
}
function ce(t) {
let e = new lunr.Query(["title", "text", "tags"]);
new lunr.QueryParser(t,e).parse();
for (let n of e.clauses)
n.usePipeline = !0,
n.term.startsWith("*") && (n.wildcard = lunr.Query.wildcard.LEADING,
n.term = n.term.slice(1)),
n.term.endsWith("*") && (n.wildcard = lunr.Query.wildcard.TRAILING,
n.term = n.term.slice(0, -1));
return e.clauses
}
function le(t, e) {
var i;
let r = new Set(t)
, n = {};
for (let s = 0; s < e.length; s++)
for (let o of r)
e[s].startsWith(o.term) && (n[o.term] = !0,
r.delete(o));
for (let s of r)
(i = lunr.stopWordFilter) != null && i.call(lunr, s.term) && (n[s.term] = !1);
return n
}
function he(t, e) {
let r = new Set
, n = new Uint16Array(t.length);
for (let s = 0; s < t.length; s++)
for (let o = s + 1; o < t.length; o++)
t.slice(s, o)in e && (n[s] = o - s);
let i = [0];
for (let s = i.length; s > 0; ) {
let o = i[--s];
for (let u = 1; u < n[o]; u++)
n[o + u] > n[o] - u && (r.add(t.slice(o, o + u)),
i[s++] = o + u);
let a = o + n[o];
n[a] && a < t.length - 1 && (i[s++] = a),
r.add(t.slice(o, a))
}
return r.has("") ? new Set([t]) : r
}
function Oe(t) {
return e => r => {
if (typeof r[e] == "undefined")
return;
let n = [r.location, e].join(":");
return t.set(n, lunr.tokenizer.table = []),
r[e]
}
}
function Re(t, e) {
let[r,n] = [new Set(t), new Set(e)];
return [...new Set([...r].filter(i => !n.has(i)))]
}
var H = class {
constructor({config: e, docs: r, options: n}) {
let i = Oe(this.table = new Map);
this.map = ne(r),
this.options = n,
this.index = lunr(function() {
this.metadataWhitelist = ["position"],
this.b(0),
e.lang.length === 1 && e.lang[0] !== "en" ? this.use(lunr[e.lang[0]]) : e.lang.length > 1 && this.use(lunr.multiLanguage(...e.lang)),
this.tokenizer = oe,
lunr.tokenizer.separator = new RegExp(e.separator),
lunr.segmenter = "TinySegmenter"in lunr ? new lunr.TinySegmenter : void 0;
let s = Re(["trimmer", "stopWordFilter", "stemmer"], e.pipeline);
for (let o of e.lang.map(a => a === "en" ? lunr : lunr[a]))
for (let a of s)
this.pipeline.remove(o[a]),
this.searchPipeline.remove(o[a]);
this.ref("location"),
this.field("title", {
boost: 1e3,
extractor: i("title")
}),
this.field("text", {
boost: 1,
extractor: i("text")
}),
this.field("tags", {
boost: 1e6,
extractor: i("tags")
});
for (let o of r)
this.add(o, {
boost: o.boost
})
})
}
search(e) {
if (e = e.replace(new RegExp("\\p{sc=Han}+","gu"), s => [...he(s, this.index.invertedIndex)].join("* ")),
e = ue(e),
!e)
return {
items: []
};
let r = ce(e).filter(s => s.presence !== lunr.Query.presence.PROHIBITED)
, n = this.index.search(e).reduce( (s, {ref: o, score: a, matchData: u}) => {
let c = this.map.get(o);
if (typeof c != "undefined") {
c = A({}, c),
c.tags && (c.tags = [...c.tags]);
let f = le(r, Object.keys(u.metadata));
for (let l of this.index.fields) {
if (typeof c[l] == "undefined")
continue;
let m = [];
for (let d of Object.values(u.metadata))
typeof d[l] != "undefined" && m.push(...d[l].position);
if (!m.length)
continue;
let x = this.table.get([c.location, l].join(":"))
, v = Array.isArray(c[l]) ? q : se;
c[l] = v(c[l], x, m, l !== "text")
}
let g = +!c.parent + Object.values(f).filter(l => l).length / Object.keys(f).length;
s.push(G(A({}, c), {
score: a * (1 + Z(g, 2)),
terms: f
}))
}
return s
}
, []).sort( (s, o) => o.score - s.score).reduce( (s, o) => {
let a = this.map.get(o.location);
if (typeof a != "undefined") {
let u = a.parent ? a.parent.location : a.location;
s.set(u, [...s.get(u) || [], o])
}
return s
}
, new Map);
for (let[s,o] of n)
if (!o.find(a => a.location === s)) {
let a = this.map.get(s);
o.push(G(A({}, a), {
score: 0,
terms: {}
}))
}
let i;
if (this.options.suggest) {
let s = this.index.query(o => {
for (let a of r)
o.term(a.term, {
fields: ["title"],
presence: lunr.Query.presence.REQUIRED,
wildcard: lunr.Query.wildcard.TRAILING
})
}
);
i = s.length ? Object.keys(s[0].matchData.metadata) : []
}
return A({
items: [...n.values()]
}, typeof i != "undefined" && {
suggest: i
})
}
}
;
var fe;
function Ie(t) {
return B(this, null, function*() {
let e = "../lunr";
if (typeof parent != "undefined" && "IFrameWorker"in parent) {
let n = re("script[src]")
, [i] = n.src.split("/worker");
e = e.replace("..", i)
}
let r = [];
for (let n of t.lang) {
switch (n) {
case "ja":
r.push(`${e}/tinyseg.js`);
break;
case "hi":
case "th":
r.push(`${e}/wordcut.js`);
break
}
n !== "en" && r.push(`${e}/min/lunr.${n}.min.js`)
}
t.lang.length > 1 && r.push(`${e}/min/lunr.multi.min.js`),
r.length && (yield importScripts(`${e}/min/lunr.stemmer.support.min.js`, ...r))
})
}
function Fe(t) {
return B(this, null, function*() {
switch (t.type) {
case 0:
return yield Ie(t.data.config),
fe = new H(t.data),
{
type: 1
};
case 2:
let e = t.data;
try {
return {
type: 3,
data: fe.search(e)
}
} catch (r) {
return console.warn(`Invalid query: ${e} \u2013 see https://bit.ly/2s3ChXG`),
console.warn(r),
{
type: 3,
data: {
items: []
}
}
}
default:
throw new TypeError("Invalid message type")
}
})
}
self.lunr = de.default;
addEventListener("message", t => B(void 0, null, function*() {
postMessage(yield Fe(t.data))
}));
}
)();
//# sourceMappingURL=search.f886a092.min.js.map
www.enmastylishfurniture.com
| Enma.dev@enmastylishfurniture.devShopify *
Enma.dev@enmastylishfurniture.dev