/*! choices.js v11.1.0 | © 2025 Josh Johnson | https://github.com/jshjohnson/Choices#readme */
!(function (e, t) {
"object" == typeof exports && "undefined" != typeof module
? (module.exports = t())
: "function" == typeof define && define.amd
? define(t)
: ((e =
"undefined" != typeof globalThis
? globalThis
: e || self).Choices = t());
})(this, function () {
"use strict";
var e = function (t, i) {
return (
(e =
Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array &&
function (e, t) {
e.__proto__ = t;
}) ||
function (e, t) {
for (var i in t)
Object.prototype.hasOwnProperty.call(t, i) &&
(e[i] = t[i]);
}),
e(t, i)
);
};
function t(t, i) {
if ("function" != typeof i && null !== i)
throw new TypeError(
"Class extends value " +
String(i) +
" is not a constructor or null"
);
function n() {
this.constructor = t;
}
e(t, i),
(t.prototype =
null === i
? Object.create(i)
: ((n.prototype = i.prototype), new n()));
}
var i = function () {
return (
(i =
Object.assign ||
function (e) {
for (var t, i = 1, n = arguments.length; i < n; i++)
for (var s in (t = arguments[i]))
Object.prototype.hasOwnProperty.call(t, s) &&
(e[s] = t[s]);
return e;
}),
i.apply(this, arguments)
);
};
function n(e, t, i) {
if (i || 2 === arguments.length)
for (var n, s = 0, o = t.length; s < o; s++)
(!n && s in t) ||
(n || (n = Array.prototype.slice.call(t, 0, s)),
(n[s] = t[s]));
return e.concat(n || Array.prototype.slice.call(t));
}
"function" == typeof SuppressedError && SuppressedError;
var s,
o = "ADD_CHOICE",
r = "REMOVE_CHOICE",
c = "FILTER_CHOICES",
a = "ACTIVATE_CHOICES",
h = "CLEAR_CHOICES",
l = "ADD_GROUP",
u = "ADD_ITEM",
d = "REMOVE_ITEM",
p = "HIGHLIGHT_ITEM",
f = "search",
m = "removeItem",
g = "highlightItem",
v = ["fuseOptions", "classNames"],
_ = "select-one",
y = "select-multiple",
b = function (e) {
return { type: o, choice: e };
},
E = function (e) {
return { type: u, item: e };
},
C = function (e) {
return { type: d, item: e };
},
S = function (e, t) {
return { type: p, item: e, highlighted: t };
},
w = function (e) {
return Array.from({ length: e }, function () {
return Math.floor(36 * Math.random() + 0).toString(36);
}).join("");
},
I = function (e) {
if ("string" != typeof e) {
if (null == e) return "";
if ("object" == typeof e) {
if ("raw" in e) return I(e.raw);
if ("trusted" in e) return e.trusted;
}
return e;
}
return e
.replace(/&/g, "&")
.replace(/>/g, ">")
.replace(/=
0 &&
!window.matchMedia(
"(min-height: ".concat(e + 1, "px)")
).matches)
: "top" === this.position && (i = !0),
i
);
}),
(e.prototype.setActiveDescendant = function (e) {
this.element.setAttribute("aria-activedescendant", e);
}),
(e.prototype.removeActiveDescendant = function () {
this.element.removeAttribute("aria-activedescendant");
}),
(e.prototype.open = function (e, t) {
P(this.element, this.classNames.openState),
this.element.setAttribute("aria-expanded", "true"),
(this.isOpen = !0),
this.shouldFlip(e, t) &&
(P(this.element, this.classNames.flippedState),
(this.isFlipped = !0));
}),
(e.prototype.close = function () {
j(this.element, this.classNames.openState),
this.element.setAttribute("aria-expanded", "false"),
this.removeActiveDescendant(),
(this.isOpen = !1),
this.isFlipped &&
(j(this.element, this.classNames.flippedState),
(this.isFlipped = !1));
}),
(e.prototype.addFocusState = function () {
P(this.element, this.classNames.focusState);
}),
(e.prototype.removeFocusState = function () {
j(this.element, this.classNames.focusState);
}),
(e.prototype.enable = function () {
j(this.element, this.classNames.disabledState),
this.element.removeAttribute("aria-disabled"),
this.type === _ &&
this.element.setAttribute("tabindex", "0"),
(this.isDisabled = !1);
}),
(e.prototype.disable = function () {
P(this.element, this.classNames.disabledState),
this.element.setAttribute("aria-disabled", "true"),
this.type === _ &&
this.element.setAttribute("tabindex", "-1"),
(this.isDisabled = !0);
}),
(e.prototype.wrap = function (e) {
var t = this.element,
i = e.parentNode;
i &&
(e.nextSibling
? i.insertBefore(t, e.nextSibling)
: i.appendChild(t)),
t.appendChild(e);
}),
(e.prototype.unwrap = function (e) {
var t = this.element,
i = t.parentNode;
i && (i.insertBefore(e, t), i.removeChild(t));
}),
(e.prototype.addLoadingState = function () {
P(this.element, this.classNames.loadingState),
this.element.setAttribute("aria-busy", "true"),
(this.isLoading = !0);
}),
(e.prototype.removeLoadingState = function () {
j(this.element, this.classNames.loadingState),
this.element.removeAttribute("aria-busy"),
(this.isLoading = !1);
}),
e
);
})(),
B = (function () {
function e(e) {
var t = e.element,
i = e.type,
n = e.classNames,
s = e.preventPaste;
(this.element = t),
(this.type = i),
(this.classNames = n),
(this.preventPaste = s),
(this.isFocussed = this.element.isEqualNode(
document.activeElement
)),
(this.isDisabled = t.disabled),
(this._onPaste = this._onPaste.bind(this)),
(this._onInput = this._onInput.bind(this)),
(this._onFocus = this._onFocus.bind(this)),
(this._onBlur = this._onBlur.bind(this));
}
return (
Object.defineProperty(e.prototype, "placeholder", {
set: function (e) {
this.element.placeholder = e;
},
enumerable: !1,
configurable: !0,
}),
Object.defineProperty(e.prototype, "value", {
get: function () {
return this.element.value;
},
set: function (e) {
this.element.value = e;
},
enumerable: !1,
configurable: !0,
}),
(e.prototype.addEventListeners = function () {
var e = this.element;
e.addEventListener("paste", this._onPaste),
e.addEventListener("input", this._onInput, {
passive: !0,
}),
e.addEventListener("focus", this._onFocus, {
passive: !0,
}),
e.addEventListener("blur", this._onBlur, {
passive: !0,
});
}),
(e.prototype.removeEventListeners = function () {
var e = this.element;
e.removeEventListener("input", this._onInput),
e.removeEventListener("paste", this._onPaste),
e.removeEventListener("focus", this._onFocus),
e.removeEventListener("blur", this._onBlur);
}),
(e.prototype.enable = function () {
this.element.removeAttribute("disabled"),
(this.isDisabled = !1);
}),
(e.prototype.disable = function () {
this.element.setAttribute("disabled", ""),
(this.isDisabled = !0);
}),
(e.prototype.focus = function () {
this.isFocussed || this.element.focus();
}),
(e.prototype.blur = function () {
this.isFocussed && this.element.blur();
}),
(e.prototype.clear = function (e) {
return (
void 0 === e && (e = !0),
(this.element.value = ""),
e && this.setWidth(),
this
);
}),
(e.prototype.setWidth = function () {
var e = this.element;
(e.style.minWidth = "".concat(
e.placeholder.length + 1,
"ch"
)),
(e.style.width = "".concat(e.value.length + 1, "ch"));
}),
(e.prototype.setActiveDescendant = function (e) {
this.element.setAttribute("aria-activedescendant", e);
}),
(e.prototype.removeActiveDescendant = function () {
this.element.removeAttribute("aria-activedescendant");
}),
(e.prototype._onInput = function () {
this.type !== _ && this.setWidth();
}),
(e.prototype._onPaste = function (e) {
this.preventPaste && e.preventDefault();
}),
(e.prototype._onFocus = function () {
this.isFocussed = !0;
}),
(e.prototype._onBlur = function () {
this.isFocussed = !1;
}),
e
);
})(),
H = (function () {
function e(e) {
(this.element = e.element),
(this.scrollPos = this.element.scrollTop),
(this.height = this.element.offsetHeight);
}
return (
(e.prototype.prepend = function (e) {
var t = this.element.firstElementChild;
t
? this.element.insertBefore(e, t)
: this.element.append(e);
}),
(e.prototype.scrollToTop = function () {
this.element.scrollTop = 0;
}),
(e.prototype.scrollToChildElement = function (e, t) {
var i = this;
if (e) {
var n =
t > 0
? this.element.scrollTop +
(e.offsetTop + e.offsetHeight) -
(this.element.scrollTop +
this.element.offsetHeight)
: e.offsetTop;
requestAnimationFrame(function () {
i._animateScroll(n, t);
});
}
}),
(e.prototype._scrollDown = function (e, t, i) {
var n = (i - e) / t;
this.element.scrollTop = e + (n > 1 ? n : 1);
}),
(e.prototype._scrollUp = function (e, t, i) {
var n = (e - i) / t;
this.element.scrollTop = e - (n > 1 ? n : 1);
}),
(e.prototype._animateScroll = function (e, t) {
var i = this,
n = this.element.scrollTop,
s = !1;
t > 0
? (this._scrollDown(n, 4, e), n < e && (s = !0))
: (this._scrollUp(n, 4, e), n > e && (s = !0)),
s &&
requestAnimationFrame(function () {
i._animateScroll(e, t);
});
}),
e
);
})(),
$ = (function () {
function e(e) {
var t = e.classNames;
(this.element = e.element),
(this.classNames = t),
(this.isDisabled = !1);
}
return (
Object.defineProperty(e.prototype, "isActive", {
get: function () {
return "active" === this.element.dataset.choice;
},
enumerable: !1,
configurable: !0,
}),
Object.defineProperty(e.prototype, "dir", {
get: function () {
return this.element.dir;
},
enumerable: !1,
configurable: !0,
}),
Object.defineProperty(e.prototype, "value", {
get: function () {
return this.element.value;
},
set: function (e) {
this.element.setAttribute("value", e),
(this.element.value = e);
},
enumerable: !1,
configurable: !0,
}),
(e.prototype.conceal = function () {
var e = this.element;
P(e, this.classNames.input),
(e.hidden = !0),
(e.tabIndex = -1);
var t = e.getAttribute("style");
t && e.setAttribute("data-choice-orig-style", t),
e.setAttribute("data-choice", "active");
}),
(e.prototype.reveal = function () {
var e = this.element;
j(e, this.classNames.input),
(e.hidden = !1),
e.removeAttribute("tabindex");
var t = e.getAttribute("data-choice-orig-style");
t
? (e.removeAttribute("data-choice-orig-style"),
e.setAttribute("style", t))
: e.removeAttribute("style"),
e.removeAttribute("data-choice");
}),
(e.prototype.enable = function () {
this.element.removeAttribute("disabled"),
(this.element.disabled = !1),
(this.isDisabled = !1);
}),
(e.prototype.disable = function () {
this.element.setAttribute("disabled", ""),
(this.element.disabled = !0),
(this.isDisabled = !0);
}),
(e.prototype.triggerEvent = function (e, t) {
var i;
void 0 === (i = t || {}) && (i = null),
this.element.dispatchEvent(
new CustomEvent(e, {
detail: i,
bubbles: !0,
cancelable: !0,
})
);
}),
e
);
})(),
q = (function (e) {
function i() {
return (null !== e && e.apply(this, arguments)) || this;
}
return t(i, e), i;
})($),
W = function (e, t) {
return void 0 === t && (t = !0), void 0 === e ? t : !!e;
},
U = function (e) {
if (
("string" == typeof e &&
(e = e.split(" ").filter(function (e) {
return e.length;
})),
Array.isArray(e) && e.length)
)
return e;
},
G = function (e, t, i) {
if ((void 0 === i && (i = !0), "string" == typeof e)) {
var n = I(e);
return G(
{
value: e,
label: i || n === e ? e : { escaped: n, raw: e },
selected: !0,
},
!1
);
}
var s = e;
if ("choices" in s) {
if (!t) throw new TypeError("optGroup is not allowed");
var o = s,
r = o.choices.map(function (e) {
return G(e, !1);
});
return {
id: 0,
label: L(o.label) || o.value,
active: !!r.length,
disabled: !!o.disabled,
choices: r,
};
}
var c = s;
return {
id: 0,
group: null,
score: 0,
rank: 0,
value: c.value,
label: c.label || c.value,
active: W(c.active),
selected: W(c.selected, !1),
disabled: W(c.disabled, !1),
placeholder: W(c.placeholder, !1),
highlighted: !1,
labelClass: U(c.labelClass),
labelDescription: c.labelDescription,
customProperties: c.customProperties,
};
},
z = function (e) {
return "SELECT" === e.tagName;
},
J = (function (e) {
function i(t) {
var i = t.template,
n = t.extractPlaceholder,
s =
e.call(this, {
element: t.element,
classNames: t.classNames,
}) || this;
return (s.template = i), (s.extractPlaceholder = n), s;
}
return (
t(i, e),
Object.defineProperty(i.prototype, "placeholderOption", {
get: function () {
return (
this.element.querySelector('option[value=""]') ||
this.element.querySelector("option[placeholder]")
);
},
enumerable: !1,
configurable: !0,
}),
(i.prototype.addOptions = function (e) {
var t = this,
i = document.createDocumentFragment();
e.forEach(function (e) {
var n = e;
if (!n.element) {
var s = t.template(n);
i.appendChild(s), (n.element = s);
}
}),
this.element.appendChild(i);
}),
(i.prototype.optionsAsChoices = function () {
var e = this,
t = [];
return (
this.element
.querySelectorAll(
":scope > option, :scope > optgroup"
)
.forEach(function (i) {
!(function (e) {
return "OPTION" === e.tagName;
})(i)
? (function (e) {
return "OPTGROUP" === e.tagName;
})(i) && t.push(e._optgroupToChoice(i))
: t.push(e._optionToChoice(i));
}),
t
);
}),
(i.prototype._optionToChoice = function (e) {
return (
!e.hasAttribute("value") &&
e.hasAttribute("placeholder") &&
(e.setAttribute("value", ""), (e.value = "")),
{
id: 0,
group: null,
score: 0,
rank: 0,
value: e.value,
label: e.label,
element: e,
active: !0,
selected: this.extractPlaceholder
? e.selected
: e.hasAttribute("selected"),
disabled: e.disabled,
highlighted: !1,
placeholder:
this.extractPlaceholder &&
(!e.value || e.hasAttribute("placeholder")),
labelClass:
void 0 !== e.dataset.labelClass
? U(e.dataset.labelClass)
: void 0,
labelDescription:
void 0 !== e.dataset.labelDescription
? e.dataset.labelDescription
: void 0,
customProperties: R(e.dataset.customProperties),
}
);
}),
(i.prototype._optgroupToChoice = function (e) {
var t = this,
i = e.querySelectorAll("option"),
n = Array.from(i).map(function (e) {
return t._optionToChoice(e);
});
return {
id: 0,
label: e.label || "",
element: e,
active: !!n.length,
disabled: e.disabled,
choices: n,
};
}),
i
);
})($),
X = {
items: [],
choices: [],
silent: !1,
renderChoiceLimit: -1,
maxItemCount: -1,
closeDropdownOnSelect: "auto",
singleModeForMultiSelect: !1,
addChoices: !1,
addItems: !0,
addItemFilter: function (e) {
return !!e && "" !== e;
},
removeItems: !0,
removeItemButton: !1,
removeItemButtonAlignLeft: !1,
editItems: !1,
allowHTML: !1,
allowHtmlUserInput: !1,
duplicateItemsAllowed: !0,
delimiter: ",",
paste: !0,
searchEnabled: !0,
searchChoices: !0,
searchFloor: 1,
searchResultLimit: 4,
searchFields: ["label", "value"],
position: "auto",
resetScrollPosition: !0,
shouldSort: !0,
shouldSortItems: !1,
sorter: function (e, t) {
var i = e.label,
n = t.label,
s = void 0 === n ? t.value : n;
return L(void 0 === i ? e.value : i).localeCompare(L(s), [], {
sensitivity: "base",
ignorePunctuation: !0,
numeric: !0,
});
},
shadowRoot: null,
placeholder: !0,
placeholderValue: null,
searchPlaceholderValue: null,
prependValue: null,
appendValue: null,
renderSelectedChoices: "auto",
loadingText: "Loading...",
noResultsText: "No results found",
noChoicesText: "No choices to choose from",
itemSelectText: "Press to select",
uniqueItemText: "Only unique values can be added",
customAddItemText:
"Only values matching specific conditions can be added",
addItemText: function (e) {
return 'Press Enter to add "'.concat(e, '"');
},
removeItemIconText: function () {
return "Remove item";
},
removeItemLabelText: function (e) {
return "Remove item: ".concat(e);
},
maxItemText: function (e) {
return "Only ".concat(e, " values can be added");
},
valueComparer: function (e, t) {
return e === t;
},
fuseOptions: { includeScore: !0 },
labelId: "",
callbackOnInit: null,
callbackOnCreateTemplates: null,
classNames: {
containerOuter: ["choices"],
containerInner: ["choices__inner"],
input: ["choices__input"],
inputCloned: ["choices__input--cloned"],
list: ["choices__list"],
listItems: ["choices__list--multiple"],
listSingle: ["choices__list--single"],
listDropdown: ["choices__list--dropdown"],
item: ["choices__item"],
itemSelectable: ["choices__item--selectable"],
itemDisabled: ["choices__item--disabled"],
itemChoice: ["choices__item--choice"],
description: ["choices__description"],
placeholder: ["choices__placeholder"],
group: ["choices__group"],
groupHeading: ["choices__heading"],
button: ["choices__button"],
activeState: ["is-active"],
focusState: ["is-focused"],
openState: ["is-open"],
disabledState: ["is-disabled"],
highlightedState: ["is-highlighted"],
selectedState: ["is-selected"],
flippedState: ["is-flipped"],
loadingState: ["is-loading"],
notice: ["choices__notice"],
addChoice: ["choices__item--selectable", "add-choice"],
noResults: ["has-no-results"],
noChoices: ["has-no-choices"],
},
appendGroupInSearch: !1,
},
Q = function (e) {
var t = e.itemEl;
t && (t.remove(), (e.itemEl = void 0));
},
Y = {
groups: function (e, t) {
var i = e,
n = !0;
switch (t.type) {
case l:
i.push(t.group);
break;
case h:
i = [];
break;
default:
n = !1;
}
return { state: i, update: n };
},
items: function (e, t, i) {
var n = e,
s = !0;
switch (t.type) {
case u:
(t.item.selected = !0),
(o = t.item.element) &&
((o.selected = !0),
o.setAttribute("selected", "")),
n.push(t.item);
break;
case d:
var o;
if (((t.item.selected = !1), (o = t.item.element))) {
(o.selected = !1), o.removeAttribute("selected");
var c = o.parentElement;
c && z(c) && c.type === _ && (c.value = "");
}
Q(t.item),
(n = n.filter(function (e) {
return e.id !== t.item.id;
}));
break;
case r:
Q(t.choice),
(n = n.filter(function (e) {
return e.id !== t.choice.id;
}));
break;
case p:
var a = t.highlighted,
h = n.find(function (e) {
return e.id === t.item.id;
});
h &&
h.highlighted !== a &&
((h.highlighted = a),
i &&
(function (e, t, i) {
var n = e.itemEl;
n && (j(n, i), P(n, t));
})(
h,
a
? i.classNames.highlightedState
: i.classNames.selectedState,
a
? i.classNames.selectedState
: i.classNames.highlightedState
));
break;
default:
s = !1;
}
return { state: n, update: s };
},
choices: function (e, t, i) {
var n = e,
s = !0;
switch (t.type) {
case o:
n.push(t.choice);
break;
case r:
(t.choice.choiceEl = void 0),
t.choice.group &&
(t.choice.group.choices =
t.choice.group.choices.filter(function (e) {
return e.id !== t.choice.id;
})),
(n = n.filter(function (e) {
return e.id !== t.choice.id;
}));
break;
case u:
case d:
t.item.choiceEl = void 0;
break;
case c:
var l = [];
t.results.forEach(function (e) {
l[e.item.id] = e;
}),
n.forEach(function (e) {
var t = l[e.id];
void 0 !== t
? ((e.score = t.score),
(e.rank = t.rank),
(e.active = !0))
: ((e.score = 0),
(e.rank = 0),
(e.active = !1)),
i &&
i.appendGroupInSearch &&
(e.choiceEl = void 0);
});
break;
case a:
n.forEach(function (e) {
(e.active = t.active),
i &&
i.appendGroupInSearch &&
(e.choiceEl = void 0);
});
break;
case h:
n = [];
break;
default:
s = !1;
}
return { state: n, update: s };
},
},
Z = (function () {
function e(e) {
(this._state = this.defaultState),
(this._listeners = []),
(this._txn = 0),
(this._context = e);
}
return (
Object.defineProperty(e.prototype, "defaultState", {
get: function () {
return { groups: [], items: [], choices: [] };
},
enumerable: !1,
configurable: !0,
}),
(e.prototype.changeSet = function (e) {
return { groups: e, items: e, choices: e };
}),
(e.prototype.reset = function () {
this._state = this.defaultState;
var e = this.changeSet(!0);
this._txn
? (this._changeSet = e)
: this._listeners.forEach(function (t) {
return t(e);
});
}),
(e.prototype.subscribe = function (e) {
return this._listeners.push(e), this;
}),
(e.prototype.dispatch = function (e) {
var t = this,
i = this._state,
n = !1,
s = this._changeSet || this.changeSet(!1);
Object.keys(Y).forEach(function (o) {
var r = Y[o](i[o], e, t._context);
r.update && ((n = !0), (s[o] = !0), (i[o] = r.state));
}),
n &&
(this._txn
? (this._changeSet = s)
: this._listeners.forEach(function (e) {
return e(s);
}));
}),
(e.prototype.withTxn = function (e) {
this._txn++;
try {
e();
} finally {
if (
((this._txn = Math.max(0, this._txn - 1)),
!this._txn)
) {
var t = this._changeSet;
t &&
((this._changeSet = void 0),
this._listeners.forEach(function (e) {
return e(t);
}));
}
}
}),
Object.defineProperty(e.prototype, "state", {
get: function () {
return this._state;
},
enumerable: !1,
configurable: !0,
}),
Object.defineProperty(e.prototype, "items", {
get: function () {
return this.state.items;
},
enumerable: !1,
configurable: !0,
}),
Object.defineProperty(e.prototype, "highlightedActiveItems", {
get: function () {
return this.items.filter(function (e) {
return e.active && e.highlighted;
});
},
enumerable: !1,
configurable: !0,
}),
Object.defineProperty(e.prototype, "choices", {
get: function () {
return this.state.choices;
},
enumerable: !1,
configurable: !0,
}),
Object.defineProperty(e.prototype, "activeChoices", {
get: function () {
return this.choices.filter(function (e) {
return e.active;
});
},
enumerable: !1,
configurable: !0,
}),
Object.defineProperty(e.prototype, "searchableChoices", {
get: function () {
return this.choices.filter(function (e) {
return !e.disabled && !e.placeholder;
});
},
enumerable: !1,
configurable: !0,
}),
Object.defineProperty(e.prototype, "groups", {
get: function () {
return this.state.groups;
},
enumerable: !1,
configurable: !0,
}),
Object.defineProperty(e.prototype, "activeGroups", {
get: function () {
var e = this;
return this.state.groups.filter(function (t) {
var i = t.active && !t.disabled,
n = e.state.choices.some(function (e) {
return e.active && !e.disabled;
});
return i && n;
}, []);
},
enumerable: !1,
configurable: !0,
}),
(e.prototype.inTxn = function () {
return this._txn > 0;
}),
(e.prototype.getChoiceById = function (e) {
return this.activeChoices.find(function (t) {
return t.id === e;
});
}),
(e.prototype.getGroupById = function (e) {
return this.groups.find(function (t) {
return t.id === e;
});
}),
e
);
})(),
ee = "no-choices",
te = "no-results",
ie = "add-choice";
function ne(e, t, i) {
return (
(t = (function (e) {
var t = (function (e) {
if ("object" != typeof e || !e) return e;
var t = e[Symbol.toPrimitive];
if (void 0 !== t) {
var i = t.call(e, "string");
if ("object" != typeof i) return i;
throw new TypeError(
"@@toPrimitive must return a primitive value."
);
}
return String(e);
})(e);
return "symbol" == typeof t ? t : t + "";
})(t)) in e
? Object.defineProperty(e, t, {
value: i,
enumerable: !0,
configurable: !0,
writable: !0,
})
: (e[t] = i),
e
);
}
function se(e, t) {
var i = Object.keys(e);
if (Object.getOwnPropertySymbols) {
var n = Object.getOwnPropertySymbols(e);
t &&
(n = n.filter(function (t) {
return Object.getOwnPropertyDescriptor(e, t).enumerable;
})),
i.push.apply(i, n);
}
return i;
}
function oe(e) {
for (var t = 1; t < arguments.length; t++) {
var i = null != arguments[t] ? arguments[t] : {};
t % 2
? se(Object(i), !0).forEach(function (t) {
ne(e, t, i[t]);
})
: Object.getOwnPropertyDescriptors
? Object.defineProperties(
e,
Object.getOwnPropertyDescriptors(i)
)
: se(Object(i)).forEach(function (t) {
Object.defineProperty(
e,
t,
Object.getOwnPropertyDescriptor(i, t)
);
});
}
return e;
}
function re(e) {
return Array.isArray ? Array.isArray(e) : "[object Array]" === de(e);
}
function ce(e) {
return "string" == typeof e;
}
function ae(e) {
return "number" == typeof e;
}
function he(e) {
return "object" == typeof e;
}
function le(e) {
return null != e;
}
function ue(e) {
return !e.trim().length;
}
function de(e) {
return null == e
? void 0 === e
? "[object Undefined]"
: "[object Null]"
: Object.prototype.toString.call(e);
}
const pe = (e) => `Missing ${e} property in key`,
fe = (e) =>
`Property 'weight' in key '${e}' must be a positive integer`,
me = Object.prototype.hasOwnProperty;
class ge {
constructor(e) {
(this._keys = []), (this._keyMap = {});
let t = 0;
e.forEach((e) => {
let i = ve(e);
this._keys.push(i), (this._keyMap[i.id] = i), (t += i.weight);
}),
this._keys.forEach((e) => {
e.weight /= t;
});
}
get(e) {
return this._keyMap[e];
}
keys() {
return this._keys;
}
toJSON() {
return JSON.stringify(this._keys);
}
}
function ve(e) {
let t = null,
i = null,
n = null,
s = 1,
o = null;
if (ce(e) || re(e)) (n = e), (t = _e(e)), (i = ye(e));
else {
if (!me.call(e, "name")) throw new Error(pe("name"));
const r = e.name;
if (((n = r), me.call(e, "weight") && ((s = e.weight), s <= 0)))
throw new Error(fe(r));
(t = _e(r)), (i = ye(r)), (o = e.getFn);
}
return { path: t, id: i, weight: s, src: n, getFn: o };
}
function _e(e) {
return re(e) ? e : e.split(".");
}
function ye(e) {
return re(e) ? e.join(".") : e;
}
const be = {
useExtendedSearch: !1,
getFn: function (e, t) {
let i = [],
n = !1;
const s = (e, t, o) => {
if (le(e))
if (t[o]) {
const r = e[t[o]];
if (!le(r)) return;
if (
o === t.length - 1 &&
(ce(r) ||
ae(r) ||
(function (e) {
return (
!0 === e ||
!1 === e ||
((function (e) {
return he(e) && null !== e;
})(e) &&
"[object Boolean]" == de(e))
);
})(r))
)
i.push(
(function (e) {
return null == e
? ""
: (function (e) {
if ("string" == typeof e)
return e;
let t = e + "";
return "0" == t && 1 / e == -1 / 0
? "-0"
: t;
})(e);
})(r)
);
else if (re(r)) {
n = !0;
for (let e = 0, i = r.length; e < i; e += 1)
s(r[e], t, o + 1);
} else t.length && s(r, t, o + 1);
} else i.push(e);
};
return s(e, ce(t) ? t.split(".") : t, 0), n ? i : i[0];
},
ignoreLocation: !1,
ignoreFieldNorm: !1,
fieldNormWeight: 1,
};
var Ee = oe(
oe(
oe(
oe(
{},
{
isCaseSensitive: !1,
includeScore: !1,
keys: [],
shouldSort: !0,
sortFn: (e, t) =>
e.score === t.score
? e.idx < t.idx
? -1
: 1
: e.score < t.score
? -1
: 1,
}
),
{
includeMatches: !1,
findAllMatches: !1,
minMatchCharLength: 1,
}
),
{ location: 0, threshold: 0.6, distance: 100 }
),
be
);
const Ce = /[^ ]+/g;
class Se {
constructor({
getFn: e = Ee.getFn,
fieldNormWeight: t = Ee.fieldNormWeight,
} = {}) {
(this.norm = (function (e = 1, t = 3) {
const i = new Map(),
n = Math.pow(10, t);
return {
get(t) {
const s = t.match(Ce).length;
if (i.has(s)) return i.get(s);
const o = 1 / Math.pow(s, 0.5 * e),
r = parseFloat(Math.round(o * n) / n);
return i.set(s, r), r;
},
clear() {
i.clear();
},
};
})(t, 3)),
(this.getFn = e),
(this.isCreated = !1),
this.setIndexRecords();
}
setSources(e = []) {
this.docs = e;
}
setIndexRecords(e = []) {
this.records = e;
}
setKeys(e = []) {
(this.keys = e),
(this._keysMap = {}),
e.forEach((e, t) => {
this._keysMap[e.id] = t;
});
}
create() {
!this.isCreated &&
this.docs.length &&
((this.isCreated = !0),
ce(this.docs[0])
? this.docs.forEach((e, t) => {
this._addString(e, t);
})
: this.docs.forEach((e, t) => {
this._addObject(e, t);
}),
this.norm.clear());
}
add(e) {
const t = this.size();
ce(e) ? this._addString(e, t) : this._addObject(e, t);
}
removeAt(e) {
this.records.splice(e, 1);
for (let t = e, i = this.size(); t < i; t += 1)
this.records[t].i -= 1;
}
getValueForItemAtKeyId(e, t) {
return e[this._keysMap[t]];
}
size() {
return this.records.length;
}
_addString(e, t) {
if (!le(e) || ue(e)) return;
let i = { v: e, i: t, n: this.norm.get(e) };
this.records.push(i);
}
_addObject(e, t) {
let i = { i: t, $: {} };
this.keys.forEach((t, n) => {
let s = t.getFn ? t.getFn(e) : this.getFn(e, t.path);
if (le(s))
if (re(s)) {
let e = [];
const t = [{ nestedArrIndex: -1, value: s }];
for (; t.length; ) {
const { nestedArrIndex: i, value: n } = t.pop();
if (le(n))
if (ce(n) && !ue(n)) {
let t = { v: n, i: i, n: this.norm.get(n) };
e.push(t);
} else
re(n) &&
n.forEach((e, i) => {
t.push({
nestedArrIndex: i,
value: e,
});
});
}
i.$[n] = e;
} else if (ce(s) && !ue(s)) {
let e = { v: s, n: this.norm.get(s) };
i.$[n] = e;
}
}),
this.records.push(i);
}
toJSON() {
return { keys: this.keys, records: this.records };
}
}
function we(
e,
t,
{ getFn: i = Ee.getFn, fieldNormWeight: n = Ee.fieldNormWeight } = {}
) {
const s = new Se({ getFn: i, fieldNormWeight: n });
return s.setKeys(e.map(ve)), s.setSources(t), s.create(), s;
}
function Ie(
e,
{
errors: t = 0,
currentLocation: i = 0,
expectedLocation: n = 0,
distance: s = Ee.distance,
ignoreLocation: o = Ee.ignoreLocation,
} = {}
) {
const r = t / e.length;
if (o) return r;
const c = Math.abs(n - i);
return s ? r + c / s : c ? 1 : r;
}
const Ae = 32;
function xe(e) {
let t = {};
for (let i = 0, n = e.length; i < n; i += 1) {
const s = e.charAt(i);
t[s] = (t[s] || 0) | (1 << (n - i - 1));
}
return t;
}
class Oe {
constructor(
e,
{
location: t = Ee.location,
threshold: i = Ee.threshold,
distance: n = Ee.distance,
includeMatches: s = Ee.includeMatches,
findAllMatches: o = Ee.findAllMatches,
minMatchCharLength: r = Ee.minMatchCharLength,
isCaseSensitive: c = Ee.isCaseSensitive,
ignoreLocation: a = Ee.ignoreLocation,
} = {}
) {
if (
((this.options = {
location: t,
threshold: i,
distance: n,
includeMatches: s,
findAllMatches: o,
minMatchCharLength: r,
isCaseSensitive: c,
ignoreLocation: a,
}),
(this.pattern = c ? e : e.toLowerCase()),
(this.chunks = []),
!this.pattern.length)
)
return;
const h = (e, t) => {
this.chunks.push({
pattern: e,
alphabet: xe(e),
startIndex: t,
});
},
l = this.pattern.length;
if (l > Ae) {
let e = 0;
const t = l % Ae,
i = l - t;
for (; e < i; ) h(this.pattern.substr(e, Ae), e), (e += Ae);
if (t) {
const e = l - Ae;
h(this.pattern.substr(e), e);
}
} else h(this.pattern, 0);
}
searchIn(e) {
const { isCaseSensitive: t, includeMatches: i } = this.options;
if ((t || (e = e.toLowerCase()), this.pattern === e)) {
let t = { isMatch: !0, score: 0 };
return i && (t.indices = [[0, e.length - 1]]), t;
}
const {
location: n,
distance: s,
threshold: o,
findAllMatches: r,
minMatchCharLength: c,
ignoreLocation: a,
} = this.options;
let h = [],
l = 0,
u = !1;
this.chunks.forEach(
({ pattern: t, alphabet: d, startIndex: p }) => {
const {
isMatch: f,
score: m,
indices: g,
} = (function (
e,
t,
i,
{
location: n = Ee.location,
distance: s = Ee.distance,
threshold: o = Ee.threshold,
findAllMatches: r = Ee.findAllMatches,
minMatchCharLength: c = Ee.minMatchCharLength,
includeMatches: a = Ee.includeMatches,
ignoreLocation: h = Ee.ignoreLocation,
} = {}
) {
if (t.length > Ae)
throw new Error(
"Pattern length exceeds max of 32."
);
const l = t.length,
u = e.length,
d = Math.max(0, Math.min(n, u));
let p = o,
f = d;
const m = c > 1 || a,
g = m ? Array(u) : [];
let v;
for (; (v = e.indexOf(t, f)) > -1; ) {
let e = Ie(t, {
currentLocation: v,
expectedLocation: d,
distance: s,
ignoreLocation: h,
});
if (((p = Math.min(e, p)), (f = v + l), m)) {
let e = 0;
for (; e < l; ) (g[v + e] = 1), (e += 1);
}
}
f = -1;
let _ = [],
y = 1,
b = l + u;
const E = 1 << (l - 1);
for (let n = 0; n < l; n += 1) {
let o = 0,
c = b;
for (; o < c; )
Ie(t, {
errors: n,
currentLocation: d + c,
expectedLocation: d,
distance: s,
ignoreLocation: h,
}) <= p
? (o = c)
: (b = c),
(c = Math.floor((b - o) / 2 + o));
b = c;
let a = Math.max(1, d - c + 1),
v = r ? u : Math.min(d + c, u) + l,
C = Array(v + 2);
C[v + 1] = (1 << n) - 1;
for (let o = v; o >= a; o -= 1) {
let r = o - 1,
c = i[e.charAt(r)];
if (
(m && (g[r] = +!!c),
(C[o] = ((C[o + 1] << 1) | 1) & c),
n &&
(C[o] |=
((_[o + 1] | _[o]) << 1) |
1 |
_[o + 1]),
C[o] & E &&
((y = Ie(t, {
errors: n,
currentLocation: r,
expectedLocation: d,
distance: s,
ignoreLocation: h,
})),
y <= p))
) {
if (((p = y), (f = r), f <= d)) break;
a = Math.max(1, 2 * d - f);
}
}
if (
Ie(t, {
errors: n + 1,
currentLocation: d,
expectedLocation: d,
distance: s,
ignoreLocation: h,
}) > p
)
break;
_ = C;
}
const C = {
isMatch: f >= 0,
score: Math.max(0.001, y),
};
if (m) {
const e = (function (
e = [],
t = Ee.minMatchCharLength
) {
let i = [],
n = -1,
s = -1,
o = 0;
for (let r = e.length; o < r; o += 1) {
let r = e[o];
r && -1 === n
? (n = o)
: r ||
-1 === n ||
((s = o - 1),
s - n + 1 >= t && i.push([n, s]),
(n = -1));
}
return (
e[o - 1] &&
o - n >= t &&
i.push([n, o - 1]),
i
);
})(g, c);
e.length ? a && (C.indices = e) : (C.isMatch = !1);
}
return C;
})(e, t, d, {
location: n + p,
distance: s,
threshold: o,
findAllMatches: r,
minMatchCharLength: c,
includeMatches: i,
ignoreLocation: a,
});
f && (u = !0), (l += m), f && g && (h = [...h, ...g]);
}
);
let d = { isMatch: u, score: u ? l / this.chunks.length : 1 };
return u && i && (d.indices = h), d;
}
}
class Le {
constructor(e) {
this.pattern = e;
}
static isMultiMatch(e) {
return Me(e, this.multiRegex);
}
static isSingleMatch(e) {
return Me(e, this.singleRegex);
}
search() {}
}
function Me(e, t) {
const i = e.match(t);
return i ? i[1] : null;
}
class Te extends Le {
constructor(
e,
{
location: t = Ee.location,
threshold: i = Ee.threshold,
distance: n = Ee.distance,
includeMatches: s = Ee.includeMatches,
findAllMatches: o = Ee.findAllMatches,
minMatchCharLength: r = Ee.minMatchCharLength,
isCaseSensitive: c = Ee.isCaseSensitive,
ignoreLocation: a = Ee.ignoreLocation,
} = {}
) {
super(e),
(this._bitapSearch = new Oe(e, {
location: t,
threshold: i,
distance: n,
includeMatches: s,
findAllMatches: o,
minMatchCharLength: r,
isCaseSensitive: c,
ignoreLocation: a,
}));
}
static get type() {
return "fuzzy";
}
static get multiRegex() {
return /^"(.*)"$/;
}
static get singleRegex() {
return /^(.*)$/;
}
search(e) {
return this._bitapSearch.searchIn(e);
}
}
class Ne extends Le {
constructor(e) {
super(e);
}
static get type() {
return "include";
}
static get multiRegex() {
return /^'"(.*)"$/;
}
static get singleRegex() {
return /^'(.*)$/;
}
search(e) {
let t,
i = 0;
const n = [],
s = this.pattern.length;
for (; (t = e.indexOf(this.pattern, i)) > -1; )
(i = t + s), n.push([t, i - 1]);
const o = !!n.length;
return { isMatch: o, score: o ? 0 : 1, indices: n };
}
}
const ke = [
class extends Le {
constructor(e) {
super(e);
}
static get type() {
return "exact";
}
static get multiRegex() {
return /^="(.*)"$/;
}
static get singleRegex() {
return /^=(.*)$/;
}
search(e) {
const t = e === this.pattern;
return {
isMatch: t,
score: t ? 0 : 1,
indices: [0, this.pattern.length - 1],
};
}
},
Ne,
class extends Le {
constructor(e) {
super(e);
}
static get type() {
return "prefix-exact";
}
static get multiRegex() {
return /^\^"(.*)"$/;
}
static get singleRegex() {
return /^\^(.*)$/;
}
search(e) {
const t = e.startsWith(this.pattern);
return {
isMatch: t,
score: t ? 0 : 1,
indices: [0, this.pattern.length - 1],
};
}
},
class extends Le {
constructor(e) {
super(e);
}
static get type() {
return "inverse-prefix-exact";
}
static get multiRegex() {
return /^!\^"(.*)"$/;
}
static get singleRegex() {
return /^!\^(.*)$/;
}
search(e) {
const t = !e.startsWith(this.pattern);
return {
isMatch: t,
score: t ? 0 : 1,
indices: [0, e.length - 1],
};
}
},
class extends Le {
constructor(e) {
super(e);
}
static get type() {
return "inverse-suffix-exact";
}
static get multiRegex() {
return /^!"(.*)"\$$/;
}
static get singleRegex() {
return /^!(.*)\$$/;
}
search(e) {
const t = !e.endsWith(this.pattern);
return {
isMatch: t,
score: t ? 0 : 1,
indices: [0, e.length - 1],
};
}
},
class extends Le {
constructor(e) {
super(e);
}
static get type() {
return "suffix-exact";
}
static get multiRegex() {
return /^"(.*)"\$$/;
}
static get singleRegex() {
return /^(.*)\$$/;
}
search(e) {
const t = e.endsWith(this.pattern);
return {
isMatch: t,
score: t ? 0 : 1,
indices: [e.length - this.pattern.length, e.length - 1],
};
}
},
class extends Le {
constructor(e) {
super(e);
}
static get type() {
return "inverse-exact";
}
static get multiRegex() {
return /^!"(.*)"$/;
}
static get singleRegex() {
return /^!(.*)$/;
}
search(e) {
const t = -1 === e.indexOf(this.pattern);
return {
isMatch: t,
score: t ? 0 : 1,
indices: [0, e.length - 1],
};
}
},
Te,
],
Fe = ke.length,
De = / +(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)/,
Pe = new Set([Te.type, Ne.type]);
const je = [];
function Re(e, t) {
for (let i = 0, n = je.length; i < n; i += 1) {
let n = je[i];
if (n.condition(e, t)) return new n(e, t);
}
return new Oe(e, t);
}
const Ke = "$and",
Ve = "$path",
Be = (e) => !(!e[Ke] && !e.$or),
He = (e) => ({ [Ke]: Object.keys(e).map((t) => ({ [t]: e[t] })) });
function $e(e, t, { auto: i = !0 } = {}) {
const n = (e) => {
let s = Object.keys(e);
const o = ((e) => !!e[Ve])(e);
if (!o && s.length > 1 && !Be(e)) return n(He(e));
if (((e) => !re(e) && he(e) && !Be(e))(e)) {
const n = o ? e[Ve] : s[0],
r = o ? e.$val : e[n];
if (!ce(r))
throw new Error(((e) => `Invalid value for key ${e}`)(n));
const c = { keyId: ye(n), pattern: r };
return i && (c.searcher = Re(r, t)), c;
}
let r = { children: [], operator: s[0] };
return (
s.forEach((t) => {
const i = e[t];
re(i) &&
i.forEach((e) => {
r.children.push(n(e));
});
}),
r
);
};
return Be(e) || (e = He(e)), n(e);
}
function qe(e, t) {
const i = e.matches;
(t.matches = []),
le(i) &&
i.forEach((e) => {
if (!le(e.indices) || !e.indices.length) return;
const { indices: i, value: n } = e;
let s = { indices: i, value: n };
e.key && (s.key = e.key.src),
e.idx > -1 && (s.refIndex = e.idx),
t.matches.push(s);
});
}
function We(e, t) {
t.score = e.score;
}
class Ue {
constructor(e, t = {}, i) {
(this.options = oe(oe({}, Ee), t)),
(this._keyStore = new ge(this.options.keys)),
this.setCollection(e, i);
}
setCollection(e, t) {
if (((this._docs = e), t && !(t instanceof Se)))
throw new Error("Incorrect 'index' type");
this._myIndex =
t ||
we(this.options.keys, this._docs, {
getFn: this.options.getFn,
fieldNormWeight: this.options.fieldNormWeight,
});
}
add(e) {
le(e) && (this._docs.push(e), this._myIndex.add(e));
}
remove(e = () => !1) {
const t = [];
for (let i = 0, n = this._docs.length; i < n; i += 1) {
const s = this._docs[i];
e(s, i) && (this.removeAt(i), (i -= 1), (n -= 1), t.push(s));
}
return t;
}
removeAt(e) {
this._docs.splice(e, 1), this._myIndex.removeAt(e);
}
getIndex() {
return this._myIndex;
}
search(e, { limit: t = -1 } = {}) {
const {
includeMatches: i,
includeScore: n,
shouldSort: s,
sortFn: o,
ignoreFieldNorm: r,
} = this.options;
let c = ce(e)
? ce(this._docs[0])
? this._searchStringList(e)
: this._searchObjectList(e)
: this._searchLogical(e);
return (
(function (e, { ignoreFieldNorm: t = Ee.ignoreFieldNorm }) {
e.forEach((e) => {
let i = 1;
e.matches.forEach(({ key: e, norm: n, score: s }) => {
const o = e ? e.weight : null;
i *= Math.pow(
0 === s && o ? Number.EPSILON : s,
(o || 1) * (t ? 1 : n)
);
}),
(e.score = i);
});
})(c, { ignoreFieldNorm: r }),
s && c.sort(o),
ae(t) && t > -1 && (c = c.slice(0, t)),
(function (
e,
t,
{
includeMatches: i = Ee.includeMatches,
includeScore: n = Ee.includeScore,
} = {}
) {
const s = [];
return (
i && s.push(qe),
n && s.push(We),
e.map((e) => {
const { idx: i } = e,
n = { item: t[i], refIndex: i };
return (
s.length &&
s.forEach((t) => {
t(e, n);
}),
n
);
})
);
})(c, this._docs, { includeMatches: i, includeScore: n })
);
}
_searchStringList(e) {
const t = Re(e, this.options),
{ records: i } = this._myIndex,
n = [];
return (
i.forEach(({ v: e, i: i, n: s }) => {
if (!le(e)) return;
const { isMatch: o, score: r, indices: c } = t.searchIn(e);
o &&
n.push({
item: e,
idx: i,
matches: [
{ score: r, value: e, norm: s, indices: c },
],
});
}),
n
);
}
_searchLogical(e) {
const t = $e(e, this.options),
i = (e, t, n) => {
if (!e.children) {
const { keyId: i, searcher: s } = e,
o = this._findMatches({
key: this._keyStore.get(i),
value: this._myIndex.getValueForItemAtKeyId(
t,
i
),
searcher: s,
});
return o && o.length
? [{ idx: n, item: t, matches: o }]
: [];
}
const s = [];
for (let o = 0, r = e.children.length; o < r; o += 1) {
const r = i(e.children[o], t, n);
if (r.length) s.push(...r);
else if (e.operator === Ke) return [];
}
return s;
},
n = {},
s = [];
return (
this._myIndex.records.forEach(({ $: e, i: o }) => {
if (le(e)) {
let r = i(t, e, o);
r.length &&
(n[o] ||
((n[o] = { idx: o, item: e, matches: [] }),
s.push(n[o])),
r.forEach(({ matches: e }) => {
n[o].matches.push(...e);
}));
}
}),
s
);
}
_searchObjectList(e) {
const t = Re(e, this.options),
{ keys: i, records: n } = this._myIndex,
s = [];
return (
n.forEach(({ $: e, i: n }) => {
if (!le(e)) return;
let o = [];
i.forEach((i, n) => {
o.push(
...this._findMatches({
key: i,
value: e[n],
searcher: t,
})
);
}),
o.length && s.push({ idx: n, item: e, matches: o });
}),
s
);
}
_findMatches({ key: e, value: t, searcher: i }) {
if (!le(t)) return [];
let n = [];
if (re(t))
t.forEach(({ v: t, i: s, n: o }) => {
if (!le(t)) return;
const { isMatch: r, score: c, indices: a } = i.searchIn(t);
r &&
n.push({
score: c,
key: e,
value: t,
idx: s,
norm: o,
indices: a,
});
});
else {
const { v: s, n: o } = t,
{ isMatch: r, score: c, indices: a } = i.searchIn(s);
r &&
n.push({ score: c, key: e, value: s, norm: o, indices: a });
}
return n;
}
}
(Ue.version = "7.0.0"),
(Ue.createIndex = we),
(Ue.parseIndex = function (
e,
{
getFn: t = Ee.getFn,
fieldNormWeight: i = Ee.fieldNormWeight,
} = {}
) {
const { keys: n, records: s } = e,
o = new Se({ getFn: t, fieldNormWeight: i });
return o.setKeys(n), o.setIndexRecords(s), o;
}),
(Ue.config = Ee),
(Ue.parseQuery = $e),
(function (...e) {
je.push(...e);
})(
class {
constructor(
e,
{
isCaseSensitive: t = Ee.isCaseSensitive,
includeMatches: i = Ee.includeMatches,
minMatchCharLength: n = Ee.minMatchCharLength,
ignoreLocation: s = Ee.ignoreLocation,
findAllMatches: o = Ee.findAllMatches,
location: r = Ee.location,
threshold: c = Ee.threshold,
distance: a = Ee.distance,
} = {}
) {
(this.query = null),
(this.options = {
isCaseSensitive: t,
includeMatches: i,
minMatchCharLength: n,
findAllMatches: o,
ignoreLocation: s,
location: r,
threshold: c,
distance: a,
}),
(this.pattern = t ? e : e.toLowerCase()),
(this.query = (function (e, t = {}) {
return e.split("|").map((e) => {
let i = e
.trim()
.split(De)
.filter((e) => e && !!e.trim()),
n = [];
for (let e = 0, s = i.length; e < s; e += 1) {
const s = i[e];
let o = !1,
r = -1;
for (; !o && ++r < Fe; ) {
const e = ke[r];
let i = e.isMultiMatch(s);
i && (n.push(new e(i, t)), (o = !0));
}
if (!o)
for (r = -1; ++r < Fe; ) {
const e = ke[r];
let i = e.isSingleMatch(s);
if (i) {
n.push(new e(i, t));
break;
}
}
}
return n;
});
})(this.pattern, this.options));
}
static condition(e, t) {
return t.useExtendedSearch;
}
searchIn(e) {
const t = this.query;
if (!t) return { isMatch: !1, score: 1 };
const { includeMatches: i, isCaseSensitive: n } =
this.options;
e = n ? e : e.toLowerCase();
let s = 0,
o = [],
r = 0;
for (let n = 0, c = t.length; n < c; n += 1) {
const c = t[n];
(o.length = 0), (s = 0);
for (let t = 0, n = c.length; t < n; t += 1) {
const n = c[t],
{
isMatch: a,
indices: h,
score: l,
} = n.search(e);
if (!a) {
(r = 0), (s = 0), (o.length = 0);
break;
}
(s += 1),
(r += l),
i &&
(Pe.has(n.constructor.type)
? (o = [...o, ...h])
: o.push(h));
}
if (s) {
let e = { isMatch: !0, score: r / s };
return i && (e.indices = o), e;
}
}
return { isMatch: !1, score: 1 };
}
}
);
var Ge = (function () {
function e(e) {
(this._haystack = []),
(this._fuseOptions = i(i({}, e.fuseOptions), {
keys: n([], e.searchFields, !0),
includeMatches: !0,
}));
}
return (
(e.prototype.index = function (e) {
(this._haystack = e),
this._fuse && this._fuse.setCollection(e);
}),
(e.prototype.reset = function () {
(this._haystack = []), (this._fuse = void 0);
}),
(e.prototype.isEmptyIndex = function () {
return !this._haystack.length;
}),
(e.prototype.search = function (e) {
return (
this._fuse ||
(this._fuse = new Ue(
this._haystack,
this._fuseOptions
)),
this._fuse.search(e).map(function (e, t) {
return {
item: e.item,
score: e.score || 0,
rank: t + 1,
};
})
);
}),
e
);
})(),
ze = function (e, t, i) {
var n = e.dataset,
s = t.customProperties,
o = t.labelClass,
r = t.labelDescription;
o && (n.labelClass = F(o).join(" ")),
r && (n.labelDescription = r),
i &&
s &&
("string" == typeof s
? (n.customProperties = s)
: "object" != typeof s ||
(function (e) {
for (var t in e)
if (
Object.prototype.hasOwnProperty.call(e, t)
)
return !1;
return !0;
})(s) ||
(n.customProperties = JSON.stringify(s)));
},
Je = function (e, t, i) {
var n = t && e.querySelector("label[for='".concat(t, "']")),
s = n && n.innerText;
s && i.setAttribute("aria-label", s);
},
Xe = {
containerOuter: function (e, t, i, n, s, o, r) {
var c = e.classNames.containerOuter,
a = document.createElement("div");
return (
P(a, c),
(a.dataset.type = o),
t && (a.dir = t),
n && (a.tabIndex = 0),
i &&
(a.setAttribute("role", s ? "combobox" : "listbox"),
s
? a.setAttribute("aria-autocomplete", "list")
: r ||
Je(
this._docRoot,
this.passedElement.element.id,
a
),
a.setAttribute("aria-haspopup", "true"),
a.setAttribute("aria-expanded", "false")),
r && a.setAttribute("aria-labelledby", r),
a
);
},
containerInner: function (e) {
var t = e.classNames.containerInner,
i = document.createElement("div");
return P(i, t), i;
},
itemList: function (e, t) {
var i = e.searchEnabled,
n = e.classNames,
s = n.list,
o = n.listSingle,
r = n.listItems,
c = document.createElement("div");
return (
P(c, s),
P(c, t ? o : r),
this._isSelectElement &&
i &&
c.setAttribute("role", "listbox"),
c
);
},
placeholder: function (e, t) {
var i = e.allowHTML,
n = e.classNames.placeholder,
s = document.createElement("div");
return P(s, n), N(s, i, t), s;
},
item: function (e, t, i) {
var n = e.allowHTML,
s = e.removeItemButtonAlignLeft,
o = e.removeItemIconText,
r = e.removeItemLabelText,
c = e.classNames,
a = c.item,
h = c.button,
l = c.highlightedState,
u = c.itemSelectable,
d = c.placeholder,
p = L(t.value),
f = document.createElement("div");
if ((P(f, a), t.labelClass)) {
var m = document.createElement("span");
N(m, n, t.label), P(m, t.labelClass), f.appendChild(m);
} else N(f, n, t.label);
if (
((f.dataset.item = ""),
(f.dataset.id = t.id),
(f.dataset.value = p),
ze(f, t, !0),
(t.disabled || this.containerOuter.isDisabled) &&
f.setAttribute("aria-disabled", "true"),
this._isSelectElement &&
(f.setAttribute("aria-selected", "true"),
f.setAttribute("role", "option")),
t.placeholder && (P(f, d), (f.dataset.placeholder = "")),
P(f, t.highlighted ? l : u),
i)
) {
t.disabled && j(f, u), (f.dataset.deletable = "");
var g = document.createElement("button");
(g.type = "button"), P(g, h), N(g, !0, x(o, t.value));
var v = x(r, t.value);
v && g.setAttribute("aria-label", v),
(g.dataset.button = ""),
s
? f.insertAdjacentElement("afterbegin", g)
: f.appendChild(g);
}
return f;
},
choiceList: function (e, t) {
var i = e.classNames.list,
n = document.createElement("div");
return (
P(n, i),
t || n.setAttribute("aria-multiselectable", "true"),
n.setAttribute("role", "listbox"),
n
);
},
choiceGroup: function (e, t) {
var i = e.allowHTML,
n = e.classNames,
s = n.group,
o = n.groupHeading,
r = n.itemDisabled,
c = t.id,
a = t.label,
h = t.disabled,
l = L(a),
u = document.createElement("div");
P(u, s),
h && P(u, r),
u.setAttribute("role", "group"),
(u.dataset.group = ""),
(u.dataset.id = c),
(u.dataset.value = l),
h && u.setAttribute("aria-disabled", "true");
var d = document.createElement("div");
return P(d, o), N(d, i, a || ""), u.appendChild(d), u;
},
choice: function (e, t, i, n) {
var s = e.allowHTML,
o = e.classNames,
r = o.item,
c = o.itemChoice,
a = o.itemSelectable,
h = o.selectedState,
l = o.itemDisabled,
u = o.description,
d = o.placeholder,
p = t.label,
f = L(t.value),
m = document.createElement("div");
(m.id = t.elementId),
P(m, r),
P(m, c),
n &&
"string" == typeof p &&
((p = T(s, p)),
(p = { trusted: (p += " (".concat(n, ")")) }));
var g = m;
if (t.labelClass) {
var v = document.createElement("span");
N(v, s, p), P(v, t.labelClass), (g = v), m.appendChild(v);
} else N(m, s, p);
if (t.labelDescription) {
var _ = "".concat(t.elementId, "-description");
g.setAttribute("aria-describedby", _);
var y = document.createElement("span");
N(y, s, t.labelDescription),
(y.id = _),
P(y, u),
m.appendChild(y);
}
return (
t.selected && P(m, h),
t.placeholder && P(m, d),
m.setAttribute("role", t.group ? "treeitem" : "option"),
(m.dataset.choice = ""),
(m.dataset.id = t.id),
(m.dataset.value = f),
i && (m.dataset.selectText = i),
t.group && (m.dataset.groupId = "".concat(t.group.id)),
ze(m, t, !1),
t.disabled
? (P(m, l),
(m.dataset.choiceDisabled = ""),
m.setAttribute("aria-disabled", "true"))
: (P(m, a), (m.dataset.choiceSelectable = "")),
m
);
},
input: function (e, t) {
var i = e.classNames,
n = i.input,
s = i.inputCloned,
o = e.labelId,
r = document.createElement("input");
return (
(r.type = "search"),
P(r, n),
P(r, s),
(r.autocomplete = "off"),
(r.autocapitalize = "off"),
(r.spellcheck = !1),
r.setAttribute("aria-autocomplete", "list"),
t
? r.setAttribute("aria-label", t)
: o ||
Je(this._docRoot, this.passedElement.element.id, r),
r
);
},
dropdown: function (e) {
var t = e.classNames,
i = t.list,
n = t.listDropdown,
s = document.createElement("div");
return (
P(s, i),
P(s, n),
s.setAttribute("aria-expanded", "false"),
s
);
},
notice: function (e, t, i) {
var n = e.classNames,
s = n.item,
o = n.itemChoice,
r = n.addChoice,
c = n.noResults,
a = n.noChoices,
h = n.notice;
void 0 === i && (i = "");
var l = document.createElement("div");
switch ((N(l, !0, t), P(l, s), P(l, o), P(l, h), i)) {
case ie:
P(l, r);
break;
case te:
P(l, c);
break;
case ee:
P(l, a);
}
return (
i === ie &&
((l.dataset.choiceSelectable = ""),
(l.dataset.choice = "")),
l
);
},
option: function (e) {
var t = L(e.label),
i = new Option(t, e.value, !1, e.selected);
return (
ze(i, e, !0),
(i.disabled = e.disabled),
e.selected && i.setAttribute("selected", ""),
i
);
},
},
Qe =
"-ms-scroll-limit" in document.documentElement.style &&
"-ms-ime-align" in document.documentElement.style,
Ye = {},
Ze = function (e) {
if (e) return e.dataset.id ? parseInt(e.dataset.id, 10) : void 0;
},
et = "[data-choice-selectable]";
return (function () {
function e(t, n) {
void 0 === t && (t = "[data-choice]"), void 0 === n && (n = {});
var s = this;
(this.initialisedOK = void 0),
(this._hasNonChoicePlaceholder = !1),
(this._lastAddedChoiceId = 0),
(this._lastAddedGroupId = 0);
var o = e.defaults;
(this.config = i(i(i({}, o.allOptions), o.options), n)),
v.forEach(function (e) {
s.config[e] = i(
i(i({}, o.allOptions[e]), o.options[e]),
n[e]
);
});
var r = this.config;
r.silent || this._validateConfig();
var c = r.shadowRoot || document.documentElement;
this._docRoot = c;
var a = "string" == typeof t ? c.querySelector(t) : t;
if (
!a ||
"object" != typeof a ||
("INPUT" !== a.tagName && !z(a))
) {
if (!a && "string" == typeof t)
throw TypeError(
"Selector ".concat(t, " failed to find an element")
);
throw TypeError(
"Expected one of the following types text|select-one|select-multiple"
);
}
var h = a.type,
l = "text" === h;
(l || 1 !== r.maxItemCount) && (r.singleModeForMultiSelect = !1),
r.singleModeForMultiSelect && (h = y);
var u = h === _,
d = h === y,
p = u || d;
if (
((this._elementType = h),
(this._isTextElement = l),
(this._isSelectOneElement = u),
(this._isSelectMultipleElement = d),
(this._isSelectElement = u || d),
(this._canAddUserChoices =
(l && r.addItems) || (p && r.addChoices)),
"boolean" != typeof r.renderSelectedChoices &&
(r.renderSelectedChoices =
"always" === r.renderSelectedChoices || u),
(r.closeDropdownOnSelect =
"auto" === r.closeDropdownOnSelect
? l || u || r.singleModeForMultiSelect
: W(r.closeDropdownOnSelect)),
r.placeholder &&
(r.placeholderValue
? (this._hasNonChoicePlaceholder = !0)
: a.dataset.placeholder &&
((this._hasNonChoicePlaceholder = !0),
(r.placeholderValue = a.dataset.placeholder))),
n.addItemFilter && "function" != typeof n.addItemFilter)
) {
var f =
n.addItemFilter instanceof RegExp
? n.addItemFilter
: new RegExp(n.addItemFilter);
r.addItemFilter = f.test.bind(f);
}
if (
((this.passedElement = this._isTextElement
? new q({ element: a, classNames: r.classNames })
: new J({
element: a,
classNames: r.classNames,
template: function (e) {
return s._templates.option(e);
},
extractPlaceholder:
r.placeholder && !this._hasNonChoicePlaceholder,
})),
(this.initialised = !1),
(this._store = new Z(r)),
(this._currentValue = ""),
(r.searchEnabled = (!l && r.searchEnabled) || d),
(this._canSearch = r.searchEnabled),
(this._isScrollingOnIe = !1),
(this._highlightPosition = 0),
(this._wasTap = !0),
(this._placeholderValue = this._generatePlaceholderValue()),
(this._baseId = (function (e) {
var t =
e.id ||
(e.name && "".concat(e.name, "-").concat(w(2))) ||
w(4);
return (
(t = t.replace(/(:|\.|\[|\]|,)/g, "")),
"".concat("choices-", "-").concat(t)
);
})(a)),
(this._direction = a.dir),
!this._direction)
) {
var m = window.getComputedStyle(a).direction;
m !==
window.getComputedStyle(document.documentElement)
.direction && (this._direction = m);
}
if (
((this._idNames = { itemChoice: "item-choice" }),
(this._templates = o.templates),
(this._render = this._render.bind(this)),
(this._onFocus = this._onFocus.bind(this)),
(this._onBlur = this._onBlur.bind(this)),
(this._onKeyUp = this._onKeyUp.bind(this)),
(this._onKeyDown = this._onKeyDown.bind(this)),
(this._onInput = this._onInput.bind(this)),
(this._onClick = this._onClick.bind(this)),
(this._onTouchMove = this._onTouchMove.bind(this)),
(this._onTouchEnd = this._onTouchEnd.bind(this)),
(this._onMouseDown = this._onMouseDown.bind(this)),
(this._onMouseOver = this._onMouseOver.bind(this)),
(this._onFormReset = this._onFormReset.bind(this)),
(this._onSelectKey = this._onSelectKey.bind(this)),
(this._onEnterKey = this._onEnterKey.bind(this)),
(this._onEscapeKey = this._onEscapeKey.bind(this)),
(this._onDirectionKey = this._onDirectionKey.bind(this)),
(this._onDeleteKey = this._onDeleteKey.bind(this)),
this.passedElement.isActive)
)
return (
r.silent ||
console.warn(
"Trying to initialise Choices on element already initialised",
{ element: t }
),
(this.initialised = !0),
void (this.initialisedOK = !1)
);
this.init(),
(this._initialItems = this._store.items.map(function (e) {
return e.value;
}));
}
return (
Object.defineProperty(e, "defaults", {
get: function () {
return Object.preventExtensions({
get options() {
return Ye;
},
get allOptions() {
return X;
},
get templates() {
return Xe;
},
});
},
enumerable: !1,
configurable: !0,
}),
(e.prototype.init = function () {
if (!this.initialised && void 0 === this.initialisedOK) {
(this._searcher = new Ge(this.config)),
this._loadChoices(),
this._createTemplates(),
this._createElements(),
this._createStructure(),
(this._isTextElement && !this.config.addItems) ||
this.passedElement.element.hasAttribute("disabled") ||
this.passedElement.element.closest("fieldset:disabled")
? this.disable()
: (this.enable(), this._addEventListeners()),
this._initStore(),
(this.initialised = !0),
(this.initialisedOK = !0);
var e = this.config.callbackOnInit;
"function" == typeof e && e.call(this);
}
}),
(e.prototype.destroy = function () {
this.initialised &&
(this._removeEventListeners(),
this.passedElement.reveal(),
this.containerOuter.unwrap(this.passedElement.element),
(this._store._listeners = []),
this.clearStore(!1),
this._stopSearch(),
(this._templates = e.defaults.templates),
(this.initialised = !1),
(this.initialisedOK = void 0));
}),
(e.prototype.enable = function () {
return (
this.passedElement.isDisabled &&
this.passedElement.enable(),
this.containerOuter.isDisabled &&
(this._addEventListeners(),
this.input.enable(),
this.containerOuter.enable()),
this
);
}),
(e.prototype.disable = function () {
return (
this.passedElement.isDisabled ||
this.passedElement.disable(),
this.containerOuter.isDisabled ||
(this._removeEventListeners(),
this.input.disable(),
this.containerOuter.disable()),
this
);
}),
(e.prototype.highlightItem = function (e, t) {
if ((void 0 === t && (t = !0), !e || !e.id)) return this;
var i = this._store.items.find(function (t) {
return t.id === e.id;
});
return (
!i ||
i.highlighted ||
(this._store.dispatch(S(i, !0)),
t &&
this.passedElement.triggerEvent(
g,
this._getChoiceForOutput(i)
)),
this
);
}),
(e.prototype.unhighlightItem = function (e, t) {
if ((void 0 === t && (t = !0), !e || !e.id)) return this;
var i = this._store.items.find(function (t) {
return t.id === e.id;
});
return i && i.highlighted
? (this._store.dispatch(S(i, !1)),
t &&
this.passedElement.triggerEvent(
"unhighlightItem",
this._getChoiceForOutput(i)
),
this)
: this;
}),
(e.prototype.highlightAll = function () {
var e = this;
return (
this._store.withTxn(function () {
e._store.items.forEach(function (t) {
t.highlighted ||
(e._store.dispatch(S(t, !0)),
e.passedElement.triggerEvent(
g,
e._getChoiceForOutput(t)
));
});
}),
this
);
}),
(e.prototype.unhighlightAll = function () {
var e = this;
return (
this._store.withTxn(function () {
e._store.items.forEach(function (t) {
t.highlighted &&
(e._store.dispatch(S(t, !1)),
e.passedElement.triggerEvent(
g,
e._getChoiceForOutput(t)
));
});
}),
this
);
}),
(e.prototype.removeActiveItemsByValue = function (e) {
var t = this;
return (
this._store.withTxn(function () {
t._store.items
.filter(function (t) {
return t.value === e;
})
.forEach(function (e) {
return t._removeItem(e);
});
}),
this
);
}),
(e.prototype.removeActiveItems = function (e) {
var t = this;
return (
this._store.withTxn(function () {
t._store.items
.filter(function (t) {
return t.id !== e;
})
.forEach(function (e) {
return t._removeItem(e);
});
}),
this
);
}),
(e.prototype.removeHighlightedItems = function (e) {
var t = this;
return (
void 0 === e && (e = !1),
this._store.withTxn(function () {
t._store.highlightedActiveItems.forEach(function (i) {
t._removeItem(i), e && t._triggerChange(i.value);
});
}),
this
);
}),
(e.prototype.showDropdown = function (e) {
var t = this;
return (
this.dropdown.isActive ||
(void 0 === e && (e = !this._canSearch),
requestAnimationFrame(function () {
t.dropdown.show();
var i = t.dropdown.element.getBoundingClientRect();
t.containerOuter.open(i.bottom, i.height),
e || t.input.focus(),
t.passedElement.triggerEvent("showDropdown");
})),
this
);
}),
(e.prototype.hideDropdown = function (e) {
var t = this;
return this.dropdown.isActive
? (requestAnimationFrame(function () {
t.dropdown.hide(),
t.containerOuter.close(),
!e &&
t._canSearch &&
(t.input.removeActiveDescendant(),
t.input.blur()),
t.passedElement.triggerEvent("hideDropdown");
}),
this)
: this;
}),
(e.prototype.getValue = function (e) {
var t = this,
i = this._store.items.map(function (i) {
return e ? i.value : t._getChoiceForOutput(i);
});
return this._isSelectOneElement ||
this.config.singleModeForMultiSelect
? i[0]
: i;
}),
(e.prototype.setValue = function (e) {
var t = this;
return this.initialisedOK
? (this._store.withTxn(function () {
e.forEach(function (e) {
e && t._addChoice(G(e, !1));
});
}),
this._searcher.reset(),
this)
: (this._warnChoicesInitFailed("setValue"), this);
}),
(e.prototype.setChoiceByValue = function (e) {
var t = this;
return this.initialisedOK
? (this._isTextElement ||
(this._store.withTxn(function () {
(Array.isArray(e) ? e : [e]).forEach(function (
e
) {
return t._findAndSelectChoiceByValue(e);
}),
t.unhighlightAll();
}),
this._searcher.reset()),
this)
: (this._warnChoicesInitFailed("setChoiceByValue"), this);
}),
(e.prototype.setChoices = function (e, t, n, s, o, r) {
var c = this;
if (
(void 0 === e && (e = []),
void 0 === t && (t = "value"),
void 0 === n && (n = "label"),
void 0 === s && (s = !1),
void 0 === o && (o = !0),
void 0 === r && (r = !1),
!this.initialisedOK)
)
return this._warnChoicesInitFailed("setChoices"), this;
if (!this._isSelectElement)
throw new TypeError(
"setChoices can't be used with INPUT based Choices"
);
if ("string" != typeof t || !t)
throw new TypeError(
"value parameter must be a name of 'value' field in passed objects"
);
if ("function" == typeof e) {
var a = e(this);
if ("function" == typeof Promise && a instanceof Promise)
return new Promise(function (e) {
return requestAnimationFrame(e);
})
.then(function () {
return c._handleLoadingState(!0);
})
.then(function () {
return a;
})
.then(function (e) {
return c.setChoices(e, t, n, s, o, r);
})
.catch(function (e) {
c.config.silent || console.error(e);
})
.then(function () {
return c._handleLoadingState(!1);
})
.then(function () {
return c;
});
if (!Array.isArray(a))
throw new TypeError(
".setChoices first argument function must return either array of choices or Promise, got: ".concat(
typeof a
)
);
return this.setChoices(a, t, n, !1);
}
if (!Array.isArray(e))
throw new TypeError(
".setChoices must be called either with array of choices with a function resulting into Promise of array of choices"
);
return (
this.containerOuter.removeLoadingState(),
this._store.withTxn(function () {
o && (c._isSearching = !1), s && c.clearChoices(!0, r);
var a = "value" === t,
h = "label" === n;
e.forEach(function (e) {
if ("choices" in e) {
var s = e;
h || (s = i(i({}, s), { label: s[n] })),
c._addGroup(G(s, !0));
} else {
var o = e;
(h && a) ||
(o = i(i({}, o), {
value: o[t],
label: o[n],
}));
var r = G(o, !1);
c._addChoice(r),
r.placeholder &&
!c._hasNonChoicePlaceholder &&
(c._placeholderValue = M(r.label));
}
}),
c.unhighlightAll();
}),
this._searcher.reset(),
this
);
}),
(e.prototype.refresh = function (e, t, i) {
var n = this;
return (
void 0 === e && (e = !1),
void 0 === t && (t = !1),
void 0 === i && (i = !1),
this._isSelectElement
? (this._store.withTxn(function () {
var s = n.passedElement.optionsAsChoices(),
o = {};
i ||
n._store.items.forEach(function (e) {
e.id &&
e.active &&
e.selected &&
(o[e.value] = !0);
}),
n.clearStore(!1);
var r = function (e) {
i
? n._store.dispatch(C(e))
: o[e.value] && (e.selected = !0);
};
s.forEach(function (e) {
"choices" in e ? e.choices.forEach(r) : r(e);
}),
n._addPredefinedChoices(s, t, e),
n._isSearching &&
n._searchChoices(n.input.value);
}),
this)
: (this.config.silent ||
console.warn(
"refresh method can only be used on choices backed by a