tokentracker-cli 0.47.3 → 0.48.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/dashboard/dist/assets/{ActivityHeatmap-DNXs3lKI.js → ActivityHeatmap-BW7r63JV.js} +1 -1
  2. package/dashboard/dist/assets/{Card-DH3Er6A7.js → Card-BWgji0yz.js} +1 -1
  3. package/dashboard/dist/assets/{DashboardPage-BwObNlNQ.js → DashboardPage-fwmRrxV3.js} +1 -1
  4. package/dashboard/dist/assets/{DevicePage-C8TbfrgM.js → DevicePage-rxxuM-iC.js} +1 -1
  5. package/dashboard/dist/assets/{DialogTitle-BN06NuBQ.js → DialogTitle-ltZ7viR5.js} +1 -1
  6. package/dashboard/dist/assets/{FadeIn-BGQdmOIT.js → FadeIn-DkGtOY3l.js} +1 -1
  7. package/dashboard/dist/assets/{HeaderGithubStar-DF-zHHNK.js → HeaderGithubStar-CUKVYH9j.js} +1 -1
  8. package/dashboard/dist/assets/{IpCheckPage-CgPFKRRL.js → IpCheckPage-DqrupqCq.js} +1 -1
  9. package/dashboard/dist/assets/{LandingPage-B9OiRAGX.js → LandingPage-Y2ovBPVG.js} +1 -1
  10. package/dashboard/dist/assets/{LeaderboardAvatar-CrulAkZy.js → LeaderboardAvatar-DSGfEE93.js} +1 -1
  11. package/dashboard/dist/assets/{LeaderboardPage-pLMt5N8v.js → LeaderboardPage-BX4cvtg7.js} +3 -3
  12. package/dashboard/dist/assets/{LeaderboardProfileModal-trFYROeI.js → LeaderboardProfileModal-CJfefuSR.js} +1 -1
  13. package/dashboard/dist/assets/{LeaderboardProfilePage-XQ5aGbP1.js → LeaderboardProfilePage-Xy0K-ppJ.js} +1 -1
  14. package/dashboard/dist/assets/LimitsPage-utdNxAg_.js +2 -0
  15. package/dashboard/dist/assets/{LocalOnlyNotice-BGFFlM7g.js → LocalOnlyNotice-CwGk0Fn3.js} +1 -1
  16. package/dashboard/dist/assets/{LoginPage-0FLg6Gtf.js → LoginPage-BHlX2ZHJ.js} +1 -1
  17. package/dashboard/dist/assets/{PopoverPopup-ClduWm0G.js → PopoverPopup-BC4rHujH.js} +1 -1
  18. package/dashboard/dist/assets/{Select-yOe-loKw.js → Select-BpDJKpfl.js} +1 -1
  19. package/dashboard/dist/assets/{SelectItemText-_4uFhB_8.js → SelectItemText-D1_H3hHS.js} +1 -1
  20. package/dashboard/dist/assets/{SettingsPage-mndeQq_K.js → SettingsPage-DCVw-3Cv.js} +1 -1
  21. package/dashboard/dist/assets/{SkillsPage-C0NHenLh.js → SkillsPage-B-9_Ufpw.js} +1 -1
  22. package/dashboard/dist/assets/{WidgetsPage-X0PwMFCK.js → WidgetsPage-DJ4i97QU.js} +1 -1
  23. package/dashboard/dist/assets/{WrappedPage-Cytzx6OI.js → WrappedPage-W8pPcYr2.js} +1 -1
  24. package/dashboard/dist/assets/{agent-logos-CzYpdOy_.js → agent-logos-yJi-7lhN.js} +1 -1
  25. package/dashboard/dist/assets/{arrow-up-right-CE98MOft.js → arrow-up-right-BXhFthH9.js} +1 -1
  26. package/dashboard/dist/assets/{download-DwKe306W.js → download-D32KO7Ua.js} +1 -1
  27. package/dashboard/dist/assets/{info-_hRvsmjv.js → info-C8QLdyUg.js} +1 -1
  28. package/dashboard/dist/assets/{main-BO2Z3JNm.js → main-BmTIgbZL.js} +2 -2
  29. package/dashboard/dist/assets/use-limits-display-prefs-DcmWcNeA.js +1 -0
  30. package/dashboard/dist/assets/{use-native-settings-D40wCPJV.js → use-native-settings-BLZi1heD.js} +1 -1
  31. package/dashboard/dist/assets/{use-usage-limits-BhXhFRP0.js → use-usage-limits-BIJk3Nmb.js} +1 -1
  32. package/dashboard/dist/assets/{useCurrency-CZqPmMxC.js → useCurrency-ERbWumqM.js} +1 -1
  33. package/dashboard/dist/assets/{useScrollLock-D-_sDVky.js → useScrollLock-PJWfD6AS.js} +1 -1
  34. package/dashboard/dist/index.html +1 -1
  35. package/dashboard/dist/share.html +1 -1
  36. package/package.json +1 -1
  37. package/src/lib/pricing/seed-snapshot.json +1 -1
  38. package/src/lib/rollout.js +31 -1
  39. package/dashboard/dist/assets/LimitsPage-CWLEVM54.js +0 -2
  40. package/dashboard/dist/assets/use-limits-display-prefs-ur9_stXM.js +0 -1
@@ -746,6 +746,9 @@ async function parseRolloutFile({
746
746
  let model = typeof lastModel === "string" ? lastModel : null;
747
747
  let totals = lastTotal && typeof lastTotal === "object" ? lastTotal : null;
748
748
  let currentCwd = null;
749
+ let currentDate = null;
750
+ let isForkedRollout = false;
751
+ const rolloutDate = rolloutDateFromPath(filePath);
749
752
  let currentProjectRef = projectRef || null;
750
753
  let currentProjectKey = projectKey || null;
751
754
  let eventsAggregated = 0;
@@ -756,7 +759,10 @@ async function parseRolloutFile({
756
759
  const maybeTurnContext =
757
760
  !maybeTokenCount &&
758
761
  (line.includes('"turn_context"') || line.includes('"session_meta"')) &&
759
- (line.includes('"model"') || line.includes('"cwd"'));
762
+ (line.includes('"model"') ||
763
+ line.includes('"cwd"') ||
764
+ line.includes('"current_date"') ||
765
+ line.includes('"forked_from_id"'));
760
766
  if (!maybeTokenCount && !maybeTurnContext) continue;
761
767
 
762
768
  let obj;
@@ -771,6 +777,12 @@ async function parseRolloutFile({
771
777
  obj?.payload &&
772
778
  typeof obj.payload === "object"
773
779
  ) {
780
+ if (obj.type === "session_meta" && typeof obj.payload.forked_from_id === "string") {
781
+ isForkedRollout = obj.payload.forked_from_id.trim().length > 0;
782
+ }
783
+ if (obj.type === "turn_context" && typeof obj.payload.current_date === "string") {
784
+ currentDate = normalizeIsoDate(obj.payload.current_date);
785
+ }
774
786
  if (typeof obj.payload.model === "string") {
775
787
  model = obj.payload.model;
776
788
  }
@@ -812,6 +824,9 @@ async function parseRolloutFile({
812
824
  totals = totalUsage;
813
825
  }
814
826
 
827
+ // date matching is conservative; same-day fork replays are still counted.
828
+ if (isForkedReplayToken({ isForkedRollout, rolloutDate, currentDate })) continue;
829
+
815
830
  const bucketStart = toUtcHalfHourStart(tokenTimestamp);
816
831
  if (!bucketStart) continue;
817
832
 
@@ -1772,6 +1787,21 @@ function toUtcHalfHourStart(ts) {
1772
1787
  return bucketStart.toISOString();
1773
1788
  }
1774
1789
 
1790
+ function rolloutDateFromPath(filePath) {
1791
+ const match = path.basename(String(filePath || "")).match(/^rollout-(\d{4}-\d{2}-\d{2})T/);
1792
+ return match ? match[1] : null;
1793
+ }
1794
+
1795
+ function normalizeIsoDate(value) {
1796
+ const raw = typeof value === "string" ? value.trim() : "";
1797
+ const match = raw.match(/^(\d{4}-\d{2}-\d{2})/);
1798
+ return match ? match[1] : null;
1799
+ }
1800
+
1801
+ function isForkedReplayToken({ isForkedRollout, rolloutDate, currentDate }) {
1802
+ return Boolean(isForkedRollout && rolloutDate && currentDate && currentDate < rolloutDate);
1803
+ }
1804
+
1775
1805
  function normalizeNonNegativeNumber(value) {
1776
1806
  const n = Number(value || 0);
1777
1807
  if (!Number.isFinite(n) || n <= 0) return 0;
@@ -1,2 +0,0 @@
1
- import{j as i,V as _,G as o,U as E,r as P,aG as K,i as R,L as S,aH as M}from"./main-BO2Z3JNm.js";import{u as O}from"./use-usage-limits-BhXhFRP0.js";import{L as n,a as T,l as y,b as C,u as D}from"./use-limits-display-prefs-ur9_stXM.js";import{C as k}from"./Card-DH3Er6A7.js";import{F as A}from"./FadeIn-BGQdmOIT.js";import{L as F}from"./LocalOnlyNotice-BGFFlM7g.js";import"./arrow-up-right-CE98MOft.js";import"./download-DwKe306W.js";const $=[3,2,3,3,2,2,3];function d({className:e}){return i.jsx("div",{className:_("rounded bg-oai-gray-200/70 dark:bg-oai-gray-800/70 animate-pulse",e)})}function G(){return i.jsxs("div",{className:"flex items-center gap-2",children:[i.jsx(d,{className:"h-3 w-12 shrink-0"}),i.jsx(d,{className:"flex-1 h-1.5 rounded-full min-w-0"}),i.jsx(d,{className:"h-3 w-[30px] shrink-0"}),i.jsx(d,{className:"h-3 w-6 shrink-0"})]})}function H({bars:e,index:t}){const r=t%3===0?"w-24":t%3===1?"w-20":"w-[4.5rem]";return i.jsxs("div",{className:"flex flex-col gap-1.5",children:[i.jsxs("div",{className:"flex items-center gap-1.5",children:[i.jsx(d,{className:"h-[14px] w-[14px] rounded shrink-0"}),i.jsx(d,{className:_("h-4",r)})]}),Array.from({length:e},(l,a)=>i.jsx(G,{},a))]})}function B(){return i.jsx(k,{children:i.jsxs("div",{className:"flex flex-col gap-3",children:[i.jsx(d,{className:"h-3.5 w-28"}),$.map((e,t)=>i.jsx(H,{bars:e,index:t},t))]})})}const j={claude:{windows(e){return[{key:"5h",labelKey:"limits.label.claude_5h",window:e.five_hour,pctField:"utilization",resetField:"resets_at"},{key:"7d",labelKey:"limits.label.claude_7d",window:e.seven_day,pctField:"utilization",resetField:"resets_at"},{key:"opus",labelKey:"limits.label.claude_opus",window:e.seven_day_opus,pctField:"utilization",resetField:"resets_at"}]}},codex:{windows(e){return[{key:"5h",labelKey:"limits.label.codex_5h",window:e.primary_window},{key:"7d",labelKey:"limits.label.codex_7d",window:e.secondary_window},{key:"spark-5h",labelKey:"limits.label.codex_spark_5h",window:e.spark_primary_window},{key:"spark-7d",labelKey:"limits.label.codex_spark_7d",window:e.spark_secondary_window}]}},cursor:{windows(e){return[{key:"plan",labelKey:"limits.label.cursor_plan",window:e.primary_window},{key:"auto",labelKey:"limits.label.cursor_auto",window:e.secondary_window},{key:"api",labelKey:"limits.label.cursor_api",window:e.tertiary_window}]}},gemini:{windows(e){return[{key:"pro",labelKey:"limits.label.gemini_pro",window:e.primary_window},{key:"flash",labelKey:"limits.label.gemini_flash",window:e.secondary_window},{key:"lite",labelKey:"limits.label.gemini_lite",window:e.tertiary_window}]}},kimi:{extra:"kimi_parallel",windows(e){return[{key:"weekly",labelKey:"limits.label.kimi_weekly",window:e.primary_window},{key:"5h",labelKey:"limits.label.kimi_5h",window:e.secondary_window},{key:"total",labelKey:"limits.label.kimi_total",window:e.tertiary_window}]}},kiro:{windows(e){return[{key:"month",labelKey:"limits.label.kiro_month",window:e.primary_window},{key:"bonus",labelKey:"limits.label.kiro_bonus",window:e.secondary_window}]}},grok:{windows(e){return[{key:"month",labelKey:"limits.label.grok_month",window:e.primary_window},{key:"ondemand",labelKey:"limits.label.grok_ondemand",window:e.secondary_window}]}},antigravity:{windows(e){return[{key:"claude",labelKey:"limits.label.antigravity_claude",window:e.primary_window},{key:"gpro",labelKey:"limits.label.antigravity_gpro",window:e.secondary_window},{key:"flash",labelKey:"limits.label.antigravity_flash",window:e.tertiary_window}]}},copilot:{extra:"copilot_otel",windows(e){return[{key:"premium",labelKey:"limits.label.copilot_premium",window:e.primary_window},{key:"chat",labelKey:"limits.label.copilot_chat",window:e.secondary_window}]}}},U="shrink-0 text-oai-black dark:text-oai-white";function z(e){if(!e)return null;const t=typeof e=="number"?e*1e3:Date.parse(e);if(!Number.isFinite(t))return null;const r=t-Date.now();if(r<=0)return o("shared.time.now");const l=Math.floor(r/6e4);if(l<60)return`${l}m`;const a=Math.floor(l/60);return a<24?`${a}h`:`${Math.floor(a/24)}d`}function W(e,t){const r=t===n.REMAINING?100-e:e;return r>=90?"bg-red-500":r>=70?"bg-amber-500":"bg-emerald-500"}function V({label:e,pct:t,reset:r,mode:l=n.USED}){const a=Math.max(0,Math.min(100,Number(t)||0)),s=l===n.REMAINING?100-a:a,c=Math.round(s),w=s>0&&c===0?Math.max(s,.35):s;let u=String(c);return s>0&&c===0&&(u=o("limits.bar.sub_one_percent")),i.jsxs("div",{className:"flex items-center gap-2",children:[i.jsx("span",{className:"text-[11px] text-oai-gray-500 dark:text-oai-gray-400 w-14 shrink-0 whitespace-nowrap truncate",children:e}),i.jsx("div",{className:"flex-1 bg-oai-gray-100 dark:bg-oai-gray-700/50 rounded-full h-1.5 overflow-hidden",children:i.jsx("div",{className:`${W(s,l)} rounded-full h-full transition-[width] duration-500 ease-out`,style:{width:`${w}%`,minWidth:s>0?"3px":0}})}),i.jsxs("span",{className:"text-[11px] tabular-nums text-oai-gray-500 dark:text-oai-gray-400 w-9 text-right shrink-0 whitespace-nowrap",children:[u,"%"]}),r&&i.jsx("span",{className:"text-[10px] text-oai-gray-400 dark:text-oai-gray-500 w-6 text-right shrink-0",children:r})]})}function h({name:e,providerId:t,children:r}){const l=C(t);return i.jsxs("div",{className:"flex flex-col gap-1.5",children:[i.jsxs("div",{className:"flex items-center gap-1.5",children:[l?i.jsx(E,{provider:l,size:14,className:U}):null,i.jsx("span",{className:"text-sm font-medium text-oai-black dark:text-oai-white",children:e})]}),r]})}const Y=T;function m({children:e,tone:t="neutral"}){const r=t==="error"?"text-red-600 dark:text-red-400":"text-oai-gray-500 dark:text-oai-gray-400";return i.jsx("div",{className:`text-[11px] leading-snug ${r}`,children:e})}function X(e,t="used_percent"){return e?t==="utilization"?e.utilization:e.used_percent:null}function q(e,t="reset_at"){return e?t==="resets_at"?e.resets_at:e.reset_at:null}function J(e,t){return e.filter(r=>r.window).map(r=>i.jsx(V,{label:o(r.labelKey),pct:X(r.window,r.pctField),reset:z(q(r.window,r.resetField)),mode:t},r.key))}function Q({specs:e,mode:t,extra:r=null}){const l=J(e,t),a=l.length===0&&!r;return i.jsxs(i.Fragment,{children:[l,a?i.jsx(m,{children:o("limits.status.no_data")}):null,r]})}function Z(e,t,r,l,a=null){return i.jsx(h,{name:t,providerId:e,children:i.jsx(Q,{mode:r,specs:l,extra:a})},e)}function ee(e,t){return e==="kimi_parallel"&&t.parallel_limit?i.jsx(m,{children:o("limits.label.kimi_parallel",{count:t.parallel_limit})}):e==="copilot_otel"&&!t.otel_has_files&&!t.otel_enabled?i.jsx(re,{defaultDir:t.otel_default_dir}):null}function ie(e,t,r,l){const a=j[e];return a?Z(e,r,l,a.windows(t),ee(a.extra,t)):null}function te(e,t,r){if(!j[e])return null;if(!t?.configured)return i.jsx(h,{name:y(e),providerId:e,children:i.jsx(m,{children:o("limits.status.not_connected")})},e);if(t.error)return i.jsx(h,{name:y(e),providerId:e,children:i.jsx(m,{tone:"error",children:o("shared.error.prefix",{error:t.error})})},e);const l=y(e),a=t.plan_label?`${l} ${t.plan_label}`:l;return ie(e,t,a,r)}function re({defaultDir:e}){const[t,r]=P.useState(!1),a=["export COPILOT_OTEL_ENABLED=true","export COPILOT_OTEL_EXPORTER_TYPE=file",`export COPILOT_OTEL_FILE_EXPORTER_PATH="${e||"$HOME/.copilot/otel"}/copilot-otel-$(date +%Y%m%d).jsonl"`].join(`
2
- `),s=async()=>{try{await navigator.clipboard.writeText(a),r(!0),setTimeout(()=>r(!1),1600)}catch{}};return i.jsxs("div",{className:"mt-1 rounded-md border border-amber-300/60 dark:border-amber-700/40 bg-amber-50/50 dark:bg-amber-900/10 px-2.5 py-2 text-[11px] text-oai-gray-600 dark:text-oai-gray-300",children:[i.jsx("div",{className:"font-medium text-oai-gray-700 dark:text-oai-gray-200",children:o("limits.copilot.otelHint.title")}),i.jsx("div",{className:"mt-0.5 leading-snug",children:o("limits.copilot.otelHint.body")}),i.jsx("pre",{className:"mt-1.5 overflow-x-auto rounded bg-oai-gray-100 dark:bg-oai-gray-900/60 px-2 py-1.5 font-mono text-[10.5px] leading-tight whitespace-pre",children:a}),i.jsx("button",{type:"button",onClick:s,className:"mt-1 inline-flex items-center gap-1 rounded border border-oai-gray-300 dark:border-oai-gray-700 px-1.5 py-0.5 text-[10.5px] text-oai-gray-700 dark:text-oai-gray-200 hover:bg-oai-gray-100 dark:hover:bg-oai-gray-800 transition-colors",children:t?o("limits.copilot.otelHint.copied"):o("limits.copilot.otelHint.copy")})]})}function ae({claude:e,codex:t,cursor:r,gemini:l,kimi:a,kiro:s,grok:c,antigravity:w,copilot:u,order:p,visibility:b,displayMode:N}){const v={claude:e,codex:t,cursor:r,gemini:l,kimi:a,kiro:s,grok:c,antigravity:w,copilot:u},I=Array.isArray(p)&&p.length>0?p:Y,f=N===n.REMAINING?n.REMAINING:n.USED,L=f===n.REMAINING?o("limits.settings.display_mode_remaining"):o("limits.settings.display_mode_used"),g=I.filter(x=>!b||b[x]!==!1).map(x=>te(x,v[x],f)).filter(Boolean);return i.jsx(A,{delay:.15,children:i.jsx(k,{children:i.jsxs("div",{className:"flex flex-col gap-3",children:[i.jsxs("h3",{className:"text-sm font-medium text-oai-gray-500 dark:text-oai-gray-300 uppercase tracking-wide",children:[o("limits.panel.title"),o("limits.panel.mode_separator"),L]}),g.length>0?g:i.jsx(m,{children:o("limits.status.all_hidden")})]})})})}const le=typeof window<"u"&&(window.location.hostname==="localhost"||window.location.hostname==="127.0.0.1");function we(){const e=K(),{data:t,error:r,isLoading:l}=O(e?{initialRefresh:!0,initialState:e,publishToPreloadCache:!0}:{initialRefresh:!0,publishToPreloadCache:!0}),a=D();return!le&&!R()?i.jsx("div",{className:"flex flex-col flex-1 text-oai-black dark:text-oai-white font-oai antialiased",children:i.jsx(F,{})}):i.jsx("div",{className:"flex flex-col flex-1 text-oai-black dark:text-oai-white font-oai antialiased",children:i.jsx("main",{className:"flex-1 pt-8 sm:pt-10 pb-12 sm:pb-16",children:i.jsxs("div",{className:"mx-auto max-w-6xl px-4 sm:px-6",children:[i.jsxs("div",{className:"flex flex-row items-start justify-between gap-4 mb-8",children:[i.jsxs("div",{className:"min-w-0",children:[i.jsx("h1",{className:"text-3xl sm:text-4xl font-semibold tracking-tight text-oai-black dark:text-white mb-3",children:o("nav.limits")}),i.jsx("p",{className:"text-oai-gray-500 dark:text-oai-gray-400 text-sm sm:text-base",children:o("limits.page.subtitle")})]}),i.jsx(S,{to:"/settings","aria-label":o("limits.page.openSettings"),title:o("limits.page.openSettings"),className:"shrink-0 inline-flex h-9 w-9 items-center justify-center rounded-lg border border-oai-gray-200 dark:border-oai-gray-800 text-oai-gray-600 dark:text-oai-gray-400 hover:bg-oai-gray-100 dark:hover:bg-oai-gray-800 hover:text-oai-black dark:hover:text-white transition-colors no-underline focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-oai-brand-500",children:i.jsx(M,{className:"h-4 w-4","aria-hidden":!0})})]}),l?i.jsx(B,{}):i.jsxs(i.Fragment,{children:[r?i.jsx("p",{className:"mb-4 text-sm text-red-500 dark:text-red-400",children:o("shared.error.prefix",{error:r})}):null,i.jsx(ae,{claude:t?.claude,codex:t?.codex,cursor:t?.cursor,gemini:t?.gemini,kimi:t?.kimi,kiro:t?.kiro,grok:t?.grok,antigravity:t?.antigravity,copilot:t?.copilot,order:a.order,visibility:a.visibility,displayMode:a.displayMode})]})]})})})}export{we as LimitsPage};
@@ -1 +0,0 @@
1
- import{G as d,r as n,a_ as O,a$ as h,b0 as C,b1 as P}from"./main-BO2Z3JNm.js";const Y=["claude","codex","cursor","gemini","kimi","kiro","grok","copilot","antigravity"],T={claude:"CLAUDE",codex:"CODEX",cursor:"CURSOR",gemini:"GEMINI",kimi:"KIMI",kiro:"KIRO",grok:"GROK",copilot:"COPILOT",antigravity:"ANTIGRAVITY"};function K(e){return T[e]||null}function U(e){switch(e){case"claude":return d("limits.provider.claude");case"codex":return d("limits.provider.codex");case"cursor":return d("limits.provider.cursor");case"gemini":return d("limits.provider.gemini");case"kimi":return d("limits.provider.kimi");case"kiro":return d("limits.provider.kiro");case"grok":return d("limits.provider.grok");case"copilot":return d("limits.provider.copilot");case"antigravity":return d("limits.provider.antigravity");default:return String(e||"")}}const u=Y,I="tt.limits.providerOrder",p="tt.limits.providerVisibility",S="tt.limits.displayMode",D="limitsDisplayMode",l=Object.freeze({USED:"used",REMAINING:"remaining"}),g=new Set(Object.values(l));function b(){if(typeof window>"u")return[...u];try{const e=window.localStorage.getItem(I);if(!e)return[...u];const c=JSON.parse(e);if(!Array.isArray(c))return[...u];const o=c.filter(a=>u.includes(a));for(const a of u)o.includes(a)||o.push(a);return o}catch{return[...u]}}function k(){const e=Object.fromEntries(u.map(c=>[c,!0]));if(typeof window>"u")return e;try{const c=window.localStorage.getItem(p);if(!c)return e;const o=JSON.parse(c);if(!o||typeof o!="object")return e;const a={...e};for(const f of u)typeof o[f]=="boolean"&&(a[f]=o[f]);return a}catch{return e}}function v(){if(typeof window>"u")return l.USED;try{const e=window.localStorage.getItem(S);return g.has(e)?e:l.USED}catch{return l.USED}}function j(){const[e,c]=n.useState(b),[o,a]=n.useState(k),[f,m]=n.useState(v),y=n.useCallback(t=>{g.has(t)&&(m(t),O()&&h(D,t))},[]);n.useEffect(()=>{if(!(typeof window>"u"))try{window.localStorage.setItem(I,JSON.stringify(e))}catch{}},[e]),n.useEffect(()=>{if(!(typeof window>"u"))try{window.localStorage.setItem(p,JSON.stringify(o))}catch{}},[o]),n.useEffect(()=>{if(!(typeof window>"u"))try{window.localStorage.setItem(S,f)}catch{}},[f]),n.useEffect(()=>{if(!O())return;const t=C(i=>{const r=i?.[D];g.has(r)&&m(r)});return P(),t},[]),n.useEffect(()=>{if(typeof window>"u")return;const t=i=>{i.key===I&&c(b()),i.key===p&&a(k()),i.key===S&&m(v())};return window.addEventListener("storage",t),()=>window.removeEventListener("storage",t)},[]);const _=n.useCallback(t=>{a(i=>({...i,[t]:!i[t]}))},[]),L=n.useCallback(t=>{c(i=>{const r=i.indexOf(t);if(r<=0)return i;const s=[...i];return[s[r-1],s[r]]=[s[r],s[r-1]],s})},[]),M=n.useCallback(t=>{c(i=>{const r=i.indexOf(t);if(r<0||r>=i.length-1)return i;const s=[...i];return[s[r],s[r+1]]=[s[r+1],s[r]],s})},[]),x=n.useCallback((t,i)=>{t!==i&&c(r=>{const s=r.indexOf(t),E=r.indexOf(i);if(s<0||E<0)return r;const w=[...r],[A]=w.splice(s,1);return w.splice(E,0,A),w})},[]),N=n.useCallback(()=>{c([...u]),a(Object.fromEntries(u.map(t=>[t,!0]))),y(l.USED)},[y]),R=n.useMemo(()=>e.filter(t=>o[t]!==!1),[e,o]);return{order:e,visibility:o,displayMode:f,setDisplayMode:y,visibleOrdered:R,toggle:_,moveUp:L,moveDown:M,moveToward:x,reset:N}}export{l as L,Y as a,K as b,U as l,j as u};