tokentracker-cli 0.47.2 → 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.
- package/dashboard/dist/assets/{ActivityHeatmap-pmfD3Ath.js → ActivityHeatmap-BW7r63JV.js} +1 -1
- package/dashboard/dist/assets/{Card-DUDp5etW.js → Card-BWgji0yz.js} +1 -1
- package/dashboard/dist/assets/{DashboardPage-DXrRPWIp.js → DashboardPage-fwmRrxV3.js} +1 -1
- package/dashboard/dist/assets/{DevicePage-qLJYXd77.js → DevicePage-rxxuM-iC.js} +1 -1
- package/dashboard/dist/assets/{DialogTitle-BgGL5hnG.js → DialogTitle-ltZ7viR5.js} +1 -1
- package/dashboard/dist/assets/{FadeIn-DUQ3TnB6.js → FadeIn-DkGtOY3l.js} +1 -1
- package/dashboard/dist/assets/{HeaderGithubStar-Cxa1D0ED.js → HeaderGithubStar-CUKVYH9j.js} +1 -1
- package/dashboard/dist/assets/{IpCheckPage-b5W8Ul5f.js → IpCheckPage-DqrupqCq.js} +1 -1
- package/dashboard/dist/assets/{LandingPage-BYSw_u-K.js → LandingPage-Y2ovBPVG.js} +1 -1
- package/dashboard/dist/assets/{LeaderboardAvatar-q54dIgS4.js → LeaderboardAvatar-DSGfEE93.js} +1 -1
- package/dashboard/dist/assets/{LeaderboardPage-Crgs3N61.js → LeaderboardPage-BX4cvtg7.js} +3 -3
- package/dashboard/dist/assets/{LeaderboardProfileModal-nM8m0PLN.js → LeaderboardProfileModal-CJfefuSR.js} +1 -1
- package/dashboard/dist/assets/{LeaderboardProfilePage-DOo7a7Iv.js → LeaderboardProfilePage-Xy0K-ppJ.js} +1 -1
- package/dashboard/dist/assets/LimitsPage-utdNxAg_.js +2 -0
- package/dashboard/dist/assets/{LocalOnlyNotice-CQfxpbpk.js → LocalOnlyNotice-CwGk0Fn3.js} +1 -1
- package/dashboard/dist/assets/{LoginPage-CDFqAkqn.js → LoginPage-BHlX2ZHJ.js} +1 -1
- package/dashboard/dist/assets/{PopoverPopup-KFQF_kvR.js → PopoverPopup-BC4rHujH.js} +1 -1
- package/dashboard/dist/assets/{Select-Ba_UdCmL.js → Select-BpDJKpfl.js} +1 -1
- package/dashboard/dist/assets/{SelectItemText-BA_-5ocf.js → SelectItemText-D1_H3hHS.js} +1 -1
- package/dashboard/dist/assets/{SettingsPage-CeHX0Oou.js → SettingsPage-DCVw-3Cv.js} +1 -1
- package/dashboard/dist/assets/{SkillsPage-BjdhUDQT.js → SkillsPage-B-9_Ufpw.js} +1 -1
- package/dashboard/dist/assets/{WidgetsPage-CTNNXAAe.js → WidgetsPage-DJ4i97QU.js} +1 -1
- package/dashboard/dist/assets/{WrappedPage-Bsy75FD2.js → WrappedPage-W8pPcYr2.js} +1 -1
- package/dashboard/dist/assets/{agent-logos-Da2uJrL2.js → agent-logos-yJi-7lhN.js} +1 -1
- package/dashboard/dist/assets/{arrow-up-right-Y4ZJ2CDJ.js → arrow-up-right-BXhFthH9.js} +1 -1
- package/dashboard/dist/assets/{download-Dc6htisz.js → download-D32KO7Ua.js} +1 -1
- package/dashboard/dist/assets/{info-CjqG3w0v.js → info-C8QLdyUg.js} +1 -1
- package/dashboard/dist/assets/{main-Dq4iaIBc.js → main-BmTIgbZL.js} +2 -2
- package/dashboard/dist/assets/use-limits-display-prefs-DcmWcNeA.js +1 -0
- package/dashboard/dist/assets/{use-native-settings-BYViFfBF.js → use-native-settings-BLZi1heD.js} +1 -1
- package/dashboard/dist/assets/{use-usage-limits-B0Rcr9Mo.js → use-usage-limits-BIJk3Nmb.js} +1 -1
- package/dashboard/dist/assets/{useCurrency-CYDQDLAc.js → useCurrency-ERbWumqM.js} +1 -1
- package/dashboard/dist/assets/{useScrollLock-f0bGE_jB.js → useScrollLock-PJWfD6AS.js} +1 -1
- package/dashboard/dist/index.html +1 -1
- package/dashboard/dist/share.html +1 -1
- package/package.json +1 -1
- package/src/lib/pricing/seed-snapshot.json +1 -1
- package/src/lib/rollout.js +31 -1
- package/dashboard/dist/assets/LimitsPage-D_YIuCTz.js +0 -2
- package/dashboard/dist/assets/use-limits-display-prefs-DTnxSjQ8.js +0 -1
package/src/lib/rollout.js
CHANGED
|
@@ -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"') ||
|
|
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-Dq4iaIBc.js";import{u as O}from"./use-usage-limits-B0Rcr9Mo.js";import{L as n,a as T,l as y,b as C,u as D}from"./use-limits-display-prefs-DTnxSjQ8.js";import{C as k}from"./Card-DUDp5etW.js";import{F as A}from"./FadeIn-DUQ3TnB6.js";import{L as F}from"./LocalOnlyNotice-CQfxpbpk.js";import"./arrow-up-right-Y4ZJ2CDJ.js";import"./download-Dc6htisz.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-Dq4iaIBc.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};
|