From 16692f758896447d780e9232e7c6f62d6eb5e954 Mon Sep 17 00:00:00 2001 From: Duncan Hsu Date: Wed, 1 Jul 2026 14:15:23 -0700 Subject: [PATCH 1/4] feat(activity-feed-v2): add highlight state to comments --- src/elements/content-sidebar/ActivitySidebar.js | 15 +++++++++++++++ .../activity-feed-v2/ActivityFeedV2.tsx | 13 +++++++------ .../content-sidebar/activity-feed-v2/types.ts | 1 + 3 files changed, 23 insertions(+), 6 deletions(-) diff --git a/src/elements/content-sidebar/ActivitySidebar.js b/src/elements/content-sidebar/ActivitySidebar.js index f6f8ac6216..4aa3bb5c6c 100644 --- a/src/elements/content-sidebar/ActivitySidebar.js +++ b/src/elements/content-sidebar/ActivitySidebar.js @@ -1265,6 +1265,20 @@ class ActivitySidebar extends React.PureComponent { } }; + handleCommentSelect = (commentId: string): void => { + const { history, internalSidebarNavigationHandler, routerDisabled } = this.props; + + if (routerDisabled && internalSidebarNavigationHandler) { + internalSidebarNavigationHandler({ + sidebar: ViewType.ACTIVITY, + activeFeedEntryId: commentId, + activeFeedEntryType: FeedEntryType.COMMENTS, + }); + } else { + history.push(this.getActiveCommentPath(commentId)); + } + }; + handleItemsFiltered = (status?: ActivityFilterItemType) => { const { onFilterChange } = this.props; @@ -1443,6 +1457,7 @@ class ActivitySidebar extends React.PureComponent { onCommentCopyLink={onCommentCopyLink} onCommentCreate={this.createComment} onCommentDelete={this.deleteComment} + onCommentSelect={this.handleCommentSelect} onCommentUpdate={this.updateComment} onReplyCreate={this.createReply} onReplyDelete={this.deleteReply} diff --git a/src/elements/content-sidebar/activity-feed-v2/ActivityFeedV2.tsx b/src/elements/content-sidebar/activity-feed-v2/ActivityFeedV2.tsx index 23d1a44a63..1efb97f632 100644 --- a/src/elements/content-sidebar/activity-feed-v2/ActivityFeedV2.tsx +++ b/src/elements/content-sidebar/activity-feed-v2/ActivityFeedV2.tsx @@ -56,6 +56,7 @@ const ActivityFeedV2 = ({ onAnnotationStatusChange, onCommentCopyLink, onCommentCreate, + onCommentSelect, onCommentDelete, onCommentUpdate, onReplyCreate, @@ -74,8 +75,6 @@ const ActivityFeedV2 = ({ const intl = useIntl(); const scrollHandle = useActivityFeedScroll(); const currentUserId = currentUser?.id; - const scrollHandleRef = React.useRef(null); - scrollHandleRef.current = scrollHandle; const headerTitle = intl.formatMessage(commonMessages.sidebarActivityTitle); const scrolledEntryIdRef = React.useRef(null); @@ -359,16 +358,18 @@ const ActivityFeedV2 = ({ viewer.emit('comment_markers', markers); const handleMarkerSelect = ({ id }: { id: string }) => { - requestAnimationFrame(() => { - scrollHandleRef.current?.scrollTo(id); - }); + const item = filteredItems.find(fi => fi.id === id); + // Annotation markers are already handled via the annotator pipeline, so only handle comments here. + if (item?.type === 'comment' && onCommentSelect) { + onCommentSelect(id); + } }; viewer.addListener('comment_marker_select', handleMarkerSelect); return () => { viewer.removeListener('comment_marker_select', handleMarkerSelect); viewer.emit('comment_markers', []); }; - }, [filteredItems, getViewer, isVideo]); + }, [filteredItems, getViewer, isVideo, onCommentSelect]); const handleCommentPost = React.useCallback( async (content: unknown) => { diff --git a/src/elements/content-sidebar/activity-feed-v2/types.ts b/src/elements/content-sidebar/activity-feed-v2/types.ts index bba219cd8b..b672a17e1b 100644 --- a/src/elements/content-sidebar/activity-feed-v2/types.ts +++ b/src/elements/content-sidebar/activity-feed-v2/types.ts @@ -108,6 +108,7 @@ export type ActivityFeedV2Props = { onAnnotationDelete?: (params: { id: string; permissions: AnnotationPermission }) => void; onAnnotationEdit?: (params: { id: string; permissions: AnnotationPermission; text: string }) => void; onAnnotationSelect?: (annotation: Annotation) => void; + onCommentSelect?: (commentId: string) => void; onAnnotationStatusChange?: (params: { id: string; permissions: AnnotationPermission; From 06dd820eb2f6cecba989c5ab0574de3d7e5c3edc Mon Sep 17 00:00:00 2001 From: Duncan Hsu Date: Thu, 2 Jul 2026 11:16:16 -0700 Subject: [PATCH 2/4] feat(video): bump threaded-annotations and pass down isHighlighted prop --- package.json | 6 +- .../activity-feed-v2/ActivityFeedV2.tsx | 1 + .../activity-feed-v2/FeedItemRow.tsx | 6 + .../__tests__/FeedItemRow.test.tsx | 20 + yarn.lock | 359 +++++++----------- 5 files changed, 174 insertions(+), 218 deletions(-) diff --git a/package.json b/package.json index 9df7e0e24d..9ccc3235ef 100644 --- a/package.json +++ b/package.json @@ -145,11 +145,11 @@ "@box/metadata-view": "^1.53.26", "@box/react-virtualized": "^9.22.3-rc-box.10", "@box/readable-time": "^2.1.4", - "@box/threaded-annotations": "^2.1.7", + "@box/threaded-annotations": "^3.1.1", "@box/types": "^2.1.8", "@box/unified-share-modal": "^2.15.16", - "@box/user-selector": "^2.1.5", "@box/uploads-manager": "^1.17.2", + "@box/user-selector": "^2.1.5", "@cfaester/enzyme-adapter-react-18": "^0.8.0", "@chromatic-com/storybook": "^4.0.1", "@commitlint/cli": "^19.8.0", @@ -317,8 +317,8 @@ "@box/threaded-annotations": "^2.1.7", "@box/types": "^2.1.8", "@box/unified-share-modal": "^2.15.16", - "@box/user-selector": "^2.1.5", "@box/uploads-manager": "^1.17.2", + "@box/user-selector": "^2.1.5", "@hapi/address": "^2.1.4", "@tanstack/react-virtual": "^3.13.12", "axios": "^0.32.0", diff --git a/src/elements/content-sidebar/activity-feed-v2/ActivityFeedV2.tsx b/src/elements/content-sidebar/activity-feed-v2/ActivityFeedV2.tsx index 1efb97f632..7ba04a8c0e 100644 --- a/src/elements/content-sidebar/activity-feed-v2/ActivityFeedV2.tsx +++ b/src/elements/content-sidebar/activity-feed-v2/ActivityFeedV2.tsx @@ -467,6 +467,7 @@ const ActivityFeedV2 = ({ {filteredItems.map(item => ( { + const isHighlighted = activeFeedEntryId === item.id; + switch (item.type) { case 'comment': { const { permissions } = item; @@ -150,6 +154,7 @@ const FeedItemRow = ({ annotationTarget={commentAnnotationTarget} isAnnotations={false} isEditDisabled={isDisabled || item.isResolved} + isHighlighted={isHighlighted} isResolved={item.isResolved} messages={item.messages} onAnnotationBadgeClick={handleBadgeClick} @@ -214,6 +219,7 @@ const FeedItemRow = ({ annotationTarget={annotationBadgeTarget} isAnnotations={false} isEditDisabled={isDisabled || item.isResolved} + isHighlighted={isHighlighted} isResolved={item.isResolved} messages={item.messages} onAnnotationBadgeClick={() => onAnnotationSelect?.(item.annotation)} diff --git a/src/elements/content-sidebar/activity-feed-v2/__tests__/FeedItemRow.test.tsx b/src/elements/content-sidebar/activity-feed-v2/__tests__/FeedItemRow.test.tsx index 18392fb715..2a9731ceb6 100644 --- a/src/elements/content-sidebar/activity-feed-v2/__tests__/FeedItemRow.test.tsx +++ b/src/elements/content-sidebar/activity-feed-v2/__tests__/FeedItemRow.test.tsx @@ -225,6 +225,16 @@ describe('elements/content-sidebar/activity-feed-v2/FeedItemRow', () => { expect(lastThreadedAnnotationProps.isAnnotations).toBe(false); }); + test('should pass isHighlighted=true when activeFeedEntryId matches the comment id', () => { + render(); + expect(lastThreadedAnnotationProps.isHighlighted).toBe(true); + }); + + test('should pass isHighlighted=false when activeFeedEntryId does not match', () => { + render(); + expect(lastThreadedAnnotationProps.isHighlighted).toBe(false); + }); + test('should call onCommentDelete with id and permissions when onDelete fires', () => { const onCommentDelete = jest.fn(); render(); @@ -465,6 +475,16 @@ describe('elements/content-sidebar/activity-feed-v2/FeedItemRow', () => { expect(screen.getByRole('article', { name: 'threaded annotation' })).toBeVisible(); }); + test('should pass isHighlighted=true when activeFeedEntryId matches the annotation id', () => { + render(); + expect(lastThreadedAnnotationProps.isHighlighted).toBe(true); + }); + + test('should pass isHighlighted=false when activeFeedEntryId does not match', () => { + render(); + expect(lastThreadedAnnotationProps.isHighlighted).toBe(false); + }); + test('should call onAnnotationSelect when onAnnotationBadgeClick fires', () => { const onAnnotationSelect = jest.fn(); render(); diff --git a/yarn.lock b/yarn.lock index a8db6635ae..783dbb6549 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1221,21 +1221,22 @@ resolved "https://registry.yarnpkg.com/@box/readable-time/-/readable-time-2.1.4.tgz#d2fc98c41494ffbb182133f62b192d2ecc0992bb" integrity sha512-Zu8KvrfkP2+2lHColRxVyUVqte8SJImO/Z8FYjQibUCqL9HheQR+9WC6rDX5V16B/qVT0mIGfnM+PshVI7EuMg== -"@box/threaded-annotations@^2.1.7": - version "2.1.7" - resolved "https://registry.yarnpkg.com/@box/threaded-annotations/-/threaded-annotations-2.1.7.tgz#369fa672e6fb61fb2d8d5bba7792d999ef0e8357" - integrity sha512-s4E0l9Cvs9sdD4f4UEMB1SoNdUyTowGHt1S8rX3CjGWPUxuZEKTL+4YXPUop+yuEiOYyerwgch7WsBPjMj5zWQ== +"@box/threaded-annotations@^3.1.1": + version "3.1.1" + resolved "https://registry.yarnpkg.com/@box/threaded-annotations/-/threaded-annotations-3.1.1.tgz#463f8a41aa02c98772a2f599c42690454d1dbf49" + integrity sha512-YmKF0pDbSV3K/ThCs1tYfpYNmewPlJQwihWEs2KiVr7+LAtqoOZJFGjVjdlXuhxYYFbTvvTVkj5J+pJjQ0SqGw== dependencies: + "@floating-ui/dom" "^1.6.0" "@tanstack/react-virtual" "^3.10.8" - "@tiptap/core" "2.0.2" - "@tiptap/extension-document" "2.0.2" - "@tiptap/extension-mention" "2.0.2" - "@tiptap/extension-paragraph" "2.0.2" - "@tiptap/extension-placeholder" "2.0.2" - "@tiptap/extension-text" "2.0.2" - "@tiptap/pm" "2.0.2" - "@tiptap/react" "2.0.2" - "@tiptap/suggestion" "2.0.2" + "@tiptap/core" "3.26.1" + "@tiptap/extension-document" "3.26.1" + "@tiptap/extension-mention" "3.26.1" + "@tiptap/extension-paragraph" "3.26.1" + "@tiptap/extension-text" "3.26.1" + "@tiptap/extensions" "3.26.1" + "@tiptap/pm" "3.26.1" + "@tiptap/react" "3.26.1" + "@tiptap/suggestion" "3.26.1" uuid "^9.0.1" "@box/tree@^1.42.5": @@ -1758,6 +1759,13 @@ dependencies: "@floating-ui/utils" "^0.2.10" +"@floating-ui/core@^1.7.5": + version "1.7.5" + resolved "https://registry.yarnpkg.com/@floating-ui/core/-/core-1.7.5.tgz#d4af157a03330af5a60e69da7a4692507ada0622" + integrity sha512-1Ih4WTWyw0+lKyFMcBHGbb5U5FtuHJuujoyyr5zTaWS5EYMeT6Jb2AuDeftsCsEuchO+mM2ij5+q9crhydzLhQ== + dependencies: + "@floating-ui/utils" "^0.2.11" + "@floating-ui/dom@^1.0.0", "@floating-ui/dom@^1.7.2": version "1.7.2" resolved "https://registry.yarnpkg.com/@floating-ui/dom/-/dom-1.7.2.tgz#3540b051cf5ce0d4f4db5fb2507a76e8ea5b4a45" @@ -1766,6 +1774,14 @@ "@floating-ui/core" "^1.7.2" "@floating-ui/utils" "^0.2.10" +"@floating-ui/dom@^1.6.0": + version "1.7.6" + resolved "https://registry.yarnpkg.com/@floating-ui/dom/-/dom-1.7.6.tgz#f915bba5abbb177e1f227cacee1b4d0634b187bf" + integrity sha512-9gZSAI5XM36880PPMm//9dfiEngYoC6Am2izES1FF406YFsjvyBMmeJ2g4SAju3xWwtuynNRFL2s9hgxpLI5SQ== + dependencies: + "@floating-ui/core" "^1.7.5" + "@floating-ui/utils" "^0.2.11" + "@floating-ui/react-dom@^2.0.0": version "2.1.4" resolved "https://registry.yarnpkg.com/@floating-ui/react-dom/-/react-dom-2.1.4.tgz#a0689be8978352fff2be2dfdd718cf668c488ec3" @@ -1778,6 +1794,11 @@ resolved "https://registry.yarnpkg.com/@floating-ui/utils/-/utils-0.2.10.tgz#a2a1e3812d14525f725d011a73eceb41fef5bc1c" integrity sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ== +"@floating-ui/utils@^0.2.11": + version "0.2.11" + resolved "https://registry.yarnpkg.com/@floating-ui/utils/-/utils-0.2.11.tgz#a269e055e40e2f45873bae9d1a2fdccbd314ea3f" + integrity sha512-RiB/yIh78pcIxl6lLMG0CgBXAZ2Y0eVHqMPYugu+9U0AeT6YBeiJpf7lbdJNIugFP5SIjwNRgo4DhR1Qxi26Gg== + "@formatjs/ecma402-abstract@2.0.0": version "2.0.0" resolved "https://registry.yarnpkg.com/@formatjs/ecma402-abstract/-/ecma402-abstract-2.0.0.tgz#39197ab90b1c78b7342b129a56a7acdb8f512e17" @@ -3002,11 +3023,6 @@ resolved "https://registry.yarnpkg.com/@polka/url/-/url-1.0.0-next.25.tgz#f077fdc0b5d0078d30893396ff4827a13f99e817" integrity sha512-j7P6Rgr3mmtdkeDGTe0E/aYyWEWVtc5yFXtHCRHs28/jptDEWfaVOc5T7cblqy1XKPPfCxJc/8DwQ5YgLOZOVQ== -"@popperjs/core@^2.9.0": - version "2.11.8" - resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.11.8.tgz#6b79032e760a0899cd4204710beede972a3a185f" - integrity sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A== - "@radix-ui/number@1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@radix-ui/number/-/number-1.0.1.tgz#644161a3557f46ed38a042acf4a770e826021674" @@ -4763,11 +4779,6 @@ "@react-types/overlays" "^3.9.4" "@react-types/shared" "^3.33.1" -"@remirror/core-constants@^2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@remirror/core-constants/-/core-constants-2.0.2.tgz#f05eccdc69e3a65e7d524b52548f567904a11a1a" - integrity sha512-dyHY+sMF0ihPus3O27ODd4+agdHMEmuRdyiZJ2CCWjPV5UFmn17ZbElvk6WOGVE4rdCJKZQCrPV2BcikOMLUGQ== - "@rtsao/scc@^1.1.0": version "1.1.0" resolved "https://registry.yarnpkg.com/@rtsao/scc/-/scc-1.1.0.tgz#927dd2fae9bc3361403ac2c7a00c32ddce9ad7e8" @@ -5154,86 +5165,83 @@ resolved "https://registry.yarnpkg.com/@testing-library/user-event/-/user-event-14.6.1.tgz#13e09a32d7a8b7060fe38304788ebf4197cd2149" integrity sha512-vq7fv0rnt+QTXgPxr5Hjc210p6YKq2kmdziLgnsZGgLJ9e6VAShx1pACLuRjd/AS/sr7phAR58OIIpf0LlmQNw== -"@tiptap/core@2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@tiptap/core/-/core-2.0.2.tgz#9002bdc556eac6ddd6263ab3fbde40f518cb2f98" - integrity sha512-DBry6tpX7mYaTJkEDjVA4WmF8Kgthr275L0uIIOVdwW5nG5PAnOvREKyVOoMQnN3vR7CjtaCK+c3y+MCQhMA/g== - -"@tiptap/extension-bubble-menu@^2.0.2": - version "2.27.2" - resolved "https://registry.yarnpkg.com/@tiptap/extension-bubble-menu/-/extension-bubble-menu-2.27.2.tgz#f75eb12a8d2496bcde739b5c20684db635a48b9e" - integrity sha512-VkwlCOcr0abTBGzjPXklJ92FCowG7InU8+Od9FyApdLNmn0utRYGRhw0Zno6VgE9EYr1JY4BRnuSa5f9wlR72w== - dependencies: - tippy.js "^6.3.7" - -"@tiptap/extension-document@2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@tiptap/extension-document/-/extension-document-2.0.2.tgz#b07a4062cc0772e4129621b9b9a2e043a05395a1" - integrity sha512-rY87m1sezlD37v5hGndiA/B/3upR3hQurSEsWhWyQE/11lOshPQKCCHfDV6KLwKdjd8lfwfbXueH/SBFHtrYAQ== +"@tiptap/core@3.26.1": + version "3.26.1" + resolved "https://registry.yarnpkg.com/@tiptap/core/-/core-3.26.1.tgz#a4d3222248af7af01aede146806a5757465cc654" + integrity sha512-TX9PyPqBoix0qDLjtok/bddtdSy54QhzLVha405C07V+WySOpH3s/pWYkywehZQY0SQtcrcY4MNSCeQjCbA28A== -"@tiptap/extension-floating-menu@^2.0.2": - version "2.27.2" - resolved "https://registry.yarnpkg.com/@tiptap/extension-floating-menu/-/extension-floating-menu-2.27.2.tgz#b04e8f542d3900db1d845a03a0f5ab079a06daaf" - integrity sha512-GUN6gPIGXS7ngRJOwdSmtBRBDt9Kt9CM/9pSwKebhLJ+honFoNA+Y6IpVyDvvDMdVNgBchiJLs6qA5H97gAePQ== +"@tiptap/extension-bubble-menu@^3.26.1": + version "3.27.1" + resolved "https://registry.yarnpkg.com/@tiptap/extension-bubble-menu/-/extension-bubble-menu-3.27.1.tgz#36b2da978525eb894bc68d5363f9743c6f1fa1cf" + integrity sha512-j/j8Qp9Z5nViade2m7zjrO/CYH/Ca80Qj7aqo0eUaei6FZQ5izlF9o4XQU5EFMAutV6mwynsPUp8FVo5sCuYfw== dependencies: - tippy.js "^6.3.7" - -"@tiptap/extension-mention@2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@tiptap/extension-mention/-/extension-mention-2.0.2.tgz#15c0ce8c33b4848850a0f58e9a31ea686d4299e9" - integrity sha512-5nUSlqYi5x+I5Q84+l8OL+4R/NRAN0wBrEN0Cps4GJB3dqINMsTbjSbIwRk8bw79XBHNJI1PndBjVktBgwYxNA== - -"@tiptap/extension-paragraph@2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@tiptap/extension-paragraph/-/extension-paragraph-2.0.2.tgz#40ee9e9ac2c06a8bf81a0371e191b328936c85e6" - integrity sha512-BuiUV8Wh8DjRrNmmk5sIlVlk0V8P4BT2fCB4H7Ar+QDUPKY1g0djB/5g3F70iZh1Z7CiY1ctoL8VQznvtb0KsQ== + "@floating-ui/dom" "^1.0.0" -"@tiptap/extension-placeholder@2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@tiptap/extension-placeholder/-/extension-placeholder-2.0.2.tgz#c449ad18bada1af815183b3bf7e54cdfd03dfedf" - integrity sha512-5D46ONEN4Hcgn9xwWgY0mSUp9DAM/z74P9vZcdChUXxj96L2ngM/nU92qEby0kGCSGoO3ucxJGf/aL8KhGqIxQ== +"@tiptap/extension-document@3.26.1": + version "3.26.1" + resolved "https://registry.yarnpkg.com/@tiptap/extension-document/-/extension-document-3.26.1.tgz#6e4bed230ec6081dc2904b94b72fe4a5d4bd168f" + integrity sha512-6W2vZjvi0Mv+4xEtwMDGhWwo7FotWR6eKfmntmduvehWevFpMxOKcTtyotjLigfZv738y50YWmvbaPuAPJG3BA== -"@tiptap/extension-text@2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@tiptap/extension-text/-/extension-text-2.0.2.tgz#40570b8ee0515d4495900681ae29a464ed0a39f8" - integrity sha512-kAO+WurWOyHIV/x8qHMF3bSlWrdlPtjEYmf+w8wHKy3FzE55eF6SsGt4FymClNkJmyXdgflXBB3Wv/Z53myy8g== - -"@tiptap/pm@2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@tiptap/pm/-/pm-2.0.2.tgz#f4ae342ce503c0ede8c17cec4566fec38197e67a" - integrity sha512-vXlI82bZ4XrmVD6m/pO27gqlm+tU57mpjy9WjkJpEUOifQZK8LihR3l5k55Z0RqalV4/E79iU1cp8mw0v13nhA== - dependencies: - prosemirror-changeset "^2.2.0" - prosemirror-collab "^1.3.0" - prosemirror-commands "^1.3.1" - prosemirror-dropcursor "^1.5.0" - prosemirror-gapcursor "^1.3.1" - prosemirror-history "^1.3.0" - prosemirror-inputrules "^1.2.0" - prosemirror-keymap "^1.2.0" - prosemirror-markdown "^1.10.1" - prosemirror-menu "^1.2.1" - prosemirror-model "^1.18.1" - prosemirror-schema-basic "^1.2.0" - prosemirror-schema-list "^1.2.2" - prosemirror-state "^1.4.1" - prosemirror-tables "^1.3.0" - prosemirror-trailing-node "^2.0.2" - prosemirror-transform "^1.7.0" - prosemirror-view "^1.28.2" - -"@tiptap/react@2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@tiptap/react/-/react-2.0.2.tgz#a252daf39195afc9cc73f7f48d54a01d6bb23988" - integrity sha512-m/id2H5bvdz0X6pW0T/4wsDwp55fBO03iMa6OVsbASmwvQuCLoemthtZrHmhn609UTWYd8CXnSeDht2t5pz03A== - dependencies: - "@tiptap/extension-bubble-menu" "^2.0.2" - "@tiptap/extension-floating-menu" "^2.0.2" +"@tiptap/extension-floating-menu@^3.26.1": + version "3.27.1" + resolved "https://registry.yarnpkg.com/@tiptap/extension-floating-menu/-/extension-floating-menu-3.27.1.tgz#800b0bd87ea4b587c7e2c403c51a7a75aa856325" + integrity sha512-BmJF1VqB7dSJkgAalrpVFj88WLhxKjcWPuWHOqf2ITrUU2832BhKLXKmxjWUy1gqV8PfNNVWtGfIERy7I0y0+Q== + +"@tiptap/extension-mention@3.26.1": + version "3.26.1" + resolved "https://registry.yarnpkg.com/@tiptap/extension-mention/-/extension-mention-3.26.1.tgz#9ac3147291d343b8b4edccfb4ac2753d0d503216" + integrity sha512-Xz+e++ZOovrWMIkJ82WgpZN3dv2s9P+zeS1uUzC0shVzvDysurnqfYRm9onhDhlL7OIIlhVJjCl0LPsReNwGNA== + +"@tiptap/extension-paragraph@3.26.1": + version "3.26.1" + resolved "https://registry.yarnpkg.com/@tiptap/extension-paragraph/-/extension-paragraph-3.26.1.tgz#9b5059e96ae6623f3327dab3436b780d267a6366" + integrity sha512-OkBeYUNM3eTzjm3z6IcC3NHryOX8g3eGNI86P/B+tFoFQSRuzLsKZU50ARCfIiLLg812NjcqujeJ1eX3BKDZrw== + +"@tiptap/extension-text@3.26.1": + version "3.26.1" + resolved "https://registry.yarnpkg.com/@tiptap/extension-text/-/extension-text-3.26.1.tgz#4b693434477a8fed89f964974634dbe5ae23d742" + integrity sha512-Gocui5WvcCCJJIX17gdOVCSdYi5H4fDwaR0qkMAUZPq5kJCdrfl+vNpt8BTt53Bk+/QumiUW21fhQ184w7RoeQ== + +"@tiptap/extensions@3.26.1": + version "3.26.1" + resolved "https://registry.yarnpkg.com/@tiptap/extensions/-/extensions-3.26.1.tgz#9f5d9ea5eb64d5888b35d4ea91907610e1d51844" + integrity sha512-PmRaoe6bebTgz/ZQrjmzwZMST1d9js9ZTiKnUXeXl3Fm+V5U/c3TbbKDfqmL63qPQdjtShDMHi9tYuv+c77OFQ== + +"@tiptap/pm@3.26.1": + version "3.26.1" + resolved "https://registry.yarnpkg.com/@tiptap/pm/-/pm-3.26.1.tgz#a58d59705fc1010f079c048748bc39ff3b822446" + integrity sha512-48cJQRbvr9Ux0+IgM1BR5vOLU5hkC+n+uerdQy2JjrIRKpYE/huU8fQFm6PoRppoKYfilklzb29elsQ+n2TA+g== + dependencies: + prosemirror-changeset "^2.3.0" + prosemirror-commands "^1.6.2" + prosemirror-dropcursor "^1.8.1" + prosemirror-gapcursor "^1.3.2" + prosemirror-history "^1.4.1" + prosemirror-inputrules "^1.4.0" + prosemirror-keymap "^1.2.3" + prosemirror-model "^1.25.7" + prosemirror-schema-list "^1.5.0" + prosemirror-state "^1.4.4" + prosemirror-tables "^1.8.0" + prosemirror-transform "^1.12.0" + prosemirror-view "^1.41.8" + +"@tiptap/react@3.26.1": + version "3.26.1" + resolved "https://registry.yarnpkg.com/@tiptap/react/-/react-3.26.1.tgz#39d39c37f2bd43dc33ba5792f436ebaad1426641" + integrity sha512-Gl7AhTJM7pjQ2WFwdIwD736oQeqUcw3GVaXYmCKtwTSO3F9PszLgeKEp6DvM+CmctTNYhu/apRfzkH3vU0h0uA== + dependencies: + "@types/use-sync-external-store" "^0.0.6" + fast-equals "^5.3.3" + use-sync-external-store "^1.4.0" + optionalDependencies: + "@tiptap/extension-bubble-menu" "^3.26.1" + "@tiptap/extension-floating-menu" "^3.26.1" -"@tiptap/suggestion@2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@tiptap/suggestion/-/suggestion-2.0.2.tgz#f988af5f9a603690d37fdbe7351a7e4f9c09b181" - integrity sha512-JTfmLYr0MKigExma/P67kOClCWnqtLkOfPSNA4JmzG5rupjhaesGcoYlsptewbzl7MtJCthJDP81BNcncIEcBg== +"@tiptap/suggestion@3.26.1": + version "3.26.1" + resolved "https://registry.yarnpkg.com/@tiptap/suggestion/-/suggestion-3.26.1.tgz#d93be8c9e2e73ed8d70b1ba2f370cee239dc8ea7" + integrity sha512-Bg8IyuDC92InSPzcHvCT3+ZDCJSMJIEINdFg513RPQzwZTw1dsrU0K00XYcDT6lOhZwLM2IVTiE6sZl2GY25Rg== "@tootallnate/once@2": version "2.0.1" @@ -5571,24 +5579,11 @@ dependencies: "@types/node" "*" -"@types/linkify-it@^5": - version "5.0.0" - resolved "https://registry.yarnpkg.com/@types/linkify-it/-/linkify-it-5.0.0.tgz#21413001973106cda1c3a9b91eedd4ccd5469d76" - integrity sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q== - "@types/lodash@^4.14.149": version "4.17.6" resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.17.6.tgz#193ced6a40c8006cfc1ca3f4553444fb38f0e543" integrity sha512-OpXEVoCKSS3lQqjx9GGGOapBeuW5eUboYHRlHP9urXPX25IKZ6AnP5ZRxtVf63iieUbsHxLn8NQ5Nlftc6yzAA== -"@types/markdown-it@^14.0.0": - version "14.1.2" - resolved "https://registry.yarnpkg.com/@types/markdown-it/-/markdown-it-14.1.2.tgz#57f2532a0800067d9b934f3521429a2e8bfb4c61" - integrity sha512-promo4eFwuiW+TfGxhi+0x3czqTYJkG8qB17ZUJiVF10Xm7NLVRSLUsfRTU/6h1e24VvRnXCx+hG7li58lkzog== - dependencies: - "@types/linkify-it" "^5" - "@types/mdurl" "^2" - "@types/mdast@^4.0.0": version "4.0.4" resolved "https://registry.yarnpkg.com/@types/mdast/-/mdast-4.0.4.tgz#7ccf72edd2f1aa7dd3437e180c64373585804dd6" @@ -5596,11 +5591,6 @@ dependencies: "@types/unist" "*" -"@types/mdurl@^2": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@types/mdurl/-/mdurl-2.0.0.tgz#d43878b5b20222682163ae6f897b20447233bdfd" - integrity sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg== - "@types/mdx@^2.0.0": version "2.0.13" resolved "https://registry.yarnpkg.com/@types/mdx/-/mdx-2.0.13.tgz#68f6877043d377092890ff5b298152b0a21671bd" @@ -5867,6 +5857,11 @@ resolved "https://registry.yarnpkg.com/@types/unist/-/unist-2.0.11.tgz#11af57b127e32487774841f7a4e54eab166d03c4" integrity sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA== +"@types/use-sync-external-store@^0.0.6": + version "0.0.6" + resolved "https://registry.yarnpkg.com/@types/use-sync-external-store/-/use-sync-external-store-0.0.6.tgz#60be8d21baab8c305132eb9cb912ed497852aadc" + integrity sha512-zFDAD+tlpf2r4asuHEj0XH6pY6i0g5NeAHPn+15wk3BV6JA69eERFXC1gyGThDkVa1zCyKr5jox1+2LbV/AMLg== + "@types/webpack-sources@*": version "3.2.3" resolved "https://registry.yarnpkg.com/@types/webpack-sources/-/webpack-sources-3.2.3.tgz#b667bd13e9fa15a9c26603dce502c7985418c3d8" @@ -8143,11 +8138,6 @@ create-require@^1.1.1: resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== -crelt@^1.0.0: - version "1.0.6" - resolved "https://registry.yarnpkg.com/crelt/-/crelt-1.0.6.tgz#7cc898ea74e190fb6ef9dae57f8f81cf7302df72" - integrity sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g== - cross-fetch@^3.0.4: version "3.1.8" resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.1.8.tgz#0327eba65fd68a7d119f8fb2bf9334a1a7956f82" @@ -9891,6 +9881,11 @@ fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== +fast-equals@^5.3.3: + version "5.4.0" + resolved "https://registry.yarnpkg.com/fast-equals/-/fast-equals-5.4.0.tgz#b60073b8764f27029598447f05773c7534ba7f1e" + integrity sha512-jt2DW/aNFNwke7AUd+Z+e6pz39KO5rzdbbFCg2sGafS4mk13MI7Z8O5z9cADNn5lhGODIgLwug6TZO2ctf7kcw== + fast-glob@^3.0.3, fast-glob@^3.2.9, fast-glob@^3.3.3: version "3.3.3" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.3.tgz#d06d585ce8dba90a16b0505c543c3ccfb3aeb818" @@ -12864,13 +12859,6 @@ lines-and-columns@^1.1.6: resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== -linkify-it@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/linkify-it/-/linkify-it-5.0.1.tgz#10c4cecbb5c6828eabf81d3c801adc4a542dfb55" - integrity sha512-wVoTjP4Q6R0NW5hiZkVJaFZPWgtXfoGF+6LucL3/FtiNjmcHhYjEr5f1Kqjirc1nBW07J/ZuRFumqr2oqccEWg== - dependencies: - uc.micro "^2.0.0" - lint-staged@^9.5.0: version "9.5.0" resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-9.5.0.tgz#290ec605252af646d9b74d73a0fa118362b05a33" @@ -13266,18 +13254,6 @@ makeerror@1.0.12: dependencies: tmpl "1.0.5" -markdown-it@^14.0.0: - version "14.2.0" - resolved "https://registry.yarnpkg.com/markdown-it/-/markdown-it-14.2.0.tgz#06d48d9035e77d5b1c85adb315482fc8240289ef" - integrity sha512-1TGiQiJVRQ3NPmZH6sx5Cfnmg6GQm9jvC1ch4TK511NjSJvjzKLzn5pPfZRNZkRPZP0HqCioSndqH8v2nRaWVQ== - dependencies: - argparse "^2.0.1" - entities "^4.4.0" - linkify-it "^5.0.1" - mdurl "^2.0.0" - punycode.js "^2.3.1" - uc.micro "^2.1.0" - markdown-table@^3.0.0: version "3.0.4" resolved "https://registry.yarnpkg.com/markdown-table/-/markdown-table-3.0.4.tgz#fe44d6d410ff9d6f2ea1797a3f60aa4d2b631c2a" @@ -13531,11 +13507,6 @@ mdn-data@^2.15.0: resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.21.0.tgz#f3a495e8b1e60cb4fbeaf9136aefba2f987a56e1" integrity sha512-+ZKPQezM5vYJIkCxaC+4DTnRrVZR1CgsKLu5zsQERQx6Tea8Y+wMx5A24rq8A8NepCeatIQufVAekKNgiBMsGQ== -mdurl@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-2.0.0.tgz#80676ec0433025dd3e17ee983d0fe8de5a2237e0" - integrity sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w== - media-typer@0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" @@ -15729,21 +15700,14 @@ property-information@^7.0.0: resolved "https://registry.yarnpkg.com/property-information/-/property-information-7.1.0.tgz#b622e8646e02b580205415586b40804d3e8bfd5d" integrity sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ== -prosemirror-changeset@^2.2.0: +prosemirror-changeset@^2.3.0: version "2.4.1" resolved "https://registry.yarnpkg.com/prosemirror-changeset/-/prosemirror-changeset-2.4.1.tgz#685091245bf3299cd1cae2b8983cf9b0342e6b39" integrity sha512-96WBLhOaYhJ+kPhLg3uW359Tz6I/MfcrQfL4EGv4SrcqKEMC1gmoGrXHecPE8eOwTVCJ4IwgfzM8fFad25wNfw== dependencies: prosemirror-transform "^1.0.0" -prosemirror-collab@^1.3.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/prosemirror-collab/-/prosemirror-collab-1.3.1.tgz#0e8c91e76e009b53457eb3b3051fb68dad029a33" - integrity sha512-4SnynYR9TTYaQVXd/ieUvsVV4PDMBzrq2xPUWutHivDuOshZXqQ5rGbZM84HEaXKbLdItse7weMGOUdDVcLKEQ== - dependencies: - prosemirror-state "^1.0.0" - -prosemirror-commands@^1.0.0, prosemirror-commands@^1.3.1: +prosemirror-commands@^1.6.2: version "1.7.1" resolved "https://registry.yarnpkg.com/prosemirror-commands/-/prosemirror-commands-1.7.1.tgz#d101fef85618b1be53d5b99ea17bee5600781b38" integrity sha512-rT7qZnQtx5c0/y/KlYaGvtG411S97UaL6gdp6RIZ23DLHanMYLyfGBV5DtSnZdthQql7W+lEVbpSfwtO8T+L2w== @@ -15752,7 +15716,7 @@ prosemirror-commands@^1.0.0, prosemirror-commands@^1.3.1: prosemirror-state "^1.0.0" prosemirror-transform "^1.10.2" -prosemirror-dropcursor@^1.5.0: +prosemirror-dropcursor@^1.8.1: version "1.8.2" resolved "https://registry.yarnpkg.com/prosemirror-dropcursor/-/prosemirror-dropcursor-1.8.2.tgz#2ed30c4796109ddeb1cf7282372b3850528b7228" integrity sha512-CCk6Gyx9+Tt2sbYk5NK0nB1ukHi2ryaRgadV/LvyNuO3ena1payM2z6Cg0vO1ebK8cxbzo41ku2DE5Axj1Zuiw== @@ -15761,7 +15725,7 @@ prosemirror-dropcursor@^1.5.0: prosemirror-transform "^1.1.0" prosemirror-view "^1.1.0" -prosemirror-gapcursor@^1.3.1: +prosemirror-gapcursor@^1.3.2: version "1.4.1" resolved "https://registry.yarnpkg.com/prosemirror-gapcursor/-/prosemirror-gapcursor-1.4.1.tgz#da33c905fece147df577342c06f4929b25d365ee" integrity sha512-pMdYaEnjNMSwl11yjEGtgTmLkR08m/Vl+Jj443167p9eB3HVQKhYCc4gmHVDsLPODfZfjr/MmirsdyZziXbQKw== @@ -15771,7 +15735,7 @@ prosemirror-gapcursor@^1.3.1: prosemirror-state "^1.0.0" prosemirror-view "^1.0.0" -prosemirror-history@^1.0.0, prosemirror-history@^1.3.0: +prosemirror-history@^1.4.1: version "1.5.0" resolved "https://registry.yarnpkg.com/prosemirror-history/-/prosemirror-history-1.5.0.tgz#ee21fc5de85a1473e3e3752015ffd6d649a06859" integrity sha512-zlzTiH01eKA55UAf1MEjtssJeHnGxO0j4K4Dpx+gnmX9n+SHNlDqI2oO1Kv1iPN5B1dm5fsljCfqKF9nFL6HRg== @@ -15781,7 +15745,7 @@ prosemirror-history@^1.0.0, prosemirror-history@^1.3.0: prosemirror-view "^1.31.0" rope-sequence "^1.3.0" -prosemirror-inputrules@^1.2.0: +prosemirror-inputrules@^1.4.0: version "1.5.1" resolved "https://registry.yarnpkg.com/prosemirror-inputrules/-/prosemirror-inputrules-1.5.1.tgz#d2e935f6086e3801486b09222638f61dae89a570" integrity sha512-7wj4uMjKaXWAQ1CDgxNzNtR9AlsuwzHfdFH1ygEHA2KHF2DOEaXl1CJfNPAKCg9qNEh4rum975QLaCiQPyY6Fw== @@ -15789,7 +15753,7 @@ prosemirror-inputrules@^1.2.0: prosemirror-state "^1.0.0" prosemirror-transform "^1.0.0" -prosemirror-keymap@^1.0.0, prosemirror-keymap@^1.2.0, prosemirror-keymap@^1.2.3: +prosemirror-keymap@^1.0.0, prosemirror-keymap@^1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/prosemirror-keymap/-/prosemirror-keymap-1.2.3.tgz#c0f6ab95f75c0b82c97e44eb6aaf29cbfc150472" integrity sha512-4HucRlpiLd1IPQQXNqeo81BGtkY8Ai5smHhKW9jjPKRc2wQIxksg7Hl1tTI2IfT2B/LgX6bfYvXxEpJl7aKYKw== @@ -15797,40 +15761,21 @@ prosemirror-keymap@^1.0.0, prosemirror-keymap@^1.2.0, prosemirror-keymap@^1.2.3: prosemirror-state "^1.0.0" w3c-keyname "^2.2.0" -prosemirror-markdown@^1.10.1: - version "1.13.4" - resolved "https://registry.yarnpkg.com/prosemirror-markdown/-/prosemirror-markdown-1.13.4.tgz#4620e6a0580cd52b5fc8e352c7e04830cd4b3048" - integrity sha512-D98dm4cQ3Hs6EmjK500TdAOew4Z03EV71ajEFiWra3Upr7diytJsjF4mPV2dW+eK5uNectiRj0xFxYI9NLXDbw== - dependencies: - "@types/markdown-it" "^14.0.0" - markdown-it "^14.0.0" - prosemirror-model "^1.25.0" - -prosemirror-menu@^1.2.1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/prosemirror-menu/-/prosemirror-menu-1.3.2.tgz#84bcc9756ae1f790a5e62f10df61aec8b71e12cb" - integrity sha512-6VgUJTYod0nMBlCaYJGhXGLu7Gt4AvcwcOq0YfJCY/6Uh+3S7UsWhpy6rJFCBFOmonq1hD8KyWOtZhkppd4YPg== - dependencies: - crelt "^1.0.0" - prosemirror-commands "^1.0.0" - prosemirror-history "^1.0.0" - prosemirror-state "^1.0.0" - -prosemirror-model@^1.0.0, prosemirror-model@^1.18.1, prosemirror-model@^1.20.0, prosemirror-model@^1.21.0, prosemirror-model@^1.25.0, prosemirror-model@^1.25.4: +prosemirror-model@^1.0.0, prosemirror-model@^1.20.0, prosemirror-model@^1.21.0, prosemirror-model@^1.25.4: version "1.25.4" resolved "https://registry.yarnpkg.com/prosemirror-model/-/prosemirror-model-1.25.4.tgz#8ebfbe29ecbee9e5e2e4048c4fe8e363fcd56e7c" integrity sha512-PIM7E43PBxKce8OQeezAs9j4TP+5yDpZVbuurd1h5phUxEKIu+G2a+EUZzIC5nS1mJktDJWzbqS23n1tsAf5QA== dependencies: orderedmap "^2.0.0" -prosemirror-schema-basic@^1.2.0: - version "1.2.4" - resolved "https://registry.yarnpkg.com/prosemirror-schema-basic/-/prosemirror-schema-basic-1.2.4.tgz#389ce1ec09b8a30ea9bbb92c58569cb690c2d695" - integrity sha512-ELxP4TlX3yr2v5rM7Sb70SqStq5NvI15c0j9j/gjsrO5vaw+fnnpovCLEGIcpeGfifkuqJwl4fon6b+KdrODYQ== +prosemirror-model@^1.25.7, prosemirror-model@^1.25.8: + version "1.25.9" + resolved "https://registry.yarnpkg.com/prosemirror-model/-/prosemirror-model-1.25.9.tgz#1e9f2faa5d824d65c5265f01768fcfa70bfc39dd" + integrity sha512-pRTklkDDMMRopyoAcrr9wV/8g/RYgrLHBuJAb5hlEuYZRdm5yqmPjWId83fpBwPpSFqEdja0H7Dfd7z1X/npcA== dependencies: - prosemirror-model "^1.25.0" + orderedmap "^2.0.0" -prosemirror-schema-list@^1.2.2: +prosemirror-schema-list@^1.5.0: version "1.5.1" resolved "https://registry.yarnpkg.com/prosemirror-schema-list/-/prosemirror-schema-list-1.5.1.tgz#5869c8f749e8745c394548bb11820b0feb1e32f5" integrity sha512-927lFx/uwyQaGwJxLWCZRkjXG0p48KpMj6ueoYiu4JX05GGuGcgzAy62dfiV8eFZftgyBUvLx76RsMe20fJl+Q== @@ -15839,7 +15784,7 @@ prosemirror-schema-list@^1.2.2: prosemirror-state "^1.0.0" prosemirror-transform "^1.7.3" -prosemirror-state@^1.0.0, prosemirror-state@^1.2.2, prosemirror-state@^1.4.1, prosemirror-state@^1.4.4: +prosemirror-state@^1.0.0, prosemirror-state@^1.2.2, prosemirror-state@^1.4.4: version "1.4.4" resolved "https://registry.yarnpkg.com/prosemirror-state/-/prosemirror-state-1.4.4.tgz#72b5e926f9e92dcee12b62a05fcc8a2de3bf5b39" integrity sha512-6jiYHH2CIGbCfnxdHbXZ12gySFY/fz/ulZE333G6bPqIZ4F+TXo9ifiR86nAHpWnfoNjOb3o5ESi7J8Uz1jXHw== @@ -15848,7 +15793,7 @@ prosemirror-state@^1.0.0, prosemirror-state@^1.2.2, prosemirror-state@^1.4.1, pr prosemirror-transform "^1.0.0" prosemirror-view "^1.27.0" -prosemirror-tables@^1.3.0: +prosemirror-tables@^1.8.0: version "1.8.5" resolved "https://registry.yarnpkg.com/prosemirror-tables/-/prosemirror-tables-1.8.5.tgz#104427012e5a5da1d2a38c122efee8d66bdd5104" integrity sha512-V/0cDCsHKHe/tfWkeCmthNUcEp1IVO3p6vwN8XtwE9PZQLAZJigbw3QoraAdfJPir4NKJtNvOB8oYGKRl+t0Dw== @@ -15859,22 +15804,14 @@ prosemirror-tables@^1.3.0: prosemirror-transform "^1.10.5" prosemirror-view "^1.41.4" -prosemirror-trailing-node@^2.0.2: - version "2.0.9" - resolved "https://registry.yarnpkg.com/prosemirror-trailing-node/-/prosemirror-trailing-node-2.0.9.tgz#a087e6d1372e888cd3e57c977507b6b85dc658e4" - integrity sha512-YvyIn3/UaLFlFKrlJB6cObvUhmwFNZVhy1Q8OpW/avoTbD/Y7H5EcjK4AZFKhmuS6/N6WkGgt7gWtBWDnmFvHg== - dependencies: - "@remirror/core-constants" "^2.0.2" - escape-string-regexp "^4.0.0" - -prosemirror-transform@^1.0.0, prosemirror-transform@^1.1.0, prosemirror-transform@^1.10.2, prosemirror-transform@^1.10.5, prosemirror-transform@^1.7.0, prosemirror-transform@^1.7.3: +prosemirror-transform@^1.0.0, prosemirror-transform@^1.1.0, prosemirror-transform@^1.10.2, prosemirror-transform@^1.10.5, prosemirror-transform@^1.12.0, prosemirror-transform@^1.7.3: version "1.12.0" resolved "https://registry.yarnpkg.com/prosemirror-transform/-/prosemirror-transform-1.12.0.tgz#0239288d0e98d91e6af3dd269a8968466be406d7" integrity sha512-GxboyN4AMIsoHNtz5uf2r2Ru551i5hWeCMD6E2Ib4Eogqoub0NflniaBPVQ4MrGE5yZ8JV9tUHg9qcZTTrcN4w== dependencies: prosemirror-model "^1.21.0" -prosemirror-view@^1.0.0, prosemirror-view@^1.1.0, prosemirror-view@^1.27.0, prosemirror-view@^1.28.2, prosemirror-view@^1.31.0, prosemirror-view@^1.41.4: +prosemirror-view@^1.0.0, prosemirror-view@^1.1.0, prosemirror-view@^1.27.0, prosemirror-view@^1.31.0, prosemirror-view@^1.41.4: version "1.41.8" resolved "https://registry.yarnpkg.com/prosemirror-view/-/prosemirror-view-1.41.8.tgz#bfb48d9dc328f1aa2a0eea1600b0828818be03f1" integrity sha512-TnKDdohEatgyZNGCDWIdccOHXhYloJwbwU+phw/a23KBvJIR9lWQWW7WHHK3vBdOLDNuF7TaX98GObUZOWkOnA== @@ -15883,6 +15820,15 @@ prosemirror-view@^1.0.0, prosemirror-view@^1.1.0, prosemirror-view@^1.27.0, pros prosemirror-state "^1.0.0" prosemirror-transform "^1.1.0" +prosemirror-view@^1.41.8: + version "1.42.0" + resolved "https://registry.yarnpkg.com/prosemirror-view/-/prosemirror-view-1.42.0.tgz#82ed0823a1bf971d27cb647f3a23d5e005d04c00" + integrity sha512-N54DF3OXNWDuP81G1kbfCys8ZzIjuL1VnvJ2mk5STSu/fNxWIcX/EutQLA3s9KR/2wVhgDi4hzBB/1fINVxk0A== + dependencies: + prosemirror-model "^1.25.8" + prosemirror-state "^1.0.0" + prosemirror-transform "^1.1.0" + proto-list@~1.2.1: version "1.2.4" resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849" @@ -15941,11 +15887,6 @@ pump@^3.0.0: end-of-stream "^1.1.0" once "^1.3.1" -punycode.js@^2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/punycode.js/-/punycode.js-2.3.1.tgz#6b53e56ad75588234e79f4affa90972c7dd8cdb7" - integrity sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA== - punycode@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" @@ -18470,13 +18411,6 @@ tinyspy@^4.0.3: resolved "https://registry.yarnpkg.com/tinyspy/-/tinyspy-4.0.3.tgz#d1d0f0602f4c15f1aae083a34d6d0df3363b1b52" integrity sha512-t2T/WLB2WRgZ9EpE4jgPJ9w+i66UZfDc8wHh0xrwiRNN+UwH98GIJkTeZqX9rg0i0ptwzqW+uYeIF0T4F8LR7A== -tippy.js@^6.3.7: - version "6.3.7" - resolved "https://registry.yarnpkg.com/tippy.js/-/tippy.js-6.3.7.tgz#8ccfb651d642010ed9a32ff29b0e9e19c5b8c61c" - integrity sha512-E1d3oP2emgJ9dRQZdf3Kkn0qJgI6ZLpyS5z6ZkY1DF3kaQaBsGZsndEpHwx+eC+tYM41HaSNvNtLx8tU57FzTQ== - dependencies: - "@popperjs/core" "^2.9.0" - tldts-core@^6.1.86: version "6.1.86" resolved "https://registry.yarnpkg.com/tldts-core/-/tldts-core-6.1.86.tgz#a93e6ed9d505cb54c542ce43feb14c73913265d8" @@ -18797,11 +18731,6 @@ ua-parser-js@^0.7.18: resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.38.tgz#f497d8a4dc1fec6e854e5caa4b2f9913422ef054" integrity sha512-fYmIy7fKTSFAhG3fuPlubeGaMoAd6r0rSnfEsO5nEY55i26KSLt9EH7PLQiiqPUhNqYIJvSkTy1oArIcXAbPbA== -uc.micro@^2.0.0, uc.micro@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/uc.micro/-/uc.micro-2.1.0.tgz#f8d3f7d0ec4c3dea35a7e3c8efa4cb8b45c9e7ee" - integrity sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A== - uglify-js@^3.1.4: version "3.18.0" resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.18.0.tgz#73b576a7e8fda63d2831e293aeead73e0a270deb" @@ -19057,7 +18986,7 @@ use-sidecar@^1.1.2: detect-node-es "^1.1.0" tslib "^2.0.0" -use-sync-external-store@^1.2.0, use-sync-external-store@^1.6.0: +use-sync-external-store@^1.2.0, use-sync-external-store@^1.4.0, use-sync-external-store@^1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/use-sync-external-store/-/use-sync-external-store-1.6.0.tgz#b174bfa65cb2b526732d9f2ac0a408027876f32d" integrity sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w== From 2dcf7f8fb7c30c0571f21166218365fdcd803fe9 Mon Sep 17 00:00:00 2001 From: Duncan Hsu Date: Thu, 2 Jul 2026 16:41:12 -0700 Subject: [PATCH 3/4] feat(video): address PR comments --- package.json | 2 +- .../content-sidebar/activity-feed-v2/ActivityFeedV2.tsx | 2 +- src/elements/content-sidebar/activity-feed-v2/types.ts | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index 9ccc3235ef..f42b3d1097 100644 --- a/package.json +++ b/package.json @@ -314,7 +314,7 @@ "@box/metadata-view": "^1.53.26", "@box/react-virtualized": "^9.22.3-rc-box.10", "@box/readable-time": "^2.1.4", - "@box/threaded-annotations": "^2.1.7", + "@box/threaded-annotations": "^3.1.1", "@box/types": "^2.1.8", "@box/unified-share-modal": "^2.15.16", "@box/uploads-manager": "^1.17.2", diff --git a/src/elements/content-sidebar/activity-feed-v2/ActivityFeedV2.tsx b/src/elements/content-sidebar/activity-feed-v2/ActivityFeedV2.tsx index 7ba04a8c0e..04b57bcba9 100644 --- a/src/elements/content-sidebar/activity-feed-v2/ActivityFeedV2.tsx +++ b/src/elements/content-sidebar/activity-feed-v2/ActivityFeedV2.tsx @@ -358,7 +358,7 @@ const ActivityFeedV2 = ({ viewer.emit('comment_markers', markers); const handleMarkerSelect = ({ id }: { id: string }) => { - const item = filteredItems.find(fi => fi.id === id); + const item = filteredItems.find(filteredItem => filteredItem.id === id); // Annotation markers are already handled via the annotator pipeline, so only handle comments here. if (item?.type === 'comment' && onCommentSelect) { onCommentSelect(id); diff --git a/src/elements/content-sidebar/activity-feed-v2/types.ts b/src/elements/content-sidebar/activity-feed-v2/types.ts index b672a17e1b..6a1fe8070f 100644 --- a/src/elements/content-sidebar/activity-feed-v2/types.ts +++ b/src/elements/content-sidebar/activity-feed-v2/types.ts @@ -108,7 +108,6 @@ export type ActivityFeedV2Props = { onAnnotationDelete?: (params: { id: string; permissions: AnnotationPermission }) => void; onAnnotationEdit?: (params: { id: string; permissions: AnnotationPermission; text: string }) => void; onAnnotationSelect?: (annotation: Annotation) => void; - onCommentSelect?: (commentId: string) => void; onAnnotationStatusChange?: (params: { id: string; permissions: AnnotationPermission; @@ -117,6 +116,7 @@ export type ActivityFeedV2Props = { onCommentCopyLink?: (params: { id: string }) => void; onCommentCreate?: (text: string, hasMention: boolean) => void; onCommentDelete?: (params: { id: string; permissions: BoxCommentPermission }) => void; + onCommentSelect?: (commentId: string) => void; onCommentUpdate?: ( id: string, text: string | undefined, From fdd4b46c083c1885892531a9aa02787f0c1f8558 Mon Sep 17 00:00:00 2001 From: Duncan Hsu Date: Thu, 2 Jul 2026 16:46:05 -0700 Subject: [PATCH 4/4] refactor(video): alphabetize prop --- .../content-sidebar/activity-feed-v2/ActivityFeedV2.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/elements/content-sidebar/activity-feed-v2/ActivityFeedV2.tsx b/src/elements/content-sidebar/activity-feed-v2/ActivityFeedV2.tsx index 04b57bcba9..10cc658526 100644 --- a/src/elements/content-sidebar/activity-feed-v2/ActivityFeedV2.tsx +++ b/src/elements/content-sidebar/activity-feed-v2/ActivityFeedV2.tsx @@ -56,8 +56,8 @@ const ActivityFeedV2 = ({ onAnnotationStatusChange, onCommentCopyLink, onCommentCreate, - onCommentSelect, onCommentDelete, + onCommentSelect, onCommentUpdate, onReplyCreate, onReplyDelete,