@box/threaded-annotations 4.2.1 → 4.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chunks/threaded-annotations.js +1 -1
- package/dist/esm/lib/components/v2/text-message/subcomponents/message-renderer.js +1 -1
- package/dist/esm/lib/components/v2/text-message/subcomponents/truncate-document.js +1 -1
- package/dist/esm/lib/components/v2/text-message/text-message.js +1 -1
- package/dist/esm/lib/v2/types/document-node-types.js +1 -0
- package/dist/esm/lib/v2/types/index.js +1 -1
- package/dist/types/lib/v2/types/document-node-types.d.ts +24 -1
- package/package.json +11 -11
|
@@ -1 +1 @@
|
|
|
1
|
-
import messages from"../esm/lib/messages.js";import{MentionContextProvider}from"../esm/lib/components/mention-component/mention-context.js";import{MessagesView}from"../esm/lib/components/messages-view/messages-view.js";import{MessageEditor}from"../esm/lib/components/message-editor/message-editor.js";import{TextButton}from"@box/blueprint-web";import{ArrowArchedRight}from"@box/blueprint-web-assets/icons/Fill";import clsx from"clsx";import{useCallback,useEffect,useState}from"react";import{useIntl}from"react-intl";import{jsx,jsxs}from"react/jsx-runtime";import '../styles/threaded-annotations.css';var threaded_annotations_module_default={threadedAnnotations:`_threadedAnnotations_14dbm_1`,messagesContainer:`_messagesContainer_14dbm_11`,editorContainer:`_editorContainer_14dbm_20`,editorContainerWithBorder:`_editorContainerWithBorder_14dbm_25`,removePaddingTop:`_removePaddingTop_14dbm_28`},ThreadedAnnotations=({messageEditorOptions,messagesViewOptions,onEditorOpen,onEditorClose,onAnnotationsClose,isReplyAllowed=!0,collaborationPopoverProps,getAvatarUrl,fetchCollaboratorState,fetchEmail})=>{let messageCount=messagesViewOptions.messages.length,isMessagesEmpty=messageCount===0,intl=useIntl(),[isOverflowing,setIsOverflowing]=useState(!1),[isReplyOpen,setIsReplyOpen]=useState(()=>messageCount===0);useEffect(()=>{messageCount===0&&setIsReplyOpen(!0)},[messageCount]);let handleEditorOpen=useCallback(()=>{isReplyAllowed&&(setIsReplyOpen(!0),onEditorOpen?.())},[onEditorOpen,isReplyAllowed]),handleEditorClose=useCallback(replyMode=>{if(isMessagesEmpty&&replyMode){onAnnotationsClose?.();return}setIsReplyOpen(!1),onEditorClose?.()},[onEditorClose,isMessagesEmpty,onAnnotationsClose]),handleOverflowChange=useCallback(overflowing=>{setIsOverflowing(overflowing)},[]);return jsx(MentionContextProvider,{value:{collaborationPopoverProps,getAvatarUrl,fetchCollaboratorState,fetchEmail},children:jsxs(`div`,{className:threaded_annotations_module_default.threadedAnnotations,children:[jsx(`div`,{className:clsx(threaded_annotations_module_default.messagesContainer,{[threaded_annotations_module_default.removePaddingTop]:isMessagesEmpty}),children:jsx(MessagesView,{...messagesViewOptions,onOverflowChange:handleOverflowChange})}),jsx(`div`,{className:clsx(threaded_annotations_module_default.editorContainer,{[threaded_annotations_module_default.
|
|
1
|
+
import messages from"../esm/lib/messages.js";import{MentionContextProvider}from"../esm/lib/components/mention-component/mention-context.js";import{MessagesView}from"../esm/lib/components/messages-view/messages-view.js";import{MessageEditor}from"../esm/lib/components/message-editor/message-editor.js";import{TextButton}from"@box/blueprint-web";import{ArrowArchedRight}from"@box/blueprint-web-assets/icons/Fill";import clsx from"clsx";import{useCallback,useEffect,useState}from"react";import{useIntl}from"react-intl";import{jsx,jsxs}from"react/jsx-runtime";import '../styles/threaded-annotations.css';var threaded_annotations_module_default={threadedAnnotations:`_threadedAnnotations_14dbm_1`,messagesContainer:`_messagesContainer_14dbm_11`,editorContainer:`_editorContainer_14dbm_20`,editorContainerWithBorder:`_editorContainerWithBorder_14dbm_25`,removePaddingTop:`_removePaddingTop_14dbm_28`},ThreadedAnnotations=({messageEditorOptions,messagesViewOptions,onEditorOpen,onEditorClose,onAnnotationsClose,isReplyAllowed=!0,collaborationPopoverProps,getAvatarUrl,fetchCollaboratorState,fetchEmail})=>{let messageCount=messagesViewOptions.messages.length,isMessagesEmpty=messageCount===0,intl=useIntl(),[isOverflowing,setIsOverflowing]=useState(!1),[isReplyOpen,setIsReplyOpen]=useState(()=>messageCount===0);useEffect(()=>{messageCount===0&&setIsReplyOpen(!0)},[messageCount]);let handleEditorOpen=useCallback(()=>{isReplyAllowed&&(setIsReplyOpen(!0),onEditorOpen?.())},[onEditorOpen,isReplyAllowed]),handleEditorClose=useCallback(replyMode=>{if(isMessagesEmpty&&replyMode){onAnnotationsClose?.();return}setIsReplyOpen(!1),onEditorClose?.()},[onEditorClose,isMessagesEmpty,onAnnotationsClose]),handleOverflowChange=useCallback(overflowing=>{setIsOverflowing(overflowing)},[]);return jsx(MentionContextProvider,{value:{collaborationPopoverProps,getAvatarUrl,fetchCollaboratorState,fetchEmail},children:jsxs(`div`,{className:threaded_annotations_module_default.threadedAnnotations,children:[jsx(`div`,{className:clsx(threaded_annotations_module_default.messagesContainer,{[threaded_annotations_module_default.removePaddingTop]:isMessagesEmpty}),children:jsx(MessagesView,{...messagesViewOptions,onOverflowChange:handleOverflowChange})}),jsx(`div`,{className:clsx(threaded_annotations_module_default.editorContainer,{[threaded_annotations_module_default.editorContainerWithBorder]:isOverflowing&&isReplyAllowed}),children:isReplyAllowed&&(isReplyOpen?jsx(MessageEditor,{...messageEditorOptions,messageCount,onCancel:handleEditorClose}):jsx(TextButton,{"aria-label":intl.formatMessage(messages.replyButtonAriaLabel),icon:ArrowArchedRight,onClick:handleEditorOpen,children:intl.formatMessage(messages.reply)}))})]})})};export{ThreadedAnnotations as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as MentionComponent}from"../../../../../../chunks/mention-component.js";import messages from"../messages.js";import{t as text_message_module_default}from"../../../../../../chunks/text-message.module.js";import"../constants.js";import{splitTextIntoSegments}from"./url-segments.js";import{getDocumentLength,truncateDocument}from"./truncate-document.js";import{Link,Text,TextButton}from"@box/blueprint-web";import{useState}from"react";import{useIntl}from"react-intl";import{jsx,jsxs}from"react/jsx-runtime";var renderMentionNode=({node,index,paragraphIndex})=>{let key=`mention-${node.attrs.mentionedUserId}-${paragraphIndex}-${index}`;return jsx(MentionComponent,{authorId:node.attrs.authorId,mentionedUserEmail:node.attrs.mentionedUserEmail,mentionedUserId:node.attrs.mentionedUserId,mentionedUserName:node.attrs.mentionedUserName,mentionId:node.attrs.mentionId},key)},handleMessageLinkClick=event=>{event.currentTarget.closest(`[data-thread-expandable]`)&&event.preventDefault()},renderTextNode=({node,index,paragraphIndex,intl})=>{let key=`text-${node.text.substring(0,20)}-${paragraphIndex}-${index}`,segments=splitTextIntoSegments(node.text);return jsx(Text,{"aria-label":intl.formatMessage(messages.textMessageAriaLabel),as:`span`,color:`textOnLightDefault`,variant:`bodyDefault`,children:segments.map((segment,segmentIndex)=>segment.type===`url`?jsx(Link,{href:segment.value,inheritFont:!0,rel:`noopener noreferrer`,target:`_blank`,onClick:handleMessageLinkClick,children:segment.value},`${key}-segment-${segmentIndex}`):segment.value)},key)},renderParagraphContent=({content,paragraphIndex,intl})=>content.map((node,index)=>{switch(node.type){case`mention`:return renderMentionNode({node,index,paragraphIndex});case`text`:return renderTextNode({node,index,paragraphIndex,intl});default:return[]}}),renderParagraphNode=({paragraph,index,intl,inlineSuffix})=>{let content=paragraph.content||[],key=`paragraph-${index}`;return jsxs(Text,{as:`p`,variant:`bodyDefault`,children:[content.length>0?renderParagraphContent({content,paragraphIndex:index,intl}):jsx(`br`,{}),inlineSuffix]},key)},MessageRenderer=({messageObject})=>{let intl=useIntl(),[isExpanded,setIsExpanded]=useState(!1);if(!messageObject.content||messageObject.content.length===0)return null;let totalLength=getDocumentLength(messageObject),isTruncated=!isExpanded&&totalLength>450,
|
|
1
|
+
import{t as MentionComponent}from"../../../../../../chunks/mention-component.js";import{isParagraphNode}from"../../../../v2/types/document-node-types.js";import messages from"../messages.js";import{t as text_message_module_default}from"../../../../../../chunks/text-message.module.js";import"../constants.js";import{splitTextIntoSegments}from"./url-segments.js";import{getDocumentLength,truncateDocument}from"./truncate-document.js";import{Link,Text,TextButton}from"@box/blueprint-web";import{useState}from"react";import{useIntl}from"react-intl";import{jsx,jsxs}from"react/jsx-runtime";var renderMentionNode=({node,index,paragraphIndex})=>{let key=`mention-${node.attrs.mentionedUserId}-${paragraphIndex}-${index}`;return jsx(MentionComponent,{authorId:node.attrs.authorId,mentionedUserEmail:node.attrs.mentionedUserEmail,mentionedUserId:node.attrs.mentionedUserId,mentionedUserName:node.attrs.mentionedUserName,mentionId:node.attrs.mentionId},key)},handleMessageLinkClick=event=>{event.currentTarget.closest(`[data-thread-expandable]`)&&event.preventDefault()},renderTextNode=({node,index,paragraphIndex,intl})=>{let key=`text-${node.text.substring(0,20)}-${paragraphIndex}-${index}`,segments=splitTextIntoSegments(node.text);return jsx(Text,{"aria-label":intl.formatMessage(messages.textMessageAriaLabel),as:`span`,color:`textOnLightDefault`,variant:`bodyDefault`,children:segments.map((segment,segmentIndex)=>segment.type===`url`?jsx(Link,{href:segment.value,inheritFont:!0,rel:`noopener noreferrer`,target:`_blank`,onClick:handleMessageLinkClick,children:segment.value},`${key}-segment-${segmentIndex}`):segment.value)},key)},renderParagraphContent=({content,paragraphIndex,intl})=>content.map((node,index)=>{switch(node.type){case`mention`:return renderMentionNode({node,index,paragraphIndex});case`text`:return renderTextNode({node,index,paragraphIndex,intl});default:return[]}}),renderParagraphNode=({paragraph,index,intl,inlineSuffix})=>{let content=paragraph.content||[],key=`paragraph-${index}`;return jsxs(Text,{as:`p`,variant:`bodyDefault`,children:[content.length>0?renderParagraphContent({content,paragraphIndex:index,intl}):jsx(`br`,{}),inlineSuffix]},key)},MessageRenderer=({messageObject})=>{let intl=useIntl(),[isExpanded,setIsExpanded]=useState(!1);if(!messageObject.content||messageObject.content.length===0)return null;let totalLength=getDocumentLength(messageObject),isTruncated=!isExpanded&&totalLength>450,paragraphsToRender=(isTruncated?truncateDocument(messageObject,450):messageObject).content.filter(isParagraphNode),suffixAnchorIndex=paragraphsToRender.length-1;for(let i=paragraphsToRender.length-1;i>=0;--i)if((paragraphsToRender[i].content?.length??0)>0){suffixAnchorIndex=i;break}let seeMoreButton=isTruncated?jsx(TextButton,{className:text_message_module_default.seeMoreButton,color:`textOnLightLink`,"data-no-expand":!0,onClick:()=>setIsExpanded(!0),variant:`bodyDefaultBold`,children:intl.formatMessage(messages.seeMore)}):null;return paragraphsToRender.map((paragraph,index)=>renderParagraphNode({paragraph,index,intl,inlineSuffix:index===suffixAnchorIndex?seeMoreButton:null}))};export{MessageRenderer};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{splitTextIntoSegments}from"./url-segments.js";var TRUNCATION_ELLIPSIS=`…`,getMentionDisplayLength=node=>`@${node.attrs.mentionedUserName}`.length,getDocumentLength=document=>{let total=0;for(let paragraph of document.content)for(let node of paragraph.content||[])node.type===`text`?total+=node.text.length:node.type===`mention`&&(total+=getMentionDisplayLength(node));return total},flattenDocument=
|
|
1
|
+
import{isParagraphNode}from"../../../../v2/types/document-node-types.js";import{splitTextIntoSegments}from"./url-segments.js";var TRUNCATION_ELLIPSIS=`…`,getMentionDisplayLength=node=>`@${node.attrs.mentionedUserName}`.length,getDocumentLength=document=>{let total=0;for(let paragraph of document.content.filter(isParagraphNode))for(let node of paragraph.content||[])node.type===`text`?total+=node.text.length:node.type===`mention`&&(total+=getMentionDisplayLength(node));return total},flattenDocument=paragraphs=>{let atoms=[];return paragraphs.forEach((paragraph,paragraphIndex)=>{paragraphIndex>0&&atoms.push({kind:`paragraph-break`,sourceParagraph:paragraph});for(let node of paragraph.content||[])if(node.type===`mention`)atoms.push({kind:`mention`,node});else if(node.type===`text`)for(let segment of splitTextIntoSegments(node.text))atoms.push({kind:segment.type,value:segment.value,sourceNode:node})}),atoms},collectAtomsWithinThreshold=(atoms,threshold)=>{let collected=[],pendingBreaks=[],remaining=threshold,accept=atom=>{collected.push(...pendingBreaks,atom),pendingBreaks.length=0};for(let atom of atoms)if(atom.kind===`paragraph-break`)pendingBreaks.push(atom);else if(remaining<=0)return{collected,truncated:!0};else if(atom.kind===`mention`){let length=getMentionDisplayLength(atom.node);if(length>remaining)return{collected,truncated:!0};accept(atom),remaining-=length}else if(atom.kind===`url`){if(atom.value.length>remaining)return{collected,truncated:!0};accept(atom),remaining-=atom.value.length}else if(atom.value.length<=remaining)accept(atom),remaining-=atom.value.length;else return accept({...atom,value:atom.value.slice(0,remaining)}),{collected,truncated:!0};return{collected,truncated:!1}},reassembleParagraphs=(atoms,firstParagraph)=>{let paragraphs=[],currentNodes=[],currentSource=firstParagraph,lastTextSourceNode=null,flushParagraph=()=>{paragraphs.push({...currentSource,content:currentNodes}),currentNodes=[],lastTextSourceNode=null};for(let atom of atoms)if(atom.kind===`paragraph-break`)flushParagraph(),currentSource=atom.sourceParagraph;else if(atom.kind===`mention`)currentNodes.push(atom.node),lastTextSourceNode=null;else if(lastTextSourceNode===atom.sourceNode){let previousTextNode=currentNodes[currentNodes.length-1];currentNodes[currentNodes.length-1]={...previousTextNode,text:previousTextNode.text+atom.value}}else currentNodes.push({...atom.sourceNode,text:atom.value}),lastTextSourceNode=atom.sourceNode;return flushParagraph(),paragraphs},withTruncationEllipsis=paragraphs=>{let lastNonEmptyIndex=-1;for(let i=paragraphs.length-1;i>=0;--i)if((paragraphs[i].content?.length??0)>0){lastNonEmptyIndex=i;break}if(lastNonEmptyIndex===-1)return[...paragraphs,{type:`paragraph`,content:[{type:`text`,text:TRUNCATION_ELLIPSIS}]}];let targetContent=paragraphs[lastNonEmptyIndex].content||[],lastChild=targetContent[targetContent.length-1],updatedContent;if(lastChild?.type===`text`){if(lastChild.text.endsWith(TRUNCATION_ELLIPSIS))return paragraphs;updatedContent=[...targetContent.slice(0,-1),{...lastChild,text:`${lastChild.text}${TRUNCATION_ELLIPSIS}`}]}else updatedContent=[...targetContent,{type:`text`,text:TRUNCATION_ELLIPSIS}];return paragraphs.map((paragraph,index)=>index===lastNonEmptyIndex?{...paragraph,content:updatedContent}:paragraph)},truncateDocument=(document,threshold)=>{let paragraphBlocks=document.content.filter(isParagraphNode);if(paragraphBlocks.length===0)return document;let{collected,truncated}=collectAtomsWithinThreshold(flattenDocument(paragraphBlocks),threshold),paragraphs=reassembleParagraphs(collected,paragraphBlocks[0]),finalParagraphs=truncated?withTruncationEllipsis(paragraphs):paragraphs;return{...document,content:finalParagraphs}};export{getDocumentLength,truncateDocument};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{THREADED_ANNOTATIONS_RESIN_COMPONENTS}from"../../../v2/resin-targets.js";import{MessageEditorVariant}from"../message-editor/message-editor.types.js";import{MessageEditor}from"../message-editor/message-editor.js";import{useThreadedAnnotationsContext}from"../../../v2/threaded-annotations-context.js";import{t as AnnotationBadge}from"../../../../../chunks/annotation-badge.js";import{MessageHeader}from"../message-header/message-header.js";import messages from"./messages.js";import{t as text_message_module_default}from"../../../../../chunks/text-message.module.js";import{MessageFooter}from"./subcomponents/message-footer.js";import{MessageRenderer}from"./subcomponents/message-renderer.js";import clsx from"clsx";import{useIntl}from"react-intl";import{Fragment,jsx,jsxs}from"react/jsx-runtime";var TextMessage=({id,author,message,createdAt,updatedAt,permissions,showThreadedIndicator=!0,isResolved=!1,isFirstMessage=!1,hasReplies=!1,maxCharacterCount,onAvatarClick,onCopyLink,onDelete,onThreadDelete,onEdit,onEditError,onResolve,onUnresolve,userSelectorProps,annotationTarget,onAnnotationBadgeClick,originalContentDeleted})=>{let{canResolve,canEdit,canDelete}=permissions,intl=useIntl(),{dispatch,isReplyDisabled,isEditDisabled,isAnnotations,editingMessageId}=useThreadedAnnotationsContext(),isEditing=editingMessageId===id,canOpenEdit=!!onEdit&&!isEditDisabled&&canEdit;return jsxs(`div`,{"aria-label":intl.formatMessage(messages.annotationMessageAriaLabel),className:text_message_module_default.textMessage,"data-message-wrapper":!0,"data-message-id":id,"data-resin-component":THREADED_ANNOTATIONS_RESIN_COMPONENTS.COMMENT_CARD,children:[jsx(MessageHeader,{author,canResolve,isResolved,canDelete,canEdit:canOpenEdit,hasReplies,isFirstMessage,onAvatarClick,onCopyLink:onCopyLink?()=>onCopyLink(id):void 0,onDelete:()=>onDelete(id),onThreadDelete,onEdit:canOpenEdit?()=>dispatch({type:`EDIT`,id}):void 0,onResolve:onResolve?()=>onResolve(id):void 0,onUnresolve:onUnresolve?()=>onUnresolve(id):void 0}),jsxs(`div`,{className:text_message_module_default.contentWrapper,children:[jsx(`div`,{className:clsx(text_message_module_default.threadedIndicator,!showThreadedIndicator&&text_message_module_default.threadedIndicatorHidden)}),jsxs(`div`,{className:text_message_module_default.messageContent,children:[annotationTarget&&!isAnnotations&&jsx(`div`,{className:text_message_module_default.annotationBadgeWrapper,children:jsx(AnnotationBadge,{annotationTarget,onClick:()=>onAnnotationBadgeClick?.(id),originalContentDeleted})}),isEditing&&onEdit?jsx(`div`,{className:text_message_module_default.inlineEditSlot,children:jsx(MessageEditor,{initialContent:message,maxCharacterCount,onEditCancel:()=>dispatch({type:`CLEAR_EDIT`}),onEditSuccess:()=>dispatch({type:`CLEAR_EDIT`}),onSave:content=>onEdit(id,content),onSaveError:onEditError,userSelectorProps,variant:MessageEditorVariant.EDIT_MESSAGE})}):jsxs(Fragment,{children:[jsx(`div`,{
|
|
1
|
+
import{THREADED_ANNOTATIONS_RESIN_COMPONENTS}from"../../../v2/resin-targets.js";import{MessageEditorVariant}from"../message-editor/message-editor.types.js";import{MessageEditor}from"../message-editor/message-editor.js";import{useThreadedAnnotationsContext}from"../../../v2/threaded-annotations-context.js";import{t as AnnotationBadge}from"../../../../../chunks/annotation-badge.js";import{MessageHeader}from"../message-header/message-header.js";import messages from"./messages.js";import{t as text_message_module_default}from"../../../../../chunks/text-message.module.js";import{MessageFooter}from"./subcomponents/message-footer.js";import{MessageRenderer}from"./subcomponents/message-renderer.js";import clsx from"clsx";import{useIntl}from"react-intl";import{Fragment,jsx,jsxs}from"react/jsx-runtime";var TextMessage=({id,author,message,createdAt,updatedAt,permissions,showThreadedIndicator=!0,isResolved=!1,isFirstMessage=!1,hasReplies=!1,maxCharacterCount,onAvatarClick,onCopyLink,onDelete,onThreadDelete,onEdit,onEditError,onResolve,onUnresolve,userSelectorProps,annotationTarget,onAnnotationBadgeClick,originalContentDeleted})=>{let{canResolve,canEdit,canDelete}=permissions,intl=useIntl(),{dispatch,isReplyDisabled,isEditDisabled,isAnnotations,editingMessageId}=useThreadedAnnotationsContext(),isEditing=editingMessageId===id,canOpenEdit=!!onEdit&&!isEditDisabled&&canEdit;return jsxs(`div`,{"aria-label":intl.formatMessage(messages.annotationMessageAriaLabel),className:text_message_module_default.textMessage,"data-message-wrapper":!0,"data-message-id":id,"data-resin-component":THREADED_ANNOTATIONS_RESIN_COMPONENTS.COMMENT_CARD,children:[jsx(MessageHeader,{author,canResolve,isResolved,canDelete,canEdit:canOpenEdit,hasReplies,isFirstMessage,onAvatarClick,onCopyLink:onCopyLink?()=>onCopyLink(id):void 0,onDelete:()=>onDelete(id),onThreadDelete,onEdit:canOpenEdit?()=>dispatch({type:`EDIT`,id}):void 0,onResolve:onResolve?()=>onResolve(id):void 0,onUnresolve:onUnresolve?()=>onUnresolve(id):void 0}),jsxs(`div`,{className:text_message_module_default.contentWrapper,children:[jsx(`div`,{className:clsx(text_message_module_default.threadedIndicator,!showThreadedIndicator&&text_message_module_default.threadedIndicatorHidden)}),jsxs(`div`,{className:text_message_module_default.messageContent,children:[annotationTarget&&!isAnnotations&&jsx(`div`,{className:text_message_module_default.annotationBadgeWrapper,children:jsx(AnnotationBadge,{annotationTarget,onClick:()=>onAnnotationBadgeClick?.(id),originalContentDeleted})}),isEditing&&onEdit?jsx(`div`,{className:text_message_module_default.inlineEditSlot,children:jsx(MessageEditor,{initialContent:message,maxCharacterCount,onEditCancel:()=>dispatch({type:`CLEAR_EDIT`}),onEditSuccess:()=>dispatch({type:`CLEAR_EDIT`}),onSave:content=>onEdit(id,content),onSaveError:onEditError,userSelectorProps,variant:MessageEditorVariant.EDIT_MESSAGE})}):jsxs(Fragment,{children:[jsx(`div`,{"data-message-body":!0,children:jsx(MessageRenderer,{messageObject:message})}),jsx(MessageFooter,{createdAt,onReply:isReplyDisabled?void 0:()=>dispatch({type:`REPLY`,author}),updatedAt})]})]})]})]})};export{TextMessage};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var isParagraphNode=node=>node.type===`paragraph`;export{isParagraphNode};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{AnnotationBadgeType}from"./annotation-badge-types.js";export{AnnotationBadgeType};
|
|
1
|
+
import{AnnotationBadgeType}from"./annotation-badge-types.js";import{isParagraphNode}from"./document-node-types.js";export{AnnotationBadgeType,isParagraphNode};
|
|
@@ -25,8 +25,31 @@ export type ParagraphNode = {
|
|
|
25
25
|
content?: (MentionNode | TextNode)[];
|
|
26
26
|
attrs?: Record<string, unknown>;
|
|
27
27
|
};
|
|
28
|
+
export type ListItemNode = {
|
|
29
|
+
type: 'listItem';
|
|
30
|
+
content?: (BulletListNode | OrderedListNode | ParagraphNode)[];
|
|
31
|
+
attrs?: Record<string, unknown>;
|
|
32
|
+
};
|
|
33
|
+
export type BulletListNode = {
|
|
34
|
+
type: 'bulletList';
|
|
35
|
+
content?: ListItemNode[];
|
|
36
|
+
attrs?: Record<string, unknown>;
|
|
37
|
+
};
|
|
38
|
+
export type OrderedListNode = {
|
|
39
|
+
type: 'orderedList';
|
|
40
|
+
content?: ListItemNode[];
|
|
41
|
+
attrs?: Record<string, unknown>;
|
|
42
|
+
};
|
|
28
43
|
export type DocumentNode = {
|
|
29
44
|
type: 'doc';
|
|
30
|
-
content: ParagraphNode[];
|
|
45
|
+
content: (BulletListNode | OrderedListNode | ParagraphNode)[];
|
|
31
46
|
attrs?: Record<string, unknown>;
|
|
32
47
|
};
|
|
48
|
+
/** Formats toggleable from the rich text formatting bar (or their keyboard shortcuts). */
|
|
49
|
+
export type RichTextFormat = 'bold' | 'italic' | 'underline' | 'bulletList' | 'orderedList';
|
|
50
|
+
/**
|
|
51
|
+
* Narrows a top-level document block to a paragraph. Consumers that only
|
|
52
|
+
* support paragraph blocks (renderer, truncation — dedicated list support
|
|
53
|
+
* lands separately) use this to skip list blocks.
|
|
54
|
+
*/
|
|
55
|
+
export declare const isParagraphNode: (node: DocumentNode["content"][number]) => node is ParagraphNode;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@box/threaded-annotations",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.3.0",
|
|
4
4
|
"license": "SEE LICENSE IN LICENSE",
|
|
5
5
|
"dependencies": {
|
|
6
6
|
"@floating-ui/dom": "^1.6.0",
|
|
@@ -17,23 +17,23 @@
|
|
|
17
17
|
"uuid": "^9.0.1"
|
|
18
18
|
},
|
|
19
19
|
"peerDependencies": {
|
|
20
|
-
"@box/blueprint-web": "^16.14.
|
|
21
|
-
"@box/blueprint-web-assets": "^5.6.
|
|
22
|
-
"@box/collaboration-popover": "^2.2.
|
|
23
|
-
"@box/readable-time": "^2.2.
|
|
24
|
-
"@box/user-selector": "^2.2.
|
|
20
|
+
"@box/blueprint-web": "^16.14.2",
|
|
21
|
+
"@box/blueprint-web-assets": "^5.6.2",
|
|
22
|
+
"@box/collaboration-popover": "^2.2.2",
|
|
23
|
+
"@box/readable-time": "^2.2.2",
|
|
24
|
+
"@box/user-selector": "^2.2.2",
|
|
25
25
|
"clsx": "^1.2.1",
|
|
26
26
|
"react": "^18.0.0",
|
|
27
27
|
"react-dom": "^18.0.0",
|
|
28
28
|
"react-intl": "^6.4.2"
|
|
29
29
|
},
|
|
30
30
|
"devDependencies": {
|
|
31
|
-
"@box/blueprint-web": "^16.14.
|
|
32
|
-
"@box/blueprint-web-assets": "^5.6.
|
|
31
|
+
"@box/blueprint-web": "^16.14.2",
|
|
32
|
+
"@box/blueprint-web-assets": "^5.6.2",
|
|
33
33
|
"@box/eslint-plugin-blueprint": "2.2.0",
|
|
34
|
-
"@box/readable-time": "^2.2.
|
|
35
|
-
"@box/storybook-utils": "^1.2.
|
|
36
|
-
"@box/user-selector": "^2.2.
|
|
34
|
+
"@box/readable-time": "^2.2.2",
|
|
35
|
+
"@box/storybook-utils": "^1.2.2",
|
|
36
|
+
"@box/user-selector": "^2.2.2",
|
|
37
37
|
"react": "^18.0.0",
|
|
38
38
|
"react-dom": "^18.0.0"
|
|
39
39
|
},
|