@box/threaded-annotations 1.89.7 → 1.89.8

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.
@@ -14,83 +14,86 @@ import '../styles/messages-view.css';var u = {
14
14
  messagesView: "_messagesView_ms46c_4",
15
15
  repliesContainer: "_repliesContainer_ms46c_53",
16
16
  messagesFade: "_messagesFade_ms46c_59"
17
- }, d = ({ messages: d, isResolved: f = !1, resolvedBy: p, resolvedAt: m, onDelete: h, onThreadDelete: g, onAvatarClick: _, onCopyLink: v, onEdit: y, onEditError: b, onResolve: x, onUnresolve: S, userSelectorProps: C, annotationTarget: w, onAnnotationBadgeClick: T, originalContentDeleted: E }) => {
18
- let { viewState: D, dispatch: O, isAnnotations: k } = t(), A = s(null), j = D !== e.Collapsed, M = D === e.Composing, N = d.length > 2, P = N && !j, { handleScroll: F, isOverflowing: I } = a({
17
+ }, d = ({ messages: d, isResolved: f = !1, resolvedBy: p, resolvedAt: m, maxCharacterCount: h, onDelete: g, onThreadDelete: _, onAvatarClick: v, onCopyLink: y, onEdit: b, onEditError: x, onResolve: S, onUnresolve: C, userSelectorProps: w, annotationTarget: T, onAnnotationBadgeClick: E, originalContentDeleted: D }) => {
18
+ let { viewState: O, dispatch: k, isAnnotations: A } = t(), j = s(null), M = O !== e.Collapsed, N = O === e.Composing, P = d.length > 2, F = P && !M, { handleScroll: I, isOverflowing: L } = a({
19
19
  messageCount: d.length,
20
- containerRef: A,
21
- enabled: k,
22
- isExpanded: j,
23
- suppressAutoScroll: P
24
- }), L = d[0], R = d.slice(1), z = R.length >= 1, B = R[R.length - 1], V = R.slice(0, -1), H = N && !j;
25
- if (!L) return null;
26
- let U = V[V.length - 1]?.author, W = V.length >= 2 ? V[V.length - 2].author : void 0, G = () => O({ type: "EXPAND" });
20
+ containerRef: j,
21
+ enabled: A,
22
+ isExpanded: M,
23
+ suppressAutoScroll: F
24
+ }), R = d[0], z = d.slice(1), B = z.length >= 1, V = z[z.length - 1], H = z.slice(0, -1), U = P && !M;
25
+ if (!R) return null;
26
+ let W = H[H.length - 1]?.author, G = H.length >= 2 ? H[H.length - 2].author : void 0, K = () => k({ type: "EXPAND" });
27
27
  return /* @__PURE__ */ l("div", {
28
- className: o(u.messagesViewWrapper, I && u.overflowing, I && M && u.withEditorBelow),
28
+ className: o(u.messagesViewWrapper, L && u.overflowing, L && N && u.withEditorBelow),
29
29
  children: [/* @__PURE__ */ l("div", {
30
- ref: A,
31
- className: o(u.messagesView, k && u.scrollable),
32
- onScroll: F,
30
+ ref: j,
31
+ className: o(u.messagesView, A && u.scrollable),
32
+ onScroll: I,
33
33
  children: [
34
34
  /* @__PURE__ */ c(i, {
35
- ...L,
36
- hasReplies: z,
37
- showThreadedIndicator: z || f,
35
+ ...R,
36
+ hasReplies: B,
37
+ showThreadedIndicator: B || f,
38
38
  isResolved: f,
39
- onDelete: h,
40
- onThreadDelete: g,
41
- onAvatarClick: _,
42
- onCopyLink: v,
43
- onEdit: y,
44
- onEditError: b,
45
- onResolve: x,
46
- onUnresolve: S,
39
+ maxCharacterCount: h,
40
+ onDelete: g,
41
+ onThreadDelete: _,
42
+ onAvatarClick: v,
43
+ onCopyLink: y,
44
+ onEdit: b,
45
+ onEditError: x,
46
+ onResolve: S,
47
+ onUnresolve: C,
47
48
  isFirstMessage: !0,
48
- userSelectorProps: C,
49
- annotationTarget: w,
50
- onAnnotationBadgeClick: T,
51
- originalContentDeleted: E
49
+ userSelectorProps: w,
50
+ annotationTarget: T,
51
+ onAnnotationBadgeClick: E,
52
+ originalContentDeleted: D
52
53
  }),
53
- H && U && /* @__PURE__ */ c(r, {
54
- lastUser: U,
55
- repliesCount: V.length,
56
- secondLastUser: W,
57
- onShowReplies: G
54
+ U && W && /* @__PURE__ */ c(r, {
55
+ lastUser: W,
56
+ repliesCount: H.length,
57
+ secondLastUser: G,
58
+ onShowReplies: K
58
59
  }),
59
- j && V.length > 0 && /* @__PURE__ */ c("div", {
60
+ M && H.length > 0 && /* @__PURE__ */ c("div", {
60
61
  className: u.repliesContainer,
61
- children: V.map((e) => /* @__PURE__ */ c(i, {
62
+ children: H.map((e) => /* @__PURE__ */ c(i, {
62
63
  ...e,
63
64
  showThreadedIndicator: !0,
64
65
  isResolved: f,
65
- onDelete: h,
66
- onAvatarClick: _,
67
- onCopyLink: v,
68
- onEdit: y,
69
- onEditError: b,
70
- onResolve: x,
71
- onUnresolve: S,
72
- userSelectorProps: C
66
+ maxCharacterCount: h,
67
+ onDelete: g,
68
+ onAvatarClick: v,
69
+ onCopyLink: y,
70
+ onEdit: b,
71
+ onEditError: x,
72
+ onResolve: S,
73
+ onUnresolve: C,
74
+ userSelectorProps: w
73
75
  }, e.id))
74
76
  }),
75
- B && /* @__PURE__ */ c(i, {
76
- ...B,
77
+ V && /* @__PURE__ */ c(i, {
78
+ ...V,
77
79
  showThreadedIndicator: f,
78
80
  isResolved: f,
79
- onDelete: h,
80
- onAvatarClick: _,
81
- onCopyLink: v,
82
- onEdit: y,
83
- onEditError: b,
84
- onResolve: x,
85
- onUnresolve: S,
86
- userSelectorProps: C
81
+ maxCharacterCount: h,
82
+ onDelete: g,
83
+ onAvatarClick: v,
84
+ onCopyLink: y,
85
+ onEdit: b,
86
+ onEditError: x,
87
+ onResolve: S,
88
+ onUnresolve: C,
89
+ userSelectorProps: w
87
90
  }),
88
91
  f && p && m && /* @__PURE__ */ c(n, {
89
92
  authorName: p,
90
93
  createdAt: m
91
94
  })
92
95
  ]
93
- }), I && /* @__PURE__ */ c("div", { className: u.messagesFade })]
96
+ }), L && /* @__PURE__ */ c("div", { className: u.messagesFade })]
94
97
  });
95
98
  };
96
99
  export { d as t };
@@ -10,62 +10,65 @@ import '../styles/threaded-annotations2.css';var m = {
10
10
  threadedAnnotations: "_threadedAnnotations_1dfb0_1",
11
11
  expandable: "_expandable_1dfb0_10",
12
12
  annotations: "_annotations_1dfb0_13"
13
- }, h = ({ messages: r, isResolved: h = !1, resolvedBy: g, resolvedAt: _, onDelete: v, onThreadDelete: y, onAvatarClick: b, onCopyLink: x, onEdit: S, onEditError: C, onResolve: w, onUnresolve: T, onPost: E, onPostError: D, userSelectorProps: O, onEditorOpenChange: k, annotationTarget: A, onAnnotationBadgeClick: j, originalContentDeleted: M }) => {
14
- let { viewState: N, dispatch: P, editingMessageId: F, replyMention: I, isReplyDisabled: L, isAnnotations: R } = i(), z = d(null), B = N !== n.Collapsed, V = r.length > 2, H = N === n.Collapsed && (V || !L && !h);
13
+ }, h = ({ messages: r, isResolved: h = !1, resolvedBy: g, resolvedAt: _, maxCharacterCount: v, onDelete: y, onThreadDelete: b, onAvatarClick: x, onCopyLink: S, onEdit: C, onEditError: w, onResolve: T, onUnresolve: E, onPost: D, onPostError: O, userSelectorProps: k, onEditorOpenChange: A, annotationTarget: j, onAnnotationBadgeClick: M, originalContentDeleted: N }) => {
14
+ let { viewState: P, dispatch: F, editingMessageId: I, replyMention: L, isReplyDisabled: R, isAnnotations: z } = i(), B = d(null), V = P !== n.Collapsed, H = r.length > 2, U = P === n.Collapsed && (H || !R && !h);
15
15
  l(() => {
16
- F && !r.some((e) => e.id === F) && P({ type: "CLEAR_EDIT" });
16
+ I && !r.some((e) => e.id === I) && F({ type: "CLEAR_EDIT" });
17
17
  }, [
18
- F,
18
+ I,
19
19
  r,
20
- P
20
+ F
21
21
  ]), l(() => {
22
- k?.(B);
23
- }, [B, k]), l(() => {
24
- if (!B) return;
22
+ A?.(V);
23
+ }, [V, A]), l(() => {
24
+ if (!V) return;
25
25
  let t = `[${Object.keys(e)[0]}]`, n = (e) => {
26
26
  let n = e.target;
27
- z.current?.contains(n) || document.querySelector(t)?.contains(n) || P({ type: "COLLAPSE" });
27
+ B.current?.contains(n) || document.querySelector(t)?.contains(n) || F({ type: "COLLAPSE" });
28
28
  };
29
29
  return document.addEventListener("mousedown", n), () => document.removeEventListener("mousedown", n);
30
- }, [B, P]);
31
- let U = r.length === 0, W = c(() => P({ type: "CLEAR_MENTION" }), [P]), G = u(() => I ? o(I) : null, [I]), K = c((e) => {
32
- if (!H) return;
30
+ }, [V, F]);
31
+ let W = r.length === 0, G = c(() => F({ type: "CLEAR_MENTION" }), [F]), K = u(() => L ? o(L) : null, [L]), q = c((e) => {
32
+ if (!U) return;
33
33
  let t = e.target;
34
- !e.currentTarget.contains(t) || t.closest("[data-no-expand]") || P({ type: "EXPAND" });
35
- }, [H, P]);
36
- return R && U ? /* @__PURE__ */ f(t, {
37
- onPost: E,
38
- onPostError: D,
39
- onPostSuccess: W,
40
- userSelectorProps: O,
41
- isFirstAnnotation: !0
34
+ !e.currentTarget.contains(t) || t.closest("[data-no-expand]") || F({ type: "EXPAND" });
35
+ }, [U, F]);
36
+ return z && W ? /* @__PURE__ */ f(t, {
37
+ isFirstAnnotation: !0,
38
+ maxCharacterCount: v,
39
+ onPost: D,
40
+ onPostError: O,
41
+ onPostSuccess: G,
42
+ userSelectorProps: k
42
43
  }) : /* @__PURE__ */ p("div", {
43
- ref: z,
44
- className: s(m.threadedAnnotations, H && m.expandable, R && m.annotations),
45
- onClick: H ? K : void 0,
44
+ ref: B,
45
+ className: s(m.threadedAnnotations, U && m.expandable, z && m.annotations),
46
+ onClick: U ? q : void 0,
46
47
  children: [/* @__PURE__ */ f(a, {
47
48
  messages: r,
48
49
  isResolved: h,
49
50
  resolvedBy: g,
50
51
  resolvedAt: _,
51
- onDelete: v,
52
- onThreadDelete: y,
53
- onAvatarClick: b,
54
- onCopyLink: x,
55
- onEdit: S,
56
- onEditError: C,
57
- onResolve: w,
58
- onUnresolve: T,
59
- userSelectorProps: O,
60
- annotationTarget: A,
61
- onAnnotationBadgeClick: j,
62
- originalContentDeleted: M
63
- }), N === n.Composing && /* @__PURE__ */ f(t, {
64
- onPost: E,
65
- onPostError: D,
66
- onPostSuccess: W,
67
- initialContent: G,
68
- userSelectorProps: O
52
+ maxCharacterCount: v,
53
+ onDelete: y,
54
+ onThreadDelete: b,
55
+ onAvatarClick: x,
56
+ onCopyLink: S,
57
+ onEdit: C,
58
+ onEditError: w,
59
+ onResolve: T,
60
+ onUnresolve: E,
61
+ userSelectorProps: k,
62
+ annotationTarget: j,
63
+ onAnnotationBadgeClick: M,
64
+ originalContentDeleted: N
65
+ }), P === n.Composing && /* @__PURE__ */ f(t, {
66
+ initialContent: K,
67
+ maxCharacterCount: v,
68
+ onPost: D,
69
+ onPostError: O,
70
+ onPostSuccess: G,
71
+ userSelectorProps: k
69
72
  })]
70
73
  });
71
74
  }, g = (e) => /* @__PURE__ */ f(r, {
@@ -9,55 +9,56 @@ import { MessageRenderer as c } from "./subcomponents/message-renderer.js";
9
9
  import l from "clsx";
10
10
  import { useIntl as u } from "react-intl";
11
11
  import { Fragment as d, jsx as f, jsxs as p } from "react/jsx-runtime";
12
- var m = ({ id: m, author: h, message: g, createdAt: _, updatedAt: v, permissions: y, showThreadedIndicator: b = !0, isResolved: x = !1, isFirstMessage: S = !1, hasReplies: C = !1, onAvatarClick: w, onCopyLink: T, onDelete: E, onThreadDelete: D, onEdit: O, onEditError: k, onResolve: A, onUnresolve: j, userSelectorProps: M, annotationTarget: N, onAnnotationBadgeClick: P, originalContentDeleted: F }) => {
13
- let { canResolve: I, canEdit: L, canDelete: R } = y, z = u(), { dispatch: B, isReplyDisabled: V, isEditDisabled: H, isAnnotations: U, editingMessageId: W } = n(), G = W === m, K = !!O && !H && L;
12
+ var m = ({ id: m, author: h, message: g, createdAt: _, updatedAt: v, permissions: y, showThreadedIndicator: b = !0, isResolved: x = !1, isFirstMessage: S = !1, hasReplies: C = !1, maxCharacterCount: w, onAvatarClick: T, onCopyLink: E, onDelete: D, onThreadDelete: O, onEdit: k, onEditError: A, onResolve: j, onUnresolve: M, userSelectorProps: N, annotationTarget: P, onAnnotationBadgeClick: F, originalContentDeleted: I }) => {
13
+ let { canResolve: L, canEdit: R, canDelete: z } = y, B = u(), { dispatch: V, isReplyDisabled: H, isEditDisabled: U, isAnnotations: W, editingMessageId: G } = n(), K = G === m, q = !!k && !U && R;
14
14
  return /* @__PURE__ */ p("div", {
15
- "aria-label": z.formatMessage(a.annotationMessageAriaLabel),
15
+ "aria-label": B.formatMessage(a.annotationMessageAriaLabel),
16
16
  className: o.textMessage,
17
17
  "data-message-wrapper": !0,
18
18
  children: [/* @__PURE__ */ f(i, {
19
19
  author: h,
20
- canResolve: I,
20
+ canResolve: L,
21
21
  isResolved: x,
22
- canDelete: R,
23
- canEdit: K,
22
+ canDelete: z,
23
+ canEdit: q,
24
24
  hasReplies: C,
25
25
  isFirstMessage: S,
26
- onAvatarClick: w,
27
- onCopyLink: T ? () => T(m) : void 0,
28
- onDelete: () => E(m),
29
- onThreadDelete: D,
30
- onEdit: K ? () => B({
26
+ onAvatarClick: T,
27
+ onCopyLink: E ? () => E(m) : void 0,
28
+ onDelete: () => D(m),
29
+ onThreadDelete: O,
30
+ onEdit: q ? () => V({
31
31
  type: "EDIT",
32
32
  id: m
33
33
  }) : void 0,
34
- onResolve: A ? () => A(m) : void 0,
35
- onUnresolve: j ? () => j(m) : void 0
34
+ onResolve: j ? () => j(m) : void 0,
35
+ onUnresolve: M ? () => M(m) : void 0
36
36
  }), /* @__PURE__ */ p("div", {
37
37
  className: o.contentWrapper,
38
38
  children: [/* @__PURE__ */ f("div", { className: l(o.threadedIndicator, !b && o.threadedIndicatorHidden) }), /* @__PURE__ */ p("div", {
39
39
  className: o.messageContent,
40
- children: [N && !U && /* @__PURE__ */ f("div", {
40
+ children: [P && !W && /* @__PURE__ */ f("div", {
41
41
  className: o.annotationBadgeWrapper,
42
42
  children: /* @__PURE__ */ f(r, {
43
- annotationTarget: N,
44
- onClick: () => P?.(m),
45
- originalContentDeleted: F
43
+ annotationTarget: P,
44
+ onClick: () => F?.(m),
45
+ originalContentDeleted: I
46
46
  })
47
- }), G && O ? /* @__PURE__ */ f(t, {
47
+ }), K && k ? /* @__PURE__ */ f(t, {
48
48
  initialContent: g,
49
- onEditCancel: () => B({ type: "CLEAR_EDIT" }),
50
- onEditSuccess: () => B({ type: "CLEAR_EDIT" }),
51
- onSave: (e) => O(m, e),
52
- onSaveError: k,
53
- userSelectorProps: M,
49
+ maxCharacterCount: w,
50
+ onEditCancel: () => V({ type: "CLEAR_EDIT" }),
51
+ onEditSuccess: () => V({ type: "CLEAR_EDIT" }),
52
+ onSave: (e) => k(m, e),
53
+ onSaveError: A,
54
+ userSelectorProps: N,
54
55
  variant: e.EDIT_MESSAGE
55
56
  }) : /* @__PURE__ */ p(d, { children: [/* @__PURE__ */ f("div", {
56
57
  className: o.rendererWrapper,
57
58
  children: /* @__PURE__ */ f(c, { messageObject: g })
58
59
  }), /* @__PURE__ */ f(s, {
59
60
  createdAt: _,
60
- onReply: V ? void 0 : () => B({
61
+ onReply: H ? void 0 : () => V({
61
62
  type: "REPLY",
62
63
  author: h
63
64
  }),
@@ -2,7 +2,7 @@ export * from './lib/components/text-message/types';
2
2
  export * from './lib/document-node-types';
3
3
  export * from './lib/threaded-annotations';
4
4
  export { MentionContextProvider, useMentionContext, type MentionContextData, type MentionContextProviderProps, } from './lib/components/mention-component/mention-context';
5
- export { MessageEditor as MessageEditorV2, type MessageEditorProps as MessageEditorPropsV2, } from './lib/components/v2/message-editor/message-editor';
5
+ export { MessageEditor as MessageEditorV2, type CreateMessageEditorProps as CreateMessageEditorPropsV2, type MessageEditorProps as MessageEditorPropsV2, } from './lib/components/v2/message-editor/message-editor';
6
6
  export { ThreadedAnnotations as ThreadedAnnotationsV2, type ThreadedAnnotationsProps as ThreadedAnnotationsPropsV2, } from './lib/v2/threaded-annotations';
7
7
  export { type DocumentNode as DocumentNodeV2, type EditorMentionAttributes as EditorMentionAttributesV2, type MentionNode as MentionNodeV2, type MentionRenderAttributes as MentionRenderAttributesV2, type ParagraphNode as ParagraphNodeV2, type TextNode as TextNodeV2, } from './lib/v2/types/document-node-types';
8
8
  export { type Permissions, type TextMessageAuthorType as TextMessageAuthorTypeV2, type TextMessageType as TextMessageTypeV2, } from './lib/v2/types/message-types';
@@ -1,3 +1,3 @@
1
- import { MessageEditorVariant, MessageEditorProps } from './message-editor.types';
2
- export { MessageEditorVariant, type MessageEditorProps };
1
+ import { MessageEditorVariant, CreateMessageEditorProps, MessageEditorProps } from './message-editor.types';
2
+ export { MessageEditorVariant, type CreateMessageEditorProps, type MessageEditorProps };
3
3
  export declare const MessageEditor: (props: MessageEditorProps) => import("react/jsx-runtime").JSX.Element;
@@ -17,7 +17,7 @@ interface BaseMessageEditorProps {
17
17
  /** Properties for the user selector component from blueprint-web. */
18
18
  userSelectorProps: Omit<HeadlessUserSelectorProps, 'inputElementRef' | 'onSelectedUserChange' | 'open' | 'rootElement' | 'value'>;
19
19
  }
20
- interface CreateMessageEditorProps extends BaseMessageEditorProps {
20
+ export interface CreateMessageEditorProps extends BaseMessageEditorProps {
21
21
  /**
22
22
  * A callback function to be executed when the user posts a message.
23
23
  * @param content The content of the message in JSON format or null.
@@ -7,6 +7,7 @@ export interface MessagesViewProps {
7
7
  isResolved?: boolean;
8
8
  resolvedBy?: string;
9
9
  resolvedAt?: number;
10
+ maxCharacterCount?: number;
10
11
  onDelete: (id: string) => void;
11
12
  onThreadDelete?: () => void;
12
13
  onAvatarClick: (id: number) => void;
@@ -20,4 +21,4 @@ export interface MessagesViewProps {
20
21
  onAnnotationBadgeClick?: (id: string) => void;
21
22
  originalContentDeleted?: boolean;
22
23
  }
23
- export declare const MessagesView: ({ messages, isResolved, resolvedBy, resolvedAt, onDelete, onThreadDelete, onAvatarClick, onCopyLink, onEdit, onEditError, onResolve, onUnresolve, userSelectorProps, annotationTarget, onAnnotationBadgeClick, originalContentDeleted, }: MessagesViewProps) => import("react/jsx-runtime").JSX.Element;
24
+ export declare const MessagesView: ({ messages, isResolved, resolvedBy, resolvedAt, maxCharacterCount, onDelete, onThreadDelete, onAvatarClick, onCopyLink, onEdit, onEditError, onResolve, onUnresolve, userSelectorProps, annotationTarget, onAnnotationBadgeClick, originalContentDeleted, }: MessagesViewProps) => import("react/jsx-runtime").JSX.Element;
@@ -11,6 +11,7 @@ export interface TextMessageProps extends TextMessageType {
11
11
  isFirstMessage?: boolean;
12
12
  /** Whether the thread has at least one reply (only meaningful on the root message). */
13
13
  hasReplies?: boolean;
14
+ maxCharacterCount?: number;
14
15
  onDelete: (id: string) => void;
15
16
  onThreadDelete?: () => void;
16
17
  onAvatarClick: (id: number) => void;
@@ -31,4 +32,4 @@ export interface TextMessageProps extends TextMessageType {
31
32
  * the message content itself, a relative timestamp, and providing a mechanism
32
33
  * for deleting the message.
33
34
  */
34
- export declare const TextMessage: ({ id, author, message, createdAt, updatedAt, permissions, showThreadedIndicator, isResolved, isFirstMessage, hasReplies, onAvatarClick, onCopyLink, onDelete, onThreadDelete, onEdit, onEditError, onResolve, onUnresolve, userSelectorProps, annotationTarget, onAnnotationBadgeClick, originalContentDeleted, }: TextMessageProps) => import("react/jsx-runtime").JSX.Element;
35
+ export declare const TextMessage: ({ id, author, message, createdAt, updatedAt, permissions, showThreadedIndicator, isResolved, isFirstMessage, hasReplies, maxCharacterCount, onAvatarClick, onCopyLink, onDelete, onThreadDelete, onEdit, onEditError, onResolve, onUnresolve, userSelectorProps, annotationTarget, onAnnotationBadgeClick, originalContentDeleted, }: TextMessageProps) => import("react/jsx-runtime").JSX.Element;
@@ -9,6 +9,7 @@ interface InteractiveModuleBaseProps {
9
9
  initialMessages?: TextMessageType[];
10
10
  isReplyDisabled?: boolean;
11
11
  isEditDisabled?: boolean;
12
+ maxCharacterCount?: number;
12
13
  onCopyLink?: (id: string) => void;
13
14
  }
14
15
  type InteractiveModuleProps = (InteractiveModuleBaseProps & {
@@ -11,6 +11,7 @@ interface ThreadedAnnotationsBaseProps {
11
11
  resolvedBy?: string;
12
12
  /** Unix timestamp (ms) when the thread was resolved. */
13
13
  resolvedAt?: number;
14
+ maxCharacterCount?: number;
14
15
  onDelete: (id: string) => void;
15
16
  onThreadDelete?: () => void;
16
17
  onAvatarClick: (id: number) => void;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@box/threaded-annotations",
3
- "version": "1.89.7",
3
+ "version": "1.89.8",
4
4
  "license": "SEE LICENSE IN LICENSE",
5
5
  "dependencies": {
6
6
  "@tanstack/react-virtual": "^3.10.8",