@pega/cosmos-react-social 5.0.0-dev.5.0 → 5.0.0-dev.6.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.
Files changed (163) hide show
  1. package/lib/components/Autopilot/Autopilot.d.ts +2 -2
  2. package/lib/components/Autopilot/Autopilot.d.ts.map +1 -1
  3. package/lib/components/Autopilot/Autopilot.js +2 -2
  4. package/lib/components/Autopilot/Autopilot.js.map +1 -1
  5. package/lib/components/Autopilot/AutopilotAvatar.d.ts +2 -2
  6. package/lib/components/Autopilot/AutopilotAvatar.d.ts.map +1 -1
  7. package/lib/components/Autopilot/AutopilotAvatar.js +4 -1
  8. package/lib/components/Autopilot/AutopilotAvatar.js.map +1 -1
  9. package/lib/components/Autopilot/AutopilotGlimpse.d.ts +2 -2
  10. package/lib/components/Autopilot/AutopilotGlimpse.d.ts.map +1 -1
  11. package/lib/components/Autopilot/AutopilotGlimpse.js +6 -4
  12. package/lib/components/Autopilot/AutopilotGlimpse.js.map +1 -1
  13. package/lib/components/Chat/Chat.d.ts +6 -6
  14. package/lib/components/Chat/Chat.d.ts.map +1 -1
  15. package/lib/components/Chat/Chat.js.map +1 -1
  16. package/lib/components/Chat/Chat.types.d.ts +3 -3
  17. package/lib/components/Chat/Chat.types.d.ts.map +1 -1
  18. package/lib/components/Chat/Chat.types.js.map +1 -1
  19. package/lib/components/Chat/ChatBody.d.ts +3 -3
  20. package/lib/components/Chat/ChatBody.d.ts.map +1 -1
  21. package/lib/components/Chat/ChatBody.js +1 -1
  22. package/lib/components/Chat/ChatBody.js.map +1 -1
  23. package/lib/components/Chat/ChatComposer.d.ts +2 -2
  24. package/lib/components/Chat/ChatComposer.d.ts.map +1 -1
  25. package/lib/components/Chat/ChatComposer.js.map +1 -1
  26. package/lib/components/Chat/ChatHeader.d.ts +2 -2
  27. package/lib/components/Chat/ChatHeader.d.ts.map +1 -1
  28. package/lib/components/Chat/ChatHeader.js.map +1 -1
  29. package/lib/components/Chat/ChatSettingsPanel.d.ts +2 -2
  30. package/lib/components/Chat/ChatSettingsPanel.d.ts.map +1 -1
  31. package/lib/components/Chat/ChatSettingsPanel.js.map +1 -1
  32. package/lib/components/Chat/ChatSettingsPanel.styles.d.ts +2 -2
  33. package/lib/components/Chat/ChatSettingsPanel.styles.d.ts.map +1 -1
  34. package/lib/components/Chat/ChatSettingsPanel.styles.js.map +1 -1
  35. package/lib/components/Chat/Message.d.ts +3 -3
  36. package/lib/components/Chat/Message.d.ts.map +1 -1
  37. package/lib/components/Chat/Message.js.map +1 -1
  38. package/lib/components/Chat/Message.styles.d.ts +2 -2
  39. package/lib/components/Chat/Message.styles.d.ts.map +1 -1
  40. package/lib/components/Chat/Message.styles.js.map +1 -1
  41. package/lib/components/Chat/SuggestedReplyPicker.d.ts +3 -3
  42. package/lib/components/Chat/SuggestedReplyPicker.d.ts.map +1 -1
  43. package/lib/components/Chat/SuggestedReplyPicker.js.map +1 -1
  44. package/lib/components/Chat/SystemMessage.d.ts +3 -3
  45. package/lib/components/Chat/SystemMessage.d.ts.map +1 -1
  46. package/lib/components/Chat/SystemMessage.js.map +1 -1
  47. package/lib/components/Chat/TypeIndicator.d.ts +3 -3
  48. package/lib/components/Chat/TypeIndicator.d.ts.map +1 -1
  49. package/lib/components/Chat/TypeIndicator.js.map +1 -1
  50. package/lib/components/Email/ContextMenuPopover.d.ts +2 -2
  51. package/lib/components/Email/ContextMenuPopover.d.ts.map +1 -1
  52. package/lib/components/Email/ContextMenuPopover.js.map +1 -1
  53. package/lib/components/Email/Email.d.ts +3 -3
  54. package/lib/components/Email/Email.d.ts.map +1 -1
  55. package/lib/components/Email/Email.js +8 -4
  56. package/lib/components/Email/Email.js.map +1 -1
  57. package/lib/components/Email/Email.styles.d.ts +1 -1
  58. package/lib/components/Email/Email.styles.d.ts.map +1 -1
  59. package/lib/components/Email/Email.styles.js.map +1 -1
  60. package/lib/components/Email/Email.types.d.ts +4 -4
  61. package/lib/components/Email/Email.types.d.ts.map +1 -1
  62. package/lib/components/Email/Email.types.js.map +1 -1
  63. package/lib/components/Email/EmailCaseView.d.ts +3 -3
  64. package/lib/components/Email/EmailCaseView.d.ts.map +1 -1
  65. package/lib/components/Email/EmailCaseView.js.map +1 -1
  66. package/lib/components/Email/EmailComposer.d.ts +3 -3
  67. package/lib/components/Email/EmailComposer.d.ts.map +1 -1
  68. package/lib/components/Email/EmailComposer.js.map +1 -1
  69. package/lib/components/Email/EmailConversation.d.ts +3 -3
  70. package/lib/components/Email/EmailConversation.d.ts.map +1 -1
  71. package/lib/components/Email/EmailConversation.js.map +1 -1
  72. package/lib/components/Email/EmailEntity.d.ts +3 -3
  73. package/lib/components/Email/EmailEntity.d.ts.map +1 -1
  74. package/lib/components/Email/EmailEntity.js.map +1 -1
  75. package/lib/components/Email/EmailManager.d.ts +3 -3
  76. package/lib/components/Email/EmailManager.d.ts.map +1 -1
  77. package/lib/components/Email/EmailManager.js.map +1 -1
  78. package/lib/components/Email/EmailNotificationPanel.d.ts +2 -2
  79. package/lib/components/Email/EmailNotificationPanel.d.ts.map +1 -1
  80. package/lib/components/Email/EmailNotificationPanel.js.map +1 -1
  81. package/lib/components/Email/EmailSelector.d.ts +3 -3
  82. package/lib/components/Email/EmailSelector.d.ts.map +1 -1
  83. package/lib/components/Email/EmailSelector.js.map +1 -1
  84. package/lib/components/Email/EmailShell.d.ts +3 -3
  85. package/lib/components/Email/EmailShell.d.ts.map +1 -1
  86. package/lib/components/Email/EmailShell.js.map +1 -1
  87. package/lib/components/Email/EmailSummaryItem.d.ts +3 -3
  88. package/lib/components/Email/EmailSummaryItem.d.ts.map +1 -1
  89. package/lib/components/Email/EmailSummaryItem.js.map +1 -1
  90. package/lib/components/Email/EmailSummaryList.d.ts +3 -3
  91. package/lib/components/Email/EmailSummaryList.d.ts.map +1 -1
  92. package/lib/components/Email/EmailSummaryList.js.map +1 -1
  93. package/lib/components/Email/EntityList.d.ts +3 -3
  94. package/lib/components/Email/EntityList.d.ts.map +1 -1
  95. package/lib/components/Email/EntityList.js.map +1 -1
  96. package/lib/components/Email/utils/EntityHighlighter.d.ts +1 -1
  97. package/lib/components/Email/utils/EntityHighlighter.d.ts.map +1 -1
  98. package/lib/components/Email/utils/EntityHighlighter.js.map +1 -1
  99. package/lib/components/Feed/Feed.context.d.ts +10 -5
  100. package/lib/components/Feed/Feed.context.d.ts.map +1 -1
  101. package/lib/components/Feed/Feed.context.js +4 -0
  102. package/lib/components/Feed/Feed.context.js.map +1 -1
  103. package/lib/components/Feed/Feed.d.ts +3 -3
  104. package/lib/components/Feed/Feed.d.ts.map +1 -1
  105. package/lib/components/Feed/Feed.js +6 -3
  106. package/lib/components/Feed/Feed.js.map +1 -1
  107. package/lib/components/Feed/Feed.types.d.ts +6 -6
  108. package/lib/components/Feed/Feed.types.d.ts.map +1 -1
  109. package/lib/components/Feed/Feed.types.js.map +1 -1
  110. package/lib/components/Feed/FeedAnnouncer.d.ts +1 -1
  111. package/lib/components/Feed/FeedAnnouncer.d.ts.map +1 -1
  112. package/lib/components/Feed/FeedAnnouncer.js.map +1 -1
  113. package/lib/components/Feed/FeedAttachments.d.ts +2 -2
  114. package/lib/components/Feed/FeedAttachments.d.ts.map +1 -1
  115. package/lib/components/Feed/FeedAttachments.js.map +1 -1
  116. package/lib/components/Feed/FeedContent.d.ts +3 -3
  117. package/lib/components/Feed/FeedContent.d.ts.map +1 -1
  118. package/lib/components/Feed/FeedContent.js.map +1 -1
  119. package/lib/components/Feed/FeedContentFooter.d.ts +2 -2
  120. package/lib/components/Feed/FeedContentFooter.d.ts.map +1 -1
  121. package/lib/components/Feed/FeedContentFooter.js.map +1 -1
  122. package/lib/components/Feed/FeedContentHeader.d.ts +2 -2
  123. package/lib/components/Feed/FeedContentHeader.d.ts.map +1 -1
  124. package/lib/components/Feed/FeedContentHeader.js +3 -3
  125. package/lib/components/Feed/FeedContentHeader.js.map +1 -1
  126. package/lib/components/Feed/FeedEditRegion.d.ts +3 -3
  127. package/lib/components/Feed/FeedEditRegion.d.ts.map +1 -1
  128. package/lib/components/Feed/FeedEditRegion.js.map +1 -1
  129. package/lib/components/Feed/FeedInputRegion.d.ts +3 -3
  130. package/lib/components/Feed/FeedInputRegion.d.ts.map +1 -1
  131. package/lib/components/Feed/FeedInputRegion.js.map +1 -1
  132. package/lib/components/Feed/FeedLikeButton.d.ts +3 -3
  133. package/lib/components/Feed/FeedLikeButton.d.ts.map +1 -1
  134. package/lib/components/Feed/FeedLikeButton.js.map +1 -1
  135. package/lib/components/Feed/FeedModalList.d.ts +2 -2
  136. package/lib/components/Feed/FeedModalList.d.ts.map +1 -1
  137. package/lib/components/Feed/FeedModalList.js.map +1 -1
  138. package/lib/components/Feed/FeedNewPost.d.ts +3 -3
  139. package/lib/components/Feed/FeedNewPost.d.ts.map +1 -1
  140. package/lib/components/Feed/FeedNewPost.js.map +1 -1
  141. package/lib/components/Feed/FeedNewPostTypeMenu.d.ts +2 -2
  142. package/lib/components/Feed/FeedNewPostTypeMenu.d.ts.map +1 -1
  143. package/lib/components/Feed/FeedNewPostTypeMenu.js.map +1 -1
  144. package/lib/components/Feed/FeedPost.d.ts +3 -3
  145. package/lib/components/Feed/FeedPost.d.ts.map +1 -1
  146. package/lib/components/Feed/FeedPost.js.map +1 -1
  147. package/lib/components/Feed/FeedReply.d.ts +3 -3
  148. package/lib/components/Feed/FeedReply.d.ts.map +1 -1
  149. package/lib/components/Feed/FeedReply.js.map +1 -1
  150. package/lib/components/Feed/FeedReplyInput.d.ts +3 -3
  151. package/lib/components/Feed/FeedReplyInput.d.ts.map +1 -1
  152. package/lib/components/Feed/FeedReplyInput.js.map +1 -1
  153. package/lib/components/Feed/FeedRichText.d.ts +3 -3
  154. package/lib/components/Feed/FeedRichText.d.ts.map +1 -1
  155. package/lib/components/Feed/FeedRichText.js +7 -15
  156. package/lib/components/Feed/FeedRichText.js.map +1 -1
  157. package/lib/components/HashtagButton/HashtagButton.d.ts +2 -2
  158. package/lib/components/HashtagButton/HashtagButton.d.ts.map +1 -1
  159. package/lib/components/HashtagButton/HashtagButton.js.map +1 -1
  160. package/lib/components/MentionButton/MentionButton.d.ts +2 -2
  161. package/lib/components/MentionButton/MentionButton.d.ts.map +1 -1
  162. package/lib/components/MentionButton/MentionButton.js.map +1 -1
  163. package/package.json +4 -4
@@ -1 +1 @@
1
- {"version":3,"file":"EmailNotificationPanel.d.ts","sourceRoot":"","sources":["../../../src/components/Email/EmailNotificationPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAE1C,OAAO,EACL,YAAY,EAEZ,UAAU,EAKX,MAAM,yBAAyB,CAAC;AAIjC,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,eAAe,CAAC;AAKjE,eAAO,MAAM,0BAA0B,EAAE,iBAAiB,CACxD,UAAU,CAAC,2BAA2B,EAAE,SAAS,CAAC,GAAG,YAAY,CAclE,CAAC;AAEF,QAAA,MAAM,sBAAsB,EAAE,iBAAiB,CAAC,2BAA2B,GAAG,YAAY,CAazF,CAAC;AAEF,eAAe,sBAAsB,CAAC"}
1
+ {"version":3,"file":"EmailNotificationPanel.d.ts","sourceRoot":"","sources":["../../../src/components/Email/EmailNotificationPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAS/C,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAIxE,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,eAAe,CAAC;AAKjE,eAAO,MAAM,0BAA0B,EAAE,iBAAiB,CACxD,UAAU,CAAC,2BAA2B,EAAE,SAAS,CAAC,GAAG,YAAY,CAclE,CAAC;AAEF,QAAA,MAAM,sBAAsB,EAAE,iBAAiB,CAAC,2BAA2B,GAAG,YAAY,CAazF,CAAC;AAEF,eAAe,sBAAsB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"EmailNotificationPanel.js","sourceRoot":"","sources":["../../../src/components/Email/EmailNotificationPanel.tsx"],"names":[],"mappings":";AAEA,OAAO,EAEL,IAAI,EAEJ,YAAY,EACZ,YAAY,EACZ,QAAQ,EACR,kBAAkB,EACnB,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,QAAQ,MAAM,mEAAmE,CAAC;AAC9F,OAAO,EAAE,kBAAkB,EAAE,MAAM,gEAAgE,CAAC;AAGpG,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAEtD,YAAY,CAAC,QAAQ,CAAC,CAAC;AAEvB,MAAM,CAAC,MAAM,0BAA0B,GAEnC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,SAAS,EAAE,EAAE,EAAE;IAC7C,MAAM,EACJ,IAAI,EAAE,EAAE,MAAM,EAAE,EACjB,GAAG,QAAQ,EAAE,CAAC;IACf,OAAO,CACL,MAAC,YAAY,IAAC,EAAE,EAAE,YAAY,KAAM,SAAS,EAAE,IAAI,EAAC,GAAG,EAAC,eAAe,EAAE,MAAM,CAAC,KAAK,aACnF,KAAC,IAAI,IAAC,IAAI,EAAC,YAAY,GAAG,EAE1B,KAAC,oBAAoB,IAAC,OAAO,EAAC,QAAQ,YAAE,KAAK,GAAwB,EAErE,KAAC,kBAAkB,cAAE,KAAK,GAAsB,IACnC,CAChB,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,sBAAsB,GAAkE,CAAC,EAC7F,KAAK,EACL,OAAO,EACP,KAAK,EACL,GAAG,SAAS,EACb,EAAE,EAAE;IACH,OAAO,CACL,KAAC,kBAAkB,IACjB,OAAO,EAAE,KAAK,EACd,MAAM,EAAE,KAAC,0BAA0B,OAAK,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,GAAI,EACjF,OAAO,EAAE,OAAO,GAChB,CACH,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,sBAAsB,CAAC","sourcesContent":["import { FunctionComponent } from 'react';\n\nimport {\n ForwardProps,\n Icon,\n OmitStrict,\n registerIcon,\n StyledAvatar,\n useTheme,\n VisuallyHiddenText\n} from '@pega/cosmos-react-core';\nimport * as mailIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/mail-solid.icon';\nimport { NavigationListItem } from '@pega/cosmos-react-core/lib/components/AppShell/NavigationList';\n\nimport type { EmailNotificationPanelProps } from './Email.types';\nimport { StyledEmailCountIcon } from './Email.styles';\n\nregisterIcon(mailIcon);\n\nexport const EmailNotificationPanelIcon: FunctionComponent<\n OmitStrict<EmailNotificationPanelProps, 'onClick'> & ForwardProps\n> = ({ status, label, count, ...restProps }) => {\n const {\n base: { colors }\n } = useTheme();\n return (\n <StyledAvatar as={StyledAvatar} {...restProps} size='m' backgroundColor={colors.white}>\n <Icon name='mail-solid' />\n\n <StyledEmailCountIcon variant='urgent'>{count}</StyledEmailCountIcon>\n\n <VisuallyHiddenText>{label}</VisuallyHiddenText>\n </StyledAvatar>\n );\n};\n\nconst EmailNotificationPanel: FunctionComponent<EmailNotificationPanelProps & ForwardProps> = ({\n label,\n onClick,\n count,\n ...restProps\n}) => {\n return (\n <NavigationListItem\n primary={label}\n visual={<EmailNotificationPanelIcon {...restProps} count={count} label={label} />}\n onClick={onClick}\n />\n );\n};\n\nexport default EmailNotificationPanel;\n"]}
1
+ {"version":3,"file":"EmailNotificationPanel.js","sourceRoot":"","sources":["../../../src/components/Email/EmailNotificationPanel.tsx"],"names":[],"mappings":";AAEA,OAAO,EACL,IAAI,EACJ,YAAY,EACZ,YAAY,EACZ,QAAQ,EACR,kBAAkB,EACnB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,KAAK,QAAQ,MAAM,mEAAmE,CAAC;AAC9F,OAAO,EAAE,kBAAkB,EAAE,MAAM,gEAAgE,CAAC;AAGpG,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAEtD,YAAY,CAAC,QAAQ,CAAC,CAAC;AAEvB,MAAM,CAAC,MAAM,0BAA0B,GAEnC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,SAAS,EAAE,EAAE,EAAE;IAC7C,MAAM,EACJ,IAAI,EAAE,EAAE,MAAM,EAAE,EACjB,GAAG,QAAQ,EAAE,CAAC;IACf,OAAO,CACL,MAAC,YAAY,IAAC,EAAE,EAAE,YAAY,KAAM,SAAS,EAAE,IAAI,EAAC,GAAG,EAAC,eAAe,EAAE,MAAM,CAAC,KAAK,aACnF,KAAC,IAAI,IAAC,IAAI,EAAC,YAAY,GAAG,EAE1B,KAAC,oBAAoB,IAAC,OAAO,EAAC,QAAQ,YAAE,KAAK,GAAwB,EAErE,KAAC,kBAAkB,cAAE,KAAK,GAAsB,IACnC,CAChB,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,sBAAsB,GAAkE,CAAC,EAC7F,KAAK,EACL,OAAO,EACP,KAAK,EACL,GAAG,SAAS,EACb,EAAE,EAAE;IACH,OAAO,CACL,KAAC,kBAAkB,IACjB,OAAO,EAAE,KAAK,EACd,MAAM,EAAE,KAAC,0BAA0B,OAAK,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,GAAI,EACjF,OAAO,EAAE,OAAO,GAChB,CACH,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,sBAAsB,CAAC","sourcesContent":["import type { FunctionComponent } from 'react';\n\nimport {\n Icon,\n registerIcon,\n StyledAvatar,\n useTheme,\n VisuallyHiddenText\n} from '@pega/cosmos-react-core';\nimport type { ForwardProps, OmitStrict } from '@pega/cosmos-react-core';\nimport * as mailIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/mail-solid.icon';\nimport { NavigationListItem } from '@pega/cosmos-react-core/lib/components/AppShell/NavigationList';\n\nimport type { EmailNotificationPanelProps } from './Email.types';\nimport { StyledEmailCountIcon } from './Email.styles';\n\nregisterIcon(mailIcon);\n\nexport const EmailNotificationPanelIcon: FunctionComponent<\n OmitStrict<EmailNotificationPanelProps, 'onClick'> & ForwardProps\n> = ({ status, label, count, ...restProps }) => {\n const {\n base: { colors }\n } = useTheme();\n return (\n <StyledAvatar as={StyledAvatar} {...restProps} size='m' backgroundColor={colors.white}>\n <Icon name='mail-solid' />\n\n <StyledEmailCountIcon variant='urgent'>{count}</StyledEmailCountIcon>\n\n <VisuallyHiddenText>{label}</VisuallyHiddenText>\n </StyledAvatar>\n );\n};\n\nconst EmailNotificationPanel: FunctionComponent<EmailNotificationPanelProps & ForwardProps> = ({\n label,\n onClick,\n count,\n ...restProps\n}) => {\n return (\n <NavigationListItem\n primary={label}\n visual={<EmailNotificationPanelIcon {...restProps} count={count} label={label} />}\n onClick={onClick}\n />\n );\n};\n\nexport default EmailNotificationPanel;\n"]}
@@ -1,6 +1,6 @@
1
- import { FunctionComponent, ReactNode } from 'react';
2
- import { ComboBoxProps, NoChildrenProp, FormControlProps } from '@pega/cosmos-react-core';
3
- import { EmailComposerProps, EmailUser } from './Email.types';
1
+ import type { FunctionComponent, ReactNode } from 'react';
2
+ import type { ComboBoxProps, NoChildrenProp, FormControlProps } from '@pega/cosmos-react-core';
3
+ import type { EmailComposerProps, EmailUser } from './Email.types';
4
4
  export interface EmailSelectorProps extends NoChildrenProp {
5
5
  /** participants */
6
6
  participants: EmailComposerProps['participants'];
@@ -1 +1 @@
1
- {"version":3,"file":"EmailSelector.d.ts","sourceRoot":"","sources":["../../../src/components/Email/EmailSelector.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAkC,SAAS,EAAE,MAAM,OAAO,CAAC;AAErF,OAAO,EAEL,aAAa,EAGb,cAAc,EAEd,gBAAgB,EAEjB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAE9D,MAAM,WAAW,kBAAmB,SAAQ,cAAc;IACxD,mBAAmB;IACnB,YAAY,EAAE,kBAAkB,CAAC,cAAc,CAAC,CAAC;IACjD,yBAAyB;IACzB,aAAa,EAAE,SAAS,CAAC,cAAc,CAAC,EAAE,CAAC;IAC3C,oBAAoB;IACpB,oBAAoB,EAAE,CAAC,aAAa,EAAE,SAAS,CAAC,cAAc,CAAC,EAAE,EAAE,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC;IAC7F;;;OAGG;IACH,iBAAiB,CAAC,EAAE,kBAAkB,CAAC,mBAAmB,CAAC,CAAC;IAC5D,MAAM,CAAC,EAAE,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IACpC,IAAI,CAAC,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAChC,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,QAAA,MAAM,aAAa,EAAE,iBAAiB,CACpC,kBAAkB,GAAG,IAAI,CAAC,aAAa,EAAE,OAAO,GAAG,MAAM,GAAG,UAAU,CAAC,CA4IxE,CAAC;AAEF,eAAe,aAAa,CAAC"}
1
+ {"version":3,"file":"EmailSelector.d.ts","sourceRoot":"","sources":["../../../src/components/Email/EmailSelector.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAe,SAAS,EAAE,MAAM,OAAO,CAAC;AASvE,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAE/F,OAAO,KAAK,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAEnE,MAAM,WAAW,kBAAmB,SAAQ,cAAc;IACxD,mBAAmB;IACnB,YAAY,EAAE,kBAAkB,CAAC,cAAc,CAAC,CAAC;IACjD,yBAAyB;IACzB,aAAa,EAAE,SAAS,CAAC,cAAc,CAAC,EAAE,CAAC;IAC3C,oBAAoB;IACpB,oBAAoB,EAAE,CAAC,aAAa,EAAE,SAAS,CAAC,cAAc,CAAC,EAAE,EAAE,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC;IAC7F;;;OAGG;IACH,iBAAiB,CAAC,EAAE,kBAAkB,CAAC,mBAAmB,CAAC,CAAC;IAC5D,MAAM,CAAC,EAAE,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IACpC,IAAI,CAAC,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAChC,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,QAAA,MAAM,aAAa,EAAE,iBAAiB,CACpC,kBAAkB,GAAG,IAAI,CAAC,aAAa,EAAE,OAAO,GAAG,MAAM,GAAG,UAAU,CAAC,CA4IxE,CAAC;AAEF,eAAe,aAAa,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"EmailSelector.js","sourceRoot":"","sources":["../../../src/components/Email/EmailSelector.tsx"],"names":[],"mappings":"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","sourcesContent":["import { FunctionComponent, ChangeEvent, useMemo, useState, ReactNode } from 'react';\n\nimport {\n ComboBox,\n ComboBoxProps,\n createStringMatcher,\n menuHelpers,\n NoChildrenProp,\n useI18n,\n FormControlProps,\n useAfterInitialEffect\n} from '@pega/cosmos-react-core';\n\nimport { EmailComposerProps, EmailUser } from './Email.types';\n\nexport interface EmailSelectorProps extends NoChildrenProp {\n /** participants */\n participants: EmailComposerProps['participants'];\n /** default selections */\n selectedItems: EmailUser['emailAddress'][];\n /** selectedItems */\n onSelectedItemChange: (selectedItems: EmailUser['emailAddress'][], label: ReactNode) => void;\n /**\n * Callback to handle external entry validation\n * If returned true considers the entry to be a valid entry\n */\n externalValidator?: EmailComposerProps['externalValidator'];\n status?: FormControlProps['status'];\n info?: FormControlProps['info'];\n compose?: boolean;\n}\n\nconst EmailSelector: FunctionComponent<\n EmailSelectorProps & Pick<ComboBoxProps, 'label' | 'mode' | 'required'>\n> = ({\n participants,\n selectedItems,\n label,\n mode,\n required,\n onSelectedItemChange,\n externalValidator,\n status,\n info,\n compose\n}) => {\n const [filterValue, setFilterValue] = useState('');\n const [emailParticipants, setEmailParticipants] = useState(participants);\n const t = useI18n();\n\n useAfterInitialEffect(() => {\n setEmailParticipants(participants);\n }, [participants]);\n\n const filterRegex = createStringMatcher(filterValue, 'contains');\n\n const emailsToRender = useMemo(() => {\n const filteredItems = (\n filterValue\n ? emailParticipants.filter(({ emailAddress, fullName, shortName }) => {\n return (\n filterRegex.test(emailAddress) ||\n filterRegex.test(fullName) ||\n filterRegex.test(shortName)\n );\n })\n : emailParticipants\n ).map(({ emailAddress, fullName }) => {\n return {\n id: emailAddress,\n primary: fullName,\n secondary: [emailAddress],\n selected: selectedItems.includes(emailAddress)\n };\n });\n\n const isValid = externalValidator?.(filterValue);\n\n return ((filterValue && externalValidator && isValid) || (filterValue && !externalValidator)) &&\n !compose\n ? [\n {\n id: filterValue,\n primary: `${t('use')}: ${filterValue}`,\n selected: selectedItems.includes(filterValue)\n },\n ...filteredItems\n ]\n : filteredItems;\n }, [emailParticipants, selectedItems, filterRegex]);\n\n const toggleSelectedItems = (id: string) => {\n let newSelectedItems = mode === 'single-select' ? [] : [...selectedItems];\n\n if (selectedItems.includes(id)) {\n // Unselect an already selected item\n newSelectedItems = newSelectedItems.filter(value => value !== id);\n } else {\n setFilterValue('');\n const filteredItem = menuHelpers.getItem(emailsToRender, id);\n\n if (!filteredItem?.secondary) {\n // New value addition to the list\n if (!externalValidator) {\n setEmailParticipants([\n ...emailParticipants,\n {\n shortName: '',\n fullName: '',\n emailAddress: filterValue\n }\n ]);\n newSelectedItems = [...newSelectedItems, id];\n } else {\n const isValid = externalValidator?.(filterValue);\n if (isValid) {\n setEmailParticipants([\n ...emailParticipants,\n {\n shortName: '',\n fullName: '',\n emailAddress: filterValue\n }\n ]);\n newSelectedItems = [...newSelectedItems, id];\n }\n }\n } else {\n // Existing value to be selected\n newSelectedItems = [...newSelectedItems, id];\n }\n }\n\n onSelectedItemChange(newSelectedItems, label);\n };\n\n const getSelectedItems = () => {\n if (mode === 'single-select') {\n return { id: selectedItems[0], text: selectedItems[0] };\n }\n return selectedItems.map(value => ({ id: value, text: value }));\n };\n\n const clearSelection = () => {\n onSelectedItemChange([], label);\n };\n\n const comboBoxProps = {\n value: filterValue,\n onChange: (e: ChangeEvent<HTMLInputElement>) => {\n if (!e.target.value) clearSelection();\n setFilterValue(e.target.value);\n },\n onBlur: () => {\n setFilterValue('');\n },\n menu: {\n items: emailsToRender,\n accent: filterRegex,\n onItemClick: toggleSelectedItems\n },\n selected: {\n items: getSelectedItems(),\n onRemove: toggleSelectedItems\n },\n label,\n mode,\n required,\n status,\n info\n };\n\n return <ComboBox {...comboBoxProps} />;\n};\n\nexport default EmailSelector;\n"]}
1
+ {"version":3,"file":"EmailSelector.js","sourceRoot":"","sources":["../../../src/components/Email/EmailSelector.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useMemo, useState } from 'react';\nimport type { FunctionComponent, ChangeEvent, ReactNode } from 'react';\n\nimport {\n ComboBox,\n createStringMatcher,\n menuHelpers,\n useI18n,\n useAfterInitialEffect\n} from '@pega/cosmos-react-core';\nimport type { ComboBoxProps, NoChildrenProp, FormControlProps } from '@pega/cosmos-react-core';\n\nimport type { EmailComposerProps, EmailUser } from './Email.types';\n\nexport interface EmailSelectorProps extends NoChildrenProp {\n /** participants */\n participants: EmailComposerProps['participants'];\n /** default selections */\n selectedItems: EmailUser['emailAddress'][];\n /** selectedItems */\n onSelectedItemChange: (selectedItems: EmailUser['emailAddress'][], label: ReactNode) => void;\n /**\n * Callback to handle external entry validation\n * If returned true considers the entry to be a valid entry\n */\n externalValidator?: EmailComposerProps['externalValidator'];\n status?: FormControlProps['status'];\n info?: FormControlProps['info'];\n compose?: boolean;\n}\n\nconst EmailSelector: FunctionComponent<\n EmailSelectorProps & Pick<ComboBoxProps, 'label' | 'mode' | 'required'>\n> = ({\n participants,\n selectedItems,\n label,\n mode,\n required,\n onSelectedItemChange,\n externalValidator,\n status,\n info,\n compose\n}) => {\n const [filterValue, setFilterValue] = useState('');\n const [emailParticipants, setEmailParticipants] = useState(participants);\n const t = useI18n();\n\n useAfterInitialEffect(() => {\n setEmailParticipants(participants);\n }, [participants]);\n\n const filterRegex = createStringMatcher(filterValue, 'contains');\n\n const emailsToRender = useMemo(() => {\n const filteredItems = (\n filterValue\n ? emailParticipants.filter(({ emailAddress, fullName, shortName }) => {\n return (\n filterRegex.test(emailAddress) ||\n filterRegex.test(fullName) ||\n filterRegex.test(shortName)\n );\n })\n : emailParticipants\n ).map(({ emailAddress, fullName }) => {\n return {\n id: emailAddress,\n primary: fullName,\n secondary: [emailAddress],\n selected: selectedItems.includes(emailAddress)\n };\n });\n\n const isValid = externalValidator?.(filterValue);\n\n return ((filterValue && externalValidator && isValid) || (filterValue && !externalValidator)) &&\n !compose\n ? [\n {\n id: filterValue,\n primary: `${t('use')}: ${filterValue}`,\n selected: selectedItems.includes(filterValue)\n },\n ...filteredItems\n ]\n : filteredItems;\n }, [emailParticipants, selectedItems, filterRegex]);\n\n const toggleSelectedItems = (id: string) => {\n let newSelectedItems = mode === 'single-select' ? [] : [...selectedItems];\n\n if (selectedItems.includes(id)) {\n // Unselect an already selected item\n newSelectedItems = newSelectedItems.filter(value => value !== id);\n } else {\n setFilterValue('');\n const filteredItem = menuHelpers.getItem(emailsToRender, id);\n\n if (!filteredItem?.secondary) {\n // New value addition to the list\n if (!externalValidator) {\n setEmailParticipants([\n ...emailParticipants,\n {\n shortName: '',\n fullName: '',\n emailAddress: filterValue\n }\n ]);\n newSelectedItems = [...newSelectedItems, id];\n } else {\n const isValid = externalValidator?.(filterValue);\n if (isValid) {\n setEmailParticipants([\n ...emailParticipants,\n {\n shortName: '',\n fullName: '',\n emailAddress: filterValue\n }\n ]);\n newSelectedItems = [...newSelectedItems, id];\n }\n }\n } else {\n // Existing value to be selected\n newSelectedItems = [...newSelectedItems, id];\n }\n }\n\n onSelectedItemChange(newSelectedItems, label);\n };\n\n const getSelectedItems = () => {\n if (mode === 'single-select') {\n return { id: selectedItems[0], text: selectedItems[0] };\n }\n return selectedItems.map(value => ({ id: value, text: value }));\n };\n\n const clearSelection = () => {\n onSelectedItemChange([], label);\n };\n\n const comboBoxProps = {\n value: filterValue,\n onChange: (e: ChangeEvent<HTMLInputElement>) => {\n if (!e.target.value) clearSelection();\n setFilterValue(e.target.value);\n },\n onBlur: () => {\n setFilterValue('');\n },\n menu: {\n items: emailsToRender,\n accent: filterRegex,\n onItemClick: toggleSelectedItems\n },\n selected: {\n items: getSelectedItems(),\n onRemove: toggleSelectedItems\n },\n label,\n mode,\n required,\n status,\n info\n };\n\n return <ComboBox {...comboBoxProps} />;\n};\n\nexport default EmailSelector;\n"]}
@@ -1,6 +1,6 @@
1
- import { FunctionComponent } from 'react';
2
- import { ForwardProps } from '@pega/cosmos-react-core';
3
- import { EmailShellProps } from './Email.types';
1
+ import type { FunctionComponent } from 'react';
2
+ import type { ForwardProps } from '@pega/cosmos-react-core';
3
+ import type { EmailShellProps } from './Email.types';
4
4
  declare const EmailShell: FunctionComponent<EmailShellProps & ForwardProps>;
5
5
  export default EmailShell;
6
6
  //# sourceMappingURL=EmailShell.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"EmailShell.d.ts","sourceRoot":"","sources":["../../../src/components/Email/EmailShell.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAyC,MAAM,OAAO,CAAC;AAEjF,OAAO,EAAQ,YAAY,EAAqC,MAAM,yBAAyB,CAAC;AAGhG,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAchD,QAAA,MAAM,UAAU,EAAE,iBAAiB,CAAC,eAAe,GAAG,YAAY,CAwFjE,CAAC;AAEF,eAAe,UAAU,CAAC"}
1
+ {"version":3,"file":"EmailShell.d.ts","sourceRoot":"","sources":["../../../src/components/Email/EmailShell.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAmB,MAAM,OAAO,CAAC;AAGhE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAG5D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAcrD,QAAA,MAAM,UAAU,EAAE,iBAAiB,CAAC,eAAe,GAAG,YAAY,CAwFjE,CAAC;AAEF,eAAe,UAAU,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"EmailShell.js","sourceRoot":"","sources":["../../../src/components/Email/EmailShell.tsx"],"names":[],"mappings":"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","sourcesContent":["import { FunctionComponent, forwardRef, PropsWithoutRef, useState } from 'react';\n\nimport { Flex, ForwardProps, Icon, registerIcon, Text, useI18n } from '@pega/cosmos-react-core';\nimport * as mailIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/mail.icon';\n\nimport { EmailShellProps } from './Email.types';\nimport EmailConversation, {\n StyledEmailConversation,\n StyledEmailInConversation,\n StyledUnReadCount\n} from './EmailConversation';\nimport {\n StyledEmailConversationList,\n StyledEmailShell,\n StyledEmailShellHeader\n} from './Email.styles';\n\nregisterIcon(mailIcon);\n\nconst EmailShell: FunctionComponent<EmailShellProps & ForwardProps> = forwardRef(\n function EmailShell(props: PropsWithoutRef<EmailShellProps>, ref: EmailShellProps['ref']) {\n const { conversations, headerProps, autoCollapse = false, ...restProps } = props;\n\n const t = useI18n();\n\n const [activeIndex, setActiveIndex] = useState(0);\n\n const singleConversation = conversations?.length === 1;\n\n const renderConversations = () => {\n if (!conversations) return;\n\n if (singleConversation) {\n const conversation = conversations[0];\n return (\n <StyledEmailConversation\n singleConversation={singleConversation}\n showHeader={!!headerProps}\n >\n {!!conversation.unReadEmailCount && (\n <Text as={StyledUnReadCount} variant='secondary'>\n {t('new_emails_count', [conversation.unReadEmailCount], {\n count: conversation.unReadEmailCount\n })}\n </Text>\n )}\n {conversation.emails?.map(email => {\n return <StyledEmailInConversation key={email.id} {...email} />;\n })}\n </StyledEmailConversation>\n );\n }\n\n // Multiple conversations\n return autoCollapse\n ? conversations?.map((conversation, index) => {\n const { onExpand, isCollapsed, ...rest } = conversation;\n const collapsed = index !== activeIndex;\n return (\n <EmailConversation\n key={conversation.id}\n onExpand={() => {\n setActiveIndex(index);\n if (onExpand) onExpand();\n }}\n isCollapsed={collapsed}\n {...rest}\n />\n );\n })\n : conversations?.map(conversation => {\n return <EmailConversation key={conversation.id} {...conversation} />;\n });\n };\n\n return (\n <Flex\n {...restProps}\n as={StyledEmailShell}\n container={{ direction: 'column', gap: singleConversation ? undefined : 1 }}\n ref={ref}\n singleConversation={singleConversation}\n >\n {headerProps && (\n <Flex\n container={{\n alignItems: 'center',\n justify: 'between',\n pad: 1\n }}\n as={StyledEmailShellHeader}\n >\n <Flex container={{ gap: 1, alignItems: 'center' }}>\n <Icon name='mail' />\n <Text variant='h3'>\n {headerProps?.subject ? `${t('subject')}: ${headerProps?.subject} ` : t('email')}\n </Text>\n </Flex>\n {headerProps?.actions}\n </Flex>\n )}\n <StyledEmailConversationList aria-multiselectable={!autoCollapse}>\n {renderConversations()}\n </StyledEmailConversationList>\n </Flex>\n );\n }\n);\n\nexport default EmailShell;\n"]}
1
+ {"version":3,"file":"EmailShell.js","sourceRoot":"","sources":["../../../src/components/Email/EmailShell.tsx"],"names":[],"mappings":"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","sourcesContent":["import { forwardRef, useState } from 'react';\nimport type { FunctionComponent, PropsWithoutRef } from 'react';\n\nimport { Flex, Icon, registerIcon, Text, useI18n } from '@pega/cosmos-react-core';\nimport type { ForwardProps } from '@pega/cosmos-react-core';\nimport * as mailIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/mail.icon';\n\nimport type { EmailShellProps } from './Email.types';\nimport EmailConversation, {\n StyledEmailConversation,\n StyledEmailInConversation,\n StyledUnReadCount\n} from './EmailConversation';\nimport {\n StyledEmailConversationList,\n StyledEmailShell,\n StyledEmailShellHeader\n} from './Email.styles';\n\nregisterIcon(mailIcon);\n\nconst EmailShell: FunctionComponent<EmailShellProps & ForwardProps> = forwardRef(\n function EmailShell(props: PropsWithoutRef<EmailShellProps>, ref: EmailShellProps['ref']) {\n const { conversations, headerProps, autoCollapse = false, ...restProps } = props;\n\n const t = useI18n();\n\n const [activeIndex, setActiveIndex] = useState(0);\n\n const singleConversation = conversations?.length === 1;\n\n const renderConversations = () => {\n if (!conversations) return;\n\n if (singleConversation) {\n const conversation = conversations[0];\n return (\n <StyledEmailConversation\n singleConversation={singleConversation}\n showHeader={!!headerProps}\n >\n {!!conversation.unReadEmailCount && (\n <Text as={StyledUnReadCount} variant='secondary'>\n {t('new_emails_count', [conversation.unReadEmailCount], {\n count: conversation.unReadEmailCount\n })}\n </Text>\n )}\n {conversation.emails?.map(email => {\n return <StyledEmailInConversation key={email.id} {...email} />;\n })}\n </StyledEmailConversation>\n );\n }\n\n // Multiple conversations\n return autoCollapse\n ? conversations?.map((conversation, index) => {\n const { onExpand, isCollapsed, ...rest } = conversation;\n const collapsed = index !== activeIndex;\n return (\n <EmailConversation\n key={conversation.id}\n onExpand={() => {\n setActiveIndex(index);\n if (onExpand) onExpand();\n }}\n isCollapsed={collapsed}\n {...rest}\n />\n );\n })\n : conversations?.map(conversation => {\n return <EmailConversation key={conversation.id} {...conversation} />;\n });\n };\n\n return (\n <Flex\n {...restProps}\n as={StyledEmailShell}\n container={{ direction: 'column', gap: singleConversation ? undefined : 1 }}\n ref={ref}\n singleConversation={singleConversation}\n >\n {headerProps && (\n <Flex\n container={{\n alignItems: 'center',\n justify: 'between',\n pad: 1\n }}\n as={StyledEmailShellHeader}\n >\n <Flex container={{ gap: 1, alignItems: 'center' }}>\n <Icon name='mail' />\n <Text variant='h3'>\n {headerProps?.subject ? `${t('subject')}: ${headerProps?.subject} ` : t('email')}\n </Text>\n </Flex>\n {headerProps?.actions}\n </Flex>\n )}\n <StyledEmailConversationList aria-multiselectable={!autoCollapse}>\n {renderConversations()}\n </StyledEmailConversationList>\n </Flex>\n );\n }\n);\n\nexport default EmailShell;\n"]}
@@ -1,6 +1,6 @@
1
- import { FunctionComponent } from 'react';
2
- import { ForwardProps } from '@pega/cosmos-react-core';
3
- import { EmailSummaryItemProps } from './Email.types';
1
+ import type { FunctionComponent } from 'react';
2
+ import type { ForwardProps } from '@pega/cosmos-react-core';
3
+ import type { EmailSummaryItemProps } from './Email.types';
4
4
  export declare const StyledMessageAndDate: import("styled-components").StyledComponent<"div", import("styled-components").DefaultTheme, {}, never>;
5
5
  interface StyledEmailSummaryItemProps extends EmailSummaryItemProps {
6
6
  isEmailItemActive: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"EmailSummaryItem.d.ts","sourceRoot":"","sources":["../../../src/components/Email/EmailSummaryItem.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAc,iBAAiB,EAAsB,MAAM,OAAO,CAAC;AAI1E,OAAO,EAEL,YAAY,EAab,MAAM,yBAAyB,CAAC;AAGjC,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAkBtD,eAAO,MAAM,oBAAoB,yGAEhC,CAAC;AAqBF,UAAU,2BAA4B,SAAQ,qBAAqB;IACjE,iBAAiB,EAAE,OAAO,CAAC;CAC5B;AAID,eAAO,MAAM,sBAAsB,gJAiClC,CAAC;AAMF,QAAA,MAAM,gBAAgB,EAAE,iBAAiB,CAAC,qBAAqB,GAAG,YAAY,CAqH7E,CAAC;AAEF,eAAe,gBAAgB,CAAC"}
1
+ {"version":3,"file":"EmailSummaryItem.d.ts","sourceRoot":"","sources":["../../../src/components/Email/EmailSummaryItem.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAa,MAAM,OAAO,CAAC;AAmB1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAG5D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAkB3D,eAAO,MAAM,oBAAoB,yGAEhC,CAAC;AAqBF,UAAU,2BAA4B,SAAQ,qBAAqB;IACjE,iBAAiB,EAAE,OAAO,CAAC;CAC5B;AAID,eAAO,MAAM,sBAAsB,gJAiClC,CAAC;AAMF,QAAA,MAAM,gBAAgB,EAAE,iBAAiB,CAAC,qBAAqB,GAAG,YAAY,CAqH7E,CAAC;AAEF,eAAe,gBAAgB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"EmailSummaryItem.js","sourceRoot":"","sources":["../../../src/components/Email/EmailSummaryItem.tsx"],"names":[],"mappings":"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","sourcesContent":["import { forwardRef, FunctionComponent, ReactNode, useMemo } from 'react';\nimport styled, { css } from 'styled-components';\nimport { mix } from 'polished';\n\nimport {\n defaultThemeProp,\n ForwardProps,\n Text,\n Flex,\n Count,\n Sentiment,\n MetaList,\n DateTimeDisplay,\n Status,\n tryCatch,\n useI18n,\n replaceMatchWithElement,\n Mark,\n createStringMatcher\n} from '@pega/cosmos-react-core';\nimport { StyledMetaList } from '@pega/cosmos-react-core/lib/components/MetaList/MetaList';\n\nimport { EmailSummaryItemProps } from './Email.types';\n\nconst StyledMessage = styled(Flex)<EmailSummaryItemProps>(({ unreadEmailCount, theme }) => {\n return css`\n width: ${theme.base['content-width'].md};\n text-align: start;\n text-overflow: ellipsis;\n overflow: hidden;\n margin-inline-end: ${theme.base.spacing};\n margin-block-end: ${theme.base.spacing};\n ${unreadEmailCount !== undefined &&\n unreadEmailCount > 0 &&\n css`\n color: ${theme.base.palette.interactive};\n `}\n `;\n});\n\nexport const StyledMessageAndDate = styled.div`\n white-space: nowrap;\n`;\n\nconst StyledParticipants = styled(Flex)<EmailSummaryItemProps>(({ unreadEmailCount, theme }) => {\n return css`\n ${unreadEmailCount !== undefined &&\n unreadEmailCount > 0 &&\n css`\n position: relative;\n &::before {\n content: '';\n position: absolute;\n inset-inline: calc(-1.5 * ${theme.base.spacing});\n inset-block-start: calc(0.8 * ${theme.base.spacing});\n width: 0.5rem;\n height: 0.5rem;\n border-radius: 50%;\n background-color: ${theme.base.palette.interactive};\n }\n `}\n `;\n});\ninterface StyledEmailSummaryItemProps extends EmailSummaryItemProps {\n isEmailItemActive: boolean;\n}\n\nconst StyledStatuses = styled.div``;\n\nexport const StyledEmailSummaryItem = styled.li<StyledEmailSummaryItemProps & ForwardProps>(\n ({ theme }) => {\n const hoverColor = tryCatch(() =>\n mix(0.85, theme.base.palette['primary-background'], theme.base.palette.interactive)\n );\n return css`\n width: 100%;\n color: ${theme.base.palette['foreground-color']};\n background-color: ${theme.base.palette['primary-background']};\n padding: ${theme.base.spacing} calc(2 * ${theme.base.spacing});\n outline: none;\n cursor: pointer;\n ${StyledMetaList}, ${StyledMessageAndDate}, ${StyledStatuses} {\n margin-block-start: ${theme.base.spacing};\n }\n & + & {\n margin-inline-start: 0;\n }\n\n &[aria-selected='true'],\n &[data-current='true'] {\n background-color: ${theme.base.palette['secondary-background']};\n }\n\n &:hover,\n &:focus-within {\n background-color: ${hoverColor};\n }\n &:not(:last-child) {\n border-block-end: 0.0625rem solid ${theme.base.palette['border-line']};\n }\n `;\n }\n);\n\nStyledEmailSummaryItem.defaultProps = defaultThemeProp;\nStyledParticipants.defaultProps = defaultThemeProp;\nStyledMessage.defaultProps = defaultThemeProp;\n\nconst EmailSummaryItem: FunctionComponent<EmailSummaryItemProps & ForwardProps> = forwardRef(\n function EmailSummaryItem(\n {\n id,\n activeParticipants,\n sentiment,\n message,\n timeStamp,\n topic,\n urgency,\n active = false,\n onSelect,\n unreadEmailCount,\n drafts,\n undelivered,\n searchQuery,\n ...restProps\n },\n ref: EmailSummaryItemProps['ref']\n ) {\n const t = useI18n();\n const items = useMemo(() => {\n const itemList: ReactNode[] = [];\n\n if (typeof topic === 'string' && topic.length > 0) {\n itemList.push(\n <Status variant='info' key='info'>\n {topic}\n </Status>\n );\n }\n\n if (sentiment) {\n itemList.push(<Sentiment variant={sentiment.variant} labelHidden />);\n }\n\n if (typeof urgency === 'number') {\n itemList.push(<Text variant='secondary'>{`${t('priority')} ${urgency}`}</Text>);\n }\n\n return itemList;\n }, [sentiment, topic, urgency]);\n\n const emailParticipants = useMemo(() => {\n let participants = '';\n if (activeParticipants.length > 0) {\n participants =\n activeParticipants.length === 1\n ? activeParticipants[0].fullName\n : activeParticipants.map(participant => `${participant.shortName}`).join(', ');\n }\n return participants;\n }, [activeParticipants]);\n const itemStatus = `${unreadEmailCount ? `${t('unread')}, ` : ''}${\n undelivered ? `${t('undelivered')}, ` : ''\n }${drafts ? `${t('drafts')}, ` : ''}`;\n return (\n <StyledEmailSummaryItem\n ref={ref}\n {...restProps}\n id={id}\n onClick={() => onSelect(id)}\n onKeyDown={(e: KeyboardEvent) => {\n if (e.key === 'Enter') {\n onSelect(id);\n }\n }}\n aria-selected={active}\n aria-label={`${itemStatus}${emailParticipants}, ${message} ${timeStamp} ${topic} ${\n sentiment?.variant\n } ${t('priority')} ${urgency}`}\n tabIndex={active ? 0 : -1}\n >\n <StyledParticipants\n unreadEmailCount={unreadEmailCount}\n container={{ justify: 'between', alignItems: 'center' }}\n >\n <Text variant='h4'>\n {searchQuery\n ? replaceMatchWithElement(\n emailParticipants,\n createStringMatcher(searchQuery, 'contains', 'ig'),\n match => <Mark>{match}</Mark>\n )\n : emailParticipants}\n </Text>\n {typeof unreadEmailCount === 'number' && unreadEmailCount > 0 && (\n <Count>{unreadEmailCount}</Count>\n )}\n </StyledParticipants>\n <Flex\n container={{\n justify: 'between'\n }}\n as={StyledMessageAndDate}\n >\n <StyledMessage unreadEmailCount={unreadEmailCount}>{message}</StyledMessage>\n <DateTimeDisplay value={timeStamp} variant='date' format='short' />\n </Flex>\n <MetaList items={items} />\n {(undelivered || drafts) && (\n <Flex\n container={{\n justify: 'start',\n gap: 1\n }}\n as={StyledStatuses}\n >\n {undelivered && <Status variant='urgent'>{t('undelivered')}</Status>}\n {/* Passing count as infinity so that translation engine select correct form of draft,\n with [](second argument) as empty so that count is not shown */}\n {drafts && <Status variant='pending'>{t('draft', [], { count: Infinity })}</Status>}\n </Flex>\n )}\n </StyledEmailSummaryItem>\n );\n }\n);\n\nexport default EmailSummaryItem;\n"]}
1
+ {"version":3,"file":"EmailSummaryItem.js","sourceRoot":"","sources":["../../../src/components/Email/EmailSummaryItem.tsx"],"names":[],"mappings":"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","sourcesContent":["import { forwardRef, useMemo } from 'react';\nimport type { FunctionComponent, ReactNode } from 'react';\nimport styled, { css } from 'styled-components';\nimport { mix } from 'polished';\n\nimport {\n defaultThemeProp,\n Text,\n Flex,\n Count,\n Sentiment,\n MetaList,\n DateTimeDisplay,\n Status,\n tryCatch,\n useI18n,\n replaceMatchWithElement,\n Mark,\n createStringMatcher\n} from '@pega/cosmos-react-core';\nimport type { ForwardProps } from '@pega/cosmos-react-core';\nimport { StyledMetaList } from '@pega/cosmos-react-core/lib/components/MetaList/MetaList';\n\nimport type { EmailSummaryItemProps } from './Email.types';\n\nconst StyledMessage = styled(Flex)<EmailSummaryItemProps>(({ unreadEmailCount, theme }) => {\n return css`\n width: ${theme.base['content-width'].md};\n text-align: start;\n text-overflow: ellipsis;\n overflow: hidden;\n margin-inline-end: ${theme.base.spacing};\n margin-block-end: ${theme.base.spacing};\n ${unreadEmailCount !== undefined &&\n unreadEmailCount > 0 &&\n css`\n color: ${theme.base.palette.interactive};\n `}\n `;\n});\n\nexport const StyledMessageAndDate = styled.div`\n white-space: nowrap;\n`;\n\nconst StyledParticipants = styled(Flex)<EmailSummaryItemProps>(({ unreadEmailCount, theme }) => {\n return css`\n ${unreadEmailCount !== undefined &&\n unreadEmailCount > 0 &&\n css`\n position: relative;\n &::before {\n content: '';\n position: absolute;\n inset-inline: calc(-1.5 * ${theme.base.spacing});\n inset-block-start: calc(0.8 * ${theme.base.spacing});\n width: 0.5rem;\n height: 0.5rem;\n border-radius: 50%;\n background-color: ${theme.base.palette.interactive};\n }\n `}\n `;\n});\ninterface StyledEmailSummaryItemProps extends EmailSummaryItemProps {\n isEmailItemActive: boolean;\n}\n\nconst StyledStatuses = styled.div``;\n\nexport const StyledEmailSummaryItem = styled.li<StyledEmailSummaryItemProps & ForwardProps>(\n ({ theme }) => {\n const hoverColor = tryCatch(() =>\n mix(0.85, theme.base.palette['primary-background'], theme.base.palette.interactive)\n );\n return css`\n width: 100%;\n color: ${theme.base.palette['foreground-color']};\n background-color: ${theme.base.palette['primary-background']};\n padding: ${theme.base.spacing} calc(2 * ${theme.base.spacing});\n outline: none;\n cursor: pointer;\n ${StyledMetaList}, ${StyledMessageAndDate}, ${StyledStatuses} {\n margin-block-start: ${theme.base.spacing};\n }\n & + & {\n margin-inline-start: 0;\n }\n\n &[aria-selected='true'],\n &[data-current='true'] {\n background-color: ${theme.base.palette['secondary-background']};\n }\n\n &:hover,\n &:focus-within {\n background-color: ${hoverColor};\n }\n &:not(:last-child) {\n border-block-end: 0.0625rem solid ${theme.base.palette['border-line']};\n }\n `;\n }\n);\n\nStyledEmailSummaryItem.defaultProps = defaultThemeProp;\nStyledParticipants.defaultProps = defaultThemeProp;\nStyledMessage.defaultProps = defaultThemeProp;\n\nconst EmailSummaryItem: FunctionComponent<EmailSummaryItemProps & ForwardProps> = forwardRef(\n function EmailSummaryItem(\n {\n id,\n activeParticipants,\n sentiment,\n message,\n timeStamp,\n topic,\n urgency,\n active = false,\n onSelect,\n unreadEmailCount,\n drafts,\n undelivered,\n searchQuery,\n ...restProps\n },\n ref: EmailSummaryItemProps['ref']\n ) {\n const t = useI18n();\n const items = useMemo(() => {\n const itemList: ReactNode[] = [];\n\n if (typeof topic === 'string' && topic.length > 0) {\n itemList.push(\n <Status variant='info' key='info'>\n {topic}\n </Status>\n );\n }\n\n if (sentiment) {\n itemList.push(<Sentiment variant={sentiment.variant} labelHidden />);\n }\n\n if (typeof urgency === 'number') {\n itemList.push(<Text variant='secondary'>{`${t('priority')} ${urgency}`}</Text>);\n }\n\n return itemList;\n }, [sentiment, topic, urgency]);\n\n const emailParticipants = useMemo(() => {\n let participants = '';\n if (activeParticipants.length > 0) {\n participants =\n activeParticipants.length === 1\n ? activeParticipants[0].fullName\n : activeParticipants.map(participant => `${participant.shortName}`).join(', ');\n }\n return participants;\n }, [activeParticipants]);\n const itemStatus = `${unreadEmailCount ? `${t('unread')}, ` : ''}${\n undelivered ? `${t('undelivered')}, ` : ''\n }${drafts ? `${t('drafts')}, ` : ''}`;\n return (\n <StyledEmailSummaryItem\n ref={ref}\n {...restProps}\n id={id}\n onClick={() => onSelect(id)}\n onKeyDown={(e: KeyboardEvent) => {\n if (e.key === 'Enter') {\n onSelect(id);\n }\n }}\n aria-selected={active}\n aria-label={`${itemStatus}${emailParticipants}, ${message} ${timeStamp} ${topic} ${\n sentiment?.variant\n } ${t('priority')} ${urgency}`}\n tabIndex={active ? 0 : -1}\n >\n <StyledParticipants\n unreadEmailCount={unreadEmailCount}\n container={{ justify: 'between', alignItems: 'center' }}\n >\n <Text variant='h4'>\n {searchQuery\n ? replaceMatchWithElement(\n emailParticipants,\n createStringMatcher(searchQuery, 'contains', 'ig'),\n match => <Mark>{match}</Mark>\n )\n : emailParticipants}\n </Text>\n {typeof unreadEmailCount === 'number' && unreadEmailCount > 0 && (\n <Count>{unreadEmailCount}</Count>\n )}\n </StyledParticipants>\n <Flex\n container={{\n justify: 'between'\n }}\n as={StyledMessageAndDate}\n >\n <StyledMessage unreadEmailCount={unreadEmailCount}>{message}</StyledMessage>\n <DateTimeDisplay value={timeStamp} variant='date' format='short' />\n </Flex>\n <MetaList items={items} />\n {(undelivered || drafts) && (\n <Flex\n container={{\n justify: 'start',\n gap: 1\n }}\n as={StyledStatuses}\n >\n {undelivered && <Status variant='urgent'>{t('undelivered')}</Status>}\n {/* Passing count as infinity so that translation engine select correct form of draft,\n with [](second argument) as empty so that count is not shown */}\n {drafts && <Status variant='pending'>{t('draft', [], { count: Infinity })}</Status>}\n </Flex>\n )}\n </StyledEmailSummaryItem>\n );\n }\n);\n\nexport default EmailSummaryItem;\n"]}
@@ -1,6 +1,6 @@
1
- import { FunctionComponent } from 'react';
2
- import { ForwardProps } from '@pega/cosmos-react-core';
3
- import { EmailSummaryListProps } from './Email.types';
1
+ import type { FunctionComponent } from 'react';
2
+ import type { ForwardProps } from '@pega/cosmos-react-core';
3
+ import type { EmailSummaryListProps } from './Email.types';
4
4
  declare const EmailSummaryList: FunctionComponent<EmailSummaryListProps & ForwardProps>;
5
5
  export default EmailSummaryList;
6
6
  //# sourceMappingURL=EmailSummaryList.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"EmailSummaryList.d.ts","sourceRoot":"","sources":["../../../src/components/Email/EmailSummaryList.tsx"],"names":[],"mappings":"AAAA,OAAO,EAML,iBAAiB,EAElB,MAAM,OAAO,CAAC;AAGf,OAAO,EAKL,YAAY,EAgBb,MAAM,yBAAyB,CAAC;AAGjC,OAAO,EAAyB,qBAAqB,EAAE,MAAM,eAAe,CAAC;AA6C7E,QAAA,MAAM,gBAAgB,EAAE,iBAAiB,CAAC,qBAAqB,GAAG,YAAY,CAsJ7E,CAAC;AAEF,eAAe,gBAAgB,CAAC"}
1
+ {"version":3,"file":"EmailSummaryList.d.ts","sourceRoot":"","sources":["../../../src/components/Email/EmailSummaryList.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAwB/C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAG5D,OAAO,KAAK,EAAyB,qBAAqB,EAAE,MAAM,eAAe,CAAC;AA6ClF,QAAA,MAAM,gBAAgB,EAAE,iBAAiB,CAAC,qBAAqB,GAAG,YAAY,CAsJ7E,CAAC;AAEF,eAAe,gBAAgB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"EmailSummaryList.js","sourceRoot":"","sources":["../../../src/components/Email/EmailSummaryList.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n createRef,\n useMemo,\n useState,\n useEffect,\n forwardRef,\n FunctionComponent,\n useCallback\n} from 'react';\nimport styled, { css } from 'styled-components';\n\nimport {\n Button,\n Count,\n defaultThemeProp,\n Flex,\n ForwardProps,\n Icon,\n registerIcon,\n MenuButton,\n useConsolidatedRef,\n useI18n,\n menuHelpers,\n Progress,\n useItemIntersection,\n usePrevious,\n VisuallyHiddenText,\n EmptyState,\n calculateFontSize,\n StyledText,\n useArrows,\n debounce\n} from '@pega/cosmos-react-core';\nimport * as filterIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/filter.icon';\n\nimport { EmailSummaryItemProps, EmailSummaryListProps } from './Email.types';\nimport EmailSummaryItem from './EmailSummaryItem';\nimport { StyledEmailSummaryList, StyledLoadMore } from './Email.styles';\n\nregisterIcon(filterIcon);\n\nconst StyledEmailSummaryListContainer = styled(Flex)(({ theme }) => {\n return css`\n height: 100%;\n background-color: ${theme.base.palette['primary-background']};\n `;\n});\nStyledEmailSummaryListContainer.defaultProps = defaultThemeProp;\n\nconst StyledEmailSummaryListHeader = styled.div(({ theme }) => {\n return css`\n padding: calc(2 * ${theme.base.spacing}) calc(2 * ${theme.base.spacing}) ${theme.base.spacing};\n `;\n});\nStyledEmailSummaryListHeader.defaultProps = defaultThemeProp;\n\nconst StyledActionWrapper = styled(Flex)(({ theme }) => {\n return css`\n padding-block-start: ${theme.base.spacing};\n `;\n});\nStyledActionWrapper.defaultProps = defaultThemeProp;\n\nconst StyledFilterButton = styled(Button)`\n margin-inline-start: auto;\n`;\n\nconst StyledWorklist = styled(MenuButton)(({ theme }) => {\n const { 'font-size': fontSize, 'font-scale': fontScale } = theme.base;\n const fontSizes = calculateFontSize(fontSize, fontScale);\n return css`\n ${StyledText} {\n font-weight: ${theme.base['font-weight']['semi-bold']};\n font-size: ${fontSizes.m};\n }\n `;\n});\n\nStyledWorklist.defaultProps = defaultThemeProp;\n\nconst EmailSummaryList: FunctionComponent<EmailSummaryListProps & ForwardProps> = forwardRef(\n function EmailSummaryList(\n {\n loading = false,\n onLoadMore,\n categories,\n onCategoryClick,\n items,\n unreadEmailCount,\n filters,\n onFilterChange,\n onItemClick,\n emptyMessage,\n currentItemId,\n selectable = true,\n searchQuery,\n ...restProps\n },\n ref: EmailSummaryListProps['ref']\n ) {\n const t = useI18n();\n const tablistRef = useConsolidatedRef(ref);\n const tabRefs = items.map(() => createRef<HTMLLIElement>());\n const prevEmail = usePrevious(items);\n const [announcement, setAnnouncement] = useState('');\n useArrows(\n tablistRef,\n {\n cycle: true,\n selector: ':scope > li',\n dir: 'up-down',\n updateTabIndex: false\n },\n [items]\n );\n\n const buttonText = useMemo(() => {\n if (categories)\n return (\n menuHelpers.getSelected(categories)[0]?.primary ??\n menuHelpers.flatten(categories)[0].primary\n );\n }, [categories]);\n\n const handleLoadMore = useCallback(\n debounce(() => {\n if (!loading) {\n onLoadMore?.();\n }\n }, 200),\n [loading]\n );\n\n useItemIntersection(tablistRef, items.length - 1, handleLoadMore, ':scope > li');\n\n useEffect(() => {\n if (loading) setAnnouncement(t('loading_email'));\n }, [loading]);\n\n useEffect(() => {\n if (prevEmail) {\n const difference = items.length - prevEmail.length;\n if (difference) setAnnouncement(t('new_emails_count', [difference], { count: difference }));\n }\n }, [items]);\n\n useEffect(() => {\n if (tabRefs.length > 0 && currentItemId) {\n tabRefs[items.findIndex(item => item.id === currentItemId)]?.current?.focus();\n }\n }, [currentItemId]);\n\n return (\n <StyledEmailSummaryListContainer container={{ direction: 'column' }} {...restProps}>\n {!!(categories?.length || searchQuery) && (\n <StyledEmailSummaryListHeader>\n <StyledActionWrapper\n container={{ justify: 'space-between', alignItems: 'center', gap: 0.5 }}\n >\n <Flex item={{ shrink: 1 }}>\n {searchQuery ? (\n <StyledText variant='h3'>{t('search_results')}</StyledText>\n ) : (\n <StyledWorklist\n text={buttonText}\n variant='text'\n popover={{ portal: true }}\n menu={{\n mode: 'single-select',\n items: categories,\n onItemClick: onCategoryClick\n }}\n />\n )}\n </Flex>\n {!searchQuery && typeof unreadEmailCount === 'number' && (\n <Count\n aria-label={t('unread_email_count', [unreadEmailCount], {\n count: unreadEmailCount\n })}\n >\n {unreadEmailCount}\n </Count>\n )}\n {filters && (\n <StyledFilterButton variant='simple' label={t('email_filters')} icon>\n <Icon name='filter' />\n </StyledFilterButton>\n )}\n </StyledActionWrapper>\n </StyledEmailSummaryListHeader>\n )}\n\n {items.length > 0 ? (\n <Flex\n role={selectable ? 'tablist' : undefined}\n container={{ direction: 'column' }}\n as={StyledEmailSummaryList}\n ref={tablistRef}\n >\n <VisuallyHiddenText aria-live='polite'>{announcement}</VisuallyHiddenText>\n {items.map((emailItem, i) => {\n const { id, ...emailItemProps } = emailItem;\n return (\n <EmailSummaryItem\n searchQuery={searchQuery}\n ref={tabRefs[i]}\n id={id}\n key={id}\n {...emailItemProps}\n onSelect={(selectedItemId: EmailSummaryItemProps['id']) => {\n onItemClick(selectedItemId);\n }}\n role={selectable ? 'tab' : undefined}\n active={selectable ? currentItemId === id : undefined}\n />\n );\n })}\n {loading && (\n <Flex container={{ justify: 'center' }} as={StyledLoadMore}>\n <Progress placement='inline' />\n </Flex>\n )}\n </Flex>\n ) : (\n <EmptyState message={emptyMessage} />\n )}\n </StyledEmailSummaryListContainer>\n );\n }\n);\n\nexport default EmailSummaryList;\n"]}
1
+ {"version":3,"file":"EmailSummaryList.js","sourceRoot":"","sources":["../../../src/components/Email/EmailSummaryList.tsx"],"names":[],"mappings":"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","sourcesContent":["import { createRef, useMemo, useState, useEffect, forwardRef, useCallback } from 'react';\nimport type { FunctionComponent } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport {\n Button,\n Count,\n defaultThemeProp,\n Flex,\n Icon,\n registerIcon,\n MenuButton,\n useConsolidatedRef,\n useI18n,\n menuHelpers,\n Progress,\n useItemIntersection,\n usePrevious,\n VisuallyHiddenText,\n EmptyState,\n calculateFontSize,\n StyledText,\n useArrows,\n debounce\n} from '@pega/cosmos-react-core';\nimport type { ForwardProps } from '@pega/cosmos-react-core';\nimport * as filterIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/filter.icon';\n\nimport type { EmailSummaryItemProps, EmailSummaryListProps } from './Email.types';\nimport EmailSummaryItem from './EmailSummaryItem';\nimport { StyledEmailSummaryList, StyledLoadMore } from './Email.styles';\n\nregisterIcon(filterIcon);\n\nconst StyledEmailSummaryListContainer = styled(Flex)(({ theme }) => {\n return css`\n height: 100%;\n background-color: ${theme.base.palette['primary-background']};\n `;\n});\nStyledEmailSummaryListContainer.defaultProps = defaultThemeProp;\n\nconst StyledEmailSummaryListHeader = styled.div(({ theme }) => {\n return css`\n padding: calc(2 * ${theme.base.spacing}) calc(2 * ${theme.base.spacing}) ${theme.base.spacing};\n `;\n});\nStyledEmailSummaryListHeader.defaultProps = defaultThemeProp;\n\nconst StyledActionWrapper = styled(Flex)(({ theme }) => {\n return css`\n padding-block-start: ${theme.base.spacing};\n `;\n});\nStyledActionWrapper.defaultProps = defaultThemeProp;\n\nconst StyledFilterButton = styled(Button)`\n margin-inline-start: auto;\n`;\n\nconst StyledWorklist = styled(MenuButton)(({ theme }) => {\n const { 'font-size': fontSize, 'font-scale': fontScale } = theme.base;\n const fontSizes = calculateFontSize(fontSize, fontScale);\n return css`\n ${StyledText} {\n font-weight: ${theme.base['font-weight']['semi-bold']};\n font-size: ${fontSizes.m};\n }\n `;\n});\n\nStyledWorklist.defaultProps = defaultThemeProp;\n\nconst EmailSummaryList: FunctionComponent<EmailSummaryListProps & ForwardProps> = forwardRef(\n function EmailSummaryList(\n {\n loading = false,\n onLoadMore,\n categories,\n onCategoryClick,\n items,\n unreadEmailCount,\n filters,\n onFilterChange,\n onItemClick,\n emptyMessage,\n currentItemId,\n selectable = true,\n searchQuery,\n ...restProps\n },\n ref: EmailSummaryListProps['ref']\n ) {\n const t = useI18n();\n const tablistRef = useConsolidatedRef(ref);\n const tabRefs = items.map(() => createRef<HTMLLIElement>());\n const prevEmail = usePrevious(items);\n const [announcement, setAnnouncement] = useState('');\n useArrows(\n tablistRef,\n {\n cycle: true,\n selector: ':scope > li',\n dir: 'up-down',\n updateTabIndex: false\n },\n [items]\n );\n\n const buttonText = useMemo(() => {\n if (categories)\n return (\n menuHelpers.getSelected(categories)[0]?.primary ??\n menuHelpers.flatten(categories)[0].primary\n );\n }, [categories]);\n\n const handleLoadMore = useCallback(\n debounce(() => {\n if (!loading) {\n onLoadMore?.();\n }\n }, 200),\n [loading]\n );\n\n useItemIntersection(tablistRef, items.length - 1, handleLoadMore, ':scope > li');\n\n useEffect(() => {\n if (loading) setAnnouncement(t('loading_email'));\n }, [loading]);\n\n useEffect(() => {\n if (prevEmail) {\n const difference = items.length - prevEmail.length;\n if (difference) setAnnouncement(t('new_emails_count', [difference], { count: difference }));\n }\n }, [items]);\n\n useEffect(() => {\n if (tabRefs.length > 0 && currentItemId) {\n tabRefs[items.findIndex(item => item.id === currentItemId)]?.current?.focus();\n }\n }, [currentItemId]);\n\n return (\n <StyledEmailSummaryListContainer container={{ direction: 'column' }} {...restProps}>\n {!!(categories?.length || searchQuery) && (\n <StyledEmailSummaryListHeader>\n <StyledActionWrapper\n container={{ justify: 'space-between', alignItems: 'center', gap: 0.5 }}\n >\n <Flex item={{ shrink: 1 }}>\n {searchQuery ? (\n <StyledText variant='h3'>{t('search_results')}</StyledText>\n ) : (\n <StyledWorklist\n text={buttonText}\n variant='text'\n popover={{ portal: true }}\n menu={{\n mode: 'single-select',\n items: categories,\n onItemClick: onCategoryClick\n }}\n />\n )}\n </Flex>\n {!searchQuery && typeof unreadEmailCount === 'number' && (\n <Count\n aria-label={t('unread_email_count', [unreadEmailCount], {\n count: unreadEmailCount\n })}\n >\n {unreadEmailCount}\n </Count>\n )}\n {filters && (\n <StyledFilterButton variant='simple' label={t('email_filters')} icon>\n <Icon name='filter' />\n </StyledFilterButton>\n )}\n </StyledActionWrapper>\n </StyledEmailSummaryListHeader>\n )}\n\n {items.length > 0 ? (\n <Flex\n role={selectable ? 'tablist' : undefined}\n container={{ direction: 'column' }}\n as={StyledEmailSummaryList}\n ref={tablistRef}\n >\n <VisuallyHiddenText aria-live='polite'>{announcement}</VisuallyHiddenText>\n {items.map((emailItem, i) => {\n const { id, ...emailItemProps } = emailItem;\n return (\n <EmailSummaryItem\n searchQuery={searchQuery}\n ref={tabRefs[i]}\n id={id}\n key={id}\n {...emailItemProps}\n onSelect={(selectedItemId: EmailSummaryItemProps['id']) => {\n onItemClick(selectedItemId);\n }}\n role={selectable ? 'tab' : undefined}\n active={selectable ? currentItemId === id : undefined}\n />\n );\n })}\n {loading && (\n <Flex container={{ justify: 'center' }} as={StyledLoadMore}>\n <Progress placement='inline' />\n </Flex>\n )}\n </Flex>\n ) : (\n <EmptyState message={emptyMessage} />\n )}\n </StyledEmailSummaryListContainer>\n );\n }\n);\n\nexport default EmailSummaryList;\n"]}
@@ -1,6 +1,6 @@
1
- import { FunctionComponent } from 'react';
2
- import { ForwardProps } from '@pega/cosmos-react-core';
3
- import { EntityListProps } from './Email.types';
1
+ import type { FunctionComponent } from 'react';
2
+ import type { ForwardProps } from '@pega/cosmos-react-core';
3
+ import type { EntityListProps } from './Email.types';
4
4
  declare const EntityList: FunctionComponent<EntityListProps & ForwardProps>;
5
5
  export default EntityList;
6
6
  //# sourceMappingURL=EntityList.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"EntityList.d.ts","sourceRoot":"","sources":["../../../src/components/Email/EntityList.tsx"],"names":[],"mappings":"AAAA,OAAO,EAEL,iBAAiB,EAMlB,MAAM,OAAO,CAAC;AAEf,OAAO,EACL,YAAY,EAYb,MAAM,yBAAyB,CAAC;AAKjC,OAAO,EAAoB,eAAe,EAAe,MAAM,eAAe,CAAC;AAE/E,QAAA,MAAM,UAAU,EAAE,iBAAiB,CAAC,eAAe,GAAG,YAAY,CAyGjE,CAAC;AAEF,eAAe,UAAU,CAAC"}
1
+ {"version":3,"file":"EntityList.d.ts","sourceRoot":"","sources":["../../../src/components/Email/EntityList.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAA+B,MAAM,OAAO,CAAC;AAe5E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAK5D,OAAO,KAAK,EAAoB,eAAe,EAAe,MAAM,eAAe,CAAC;AAEpF,QAAA,MAAM,UAAU,EAAE,iBAAiB,CAAC,eAAe,GAAG,YAAY,CAyGjE,CAAC;AAEF,eAAe,UAAU,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"EntityList.js","sourceRoot":"","sources":["../../../src/components/Email/EntityList.tsx"],"names":[],"mappings":";AAAA,OAAO,EACL,UAAU,EAGV,QAAQ,EAER,SAAS,EACT,mBAAmB,EACpB,MAAM,OAAO,CAAC;AAEf,OAAO,EAEL,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,UAAU,EACV,WAAW,EACX,eAAe,EACf,UAAU,EACV,aAAa,EACb,UAAU,EACV,kBAAkB,EACnB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,kBAAkB,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,WAAW,MAAM,eAAe,CAAC;AAGxC,MAAM,UAAU,GAAsD,UAAU,CAC9E,SAAS,UAAU,CACjB,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAoC,EAClE,GAA2B;IAE3B,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IACtD,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,QAAQ,EAA2B,CAAC;IAC9E,MAAM,EAAE,aAAa,EAAE,YAAY,EAAE,GAAG,eAAe,EAAE,CAAC;IAC1D,oDAAoD;IACpD,MAAM,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,GAAG,QAAQ,CAA4B,EAAE,CAAC,CAAC;IACxF,MAAM,CAAC,kBAAkB,EAAE,qBAAqB,CAAC,GAAG,QAAQ,CAAU,KAAK,CAAC,CAAC;IAC7E,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,UAAU,EAAkB,CAAC;IAC/D,MAAM,UAAU,GAAG,kBAAkB,CAAC,YAAY,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC;IAE7E,aAAa,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE;QAC3C,IAAI,WAAW;YAAE,cAAc,CAAC,KAAK,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,mBAAmB,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;QAC9C,QAAQ,EAAE,CAAC,YAAuC,EAAE,EAAE;YACpD,mBAAmB,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC;QAC1C,CAAC;QACD,UAAU,CAAC,OAAO;YAChB,qBAAqB,CAAC,OAAO,CAAC,CAAC;QACjC,CAAC;QACD,OAAO,CAAC,OAAO;YACb,cAAc,CAAC,OAAO,CAAC,CAAC;QAC1B,CAAC;KACF,CAAC,CAAC,CAAC;IAEJ,0BAA0B;IAC1B,MAAM,aAAa,GAAG,CAAC,CAA6B,EAAE,EAAE;QACtD,IAAI,CAAC,CAAC,MAAM,YAAY,WAAW,IAAI,CAAC,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,EAAE,EAAE;YACnE,gBAAgB,CAAC;gBACf,UAAU,EAAE,CAAC,CAAC,MAAM;gBACpB,cAAc,EAAE;oBACd,CAAC,EAAE,CAAC,CAAC,KAAK,GAAG,MAAM,CAAC,OAAO;oBAC3B,CAAC,EAAE,CAAC,CAAC,KAAK,GAAG,MAAM,CAAC,OAAO;iBAC5B;aACF,CAAC,CAAC;YACH,WAAW,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;SAC/B;IACH,CAAC,CAAC;IAEF,MAAM,WAAW,GAAoC,CAAC,aAGrD,EAAE,EAAE;QACH,cAAc,CAAC,KAAK,CAAC,CAAC;QACtB,WAAW,EAAE,WAAW,CAAC,aAAa,CAAC,CAAC;IAC1C,CAAC,CAAC;IAEF,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;QAChC,OAAO,IAAI,CAAC,KAAK;YACf,CAAC,CAAC;gBACE,GAAG,IAAI;gBACP,KAAK,EAAE;gBACL,uDAAuD;gBACvD,KAAC,IAAI,IAAC,SAAS,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,aAAa,EAAE,aAAa,YACtE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE;wBAC7B,OAAO,KAAC,WAAW,IAAuB,MAAM,EAAE,YAAY,CAAC,MAAM,IAA5C,YAAY,CAAC,EAAE,CAAiC,CAAC;oBAC5E,CAAC,CAAC,GACG,CACR;aACF;YACH,CAAC,CAAC,IAAI,CAAC;IACX,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,WAAW;YAAE,aAAa,EAAE,CAAC;;YAC5B,YAAY,EAAE,CAAC;IACtB,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;IAElB,OAAO,CACL,MAAC,IAAI,IAAC,GAAG,EAAE,GAAG,aACX,MAAM,IAAI,CACT,MAAC,UAAU,IAAC,SAAS,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,aACrD,KAAC,IAAI,IAAC,IAAI,EAAE,MAAM,CAAC,IAAI,GAAI,EAC3B,KAAC,IAAI,IAAC,OAAO,EAAC,IAAI,YAAE,MAAM,CAAC,IAAI,GAAQ,IAC5B,CACd,EACA,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CACpB,MAAC,WAAW,eACV,KAAC,gBAAgB,IAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAC,SAAS,GAAG,EACrD,WAAW,IAAI,aAAa,IAAI,CAC/B,KAAC,kBAAkB,IACjB,GAAG,EAAE,UAAU,EACf,cAAc,EAAE,aAAa,EAAE,cAAc,EAC7C,WAAW,EAAE;4BACX,GAAG,WAAW;4BACd,KAAK,EAAE,gBAAgB;4BACvB,OAAO,EAAE,kBAAkB;4BAC3B,WAAW;yBACZ,EACD,UAAU,EAAE,aAAa,CAAC,UAAU,EACpC,IAAI,EAAE,WAAW,GACjB,CACH,IACW,CACf,CAAC,CAAC,CAAC,CACF,KAAC,UAAU,KAAG,CACf,IACI,CACR,CAAC;AACJ,CAAC,CACF,CAAC;AAEF,eAAe,UAAU,CAAC","sourcesContent":["import {\n forwardRef,\n FunctionComponent,\n PropsWithoutRef,\n useState,\n MouseEvent,\n useEffect,\n useImperativeHandle\n} from 'react';\n\nimport {\n ForwardProps,\n Text,\n Flex,\n Icon,\n Card,\n CardHeader,\n CardContent,\n useScrollToggle,\n useElement,\n useOuterEvent,\n EmptyState,\n useConsolidatedRef\n} from '@pega/cosmos-react-core';\n\nimport ContextMenuPopover from './ContextMenuPopover';\nimport { StyledEntityList } from './Email.styles';\nimport EmailEntity from './EmailEntity';\nimport { ContextMenuProps, EntityListProps, TargetProps } from './Email.types';\n\nconst EntityList: FunctionComponent<EntityListProps & ForwardProps> = forwardRef(\n function EntityList(\n { content, header, contextMenu }: PropsWithoutRef<EntityListProps>,\n ref: EntityListProps['ref']\n ) {\n const [popoverOpen, setPopoverOpen] = useState(false);\n const [currentTarget, setCurrentTarget] = useState<TargetProps | undefined>();\n const { disableScroll, enableScroll } = useScrollToggle();\n // Only way to set this is through imperative handle\n const [contextMenuItems, setContextMenuItems] = useState<ContextMenuProps['items']>([]);\n const [contextMenuLoading, setContextMenuLoading] = useState<boolean>(false);\n const [popoverEl, setPopoverEl] = useElement<HTMLDivElement>();\n const popoverRef = useConsolidatedRef(setPopoverEl, contextMenu?.popoverRef);\n\n useOuterEvent('mousedown', [popoverEl], () => {\n if (popoverOpen) setPopoverOpen(false);\n });\n\n useImperativeHandle(contextMenu?.handle, () => ({\n setItems: (ctxMenuItems: ContextMenuProps['items']) => {\n setContextMenuItems(ctxMenuItems || []);\n },\n setLoading(loading) {\n setContextMenuLoading(loading);\n },\n setOpen(visible) {\n setPopoverOpen(visible);\n }\n }));\n\n // Handler for right click\n const onContextMenu = (e: MouseEvent<HTMLDivElement>) => {\n if (e.target instanceof HTMLElement && e.target.textContent?.trim()) {\n setCurrentTarget({\n targetNode: e.target,\n cursorPosition: {\n x: e.pageX - window.scrollX,\n y: e.pageY - window.scrollY\n }\n });\n contextMenu?.onContextMenu(e);\n }\n };\n\n const onItemClick: ContextMenuProps['onItemClick'] = (selectedValue: {\n fieldName: string;\n fieldValue: string;\n }) => {\n setPopoverOpen(false);\n contextMenu?.onItemClick(selectedValue);\n };\n\n const fields = content.map(data => {\n return data.value\n ? {\n ...data,\n value: (\n // Attach the handler only when context menu is enabled\n <Flex container={{ gap: 0.5, wrap: 'wrap' }} onContextMenu={onContextMenu}>\n {data.value.map(entityObject => {\n return <EmailEntity key={entityObject.id} entity={entityObject.entity} />;\n })}\n </Flex>\n )\n }\n : data;\n });\n\n useEffect(() => {\n if (popoverOpen) disableScroll();\n else enableScroll();\n }, [popoverOpen]);\n\n return (\n <Card ref={ref}>\n {header && (\n <CardHeader container={{ alignItems: 'center', gap: 1 }}>\n <Icon name={header.icon} />\n <Text variant='h3'>{header.text}</Text>\n </CardHeader>\n )}\n {content.length > 0 ? (\n <CardContent>\n <StyledEntityList fields={fields} variant='stacked' />\n {contextMenu && currentTarget && (\n <ContextMenuPopover\n ref={popoverRef}\n cursorPosition={currentTarget?.cursorPosition}\n contextMenu={{\n ...contextMenu,\n items: contextMenuItems,\n loading: contextMenuLoading,\n onItemClick\n }}\n targetNode={currentTarget.targetNode}\n show={popoverOpen}\n />\n )}\n </CardContent>\n ) : (\n <EmptyState />\n )}\n </Card>\n );\n }\n);\n\nexport default EntityList;\n"]}
1
+ {"version":3,"file":"EntityList.js","sourceRoot":"","sources":["../../../src/components/Email/EntityList.tsx"],"names":[],"mappings":"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","sourcesContent":["import { forwardRef, useState, useEffect, useImperativeHandle } from 'react';\nimport type { FunctionComponent, PropsWithoutRef, MouseEvent } from 'react';\n\nimport {\n Text,\n Flex,\n Icon,\n Card,\n CardHeader,\n CardContent,\n useScrollToggle,\n useElement,\n useOuterEvent,\n EmptyState,\n useConsolidatedRef\n} from '@pega/cosmos-react-core';\nimport type { ForwardProps } from '@pega/cosmos-react-core';\n\nimport ContextMenuPopover from './ContextMenuPopover';\nimport { StyledEntityList } from './Email.styles';\nimport EmailEntity from './EmailEntity';\nimport type { ContextMenuProps, EntityListProps, TargetProps } from './Email.types';\n\nconst EntityList: FunctionComponent<EntityListProps & ForwardProps> = forwardRef(\n function EntityList(\n { content, header, contextMenu }: PropsWithoutRef<EntityListProps>,\n ref: EntityListProps['ref']\n ) {\n const [popoverOpen, setPopoverOpen] = useState(false);\n const [currentTarget, setCurrentTarget] = useState<TargetProps | undefined>();\n const { disableScroll, enableScroll } = useScrollToggle();\n // Only way to set this is through imperative handle\n const [contextMenuItems, setContextMenuItems] = useState<ContextMenuProps['items']>([]);\n const [contextMenuLoading, setContextMenuLoading] = useState<boolean>(false);\n const [popoverEl, setPopoverEl] = useElement<HTMLDivElement>();\n const popoverRef = useConsolidatedRef(setPopoverEl, contextMenu?.popoverRef);\n\n useOuterEvent('mousedown', [popoverEl], () => {\n if (popoverOpen) setPopoverOpen(false);\n });\n\n useImperativeHandle(contextMenu?.handle, () => ({\n setItems: (ctxMenuItems: ContextMenuProps['items']) => {\n setContextMenuItems(ctxMenuItems || []);\n },\n setLoading(loading) {\n setContextMenuLoading(loading);\n },\n setOpen(visible) {\n setPopoverOpen(visible);\n }\n }));\n\n // Handler for right click\n const onContextMenu = (e: MouseEvent<HTMLDivElement>) => {\n if (e.target instanceof HTMLElement && e.target.textContent?.trim()) {\n setCurrentTarget({\n targetNode: e.target,\n cursorPosition: {\n x: e.pageX - window.scrollX,\n y: e.pageY - window.scrollY\n }\n });\n contextMenu?.onContextMenu(e);\n }\n };\n\n const onItemClick: ContextMenuProps['onItemClick'] = (selectedValue: {\n fieldName: string;\n fieldValue: string;\n }) => {\n setPopoverOpen(false);\n contextMenu?.onItemClick(selectedValue);\n };\n\n const fields = content.map(data => {\n return data.value\n ? {\n ...data,\n value: (\n // Attach the handler only when context menu is enabled\n <Flex container={{ gap: 0.5, wrap: 'wrap' }} onContextMenu={onContextMenu}>\n {data.value.map(entityObject => {\n return <EmailEntity key={entityObject.id} entity={entityObject.entity} />;\n })}\n </Flex>\n )\n }\n : data;\n });\n\n useEffect(() => {\n if (popoverOpen) disableScroll();\n else enableScroll();\n }, [popoverOpen]);\n\n return (\n <Card ref={ref}>\n {header && (\n <CardHeader container={{ alignItems: 'center', gap: 1 }}>\n <Icon name={header.icon} />\n <Text variant='h3'>{header.text}</Text>\n </CardHeader>\n )}\n {content.length > 0 ? (\n <CardContent>\n <StyledEntityList fields={fields} variant='stacked' />\n {contextMenu && currentTarget && (\n <ContextMenuPopover\n ref={popoverRef}\n cursorPosition={currentTarget?.cursorPosition}\n contextMenu={{\n ...contextMenu,\n items: contextMenuItems,\n loading: contextMenuLoading,\n onItemClick\n }}\n targetNode={currentTarget.targetNode}\n show={popoverOpen}\n />\n )}\n </CardContent>\n ) : (\n <EmptyState />\n )}\n </Card>\n );\n }\n);\n\nexport default EntityList;\n"]}
@@ -1,4 +1,4 @@
1
- import { EmailProps } from '../Email.types';
1
+ import type { EmailProps } from '../Email.types';
2
2
  /**
3
3
  * Function to highlight entities in a given html
4
4
  * @param {string} html
@@ -1 +1 @@
1
- {"version":3,"file":"EntityHighlighter.d.ts","sourceRoot":"","sources":["../../../../src/components/Email/utils/EntityHighlighter.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAA2B,MAAM,gBAAgB,CAAC;AAkSrE;;;;;GAKG;AACH,QAAA,MAAM,iBAAiB,SACf,MAAM,iBACG,UAAU,CAAC,wBAAwB,CAAC,KAClD,MAMF,CAAC;AAEF,eAAe,iBAAiB,CAAC"}
1
+ {"version":3,"file":"EntityHighlighter.d.ts","sourceRoot":"","sources":["../../../../src/components/Email/utils/EntityHighlighter.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAA2B,MAAM,gBAAgB,CAAC;AAkS1E;;;;;GAKG;AACH,QAAA,MAAM,iBAAiB,SACf,MAAM,iBACG,UAAU,CAAC,wBAAwB,CAAC,KAClD,MAMF,CAAC;AAEF,eAAe,iBAAiB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"EntityHighlighter.js","sourceRoot":"","sources":["../../../../src/components/Email/utils/EntityHighlighter.ts"],"names":[],"mappings":"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","sourcesContent":["import { TextNode, Element, Node, ParentNode, parse, serialize, Document } from 'parse5';\n\nimport { EmailProps, EntityMatch, MatchRange } from '../Email.types';\n\nconst isParentNode = (node: Node | undefined): node is ParentNode =>\n !!node &&\n node.nodeName !== '#text' &&\n node.nodeName !== '#comment' &&\n node.nodeName !== '#documentType';\n\n/**\n * Function to check if there is nesting in the given ranges\n * @param {MatchRange} range1\n * @param {MatchRange} range2\n * @returns {boolean}\n */\nconst isNesting = (range1: MatchRange, range2: MatchRange): boolean => {\n return (\n (range1.start >= range2.start && range1.end <= range2.end) ||\n (range2.start >= range1.start && range2.end <= range1.end)\n );\n};\n\n/**\n * Function to check if there is an intersection in the ranges\n * @param {MatchRange} range1\n * @param {MatchRange} range2\n * @returns {boolean}\n */\nconst isIntersecting = (range1: MatchRange, range2: MatchRange): boolean => {\n return (\n (range1.start > range2.start && range1.start <= range2.end && range1.end > range2.end) ||\n (range2.start > range1.start && range2.start <= range1.end && range2.end > range1.end)\n );\n};\n\n/**\n * Callback function to sort ranges\n * @param {MatchRange} range1\n * @param {MatchRange} range2\n * @returns {number}\n */\nconst matchSorter = (range1: MatchRange, range2: MatchRange): number => {\n if (range1.start === range2.start) {\n return range2.end - range1.end;\n }\n\n return range1.start - range2.start;\n};\n\n/**\n * Recursive function to generate nested matches structure by inserting it at the right place\n * @param {EntityMatch} match\n * @param {EntityMatch[]} nestedMatches\n * @returns {EntityMatch[]}\n */\nconst insertIntoNestedMatches: (\n match: EntityMatch,\n nestedMatches: EntityMatch[]\n) => EntityMatch[] = (match: EntityMatch, nestedMatches: EntityMatch[]): EntityMatch[] => {\n const updatedNestedMatches = [...nestedMatches];\n let isInserted = false;\n\n for (let index = 0; index < nestedMatches.length; index += 1) {\n const matchInArr = nestedMatches[index];\n\n if (isNesting(match, matchInArr)) {\n if (match.end - match.start <= matchInArr.end - matchInArr.start) {\n // The range of existing match in array is either larger or equal, so new match can be a child.\n if (matchInArr.children && matchInArr.children.length > 0) {\n // Recursive call\n const updatedChildren = insertIntoNestedMatches(match, matchInArr.children);\n // Update matchInArr in the newOverlapsArray\n matchInArr.children = updatedChildren;\n } else {\n matchInArr.children = [match];\n }\n updatedNestedMatches.splice(index, 1, matchInArr);\n isInserted = true;\n break;\n } else {\n // Replace the existing match and make it the child of current match\n updatedNestedMatches.splice(index, 1, { ...match, children: [matchInArr] });\n isInserted = true;\n break;\n }\n }\n\n if (isIntersecting(match, matchInArr)) {\n // Intersection\n // We are only keeping the first match and discarding the following match\n if (match.start < matchInArr.start) {\n updatedNestedMatches.splice(index, 1, match);\n isInserted = true;\n } else {\n isInserted = true;\n }\n break;\n }\n }\n\n if (!isInserted) {\n // Not nesting or intersecting\n updatedNestedMatches.push(match);\n }\n\n return updatedNestedMatches;\n};\n\nconst getConsolidatedDescription = (match: EntityMatch) => {\n const consolidatedDescription: { [name: string]: Set<string> } = {};\n\n match.names?.forEach(name => {\n if (!consolidatedDescription[name]) {\n consolidatedDescription[name] = new Set();\n }\n consolidatedDescription[name].add(match.matchedText);\n });\n\n if (match.children && match.children.length > 0) {\n match.children.forEach(nestedMatch => {\n const nestMatchDesc = getConsolidatedDescription(nestedMatch);\n Object.keys(nestMatchDesc).forEach(key => {\n if (consolidatedDescription[key]) {\n consolidatedDescription[key] = new Set([\n ...consolidatedDescription[key],\n ...nestMatchDesc[key]\n ]);\n } else {\n consolidatedDescription[key] = nestMatchDesc[key];\n }\n });\n });\n }\n\n return consolidatedDescription;\n};\n\nconst highlightEntitiesInTextNode = (\n textNode: TextNode,\n entityMapping: EmailProps['entityHighlightMapping']\n) => {\n const matches: EntityMatch[] = [];\n // Find all matches\n entityMapping?.forEach(mapping => {\n const escapedValue = mapping.value.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\n // TODO - look-behind is not supported in safari at this point\n // So we miss the use case of matching entities staring with non word characters like .5\n // The best regex for webkit browsers is (?<=\\\\W|^)${escapedValue}(?=(\\\\W|$))\n const regExp = new RegExp(`\\\\b${escapedValue}(?=(\\\\W|$))`, 'ig');\n let res;\n // eslint-disable-next-line no-cond-assign\n while ((res = regExp.exec(textNode.value)) !== null) {\n matches.push({\n start: res.index,\n end: res.index + res[0].length,\n matchedText: res[0],\n ...mapping\n });\n }\n });\n\n if (matches.length === 0) {\n // Early exit as there are no matches\n const newSpanNode: Element = {\n nodeName: 'span',\n tagName: 'span',\n parentNode: textNode.parentNode,\n attrs: [],\n namespaceURI: '',\n childNodes: []\n };\n newSpanNode.childNodes.push(textNode);\n return newSpanNode;\n }\n\n matches.sort(matchSorter);\n\n // Handle nesting and intersections\n let nestedMatches: EntityMatch[] = [];\n matches.forEach(match => {\n nestedMatches = insertIntoNestedMatches(match, nestedMatches);\n });\n\n // Wrap matched ranges\n let lastIndex = 0;\n const updatedNodes: Node[] = [];\n nestedMatches.sort(matchSorter);\n nestedMatches.forEach(match => {\n if (match.start !== lastIndex) {\n const newSpanNode: Element = {\n nodeName: 'span',\n tagName: 'span',\n parentNode: textNode.parentNode,\n attrs: [],\n namespaceURI: '',\n childNodes: []\n };\n\n newSpanNode.childNodes.push({\n ...textNode,\n nodeName: '#text',\n value: textNode.value.substring(lastIndex, match.start),\n parentNode: newSpanNode\n });\n\n updatedNodes.push(newSpanNode);\n }\n\n const consolidatedDescription = getConsolidatedDescription(match);\n let consolidatedDescriptionArray;\n if (Object.entries(consolidatedDescription).length === 1) {\n consolidatedDescriptionArray = [`${Object.keys(consolidatedDescription)[0]}`];\n } else {\n consolidatedDescriptionArray = Object.entries(consolidatedDescription).map(([key, value]) => {\n return `${key}: ${[...value].join(', ')}`;\n });\n }\n\n const newMarkNode: Element = {\n nodeName: 'pega-email-entity',\n tagName: 'pega-email-entity',\n parentNode: textNode.parentNode,\n attrs: [\n { name: 'data-variant', value: `${match.variant}` },\n { name: 'data-entity-type', value: match.type },\n { name: 'data-description', value: JSON.stringify(consolidatedDescriptionArray) }\n ],\n namespaceURI: '',\n childNodes: []\n };\n\n newMarkNode.childNodes.push({\n nodeName: '#text',\n value: match.matchedText,\n parentNode: newMarkNode\n });\n\n updatedNodes.push(newMarkNode);\n\n lastIndex = match.end;\n });\n\n if (lastIndex !== textNode.value.length) {\n const newSpanNode: Element = {\n nodeName: 'span',\n tagName: 'span',\n parentNode: textNode.parentNode,\n attrs: [],\n namespaceURI: '',\n childNodes: []\n };\n\n newSpanNode.childNodes.push({\n ...textNode,\n nodeName: '#text',\n value: textNode.value.substring(lastIndex),\n parentNode: newSpanNode\n } as TextNode);\n\n updatedNodes.push(newSpanNode);\n }\n\n return updatedNodes;\n};\n\nconst highlightEntitiesInNode = (\n node: Node,\n entityMapping: EmailProps['entityHighlightMapping']\n) => {\n // Either call self recursively or call mark entities in text\n if (isParentNode(node) && node.childNodes?.length > 0) {\n // Iteratively mark entities to all child nodes\n let newChildNodes: Node[] = [];\n node.childNodes.forEach(childNode => {\n const res = highlightEntitiesInNode(childNode, entityMapping);\n if (Array.isArray(res)) {\n newChildNodes = [...newChildNodes, ...res];\n } else {\n newChildNodes.push(res as Node);\n }\n });\n return { ...node, childNodes: newChildNodes };\n }\n\n if (node.nodeName === '#text') {\n return highlightEntitiesInTextNode(node as TextNode, entityMapping);\n }\n\n return node;\n};\n\n/**\n * Function to highlight entities in a given html\n * @param {string} html\n * @param {EmailProps['entityHighlightMapping']} entityMapping\n * @returns {string}\n */\nconst highlightEntities = (\n html: string,\n entityMapping: EmailProps['entityHighlightMapping']\n): string => {\n const document: Document = parse(html);\n\n const markedDocument = highlightEntitiesInNode(document, entityMapping);\n\n return serialize(markedDocument as Document);\n};\n\nexport default highlightEntities;\n"]}
1
+ {"version":3,"file":"EntityHighlighter.js","sourceRoot":"","sources":["../../../../src/components/Email/utils/EntityHighlighter.ts"],"names":[],"mappings":"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","sourcesContent":["import { parse, serialize } from 'parse5';\nimport type { TextNode, Element, Node, ParentNode, Document } from 'parse5';\n\nimport type { EmailProps, EntityMatch, MatchRange } from '../Email.types';\n\nconst isParentNode = (node: Node | undefined): node is ParentNode =>\n !!node &&\n node.nodeName !== '#text' &&\n node.nodeName !== '#comment' &&\n node.nodeName !== '#documentType';\n\n/**\n * Function to check if there is nesting in the given ranges\n * @param {MatchRange} range1\n * @param {MatchRange} range2\n * @returns {boolean}\n */\nconst isNesting = (range1: MatchRange, range2: MatchRange): boolean => {\n return (\n (range1.start >= range2.start && range1.end <= range2.end) ||\n (range2.start >= range1.start && range2.end <= range1.end)\n );\n};\n\n/**\n * Function to check if there is an intersection in the ranges\n * @param {MatchRange} range1\n * @param {MatchRange} range2\n * @returns {boolean}\n */\nconst isIntersecting = (range1: MatchRange, range2: MatchRange): boolean => {\n return (\n (range1.start > range2.start && range1.start <= range2.end && range1.end > range2.end) ||\n (range2.start > range1.start && range2.start <= range1.end && range2.end > range1.end)\n );\n};\n\n/**\n * Callback function to sort ranges\n * @param {MatchRange} range1\n * @param {MatchRange} range2\n * @returns {number}\n */\nconst matchSorter = (range1: MatchRange, range2: MatchRange): number => {\n if (range1.start === range2.start) {\n return range2.end - range1.end;\n }\n\n return range1.start - range2.start;\n};\n\n/**\n * Recursive function to generate nested matches structure by inserting it at the right place\n * @param {EntityMatch} match\n * @param {EntityMatch[]} nestedMatches\n * @returns {EntityMatch[]}\n */\nconst insertIntoNestedMatches: (\n match: EntityMatch,\n nestedMatches: EntityMatch[]\n) => EntityMatch[] = (match: EntityMatch, nestedMatches: EntityMatch[]): EntityMatch[] => {\n const updatedNestedMatches = [...nestedMatches];\n let isInserted = false;\n\n for (let index = 0; index < nestedMatches.length; index += 1) {\n const matchInArr = nestedMatches[index];\n\n if (isNesting(match, matchInArr)) {\n if (match.end - match.start <= matchInArr.end - matchInArr.start) {\n // The range of existing match in array is either larger or equal, so new match can be a child.\n if (matchInArr.children && matchInArr.children.length > 0) {\n // Recursive call\n const updatedChildren = insertIntoNestedMatches(match, matchInArr.children);\n // Update matchInArr in the newOverlapsArray\n matchInArr.children = updatedChildren;\n } else {\n matchInArr.children = [match];\n }\n updatedNestedMatches.splice(index, 1, matchInArr);\n isInserted = true;\n break;\n } else {\n // Replace the existing match and make it the child of current match\n updatedNestedMatches.splice(index, 1, { ...match, children: [matchInArr] });\n isInserted = true;\n break;\n }\n }\n\n if (isIntersecting(match, matchInArr)) {\n // Intersection\n // We are only keeping the first match and discarding the following match\n if (match.start < matchInArr.start) {\n updatedNestedMatches.splice(index, 1, match);\n isInserted = true;\n } else {\n isInserted = true;\n }\n break;\n }\n }\n\n if (!isInserted) {\n // Not nesting or intersecting\n updatedNestedMatches.push(match);\n }\n\n return updatedNestedMatches;\n};\n\nconst getConsolidatedDescription = (match: EntityMatch) => {\n const consolidatedDescription: { [name: string]: Set<string> } = {};\n\n match.names?.forEach(name => {\n if (!consolidatedDescription[name]) {\n consolidatedDescription[name] = new Set();\n }\n consolidatedDescription[name].add(match.matchedText);\n });\n\n if (match.children && match.children.length > 0) {\n match.children.forEach(nestedMatch => {\n const nestMatchDesc = getConsolidatedDescription(nestedMatch);\n Object.keys(nestMatchDesc).forEach(key => {\n if (consolidatedDescription[key]) {\n consolidatedDescription[key] = new Set([\n ...consolidatedDescription[key],\n ...nestMatchDesc[key]\n ]);\n } else {\n consolidatedDescription[key] = nestMatchDesc[key];\n }\n });\n });\n }\n\n return consolidatedDescription;\n};\n\nconst highlightEntitiesInTextNode = (\n textNode: TextNode,\n entityMapping: EmailProps['entityHighlightMapping']\n) => {\n const matches: EntityMatch[] = [];\n // Find all matches\n entityMapping?.forEach(mapping => {\n const escapedValue = mapping.value.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\n // TODO - look-behind is not supported in safari at this point\n // So we miss the use case of matching entities staring with non word characters like .5\n // The best regex for webkit browsers is (?<=\\\\W|^)${escapedValue}(?=(\\\\W|$))\n const regExp = new RegExp(`\\\\b${escapedValue}(?=(\\\\W|$))`, 'ig');\n let res;\n // eslint-disable-next-line no-cond-assign\n while ((res = regExp.exec(textNode.value)) !== null) {\n matches.push({\n start: res.index,\n end: res.index + res[0].length,\n matchedText: res[0],\n ...mapping\n });\n }\n });\n\n if (matches.length === 0) {\n // Early exit as there are no matches\n const newSpanNode: Element = {\n nodeName: 'span',\n tagName: 'span',\n parentNode: textNode.parentNode,\n attrs: [],\n namespaceURI: '',\n childNodes: []\n };\n newSpanNode.childNodes.push(textNode);\n return newSpanNode;\n }\n\n matches.sort(matchSorter);\n\n // Handle nesting and intersections\n let nestedMatches: EntityMatch[] = [];\n matches.forEach(match => {\n nestedMatches = insertIntoNestedMatches(match, nestedMatches);\n });\n\n // Wrap matched ranges\n let lastIndex = 0;\n const updatedNodes: Node[] = [];\n nestedMatches.sort(matchSorter);\n nestedMatches.forEach(match => {\n if (match.start !== lastIndex) {\n const newSpanNode: Element = {\n nodeName: 'span',\n tagName: 'span',\n parentNode: textNode.parentNode,\n attrs: [],\n namespaceURI: '',\n childNodes: []\n };\n\n newSpanNode.childNodes.push({\n ...textNode,\n nodeName: '#text',\n value: textNode.value.substring(lastIndex, match.start),\n parentNode: newSpanNode\n });\n\n updatedNodes.push(newSpanNode);\n }\n\n const consolidatedDescription = getConsolidatedDescription(match);\n let consolidatedDescriptionArray;\n if (Object.entries(consolidatedDescription).length === 1) {\n consolidatedDescriptionArray = [`${Object.keys(consolidatedDescription)[0]}`];\n } else {\n consolidatedDescriptionArray = Object.entries(consolidatedDescription).map(([key, value]) => {\n return `${key}: ${[...value].join(', ')}`;\n });\n }\n\n const newMarkNode: Element = {\n nodeName: 'pega-email-entity',\n tagName: 'pega-email-entity',\n parentNode: textNode.parentNode,\n attrs: [\n { name: 'data-variant', value: `${match.variant}` },\n { name: 'data-entity-type', value: match.type },\n { name: 'data-description', value: JSON.stringify(consolidatedDescriptionArray) }\n ],\n namespaceURI: '',\n childNodes: []\n };\n\n newMarkNode.childNodes.push({\n nodeName: '#text',\n value: match.matchedText,\n parentNode: newMarkNode\n });\n\n updatedNodes.push(newMarkNode);\n\n lastIndex = match.end;\n });\n\n if (lastIndex !== textNode.value.length) {\n const newSpanNode: Element = {\n nodeName: 'span',\n tagName: 'span',\n parentNode: textNode.parentNode,\n attrs: [],\n namespaceURI: '',\n childNodes: []\n };\n\n newSpanNode.childNodes.push({\n ...textNode,\n nodeName: '#text',\n value: textNode.value.substring(lastIndex),\n parentNode: newSpanNode\n } as TextNode);\n\n updatedNodes.push(newSpanNode);\n }\n\n return updatedNodes;\n};\n\nconst highlightEntitiesInNode = (\n node: Node,\n entityMapping: EmailProps['entityHighlightMapping']\n) => {\n // Either call self recursively or call mark entities in text\n if (isParentNode(node) && node.childNodes?.length > 0) {\n // Iteratively mark entities to all child nodes\n let newChildNodes: Node[] = [];\n node.childNodes.forEach(childNode => {\n const res = highlightEntitiesInNode(childNode, entityMapping);\n if (Array.isArray(res)) {\n newChildNodes = [...newChildNodes, ...res];\n } else {\n newChildNodes.push(res as Node);\n }\n });\n return { ...node, childNodes: newChildNodes };\n }\n\n if (node.nodeName === '#text') {\n return highlightEntitiesInTextNode(node as TextNode, entityMapping);\n }\n\n return node;\n};\n\n/**\n * Function to highlight entities in a given html\n * @param {string} html\n * @param {EmailProps['entityHighlightMapping']} entityMapping\n * @returns {string}\n */\nconst highlightEntities = (\n html: string,\n entityMapping: EmailProps['entityHighlightMapping']\n): string => {\n const document: Document = parse(html);\n\n const markedDocument = highlightEntitiesInNode(document, entityMapping);\n\n return serialize(markedDocument as Document);\n};\n\nexport default highlightEntities;\n"]}
@@ -1,7 +1,7 @@
1
- import { Dispatch, RefObject, SetStateAction } from 'react';
2
- import { InteractionRenderers, MDMap } from '@pega/cosmos-react-rte';
3
- import { AvatarProps, MenuItemProps } from '@pega/cosmos-react-core';
4
- import { BaseDialogProps } from '@pega/cosmos-react-core/lib/components/Dialog/Dialog.types';
1
+ import type { Dispatch, RefObject, SetStateAction } from 'react';
2
+ import type { InteractionRenderers, MDMap } from '@pega/cosmos-react-rte';
3
+ import type { AvatarProps, MenuItemProps } from '@pega/cosmos-react-core';
4
+ import type { BaseDialogProps } from '@pega/cosmos-react-core/lib/components/Dialog/Dialog.types';
5
5
  export interface FeedContextValue {
6
6
  searchTypes?: string[];
7
7
  onSearch?: (e: {
@@ -12,6 +12,12 @@ export interface FeedContextValue {
12
12
  searchResults?: MenuItemProps[];
13
13
  showSearchResults?: boolean;
14
14
  setShowSearchResults?: Dispatch<SetStateAction<boolean>>;
15
+ autopilotInfo: {
16
+ id: string;
17
+ label: string;
18
+ meta?: string;
19
+ description?: string;
20
+ };
15
21
  onAutopilotClick?: (e: {
16
22
  target?: BaseDialogProps['target'];
17
23
  onDismiss?: () => void;
@@ -41,7 +47,6 @@ export interface FeedContextValue {
41
47
  };
42
48
  announce: (announcement: string) => ReturnType<typeof setTimeout>;
43
49
  feedRef?: RefObject<HTMLDivElement>;
44
- enableAutopilot?: boolean;
45
50
  }
46
51
  export declare const FeedContext: import("react").Context<FeedContextValue>;
47
52
  export interface FeedReplyContextValue {
@@ -1 +1 @@
1
- {"version":3,"file":"Feed.context.d.ts","sourceRoot":"","sources":["../../../src/components/Feed/Feed.context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,QAAQ,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAE3E,OAAO,EAAE,oBAAoB,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,4DAA4D,CAAC;AAE7F,MAAM,WAAW,gBAAgB;IAC/B,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE;QAAE,IAAI,EAAE,SAAS,GAAG,KAAK,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IACzF,aAAa,CAAC,EAAE,aAAa,EAAE,CAAC;IAChC,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,oBAAoB,CAAC,EAAE,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC;IACzD,gBAAgB,CAAC,EAAE,CAAC,CAAC,EAAE;QACrB,MAAM,CAAC,EAAE,eAAe,CAAC,QAAQ,CAAC,CAAC;QACnC,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;KACxB,KAAK,GAAG,CAAC,OAAO,GAAG,SAAS,CAAC;IAC9B,cAAc,CAAC,EAAE,CAAC,CAAC,EAAE;QACnB,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,CAAC,EAAE,eAAe,CAAC,QAAQ,CAAC,CAAC;QACnC,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;KAC3B,KAAK,GAAG,CAAC,OAAO,GAAG,SAAS,CAAC;IAC9B,gBAAgB,CAAC,EAAE,CAAC,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IAC3E,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,oBAAoB,CAAC,EAAE,oBAAoB,EAAE,CAAC;IAC9C,WAAW,CAAC,EAAE,KAAK,CAAC;IACpB,QAAQ,EAAE;QACR,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,UAAU,CAAC,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC;QACnC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;QAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,QAAQ,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC;IAClE,OAAO,CAAC,EAAE,SAAS,CAAC,cAAc,CAAC,CAAC;IACpC,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,eAAO,MAAM,WAAW,2CAMtB,CAAC;AAEH,MAAM,WAAW,qBAAqB;IACpC,gBAAgB,CAAC,EAAE,MAAM,IAAI,CAAC;CAC/B;AAED,eAAO,MAAM,gBAAgB,gDAA2C,CAAC"}
1
+ {"version":3,"file":"Feed.context.d.ts","sourceRoot":"","sources":["../../../src/components/Feed/Feed.context.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAEjE,OAAO,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAC1E,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAC1E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4DAA4D,CAAC;AAElG,MAAM,WAAW,gBAAgB;IAC/B,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE;QAAE,IAAI,EAAE,SAAS,GAAG,KAAK,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IACzF,aAAa,CAAC,EAAE,aAAa,EAAE,CAAC;IAChC,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,oBAAoB,CAAC,EAAE,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC;IACzD,aAAa,EAAE;QACb,EAAE,EAAE,MAAM,CAAC;QACX,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC;IACF,gBAAgB,CAAC,EAAE,CAAC,CAAC,EAAE;QACrB,MAAM,CAAC,EAAE,eAAe,CAAC,QAAQ,CAAC,CAAC;QACnC,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;KACxB,KAAK,GAAG,CAAC,OAAO,GAAG,SAAS,CAAC;IAC9B,cAAc,CAAC,EAAE,CAAC,CAAC,EAAE;QACnB,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,CAAC,EAAE,eAAe,CAAC,QAAQ,CAAC,CAAC;QACnC,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;KAC3B,KAAK,GAAG,CAAC,OAAO,GAAG,SAAS,CAAC;IAC9B,gBAAgB,CAAC,EAAE,CAAC,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IAC3E,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,oBAAoB,CAAC,EAAE,oBAAoB,EAAE,CAAC;IAC9C,WAAW,CAAC,EAAE,KAAK,CAAC;IACpB,QAAQ,EAAE;QACR,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,UAAU,CAAC,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC;QACnC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;QAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,QAAQ,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC;IAClE,OAAO,CAAC,EAAE,SAAS,CAAC,cAAc,CAAC,CAAC;CACrC;AAED,eAAO,MAAM,WAAW,2CAUtB,CAAC;AAEH,MAAM,WAAW,qBAAqB;IACpC,gBAAgB,CAAC,EAAE,MAAM,IAAI,CAAC;CAC/B;AAED,eAAO,MAAM,gBAAgB,gDAA2C,CAAC"}
@@ -1,6 +1,10 @@
1
1
  import { createContext } from 'react';
2
2
  export const FeedContext = createContext({
3
3
  searchTypes: [],
4
+ autopilotInfo: {
5
+ id: 'autopilot',
6
+ label: 'Autopilot'
7
+ },
4
8
  userInfo: { username: '', fullname: '' },
5
9
  announce: () => {
6
10
  return -1;
@@ -1 +1 @@
1
- {"version":3,"file":"Feed.context.js","sourceRoot":"","sources":["../../../src/components/Feed/Feed.context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAuC,MAAM,OAAO,CAAC;AAwC3E,MAAM,CAAC,MAAM,WAAW,GAAG,aAAa,CAAmB;IACzD,WAAW,EAAE,EAAE;IACf,QAAQ,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE;IACxC,QAAQ,EAAE,GAAG,EAAE;QACb,OAAO,CAAC,CAAwD,CAAC;IACnE,CAAC;CACF,CAAC,CAAC;AAMH,MAAM,CAAC,MAAM,gBAAgB,GAAG,aAAa,CAAwB,EAAE,CAAC,CAAC","sourcesContent":["import { createContext, Dispatch, RefObject, SetStateAction } from 'react';\n\nimport { InteractionRenderers, MDMap } from '@pega/cosmos-react-rte';\nimport { AvatarProps, MenuItemProps } from '@pega/cosmos-react-core';\nimport { BaseDialogProps } from '@pega/cosmos-react-core/lib/components/Dialog/Dialog.types';\n\nexport interface FeedContextValue {\n searchTypes?: string[];\n onSearch?: (e: { type: 'mention' | 'tag'; search: string; mentionType: string }) => void;\n searchResults?: MenuItemProps[];\n showSearchResults?: boolean;\n setShowSearchResults?: Dispatch<SetStateAction<boolean>>;\n onAutopilotClick?: (e: {\n target?: BaseDialogProps['target'];\n onDismiss?: () => void;\n }) => JSX.Element | undefined;\n onMentionClick?: (e: {\n id: string;\n text: string;\n type: string;\n target?: BaseDialogProps['target'];\n closeGlimpse?: () => void;\n }) => JSX.Element | undefined;\n onMentionPreview?: (e: { id: string; text: string; type: string }) => void;\n onTagClick?: (tag: string) => void;\n interactionRenderers?: InteractionRenderers[];\n markdownMap?: MDMap;\n userInfo: {\n username: string;\n fullname: string;\n avatarSrc?: string;\n userStatus?: AvatarProps['status'];\n meta?: string[];\n timeZone?: string;\n };\n announce: (announcement: string) => ReturnType<typeof setTimeout>;\n feedRef?: RefObject<HTMLDivElement>;\n enableAutopilot?: boolean;\n}\n\nexport const FeedContext = createContext<FeedContextValue>({\n searchTypes: [],\n userInfo: { username: '', fullname: '' },\n announce: () => {\n return -1 as unknown as ReturnType<FeedContextValue['announce']>;\n }\n});\n\nexport interface FeedReplyContextValue {\n onShowReplyInput?: () => void;\n}\n\nexport const FeedReplyContext = createContext<FeedReplyContextValue>({});\n"]}
1
+ {"version":3,"file":"Feed.context.js","sourceRoot":"","sources":["../../../src/components/Feed/Feed.context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AA8CtC,MAAM,CAAC,MAAM,WAAW,GAAG,aAAa,CAAmB;IACzD,WAAW,EAAE,EAAE;IACf,aAAa,EAAE;QACb,EAAE,EAAE,WAAW;QACf,KAAK,EAAE,WAAW;KACnB;IACD,QAAQ,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE;IACxC,QAAQ,EAAE,GAAG,EAAE;QACb,OAAO,CAAC,CAAwD,CAAC;IACnE,CAAC;CACF,CAAC,CAAC;AAMH,MAAM,CAAC,MAAM,gBAAgB,GAAG,aAAa,CAAwB,EAAE,CAAC,CAAC","sourcesContent":["import { createContext } from 'react';\nimport type { Dispatch, RefObject, SetStateAction } from 'react';\n\nimport type { InteractionRenderers, MDMap } from '@pega/cosmos-react-rte';\nimport type { AvatarProps, MenuItemProps } from '@pega/cosmos-react-core';\nimport type { BaseDialogProps } from '@pega/cosmos-react-core/lib/components/Dialog/Dialog.types';\n\nexport interface FeedContextValue {\n searchTypes?: string[];\n onSearch?: (e: { type: 'mention' | 'tag'; search: string; mentionType: string }) => void;\n searchResults?: MenuItemProps[];\n showSearchResults?: boolean;\n setShowSearchResults?: Dispatch<SetStateAction<boolean>>;\n autopilotInfo: {\n id: string;\n label: string;\n meta?: string;\n description?: string;\n };\n onAutopilotClick?: (e: {\n target?: BaseDialogProps['target'];\n onDismiss?: () => void;\n }) => JSX.Element | undefined;\n onMentionClick?: (e: {\n id: string;\n text: string;\n type: string;\n target?: BaseDialogProps['target'];\n closeGlimpse?: () => void;\n }) => JSX.Element | undefined;\n onMentionPreview?: (e: { id: string; text: string; type: string }) => void;\n onTagClick?: (tag: string) => void;\n interactionRenderers?: InteractionRenderers[];\n markdownMap?: MDMap;\n userInfo: {\n username: string;\n fullname: string;\n avatarSrc?: string;\n userStatus?: AvatarProps['status'];\n meta?: string[];\n timeZone?: string;\n };\n announce: (announcement: string) => ReturnType<typeof setTimeout>;\n feedRef?: RefObject<HTMLDivElement>;\n}\n\nexport const FeedContext = createContext<FeedContextValue>({\n searchTypes: [],\n autopilotInfo: {\n id: 'autopilot',\n label: 'Autopilot'\n },\n userInfo: { username: '', fullname: '' },\n announce: () => {\n return -1 as unknown as ReturnType<FeedContextValue['announce']>;\n }\n});\n\nexport interface FeedReplyContextValue {\n onShowReplyInput?: () => void;\n}\n\nexport const FeedReplyContext = createContext<FeedReplyContextValue>({});\n"]}
@@ -1,6 +1,6 @@
1
- import { FC } from 'react';
2
- import { ForwardProps } from '@pega/cosmos-react-core';
3
- import { FeedProps } from './Feed.types';
1
+ import type { FC } from 'react';
2
+ import type { ForwardProps } from '@pega/cosmos-react-core';
3
+ import type { FeedProps } from './Feed.types';
4
4
  declare const Feed: FC<ForwardProps & FeedProps>;
5
5
  export default Feed;
6
6
  //# sourceMappingURL=Feed.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Feed.d.ts","sourceRoot":"","sources":["../../../src/components/Feed/Feed.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAe,EAAE,EAA6D,MAAM,OAAO,CAAC;AAGnG,OAAO,EAOL,YAAY,EAab,MAAM,yBAAyB,CAAC;AASjC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAkDzC,QAAA,MAAM,IAAI,EAAE,EAAE,CAAC,YAAY,GAAG,SAAS,CA0MrC,CAAC;AAEH,eAAe,IAAI,CAAC"}
1
+ {"version":3,"file":"Feed.d.ts","sourceRoot":"","sources":["../../../src/components/Feed/Feed.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAe,EAAE,EAAO,MAAM,OAAO,CAAC;AAuBlD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAS5D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAkD9C,QAAA,MAAM,IAAI,EAAE,EAAE,CAAC,YAAY,GAAG,SAAS,CA6MrC,CAAC;AAEH,eAAe,IAAI,CAAC"}