import { jsx as g, jsxs as ve, Fragment as Ue } from "react/jsx-runtime";
import { useReducer as wt, useRef as M, useEffect as Z, createContext as Xe, useMemo as ee, useContext as Pe, useState as _, useCallback as R, isValidElement as $t, cloneElement as Kt } from "react";
import { d as It } from "./Header-BQ99pNEi.es.js";
import { $ as Ye, a as Bt, b as Mt, c as At, d as Ft } from "./ListBox-Bp_3E18l.es.js";
import { f as Ot, g as Et } from "./CollectionBuilder-CTjJUDzO.es.js";
import { createSlotRecipeContext as Lt } from "@chakra-ui/react";
import { Close as Tt, KeyboardArrowDown as Vt, Check as Rt } from "@commercetools/nimbus-icons";
import { e as pe } from "./extract-style-props-CMyV-es-.es.js";
import { P as Pt } from "./popover-BLYu6bVv.es.js";
import { I as Je } from "./icon-button-DQaOMIAe.es.js";
import { L as Dt } from "./loading-spinner-BQGkInuH.es.js";
import { $ as Be, a as zt } from "./Input-CXkgRPwc.es.js";
import { $ as De, T as Te } from "./tag-group-DHArWJRl.es.js";
import { useSlotRecipe as Nt } from "@chakra-ui/react/styled-system";
import { b as kt } from "./RSPContexts-DLgb84PF.es.js";
import { $ as Ve } from "./Button-C9AKe3Kt.es.js";
import { $ as Wt, e as Ze } from "./utils-CrjF8U_E.es.js";
import { a as Gt } from "./Group-GVlDKuLP.es.js";
import { $ as qt } from "./Label-BPLFvUwR.es.js";
import { h as jt } from "./Dialog-7Yf08giu.es.js";
import { $ as Ht } from "./Text-DOcU1ycg.es.js";
import { n as xe, u as Ut } from "./normalize-messages-BN9BAFXe.es.js";
import { $ as Jt } from "./useListData-CRIq9XWX.es.js";
import { a as Qe } from "./mergeProps-B-cqsBhL.es.js";
import { a as Qt } from "./useListState-BxWOm_-s.es.js";
function Xt(e, t) {
  let r;
  switch (e.state) {
    case "idle":
    case "error":
      switch (t.type) {
        case "loading":
        case "loadingMore":
        case "sorting":
        case "filtering":
          var s, o;
          return {
            ...e,
            filterText: (s = t.filterText) !== null && s !== void 0 ? s : e.filterText,
            state: t.type,
            // Reset items to an empty list if loading, but not when sorting.
            items: t.type === "loading" ? [] : e.items,
            sortDescriptor: (o = t.sortDescriptor) !== null && o !== void 0 ? o : e.sortDescriptor,
            abortController: t.abortController
          };
        case "update":
          var n;
          return {
            ...e,
            ...(n = t.updater) === null || n === void 0 ? void 0 : n.call(t, e)
          };
        case "success":
        case "error":
          return e;
        default:
          throw new Error(`Invalid action "${t.type}" in state "${e.state}"`);
      }
    case "loading":
    case "sorting":
    case "filtering":
      switch (t.type) {
        case "success":
          if (t.abortController !== e.abortController) return e;
          var c;
          r = (c = t.selectedKeys) !== null && c !== void 0 ? c : e.selectedKeys;
          var l, u, b;
          return {
            ...e,
            filterText: (l = t.filterText) !== null && l !== void 0 ? l : e.filterText,
            state: "idle",
            items: [
              ...(u = t.items) !== null && u !== void 0 ? u : []
            ],
            selectedKeys: r === "all" ? "all" : new Set(r),
            sortDescriptor: (b = t.sortDescriptor) !== null && b !== void 0 ? b : e.sortDescriptor,
            abortController: void 0,
            cursor: t.cursor
          };
        case "error":
          return t.abortController !== e.abortController ? e : {
            ...e,
            state: "error",
            error: t.error,
            abortController: void 0
          };
        case "loading":
        case "loadingMore":
        case "sorting":
        case "filtering":
          var h;
          (h = e.abortController) === null || h === void 0 || h.abort("aborting current load and starting new one");
          var d;
          return {
            ...e,
            filterText: (d = t.filterText) !== null && d !== void 0 ? d : e.filterText,
            state: t.type,
            // Reset items to an empty list if loading, but not when sorting.
            items: t.type === "loading" ? [] : e.items,
            abortController: t.abortController
          };
        case "update":
          var S;
          return {
            ...e,
            ...(S = t.updater) === null || S === void 0 ? void 0 : S.call(t, e)
          };
        default:
          throw new Error(`Invalid action "${t.type}" in state "${e.state}"`);
      }
    case "loadingMore":
      switch (t.type) {
        case "success":
          var m;
          r = e.selectedKeys === "all" || t.selectedKeys === "all" ? "all" : /* @__PURE__ */ new Set([
            ...e.selectedKeys,
            ...(m = t.selectedKeys) !== null && m !== void 0 ? m : []
          ]);
          var K, L;
          return {
            ...e,
            state: "idle",
            items: [
              ...e.items,
              ...(K = t.items) !== null && K !== void 0 ? K : []
            ],
            selectedKeys: r,
            sortDescriptor: (L = t.sortDescriptor) !== null && L !== void 0 ? L : e.sortDescriptor,
            abortController: void 0,
            cursor: t.cursor
          };
        case "error":
          return t.abortController !== e.abortController ? e : {
            ...e,
            state: "error",
            error: t.error
          };
        case "loading":
        case "sorting":
        case "filtering":
          var I;
          (I = e.abortController) === null || I === void 0 || I.abort();
          var y;
          return {
            ...e,
            filterText: (y = t.filterText) !== null && y !== void 0 ? y : e.filterText,
            state: t.type,
            // Reset items to an empty list if loading, but not when sorting.
            items: t.type === "loading" ? [] : e.items,
            abortController: t.abortController
          };
        case "loadingMore":
          var F;
          return (F = t.abortController) === null || F === void 0 || F.abort(), e;
        case "update":
          var w;
          return {
            ...e,
            ...(w = t.updater) === null || w === void 0 ? void 0 : w.call(t, e)
          };
        default:
          throw new Error(`Invalid action "${t.type}" in state "${e.state}"`);
      }
    default:
      throw new Error(`Invalid state "${e.state}"`);
  }
}
function Yt(e) {
  const { load: t, sort: r, initialSelectedKeys: s, initialSortDescriptor: o, getKey: n = (d) => d.id || d.key, initialFilterText: c = "" } = e;
  let [l, u] = wt(Xt, {
    state: "idle",
    error: void 0,
    items: [],
    selectedKeys: s === "all" ? "all" : new Set(s),
    sortDescriptor: o,
    filterText: c
  });
  const b = async (d, S) => {
    let m = new AbortController();
    try {
      u({
        ...d,
        abortController: m
      });
      var K;
      let y = (K = d.filterText) !== null && K !== void 0 ? K : l.filterText;
      var L;
      let F = await S({
        items: l.items.slice(),
        selectedKeys: l.selectedKeys,
        sortDescriptor: (L = d.sortDescriptor) !== null && L !== void 0 ? L : l.sortDescriptor,
        signal: m.signal,
        cursor: d.type === "loadingMore" ? l.cursor : void 0,
        filterText: y,
        loadingState: l.state
      });
      var I;
      let w = (I = F.filterText) !== null && I !== void 0 ? I : y;
      u({
        type: "success",
        ...F,
        abortController: m
      }), w && w !== y && !m.signal.aborted && b({
        type: "filtering",
        filterText: w
      }, t);
    } catch (y) {
      u({
        type: "error",
        error: y,
        abortController: m
      });
    }
  };
  let h = M(!1);
  return Z(() => {
    h.current || (b({
      type: "loading"
    }, t), h.current = !0);
  }, []), {
    items: l.items,
    selectedKeys: l.selectedKeys,
    sortDescriptor: l.sortDescriptor,
    isLoading: l.state === "loading" || l.state === "loadingMore" || l.state === "sorting" || l.state === "filtering",
    loadingState: l.state,
    error: l.error,
    filterText: l.filterText,
    getItem(d) {
      return l.items.find((S) => n(S) === d);
    },
    reload() {
      b({
        type: "loading"
      }, t);
    },
    loadMore() {
      l.state === "loading" || l.state === "loadingMore" || l.state === "filtering" || l.cursor == null || b({
        type: "loadingMore"
      }, t);
    },
    sort(d) {
      b({
        type: "sorting",
        sortDescriptor: d
      }, r || t);
    },
    ...Jt({
      ...e,
      getKey: n,
      cursor: l.cursor
    }, (d) => {
      u({
        type: "update",
        updater: d
      });
    }),
    setFilterText(d) {
      b({
        type: "filtering",
        filterText: d
      }, t);
    }
  };
}
const Zt = /* @__PURE__ */ Xe(null);
function _t(e, t, r, s) {
  var o = this, n = M(null), c = M(0), l = M(0), u = M(null), b = M([]), h = M(), d = M(), S = M(e), m = M(!0), K = M(), L = M();
  S.current = e;
  var I = typeof window < "u", y = !t && t !== 0 && I;
  if (typeof e != "function") throw new TypeError("Expected a function");
  t = +t || 0;
  var F = !!(r = r || {}).leading, w = !("trailing" in r) || !!r.trailing, U = !!r.flushOnExit && w, J = "maxWait" in r, j = "debounceOnServer" in r && !!r.debounceOnServer, Q = J ? Math.max(+r.maxWait || 0, t) : null, le = ee(function() {
    var P = function(x) {
      var O = b.current, D = h.current;
      return b.current = h.current = null, c.current = x, l.current = l.current || x, d.current = S.current.apply(D, O);
    }, X = function(x, O) {
      y && cancelAnimationFrame(u.current), u.current = y ? requestAnimationFrame(x) : setTimeout(x, O);
    }, ie = function(x) {
      if (!m.current) return !1;
      var O = x - n.current;
      return !n.current || O >= t || O < 0 || J && x - c.current >= Q;
    }, ce = function(x) {
      return u.current = null, w && b.current ? P(x) : (b.current = h.current = null, d.current);
    }, A = function x() {
      var O = Date.now();
      if (F && l.current === c.current && ge(), ie(O)) return ce(O);
      if (m.current) {
        var D = t - (O - n.current), H = J ? Math.min(D, Q - (O - c.current)) : D;
        X(x, H);
      }
    }, ge = function() {
    }, te = function() {
      if (I || j) {
        var x, O = Date.now(), D = ie(O);
        if (b.current = [].slice.call(arguments), h.current = o, n.current = O, U && !K.current && (K.current = function() {
          var H;
          ((H = global.document) == null ? void 0 : H.visibilityState) === "hidden" && L.current.flush();
        }, (x = global.document) == null || x.addEventListener == null || x.addEventListener("visibilitychange", K.current)), D) {
          if (!u.current && m.current) return c.current = n.current, X(A, t), F ? P(n.current) : d.current;
          if (J) return X(A, t), P(n.current);
        }
        return u.current || X(A, t), d.current;
      }
    };
    return te.cancel = function() {
      var x = u.current;
      x && (y ? cancelAnimationFrame(u.current) : clearTimeout(u.current)), c.current = 0, b.current = n.current = h.current = u.current = null;
    }, te.isPending = function() {
      return !!u.current;
    }, te.flush = function() {
      return u.current ? ce(Date.now()) : d.current;
    }, te;
  }, [F, J, t, Q, w, U, y, I, j, s]);
  return L.current = le, Z(function() {
    return m.current = !0, function() {
      var P;
      U && L.current.flush(), K.current && ((P = global.document) == null || P.removeEventListener == null || P.removeEventListener("visibilitychange", K.current), K.current = null), m.current = !1;
    };
  }, [U]), le;
}
const { withProvider: er, withContext: q } = /* @__PURE__ */ Lt({
  key: "nimbusCombobox"
}), tr = /* @__PURE__ */ er("div", "root"), rr = /* @__PURE__ */ q("div", "trigger"), or = /* @__PURE__ */ q("div", "leadingElement"), nr = /* @__PURE__ */ q("div", "content"), sr = /* @__PURE__ */ q("div", "tagGroup"), lr = /* @__PURE__ */ q("div", "input"), ir = /* @__PURE__ */ q("div", "popover"), cr = /* @__PURE__ */ q("div", "listBox"), ar = /* @__PURE__ */ q("div", "section"), ur = /* @__PURE__ */ q("div", "option"), dr = /* @__PURE__ */ q("div", "optionIndicator"), fr = /* @__PURE__ */ q("div", "optionContent"), mr = {
  clearSelection: "Clear selection",
  options: "Options menu",
  selectedValues: "Selected values",
  toggleOptions: "Toggle options"
}, pr = {
  clearSelection: "Auswahl löschen",
  options: "Optionsmenü",
  selectedValues: "Ausgewählte Werte",
  toggleOptions: "Optionen anzeigen/ verbergen"
}, gr = {
  clearSelection: "Borrar selección",
  options: "Menú de opciones",
  selectedValues: "Valores seleccionados",
  toggleOptions: "Opciones de conmutación"
}, yr = {
  clearSelection: "Effacer la sélection",
  options: "Menu d'options",
  selectedValues: "Valeurs sélectionnées",
  toggleOptions: "Basculer les options"
}, br = {
  clearSelection: "Limpar seleção",
  options: "Menu de opções",
  selectedValues: "Selecionar valores",
  toggleOptions: "Alternar opções"
}, hr = {
  en: /* @__PURE__ */ xe(mr),
  de: /* @__PURE__ */ xe(pr),
  es: /* @__PURE__ */ xe(gr),
  "fr-FR": /* @__PURE__ */ xe(yr),
  "pt-BR": /* @__PURE__ */ xe(br)
};
function _e(e) {
  if (typeof e == "string" || typeof e == "number")
    return e;
  if ("id" in e)
    return e.id;
  throw new Error(
    "ComboBox - Item must have an 'id' property or provide getKey function"
  );
}
function xr(e) {
  if (typeof e == "string")
    return e;
  if ("name" in e)
    return String(e.name);
  if ("label" in e)
    return String(e.label);
  throw new Error(
    "ComboBox - Item must have 'name' or 'label' property, or provide a getTextValue function"
  );
}
function vr(e) {
  return {
    id: e,
    name: e
  };
}
const Cr = (e) => e ? e instanceof Set ? e : new Set(Array.isArray(e) ? e : [e]) : /* @__PURE__ */ new Set(), Sr = (e) => Array.from(e), Re = /* @__PURE__ */ Xe(null), Me = () => {
  const e = Pe(Re);
  if (!e)
    throw new Error(
      "Nimbus - ComboBox components must be used within ComboBox.Root"
    );
  return e;
}, et = (e) => {
  const {
    name: t,
    form: r,
    selectedKeys: s,
    selectionMode: o,
    formValue: n,
    allowsCustomOptions: c,
    collection: l,
    inputValue: u
  } = e;
  if (!t) return null;
  const b = ee(() => {
    if (o === "single") {
      const h = Array.from(s)[0];
      return h ? n === "text" || c ? Array.from(l).find(
        (S) => S.key === h
      )?.textValue || u || "" : String(h) : "";
    } else {
      const h = Array.from(s);
      return n === "text" || c ? h.map((d) => Array.from(l).find(
        (m) => m.key === d
      )?.textValue || "").filter(Boolean).join(",") : h.join(",");
    }
  }, [
    o,
    s,
    n,
    c,
    l,
    u
  ]);
  return /* @__PURE__ */ g(
    "input",
    {
      type: "hidden",
      name: t,
      form: typeof r == "string" ? r : void 0,
      value: b
    }
  );
};
et.displayName = "ComboBoxHiddenInput";
function tt(e) {
  let t;
  [e, t] = Wt(e, null, Zt);
  const {
    selectionMode: r = "single",
    size: s = "md",
    getKey: o = _e,
    getTextValue: n = xr,
    children: c,
    leadingElement: l,
    inputValue: u,
    onInputChange: b,
    isLoading: h,
    allowsEmptyMenu: d,
    renderEmptyState: S,
    async: m,
    filter: K,
    allowsCustomOptions: L = !1,
    isDisabled: I = !1,
    isInvalid: y = !1,
    isRequired: F = !1,
    isReadOnly: w = !1
  } = e, U = Nt({ key: "nimbusCombobox" }), [J, j] = U.splitVariantProps(e), [Q, le] = pe(j), P = M(null), X = M(null), [ie, ce] = _([]), A = Yt({
    getKey: o,
    async load({ signal: B, filterText: G }) {
      if (!m) return { items: [] };
      const oe = m.minSearchLength ?? 0;
      if (!G || G.length < oe)
        return { items: [] };
      try {
        return { items: await m.load(G, B) };
      } catch (ue) {
        if (ue.name === "AbortError")
          throw ue;
        const v = ue;
        return m.onError?.(v), { items: [] };
      }
    }
  }), [ge, te] = _(u), [x, O] = _(!1), [D, H] = _([]), Ae = m?.debounce ?? 300, Ce = _t((B) => {
    O(!1), A.setFilterText(B);
  }, Ae), Se = R(
    (B) => {
      te(B), O(!0), Ce(B);
    },
    [Ce]
  ), N = m ? ge : u, we = m ? Se : b, Y = m ? x || A.loadingState === "loading" || A.loadingState === "loadingMore" || A.loadingState === "filtering" : h, $e = m || L ? !0 : d, Ke = R(() => Y ? N?.length ? `loading results for "${N}"` : "loading results" : N?.length && m?.minSearchLength && N.length >= m.minSearchLength ? `no results for "${N}"` : m?.minSearchLength ? `enter at least ${m?.minSearchLength} characters` : "type to search", [m?.minSearchLength, Y, N]), Ie = R(() => Y ? N?.length ? `loading results for "${N}"` : "loading results" : 'hit "enter" to create an option', [Y, N]), W = (L ? Ie : m ? Ke : void 0) ?? S, re = ee(() => {
    const B = m ? Array.from(A.items) : e.items, G = B ? Array.from(B) : [], oe = new Set(G.map((E) => o(E)));
    let v = [...ie.filter(
      (E) => !oe.has(o(E))
    ), ...G];
    if (m && r === "multiple" && D.length > 0) {
      const E = new Set(v.map((be) => o(be)));
      v = [...D.filter(
        (be) => !E.has(o(be))
      ), ...v];
    }
    return v;
  }, [
    m,
    A.items,
    e.items,
    ie,
    D,
    r,
    o
  ]), ae = ee(
    () => ({
      selectionMode: r,
      size: s,
      getKey: o,
      getTextValue: n,
      leadingElement: l,
      triggerRef: P,
      inputRef: X,
      isLoading: Y,
      isDisabled: I,
      isRequired: F,
      isInvalid: y,
      isReadOnly: w
    }),
    [
      r,
      o,
      n,
      l,
      P,
      X,
      I,
      F,
      y,
      w
    ]
  ), ye = ee(() => {
    if (re)
      return Array.from(re).map((B) => {
        const G = "id" in B, oe = "textValue" in B;
        return G && oe ? B : {
          ...B,
          ...G ? {} : { id: o(B) },
          ...oe ? {} : { textValue: n(B) }
        };
      });
  }, [re, o, n]), Oe = ee(
    () => /* @__PURE__ */ g(
      Re.Provider,
      {
        value: ae,
        children: /* @__PURE__ */ g(Ye.Provider, { value: { items: ye }, children: typeof c == "function" ? c({
          isOpen: !1,
          isDisabled: I,
          isInvalid: y,
          isRequired: F,
          defaultChildren: null
        }) : c })
      }
    ),
    [
      c,
      I,
      y,
      F,
      ye,
      ae
    ]
  );
  return /* @__PURE__ */ g(
    Ze,
    {
      values: [
        [Ve, {}],
        [Be, {}],
        [De, {}]
      ],
      children: /* @__PURE__ */ g(
        Re.Provider,
        {
          value: ae,
          children: /* @__PURE__ */ g(
            tr,
            {
              ref: t,
              ...J,
              ...Q,
              size: s,
              "data-disabled": I,
              "data-invalid": y,
              "data-required": F,
              "data-readonly": w,
              "data-open": e.isOpen,
              role: "group",
              children: /* @__PURE__ */ g(Ot, { content: Oe, children: (B) => (
                // Pass the built collection to ComboBoxRootInner which handles all behavior
                /* @__PURE__ */ g(
                  wr,
                  {
                    ...le,
                    size: s,
                    filter: K,
                    selectionMode: r,
                    inputValue: N,
                    onInputChange: we,
                    getKey: o,
                    getTextValue: n,
                    allowsEmptyMenu: $e,
                    renderEmptyState: W,
                    isDisabled: I,
                    isRequired: F,
                    isInvalid: y,
                    isReadOnly: w,
                    collection: B,
                    allowsCustomOptions: L,
                    asyncConfig: m,
                    onAsyncSelectedItemsChange: m && r === "multiple" ? H : void 0,
                    onAddCustomItem: ce,
                    onAddAsyncSelectedItem: H
                  }
                )
              ) })
            }
          )
        }
      )
    }
  );
}
tt.displayName = "ComboBox.Root";
const wr = (e) => {
  const t = Ut(hr), {
    selectionMode: r = "single",
    items: s,
    collection: o,
    getKey: n = _e,
    children: c,
    selectedKeys: l = [],
    onSelectionChange: u,
    disabledKeys: b,
    inputValue: h = "",
    onInputChange: d,
    filter: S,
    placeholder: m,
    menuTrigger: K = "input",
    shouldCloseOnBlur: L = !0,
    shouldCloseOnSelect: I = !0,
    isOpen: y,
    defaultOpen: F = !1,
    onOpenChange: w,
    allowsEmptyMenu: U = !1,
    renderEmptyState: J,
    allowsCustomOptions: j = !1,
    isValidNewOption: Q,
    getNewOptionData: le = vr,
    onCreateOption: P,
    "aria-label": X,
    "aria-labelledby": ie,
    "aria-describedby": ce,
    isDisabled: A = !1,
    isRequired: ge = !1,
    isInvalid: te = !1,
    isReadOnly: x = !1,
    shouldFocusWrap: O = !0,
    autoFocus: D = !1,
    name: H,
    formValue: Ae,
    validationBehavior: Ce = "aria",
    form: Se,
    validate: N,
    isLoading: we,
    asyncConfig: Y,
    onAsyncSelectedItemsChange: $e,
    onAddCustomItem: Ke,
    onAddAsyncSelectedItem: Ie
  } = e, { triggerRef: Fe, inputRef: W } = Me(), re = Qe(), ae = Qe(), ye = M(null), Oe = M(null), B = ee(
    () => Cr(l),
    [l]
  ), G = !!u, [oe, ue] = _(
    B
  ), v = G ? B : oe, E = d !== void 0, ze = () => {
    if (h) return h;
    if (E || r !== "single") return "";
    const i = Array.from(v);
    if (i.length === 0) return "";
    const a = i[0];
    return o.getItem(a)?.textValue ?? "";
  }, [be, de] = _(
    ze
  ), V = E ? h : be, ne = M(V), [ut, Ne] = _(F), C = y ?? ut, [Ee, he] = _(
    null
  ), T = R(
    (i) => {
      y === void 0 && Ne(i), w?.(i);
    },
    [y, w]
  ), dt = ee(() => {
    if (V.trim() === "")
      return o;
    if (r === "single") {
      const a = Array.from(v);
      if (a.length > 0) {
        const f = a[0];
        if (o.getItem(f)?.textValue === V)
          return o;
      }
    }
    if (S) {
      const a = Array.from(o), f = Array.from(S(a, V)), $ = new Set(f.map((se) => se.key));
      return o.filter?.((se, Le) => $.has(Le.key)) ?? o;
    }
    const i = V.toLowerCase();
    return o.filter?.((a) => a.toLowerCase().includes(i)) ?? o;
  }, [o, V, S, r, v]), ft = ee(
    () => r === "multiple" ? Array.from(v).map((i) => o.getItem(i)?.value).filter((i) => i !== void 0) : [],
    [r, v, o]
  ), [mt, pt] = _(null), gt = R(() => {
    const i = y === void 0 ? !C : !y;
    y === void 0 ? Ne((a) => !a) : w?.(!y), i && (W.current?.focus(), he("first"));
  }, [y, C, w]), yt = R(
    (i) => {
      E || de(i), d?.(i), K === "input" && i !== ne.current && T(!0), ne.current = i;
    },
    [E, d, K, T]
  ), z = R(
    (i, a) => {
      let f = i === "all" ? new Set(Array.from(o).map((k) => k.key)) : i;
      const $ = a ?? v, se = f.size > 0 && Array.from(f).every((k) => $.has(k)) && f.size < $.size;
      if (r === "multiple" && f.size === 1 && !se) {
        const k = Array.from(f)[0], me = $.has(k), fe = new Set($);
        me ? fe.delete(k) : fe.add(k), f = fe;
      }
      const Le = Sr(f);
      if (u ? u(Le) : ue(f), Y && r === "multiple" && $e) {
        const k = Array.from(f).map((me) => o.getItem(me)?.value).filter((me) => me !== void 0);
        $e(k);
      }
      if (r === "single") {
        const k = Array.from(f)[0];
        if (k !== null) {
          const fe = o.getItem(k)?.textValue ?? "";
          E || (de(fe), ne.current = fe), d?.(fe);
        }
        I && T(!1);
      }
    },
    [
      o,
      r,
      v,
      u,
      d,
      I,
      T,
      E
    ]
  ), p = Qt({
    selectionMode: r,
    collection: dt,
    selectedKeys: v,
    onSelectionChange: z,
    disabledKeys: b
  }), bt = R(() => {
    z(/* @__PURE__ */ new Set()), E || (de(""), ne.current = ""), d?.(""), T(!0), requestAnimationFrame(() => {
      W.current?.focus();
    });
  }, [
    z,
    E,
    d,
    T,
    W
  ]), ke = R(
    (i) => {
      Ke?.(($) => [...$, i]), Y && r === "multiple" && Ie?.(($) => [...$, i]);
      const a = n(i), f = v;
      if (r === "single")
        z(/* @__PURE__ */ new Set([a]), f);
      else {
        const $ = new Set(f);
        $.add(a), z($, f);
      }
    },
    [
      Ke,
      Y,
      r,
      Ie,
      n,
      v,
      z
    ]
  ), We = R(() => {
    if (!j) return !1;
    const i = V.trim();
    if (!i || Array.from(o).some(
      ($) => $.textValue?.toLowerCase() === i.toLowerCase()
    ) || Q && !Q(i))
      return !1;
    const f = le(i);
    return ke(f), r === "multiple" ? (E || (de(""), ne.current = ""), d?.("")) : (E || (de(i), ne.current = i), d?.(i)), P?.(f), !0;
  }, [
    j,
    le,
    Q,
    V,
    o,
    r,
    d,
    P,
    ke,
    E,
    de,
    ne
  ]), ht = R(
    (i) => {
      if (A || x) return;
      const a = v, f = new Set(a);
      i.forEach(($) => f.delete($)), z(f, a), f.size === 0 && W.current?.focus();
    },
    [v, z, A, x]
  ), xt = R(
    (i) => {
      switch (i.key) {
        case "ArrowDown":
          if (i.preventDefault(), !C)
            T(!0), he("first");
          else {
            const a = p.selectionManager.focusedKey, f = a ? p.collection.getKeyAfter(a) : p.collection.getFirstKey();
            p.selectionManager.setFocusedKey(
              f ?? p.collection.getFirstKey()
            );
          }
          break;
        case "ArrowUp":
          if (i.preventDefault(), !C)
            T(!0), he("last");
          else {
            const a = p.selectionManager.focusedKey, f = a ? p.collection.getKeyBefore(a) : p.collection.getLastKey();
            p.selectionManager.setFocusedKey(
              f ?? p.collection.getLastKey()
            );
          }
          break;
        case "Enter":
          if (C && p.selectionManager.focusedKey) {
            i.preventDefault();
            const a = p.selectionManager.focusedKey;
            if (r === "multiple") {
              const f = new Set(v);
              f.has(a) ? f.delete(a) : f.add(a), z(f);
            } else
              z(/* @__PURE__ */ new Set([a])), p.selectionManager.setFocusedKey(null);
          } else C && !p.selectionManager.focusedKey && j && We() && i.preventDefault();
          break;
        case "Escape":
          C && (i.preventDefault(), T(!1), p.selectionManager.setFocusedKey(null));
          break;
        case "Home":
          if (C) {
            i.preventDefault();
            const a = p.collection.getFirstKey();
            p.selectionManager.setFocusedKey(a);
          }
          break;
        case "End":
          if (C) {
            i.preventDefault();
            const a = p.collection.getLastKey();
            p.selectionManager.setFocusedKey(a);
          }
          break;
        case "Backspace":
          if (V === "") {
            const a = Array.from(v);
            if (a.length > 0)
              if (i.preventDefault(), r === "single")
                z(/* @__PURE__ */ new Set());
              else {
                const f = new Set(a);
                f.delete(a[a.length - 1]), z(f);
              }
          }
          break;
      }
    },
    [
      C,
      p.selectionManager,
      p.collection,
      z,
      T,
      he,
      r,
      V,
      v,
      j,
      We
    ]
  ), vt = R(() => {
    K === "focus" && !A && !x && T(!0), r === "single" && V && W.current && W.current.select();
  }, [
    K,
    A,
    x,
    T,
    r,
    V
  ]), Ct = R(
    (i) => {
      if (!L) return;
      const a = i.currentTarget;
      setTimeout(() => {
        const f = document.activeElement;
        a.contains(f) || T(!1);
      }, 150);
    },
    [L, T]
  ), Ge = M(null), qe = M(!1);
  Z(() => {
    D && W.current && !A && W.current.focus();
  }, [D, A]);
  const je = M(C);
  Z(() => {
    y === void 0 && je.current !== C && (je.current = C, w?.(C));
  }, [C, y, w]), Z(() => {
    if (r !== "single") return;
    const i = Array.from(p.selectionManager.selectedKeys), a = i.length > 0 ? i[0] : null, f = a !== null ? p.collection.getItem(a) : null, $ = f !== null;
    if (a === Ge.current && (qe.current || a === null) || (Ge.current = a, qe.current = $, a !== null && !f))
      return;
    const se = f?.textValue ?? "";
    E ? d?.(se) : (de(se), ne.current = se);
  }, [
    r,
    p.selectionManager.selectedKeys,
    p.collection,
    E,
    d
  ]), Z(() => {
    if (C && Ee) {
      const i = Ee === "first" ? p.collection.getFirstKey() : p.collection.getLastKey();
      p.selectionManager.setFocusedKey(i ?? null), he(null);
    }
  }, [C, Ee, p.collection, p.selectionManager]), Z(() => {
    C ? p.selectionManager.setFocused(!0) : (p.selectionManager.setFocused(!1), p.selectionManager.setFocusedKey(null));
  }, [C, p.selectionManager]);
  const He = M(!1);
  p.collection.size > 0 && (He.current = !0), Z(() => {
    if (!C || U || we || !He.current) return;
    p.collection.size > 0 || T(!1);
  }, [
    C,
    U,
    we,
    p.collection.size,
    T,
    V
  ]), Z(() => {
    const i = Fe.current;
    if (!i) return;
    const a = () => {
      const $ = i.offsetWidth;
      pt(`${$}px`);
    };
    a();
    const f = new ResizeObserver(a);
    return f.observe(i), () => {
      f.disconnect();
    };
  }, []);
  const St = [
    // InputContext: Props for ComboBox.Input component
    // Configures the input field with ARIA attributes, event handlers, and validation
    [
      Be,
      {
        ref: W,
        role: "combobox",
        // ARIA role for autocomplete input
        "aria-autocomplete": "list",
        // Indicates suggestions are in a list
        "aria-controls": r === "multiple" ? `${ae} ${re}` : re,
        // Single-select: controls only listbox
        "aria-expanded": C,
        // Announces menu open/closed state
        "aria-activedescendant": p.selectionManager.focusedKey ? `${re}-option-${p.selectionManager.focusedKey}` : void 0,
        "aria-describedby": r === "multiple" ? `${ae} ${ce ?? ""}` : ce,
        "aria-label": X,
        "aria-labelledby": ie,
        value: V,
        onChange: (i) => yt(i.target.value),
        onKeyDown: xt,
        onFocus: vt,
        onBlur: Ct,
        disabled: A,
        readOnly: x,
        required: ge,
        "aria-invalid": te,
        placeholder: m,
        name: H,
        form: Se,
        validationbehavior: Ce,
        validate: N
      }
    ],
    // TagGroupContext: Props for ComboBox.TagGroup component (multi-select only)
    // Renders selected items as removable tags
    [
      De,
      {
        id: ae,
        "aria-label": t.format("selectedValues"),
        items: ft,
        // Selected items to display as tags
        onRemove: ht
        // Handle tag removal
      }
    ],
    // ButtonContext: Props for toggle and clear buttons
    // Uses "slots" pattern to configure multiple buttons via single context
    [
      Ve,
      {
        slots: {
          toggle: {
            onPress: gt,
            "aria-label": t.format("toggleOptions"),
            isDisabled: A || x,
            isPressed: C
            // Visual indicator that menu is open
          },
          clear: {
            onPress: bt,
            "aria-label": t.format("clearSelection"),
            style: v.size > 0 ? void 0 : { display: "none" },
            isDisabled: A || x || p.selectionManager.selectedKeys.size === 0
            // Disabled when nothing selected
          }
        }
      }
    ],
    // PopoverContext: Props for ComboBox.Popover component
    // Controls menu positioning, portal rendering, and open/close behavior
    [
      jt,
      {
        isOpen: C,
        // Allow React Aria to close the popover (e.g., on scroll, click outside)
        // but we still control opening via toggleOpen/setIsOpen
        onOpenChange: (i) => {
          i || T(!1);
        },
        ref: Oe,
        triggerRef: Fe,
        // Popover positions relative to this element
        scrollRef: ye,
        // Enables scroll-into-view for keyboard navigation
        isNonModal: !0,
        // Non-modal: doesn't trap focus, allows interaction outside
        trigger: "ComboBox",
        // Identifies this as a combobox popover (not tooltip, dialog, etc.)
        placement: "bottom start",
        // Default placement below trigger, aligned to start
        style: {
          "--nimbus-combobox-trigger-width": mt
        },
        // CSS custom property for menu width
        clearContexts: [
          // Clear these contexts so popover content doesn't inherit combobox contexts
          qt,
          Ve,
          Be,
          Gt,
          Ht
        ]
      }
    ],
    // SelectableCollectionContext: Enables virtual focus for keyboard navigation
    // Virtual focus uses aria-activedescendant instead of moving browser focus
    [kt, { shouldUseVirtualFocus: !0 }],
    // ListBoxContext: Props for ComboBox.ListBox component
    // Configures the option list with items, ARIA attributes, and behaviors
    [
      Ye,
      {
        items: s,
        // Items to render (merged from outer component)
        id: re,
        // ID referenced by aria-controls on input
        ref: ye,
        // Ref for scroll positioning
        renderEmptyState: J,
        // Custom empty state renderer
        shouldFocusWrap: O,
        // Whether to wrap focus from last to first item
        "aria-label": t.format("options")
      }
    ],
    // ListStateContext: React Aria's collection state for managing selection and focus
    [Bt, p]
  ];
  return /* @__PURE__ */ ve(
    Ze,
    {
      values: St,
      children: [
        /* @__PURE__ */ g(
          et,
          {
            name: H,
            form: Se,
            selectedKeys: v,
            selectionMode: r,
            formValue: Ae,
            allowsCustomOptions: j,
            collection: p.collection,
            inputValue: V
          }
        ),
        c
      ]
    }
  );
}, rt = (e) => {
  const [t, r] = pe(e), s = Pe(Be), { inputRef: o } = Me();
  let n = "", c = "";
  s && typeof s == "object" && "value" in s && (n = s.value || "", c = s.placeholder || "");
  const l = Math.max(n.length || c.length || 1, 1);
  return /* @__PURE__ */ g(lr, { asChild: !0, ...t, children: /* @__PURE__ */ g(
    zt,
    {
      ref: o,
      ...r,
      size: l,
      "data-empty": !(n.length || c.length)
    }
  ) });
};
rt.displayName = "ComboBox.Input";
const $r = ({
  children: e
}) => /* @__PURE__ */ g(or, { children: e }), ot = (e) => {
  const { selectionMode: t, size: r, getKey: s, getTextValue: o, isDisabled: n, isReadOnly: c } = Me(), [l, u] = pe(e), b = Pe(De), h = (b && "items" in b ? b.items : void 0) ?? [];
  return t !== "multiple" ? null : /* @__PURE__ */ g(sr, { ...l, ...u, asChild: !0, children: /* @__PURE__ */ g(Te.Root, { size: r, children: /* @__PURE__ */ g(Te.TagList, { items: h, display: "contents", children: (d) => {
    const S = s(d), m = o(d);
    return /* @__PURE__ */ g(
      Te.Tag,
      {
        id: S,
        textValue: m,
        isDisabled: n || c,
        maxW: "100%",
        children: m
      }
    );
  } }) }) });
};
ot.displayName = "ComboBox.TagGroup";
const nt = ({
  children: e,
  ...t
}) => {
  const { triggerRef: r, leadingElement: s, inputRef: o, isLoading: n, isDisabled: c } = Me();
  return /* @__PURE__ */ ve(rr, { ref: r, onClick: (u) => {
    !c && u.target instanceof HTMLElement && !u.target.closest("button") && o.current?.focus();
  }, ...t, children: [
    s && /* @__PURE__ */ g($r, { children: s }),
    /* @__PURE__ */ ve(nr, { children: [
      /* @__PURE__ */ g(ot, {}),
      /* @__PURE__ */ g(rt, {})
    ] }),
    /* @__PURE__ */ g(
      Je,
      {
        slot: "clear",
        size: "2xs",
        variant: "ghost",
        colorPalette: "primary",
        children: /* @__PURE__ */ g(Tt, {})
      }
    ),
    /* @__PURE__ */ g(
      Je,
      {
        slot: "toggle",
        size: "2xs",
        variant: "ghost",
        colorPalette: "neutral",
        excludeFromTabOrder: !0,
        children: n ? /* @__PURE__ */ g(Dt, { size: "xs", margin: "50" }) : /* @__PURE__ */ g(Vt, {})
      }
    ),
    e
  ] });
};
nt.displayName = "ComboBox.Trigger";
const st = ({
  children: e,
  ref: t,
  ...r
}) => {
  const [s, o] = pe(r);
  return /* @__PURE__ */ g(ir, { asChild: !0, ...s, children: /* @__PURE__ */ g(
    Pt,
    {
      ref: t,
      isNonModal: !0,
      autoFocus: !0,
      ...o,
      children: e
    }
  ) });
};
st.displayName = "ComboBox.Popover";
function lt({
  children: e,
  ref: t,
  ...r
}) {
  const [s, o] = pe(r);
  return /* @__PURE__ */ g(cr, { ...s, ref: t, asChild: !0, children: /* @__PURE__ */ g(Mt, { ...o, children: typeof e == "function" ? (c) => {
    const l = e(c), u = c;
    return $t(l) && (u.id || u.textValue) ? Kt(
      l,
      {
        ...l.props,
        ...u.id ? { id: u.id } : {},
        ...u.textValue ? { textValue: u.textValue } : {}
      }
    ) : l;
  } : e }) });
}
lt.displayName = "ComboBox.ListBox";
function it({
  children: e,
  ref: t,
  ...r
}) {
  const [s, o] = pe(r);
  return /* @__PURE__ */ g(ur, { ...s, asChild: !0, children: /* @__PURE__ */ g(At, { ref: t, ...o, children: (n) => {
    const c = typeof e == "function" ? e({
      ...n
    }) : e;
    return n.selectionMode === "multiple" ? /* @__PURE__ */ ve(Ue, { children: [
      /* @__PURE__ */ g(dr, { children: /* @__PURE__ */ g("span", { "data-selected": n.isSelected, children: n.isSelected && /* @__PURE__ */ g(Rt, {}) }) }),
      /* @__PURE__ */ g(fr, { children: c })
    ] }) : /* @__PURE__ */ g(Ue, { children: c });
  } }) });
}
it.displayName = "ComboBox.Option";
function ct({
  children: e,
  label: t,
  items: r,
  ref: s,
  ...o
}) {
  if (r && typeof e != "function")
    throw new Error(
      'ComboBox.Section: When "items" is provided, "children" must be a function'
    );
  return /* @__PURE__ */ ve(Ft, { ref: s, ...o, children: [
    t && /* @__PURE__ */ g(ar, { asChild: !0, children: /* @__PURE__ */ g(It, { children: t }) }),
    r ? /* @__PURE__ */ g(Et, { items: r, children: (n) => typeof e == "function" ? e(n) : null }) : e
  ] });
}
ct.displayName = "ComboBox.Section";
function at(e, t) {
  if (!t.trim()) return e;
  const r = t.toLowerCase(), s = [];
  for (const o of e)
    o.textValue.toLowerCase().includes(r) && s.push(o);
  return s;
}
function Kr(e, t) {
  if (!t.trim()) return e;
  const r = t.toLowerCase(), s = [];
  for (const o of e)
    o.textValue.toLowerCase().startsWith(r) && s.push(o);
  return s;
}
function Ir(e, t) {
  if (!t.trim()) return e;
  const r = [];
  for (const s of e)
    s.textValue.includes(t) && r.push(s);
  return r;
}
function Br(e, t) {
  if (!t.trim()) return e;
  const r = t.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"), s = new RegExp(`\\b${r}`, "i"), o = [];
  for (const n of e)
    s.test(n.textValue) && o.push(n);
  return o;
}
function Mr(e, t) {
  if (!t.trim()) return e;
  const r = t.toLowerCase(), s = [];
  for (const o of e) {
    const n = o.textValue.toLowerCase();
    let c = 0;
    for (let l = 0; l < n.length && c < r.length; l++)
      n[l] === r[c] && c++;
    c === r.length && s.push(o);
  }
  return s;
}
function Ar(e) {
  return (t, r) => {
    if (!r.trim()) return t;
    const s = r.toLowerCase(), o = [];
    for (const n of t) {
      const c = n.value;
      if (!c) continue;
      e.some((u) => {
        const b = u.split(".").reduce((d, S) => d && typeof d == "object" ? d[S] : void 0, c);
        return b == null ? !1 : String(b).toLowerCase().includes(s);
      }) && o.push(n);
    }
    return o;
  };
}
function Fr(e) {
  return (t, r) => {
    if (!r.trim()) return t;
    const s = [];
    for (const o of t) {
      const n = e(o, r);
      n > 0 && s.push({ node: o, score: n });
    }
    return s.sort((o, n) => n.score - o.score), s.map((o) => o.node);
  };
}
function Or(e = at) {
  return (t, r) => {
    if (!r.trim()) return t;
    const s = r.split(/\s+/).filter((c) => c.length > 0);
    if (s.length === 0) return t;
    const o = /* @__PURE__ */ new Set();
    for (const c of s) {
      const l = e(t, c);
      for (const u of l)
        o.add(u.key);
    }
    const n = [];
    for (const c of t)
      o.has(c.key) && n.push(c);
    return n;
  };
}
function Er(e) {
  return (t, r) => {
    if (!r.trim()) return t;
    const s = [];
    let o = null;
    const n = [], c = () => {
      o && n.length > 0 && (s.push(o), s.push(...n)), n.length = 0;
    };
    for (const l of t)
      if (l.type === "section")
        c(), o = l;
      else {
        const u = Array.from(e([l], r));
        u.length > 0 && n.push(...u);
      }
    return c(), s;
  };
}
const no = {
  /**
   * # ComboBox.Root
   *
   * The root component that provides state management and context for the combobox.
   * Handles selection state, input filtering, popover open/close, and keyboard navigation.
   *
   * @example
   * ```tsx
   * <ComboBox.Root items={items}>
   *   <ComboBox.Trigger />
   *   <ComboBox.Popover>
   *     <ComboBox.ListBox>
   *       {(item) => <ComboBox.Option>{item.name}</ComboBox.Option>}
   *     </ComboBox.ListBox>
   *   </ComboBox.Popover>
   * </ComboBox.Root>
   * ```
   */
  Root: tt,
  /**
   * # ComboBox.Trigger
   *
   * The trigger element that contains the input field and controls for the combobox.
   * Automatically renders tag group (multi-select), input field, toggle button, and clear button.
   *
   * @example
   * ```tsx
   * <ComboBox.Root items={items}>
   *   <ComboBox.Trigger />
   *   <ComboBox.Popover>...</ComboBox.Popover>
   * </ComboBox.Root>
   * ```
   */
  Trigger: nt,
  /**
   * # ComboBox.Popover
   *
   * The popover container that displays the dropdown options list.
   * Renders in a React portal and handles positioning relative to the trigger.
   *
   * @example
   * ```tsx
   * <ComboBox.Popover>
   *   <ComboBox.ListBox>
   *     {(item) => <ComboBox.Option>{item.name}</ComboBox.Option>}
   *   </ComboBox.ListBox>
   * </ComboBox.Popover>
   * ```
   */
  Popover: st,
  /**
   * # ComboBox.ListBox
   *
   * The container for dropdown options that displays filtered results.
   *
   * Use the render prop pattern - do **NOT** manually map over items as this is less performant.
   *
   * @example
   * ```tsx
   * <ComboBox.ListBox>
   *   {(item) => <ComboBox.Option>{item.name}</ComboBox.Option>}
   * </ComboBox.ListBox>
   * ```
   */
  ListBox: lt,
  /**
   * # ComboBox.Option
   *
   * An individual selectable option within the listbox.
   * Displays a checkmark indicator for selected items in multi-select mode.
   *
   * @example
   * ```tsx
   * <ComboBox.Option>Option text</ComboBox.Option>
   * ```
   *
   * @example Render prop pattern
   * ```tsx
   * <ComboBox.Option>
   *   {({ isSelected }) => (
   *     <span>Option 1 {isSelected && "✓"}</span>
   *   )}
   * </ComboBox.Option>
   * ```
   */
  Option: it,
  /**
   * # ComboBox.Section
   *
   * Groups related options together with an optional heading.
   * Supports render prop pattern for dynamic option rendering within sections.
   *
   * @example
   * ```tsx
   * <ComboBox.Section label="Category Name">
   *   <ComboBox.Option id="opt-1">Option 1</ComboBox.Option>
   *   <ComboBox.Option id="opt-2">Option 2</ComboBox.Option>
   * </ComboBox.Section>
   * ```
   *
   * @example Render prop pattern
   * ```tsx
   * <ComboBox.Section items={categoryItems}>
   *   {(item) => <ComboBox.Option>{item.name}</ComboBox.Option>}
   * </ComboBox.Section>
   * ```
   */
  Section: ct,
  /**
   * # ComboBox.filters
   *
   * Built-in filter functions and utilities for customizing ComboBox filtering behavior.
   * These filters can be passed to the `filter` prop on ComboBox.Root to control how options are filtered based on user input.
   *
   * **Available Filters:**
   * - `filterByText`: Default substring matching (case-insensitive)
   * - `filterByStartsWith`: Prefix matching
   * - `filterByCaseSensitive`: Exact case substring matching
   * - `filterByWordBoundary`: Word boundary matching
   * - `filterByFuzzy`: Fuzzy matching (characters in order)
   * - `createMultiPropertyFilter`: Search across multiple object properties
   * - `createRankedFilter`: Custom scoring/ranking logic
   * - `createMultiTermFilter`: OR logic for multiple search terms
   * - `createSectionAwareFilter`: Preserves section structure while filtering
   *
   * @example Basic filter usage
   * ```tsx
   * import { ComboBox } from '@commercetools/nimbus';
   *
   * function MyComponent() {
   *   return (
   *     <ComboBox.Root
   *       items={items}
   *       filter={ComboBox.filters.filterByStartsWith}
   *     >
   *       <ComboBox.Trigger />
   *       <ComboBox.Popover>
   *         <ComboBox.ListBox>
   *           {(item) => <ComboBox.Option>{item.name}</ComboBox.Option>}
   *         </ComboBox.ListBox>
   *       </ComboBox.Popover>
   *     </ComboBox.Root>
   *   );
   * }
   * ```
   *
   * @example Multi-property search
   * ```tsx
   * const productFilter = ComboBox.filters.createMultiPropertyFilter<Product>([
   *   'name',
   *   'category',
   *   'description'
   * ]);
   *
   * function ProductSearch() {
   *   return (
   *     <ComboBox.Root items={products} filter={productFilter}>
   *       <ComboBox.Trigger />
   *       <ComboBox.Popover>
   *         <ComboBox.ListBox>
   *           {(item) => <ComboBox.Option>{item.name}</ComboBox.Option>}
   *         </ComboBox.ListBox>
   *       </ComboBox.Popover>
   *     </ComboBox.Root>
   *   );
   * }
   * ```
   *
   * @example Section-aware filtering
   * ```tsx
   * const sectionFilter = ComboBox.filters.createSectionAwareFilter(
   *   ComboBox.filters.filterByFuzzy
   * );
   *
   * function SectionedSearch() {
   *   return (
   *     <ComboBox.Root items={sectionsWithItems} filter={sectionFilter}>
   *       <ComboBox.Trigger />
   *       <ComboBox.Popover>
   *         <ComboBox.ListBox>
   *           {(section) => (
   *             <ComboBox.Section>
   *               {(item) => <ComboBox.Option>{item.name}</ComboBox.Option>}
   *             </ComboBox.Section>
   *           )}
   *         </ComboBox.ListBox>
   *       </ComboBox.Popover>
   *     </ComboBox.Root>
   *   );
   * }
   * ```
   */
  filters: {
    filterByText: at,
    filterByStartsWith: Kr,
    filterByCaseSensitive: Ir,
    filterByWordBoundary: Br,
    filterByFuzzy: Mr,
    createMultiPropertyFilter: Ar,
    createRankedFilter: Fr,
    createMultiTermFilter: Or,
    createSectionAwareFilter: Er
  }
};
export {
  no as C
};
//# sourceMappingURL=combobox-AL2qS_XE.es.js.map
