UNPKG

@clubmed/trident-ui

Version:

Shared ClubMed React UI components

91 lines (90 loc) 2.14 kB
"use client"; import { jsx as f } from "react/jsx-runtime"; import { createContext as p, useId as v, useReducer as y, useCallback as u } from "react"; function x(e) { const n = [...e.refs.keys()], o = (n.findIndex((t) => t === e.value) + 1) % n.length; return { ...e, value: n[o] }; } function g(e) { const n = [...e.refs.keys()], o = (n.findIndex((t) => t === e.value) - 1 + n.length) % n.length; return { ...e, value: n[o] }; } function C(e) { const r = [...e.refs.keys()][0]; return { ...e, value: r }; } function k(e) { const n = [...e.refs.keys()], r = n[n.length - 1]; return { ...e, value: r }; } function b(e, n) { const r = new Map(e.refs); return r.delete(n.payload.value), { ...e, refs: r }; } function h(e, n) { return { ...e, ...e.value === -1 && { value: n.payload.value }, refs: new Map(e.refs).set(n.payload.value, n.payload.ref) }; } function w(e, n) { return { ...e, value: n.payload }; } const i = { next: x, previous: g, start: C, end: k, register: h, unregister: b, update: w }; function I(e, n) { if (n.type in i) { const r = i[n.type]; return r(e, n); } return e; } const d = p({ uid: "", value: 0, refs: /* @__PURE__ */ new Map(), dispatch: () => { console.warn("Tab Controller Context dispatch used outside of Provider"); }, register: () => { console.warn("Tab Controller Context register used outside of Provider"); }, unregister: () => { console.warn("Tab Controller Context unregister used outside of Provider"); } }); d.displayName = "TabControlContext"; function P({ selected: e, children: n }) { const r = v(), [o, t] = y(I, { uid: r, value: e || -1, refs: /* @__PURE__ */ new Map() }), l = u((s, c) => { t({ type: "register", payload: { value: s, ref: c } }); }, []), a = u((s) => { t({ type: "unregister", payload: { value: s } }); }, []); return /* @__PURE__ */ f(d.Provider, { value: { ...o, dispatch: t, register: l, unregister: a }, children: n }); } export { d as TabControlContext, P as TabsProvider }; //# sourceMappingURL=TabControl.js.map