@pega/cosmos-react-social 8.0.0-build.9.0 → 8.0.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/lib/components/Autopilot/Autopilot.d.ts.map +1 -1
- package/lib/components/Autopilot/Autopilot.js +2 -2
- package/lib/components/Autopilot/Autopilot.js.map +1 -1
- package/lib/components/Chat/Chat.d.ts +3 -3
- package/lib/components/Chat/Chat.d.ts.map +1 -1
- package/lib/components/Chat/Chat.js +1 -2
- package/lib/components/Chat/Chat.js.map +1 -1
- package/lib/components/Chat/Chat.types.d.ts +3 -1
- package/lib/components/Chat/Chat.types.d.ts.map +1 -1
- package/lib/components/Chat/Chat.types.js.map +1 -1
- package/lib/components/Chat/ChatBody.d.ts +2 -3
- package/lib/components/Chat/ChatBody.d.ts.map +1 -1
- package/lib/components/Chat/ChatBody.js +6 -8
- package/lib/components/Chat/ChatBody.js.map +1 -1
- package/lib/components/Chat/ChatComposer.d.ts +4 -4
- package/lib/components/Chat/ChatComposer.d.ts.map +1 -1
- package/lib/components/Chat/ChatComposer.js +15 -25
- package/lib/components/Chat/ChatComposer.js.map +1 -1
- package/lib/components/Chat/ChatHeader.d.ts +4 -3
- package/lib/components/Chat/ChatHeader.d.ts.map +1 -1
- package/lib/components/Chat/ChatHeader.js +3 -4
- package/lib/components/Chat/ChatHeader.js.map +1 -1
- package/lib/components/Chat/ChatSettingsPanel.styles.d.ts.map +1 -1
- package/lib/components/Chat/ChatSettingsPanel.styles.js +5 -2
- package/lib/components/Chat/ChatSettingsPanel.styles.js.map +1 -1
- package/lib/components/Chat/Message.d.ts +2 -3
- package/lib/components/Chat/Message.d.ts.map +1 -1
- package/lib/components/Chat/Message.js +6 -5
- package/lib/components/Chat/Message.js.map +1 -1
- package/lib/components/Chat/Message.styles.d.ts +2 -2
- package/lib/components/Chat/Message.styles.d.ts.map +1 -1
- package/lib/components/Chat/Message.styles.js +11 -3
- package/lib/components/Chat/Message.styles.js.map +1 -1
- package/lib/components/Chat/SuggestedReplyPicker.d.ts +3 -3
- package/lib/components/Chat/SuggestedReplyPicker.d.ts.map +1 -1
- package/lib/components/Chat/SuggestedReplyPicker.js +3 -3
- package/lib/components/Chat/SuggestedReplyPicker.js.map +1 -1
- package/lib/components/Chat/SystemMessage.d.ts +2 -3
- package/lib/components/Chat/SystemMessage.d.ts.map +1 -1
- package/lib/components/Chat/SystemMessage.js +1 -2
- package/lib/components/Chat/SystemMessage.js.map +1 -1
- package/lib/components/Chat/TypeIndicator.d.ts +2 -3
- package/lib/components/Chat/TypeIndicator.d.ts.map +1 -1
- package/lib/components/Chat/TypeIndicator.js +1 -2
- package/lib/components/Chat/TypeIndicator.js.map +1 -1
- package/lib/components/Email/ContextMenuPopover.d.ts +1 -2
- package/lib/components/Email/ContextMenuPopover.d.ts.map +1 -1
- package/lib/components/Email/ContextMenuPopover.js.map +1 -1
- package/lib/components/Email/Email.d.ts +2 -3
- package/lib/components/Email/Email.d.ts.map +1 -1
- package/lib/components/Email/Email.js +11 -4
- package/lib/components/Email/Email.js.map +1 -1
- package/lib/components/Email/Email.styles.d.ts +4 -4
- package/lib/components/Email/Email.styles.d.ts.map +1 -1
- package/lib/components/Email/Email.styles.js +6 -3
- package/lib/components/Email/Email.styles.js.map +1 -1
- package/lib/components/Email/Email.types.d.ts +16 -17
- package/lib/components/Email/Email.types.d.ts.map +1 -1
- package/lib/components/Email/Email.types.js.map +1 -1
- package/lib/components/Email/EmailCaseView.js +1 -1
- package/lib/components/Email/EmailCaseView.js.map +1 -1
- package/lib/components/Email/EmailComposer.d.ts +3 -4
- package/lib/components/Email/EmailComposer.d.ts.map +1 -1
- package/lib/components/Email/EmailComposer.js +29 -8
- package/lib/components/Email/EmailComposer.js.map +1 -1
- package/lib/components/Email/EmailConversation.d.ts +6 -7
- package/lib/components/Email/EmailConversation.d.ts.map +1 -1
- package/lib/components/Email/EmailConversation.js +2 -2
- package/lib/components/Email/EmailConversation.js.map +1 -1
- package/lib/components/Email/EmailEntity.d.ts +2 -3
- package/lib/components/Email/EmailEntity.d.ts.map +1 -1
- package/lib/components/Email/EmailEntity.js.map +1 -1
- package/lib/components/Email/EmailSelector.d.ts +6 -2
- package/lib/components/Email/EmailSelector.d.ts.map +1 -1
- package/lib/components/Email/EmailSelector.js +25 -29
- package/lib/components/Email/EmailSelector.js.map +1 -1
- package/lib/components/Email/EmailShell.d.ts +2 -3
- package/lib/components/Email/EmailShell.d.ts.map +1 -1
- package/lib/components/Email/EmailShell.js +1 -1
- package/lib/components/Email/EmailShell.js.map +1 -1
- package/lib/components/Email/EmailSummaryItem.d.ts +3 -7
- package/lib/components/Email/EmailSummaryItem.d.ts.map +1 -1
- package/lib/components/Email/EmailSummaryItem.js +26 -26
- package/lib/components/Email/EmailSummaryItem.js.map +1 -1
- package/lib/components/Email/EmailSummaryList.d.ts +2 -3
- package/lib/components/Email/EmailSummaryList.d.ts.map +1 -1
- package/lib/components/Email/EmailSummaryList.js +17 -9
- package/lib/components/Email/EmailSummaryList.js.map +1 -1
- package/lib/components/Email/EntityList.d.ts +1 -3
- package/lib/components/Email/EntityList.d.ts.map +1 -1
- package/lib/components/Email/EntityList.js.map +1 -1
- package/lib/components/Email/utils/EntityHighlighter.d.ts.map +1 -1
- package/lib/components/Email/utils/EntityHighlighter.js +3 -5
- package/lib/components/Email/utils/EntityHighlighter.js.map +1 -1
- package/lib/components/Feed/Feed.context.d.ts +4 -49
- package/lib/components/Feed/Feed.context.d.ts.map +1 -1
- package/lib/components/Feed/Feed.context.js +1 -5
- package/lib/components/Feed/Feed.context.js.map +1 -1
- package/lib/components/Feed/Feed.d.ts +1 -3
- package/lib/components/Feed/Feed.d.ts.map +1 -1
- package/lib/components/Feed/Feed.js +15 -23
- package/lib/components/Feed/Feed.js.map +1 -1
- package/lib/components/Feed/Feed.types.d.ts +190 -252
- package/lib/components/Feed/Feed.types.d.ts.map +1 -1
- package/lib/components/Feed/Feed.types.js.map +1 -1
- package/lib/components/Feed/FeedAttachments.d.ts +2 -3
- package/lib/components/Feed/FeedAttachments.d.ts.map +1 -1
- package/lib/components/Feed/FeedAttachments.js +12 -19
- package/lib/components/Feed/FeedAttachments.js.map +1 -1
- package/lib/components/Feed/FeedContent.d.ts +2 -3
- package/lib/components/Feed/FeedContent.d.ts.map +1 -1
- package/lib/components/Feed/FeedContent.js +5 -43
- package/lib/components/Feed/FeedContent.js.map +1 -1
- package/lib/components/Feed/FeedContentFooter.d.ts.map +1 -1
- package/lib/components/Feed/FeedContentFooter.js +2 -15
- package/lib/components/Feed/FeedContentFooter.js.map +1 -1
- package/lib/components/Feed/FeedContentHeader.d.ts.map +1 -1
- package/lib/components/Feed/FeedContentHeader.js +76 -44
- package/lib/components/Feed/FeedContentHeader.js.map +1 -1
- package/lib/components/Feed/FeedCustomEditRegion.d.ts +6 -0
- package/lib/components/Feed/FeedCustomEditRegion.d.ts.map +1 -0
- package/lib/components/Feed/FeedCustomEditRegion.js +20 -0
- package/lib/components/Feed/FeedCustomEditRegion.js.map +1 -0
- package/lib/components/Feed/FeedCustomInputRegion.d.ts +6 -0
- package/lib/components/Feed/FeedCustomInputRegion.d.ts.map +1 -0
- package/lib/components/Feed/FeedCustomInputRegion.js +38 -0
- package/lib/components/Feed/FeedCustomInputRegion.js.map +1 -0
- package/lib/components/Feed/FeedEditRegion.d.ts +1 -2
- package/lib/components/Feed/FeedEditRegion.d.ts.map +1 -1
- package/lib/components/Feed/FeedEditRegion.js +41 -14
- package/lib/components/Feed/FeedEditRegion.js.map +1 -1
- package/lib/components/Feed/FeedInputRegion.d.ts +0 -1
- package/lib/components/Feed/FeedInputRegion.d.ts.map +1 -1
- package/lib/components/Feed/FeedInputRegion.js +53 -40
- package/lib/components/Feed/FeedInputRegion.js.map +1 -1
- package/lib/components/Feed/FeedLikeButton.d.ts +2 -2
- package/lib/components/Feed/FeedLikeButton.d.ts.map +1 -1
- package/lib/components/Feed/FeedLikeButton.js +5 -5
- package/lib/components/Feed/FeedLikeButton.js.map +1 -1
- package/lib/components/Feed/FeedModalList.d.ts.map +1 -1
- package/lib/components/Feed/FeedModalList.js +6 -7
- package/lib/components/Feed/FeedModalList.js.map +1 -1
- package/lib/components/Feed/FeedNewPost.d.ts +1 -2
- package/lib/components/Feed/FeedNewPost.d.ts.map +1 -1
- package/lib/components/Feed/FeedNewPost.js +44 -14
- package/lib/components/Feed/FeedNewPost.js.map +1 -1
- package/lib/components/Feed/FeedPost.d.ts +2 -3
- package/lib/components/Feed/FeedPost.d.ts.map +1 -1
- package/lib/components/Feed/FeedPost.js +50 -28
- package/lib/components/Feed/FeedPost.js.map +1 -1
- package/lib/components/Feed/FeedReply.d.ts +1 -2
- package/lib/components/Feed/FeedReply.d.ts.map +1 -1
- package/lib/components/Feed/FeedReply.js +24 -5
- package/lib/components/Feed/FeedReply.js.map +1 -1
- package/lib/components/Feed/FeedReplyInput.d.ts +1 -2
- package/lib/components/Feed/FeedReplyInput.d.ts.map +1 -1
- package/lib/components/Feed/FeedReplyInput.js +4 -5
- package/lib/components/Feed/FeedReplyInput.js.map +1 -1
- package/lib/components/Feed/FeedRichText.d.ts +3 -3
- package/lib/components/Feed/FeedRichText.d.ts.map +1 -1
- package/lib/components/Feed/FeedRichText.js +16 -8
- package/lib/components/Feed/FeedRichText.js.map +1 -1
- package/lib/components/Feed/FeedRichTextViewer.d.ts +10 -0
- package/lib/components/Feed/FeedRichTextViewer.d.ts.map +1 -0
- package/lib/components/Feed/FeedRichTextViewer.js +38 -0
- package/lib/components/Feed/FeedRichTextViewer.js.map +1 -0
- package/lib/components/Feed/FeedVisibilityControls.d.ts +4 -0
- package/lib/components/Feed/FeedVisibilityControls.d.ts.map +1 -0
- package/lib/components/Feed/FeedVisibilityControls.js +62 -0
- package/lib/components/Feed/FeedVisibilityControls.js.map +1 -0
- package/lib/components/Feed/MarkdownSyntax.d.ts +3 -0
- package/lib/components/Feed/MarkdownSyntax.d.ts.map +1 -0
- package/lib/components/Feed/MarkdownSyntax.js +66 -0
- package/lib/components/Feed/MarkdownSyntax.js.map +1 -0
- package/lib/components/Feed/index.d.ts +3 -1
- package/lib/components/Feed/index.d.ts.map +1 -1
- package/lib/components/Feed/index.js +2 -0
- package/lib/components/Feed/index.js.map +1 -1
- package/lib/components/HashtagButton/HashtagButton.js +2 -2
- package/lib/components/HashtagButton/HashtagButton.js.map +1 -1
- package/lib/components/MentionButton/MentionButton.d.ts.map +1 -1
- package/lib/components/MentionButton/MentionButton.js +2 -2
- package/lib/components/MentionButton/MentionButton.js.map +1 -1
- package/lib/components/OpenGraphPreview/OpenGraphPreview.d.ts +27 -0
- package/lib/components/OpenGraphPreview/OpenGraphPreview.d.ts.map +1 -0
- package/lib/components/OpenGraphPreview/OpenGraphPreview.js +39 -0
- package/lib/components/OpenGraphPreview/OpenGraphPreview.js.map +1 -0
- package/lib/components/OpenGraphPreview/OpenGraphPreview.styles.d.ts +13 -0
- package/lib/components/OpenGraphPreview/OpenGraphPreview.styles.d.ts.map +1 -0
- package/lib/components/OpenGraphPreview/OpenGraphPreview.styles.js +79 -0
- package/lib/components/OpenGraphPreview/OpenGraphPreview.styles.js.map +1 -0
- package/lib/components/OpenGraphPreview/OpenGraphPreview.test-ids.d.ts +3 -0
- package/lib/components/OpenGraphPreview/OpenGraphPreview.test-ids.d.ts.map +1 -0
- package/lib/components/OpenGraphPreview/OpenGraphPreview.test-ids.js +4 -0
- package/lib/components/OpenGraphPreview/OpenGraphPreview.test-ids.js.map +1 -0
- package/lib/components/OpenGraphPreview/index.d.ts +3 -0
- package/lib/components/OpenGraphPreview/index.d.ts.map +1 -0
- package/lib/components/OpenGraphPreview/index.js +2 -0
- package/lib/components/OpenGraphPreview/index.js.map +1 -0
- package/lib/index.d.ts +2 -0
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +2 -0
- package/lib/index.js.map +1 -1
- package/package.json +10 -10
- package/lib/components/Feed/FeedAnnouncer.d.ts +0 -6
- package/lib/components/Feed/FeedAnnouncer.d.ts.map +0 -1
- package/lib/components/Feed/FeedAnnouncer.js +0 -11
- package/lib/components/Feed/FeedAnnouncer.js.map +0 -1
- package/lib/components/Feed/FeedNewPostTypeMenu.d.ts +0 -5
- package/lib/components/Feed/FeedNewPostTypeMenu.d.ts.map +0 -1
- package/lib/components/Feed/FeedNewPostTypeMenu.js +0 -375
- package/lib/components/Feed/FeedNewPostTypeMenu.js.map +0 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { useContext, useState } from 'react';
|
|
2
|
+
import { useContext, useRef, useState } from 'react';
|
|
3
3
|
import styled, { css } from 'styled-components';
|
|
4
4
|
import { Flex, registerIcon, defaultThemeProp } from '@pega/cosmos-react-core';
|
|
5
5
|
import * as chatIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/chat.icon';
|
|
@@ -23,17 +23,36 @@ const StyledReplyContent = styled.div(({ theme }) => {
|
|
|
23
23
|
});
|
|
24
24
|
StyledReplyContent.defaultProps = defaultThemeProp;
|
|
25
25
|
const FeedReply = (props) => {
|
|
26
|
-
const { id, avatarSrc, postTimestamp, content, attachments, username, fullname, liked, likes, likeCount, interactionsEnabled, icon, userStatus, maxContentHeight = Infinity, menuItems,
|
|
26
|
+
const { id, avatarSrc, postTimestamp, content, attachments, username, fullname, liked, likes, likeCount, interactionsEnabled, icon, userStatus, maxContentHeight = Infinity, menuItems, onEdit, editConfig, edited = false, editTimestamp, onMouseEnter, onMouseLeave, onCommentClick, onLikeClick, onLikeCountInteraction, onLoadMoreLikes, likesLoading, onUserClick, ...restProps } = props;
|
|
27
27
|
const variant = 'reply';
|
|
28
|
-
const { autopilotInfo } = useContext(FeedContext);
|
|
29
|
-
const [
|
|
28
|
+
const { autopilotInfo, onLinkRender } = useContext(FeedContext);
|
|
29
|
+
const [openGraphData, setOpenGraphData] = useState(undefined);
|
|
30
30
|
const [emptyEditText, setEmptyEditText] = useState(false);
|
|
31
|
+
const controllerRef = useRef(new AbortController());
|
|
31
32
|
const adjustedUsername = username === autopilotInfo.label ? autopilotInfo.id : username;
|
|
32
33
|
return (_jsxs(StyledFeedReplyContainer, { onMouseEnter: () => {
|
|
33
34
|
onMouseEnter?.({ id });
|
|
34
35
|
}, onMouseLeave: () => {
|
|
35
36
|
onMouseLeave?.({ id });
|
|
36
|
-
}, ...restProps, children: [_jsx(FeedContentHeader, { variant: variant, id: id, fullname: fullname, username: adjustedUsername, postTimestamp: postTimestamp,
|
|
37
|
+
}, ...restProps, children: [_jsx(FeedContentHeader, { variant: variant, id: id, fullname: fullname, username: adjustedUsername, postTimestamp: postTimestamp, avatarSrc: avatarSrc, icon: icon, userStatus: userStatus, menuItems: menuItems, edited: edited, editTimestamp: editTimestamp, onEdit: onEdit, onUserClick: onUserClick }), _jsxs(StyledReplyContent, { children: [_jsxs(Flex, { container: { direction: 'column', pad: [0, editConfig ? 0 : 2, 0, 0] }, item: { grow: 1 }, children: [editConfig && typeof content === 'string' ? (_jsx(FeedEditRegion, { variant: variant, id: id, content: content, onEditSubmit: e => {
|
|
38
|
+
controllerRef.current.abort();
|
|
39
|
+
setOpenGraphData(undefined);
|
|
40
|
+
return editConfig.onEditSubmit(e);
|
|
41
|
+
}, onEditCancel: editConfig.onEditCancel, progress: editConfig.progress, banners: editConfig.banners, emptyEditText: emptyEditText, setEmptyEditText: setEmptyEditText })) : (_jsx(FeedContent, { maxContentHeight: maxContentHeight, onLinkRender: onLinkRender
|
|
42
|
+
? async (href) => {
|
|
43
|
+
controllerRef.current.abort();
|
|
44
|
+
controllerRef.current = new AbortController();
|
|
45
|
+
try {
|
|
46
|
+
const newOpenGraphData = await onLinkRender(href, controllerRef.current.signal);
|
|
47
|
+
if (!controllerRef.current.signal.aborted) {
|
|
48
|
+
setOpenGraphData(newOpenGraphData);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
catch {
|
|
52
|
+
// If signal was aborted don't set state.
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
: undefined, children: content })), _jsx(FeedAttachments, { variant: variant, openGraphData: openGraphData, attachments: attachments })] }), _jsx(FeedContentFooter, { variant: variant, id: id, username: adjustedUsername, liked: liked, likes: likes, likeCount: likeCount, interactionsEnabled: interactionsEnabled, likesLoading: likesLoading, onCommentClick: onCommentClick, onLikeClick: onLikeClick, onLikeCountInteraction: onLikeCountInteraction, onLoadMoreLikes: onLoadMoreLikes })] })] }));
|
|
37
56
|
};
|
|
38
57
|
export default FeedReply;
|
|
39
58
|
//# sourceMappingURL=FeedReply.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FeedReply.js","sourceRoot":"","sources":["../../../src/components/Feed/FeedReply.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"FeedReply.js","sourceRoot":"","sources":["../../../src/components/Feed/FeedReply.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useContext, useRef, useState } from 'react';\nimport type { FC } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport { Flex, registerIcon, defaultThemeProp } from '@pega/cosmos-react-core';\nimport * as chatIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/chat.icon';\nimport * as thumbsUpSolidIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/thumbs-up-solid.icon';\nimport * as thumbsUpIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/thumbs-up.icon';\n\nimport type { OpenGraphData } from '../OpenGraphPreview/OpenGraphPreview';\n\nimport type { FeedReplyProps } from './Feed.types';\nimport FeedAttachments from './FeedAttachments';\nimport FeedContent from './FeedContent';\nimport FeedContentHeader from './FeedContentHeader';\nimport FeedContentFooter from './FeedContentFooter';\nimport FeedEditRegion from './FeedEditRegion';\nimport { FeedContext } from './Feed.context';\n\nregisterIcon(chatIcon, thumbsUpSolidIcon, thumbsUpIcon);\n\nexport const StyledFeedReplyContainer = styled.div``;\n\nStyledFeedReplyContainer.defaultProps = defaultThemeProp;\n\nconst StyledReplyContent = styled.div(({ theme }) => {\n return css`\n margin-inline-start: calc(2 * ${theme.base.spacing});\n border-inline-start: solid 0.0625rem ${theme.base.palette['border-line']};\n padding-inline-start: calc(3 * ${theme.base.spacing});\n `;\n});\n\nStyledReplyContent.defaultProps = defaultThemeProp;\n\nconst FeedReply: FC<FeedReplyProps> = (props: FeedReplyProps) => {\n const {\n id,\n avatarSrc,\n postTimestamp,\n content,\n attachments,\n username,\n fullname,\n liked,\n likes,\n likeCount,\n interactionsEnabled,\n icon,\n userStatus,\n maxContentHeight = Infinity,\n menuItems,\n onEdit,\n editConfig,\n edited = false,\n editTimestamp,\n onMouseEnter,\n onMouseLeave,\n onCommentClick,\n onLikeClick,\n onLikeCountInteraction,\n onLoadMoreLikes,\n likesLoading,\n onUserClick,\n ...restProps\n } = props;\n const variant = 'reply';\n\n const { autopilotInfo, onLinkRender } = useContext(FeedContext);\n const [openGraphData, setOpenGraphData] = useState<OpenGraphData | undefined>(undefined);\n const [emptyEditText, setEmptyEditText] = useState(false);\n const controllerRef = useRef(new AbortController());\n\n const adjustedUsername = username === autopilotInfo.label ? autopilotInfo.id : username;\n\n return (\n <StyledFeedReplyContainer\n onMouseEnter={() => {\n onMouseEnter?.({ id });\n }}\n onMouseLeave={() => {\n onMouseLeave?.({ id });\n }}\n {...restProps}\n >\n <FeedContentHeader\n variant={variant}\n id={id}\n fullname={fullname}\n username={adjustedUsername}\n postTimestamp={postTimestamp}\n avatarSrc={avatarSrc}\n icon={icon}\n userStatus={userStatus}\n menuItems={menuItems}\n edited={edited}\n editTimestamp={editTimestamp}\n onEdit={onEdit}\n onUserClick={onUserClick}\n />\n <StyledReplyContent>\n <Flex\n container={{ direction: 'column', pad: [0, editConfig ? 0 : 2, 0, 0] }}\n item={{ grow: 1 }}\n >\n {editConfig && typeof content === 'string' ? (\n <FeedEditRegion\n variant={variant}\n id={id}\n content={content}\n onEditSubmit={e => {\n controllerRef.current.abort();\n setOpenGraphData(undefined);\n return editConfig.onEditSubmit(e);\n }}\n onEditCancel={editConfig.onEditCancel}\n progress={editConfig.progress}\n banners={editConfig.banners}\n emptyEditText={emptyEditText}\n setEmptyEditText={setEmptyEditText}\n />\n ) : (\n <FeedContent\n maxContentHeight={maxContentHeight}\n onLinkRender={\n onLinkRender\n ? async href => {\n controllerRef.current.abort();\n\n controllerRef.current = new AbortController();\n\n try {\n const newOpenGraphData = await onLinkRender(\n href,\n controllerRef.current.signal\n );\n if (!controllerRef.current.signal.aborted) {\n setOpenGraphData(newOpenGraphData);\n }\n } catch {\n // If signal was aborted don't set state.\n }\n }\n : undefined\n }\n >\n {content}\n </FeedContent>\n )}\n <FeedAttachments\n variant={variant}\n openGraphData={openGraphData}\n attachments={attachments}\n />\n </Flex>\n\n <FeedContentFooter\n variant={variant}\n id={id}\n username={adjustedUsername}\n liked={liked}\n likes={likes}\n likeCount={likeCount}\n interactionsEnabled={interactionsEnabled}\n likesLoading={likesLoading}\n onCommentClick={onCommentClick}\n onLikeClick={onLikeClick}\n onLikeCountInteraction={onLikeCountInteraction}\n onLoadMoreLikes={onLoadMoreLikes}\n />\n </StyledReplyContent>\n </StyledFeedReplyContainer>\n );\n};\n\nexport default FeedReply;\n"]}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import type { FC } from 'react';
|
|
2
|
-
import type { ForwardProps } from '@pega/cosmos-react-core';
|
|
3
2
|
import type { FeedReplyInputProps } from './Feed.types';
|
|
4
3
|
export declare const StyledReplyInputContainer: import("styled-components").StyledComponent<"div", import("styled-components").DefaultTheme, {}, never>;
|
|
5
|
-
declare const FeedReplyInput: FC<
|
|
4
|
+
declare const FeedReplyInput: FC<FeedReplyInputProps>;
|
|
6
5
|
export default FeedReplyInput;
|
|
7
6
|
//# sourceMappingURL=FeedReplyInput.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FeedReplyInput.d.ts","sourceRoot":"","sources":["../../../src/components/Feed/FeedReplyInput.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"FeedReplyInput.d.ts","sourceRoot":"","sources":["../../../src/components/Feed/FeedReplyInput.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAQhC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAKxD,eAAO,MAAM,yBAAyB,yGAAe,CAAC;AAItD,QAAA,MAAM,cAAc,EAAE,EAAE,CAAC,mBAAmB,CA+B3C,CAAC;AAEF,eAAe,cAAc,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import { useRef, useEffect } from 'react';
|
|
3
3
|
import styled from 'styled-components';
|
|
4
|
-
import { registerIcon, defaultThemeProp
|
|
4
|
+
import { registerIcon, defaultThemeProp } from '@pega/cosmos-react-core';
|
|
5
5
|
import * as sendIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/send.icon';
|
|
6
6
|
import * as paperClipIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/paper-clip.icon';
|
|
7
7
|
import FeedInputRegion from './FeedInputRegion';
|
|
@@ -9,13 +9,12 @@ registerIcon(sendIcon, paperClipIcon);
|
|
|
9
9
|
export const StyledReplyInputContainer = styled.div ``;
|
|
10
10
|
StyledReplyInputContainer.defaultProps = defaultThemeProp;
|
|
11
11
|
const FeedReplyInput = (props) => {
|
|
12
|
-
const { id, attachments, onFilesAdded, onSubmit, onSetInputRef, ...restProps } = props;
|
|
13
|
-
const rteRef = useRef();
|
|
14
|
-
const [newReplyEl, setNewReplyEl] = useElement();
|
|
12
|
+
const { id, banners, progress, attachments, onFilesAdded, onSubmit, onSetInputRef, ...restProps } = props;
|
|
13
|
+
const rteRef = useRef(null);
|
|
15
14
|
useEffect(() => {
|
|
16
15
|
onSetInputRef?.({ ref: rteRef });
|
|
17
16
|
}, [rteRef]);
|
|
18
|
-
return (_jsx(StyledReplyInputContainer, {
|
|
17
|
+
return (_jsx(StyledReplyInputContainer, { ...restProps, children: _jsx(FeedInputRegion, { variant: 'reply', id: id, banners: banners, progress: progress, attachments: attachments, onFilesAdded: onFilesAdded, onSubmit: onSubmit, rteRef: rteRef }) }));
|
|
19
18
|
};
|
|
20
19
|
export default FeedReplyInput;
|
|
21
20
|
//# sourceMappingURL=FeedReplyInput.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FeedReplyInput.js","sourceRoot":"","sources":["../../../src/components/Feed/FeedReplyInput.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAE1C,OAAO,MAAM,MAAM,mBAAmB,CAAC;AAEvC,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,
|
|
1
|
+
{"version":3,"file":"FeedReplyInput.js","sourceRoot":"","sources":["../../../src/components/Feed/FeedReplyInput.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAE1C,OAAO,MAAM,MAAM,mBAAmB,CAAC;AAEvC,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAEzE,OAAO,KAAK,QAAQ,MAAM,6DAA6D,CAAC;AACxF,OAAO,KAAK,aAAa,MAAM,mEAAmE,CAAC;AAGnG,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAEhD,YAAY,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;AAEtC,MAAM,CAAC,MAAM,yBAAyB,GAAG,MAAM,CAAC,GAAG,CAAA,EAAE,CAAC;AAEtD,yBAAyB,CAAC,YAAY,GAAG,gBAAgB,CAAC;AAE1D,MAAM,cAAc,GAA4B,CAAC,KAA0B,EAAE,EAAE;IAC7E,MAAM,EACJ,EAAE,EACF,OAAO,EACP,QAAQ,EACR,WAAW,EACX,YAAY,EACZ,QAAQ,EACR,aAAa,EACb,GAAG,SAAS,EACb,GAAG,KAAK,CAAC;IACV,MAAM,MAAM,GAAG,MAAM,CAAsB,IAAI,CAAC,CAAC;IAEjD,SAAS,CAAC,GAAG,EAAE;QACb,aAAa,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC;IACnC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAEb,OAAO,CACL,KAAC,yBAAyB,OAAK,SAAS,YACtC,KAAC,eAAe,IACd,OAAO,EAAC,OAAO,EACf,EAAE,EAAE,EAAE,EACN,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,QAAQ,EAClB,WAAW,EAAE,WAAW,EACxB,YAAY,EAAE,YAAY,EAC1B,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,MAAM,GACd,GACwB,CAC7B,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,cAAc,CAAC","sourcesContent":["import { useRef, useEffect } from 'react';\nimport type { FC } from 'react';\nimport styled from 'styled-components';\n\nimport { registerIcon, defaultThemeProp } from '@pega/cosmos-react-core';\nimport type { RichTextEditorState } from '@pega/cosmos-react-rte';\nimport * as sendIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/send.icon';\nimport * as paperClipIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/paper-clip.icon';\n\nimport type { FeedReplyInputProps } from './Feed.types';\nimport FeedInputRegion from './FeedInputRegion';\n\nregisterIcon(sendIcon, paperClipIcon);\n\nexport const StyledReplyInputContainer = styled.div``;\n\nStyledReplyInputContainer.defaultProps = defaultThemeProp;\n\nconst FeedReplyInput: FC<FeedReplyInputProps> = (props: FeedReplyInputProps) => {\n const {\n id,\n banners,\n progress,\n attachments,\n onFilesAdded,\n onSubmit,\n onSetInputRef,\n ...restProps\n } = props;\n const rteRef = useRef<RichTextEditorState>(null);\n\n useEffect(() => {\n onSetInputRef?.({ ref: rteRef });\n }, [rteRef]);\n\n return (\n <StyledReplyInputContainer {...restProps}>\n <FeedInputRegion\n variant='reply'\n id={id}\n banners={banners}\n progress={progress}\n attachments={attachments}\n onFilesAdded={onFilesAdded}\n onSubmit={onSubmit}\n rteRef={rteRef}\n />\n </StyledReplyInputContainer>\n );\n};\n\nexport default FeedReplyInput;\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import type { ForwardProps } from '@pega/cosmos-react-core';
|
|
1
|
+
import type { RichTextEditorState } from '@pega/cosmos-react-rte';
|
|
3
2
|
import type { FeedRichTextProps } from './Feed.types';
|
|
4
|
-
declare const
|
|
3
|
+
export declare const minInputHeight = "4rem";
|
|
4
|
+
declare const FeedRichText: import("react").ForwardRefExoticComponent<FeedRichTextProps & import("react").RefAttributes<RichTextEditorState>>;
|
|
5
5
|
export default FeedRichText;
|
|
6
6
|
//# sourceMappingURL=FeedRichText.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FeedRichText.d.ts","sourceRoot":"","sources":["../../../src/components/Feed/FeedRichText.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"FeedRichText.d.ts","sourceRoot":"","sources":["../../../src/components/Feed/FeedRichText.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAOlE,OAAO,KAAK,EAAE,iBAAiB,EAAc,MAAM,cAAc,CAAC;AAGlE,eAAO,MAAM,cAAc,SAAS,CAAC;AAErC,QAAA,MAAM,YAAY,mHA6LjB,CAAC;AAEF,eAAe,YAAY,CAAC"}
|
|
@@ -1,14 +1,16 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import { useContext, forwardRef, useState, useRef } from 'react';
|
|
3
|
-
import {
|
|
3
|
+
import { Icon, useI18n } from '@pega/cosmos-react-core';
|
|
4
4
|
import { getXMLAttributes, RichTextEditor } from '@pega/cosmos-react-rte';
|
|
5
5
|
import { MentionButtonConfig } from '../MentionButton';
|
|
6
6
|
import { HashtagButtonConfig } from '../HashtagButton';
|
|
7
7
|
import { AutopilotConfig } from '../Autopilot';
|
|
8
8
|
import { FeedContext } from './Feed.context';
|
|
9
|
+
import MarkdownSyntax from './MarkdownSyntax';
|
|
10
|
+
export const minInputHeight = '4rem';
|
|
9
11
|
const FeedRichText = forwardRef(function FeedRichText(props, ref) {
|
|
10
|
-
const { height = { min:
|
|
11
|
-
const { autopilotInfo: { id: autopilotId, label: autopilotLabel }, searchTypes = [], onSearch, searchResults = [], showSearchResults } = useContext(FeedContext);
|
|
12
|
+
const { height = { min: minInputHeight }, onKeyDown, ...restProps } = props;
|
|
13
|
+
const { autopilotInfo: { id: autopilotId, label: autopilotLabel }, searchTypes = [], onSearch, searchResults = [], showSearchResults, setShowSearchResults } = useContext(FeedContext);
|
|
12
14
|
const [triggerType, setTriggerType] = useState('mention');
|
|
13
15
|
const [showMentionType, setShowMentionType] = useState(false);
|
|
14
16
|
const searchType = useRef('');
|
|
@@ -42,11 +44,11 @@ const FeedRichText = forwardRef(function FeedRichText(props, ref) {
|
|
|
42
44
|
onSearch?.({ type: 'mention', search: '', mentionType: id });
|
|
43
45
|
}
|
|
44
46
|
},
|
|
45
|
-
items: searchTypes.map(type => {
|
|
47
|
+
items: searchTypes.map((type) => {
|
|
46
48
|
return {
|
|
47
|
-
id: type,
|
|
48
|
-
primary: type === autopilotId ? autopilotLabel :
|
|
49
|
-
visual: _jsx(Icon, { name: type === autopilotId ? 'polaris' : type })
|
|
49
|
+
id: type.id,
|
|
50
|
+
primary: type.id === autopilotId ? autopilotLabel : type.label,
|
|
51
|
+
visual: _jsx(Icon, { name: type.id === autopilotId ? 'polaris' : type.id })
|
|
50
52
|
};
|
|
51
53
|
})
|
|
52
54
|
};
|
|
@@ -96,7 +98,13 @@ const FeedRichText = forwardRef(function FeedRichText(props, ref) {
|
|
|
96
98
|
default:
|
|
97
99
|
}
|
|
98
100
|
};
|
|
99
|
-
return (_jsx(RichTextEditor, {
|
|
101
|
+
return (_jsx(RichTextEditor, { additionalInfo: {
|
|
102
|
+
heading: t('markdown_syntax'),
|
|
103
|
+
content: _jsx(MarkdownSyntax, {})
|
|
104
|
+
}, ...restProps, onKeyDown: (e) => {
|
|
105
|
+
setShowSearchResults?.(true);
|
|
106
|
+
onKeyDown?.(e);
|
|
107
|
+
}, markdownOnly: true, ref: ref, height: height, searchTriggers: [
|
|
100
108
|
{ trigger: '@', regex: String.raw `(?:\S+(?:[^\n\S][^@#\s]\S*)*[^\n\S]?|)` },
|
|
101
109
|
{ trigger: '#', regex: String.raw `[^\s,]*` }
|
|
102
110
|
], getSearchItemReplacement: (id) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FeedRichText.js","sourceRoot":"","sources":["../../../src/components/Feed/FeedRichText.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useContext, forwardRef, useState, useRef } from 'react';\nimport type { FC, Ref } from 'react';\n\nimport { cap, Icon, useI18n } from '@pega/cosmos-react-core';\nimport type { ForwardProps } from '@pega/cosmos-react-core';\nimport { getXMLAttributes, RichTextEditor } from '@pega/cosmos-react-rte';\nimport type { RichTextEditorState } from '@pega/cosmos-react-rte';\n\nimport { MentionButtonConfig } from '../MentionButton';\nimport { HashtagButtonConfig } from '../HashtagButton';\nimport { AutopilotConfig } from '../Autopilot';\n\nimport { FeedContext } from './Feed.context';\nimport type { FeedRichTextProps } from './Feed.types';\n\nconst FeedRichText: FC<FeedRichTextProps & ForwardProps> = forwardRef(function FeedRichText(\n props: FeedRichTextProps,\n ref: Ref<RichTextEditorState>\n) {\n const { height = { min: 'auto' }, ...restProps } = props;\n const {\n autopilotInfo: { id: autopilotId, label: autopilotLabel },\n searchTypes = [],\n onSearch,\n searchResults = [],\n showSearchResults\n } = useContext(FeedContext);\n const [triggerType, setTriggerType] = useState<'mention' | 'tag'>('mention');\n const [showMentionType, setShowMentionType] = useState(false);\n const searchType = useRef('');\n const t = useI18n();\n\n const onDecoSearch = (event: { search: string; trigger: string }) => {\n if (!onSearch) {\n return;\n }\n\n const trigger = event.trigger === '@' ? 'mention' : 'tag';\n setTriggerType(trigger);\n\n if (trigger === 'mention' && event.search === '') {\n setShowMentionType(true);\n } else {\n setShowMentionType(false);\n onSearch({\n type: trigger,\n search: event.search,\n mentionType: searchType.current\n });\n }\n };\n\n const typesMenu = {\n onItemActive: (id: string) => {\n searchType.current = id;\n },\n onItemClick: (id: string) => {\n searchType.current = id;\n setShowMentionType(false);\n\n if (id !== autopilotId) {\n onSearch?.({ type: 'mention', search: '', mentionType: id });\n }\n },\n items: searchTypes.map(type => {\n return {\n id: type,\n primary: type === autopilotId ? autopilotLabel : cap(type),\n visual: <Icon name={type === autopilotId ? 'polaris' : type} />\n };\n })\n };\n\n const searchMenu =\n searchResults.length && showSearchResults\n ? {\n header: triggerType === 'mention' ? t('mention_type', [searchType.current]) : '',\n items: searchResults.map(res => {\n return { ...res, href: undefined };\n })\n }\n : undefined;\n\n const getSearchAttributes = (xmlElement: string, searchResult: string) => {\n switch (xmlElement) {\n case 'pega-mention': {\n const attributes = getXMLAttributes(searchResult);\n\n if (!attributes) return;\n return {\n markdown: searchResult,\n component: MentionButtonConfig.component,\n props: { ...attributes, tabIndex: -1 },\n text: attributes.text\n };\n }\n case 'pega-tag': {\n const attributes = getXMLAttributes(searchResult);\n\n if (!attributes) return;\n return {\n markdown: searchResult,\n component: HashtagButtonConfig.component,\n props: { ...attributes, tabIndex: -1 },\n text: attributes.tag\n };\n }\n case 'pega-autopilot': {\n const attributes = getXMLAttributes(searchResult);\n\n if (!attributes) return;\n return {\n markdown: searchResult,\n component: AutopilotConfig.component,\n props: { ...attributes, tabIndex: -1 },\n text: autopilotLabel\n };\n }\n default:\n }\n };\n\n return (\n <RichTextEditor\n {...restProps}\n markdownOnly\n ref={ref}\n height={height}\n searchTriggers={[\n { trigger: '@', regex: String.raw`(?:\\S+(?:[^\\n\\S][^@#\\s]\\S*)*[^\\n\\S]?|)` },\n { trigger: '#', regex: String.raw`[^\\s,]*` }\n ]}\n getSearchItemReplacement={(id: string) => {\n if (id === autopilotId) {\n return {\n markdown: AutopilotConfig.inject(),\n component: AutopilotConfig.component,\n props: { tabIndex: -1 },\n text: autopilotLabel\n };\n }\n\n const item = searchResults?.find(({ id: itemId }) => itemId === id);\n\n if (!item) return undefined;\n\n return {\n markdown:\n triggerType === 'mention'\n ? MentionButtonConfig.inject({\n id: item.id,\n type: searchType.current,\n text: item.primary,\n href: item.href\n })\n : HashtagButtonConfig.inject({ tag: item.id }),\n component:\n triggerType === 'mention'\n ? MentionButtonConfig.component\n : HashtagButtonConfig.component,\n props:\n triggerType === 'mention'\n ? {\n id: item.id,\n text: item.primary,\n type: searchType.current,\n tabIndex: -1\n }\n : { tag: item.primary, tabIndex: -1 },\n text: item.primary\n };\n }}\n searchRenderers={[\n {\n type: MentionButtonConfig.type,\n xmlElement: MentionButtonConfig.xmlElement,\n regexPattern: MentionButtonConfig.regexPattern,\n getSearchAttributes\n },\n {\n type: HashtagButtonConfig.type,\n xmlElement: HashtagButtonConfig.xmlElement,\n regexPattern: HashtagButtonConfig.regexPattern,\n getSearchAttributes\n },\n {\n type: AutopilotConfig.type,\n xmlElement: AutopilotConfig.xmlElement,\n regexPattern: AutopilotConfig.regexPattern,\n getSearchAttributes\n }\n ]}\n onSearch={onSearch ? onDecoSearch : undefined}\n menu={showMentionType ? typesMenu : searchMenu}\n />\n );\n});\n\nexport default FeedRichText;\n"]}
|
|
1
|
+
{"version":3,"file":"FeedRichText.js","sourceRoot":"","sources":["../../../src/components/Feed/FeedRichText.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useContext, forwardRef, useState, useRef } from 'react';\nimport type { KeyboardEvent, PropsWithoutRef } from 'react';\n\nimport { Icon, useI18n } from '@pega/cosmos-react-core';\nimport { getXMLAttributes, RichTextEditor } from '@pega/cosmos-react-rte';\nimport type { RichTextEditorState } from '@pega/cosmos-react-rte';\n\nimport { MentionButtonConfig } from '../MentionButton';\nimport { HashtagButtonConfig } from '../HashtagButton';\nimport { AutopilotConfig } from '../Autopilot';\n\nimport { FeedContext } from './Feed.context';\nimport type { FeedRichTextProps, SearchType } from './Feed.types';\nimport MarkdownSyntax from './MarkdownSyntax';\n\nexport const minInputHeight = '4rem';\n\nconst FeedRichText = forwardRef<RichTextEditorState, PropsWithoutRef<FeedRichTextProps>>(\n function FeedRichText(props, ref) {\n const { height = { min: minInputHeight }, onKeyDown, ...restProps } = props;\n const {\n autopilotInfo: { id: autopilotId, label: autopilotLabel },\n searchTypes = [],\n onSearch,\n searchResults = [],\n showSearchResults,\n setShowSearchResults\n } = useContext(FeedContext);\n const [triggerType, setTriggerType] = useState<'mention' | 'tag'>('mention');\n const [showMentionType, setShowMentionType] = useState(false);\n const searchType = useRef('');\n const t = useI18n();\n\n const onDecoSearch = (event: { search: string; trigger: string }) => {\n if (!onSearch) {\n return;\n }\n\n const trigger = event.trigger === '@' ? 'mention' : 'tag';\n setTriggerType(trigger);\n\n if (trigger === 'mention' && event.search === '') {\n setShowMentionType(true);\n } else {\n setShowMentionType(false);\n onSearch({\n type: trigger,\n search: event.search,\n mentionType: searchType.current\n });\n }\n };\n\n const typesMenu = {\n onItemActive: (id: string) => {\n searchType.current = id;\n },\n onItemClick: (id: string) => {\n searchType.current = id;\n setShowMentionType(false);\n\n if (id !== autopilotId) {\n onSearch?.({ type: 'mention', search: '', mentionType: id });\n }\n },\n items: searchTypes.map((type: SearchType) => {\n return {\n id: type.id,\n primary: type.id === autopilotId ? autopilotLabel : type.label,\n visual: <Icon name={type.id === autopilotId ? 'polaris' : type.id} />\n };\n })\n };\n\n const searchMenu =\n searchResults.length && showSearchResults\n ? {\n header: triggerType === 'mention' ? t('mention_type', [searchType.current]) : '',\n items: searchResults.map(res => {\n return { ...res, href: undefined };\n })\n }\n : undefined;\n\n const getSearchAttributes = (xmlElement: string, searchResult: string) => {\n switch (xmlElement) {\n case 'pega-mention': {\n const attributes = getXMLAttributes(searchResult);\n\n if (!attributes) return;\n return {\n markdown: searchResult,\n component: MentionButtonConfig.component,\n props: { ...attributes, tabIndex: -1 },\n text: attributes.text\n };\n }\n case 'pega-tag': {\n const attributes = getXMLAttributes(searchResult);\n\n if (!attributes) return;\n return {\n markdown: searchResult,\n component: HashtagButtonConfig.component,\n props: { ...attributes, tabIndex: -1 },\n text: attributes.tag\n };\n }\n case 'pega-autopilot': {\n const attributes = getXMLAttributes(searchResult);\n\n if (!attributes) return;\n return {\n markdown: searchResult,\n component: AutopilotConfig.component,\n props: { ...attributes, tabIndex: -1 },\n text: autopilotLabel\n };\n }\n default:\n }\n };\n\n return (\n <RichTextEditor\n additionalInfo={{\n heading: t('markdown_syntax'),\n content: <MarkdownSyntax />\n }}\n {...restProps}\n onKeyDown={(e: KeyboardEvent) => {\n setShowSearchResults?.(true);\n onKeyDown?.(e);\n }}\n markdownOnly\n ref={ref}\n height={height}\n searchTriggers={[\n { trigger: '@', regex: String.raw`(?:\\S+(?:[^\\n\\S][^@#\\s]\\S*)*[^\\n\\S]?|)` },\n { trigger: '#', regex: String.raw`[^\\s,]*` }\n ]}\n getSearchItemReplacement={(id: string) => {\n if (id === autopilotId) {\n return {\n markdown: AutopilotConfig.inject(),\n component: AutopilotConfig.component,\n props: { tabIndex: -1 },\n text: autopilotLabel\n };\n }\n\n const item = searchResults?.find(({ id: itemId }) => itemId === id);\n\n if (!item) return undefined;\n\n return {\n markdown:\n triggerType === 'mention'\n ? MentionButtonConfig.inject({\n id: item.id,\n type: searchType.current,\n text: item.primary,\n href: item.href\n })\n : HashtagButtonConfig.inject({ tag: item.id }),\n component:\n triggerType === 'mention'\n ? MentionButtonConfig.component\n : HashtagButtonConfig.component,\n props:\n triggerType === 'mention'\n ? {\n id: item.id,\n text: item.primary,\n type: searchType.current,\n tabIndex: -1\n }\n : { tag: item.primary, tabIndex: -1 },\n text: item.primary\n };\n }}\n searchRenderers={[\n {\n type: MentionButtonConfig.type,\n xmlElement: MentionButtonConfig.xmlElement,\n regexPattern: MentionButtonConfig.regexPattern,\n getSearchAttributes\n },\n {\n type: HashtagButtonConfig.type,\n xmlElement: HashtagButtonConfig.xmlElement,\n regexPattern: HashtagButtonConfig.regexPattern,\n getSearchAttributes\n },\n {\n type: AutopilotConfig.type,\n xmlElement: AutopilotConfig.xmlElement,\n regexPattern: AutopilotConfig.regexPattern,\n getSearchAttributes\n }\n ]}\n onSearch={onSearch ? onDecoSearch : undefined}\n menu={showMentionType ? typesMenu : searchMenu}\n />\n );\n }\n);\n\nexport default FeedRichText;\n"]}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { NoChildrenProp, OmitStrict, WithAttributes } from '@pega/cosmos-react-core';
|
|
2
|
+
import type { RichTextViewerProps } from '@pega/cosmos-react-rte';
|
|
3
|
+
import type { FeedContentProps } from './Feed.types';
|
|
4
|
+
type FeedRichTextViewerProps = WithAttributes<'div', OmitStrict<FeedContentProps, 'children'> & NoChildrenProp & {
|
|
5
|
+
content: string;
|
|
6
|
+
onLinkRender?: RichTextViewerProps['onMarkdownLinkRender'];
|
|
7
|
+
}>;
|
|
8
|
+
declare const FeedRichTextViewer: import("react").ForwardRefExoticComponent<Omit<FeedRichTextViewerProps, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
|
|
9
|
+
export default FeedRichTextViewer;
|
|
10
|
+
//# sourceMappingURL=FeedRichTextViewer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FeedRichTextViewer.d.ts","sourceRoot":"","sources":["../../../src/components/Feed/FeedRichTextViewer.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,cAAc,EACd,UAAU,EAEV,cAAc,EACf,MAAM,yBAAyB,CAAC;AAGjC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAGlE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAErD,KAAK,uBAAuB,GAAG,cAAc,CAC3C,KAAK,EACL,UAAU,CAAC,gBAAgB,EAAE,UAAU,CAAC,GACtC,cAAc,GAAG;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,mBAAmB,CAAC,sBAAsB,CAAC,CAAC;CAC5D,CACJ,CAAC;AAQF,QAAA,MAAM,kBAAkB,iIA4DtB,CAAC;AAEH,eAAe,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useContext, forwardRef, useState, useRef, useEffect } from 'react';
|
|
3
|
+
import styled from 'styled-components';
|
|
4
|
+
import { Button, ExpandCollapse, Flex, useI18n } from '@pega/cosmos-react-core';
|
|
5
|
+
import { StyledEditorContainer } from '@pega/cosmos-react-rte/lib/components/RichTextEditor/RichTextEditor.styles';
|
|
6
|
+
import { RichTextViewer } from '@pega/cosmos-react-rte';
|
|
7
|
+
import { FeedContext } from './Feed.context';
|
|
8
|
+
const StyledContent = styled.div `
|
|
9
|
+
${StyledEditorContainer} {
|
|
10
|
+
padding: 0;
|
|
11
|
+
}
|
|
12
|
+
`;
|
|
13
|
+
const FeedRichTextViewer = forwardRef(function FeedRichTextViewer({ content = '', maxContentHeight = Infinity, onLinkRender, ...restProps }, ref) {
|
|
14
|
+
const t = useI18n();
|
|
15
|
+
const { interactionRenderers, markdownMap } = useContext(FeedContext);
|
|
16
|
+
const rtvRef = useRef(null);
|
|
17
|
+
const [collapsed, setCollapsed] = useState(true);
|
|
18
|
+
const [exceedsMaxHeight, setExceedsMaxHeight] = useState(true);
|
|
19
|
+
useEffect(() => {
|
|
20
|
+
if (!rtvRef.current)
|
|
21
|
+
return;
|
|
22
|
+
const observer = new ResizeObserver(entries => {
|
|
23
|
+
const exceedsHeight = entries.some(({ target, contentRect }) => {
|
|
24
|
+
if (target !== rtvRef.current)
|
|
25
|
+
return;
|
|
26
|
+
return contentRect.height > maxContentHeight;
|
|
27
|
+
});
|
|
28
|
+
setExceedsMaxHeight(exceedsHeight);
|
|
29
|
+
});
|
|
30
|
+
observer.observe(rtvRef.current);
|
|
31
|
+
return () => {
|
|
32
|
+
observer.disconnect();
|
|
33
|
+
};
|
|
34
|
+
}, [rtvRef.current, maxContentHeight]);
|
|
35
|
+
return (_jsxs(Flex, { as: StyledContent, ref: ref, container: { direction: 'column', gap: 1 }, children: [_jsx(ExpandCollapse, { collapsed: collapsed, min: exceedsMaxHeight ? `${maxContentHeight}px` : 'max-content', ...restProps, children: _jsx(RichTextViewer, { ref: rtvRef, content: content, type: 'markdown', interactionRenderers: interactionRenderers, markdownMap: markdownMap, onMarkdownLinkRender: onLinkRender }) }), exceedsMaxHeight && (_jsx(Flex, { container: { justify: 'center' }, children: _jsx(Button, { variant: 'link', onClick: () => setCollapsed(current => !current), children: collapsed ? t('show_more') : t('show_less') }) }))] }));
|
|
36
|
+
});
|
|
37
|
+
export default FeedRichTextViewer;
|
|
38
|
+
//# sourceMappingURL=FeedRichTextViewer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FeedRichTextViewer.js","sourceRoot":"","sources":["../../../src/components/Feed/FeedRichTextViewer.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useContext, forwardRef, useState, useRef, useEffect, type PropsWithoutRef } from 'react';\nimport styled from 'styled-components';\n\nimport { Button, ExpandCollapse, Flex, useI18n } from '@pega/cosmos-react-core';\nimport type {\n NoChildrenProp,\n OmitStrict,\n RefElement,\n WithAttributes\n} from '@pega/cosmos-react-core';\nimport { StyledEditorContainer } from '@pega/cosmos-react-rte/lib/components/RichTextEditor/RichTextEditor.styles';\nimport { RichTextViewer } from '@pega/cosmos-react-rte';\nimport type { RichTextViewerProps } from '@pega/cosmos-react-rte';\n\nimport { FeedContext } from './Feed.context';\nimport type { FeedContentProps } from './Feed.types';\n\ntype FeedRichTextViewerProps = WithAttributes<\n 'div',\n OmitStrict<FeedContentProps, 'children'> &\n NoChildrenProp & {\n content: string;\n onLinkRender?: RichTextViewerProps['onMarkdownLinkRender'];\n }\n>;\n\nconst StyledContent = styled.div`\n ${StyledEditorContainer} {\n padding: 0;\n }\n`;\n\nconst FeedRichTextViewer = forwardRef<\n RefElement<FeedRichTextViewerProps>,\n PropsWithoutRef<FeedRichTextViewerProps>\n>(function FeedRichTextViewer(\n { content = '', maxContentHeight = Infinity, onLinkRender, ...restProps },\n ref\n) {\n const t = useI18n();\n\n const { interactionRenderers, markdownMap } = useContext(FeedContext);\n const rtvRef = useRef<HTMLDivElement>(null);\n\n const [collapsed, setCollapsed] = useState(true);\n const [exceedsMaxHeight, setExceedsMaxHeight] = useState(true);\n\n useEffect(() => {\n if (!rtvRef.current) return;\n\n const observer = new ResizeObserver(entries => {\n const exceedsHeight = entries.some(({ target, contentRect }) => {\n if (target !== rtvRef.current) return;\n\n return contentRect.height > maxContentHeight;\n });\n\n setExceedsMaxHeight(exceedsHeight);\n });\n\n observer.observe(rtvRef.current);\n\n return () => {\n observer.disconnect();\n };\n }, [rtvRef.current, maxContentHeight]);\n\n return (\n <Flex as={StyledContent} ref={ref} container={{ direction: 'column', gap: 1 }}>\n <ExpandCollapse\n collapsed={collapsed}\n min={exceedsMaxHeight ? `${maxContentHeight}px` : 'max-content'}\n {...restProps}\n >\n <RichTextViewer\n ref={rtvRef}\n content={content}\n type='markdown'\n interactionRenderers={interactionRenderers}\n markdownMap={markdownMap}\n onMarkdownLinkRender={onLinkRender}\n />\n </ExpandCollapse>\n {exceedsMaxHeight && (\n <Flex container={{ justify: 'center' }}>\n <Button variant='link' onClick={() => setCollapsed(current => !current)}>\n {collapsed ? t('show_more') : t('show_less')}\n </Button>\n </Flex>\n )}\n </Flex>\n );\n});\n\nexport default FeedRichTextViewer;\n"]}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { PostVisibilityControlProps } from './Feed.types';
|
|
2
|
+
declare const FeedVisibilityControls: ({ visibilityMode, visibility, setVisibility, recipientInput }: PostVisibilityControlProps) => import("react/jsx-runtime").JSX.Element;
|
|
3
|
+
export default FeedVisibilityControls;
|
|
4
|
+
//# sourceMappingURL=FeedVisibilityControls.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FeedVisibilityControls.d.ts","sourceRoot":"","sources":["../../../src/components/Feed/FeedVisibilityControls.tsx"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,cAAc,CAAC;AAE/D,QAAA,MAAM,sBAAsB,kEAKzB,0BAA0B,4CAyG5B,CAAC;AAEF,eAAe,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { useState, useEffect, useMemo } from 'react';
|
|
3
|
+
import { useI18n, ComboBox, RadioButtonGroup, RadioButton, useAfterInitialEffect } from '@pega/cosmos-react-core';
|
|
4
|
+
const FeedVisibilityControls = ({ visibilityMode, visibility, setVisibility, recipientInput }) => {
|
|
5
|
+
const t = useI18n();
|
|
6
|
+
const { availableRecipients, recipients, onAdd, onRemove, onToggle, onSearch, onMenuOpen, loadMore, loading } = recipientInput;
|
|
7
|
+
const [searchValue, setSearchValue] = useState('');
|
|
8
|
+
const itemsToRender = useMemo(() => {
|
|
9
|
+
return availableRecipients.map(item => ({
|
|
10
|
+
...item,
|
|
11
|
+
selected: recipients.some(r => r.id === item.id)
|
|
12
|
+
}));
|
|
13
|
+
}, [availableRecipients, recipients]);
|
|
14
|
+
const toggle = (itemId) => {
|
|
15
|
+
const recipient = itemsToRender.find(item => item.id === itemId);
|
|
16
|
+
if (!recipient || recipient.selected) {
|
|
17
|
+
onRemove(itemId);
|
|
18
|
+
}
|
|
19
|
+
else {
|
|
20
|
+
onAdd(itemId);
|
|
21
|
+
}
|
|
22
|
+
onToggle?.(itemId);
|
|
23
|
+
setSearchValue('');
|
|
24
|
+
};
|
|
25
|
+
useAfterInitialEffect(() => {
|
|
26
|
+
if (visibility !== 'private') {
|
|
27
|
+
recipients.forEach(item => onRemove(item.id));
|
|
28
|
+
}
|
|
29
|
+
}, [visibility]);
|
|
30
|
+
useEffect(() => {
|
|
31
|
+
onSearch(searchValue);
|
|
32
|
+
}, [searchValue]);
|
|
33
|
+
return (_jsxs(_Fragment, { children: [visibilityMode === 'selectable' && (_jsxs(RadioButtonGroup, { name: 'visibility', label: t('feed_mode'), required: true, inline: true, children: [_jsx(RadioButton, { label: t('feed_public'), checked: visibility === 'public', onChange: (e) => {
|
|
34
|
+
if (e.target.checked) {
|
|
35
|
+
setVisibility?.('public');
|
|
36
|
+
}
|
|
37
|
+
} }), _jsx(RadioButton, { label: t('feed_private'), checked: visibility === 'private', onChange: (e) => {
|
|
38
|
+
if (e.target.checked) {
|
|
39
|
+
setVisibility?.('private');
|
|
40
|
+
}
|
|
41
|
+
} })] })), visibility === 'private' && (_jsx(ComboBox, { mode: 'multi-select', label: t('feed_users'), required: true, selected: {
|
|
42
|
+
items: recipients.map(item => ({ text: item.primary, id: item.id })),
|
|
43
|
+
onRemove: toggle
|
|
44
|
+
}, value: searchValue, onChange: (e) => {
|
|
45
|
+
setSearchValue(e.target.value);
|
|
46
|
+
}, onBlur: () => {
|
|
47
|
+
setSearchValue('');
|
|
48
|
+
}, onMenuOpen: onMenuOpen, menu: searchValue
|
|
49
|
+
? {
|
|
50
|
+
items: itemsToRender,
|
|
51
|
+
onItemClick: toggle,
|
|
52
|
+
emptyText: t('no_items'),
|
|
53
|
+
loadMore,
|
|
54
|
+
loading
|
|
55
|
+
}
|
|
56
|
+
: {
|
|
57
|
+
items: [],
|
|
58
|
+
emptyText: t('combobox_search_instructions')
|
|
59
|
+
} }))] }));
|
|
60
|
+
};
|
|
61
|
+
export default FeedVisibilityControls;
|
|
62
|
+
//# sourceMappingURL=FeedVisibilityControls.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FeedVisibilityControls.js","sourceRoot":"","sources":["../../../src/components/Feed/FeedVisibilityControls.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useState, useEffect, useMemo } from 'react';\nimport type { ChangeEvent } from 'react';\n\nimport {\n useI18n,\n ComboBox,\n RadioButtonGroup,\n RadioButton,\n useAfterInitialEffect\n} from '@pega/cosmos-react-core';\nimport type { MenuItemProps } from '@pega/cosmos-react-core';\n\nimport type { PostVisibilityControlProps } from './Feed.types';\n\nconst FeedVisibilityControls = ({\n visibilityMode,\n visibility,\n setVisibility,\n recipientInput\n}: PostVisibilityControlProps) => {\n const t = useI18n();\n\n const {\n availableRecipients,\n recipients,\n onAdd,\n onRemove,\n onToggle,\n onSearch,\n onMenuOpen,\n loadMore,\n loading\n } = recipientInput;\n\n const [searchValue, setSearchValue] = useState('');\n\n const itemsToRender = useMemo(() => {\n return availableRecipients.map(item => ({\n ...item,\n selected: recipients.some(r => r.id === item.id)\n }));\n }, [availableRecipients, recipients]);\n\n const toggle = (itemId: MenuItemProps['id']) => {\n const recipient = itemsToRender.find(item => item.id === itemId);\n if (!recipient || recipient.selected) {\n onRemove(itemId);\n } else {\n onAdd(itemId);\n }\n onToggle?.(itemId);\n setSearchValue('');\n };\n\n useAfterInitialEffect(() => {\n if (visibility !== 'private') {\n recipients.forEach(item => onRemove(item.id));\n }\n }, [visibility]);\n\n useEffect(() => {\n onSearch(searchValue);\n }, [searchValue]);\n\n return (\n <>\n {visibilityMode === 'selectable' && (\n <RadioButtonGroup name='visibility' label={t('feed_mode')} required inline>\n <RadioButton\n label={t('feed_public')}\n checked={visibility === 'public'}\n onChange={(e: ChangeEvent<HTMLInputElement>) => {\n if (e.target.checked) {\n setVisibility?.('public');\n }\n }}\n />\n <RadioButton\n label={t('feed_private')}\n checked={visibility === 'private'}\n onChange={(e: ChangeEvent<HTMLInputElement>) => {\n if (e.target.checked) {\n setVisibility?.('private');\n }\n }}\n />\n </RadioButtonGroup>\n )}\n\n {visibility === 'private' && (\n <ComboBox\n mode='multi-select'\n label={t('feed_users')}\n required\n selected={{\n items: recipients.map(item => ({ text: item.primary, id: item.id })),\n onRemove: toggle\n }}\n value={searchValue}\n onChange={(e: ChangeEvent<HTMLInputElement>) => {\n setSearchValue(e.target.value);\n }}\n onBlur={() => {\n setSearchValue('');\n }}\n onMenuOpen={onMenuOpen}\n menu={\n searchValue\n ? {\n items: itemsToRender,\n onItemClick: toggle,\n emptyText: t('no_items'),\n loadMore,\n loading\n }\n : {\n items: [],\n emptyText: t('combobox_search_instructions')\n }\n }\n />\n )}\n </>\n );\n};\n\nexport default FeedVisibilityControls;\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MarkdownSyntax.d.ts","sourceRoot":"","sources":["../../../src/components/Feed/MarkdownSyntax.tsx"],"names":[],"mappings":"AAkDA,QAAA,MAAM,cAAc,+CAwFnB,CAAC;AAEF,eAAe,cAAc,CAAC"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { jsxs as _jsxs, jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import styled, { css } from 'styled-components';
|
|
3
|
+
import { defaultThemeProp, Flex, Text, useI18n } from '@pega/cosmos-react-core';
|
|
4
|
+
import BlockQuote from '@pega/cosmos-react-rte/lib/components/RichTextEditor/DecoratorComponents/BlockQuote';
|
|
5
|
+
import Code from '@pega/cosmos-react-rte/lib/components/RichTextEditor/DecoratorComponents/Code';
|
|
6
|
+
import CodeBlock from '@pega/cosmos-react-rte/lib/components/RichTextEditor/DecoratorComponents/CodeBlock';
|
|
7
|
+
const StyledSectionHeading = styled(Text)(({ theme }) => {
|
|
8
|
+
return css `
|
|
9
|
+
padding-block: ${theme.base.spacing};
|
|
10
|
+
`;
|
|
11
|
+
});
|
|
12
|
+
StyledSectionHeading.defaultProps = defaultThemeProp;
|
|
13
|
+
const BoldText = styled.span(({ theme }) => {
|
|
14
|
+
return css `
|
|
15
|
+
font-weight: ${theme.base['font-weight'].bold};
|
|
16
|
+
`;
|
|
17
|
+
});
|
|
18
|
+
BoldText.defaultProps = defaultThemeProp;
|
|
19
|
+
const ItalicText = styled.span `
|
|
20
|
+
font-style: italic;
|
|
21
|
+
`;
|
|
22
|
+
const IndentedText = styled.span(({ theme }) => {
|
|
23
|
+
return css `
|
|
24
|
+
margin-inline-start: calc(2 * ${theme.base.spacing});
|
|
25
|
+
`;
|
|
26
|
+
});
|
|
27
|
+
IndentedText.defaultProps = defaultThemeProp;
|
|
28
|
+
const StyledCode = styled(Code) `
|
|
29
|
+
width: fit-content;
|
|
30
|
+
`;
|
|
31
|
+
const StyledCodeBlock = styled(CodeBlock) `
|
|
32
|
+
display: flex;
|
|
33
|
+
flex-direction: column;
|
|
34
|
+
`;
|
|
35
|
+
const MarkdownSyntax = () => {
|
|
36
|
+
const t = useI18n();
|
|
37
|
+
const sections = [
|
|
38
|
+
{
|
|
39
|
+
title: 'styles',
|
|
40
|
+
content: (_jsxs(_Fragment, { children: [_jsxs(BoldText, { children: ["**", t('markdown_bold'), "**"] }), _jsxs(ItalicText, { children: ["*", t('markdown_italic'), "*"] }), _jsx(BlockQuote, { children: `> ${t('markdown_blockquote')}` })] }))
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
title: 'images',
|
|
44
|
+
content: (_jsxs("span", { children: [", ")"] }))
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
title: 'links',
|
|
48
|
+
content: (_jsxs("span", { children: ["[", t('markdown_link_text'), "](", t('markdown_link_url'), ")"] }))
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
title: 'lists',
|
|
52
|
+
content: (_jsxs(_Fragment, { children: [_jsxs("span", { children: ["1. ", t('markdown_ordered_list')] }), _jsxs(IndentedText, { children: ["1. ", t('markdown_ordered_sublist')] }), _jsxs("span", { children: ["* ", t('markdown_unordered_list')] }), _jsxs(IndentedText, { children: ["* ", t('markdown_unordered_sublist')] })] }))
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
title: 'headings',
|
|
56
|
+
content: (_jsxs(_Fragment, { children: [_jsxs(Text, { variant: 'h1', as: 'span', children: ["# ", t('markdown_heading_level', ['1'])] }), _jsxs(Text, { variant: 'h2', as: 'span', children: ["## ", t('markdown_heading_level', ['2'])] }), _jsxs(Text, { variant: 'h3', as: 'span', children: ["### ", t('markdown_heading_level', ['3'])] }), _jsxs(Text, { variant: 'h4', as: 'span', children: ["#### ", t('markdown_heading_level', ['4'])] })] }))
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
title: 'code',
|
|
60
|
+
content: (_jsxs(_Fragment, { children: [_jsxs(StyledCode, { children: ["`", t('markdown_code'), "`"] }), _jsxs(StyledCodeBlock, { children: [_jsx("span", { children: "```" }), _jsx("span", { children: t('markdown_code_block') }), _jsx("span", { children: "```" })] })] }))
|
|
61
|
+
}
|
|
62
|
+
];
|
|
63
|
+
return (_jsxs(Flex, { container: { direction: 'column', gap: 1 }, children: [_jsx("span", { children: t('markdown_instructions') }), sections.map(section => (_jsxs("div", { children: [_jsx(StyledSectionHeading, { variant: 'h3', children: t(`markdown_${section.title}`) }), _jsx(Flex, { container: { direction: 'column', gap: 0.5, pad: [1, 0, 0, 2] }, children: section.content })] }, section.title)))] }));
|
|
64
|
+
};
|
|
65
|
+
export default MarkdownSyntax;
|
|
66
|
+
//# sourceMappingURL=MarkdownSyntax.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MarkdownSyntax.js","sourceRoot":"","sources":["../../../src/components/Feed/MarkdownSyntax.tsx"],"names":[],"mappings":";AACA,OAAO,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EAAE,gBAAgB,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAChF,OAAO,UAAU,MAAM,qFAAqF,CAAC;AAC7G,OAAO,IAAI,MAAM,+EAA+E,CAAC;AACjG,OAAO,SAAS,MAAM,oFAAoF,CAAC;AAO3G,MAAM,oBAAoB,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE;IACtD,OAAO,GAAG,CAAA;qBACS,KAAK,CAAC,IAAI,CAAC,OAAO;GACpC,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,oBAAoB,CAAC,YAAY,GAAG,gBAAgB,CAAC;AAErD,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE;IACzC,OAAO,GAAG,CAAA;mBACO,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI;GAC9C,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,YAAY,GAAG,gBAAgB,CAAC;AAEzC,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAA;;CAE7B,CAAC;AAEF,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE;IAC7C,OAAO,GAAG,CAAA;oCACwB,KAAK,CAAC,IAAI,CAAC,OAAO;GACnD,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,YAAY,CAAC,YAAY,GAAG,gBAAgB,CAAC;AAE7C,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,CAAA;;CAE9B,CAAC;AAEF,MAAM,eAAe,GAAG,MAAM,CAAC,SAAS,CAAC,CAAA;;;CAGxC,CAAC;AAEF,MAAM,cAAc,GAAG,GAAG,EAAE;IAC1B,MAAM,CAAC,GAAG,OAAO,EAAE,CAAC;IAEpB,MAAM,QAAQ,GAA4B;QACxC;YACE,KAAK,EAAE,QAAQ;YACf,OAAO,EAAE,CACP,8BACE,MAAC,QAAQ,qBAAI,CAAC,CAAC,eAAe,CAAC,UAAc,EAC7C,MAAC,UAAU,oBAAG,CAAC,CAAC,iBAAiB,CAAC,SAAe,EACjD,KAAC,UAAU,cAAE,KAAK,CAAC,CAAC,qBAAqB,CAAC,EAAE,GAAc,IACzD,CACJ;SACF;QACD;YACE,KAAK,EAAE,QAAQ;YACf,OAAO,EAAE,CACP,iCACK,CAAC,CAAC,mBAAmB,CAAC,QAAI,CAAC,CAAC,oBAAoB,CAAC,SAC/C,CACR;SACF;QACD;YACE,KAAK,EAAE,OAAO;YACd,OAAO,EAAE,CACP,gCACI,CAAC,CAAC,oBAAoB,CAAC,QAAI,CAAC,CAAC,mBAAmB,CAAC,SAC9C,CACR;SACF;QACD;YACE,KAAK,EAAE,OAAO;YACd,OAAO,EAAE,CACP,8BACE,kCAAU,CAAC,CAAC,uBAAuB,CAAC,IAAQ,EAC5C,MAAC,YAAY,sBAAK,CAAC,CAAC,0BAA0B,CAAC,IAAgB,EAC/D,iCAAS,CAAC,CAAC,yBAAyB,CAAC,IAAQ,EAC7C,MAAC,YAAY,qBAAI,CAAC,CAAC,4BAA4B,CAAC,IAAgB,IAC/D,CACJ;SACF;QACD;YACE,KAAK,EAAE,UAAU;YACjB,OAAO,EAAE,CACP,8BACE,MAAC,IAAI,IAAC,OAAO,EAAC,IAAI,EAAC,EAAE,EAAC,MAAM,mBACvB,CAAC,CAAC,wBAAwB,EAAE,CAAC,GAAG,CAAC,CAAC,IAChC,EACP,MAAC,IAAI,IAAC,OAAO,EAAC,IAAI,EAAC,EAAE,EAAC,MAAM,oBACtB,CAAC,CAAC,wBAAwB,EAAE,CAAC,GAAG,CAAC,CAAC,IACjC,EACP,MAAC,IAAI,IAAC,OAAO,EAAC,IAAI,EAAC,EAAE,EAAC,MAAM,qBACrB,CAAC,CAAC,wBAAwB,EAAE,CAAC,GAAG,CAAC,CAAC,IAClC,EACP,MAAC,IAAI,IAAC,OAAO,EAAC,IAAI,EAAC,EAAE,EAAC,MAAM,sBACpB,CAAC,CAAC,wBAAwB,EAAE,CAAC,GAAG,CAAC,CAAC,IACnC,IACN,CACJ;SACF;QACD;YACE,KAAK,EAAE,MAAM;YACb,OAAO,EAAE,CACP,8BACE,MAAC,UAAU,oBAAG,CAAC,CAAC,eAAe,CAAC,SAAe,EAC/C,MAAC,eAAe,eACd,iCAAgB,EAChB,yBAAO,CAAC,CAAC,qBAAqB,CAAC,GAAQ,EACvC,iCAAgB,IACA,IACjB,CACJ;SACF;KACF,CAAC;IAEF,OAAO,CACL,MAAC,IAAI,IAAC,SAAS,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,aAC9C,yBAAO,CAAC,CAAC,uBAAuB,CAAC,GAAQ,EACxC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CACvB,0BACE,KAAC,oBAAoB,IAAC,OAAO,EAAC,IAAI,YAAE,CAAC,CAAC,YAAY,OAAO,CAAC,KAAK,EAAE,CAAC,GAAwB,EAC1F,KAAC,IAAI,IAAC,SAAS,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,YAClE,OAAO,CAAC,OAAO,GACX,KAJC,OAAO,CAAC,KAAK,CAKjB,CACP,CAAC,IACG,CACR,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,cAAc,CAAC","sourcesContent":["import type { ReactNode } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport { defaultThemeProp, Flex, Text, useI18n } from '@pega/cosmos-react-core';\nimport BlockQuote from '@pega/cosmos-react-rte/lib/components/RichTextEditor/DecoratorComponents/BlockQuote';\nimport Code from '@pega/cosmos-react-rte/lib/components/RichTextEditor/DecoratorComponents/Code';\nimport CodeBlock from '@pega/cosmos-react-rte/lib/components/RichTextEditor/DecoratorComponents/CodeBlock';\n\ninterface MarkdownSyntaxSection {\n title: 'styles' | 'images' | 'links' | 'lists' | 'headings' | 'code';\n content: ReactNode;\n}\n\nconst StyledSectionHeading = styled(Text)(({ theme }) => {\n return css`\n padding-block: ${theme.base.spacing};\n `;\n});\n\nStyledSectionHeading.defaultProps = defaultThemeProp;\n\nconst BoldText = styled.span(({ theme }) => {\n return css`\n font-weight: ${theme.base['font-weight'].bold};\n `;\n});\n\nBoldText.defaultProps = defaultThemeProp;\n\nconst ItalicText = styled.span`\n font-style: italic;\n`;\n\nconst IndentedText = styled.span(({ theme }) => {\n return css`\n margin-inline-start: calc(2 * ${theme.base.spacing});\n `;\n});\n\nIndentedText.defaultProps = defaultThemeProp;\n\nconst StyledCode = styled(Code)`\n width: fit-content;\n`;\n\nconst StyledCodeBlock = styled(CodeBlock)`\n display: flex;\n flex-direction: column;\n`;\n\nconst MarkdownSyntax = () => {\n const t = useI18n();\n\n const sections: MarkdownSyntaxSection[] = [\n {\n title: 'styles',\n content: (\n <>\n <BoldText>**{t('markdown_bold')}**</BoldText>\n <ItalicText>*{t('markdown_italic')}*</ItalicText>\n <BlockQuote>{`> ${t('markdown_blockquote')}`}</BlockQuote>\n </>\n )\n },\n {\n title: 'images',\n content: (\n <span>\n })\n </span>\n )\n },\n {\n title: 'links',\n content: (\n <span>\n [{t('markdown_link_text')}]({t('markdown_link_url')})\n </span>\n )\n },\n {\n title: 'lists',\n content: (\n <>\n <span>1. {t('markdown_ordered_list')}</span>\n <IndentedText>1. {t('markdown_ordered_sublist')}</IndentedText>\n <span>* {t('markdown_unordered_list')}</span>\n <IndentedText>* {t('markdown_unordered_sublist')}</IndentedText>\n </>\n )\n },\n {\n title: 'headings',\n content: (\n <>\n <Text variant='h1' as='span'>\n # {t('markdown_heading_level', ['1'])}\n </Text>\n <Text variant='h2' as='span'>\n ## {t('markdown_heading_level', ['2'])}\n </Text>\n <Text variant='h3' as='span'>\n ### {t('markdown_heading_level', ['3'])}\n </Text>\n <Text variant='h4' as='span'>\n #### {t('markdown_heading_level', ['4'])}\n </Text>\n </>\n )\n },\n {\n title: 'code',\n content: (\n <>\n <StyledCode>`{t('markdown_code')}`</StyledCode>\n <StyledCodeBlock>\n <span>```</span>\n <span>{t('markdown_code_block')}</span>\n <span>```</span>\n </StyledCodeBlock>\n </>\n )\n }\n ];\n\n return (\n <Flex container={{ direction: 'column', gap: 1 }}>\n <span>{t('markdown_instructions')}</span>\n {sections.map(section => (\n <div key={section.title}>\n <StyledSectionHeading variant='h3'>{t(`markdown_${section.title}`)}</StyledSectionHeading>\n <Flex container={{ direction: 'column', gap: 0.5, pad: [1, 0, 0, 2] }}>\n {section.content}\n </Flex>\n </div>\n ))}\n </Flex>\n );\n};\n\nexport default MarkdownSyntax;\n"]}
|
|
@@ -3,5 +3,7 @@ export { default as FeedPost } from './FeedPost';
|
|
|
3
3
|
export { default as FeedReplyInput } from './FeedReplyInput';
|
|
4
4
|
export { default as FeedReply } from './FeedReply';
|
|
5
5
|
export { default as FeedNewPost } from './FeedNewPost';
|
|
6
|
-
export
|
|
6
|
+
export { default as FeedRichText } from './FeedRichText';
|
|
7
|
+
export { default as FeedRichTextViewer } from './FeedRichTextViewer';
|
|
8
|
+
export type { Filter, FeedRichTextProps, FeedProps, FeedNewPostProps, FeedPostProps, FeedReplyInputProps, FeedReplyProps, PostType, Visibility, RecipientInputProps, DefaultPostConfig, CustomPostConfig, DefaultEditConfig, CustomEditConfig } from './Feed.types';
|
|
7
9
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Feed/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AACjC,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAC;AACvD,YAAY,EACV,MAAM,EACN,SAAS,EACT,gBAAgB,EAChB,aAAa,EACb,mBAAmB,EACnB,cAAc,EACd,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Feed/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AACjC,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AACrE,YAAY,EACV,MAAM,EACN,iBAAiB,EACjB,SAAS,EACT,gBAAgB,EAChB,aAAa,EACb,mBAAmB,EACnB,cAAc,EACd,QAAQ,EACR,UAAU,EACV,mBAAmB,EACnB,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,EACjB,MAAM,cAAc,CAAC"}
|
|
@@ -3,4 +3,6 @@ export { default as FeedPost } from './FeedPost';
|
|
|
3
3
|
export { default as FeedReplyInput } from './FeedReplyInput';
|
|
4
4
|
export { default as FeedReply } from './FeedReply';
|
|
5
5
|
export { default as FeedNewPost } from './FeedNewPost';
|
|
6
|
+
export { default as FeedRichText } from './FeedRichText';
|
|
7
|
+
export { default as FeedRichTextViewer } from './FeedRichTextViewer';
|
|
6
8
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/Feed/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AACjC,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAC","sourcesContent":["export { default } from './Feed';\nexport { default as FeedPost } from './FeedPost';\nexport { default as FeedReplyInput } from './FeedReplyInput';\nexport { default as FeedReply } from './FeedReply';\nexport { default as FeedNewPost } from './FeedNewPost';\nexport type {\n Filter,\n FeedProps,\n FeedNewPostProps,\n FeedPostProps,\n FeedReplyInputProps,\n FeedReplyProps,\n
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/Feed/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AACjC,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,sBAAsB,CAAC","sourcesContent":["export { default } from './Feed';\nexport { default as FeedPost } from './FeedPost';\nexport { default as FeedReplyInput } from './FeedReplyInput';\nexport { default as FeedReply } from './FeedReply';\nexport { default as FeedNewPost } from './FeedNewPost';\nexport { default as FeedRichText } from './FeedRichText';\nexport { default as FeedRichTextViewer } from './FeedRichTextViewer';\nexport type {\n Filter,\n FeedRichTextProps,\n FeedProps,\n FeedNewPostProps,\n FeedPostProps,\n FeedReplyInputProps,\n FeedReplyProps,\n PostType,\n Visibility,\n RecipientInputProps,\n DefaultPostConfig,\n CustomPostConfig,\n DefaultEditConfig,\n CustomEditConfig\n} from './Feed.types';\n"]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import { forwardRef,
|
|
2
|
+
import { forwardRef, useContext } from 'react';
|
|
3
3
|
import styled from 'styled-components';
|
|
4
|
-
import { Tag } from '@pega/cosmos-react-core';
|
|
4
|
+
import { Tag, isValidElement } from '@pega/cosmos-react-core';
|
|
5
5
|
import { getXMLAttributes } from '@pega/cosmos-react-rte';
|
|
6
6
|
import { FeedContext } from '../Feed/Feed.context';
|
|
7
7
|
const StyledTag = styled(Tag) `
|