@versini/sassysaint 8.54.0 → 8.55.1

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 (25) hide show
  1. package/dist/chunks/{AboutChangelog.B9nDZe3K.js → AboutChangelog.Ui0aL-lC.js} +2 -2
  2. package/dist/chunks/{AboutEntry.BeGJGDPe.js → AboutEntry.8-poWRVZ.js} +7 -7
  3. package/dist/chunks/{App.BmUEowbc.js → App.D4JpcHTh.js} +1444 -1439
  4. package/dist/chunks/{Chart.CzdIORdS.js → Chart.Bj_vrc-7.js} +2 -2
  5. package/dist/chunks/{ChatBubbleAssistant.OB8R738h.js → ChatBubbleAssistant.BGjEGk2A.js} +4 -4
  6. package/dist/chunks/{ChatBubbleUser.D8HJY2x_.js → ChatBubbleUser.CMbGWHJL.js} +3 -3
  7. package/dist/chunks/{ChatHistoryTable.r5JcCYqk.js → ChatHistoryTable.DFFCkdnm.js} +3 -3
  8. package/dist/chunks/HistoryEntry.DxHT9hLW.js +291 -0
  9. package/dist/chunks/{ProfileEntry.DloW2WvY.js → ProfileEntry.Cu_7dz-k.js} +2 -2
  10. package/dist/chunks/{SettingsEntry.eJrAIi7y.js → SettingsEntry.BzuFMnrG.js} +3 -3
  11. package/dist/chunks/{Table.BnhJmkZC.js → Table.DD1z_2ed.js} +2 -2
  12. package/dist/chunks/{UsageEntry.CCXNc5Y_.js → UsageEntry.Pm6efYMB.js} +3 -3
  13. package/dist/chunks/{UserMemoriesPanel.B38gBvdE.js → UserMemoriesPanel.Cd0zuT_2.js} +3 -3
  14. package/dist/chunks/{index.C_x8MF7I.js → index.B2ZY5rib.js} +2 -2
  15. package/dist/chunks/{index.oOqpVbjJ.js → index.CTmqoB95.js} +269 -268
  16. package/dist/chunks/{index.CegCInPa.js → index.CwQaJutb.js} +1 -1
  17. package/dist/chunks/{index.D_k-KOpB.js → index.DAtPf6qE.js} +1 -1
  18. package/dist/chunks/{index.ngl9rapw.js → index.DnnO74uJ.js} +3 -3
  19. package/dist/chunks/{index.Dj1SDcB6.js → index.OEz7NbOq.js} +1 -1
  20. package/dist/chunks/{index.B6rRPzOs.js → index.wz1Fk7Rs.js} +1 -1
  21. package/dist/chunks/{useMarkdown.Cj71fxpP.js → useMarkdown.DBg9cIZq.js} +6 -6
  22. package/dist/components/SassySaint/SassySaint.js +1 -1
  23. package/dist/index.js +4 -4
  24. package/package.json +3 -3
  25. package/dist/chunks/HistoryEntry.BuY2Bv0R.js +0 -282
@@ -1,4 +1,4 @@
1
- import { convert as E, convertElement as u } from "./useMarkdown.Cj71fxpP.js";
1
+ import { convert as E, convertElement as u } from "./useMarkdown.DBg9cIZq.js";
2
2
  const f = (
3
3
  // Note: overloads like this are needed to support optional generics.
4
4
  /**
@@ -1,4 +1,4 @@
1
- import { factorySpace as M, markdownLineEnding as g } from "./useMarkdown.Cj71fxpP.js";
1
+ import { factorySpace as M, markdownLineEnding as g } from "./useMarkdown.DBg9cIZq.js";
2
2
  import { longestStreak as q } from "./index.Cyw5OC0t.js";
3
3
  function b() {
4
4
  return {
@@ -1,6 +1,6 @@
1
- import { getDefaultExportFromCjs as kn } from "./App.BmUEowbc.js";
2
- import { visit as In } from "./useMarkdown.Cj71fxpP.js";
3
- import { toText as Cn } from "./index.CegCInPa.js";
1
+ import { getDefaultExportFromCjs as kn } from "./App.D4JpcHTh.js";
2
+ import { visit as In } from "./useMarkdown.DBg9cIZq.js";
3
+ import { toText as Cn } from "./index.CwQaJutb.js";
4
4
  function xn(e) {
5
5
  const t = e.regex, i = e.COMMENT("//", "$", { contains: [{ begin: /\\\n/ }] }), a = "decltype\\(auto\\)", r = "[a-zA-Z_]\\w*::", d = "(?!struct)(" + a + "|" + t.optional(r) + "[a-zA-Z_]\\w*" + t.optional("<[^<>]+>") + ")", c = {
6
6
  className: "type",
@@ -1,4 +1,4 @@
1
- import { convert as se, visitParents as Me, unicodeWhitespace as I, unicodePunctuation as N, normalizeIdentifier as _, classifyCharacter as W, visit as _e, toString as ce, EXIT as Oe, asciiAlphanumeric as Z, asciiAlpha as P, markdownLineEndingOrSpace as A, asciiControl as je, blankLine as Be, factorySpace as S, splice as q, resolveAll as We, markdownLineEnding as R, markdownSpace as T, combineExtensions as $e } from "./useMarkdown.Cj71fxpP.js";
1
+ import { convert as se, visitParents as Me, unicodeWhitespace as I, unicodePunctuation as N, normalizeIdentifier as _, classifyCharacter as W, visit as _e, toString as ce, EXIT as Oe, asciiAlphanumeric as Z, asciiAlpha as P, markdownLineEndingOrSpace as A, asciiControl as je, blankLine as Be, factorySpace as S, splice as q, resolveAll as We, markdownLineEnding as R, markdownSpace as T, combineExtensions as $e } from "./useMarkdown.DBg9cIZq.js";
2
2
  import { longestStreak as qe } from "./index.Cyw5OC0t.js";
3
3
  function ne(e, n) {
4
4
  const t = String(e);
@@ -1,5 +1,5 @@
1
1
  import { jsxs as p, jsx as i } from "react/jsx-runtime";
2
- import { te as B } from "./index.oOqpVbjJ.js";
2
+ import { te as B } from "./index.CTmqoB95.js";
3
3
  import { useState as I, useEffect as k } from "react";
4
4
  import s from "clsx";
5
5
  const h = "av-bubble", w = ({
@@ -1,8 +1,8 @@
1
1
  import * as rn from "react/jsx-runtime";
2
2
  import { jsx as se, jsxs as Pn } from "react/jsx-runtime";
3
- import { te as Ir, isTauri as Tr, unObfuscate as Pr, obfuscate as Ar } from "./index.oOqpVbjJ.js";
3
+ import { te as Ir, isTauri as Tr, unObfuscate as Pr, obfuscate as Ar } from "./index.CTmqoB95.js";
4
4
  import zr, { useState as Lt, useEffect as _t, useCallback as vt, useRef as Re } from "react";
5
- import { getDefaultExportFromCjs as Nt } from "./App.BmUEowbc.js";
5
+ import { getDefaultExportFromCjs as Nt } from "./App.D4JpcHTh.js";
6
6
  import Lr from "clsx";
7
7
  const Rt = ({
8
8
  children: e,
@@ -6900,7 +6900,7 @@ class uu {
6900
6900
  if (!this.remarkGfm) {
6901
6901
  const { default: n } = await import(
6902
6902
  /* webpackChunkName: "md-remark" */
6903
- "./index.Dj1SDcB6.js"
6903
+ "./index.OEz7NbOq.js"
6904
6904
  );
6905
6905
  this.remarkGfm = n;
6906
6906
  }
@@ -6911,7 +6911,7 @@ class uu {
6911
6911
  hu("https://cdn.jsdelivr.net/npm/katex@latest/dist/katex.min.css");
6912
6912
  const { default: n } = await import(
6913
6913
  /* webpackChunkName: "md-rehype-katex" */
6914
- "./index.C_x8MF7I.js"
6914
+ "./index.B2ZY5rib.js"
6915
6915
  );
6916
6916
  this.rehypeKatex = n;
6917
6917
  }
@@ -6921,7 +6921,7 @@ class uu {
6921
6921
  if (!this.remarkMath) {
6922
6922
  const { default: n } = await import(
6923
6923
  /* webpackChunkName: "md-remark" */
6924
- "./index.D_k-KOpB.js"
6924
+ "./index.DAtPf6qE.js"
6925
6925
  );
6926
6926
  this.remarkMath = n;
6927
6927
  }
@@ -6931,7 +6931,7 @@ class uu {
6931
6931
  if (!this.rehypeHighlight) {
6932
6932
  const { default: n } = await import(
6933
6933
  /* webpackChunkName: "md-rehype-highlight" */
6934
- "./index.ngl9rapw.js"
6934
+ "./index.DnnO74uJ.js"
6935
6935
  );
6936
6936
  this.rehypeHighlight = n;
6937
6937
  }
@@ -1,5 +1,5 @@
1
1
  import "react/jsx-runtime";
2
- import { SassySaint as a } from "../../chunks/index.oOqpVbjJ.js";
2
+ import { SassySaint as a } from "../../chunks/index.CTmqoB95.js";
3
3
  export {
4
4
  a as SassySaint
5
5
  };
package/dist/index.js CHANGED
@@ -1,12 +1,12 @@
1
- import { SassySaint as r } from "./chunks/index.oOqpVbjJ.js";
1
+ import { SassySaint as r } from "./chunks/index.CTmqoB95.js";
2
2
  /*!
3
- @sassysaint/client v8.54.0
3
+ @sassysaint/client v8.55.1
4
4
  © 2025 gizmette.com
5
5
  */
6
6
  try {
7
7
  window.__VERSINI_SASSY_GLOBAL__ || (window.__VERSINI_SASSY_GLOBAL__ = {
8
- version: "8.54.0",
9
- buildTime: "09/28/2025 07:09 AM EDT",
8
+ version: "8.55.1",
9
+ buildTime: "10/05/2025 02:35 PM EDT",
10
10
  license: "MIT"
11
11
  });
12
12
  } catch {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@versini/sassysaint",
3
- "version": "8.54.0",
3
+ "version": "8.55.1",
4
4
  "license": "MIT",
5
5
  "author": "Arno Versini",
6
6
  "publishConfig": {
@@ -33,7 +33,7 @@
33
33
  "react-dom": "^18.3.1 || ^19.0.0"
34
34
  },
35
35
  "devDependencies": {
36
- "@sassysaint/client": "8.54.0",
36
+ "@sassysaint/client": "8.55.1",
37
37
  "@tailwindcss/vite": "4.1.13",
38
38
  "@versini/ui-styles": "6.0.3"
39
39
  },
@@ -45,5 +45,5 @@
45
45
  "sideEffects": [
46
46
  "**/*.css"
47
47
  ],
48
- "gitHead": "6db96b4328429598770e10f92d5c6054805941b2"
48
+ "gitHead": "22a5f660d9ec1482ce02e709fe2a160fb2a0e0da"
49
49
  }
@@ -1,282 +0,0 @@
1
- import { jsxs as m, jsx as t, Fragment as J } from "react/jsx-runtime";
2
- import { I as Q, n as z, INFINITE_SCROLL_LIMIT as H, INFINITE_SCROLL_THRESHOLD as Z, LOCAL_STORAGE_PREFIX as g, LOCAL_STORAGE_SORT_TIMESTAMP as ee, LOCAL_STORAGE_SORT_TOKEN_USAGE as te, LOCAL_STORAGE_SORT as ae, Ae as A, useUserPreferences as re, APP_CLASSNAME as se, mutateCall as N, SERVICE_TYPES as x, setNewProvider as oe, ACTION_SORT as ne, ue as ie, TOAST_CHAT_DELETED as ce, TOAST_PROVIDER_CHANGED as le, useChatsHistory as de, LOCAL_STORAGE_SEARCH as he, HISTORY_TITLE as me, Y as ue, debounce as Se, te as Ce, ACTION_SEARCH as pe } from "./index.oOqpVbjJ.js";
3
- import { HistoryContext as M, ChatContext as P, useAiChat as Te, E as D, e as h, ConfirmationPanel as fe, LazyToastContainerWrapper as ye, showErrorToast as Ee, CHAT_SET_PROVIDER as ge, showSuccessToast as Ae, CHAT_SET_STATUS as De, se as _e, a as Ie } from "./App.BmUEowbc.js";
4
- import { useRef as R, useState as L, useContext as _, useCallback as Oe, useEffect as V, Suspense as Re, lazy as Le } from "react";
5
- const ve = ({
6
- className: i,
7
- viewBox: l,
8
- title: u,
9
- monotone: S,
10
- ...d
11
- }) => /* @__PURE__ */ m(
12
- Q,
13
- {
14
- defaultViewBox: "0 0 512 512",
15
- size: "size-5",
16
- viewBox: l,
17
- className: i,
18
- title: u || "Search",
19
- ...d,
20
- children: [
21
- /* @__PURE__ */ t(
22
- "path",
23
- {
24
- d: "M0 208a208 208 0 1 0 416 0 208 208 0 1 0-416 0m352 0a144 144 0 1 1-288 0 144 144 0 1 1 288 0",
25
- opacity: S ? "1" : "0.4"
26
- }
27
- ),
28
- /* @__PURE__ */ t("path", { d: "m330.7 376 126.7 126.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L376 330.7c-12.7 17.3-28 32.6-45.3 45.3" })
29
- ]
30
- }
31
- ), ke = Le(
32
- () => import(
33
- /* webpackChunkName: "history-table" */
34
- "./ChatHistoryTable.r5JcCYqk.js"
35
- ).then((i) => ({ default: i.ChatHistoryTable }))
36
- ), be = ({
37
- filteredHistory: i,
38
- dispatch: l,
39
- onOpenChange: u,
40
- mutate: S
41
- }) => {
42
- const { user: d, getAccessToken: C } = z(), p = R(null), s = R({
43
- id: "",
44
- timestamp: "",
45
- message: ""
46
- }), [o, f] = L(!1), [T, I] = L(
47
- H + Z
48
- ), { state: n, dispatch: y } = _(M), O = {
49
- searchString: n.searchString || "",
50
- sortDirection: n.sortDirection || h.DESC,
51
- sortedCell: n.sortedCell || A
52
- }, {
53
- state: { provider: v },
54
- setChatId: c,
55
- setInitialMessages: G
56
- } = _(P), { setInput: U } = Te(), [k, b] = D({
57
- key: g + ee,
58
- initialValue: h.DESC
59
- }), [F, B] = D({
60
- key: g + te,
61
- initialValue: h.ASC
62
- }), [, Y] = D({
63
- key: g + ae,
64
- initialValue: A
65
- }), { refetch: $ } = re({
66
- user: d?.username,
67
- getAccessToken: C
68
- }), j = (e) => {
69
- const r = n.sortedCell === e;
70
- let a, E;
71
- switch (e) {
72
- case A:
73
- E = b, a = r ? n.sortDirection : k;
74
- break;
75
- case ie:
76
- E = B, a = r ? n.sortDirection : F;
77
- break;
78
- default:
79
- E = b, a = r ? n.sortDirection : k;
80
- break;
81
- }
82
- const w = a === h.ASC ? h.DESC : h.ASC;
83
- E(w), Y(e), y({
84
- type: ne,
85
- payload: {
86
- sortedCell: e,
87
- sortDirection: w
88
- }
89
- });
90
- }, K = async () => {
91
- const e = s.current;
92
- try {
93
- await N({
94
- accessToken: await C(),
95
- type: x.DELETE_CHAT,
96
- params: {
97
- userId: d?.username || "",
98
- id: e.id
99
- }
100
- }), S(""), await Ee(ce, {
101
- autoClose: 2e3,
102
- containerId: "history-table"
103
- });
104
- } catch {
105
- }
106
- }, W = async (e) => {
107
- try {
108
- const r = await C(), a = await N({
109
- accessToken: r,
110
- type: x.GET_CHAT,
111
- params: {
112
- id: e.id
113
- }
114
- });
115
- a.status === 200 && (a.data.provider !== v && (await oe({
116
- provider: a.data.provider,
117
- accessToken: r,
118
- username: d?.username || ""
119
- }), l({
120
- type: ge,
121
- payload: {
122
- provider: a.data.provider
123
- }
124
- }), $(), await Ae(
125
- `${le} ${a.data.provider}`,
126
- {
127
- containerId: "toggle-provider"
128
- }
129
- )), l({
130
- type: De,
131
- payload: {
132
- restoring: !0,
133
- restoredModel: a.data?.model || "",
134
- restoredUsage: a.data?.tokenUsage || 0
135
- }
136
- }), U(""), c(e.id), G(a.data.messages), u(!1));
137
- } catch {
138
- }
139
- }, X = (e) => {
140
- s.current = {
141
- id: e.id,
142
- timestamp: e.timestamp,
143
- message: e.messages.length > 0 ? e.messages[0]?.content : ""
144
- }, f(!o);
145
- }, q = Oe((e) => {
146
- e[0].isIntersecting && I((a) => a + H);
147
- }, []);
148
- return V(() => {
149
- const e = {
150
- // root: null,
151
- rootMargin: "20px"
152
- }, r = new IntersectionObserver(q, e);
153
- p.current && r.observe(p.current);
154
- }), /* @__PURE__ */ m(J, { children: [
155
- /* @__PURE__ */ m(
156
- fe,
157
- {
158
- showConfirmation: o,
159
- setShowConfirmation: f,
160
- action: K,
161
- customStrings: {
162
- confirmAction: "Delete",
163
- cancelAction: "Cancel",
164
- title: "Delete chat"
165
- },
166
- children: [
167
- /* @__PURE__ */ t("p", { className: "m-0", children: "Are you sure you want to delete the following chat:" }),
168
- /* @__PURE__ */ m("ul", { className: "m-0", children: [
169
- /* @__PURE__ */ m("li", { children: [
170
- "Timestamp:",
171
- " ",
172
- /* @__PURE__ */ t("span", { className: "text-lg", children: s.current && s.current.timestamp })
173
- ] }),
174
- /* @__PURE__ */ m("li", { children: [
175
- "First message:",
176
- " ",
177
- /* @__PURE__ */ t("span", { className: "text-lg", children: s.current?.message })
178
- ] })
179
- ] })
180
- ]
181
- }
182
- ),
183
- /* @__PURE__ */ t("div", { className: se, children: /* @__PURE__ */ t(ye, { containerId: "history-table" }) }),
184
- /* @__PURE__ */ t(Re, { fallback: /* @__PURE__ */ t("div", {}), children: /* @__PURE__ */ t(
185
- ke,
186
- {
187
- filteredHistory: i,
188
- historyState: O,
189
- lastEntryToLoad: T,
190
- onClickSort: j,
191
- onClickRestore: W,
192
- onClickDelete: X,
193
- infinityScrollMarkerRef: p
194
- }
195
- ) })
196
- ] });
197
- }, ze = ({
198
- open: i,
199
- onOpenChange: l
200
- }) => {
201
- const { getAccessToken: u, user: S } = z(), { dispatch: d } = _(P), [C, p] = L([]), s = R(null), { state: o, dispatch: f } = _(M), { data: T, refetch: I } = de({
202
- enabled: i,
203
- user: S?.username || "",
204
- searchString: o.searchString || "",
205
- sortDirection: o.sortDirection || h.DESC,
206
- sortedCell: o.sortedCell || A,
207
- getAccessToken: u
208
- }), [, n] = D({
209
- key: g + he,
210
- initialValue: o.searchString
211
- });
212
- V(() => {
213
- T && p(T);
214
- }, [T]);
215
- const y = async (c) => {
216
- n(c), f({
217
- type: pe,
218
- payload: { searchString: c }
219
- });
220
- }, O = Se((c) => {
221
- y(c.target.value.trim());
222
- }, 500);
223
- return /* @__PURE__ */ m(
224
- _e,
225
- {
226
- open: i,
227
- onOpenChange: l,
228
- title: me,
229
- animation: !0,
230
- animationType: "fade",
231
- children: [
232
- /* @__PURE__ */ t("form", { autoComplete: "off", onSubmit: async (c) => {
233
- c.preventDefault();
234
- }, children: /* @__PURE__ */ t(
235
- ue,
236
- {
237
- placeholder: "Search",
238
- labelHidden: !0,
239
- noBorder: !0,
240
- autoCapitalize: "off",
241
- autoComplete: "off",
242
- autoCorrect: "off",
243
- ref: s,
244
- defaultValue: o.searchString,
245
- focusMode: "light",
246
- mode: "light",
247
- name: "Search",
248
- label: "Search",
249
- onChange: O,
250
- className: "my-2",
251
- rightElement: /* @__PURE__ */ t("div", { className: "text-copy-dark", children: /* @__PURE__ */ t(
252
- Ce,
253
- {
254
- mode: "dark",
255
- focusMode: "dark",
256
- label: "Search",
257
- size: "small",
258
- onClick: () => {
259
- y(""), s.current?.value && (s.current.value = "", s.current.focus());
260
- },
261
- disabled: o.searchString === "",
262
- children: o.searchString !== "" ? /* @__PURE__ */ t(Ie, { monotone: !0, size: "size-3" }) : /* @__PURE__ */ t(ve, { monotone: !0, size: "size-3" })
263
- }
264
- ) })
265
- }
266
- ) }),
267
- /* @__PURE__ */ t("div", { className: "flex flex-col sm:flex-row max-h-[75vh] min-h-[60vh]", children: /* @__PURE__ */ t(
268
- be,
269
- {
270
- mutate: I,
271
- filteredHistory: C,
272
- dispatch: d,
273
- onOpenChange: l
274
- }
275
- ) })
276
- ]
277
- }
278
- );
279
- };
280
- export {
281
- ze as HistoryPanel
282
- };