@versini/sassysaint 8.126.7 → 8.128.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 (84) hide show
  1. package/dist/chunks/{AboutChangelog.CW-Izs66.js → AboutChangelog.BaCzQIqD.js} +2 -2
  2. package/dist/chunks/{AboutEntry.DBy-y5Ti.js → AboutEntry.eW1BM9CA.js} +8 -8
  3. package/dist/chunks/{App.B-md2rcu.js → App.CC33vL5i.js} +2402 -2428
  4. package/dist/chunks/{BubbleActions.B8rq1SsN.js → BubbleActions.es9LLF18.js} +9 -12
  5. package/dist/chunks/{ButtonIconDelete.JtVTVoIm.js → ButtonIconDelete.90PiEjs7.js} +4 -4
  6. package/dist/chunks/{Chart.CtxoFzUx.js → Chart.DUt_7vIL.js} +2 -2
  7. package/dist/chunks/{ChatBubbleAssistant.BtzJwzIk.js → ChatBubbleAssistant.B5jxh8vW.js} +5 -5
  8. package/dist/chunks/{ChatBubbleUser.C34kYYGx.js → ChatBubbleUser.D5XEunyx.js} +4 -4
  9. package/dist/chunks/{GenericPanel.etdBsslu.js → GenericPanel.Bf-hQWg5.js} +1 -1
  10. package/dist/chunks/{HistoryEntry.CECnIGUg.js → HistoryEntry.BcJRi9F8.js} +82 -86
  11. package/dist/chunks/{LoginEntry.BYfbRBYg.js → LoginEntry.D3t0yZDn.js} +4 -4
  12. package/dist/chunks/{LogoEntry.CRQF4cxX.js → LogoEntry.BMOnjgmn.js} +191 -192
  13. package/dist/chunks/{MemoriesEntry.Pbp4i_A_.js → MemoriesEntry.CT7Tg3DJ.js} +6 -6
  14. package/dist/chunks/{ProfileEntry.CI9p9RFG.js → ProfileEntry.BJr9XGP9.js} +45 -50
  15. package/dist/chunks/{SettingsEntry.CLssrhX8.js → SettingsEntry.DvfCS9tj.js} +6 -6
  16. package/dist/chunks/{UsageEntry.w73jBoTN.js → UsageEntry.CBUbgFys.js} +6 -6
  17. package/dist/chunks/{_baseUniq.Cd1UQpLO.js → _baseUniq.C05YPW9C.js} +1 -1
  18. package/dist/chunks/{arc.D4c8to6F.js → arc.Cf5K6vl_.js} +1 -1
  19. package/dist/chunks/{architecture-U656AL7Q.B9lITtMs.js → architecture-U656AL7Q.CZy-Pdvp.js} +1 -1
  20. package/dist/chunks/{architectureDiagram-VXUJARFQ.BIC6ZHca.js → architectureDiagram-VXUJARFQ.BIs2ud_G.js} +4 -4
  21. package/dist/chunks/{blockDiagram-VD42YOAC.BBMb6Nqs.js → blockDiagram-VD42YOAC.BPoyL5aF.js} +5 -5
  22. package/dist/chunks/{browser.D7OX3j7D.js → browser.DObrbMlL.js} +1 -1
  23. package/dist/chunks/{c4Diagram-YG6GDRKO.DaMxCrVF.js → c4Diagram-YG6GDRKO.BB9IW_Rn.js} +2 -2
  24. package/dist/chunks/{channel.CnlPlGuY.js → channel.CgqWkmba.js} +1 -1
  25. package/dist/chunks/{chunk-4BX2VUAB.l1nq9vFq.js → chunk-4BX2VUAB.Cmc7-DdG.js} +1 -1
  26. package/dist/chunks/{chunk-55IACEB6.BF4RUrON.js → chunk-55IACEB6.CN2uBDDO.js} +1 -1
  27. package/dist/chunks/{chunk-B4BG7PRW.BK7fKwGA.js → chunk-B4BG7PRW.DBDBMwjU.js} +4 -4
  28. package/dist/chunks/{chunk-DI55MBZ5.BKjbItc8.js → chunk-DI55MBZ5.Cz3LdADZ.js} +3 -3
  29. package/dist/chunks/{chunk-FMBD7UC4.BE5Woiu7.js → chunk-FMBD7UC4.DapfiQi4.js} +1 -1
  30. package/dist/chunks/{chunk-QN33PNHL.gPNHlIzJ.js → chunk-QN33PNHL.Dvmk9wzi.js} +1 -1
  31. package/dist/chunks/{chunk-QZHKN3VN.5wNS8trN.js → chunk-QZHKN3VN.BwMfpp5t.js} +1 -1
  32. package/dist/chunks/{chunk-TZMSLE5B.BKh2yO_r.js → chunk-TZMSLE5B.BB9VNFNe.js} +1 -1
  33. package/dist/chunks/{classDiagram-2ON5EDUG.kipwuaZZ.js → classDiagram-2ON5EDUG.CoSYun8e.js} +2 -2
  34. package/dist/chunks/{classDiagram-v2-WZHVMYZB.kipwuaZZ.js → classDiagram-v2-WZHVMYZB.CoSYun8e.js} +2 -2
  35. package/dist/chunks/{clone.CCFxMO0c.js → clone.7t5Injbh.js} +1 -1
  36. package/dist/chunks/{cose-bilkent-S5V4N54A.CkCCiu8R.js → cose-bilkent-S5V4N54A.DcgFw2nC.js} +2 -2
  37. package/dist/chunks/{dagre-6UL2VRFP.Beoz6gTt.js → dagre-6UL2VRFP.stVQNin0.js} +5 -5
  38. package/dist/chunks/{diagram-PSM6KHXK.8RPMv7wd.js → diagram-PSM6KHXK.Bfp-k4dp.js} +4 -4
  39. package/dist/chunks/{diagram-QEK2KX5R.BnhMDTJF.js → diagram-QEK2KX5R.Dn4JXePy.js} +3 -3
  40. package/dist/chunks/{diagram-S2PKOQOG.Ug0j7YIr.js → diagram-S2PKOQOG.XP_j_ZFC.js} +3 -3
  41. package/dist/chunks/{erDiagram-Q2GNP2WA.C8rnB1TI.js → erDiagram-Q2GNP2WA.DvkJcNF9.js} +4 -4
  42. package/dist/chunks/{flowDiagram-NV44I4VS.BMqo2W_h.js → flowDiagram-NV44I4VS.Hn0PROgU.js} +5 -5
  43. package/dist/chunks/{ganttDiagram-JELNMOA3.CGcayHSs.js → ganttDiagram-JELNMOA3.Bf2PkTYR.js} +2 -2
  44. package/dist/chunks/{gitGraph-F6HP7TQM.oMl7XYpx.js → gitGraph-F6HP7TQM.BAL9tPb8.js} +1 -1
  45. package/dist/chunks/{gitGraphDiagram-NY62KEGX.B4aBo3Ma.js → gitGraphDiagram-NY62KEGX.D-INdXxg.js} +4 -4
  46. package/dist/chunks/{graph.P_jhAD76.js → graph.BdKcquxL.js} +2 -2
  47. package/dist/chunks/{index.DWQE2iX-.js → index.0JHn1e2U.js} +432 -457
  48. package/dist/chunks/{index.DwHqn9k5.js → index.5fyUtTLH.js} +1 -1
  49. package/dist/chunks/{index.DmPS0LKW.js → index.6L4XnWtC.js} +1 -1
  50. package/dist/chunks/{index.DdhYWjUr.js → index.B4AUmI6b.js} +1 -1
  51. package/dist/chunks/index.BPJsF71r.js +778 -0
  52. package/dist/chunks/{index.Du1LYe4A.js → index.Bc_G-sOy.js} +1 -1
  53. package/dist/chunks/{index.BEVp3tQU.js → index.DI-kWtZC.js} +1 -1
  54. package/dist/chunks/{index.DbzrE5oY.js → index.WIzP-Pra.js} +1 -1
  55. package/dist/chunks/{index.CgYK85eC.js → index.X8Fsvrzr.js} +3 -3
  56. package/dist/chunks/{index.kvM5mFnS.js → index.cfsSIuD8.js} +3 -3
  57. package/dist/chunks/{index.CIRTMm47.js → index.k2KcXUHd.js} +1 -1
  58. package/dist/chunks/{info-NVLQJR56.DUhWWJrK.js → info-NVLQJR56.DcGA1jrE.js} +1 -1
  59. package/dist/chunks/{infoDiagram-WHAUD3N6.DCcSzT7y.js → infoDiagram-WHAUD3N6.P7BalyWy.js} +2 -2
  60. package/dist/chunks/{journeyDiagram-XKPGCS4Q.qrZHRTxm.js → journeyDiagram-XKPGCS4Q.Bz2aO32S.js} +4 -4
  61. package/dist/chunks/{kanban-definition-3W4ZIXB7.BFukrzhr.js → kanban-definition-3W4ZIXB7.B6Xoovxx.js} +2 -2
  62. package/dist/chunks/{layout.BqCTDG8Y.js → layout.CCpEwh-_.js} +4 -4
  63. package/dist/chunks/{mermaid-parser.core.CondFBax.js → mermaid-parser.core.D_GFlU1z.js} +10 -10
  64. package/dist/chunks/{min.lZGJAA1K.js → min.DTnSBUC_.js} +2 -2
  65. package/dist/chunks/{mindmap-definition-VGOIOE7T.CT54E3Sw.js → mindmap-definition-VGOIOE7T.DHQdU4lr.js} +3 -3
  66. package/dist/chunks/{packet-BFZMPI3H.iK3_CF5T.js → packet-BFZMPI3H.D1zjOFZd.js} +1 -1
  67. package/dist/chunks/{pie-7BOR55EZ.D1Qq3bYW.js → pie-7BOR55EZ.CeO5-_U1.js} +1 -1
  68. package/dist/chunks/{pieDiagram-ADFJNKIX.DXGCDAKy.js → pieDiagram-ADFJNKIX.vlumWtQJ.js} +4 -4
  69. package/dist/chunks/{quadrantDiagram-AYHSOK5B.ojRkTS5g.js → quadrantDiagram-AYHSOK5B.C-pd5lvj.js} +1 -1
  70. package/dist/chunks/{radar-NHE76QYJ.DkDiAIKY.js → radar-NHE76QYJ.CnAfsBzR.js} +1 -1
  71. package/dist/chunks/{rehype-mermaid.RyRyGhWJ.js → rehype-mermaid.BnWXv7Wc.js} +33 -33
  72. package/dist/chunks/{requirementDiagram-UZGBJVZJ.BFd3U9DZ.js → requirementDiagram-UZGBJVZJ.CmVyiL7B.js} +3 -3
  73. package/dist/chunks/{sankeyDiagram-TZEHDZUN.pQuaGohB.js → sankeyDiagram-TZEHDZUN.BQjhJ4Tg.js} +1 -1
  74. package/dist/chunks/{sequenceDiagram-WL72ISMW.4Yva7tjD.js → sequenceDiagram-WL72ISMW.BtL6Q2gQ.js} +3 -3
  75. package/dist/chunks/{stateDiagram-FKZM4ZOC.ow8Ua1so.js → stateDiagram-FKZM4ZOC.ky8Am5SK.js} +4 -4
  76. package/dist/chunks/{stateDiagram-v2-4FDKWEC3.CzZfEcrx.js → stateDiagram-v2-4FDKWEC3.CKnfbP2Y.js} +2 -2
  77. package/dist/chunks/{timeline-definition-IT6M3QCI.B64DUZm1.js → timeline-definition-IT6M3QCI.BK4Qztez.js} +2 -2
  78. package/dist/chunks/{treemap-KMMF4GRG.CZ3EzCMU.js → treemap-KMMF4GRG.BdCfmZGD.js} +1 -1
  79. package/dist/chunks/{useMarkdown.CTShtPKa.js → useMarkdown.BF1KYabA.js} +8 -8
  80. package/dist/chunks/{xychartDiagram-PRI3JC2R.DT-Jxd2g.js → xychartDiagram-PRI3JC2R.X4OHZ3WQ.js} +1 -1
  81. package/dist/components/SassySaint/SassySaint.js +1 -1
  82. package/dist/index.js +3 -3
  83. package/package.json +3 -3
  84. package/dist/chunks/index.ri2Dr1rJ.js +0 -389
@@ -1,8 +1,8 @@
1
1
  import { jsxs as b, Fragment as S, jsx as t } from "react/jsx-runtime";
2
- import { n as I, useUserPreferences as M } from "./index.DWQE2iX-.js";
3
- import { ButtonIcon as g, IconCopied as _, IconCopy as z, ChatContext as H, IconBranch as N, TOAST_CHAT_BRANCHED as R } from "./LogoEntry.CRQF4cxX.js";
2
+ import { n as M, useUserPreferences as _ } from "./index.0JHn1e2U.js";
3
+ import { ButtonIcon as g, IconCopied as I, IconCopy as z, ChatContext as H, IconBranch as N, TOAST_CHAT_BRANCHED as R } from "./LogoEntry.BMOnjgmn.js";
4
4
  import { useState as k, useRef as E, useCallback as y, useEffect as O, useContext as L } from "react";
5
- import { ResponsiveTooltip as w, useAiChat as U, v4 as j, CHAT_RESET as D, CHAT_SET_ATTACHMENTS as F, CHAT_SET_STATUS as P, showSuccessToast as q, CHAT_SCROLL_TO_BOTTOM as G } from "./App.B-md2rcu.js";
5
+ import { ResponsiveTooltip as w, useAiChat as U, v4 as j, CHAT_RESET as D, CHAT_SET_ATTACHMENTS as F, CHAT_SET_STATUS as P, showSuccessToast as q, CHAT_SCROLL_TO_BOTTOM as G } from "./App.CC33vL5i.js";
6
6
  const J = ({ children: e, richText: a = !1, mode: o = "system", focusMode: l = "system" }) => {
7
7
  const [n, c] = k(!1), r = E(null), p = y(async () => {
8
8
  if (navigator.clipboard)
@@ -62,7 +62,7 @@ const J = ({ children: e, richText: a = !1, mode: o = "system", focusMode: l = "
62
62
  label: n ? "Copied to clipboard" : "Copy to clipboard",
63
63
  onClick: p,
64
64
  disabled: n,
65
- children: n ? /* @__PURE__ */ t(_, {
65
+ children: n ? /* @__PURE__ */ t(I, {
66
66
  size: "size-3"
67
67
  }) : /* @__PURE__ */ t(z, {
68
68
  size: "size-3"
@@ -89,7 +89,7 @@ const J = ({ children: e, richText: a = !1, mode: o = "system", focusMode: l = "
89
89
  messages: l,
90
90
  annotations: n
91
91
  }) => {
92
- const { user: c, getAccessToken: r } = I(), { data: p } = M({
92
+ const { user: c, getAccessToken: r } = M(), { data: p } = _({
93
93
  user: c?.username,
94
94
  getAccessToken: r
95
95
  }), {
@@ -98,9 +98,9 @@ const J = ({ children: e, richText: a = !1, mode: o = "system", focusMode: l = "
98
98
  setChatId: d,
99
99
  setInitialMessages: m
100
100
  } = L(H), { setInput: h } = U(), B = p?.useBranchNewChat || !1, T = l?.reduce(
101
- (f, C, A) => C.role === "assistant" ? A : f,
101
+ (f, C, v) => C.role === "assistant" ? v : f,
102
102
  -1
103
- ) ?? -1, x = B && o !== void 0 && T !== -1 && o < T, v = y(() => {
103
+ ) ?? -1, x = B && o !== void 0 && T !== -1 && o < T, A = y(() => {
104
104
  if (o === void 0 || !l)
105
105
  return;
106
106
  const f = l.slice(0, o + 1), C = j();
@@ -125,10 +125,7 @@ const J = ({ children: e, richText: a = !1, mode: o = "system", focusMode: l = "
125
125
  restoredTimestamp: String(Date.now()),
126
126
  tokenUsage: -1
127
127
  }
128
- }), q(R, {
129
- containerId: "toggle-save",
130
- autoClose: 3e3
131
- }), s({ type: G });
128
+ }), q(R), s({ type: G });
132
129
  }, [
133
130
  o,
134
131
  l,
@@ -163,7 +160,7 @@ const J = ({ children: e, richText: a = !1, mode: o = "system", focusMode: l = "
163
160
  noBackground: !0,
164
161
  mode: "light",
165
162
  label: "Start new chat from here",
166
- onClick: v,
163
+ onClick: A,
167
164
  children: /* @__PURE__ */ t(N, { monotone: !0, size: "size-3", className: "text-copy-light" })
168
165
  }
169
166
  )
@@ -1,10 +1,10 @@
1
1
  import { jsx as i, jsxs as A, Fragment as pe } from "react/jsx-runtime";
2
2
  import ye, { useRef as N, useState as w, useLayoutEffect as L, createContext as ve, useContext as Ce, useCallback as D, useMemo as Q, useId as ke, useEffect as Z } from "react";
3
- import { IconSearch as xe, Button as He, CellWrapper as z, BlurEffects as R, IconSortUp as we, IconSortDown as Ne, IconSort as Se, ButtonIcon as Te, IconDelete as Ae } from "./LogoEntry.CRQF4cxX.js";
4
- import { Card as Ie } from "./index.DmPS0LKW.js";
5
- import { TextInput as Fe } from "./index.DbzrE5oY.js";
3
+ import { IconSearch as xe, Button as He, CellWrapper as z, BlurEffects as R, IconSortUp as we, IconSortDown as Ne, IconSort as Se, ButtonIcon as Te, IconDelete as Ae } from "./LogoEntry.BMOnjgmn.js";
4
+ import { Card as Ie } from "./index.6L4XnWtC.js";
5
+ import { TextInput as Fe } from "./index.WIzP-Pra.js";
6
6
  import g from "clsx";
7
- import { ResponsiveTooltip as Be } from "./App.B-md2rcu.js";
7
+ import { ResponsiveTooltip as Be } from "./App.CC33vL5i.js";
8
8
  const Re = 300;
9
9
  function De(e, s) {
10
10
  const { duration: r = Re, enabled: n = !0 } = s ?? {}, t = N(null), [o, a] = w({
@@ -1,7 +1,7 @@
1
1
  import { jsx as Up } from "react/jsx-runtime";
2
- import { getDefaultExportFromCjs as Pn, isProbablyMobile as $p } from "./App.B-md2rcu.js";
2
+ import { getDefaultExportFromCjs as Pn, isProbablyMobile as $p } from "./App.CC33vL5i.js";
3
3
  import Vp, { useMemo as qp } from "react";
4
- import { TRIMESTERS_SHORT as Zp, TRIMESTERS as Mn, TIME_RANGES as xs, TIME_RANGE_LABELS as Sn } from "./LogoEntry.CRQF4cxX.js";
4
+ import { TRIMESTERS_SHORT as Zp, TRIMESTERS as Mn, TIME_RANGES as xs, TIME_RANGE_LABELS as Sn } from "./LogoEntry.BMOnjgmn.js";
5
5
  var ys = { exports: {} }, Kp = ys.exports, Tn;
6
6
  function _p() {
7
7
  return Tn || (Tn = 1, (function(Ce, ce) {
@@ -1,11 +1,11 @@
1
1
  import { jsx as vt } from "react/jsx-runtime";
2
- import { n as as, useUserPreferences as os, formatTimestamp as St } from "./index.DWQE2iX-.js";
3
- import { numberFormatter as ls, pluralize as us, Bubble as cs } from "./App.B-md2rcu.js";
2
+ import { n as as, useUserPreferences as os, formatTimestamp as St } from "./index.0JHn1e2U.js";
3
+ import { numberFormatter as ls, pluralize as us, Bubble as cs } from "./App.CC33vL5i.js";
4
4
  import Ht from "clsx";
5
5
  import fs, { useState as Ae, useEffect as Jt, useContext as Vt } from "react";
6
- import { useMarkdown as hs } from "./useMarkdown.CTShtPKa.js";
7
- import { ChatContext as ds, AppContext as ms } from "./LogoEntry.CRQF4cxX.js";
8
- import { BubbleActions as ps } from "./BubbleActions.B8rq1SsN.js";
6
+ import { useMarkdown as hs } from "./useMarkdown.BF1KYabA.js";
7
+ import { ChatContext as ds, AppContext as ms } from "./LogoEntry.BMOnjgmn.js";
8
+ import { BubbleActions as ps } from "./BubbleActions.es9LLF18.js";
9
9
  const Me = {
10
10
  isEmpty: !0
11
11
  };
@@ -1,9 +1,9 @@
1
1
  import { jsx as a, Fragment as S, jsxs as b } from "react/jsx-runtime";
2
- import { Bubble as k } from "./App.B-md2rcu.js";
3
- import { Button as C } from "./LogoEntry.CRQF4cxX.js";
2
+ import { Bubble as k } from "./App.CC33vL5i.js";
3
+ import { Button as C } from "./LogoEntry.BMOnjgmn.js";
4
4
  import { useState as H, useMemo as m, isValidElement as T, useEffect as O } from "react";
5
- import { useMarkdown as w } from "./useMarkdown.CTShtPKa.js";
6
- import { BubbleCopyToClipboard as I } from "./BubbleActions.B8rq1SsN.js";
5
+ import { useMarkdown as w } from "./useMarkdown.BF1KYabA.js";
6
+ import { BubbleCopyToClipboard as I } from "./BubbleActions.es9LLF18.js";
7
7
  const L = 200, h = ({ string: e, idealLength: r = L }) => {
8
8
  if (e.length <= r)
9
9
  return {
@@ -1,5 +1,5 @@
1
1
  import { jsx as e } from "react/jsx-runtime";
2
- import { Panel as l, isProbablyMobile as f } from "./App.B-md2rcu.js";
2
+ import { Panel as l, isProbablyMobile as f } from "./App.CC33vL5i.js";
3
3
  const s = ({
4
4
  open: r,
5
5
  onOpenChange: a,
@@ -1,14 +1,14 @@
1
1
  import { jsx as e, jsxs as p, Fragment as B } from "react/jsx-runtime";
2
- import { y as L, V as ee, INFINITE_SCROLL_THRESHOLD as ue, INFINITE_SCROLL_LIMIT as he, n as ae, LOCAL_STORAGE_PREFIX as N, LOCAL_STORAGE_SORT_TIMESTAMP as fe, LOCAL_STORAGE_SORT_TOKEN_USAGE as pe, LOCAL_STORAGE_SORT as Ce, LOCAL_STORAGE_CHAT_ID as ye, useDeleteChat as Se, graphQLRequest as ge, SERVICE_TYPES as Te, ACTION_SORT as xe, LOCAL_STORAGE_SEARCH as Ae, LOCAL_STORAGE_KEYWORD_MATCH_ALL as De, LOCAL_STORAGE_HISTORY_WITH_MEDIA_ONLY as _e, LOCAL_STORAGE_HISTORY_WITH_SHARED_ONLY as ke, useChatsHistory as we, useUserChatStats as Re, ACTION_SEARCH as Ee } from "./index.DWQE2iX-.js";
3
- import { DataGridContext as X, useColumnMeasurement as Ie, getBodyClass as be, DataGridHeader as Oe, DataGridRow as oe, DataGridCell as w, DataGridCellSort as Q, ButtonIconDelete as Le, DataGrid as Ne, InlineFilter as ve, AnimatedWrapper as He } from "./ButtonIconDelete.JtVTVoIm.js";
4
- import { pluralize as te, isProbablyMobile as le, numberFormatter as Me, ResponsiveTooltip as Ge, useAiChat as Fe, useLocalStorage as v, LazyToastContainerWrapper as Be, v4 as Ue, CHAT_RESET as Pe, CHAT_SET_ATTACHMENTS as Ve, CHAT_SET_STATUS as We, showErrorToast as Ye, ConfirmationPanel as $e, debounce as qe, Toggle as Z, ButtonCancel as Ke } from "./App.B-md2rcu.js";
5
- import { forwardRef as je, useContext as z, useRef as H, useState as W, useCallback as Y, useEffect as F, useImperativeHandle as ze, useMemo as J } from "react";
6
- import { CellWrapper as ne, ButtonIcon as Xe, IconRotateLeft as Qe, CARDS as Ze, HistoryContext as ie, ChatContext as Je, SortDirections as G, APP_CLASSNAME as et, TOAST_CHAT_DELETED as tt, HISTORY_TITLE as nt } from "./LogoEntry.CRQF4cxX.js";
7
- import { GenericPanel as rt } from "./GenericPanel.etdBsslu.js";
8
- import { Pill as re } from "./index.Du1LYe4A.js";
2
+ import { y as L, V as ee, INFINITE_SCROLL_THRESHOLD as ue, INFINITE_SCROLL_LIMIT as he, n as ae, LOCAL_STORAGE_PREFIX as N, LOCAL_STORAGE_SORT_TIMESTAMP as fe, LOCAL_STORAGE_SORT_TOKEN_USAGE as pe, LOCAL_STORAGE_SORT as Ce, LOCAL_STORAGE_CHAT_ID as ye, useDeleteChat as Se, graphQLRequest as ge, SERVICE_TYPES as Te, ACTION_SORT as xe, LOCAL_STORAGE_SEARCH as Ae, LOCAL_STORAGE_KEYWORD_MATCH_ALL as De, LOCAL_STORAGE_HISTORY_WITH_MEDIA_ONLY as _e, LOCAL_STORAGE_HISTORY_WITH_SHARED_ONLY as ke, useChatsHistory as we, useUserChatStats as Re, ACTION_SEARCH as Ee } from "./index.0JHn1e2U.js";
3
+ import { DataGridContext as z, useColumnMeasurement as Ie, getBodyClass as Oe, DataGridHeader as be, DataGridRow as oe, DataGridCell as w, DataGridCellSort as Q, ButtonIconDelete as Le, DataGrid as Ne, InlineFilter as ve, AnimatedWrapper as He } from "./ButtonIconDelete.90PiEjs7.js";
4
+ import { pluralize as te, isProbablyMobile as le, numberFormatter as Me, ResponsiveTooltip as Ge, useAiChat as Fe, useLocalStorage as v, v4 as Be, CHAT_RESET as Ue, CHAT_SET_ATTACHMENTS as Ve, CHAT_SET_STATUS as Pe, showErrorToast as We, ConfirmationPanel as Ye, debounce as $e, Toggle as Z, ButtonCancel as qe } from "./App.CC33vL5i.js";
5
+ import { forwardRef as Ke, useContext as X, useRef as H, useState as W, useCallback as Y, useEffect as F, useImperativeHandle as je, useMemo as J } from "react";
6
+ import { CellWrapper as ne, ButtonIcon as Xe, IconRotateLeft as ze, CARDS as Qe, HistoryContext as ie, ChatContext as Ze, SortDirections as G, TOAST_CHAT_DELETED as Je, HISTORY_TITLE as et } from "./LogoEntry.BMOnjgmn.js";
7
+ import { GenericPanel as tt } from "./GenericPanel.Bf-hQWg5.js";
8
+ import { Pill as re } from "./index.Bc_G-sOy.js";
9
9
  import K from "clsx";
10
- const st = 20, at = 5, ot = "20px", se = "data-row-index";
11
- function lt(t) {
10
+ const nt = 20, rt = 5, st = "20px", se = "data-row-index";
11
+ function at(t) {
12
12
  let n = t.parentElement;
13
13
  for (; n; ) {
14
14
  const o = getComputedStyle(n).overflowY;
@@ -18,8 +18,8 @@ function lt(t) {
18
18
  }
19
19
  return null;
20
20
  }
21
- function it({ data: t, children: n, batchSize: m = st, threshold: o = at, rootMargin: C = ot, onVisibleCountChange: x, className: g }, i) {
22
- const c = z(X), A = H(null), u = H(null), l = H(null), s = t.length, D = Math.min(m + o, s), [d, R] = W(D), T = d < s, h = Y((r) => {
21
+ function ot({ data: t, children: n, batchSize: m = nt, threshold: o = rt, rootMargin: C = st, onVisibleCountChange: x, className: g }, i) {
22
+ const c = X(z), A = H(null), u = H(null), l = H(null), s = t.length, D = Math.min(m + o, s), [d, R] = W(D), T = d < s, h = Y((r) => {
23
23
  const S = A.current;
24
24
  if (!S)
25
25
  return;
@@ -42,7 +42,7 @@ function it({ data: t, children: n, batchSize: m = st, threshold: o = at, rootMa
42
42
  }, [
43
43
  d,
44
44
  h
45
- ]), ze(i, () => ({
45
+ ]), je(i, () => ({
46
46
  scrollToIndex: (r) => {
47
47
  if (r < 0 || r >= s) {
48
48
  console.warn(`scrollToIndex: index ${r} is out of bounds (0-${s - 1})`);
@@ -80,7 +80,7 @@ function it({ data: t, children: n, batchSize: m = st, threshold: o = at, rootMa
80
80
  s
81
81
  ]), E = Y((r) => {
82
82
  if (u.current && (u.current.disconnect(), u.current = null), r && T) {
83
- const S = lt(r);
83
+ const S = at(r);
84
84
  u.current = new IntersectionObserver(y, {
85
85
  root: S,
86
86
  rootMargin: C
@@ -94,7 +94,7 @@ function it({ data: t, children: n, batchSize: m = st, threshold: o = at, rootMa
94
94
  F(() => () => {
95
95
  u.current?.disconnect();
96
96
  }, []);
97
- const O = J(() => T ? Math.max(0, d - o) : -1, [
97
+ const b = J(() => T ? Math.max(0, d - o) : -1, [
98
98
  T,
99
99
  d,
100
100
  o
@@ -106,7 +106,7 @@ function it({ data: t, children: n, batchSize: m = st, threshold: o = at, rootMa
106
106
  ]), M = J(() => {
107
107
  const r = [], S = Math.min(d, s) - 1;
108
108
  for (let f = 0; f < d && f < s; f++) {
109
- f === O && r.push(/* @__PURE__ */ e("div", {
109
+ f === b && r.push(/* @__PURE__ */ e("div", {
110
110
  ref: E,
111
111
  "aria-hidden": "true",
112
112
  style: {
@@ -115,7 +115,7 @@ function it({ data: t, children: n, batchSize: m = st, threshold: o = at, rootMa
115
115
  }
116
116
  }, "__infinite-scroll-marker-inline__"));
117
117
  const I = !T && f === S;
118
- r.push(/* @__PURE__ */ e(X.Provider, {
118
+ r.push(/* @__PURE__ */ e(z.Provider, {
119
119
  value: {
120
120
  ...U,
121
121
  isLastRow: I
@@ -129,7 +129,7 @@ function it({ data: t, children: n, batchSize: m = st, threshold: o = at, rootMa
129
129
  })
130
130
  }, f));
131
131
  }
132
- return O === d && T && r.push(/* @__PURE__ */ e("div", {
132
+ return b === d && T && r.push(/* @__PURE__ */ e("div", {
133
133
  ref: E,
134
134
  "aria-hidden": "true",
135
135
  style: {
@@ -141,15 +141,15 @@ function it({ data: t, children: n, batchSize: m = st, threshold: o = at, rootMa
141
141
  t,
142
142
  d,
143
143
  s,
144
- O,
144
+ b,
145
145
  T,
146
146
  n,
147
147
  E,
148
148
  U
149
149
  ]);
150
150
  Ie(A, M);
151
- const P = be(g);
152
- return /* @__PURE__ */ e(X.Provider, {
151
+ const V = Oe(g);
152
+ return /* @__PURE__ */ e(z.Provider, {
153
153
  value: {
154
154
  ...c,
155
155
  cellWrapper: ne.BODY
@@ -157,12 +157,12 @@ function it({ data: t, children: n, batchSize: m = st, threshold: o = at, rootMa
157
157
  children: /* @__PURE__ */ e("div", {
158
158
  ref: A,
159
159
  role: "rowgroup",
160
- className: P,
160
+ className: V,
161
161
  children: M
162
162
  })
163
163
  });
164
164
  }
165
- const ct = /* @__PURE__ */ je(it), dt = ({
165
+ const lt = /* @__PURE__ */ Ke(ot), it = ({
166
166
  sortDirection: t,
167
167
  sortedCell: n,
168
168
  onSortChange: m,
@@ -173,7 +173,7 @@ const ct = /* @__PURE__ */ je(it), dt = ({
173
173
  const g = (i) => {
174
174
  m(i);
175
175
  };
176
- return /* @__PURE__ */ e(Oe, { caption: o, children: /* @__PURE__ */ p(oe, { children: [
176
+ return /* @__PURE__ */ e(be, { caption: o, children: /* @__PURE__ */ p(oe, { children: [
177
177
  /* @__PURE__ */ e(w, { className: "invisible", children: "Row" }),
178
178
  x ? /* @__PURE__ */ p(B, { children: [
179
179
  /* @__PURE__ */ e(w, { className: "text-xs sm:text-sm", children: "Summary" }),
@@ -219,7 +219,7 @@ const ct = /* @__PURE__ */ je(it), dt = ({
219
219
  /* @__PURE__ */ e(w, { align: "right", className: "text-xs sm:text-sm", children: "Actions" })
220
220
  ] }) });
221
221
  };
222
- function mt(t, n, m) {
222
+ function ct(t, n, m) {
223
223
  return m && n > t ? `Showing ${te(`${t} chat`, t)} out of ${n}` : te(`${t} chat`, t);
224
224
  }
225
225
  const j = {
@@ -228,7 +228,7 @@ const j = {
228
228
  timestamp: "dark:text-copy-medium sm:whitespace-nowrap text-xs sm:text-sm max-w-20 sm:max-w-none",
229
229
  tokenUsage: "dark:text-copy-medium text-xs sm:text-sm"
230
230
  };
231
- function ut({
231
+ function dt({
232
232
  item: t,
233
233
  index: n,
234
234
  onClickRestore: m,
@@ -264,7 +264,7 @@ function ut({
264
264
  await m(t);
265
265
  },
266
266
  children: /* @__PURE__ */ e(
267
- Qe,
267
+ ze,
268
268
  {
269
269
  size: "size-3",
270
270
  monotone: !0,
@@ -299,7 +299,7 @@ function ut({
299
299
  D
300
300
  ] });
301
301
  }
302
- const ht = ({
302
+ const mt = ({
303
303
  filteredHistory: t,
304
304
  sortDirection: n,
305
305
  sortedCell: m,
@@ -329,7 +329,7 @@ const ht = ({
329
329
  }, [u, t]), F(() => {
330
330
  D.current = !1;
331
331
  }, [u]);
332
- const d = mt(
332
+ const d = ct(
333
333
  t.length,
334
334
  i ?? t.length,
335
335
  c
@@ -347,7 +347,7 @@ const ht = ({
347
347
  loading: g && t.length > 0,
348
348
  children: [
349
349
  /* @__PURE__ */ e(
350
- dt,
350
+ it,
351
351
  {
352
352
  sortDirection: n,
353
353
  sortedCell: m,
@@ -358,14 +358,14 @@ const ht = ({
358
358
  }
359
359
  ),
360
360
  g && t.length === 0 ? /* @__PURE__ */ e("div", { className: "p-4 text-center", role: "status", "aria-live": "polite", children: "Loading..." }) : /* @__PURE__ */ e(
361
- ct,
361
+ lt,
362
362
  {
363
363
  ref: s,
364
364
  data: t.filter((h) => h?.summary),
365
365
  batchSize: he,
366
366
  threshold: ue,
367
367
  children: (h, y) => /* @__PURE__ */ e(
368
- ut,
368
+ dt,
369
369
  {
370
370
  item: h,
371
371
  index: y,
@@ -374,14 +374,14 @@ const ht = ({
374
374
  showTokenUsage: !l,
375
375
  isActive: u === h.id
376
376
  },
377
- `${Ze.HISTORY.TITLE}-${h.id}-${y}`
377
+ `${Qe.HISTORY.TITLE}-${h.id}-${y}`
378
378
  )
379
379
  }
380
380
  )
381
381
  ]
382
382
  }
383
383
  );
384
- }, ft = ({
384
+ }, ut = ({
385
385
  filteredHistory: t,
386
386
  onOpenChange: n,
387
387
  mutate: m,
@@ -395,41 +395,41 @@ const ht = ({
395
395
  id: "",
396
396
  timestamp: "",
397
397
  message: ""
398
- }), { state: l, dispatch: s } = z(ie), D = {
398
+ }), { state: l, dispatch: s } = X(ie), D = {
399
399
  sortDirection: l.sortDirection || G.DESC,
400
400
  sortedCell: l.sortedCell || L
401
401
  }, {
402
402
  setChatId: d,
403
403
  setInitialMessages: R,
404
404
  dispatch: T
405
- } = z(Je), { setInput: h } = Fe(), [y, E] = v({
405
+ } = X(Ze), { setInput: h } = Fe(), [y, E] = v({
406
406
  key: N + fe,
407
407
  initialValue: G.DESC
408
- }), [O, U] = v({
408
+ }), [b, U] = v({
409
409
  key: N + pe,
410
410
  initialValue: G.ASC
411
411
  }), [, M] = v({
412
412
  key: N + Ce,
413
413
  initialValue: L
414
- }), [P] = v({
414
+ }), [V] = v({
415
415
  key: N + ye,
416
416
  initialValue: ""
417
417
  }), { mutateAsync: r } = Se({ getAccessToken: A }), S = (a) => {
418
- const b = l.sortedCell === a;
419
- let _, V;
418
+ const O = l.sortedCell === a;
419
+ let _, P;
420
420
  switch (a) {
421
421
  case L:
422
- V = E, _ = b ? l.sortDirection : y;
422
+ P = E, _ = O ? l.sortDirection : y;
423
423
  break;
424
424
  case ee:
425
- V = U, _ = b ? l.sortDirection : O;
425
+ P = U, _ = O ? l.sortDirection : b;
426
426
  break;
427
427
  default:
428
- V = E, _ = b ? l.sortDirection : y;
428
+ P = E, _ = O ? l.sortDirection : y;
429
429
  break;
430
430
  }
431
431
  const q = _ === G.ASC ? G.DESC : G.ASC;
432
- V(q), M(a), s({
432
+ P(q), M(a), s({
433
433
  type: xe,
434
434
  payload: {
435
435
  sortedCell: a,
@@ -441,23 +441,22 @@ const ht = ({
441
441
  await r({
442
442
  userId: c?.username || "",
443
443
  id: a
444
- }), m(""), await Ye(tt, {
445
- autoClose: 2e3,
446
- containerId: "history-table"
444
+ }), m(""), await We(Je, {
445
+ duration: 2e3
447
446
  });
448
447
  } catch {
449
448
  }
450
449
  }, I = async (a) => {
451
450
  try {
452
- const b = await A(), _ = await ge({
453
- accessToken: b,
451
+ const O = await A(), _ = await ge({
452
+ accessToken: O,
454
453
  type: Te.GET_CHAT,
455
454
  params: {
456
455
  id: a.id
457
456
  }
458
457
  });
459
458
  T({
460
- type: We,
459
+ type: Pe,
461
460
  payload: {
462
461
  streaming: !1,
463
462
  loading: !1,
@@ -489,8 +488,8 @@ const ht = ({
489
488
  ] })
490
489
  ] })
491
490
  ] })
492
- ), P === a.id && (d(Ue()), R([]), h(""), T({
493
- type: Pe,
491
+ ), V === a.id && (d(Be()), R([]), h(""), T({
492
+ type: Ue,
494
493
  payload: {
495
494
  privateChat: !1,
496
495
  reasoningText: !1
@@ -502,30 +501,27 @@ const ht = ({
502
501
  }
503
502
  }));
504
503
  };
505
- return /* @__PURE__ */ p("div", { children: [
506
- /* @__PURE__ */ e("div", { className: et, children: /* @__PURE__ */ e(Be, { containerId: "history-table" }) }),
507
- /* @__PURE__ */ e(
508
- ht,
509
- {
510
- filteredHistory: t,
511
- sortDirection: D.sortDirection,
512
- sortedCell: D.sortedCell,
513
- onSortChange: S,
514
- onClickRestore: I,
515
- onClickDelete: $,
516
- isLoading: o,
517
- totalHistoryCount: C,
518
- isFiltered: x,
519
- isSearchActive: g,
520
- activeChatId: P
521
- }
522
- )
523
- ] });
524
- }, _t = ({
504
+ return /* @__PURE__ */ e("div", { children: /* @__PURE__ */ e(
505
+ mt,
506
+ {
507
+ filteredHistory: t,
508
+ sortDirection: D.sortDirection,
509
+ sortedCell: D.sortedCell,
510
+ onSortChange: S,
511
+ onClickRestore: I,
512
+ onClickDelete: $,
513
+ isLoading: o,
514
+ totalHistoryCount: C,
515
+ isFiltered: x,
516
+ isSearchActive: g,
517
+ activeChatId: V
518
+ }
519
+ ) });
520
+ }, At = ({
525
521
  open: t,
526
522
  onOpenChange: n
527
523
  }) => {
528
- const m = H(null), { getAccessToken: o, user: C } = ae(), [x, g] = W([]), i = H(null), { state: c, dispatch: A } = z(ie), [, u] = v({
524
+ const m = H(null), { getAccessToken: o, user: C } = ae(), [x, g] = W([]), i = H(null), { state: c, dispatch: A } = X(ie), [, u] = v({
529
525
  key: N + Ae,
530
526
  initialValue: c.searchString
531
527
  }), [l, s] = v({
@@ -537,13 +533,13 @@ const ht = ({
537
533
  }), [R, T] = v({
538
534
  key: N + ke,
539
535
  initialValue: !1
540
- }), [h, y] = W(!1), [E, O] = W(null), [U, M] = W(null), P = Y(
536
+ }), [h, y] = W(!1), [E, b] = W(null), [U, M] = W(null), V = Y(
541
537
  (k, me) => {
542
- O(() => k), M(me), y(!0);
538
+ b(() => k), M(me), y(!0);
543
539
  },
544
540
  []
545
541
  ), r = Y(() => {
546
- E && E(), O(null), M(null);
542
+ E && E(), b(null), M(null);
547
543
  }, [E]), {
548
544
  data: S,
549
545
  refetch: f,
@@ -562,7 +558,7 @@ const ht = ({
562
558
  }), { data: a } = Re({
563
559
  user: C?.username,
564
560
  getAccessToken: o
565
- }), b = a && a.totalChats ? a.totalChats - a.privateChats - a.deletedChats : 0;
561
+ }), O = a && a.totalChats ? a.totalChats - a.privateChats - a.deletedChats : 0;
566
562
  F(() => {
567
563
  S && g(S);
568
564
  }, [S]);
@@ -571,7 +567,7 @@ const ht = ({
571
567
  type: Ee,
572
568
  payload: { searchString: k }
573
569
  });
574
- }, V = qe((k) => {
570
+ }, P = $e((k) => {
575
571
  _(k.target.value.trim());
576
572
  }, 800), q = (k) => {
577
573
  s(k);
@@ -582,7 +578,7 @@ const ht = ({
582
578
  };
583
579
  return /* @__PURE__ */ p(B, { children: [
584
580
  /* @__PURE__ */ e(
585
- $e,
581
+ Ye,
586
582
  {
587
583
  showConfirmation: h,
588
584
  setShowConfirmation: y,
@@ -596,13 +592,13 @@ const ht = ({
596
592
  }
597
593
  ),
598
594
  /* @__PURE__ */ e(
599
- rt,
595
+ tt,
600
596
  {
601
597
  open: t,
602
598
  onOpenChange: n,
603
- title: nt,
599
+ title: et,
604
600
  initialFocus: m,
605
- footer: /* @__PURE__ */ e(Ke, { onOpenChange: n, ref: m }),
601
+ footer: /* @__PURE__ */ e(qe, { onOpenChange: n, ref: m }),
606
602
  children: /* @__PURE__ */ p("div", { className: "flex h-full flex-col gap-3", children: [
607
603
  /* @__PURE__ */ e(
608
604
  ve,
@@ -644,7 +640,7 @@ const ht = ({
644
640
  )
645
641
  ] }),
646
642
  inputSearchRef: i,
647
- onSearchChange: V,
643
+ onSearchChange: P,
648
644
  defaultValue: c.searchString,
649
645
  resetDisabled: c.searchString === "",
650
646
  onResetSearch: () => {
@@ -654,16 +650,16 @@ const ht = ({
654
650
  ),
655
651
  $ && /* @__PURE__ */ e("p", { className: "m-0 text-copy-error-light", children: "Failed to load history." }),
656
652
  !$ && /* @__PURE__ */ e(He, { dependency: x?.length ?? 0, children: /* @__PURE__ */ e(
657
- ft,
653
+ ut,
658
654
  {
659
655
  mutate: f,
660
656
  filteredHistory: x,
661
657
  onOpenChange: n,
662
658
  isLoading: I,
663
- totalHistoryCount: b,
659
+ totalHistoryCount: O,
664
660
  isFiltered: !!c.searchString,
665
661
  isSearchActive: !!c.searchString,
666
- requestConfirmation: P
662
+ requestConfirmation: V
667
663
  }
668
664
  ) })
669
665
  ] })
@@ -672,5 +668,5 @@ const ht = ({
672
668
  ] });
673
669
  };
674
670
  export {
675
- _t as HistoryPanel
671
+ At as HistoryPanel
676
672
  };
@@ -1,8 +1,8 @@
1
1
  import { jsxs as i, jsx as e, Fragment as x } from "react/jsx-runtime";
2
- import { n as N, getLayoutPaddingClass as C, getMessageContaintWrapperClass as v, isTauri as w } from "./index.DWQE2iX-.js";
3
- import { Logo as k, PASSWORD_PLACEHOLDER as M, ButtonIcon as u, IconShow as I, IconHide as L, Button as y, LOG_IN as E, LOG_IN_PASSKEY as S, IconPasskey as P } from "./LogoEntry.CRQF4cxX.js";
4
- import { Card as B } from "./index.DmPS0LKW.js";
5
- import { TextInput as O, TextInputMask as T } from "./index.DbzrE5oY.js";
2
+ import { n as N, getLayoutPaddingClass as C, getMessageContaintWrapperClass as v, isTauri as w } from "./index.0JHn1e2U.js";
3
+ import { Logo as k, PASSWORD_PLACEHOLDER as M, ButtonIcon as u, IconShow as I, IconHide as L, Button as y, LOG_IN as E, LOG_IN_PASSKEY as S, IconPasskey as P } from "./LogoEntry.BMOnjgmn.js";
4
+ import { Card as B } from "./index.6L4XnWtC.js";
5
+ import { TextInput as O, TextInputMask as T } from "./index.WIzP-Pra.js";
6
6
  import { useState as r, useEffect as f } from "react";
7
7
  const G = () => {
8
8
  const { login: h, logoutReason: o, loginWithPasskey: g } = N(), [t, l] = r(""), [d, n] = r(""), [m, p] = r(!0), [s, c] = r({