@bikdotai/bik-component-library 0.0.839-beta.2 → 0.0.839-beta.4

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 (80) hide show
  1. package/dist/cjs/components/BikGiftedChat/GiftedChat/GiftedChat.js +1 -1
  2. package/dist/cjs/components/BikGiftedChat/GiftedChat/GiftedChat.js.map +1 -1
  3. package/dist/cjs/components/WhatsAppTextEditor/WhatsAppTextEditor.js +23 -23
  4. package/dist/cjs/components/WhatsAppTextEditor/WhatsAppTextEditor.js.map +1 -1
  5. package/dist/cjs/components/agent-builder/components/AiTextArea.js +1 -1
  6. package/dist/cjs/components/agent-builder/components/AiTextArea.js.map +1 -1
  7. package/dist/cjs/components/agent-builder/components/ToolInstructionsField.js +2 -2
  8. package/dist/cjs/components/agent-builder/components/ToolInstructionsField.js.map +1 -1
  9. package/dist/cjs/components/bik-chatbot/components/ChatWindow.js +20 -20
  10. package/dist/cjs/components/bik-chatbot/components/ChatWindow.js.map +1 -1
  11. package/dist/cjs/components/button/themes.js +11 -11
  12. package/dist/cjs/components/button/themes.js.map +1 -1
  13. package/dist/cjs/components/input/ChipInput.js +1 -1
  14. package/dist/cjs/components/input/ChipInput.js.map +1 -1
  15. package/dist/cjs/components/input/Input-helper.js +1 -1
  16. package/dist/cjs/components/input/Input-helper.js.map +1 -1
  17. package/dist/cjs/components/input/Input.js +1 -1
  18. package/dist/cjs/components/input/Input.js.map +1 -1
  19. package/dist/cjs/components/plans/SubscriptionPlanSelector.js +5 -5
  20. package/dist/cjs/components/plans/SubscriptionPlanSelector.js.map +1 -1
  21. package/dist/cjs/editor/BikEditor.js +1 -1
  22. package/dist/cjs/editor/BikEditor.js.map +1 -1
  23. package/dist/cjs/editor/BikEditor.utils.js +3 -3
  24. package/dist/cjs/editor/BikEditor.utils.js.map +1 -1
  25. package/dist/cjs/editor/extensions/buildExtensions.js +2 -2
  26. package/dist/cjs/editor/extensions/buildExtensions.js.map +1 -1
  27. package/dist/cjs/icons/Media/Visual/FormkitNeutral.js +2 -0
  28. package/dist/cjs/icons/Media/Visual/FormkitNeutral.js.map +1 -0
  29. package/dist/cjs/icons/index.js +1 -1
  30. package/dist/cjs/index.js +1 -1
  31. package/dist/esm/components/BikGiftedChat/GiftedChat/GiftedChat.js +66 -61
  32. package/dist/esm/components/BikGiftedChat/GiftedChat/GiftedChat.js.map +1 -1
  33. package/dist/esm/components/WhatsAppTextEditor/WhatsAppTextEditor.js +143 -144
  34. package/dist/esm/components/WhatsAppTextEditor/WhatsAppTextEditor.js.map +1 -1
  35. package/dist/esm/components/agent-builder/components/AiTextArea.js +23 -24
  36. package/dist/esm/components/agent-builder/components/AiTextArea.js.map +1 -1
  37. package/dist/esm/components/agent-builder/components/ToolInstructionsField.js +30 -31
  38. package/dist/esm/components/agent-builder/components/ToolInstructionsField.js.map +1 -1
  39. package/dist/esm/components/bik-chatbot/components/ChatWindow.js +53 -54
  40. package/dist/esm/components/bik-chatbot/components/ChatWindow.js.map +1 -1
  41. package/dist/esm/components/button/themes.d.ts +1 -0
  42. package/dist/esm/components/button/themes.js +61 -51
  43. package/dist/esm/components/button/themes.js.map +1 -1
  44. package/dist/esm/components/input/ChipInput.js +40 -41
  45. package/dist/esm/components/input/ChipInput.js.map +1 -1
  46. package/dist/esm/components/input/Input-helper.d.ts +0 -7
  47. package/dist/esm/components/input/Input-helper.js +25 -16
  48. package/dist/esm/components/input/Input-helper.js.map +1 -1
  49. package/dist/esm/components/input/Input.js +58 -60
  50. package/dist/esm/components/input/Input.js.map +1 -1
  51. package/dist/esm/components/input/Input.model.d.ts +0 -1
  52. package/dist/esm/components/plans/SubscriptionPlanSelector.js +40 -42
  53. package/dist/esm/components/plans/SubscriptionPlanSelector.js.map +1 -1
  54. package/dist/esm/editor/BikEditor.js +118 -122
  55. package/dist/esm/editor/BikEditor.js.map +1 -1
  56. package/dist/esm/editor/BikEditor.utils.d.ts +1 -1
  57. package/dist/esm/editor/BikEditor.utils.js +140 -141
  58. package/dist/esm/editor/BikEditor.utils.js.map +1 -1
  59. package/dist/esm/editor/extensions/buildExtensions.js +39 -49
  60. package/dist/esm/editor/extensions/buildExtensions.js.map +1 -1
  61. package/dist/esm/helpers/index.d.ts +0 -1
  62. package/dist/esm/icons/Media/Visual/FormkitNeutral.js +58 -0
  63. package/dist/esm/icons/Media/Visual/FormkitNeutral.js.map +1 -0
  64. package/dist/esm/icons/Media/Visual/index.d.ts +1 -0
  65. package/dist/esm/icons/index.d.ts +1 -1
  66. package/dist/esm/icons/index.js +404 -402
  67. package/dist/esm/icons/index.js.map +1 -1
  68. package/dist/esm/index.js +114 -124
  69. package/dist/esm/index.js.map +1 -1
  70. package/package.json +1 -2
  71. package/dist/cjs/editor/extensions/htmlTagStrip/HtmlTagStripExtension.js +0 -2
  72. package/dist/cjs/editor/extensions/htmlTagStrip/HtmlTagStripExtension.js.map +0 -1
  73. package/dist/cjs/helpers/sanitize.js +0 -2
  74. package/dist/cjs/helpers/sanitize.js.map +0 -1
  75. package/dist/esm/editor/extensions/htmlTagStrip/HtmlTagStripExtension.d.ts +0 -13
  76. package/dist/esm/editor/extensions/htmlTagStrip/HtmlTagStripExtension.js +0 -64
  77. package/dist/esm/editor/extensions/htmlTagStrip/HtmlTagStripExtension.js.map +0 -1
  78. package/dist/esm/helpers/sanitize.d.ts +0 -32
  79. package/dist/esm/helpers/sanitize.js +0 -204
  80. package/dist/esm/helpers/sanitize.js.map +0 -1
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const s=require("react/jsx-runtime"),n=require("react"),_=require("../../../constants/Theme.js"),ee=require("../../../hooks/useWindowSize.js"),te=require("../../TypographyStyle.js"),p=require("../Bubble/types.js"),se=require("./Day.js"),W=require("./messageHelpers.js"),v=require("./scrollHooks.js"),V=require("./types.js"),T=require("./utils.js"),re=require("../../button/Button.js"),ne=l=>l&&typeof l=="object"&&"default"in l?l:{default:l},oe=ne(n),I=204,ie=({text:l,isExpanded:g,onToggle:i})=>{const a=n.useRef(null),[b,A]=n.useState(!1);return n.useEffect(()=>{const y=a.current;if(y){y.style.maxHeight="none";const P=y.scrollHeight>I;y.style.maxHeight=g?"none":`${I}px`,A(P)}},[l,g]),s.jsxs(s.Fragment,{children:[s.jsx("div",{ref:a,style:{maxHeight:g?"none":I,overflow:"hidden"},children:s.jsx(te.BodySecondary,{children:l})}),b&&s.jsx(re.Button,{buttonType:"text",size:"xs",buttonText:g?"Show less":"Read more",onClick:i})]})},le=(l,g)=>{const{messages:i=[],user:a,renderBubble:b,renderAvatar:A,renderDay:y,renderLoading:P,renderChatEmpty:q,listViewProps:O={},renderAvatarOnTop:D=!1,showUserAvatar:j=!1,showAvatarForEveryMessage:L=!1,inverted:ce=!1,messageIdGenerator:B,topThreshold:U=T.TOP_THRESHOLD,appType:u=p.GiftedChatAppType.Bik,maxHeight:E,isActivityMessage:R,...N}=l||{},C=ee.useWindowSize(),Y=n.useRef(null),x=T.normalizeRef(O.ref||g,Y),S=n.useRef({isInitialMount:!0,isUserScrolling:!1,isLoadingOldMessages:!1,isAtBottom:!0,hasTriggeredEndReached:!1,lastMessagesLength:i?.length??0,previousScrollHeight:0,previousScrollTop:0,scrollTimeout:null}),[$,X]=n.useState(new Set),f=n.useMemo(()=>!i||i.length===0?[]:[...i].reverse(),[i]),J=n.useMemo(()=>{const e=[];return f.forEach((o,r)=>{const t=f[r-1];r===0||!T.isSameDay(o,t)?e.push({createdAt:o.createdAt,indices:[r]}):e[e.length-1].indices.push(r)}),e},[f]),G=v.useScrollToBottom(x,S);n.useImperativeHandle(g,()=>x.current),v.useInitialMountScroll(x,S,f.length,G),v.useScrollCleanup(S),v.useRestoreScrollPosition(x,S,f.length),v.useAutoScrollOnNewMessages(x,S,i.length,G),v.useResizeObserverForFirstMessage(i?.[0],S,G,B);const K=v.useScrollHandler(S,O.onEndReached,O.onScroll,U),M=n.useCallback(e=>!!(e&&a&&e.user?._id===a._id),[a]),z=n.useCallback((e,o)=>j?L?!0:!o||(R?R(e):!1)||(R?R(o):!1)||o.user._id!==e.user._id:!1,[j,L,R]),Q=n.useCallback((e,o,r)=>{const t=M(e)?"right":"left",c=o?.user?._id!==e?.user?._id,h=r?.user?._id!==e?.user?._id,w={currentMessage:e,previousMessage:o,nextMessage:r,position:t,user:a,...N};if(b)return b(w);const d=e._id,k=$.has(d);return s.jsx("div",{style:{maxWidth:u===p.GiftedChatAppType.Manifest?"50%":"70%",width:"fit-content",...u===p.GiftedChatAppType.Manifest?{minWidth:"130px"}:{},padding:"8px 12px",borderTopLeftRadius:t==="left"?c?12:2:12,borderTopRightRadius:t==="right"?c?12:2:12,borderBottomLeftRadius:t==="left"?h?12:2:12,borderBottomRightRadius:t==="right"?h?12:2:12,border:t==="left"&&u===p.GiftedChatAppType.Manifest?"1px solid rgb(224, 224, 224)":"none",backgroundColor:t==="right"?u===p.GiftedChatAppType.Manifest?_.COLORS.background.brandTint:_.COLORS.background.brandLight:u===p.GiftedChatAppType.Manifest?_.COLORS.background.pureWhite:_.COLORS.background.inactive,color:_.COLORS.content.primary,wordBreak:"break-word"},children:s.jsx(ie,{text:e.text??"",isExpanded:k,onToggle:()=>X(H=>{const m=new Set(H);return k?m.delete(d):m.add(d),m})})})},[M,a,b,N,$]),F=n.useCallback((e,o,r)=>{if(!z(e,o))return null;const c=M(e)?"right":"left";return A?A({currentMessage:e,previousMessage:o,nextMessage:r,position:c,user:a,renderAvatarOnTop:D,showUserAvatar:j,showAvatarForEveryMessage:L}):null},[z,M,a,D,j,L,A]);return!i||i.length===0?q?s.jsx(s.Fragment,{children:q()}):null:s.jsxs("div",{ref:x,style:{flex:1,overflowY:"auto",overflowX:"hidden",display:"flex",flexDirection:"column",...E?{maxHeight:E,height:E}:{},...O.style},onScroll:K,children:[s.jsx("div",{style:{flex:"1 0 auto"}}),s.jsx("div",{style:{display:"flex",flexDirection:"column",flex:"0 0 auto"},children:J.map((e,o)=>s.jsxs("div",{children:[y?s.jsx("div",{style:{position:"sticky",top:0,zIndex:2},children:y({createdAt:e.createdAt})}):s.jsx(se.Day,{createdAt:e.createdAt,appType:u,scrollRootRef:x}),e.indices.map(r=>{const t=f[r],c=t?.channelId===V.MESSAGE_CHANNELS.SMTP||t?.channelName===V.MESSAGE_CHANNELS.SMTP,h=c?"left":M(t)?"right":"left",w=f[r-1],d=f[r+1],k=W.getMessagePlacement(t,h),H=W.shouldCenterAlign(t),m=t.category===T.Constants.ChatActivity.Category.ACTIVITY&&t.activityType===T.Constants.ChatActivity.Type.PRIVATE_NOTE,Z=t.category===T.Constants.ChatActivity.Category.ACTIVITY&&!m;return s.jsx(oe.default.Fragment,{children:s.jsxs("div",{style:{...C?{margin:"0 4px"}:{},...H?{}:{display:"flex",alignItems:"flex-start"},...u!==p.GiftedChatAppType.Manifest?!C&&h==="right"?{marginLeft:8}:{marginRight:8}:{},...c&&!m&&C?{marginLeft:8,marginRight:8}:{},...c&&m?{marginRight:16}:{},justifyContent:k,marginBottom:c?d?24:0:d?d?.user?._id===t?.user?._id?4:20:0,...Z?{marginLeft:0,marginBottom:0}:{}},children:[!C&&h==="left"&&s.jsx("div",{style:{marginRight:"4px",width:"24px",flexShrink:0},children:F(t,w,d)}),s.jsx("div",{id:`message-bubble-${t._id??`${r}-${B?.()??"id"}`}`,style:u===p.GiftedChatAppType.Manifest?{width:"100%"}:C||c?{display:"flex",flexGrow:1,width:"100%"}:{},children:Q(t,w,d)}),!C&&h==="right"&&s.jsx("div",{style:{marginLeft:"4px",width:"24px",flexShrink:0,alignSelf:"flex-start"},children:F(t,w,d)})]})},t._id??`${r}-${B?.()??"id"}`)})]},`day-group-${o}`))})]})},ae=n.forwardRef(le);exports.default=ae;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const s=require("react/jsx-runtime"),n=require("react"),_=require("../../../constants/Theme.js"),ee=require("../../../hooks/useWindowSize.js"),te=require("../../TypographyStyle.js"),p=require("../Bubble/types.js"),se=require("./Day.js"),W=require("./messageHelpers.js"),C=require("./scrollHooks.js"),V=require("./types.js"),b=require("./utils.js"),re=require("../../button/Button.js"),ne=l=>l&&typeof l=="object"&&"default"in l?l:{default:l},oe=ne(n),I=204,ie=({text:l,isExpanded:g,onToggle:i})=>{const a=n.useRef(null),[A,R]=n.useState(!1);return n.useEffect(()=>{const y=a.current;if(y){y.style.maxHeight="none";const P=y.scrollHeight>I;y.style.maxHeight=g?"none":`${I}px`,R(P)}},[l,g]),s.jsxs(s.Fragment,{children:[s.jsx("div",{ref:a,style:{maxHeight:g?"none":I,overflow:"hidden"},children:s.jsx(te.BodySecondary,{children:l})}),A&&s.jsx(re.Button,{buttonType:"text",size:"xs",buttonText:g?"Show less":"Read more",onClick:i})]})},le=(l,g)=>{const{messages:i=[],user:a,renderBubble:A,renderAvatar:R,renderDay:y,renderLoading:P,renderChatEmpty:q,listViewProps:O={},renderAvatarOnTop:D=!1,showUserAvatar:j=!1,showAvatarForEveryMessage:L=!1,inverted:ce=!1,messageIdGenerator:B,topThreshold:U=b.TOP_THRESHOLD,appType:u=p.GiftedChatAppType.Bik,maxHeight:E,isActivityMessage:M,...N}=l||{},T=ee.useWindowSize(),Y=n.useRef(null),x=b.normalizeRef(O.ref||g,Y),S=n.useRef({isInitialMount:!0,isUserScrolling:!1,isLoadingOldMessages:!1,isAtBottom:!0,hasTriggeredEndReached:!1,lastMessagesLength:i?.length??0,previousScrollHeight:0,previousScrollTop:0,scrollTimeout:null}),[$,X]=n.useState(new Set),f=n.useMemo(()=>!i||i.length===0?[]:[...i].reverse(),[i]),J=n.useMemo(()=>{const e=[];return f.forEach((o,r)=>{const t=f[r-1];r===0||!b.isSameDay(o,t)?e.push({createdAt:o.createdAt,indices:[r]}):e[e.length-1].indices.push(r)}),e},[f]),G=C.useScrollToBottom(x,S);n.useImperativeHandle(g,()=>x.current),C.useInitialMountScroll(x,S,f.length,G),C.useScrollCleanup(S),C.useRestoreScrollPosition(x,S,f.length),C.useAutoScrollOnNewMessages(x,S,i.length,G),C.useResizeObserverForFirstMessage(i?.[0],S,G,B);const K=C.useScrollHandler(S,O.onEndReached,O.onScroll,U),h=n.useCallback(e=>!!(e&&a&&e.user?._id===a._id),[a]),z=n.useCallback((e,o)=>j?L||h(e)?!0:!o||(M?M(e):!1)||(M?M(o):!1)||o.user._id!==e.user._id:!1,[j,L,M,h]),Q=n.useCallback((e,o,r)=>{const t=h(e)?"right":"left",d=o?.user?._id!==e?.user?._id,m=r?.user?._id!==e?.user?._id,w={currentMessage:e,previousMessage:o,nextMessage:r,position:t,user:a,...N};if(A)return A(w);const c=e._id,k=$.has(c);return s.jsx("div",{style:{maxWidth:u===p.GiftedChatAppType.Manifest?"50%":"70%",width:"fit-content",...u===p.GiftedChatAppType.Manifest?{minWidth:"130px"}:{},padding:"8px 12px",borderTopLeftRadius:t==="left"?d?12:2:12,borderTopRightRadius:12,borderBottomLeftRadius:t==="left"?m?12:2:12,borderBottomRightRadius:12,border:t==="left"&&u===p.GiftedChatAppType.Manifest?"1px solid rgb(224, 224, 224)":"none",backgroundColor:t==="right"?u===p.GiftedChatAppType.Manifest?_.COLORS.background.brandTint:_.COLORS.background.brandLight:u===p.GiftedChatAppType.Manifest?_.COLORS.background.pureWhite:_.COLORS.background.inactive,color:_.COLORS.content.primary,wordBreak:"break-word"},children:s.jsx(ie,{text:e.text??"",isExpanded:k,onToggle:()=>X(H=>{const v=new Set(H);return k?v.delete(c):v.add(c),v})})})},[h,a,A,N,$]),F=n.useCallback((e,o,r)=>{if(!z(e,o))return null;const d=h(e)?"right":"left";return R?R({currentMessage:e,previousMessage:o,nextMessage:r,position:d,user:a,renderAvatarOnTop:D,showUserAvatar:j,showAvatarForEveryMessage:L}):null},[z,h,a,D,j,L,R]);return!i||i.length===0?q?s.jsx(s.Fragment,{children:q()}):null:s.jsxs("div",{ref:x,style:{flex:1,overflowY:"auto",overflowX:"hidden",display:"flex",flexDirection:"column",...E?{maxHeight:E,height:E}:{},...O.style},onScroll:K,children:[s.jsx("div",{style:{flex:"1 0 auto"}}),s.jsx("div",{style:{display:"flex",flexDirection:"column",flex:"0 0 auto"},children:J.map((e,o)=>s.jsxs("div",{children:[y?s.jsx("div",{style:{position:"sticky",top:0,zIndex:2},children:y({createdAt:e.createdAt})}):s.jsx(se.Day,{createdAt:e.createdAt,appType:u,scrollRootRef:x}),e.indices.map(r=>{const t=f[r],d=t?.channelId===V.MESSAGE_CHANNELS.SMTP||t?.channelName===V.MESSAGE_CHANNELS.SMTP,m=d?"left":h(t)?"right":"left",w=f[r-1],c=f[r+1],k=W.getMessagePlacement(t,m),H=W.shouldCenterAlign(t),v=t.category===b.Constants.ChatActivity.Category.ACTIVITY&&t.activityType===b.Constants.ChatActivity.Type.PRIVATE_NOTE,Z=t.category===b.Constants.ChatActivity.Category.ACTIVITY&&!v;return s.jsx(oe.default.Fragment,{children:s.jsxs("div",{style:{...T?{margin:"0 4px"}:{},...H?{}:{display:"flex",alignItems:"flex-start"},...u!==p.GiftedChatAppType.Manifest?!T&&m==="right"?{marginLeft:8}:{marginRight:8}:{},...d&&!v&&T?{marginLeft:8,marginRight:8}:{},...d&&v?{marginRight:16}:{},justifyContent:k,marginBottom:d?c?24:0:c?c?.user?._id===t?.user?._id?h(t)?20:4:20:0,...Z?{marginLeft:0,marginBottom:0}:{}},children:[!T&&m==="left"&&s.jsx("div",{style:{marginRight:"4px",width:"24px",flexShrink:0},children:F(t,w,c)}),s.jsx("div",{id:`message-bubble-${t._id??`${r}-${B?.()??"id"}`}`,style:u===p.GiftedChatAppType.Manifest?{width:"100%"}:T||d?{display:"flex",flexGrow:1,width:"100%"}:{},children:Q(t,w,c)}),!T&&m==="right"&&s.jsx("div",{style:{marginLeft:"4px",width:"24px",flexShrink:0,alignSelf:"flex-start"},children:F(t,w,c)})]})},t._id??`${r}-${B?.()??"id"}`)})]},`day-group-${o}`))})]})},ae=n.forwardRef(le);exports.default=ae;
2
2
  //# sourceMappingURL=GiftedChat.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"GiftedChat.js","sources":["../../../../../src/components/BikGiftedChat/GiftedChat/GiftedChat.tsx"],"sourcesContent":["import React, {\n\tforwardRef,\n\tuseCallback,\n\tuseEffect,\n\tuseImperativeHandle,\n\tuseMemo,\n\tuseRef,\n\tuseState,\n} from 'react';\nimport { COLORS } from '../../../constants/Theme';\nimport { useWindowSize } from '../../../hooks/useWindowSize';\nimport { Button } from '../../button';\nimport { BodySecondary } from '../../TypographyStyle';\nimport { BubbleProps, GiftedChatAppType } from '../Bubble/types';\nimport { IMessage } from '../types';\nimport { Day } from './Day';\nimport { getMessagePlacement, shouldCenterAlign } from './messageHelpers';\nimport {\n\tuseAutoScrollOnNewMessages,\n\tuseInitialMountScroll,\n\tuseResizeObserverForFirstMessage,\n\tuseRestoreScrollPosition,\n\tuseScrollCleanup,\n\tuseScrollHandler,\n\tuseScrollToBottom,\n} from './scrollHooks';\nimport { AvatarProps, GiftedChatProps, MESSAGE_CHANNELS } from './types';\nimport { isSameDay, normalizeRef } from './utils';\nimport { Constants, TOP_THRESHOLD } from './utils';\n\nconst COLLAPSED_MAX_HEIGHT = 204;\n\nconst CollapsibleBubbleText: React.FC<{\n\ttext: string;\n\tisExpanded: boolean;\n\tonToggle: () => void;\n}> = ({ text, isExpanded, onToggle }) => {\n\tconst textRef = useRef<HTMLDivElement>(null);\n\tconst [isOverflowing, setIsOverflowing] = useState(false);\n\n\tuseEffect(() => {\n\t\tconst el = textRef.current;\n\t\tif (el) {\n\t\t\t// Temporarily remove max-height to measure true scroll height\n\t\t\tel.style.maxHeight = 'none';\n\t\t\tconst overflows = el.scrollHeight > COLLAPSED_MAX_HEIGHT;\n\t\t\tel.style.maxHeight = isExpanded ? 'none' : `${COLLAPSED_MAX_HEIGHT}px`;\n\t\t\tsetIsOverflowing(overflows);\n\t\t}\n\t}, [text, isExpanded]);\n\n\treturn (\n\t\t<>\n\t\t\t<div\n\t\t\t\tref={textRef}\n\t\t\t\tstyle={{\n\t\t\t\t\tmaxHeight: isExpanded ? 'none' : COLLAPSED_MAX_HEIGHT,\n\t\t\t\t\toverflow: 'hidden',\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t<BodySecondary>{text}</BodySecondary>\n\t\t\t</div>\n\t\t\t{isOverflowing && (\n\t\t\t\t<Button\n\t\t\t\t\tbuttonType=\"text\"\n\t\t\t\t\tsize=\"xs\"\n\t\t\t\t\tbuttonText={isExpanded ? 'Show less' : 'Read more'}\n\t\t\t\t\tonClick={onToggle}\n\t\t\t\t/>\n\t\t\t)}\n\t\t</>\n\t);\n};\n\nconst GiftedChatInner = (\n\tprops: Omit<GiftedChatProps<IMessage>, 'ref'>,\n\tforwardedRef: React.Ref<HTMLDivElement>,\n) => {\n\tconst {\n\t\tmessages = [],\n\t\tuser,\n\t\trenderBubble,\n\t\trenderAvatar,\n\t\trenderDay,\n\t\trenderLoading,\n\t\trenderChatEmpty,\n\t\tlistViewProps = {},\n\t\trenderAvatarOnTop = false,\n\t\tshowUserAvatar = false,\n\t\tshowAvatarForEveryMessage = false,\n\t\tinverted = false,\n\t\tmessageIdGenerator,\n\t\ttopThreshold = TOP_THRESHOLD,\n\t\tappType = GiftedChatAppType.Bik,\n\t\tmaxHeight,\n\t\tisActivityMessage,\n\t\t...extraProps\n\t} = props || {};\n\n\tconst isMobile = useWindowSize();\n\n\tconst internalScrollRef = useRef<HTMLDivElement | null>(null);\n\tconst scrollRef = normalizeRef(\n\t\tlistViewProps.ref || forwardedRef,\n\t\tinternalScrollRef,\n\t);\n\n\tconst scrollState = useRef({\n\t\tisInitialMount: true,\n\t\tisUserScrolling: false,\n\t\tisLoadingOldMessages: false,\n\t\tisAtBottom: true,\n\t\thasTriggeredEndReached: false,\n\t\tlastMessagesLength: messages?.length ?? 0,\n\t\tpreviousScrollHeight: 0,\n\t\tpreviousScrollTop: 0,\n\t\tscrollTimeout: null,\n\t});\n\n\tconst [expandedMessages, setExpandedMessages] = useState<\n\t\tSet<string | number>\n\t>(new Set());\n\n\t// Reverse messages so newest appears last in DOM (natural reading order)\n\tconst reversedMessages = useMemo(() => {\n\t\tif (!messages || messages.length === 0) return [] as IMessage[];\n\t\treturn [...messages].reverse() as IMessage[];\n\t}, [messages]);\n\n\t// Group consecutive same-day messages so each day separator can stick\n\t// within its own section and get pushed out by the next day's separator.\n\tconst dayGroups = useMemo(() => {\n\t\tconst groups: { createdAt: IMessage['createdAt']; indices: number[] }[] =\n\t\t\t[];\n\t\treversedMessages.forEach((message, index) => {\n\t\t\tconst previousMessage = reversedMessages[index - 1];\n\t\t\tif (index === 0 || !isSameDay(message, previousMessage)) {\n\t\t\t\tgroups.push({ createdAt: message.createdAt, indices: [index] });\n\t\t\t} else {\n\t\t\t\tgroups[groups.length - 1].indices.push(index);\n\t\t\t}\n\t\t});\n\t\treturn groups;\n\t}, [reversedMessages]);\n\n\tconst scrollToBottom = useScrollToBottom(scrollRef, scrollState);\n\n\tuseImperativeHandle(forwardedRef, () => scrollRef.current!);\n\n\tuseInitialMountScroll(\n\t\tscrollRef,\n\t\tscrollState,\n\t\treversedMessages.length,\n\t\tscrollToBottom,\n\t);\n\n\tuseScrollCleanup(scrollState);\n\n\tuseRestoreScrollPosition(scrollRef, scrollState, reversedMessages.length);\n\n\tuseAutoScrollOnNewMessages(\n\t\tscrollRef,\n\t\tscrollState,\n\t\tmessages.length,\n\t\tscrollToBottom,\n\t);\n\n\tuseResizeObserverForFirstMessage(\n\t\tmessages?.[0],\n\t\tscrollState,\n\t\tscrollToBottom,\n\t\tmessageIdGenerator,\n\t);\n\n\tconst handleScroll = useScrollHandler(\n\t\tscrollState,\n\t\tlistViewProps.onEndReached,\n\t\tlistViewProps.onScroll,\n\t\ttopThreshold,\n\t);\n\n\t// Check if a message belongs to the current user\n\tconst isUserMessage = useCallback(\n\t\t(message: IMessage) => {\n\t\t\treturn Boolean(message && user && message.user?._id === user._id);\n\t\t},\n\t\t[user],\n\t);\n\n\t// Determine if avatar should be shown for this message\n\tconst shouldShowAvatar = useCallback(\n\t\t(message: IMessage, previousMessage?: IMessage) => {\n\t\t\tif (!showUserAvatar) return false;\n\t\t\tif (showAvatarForEveryMessage) return true;\n\n\t\t\t// Show avatar on the first message in a consecutive sender stack,\n\t\t\t// or when an activity interrupts the stack, or when the current message itself is an activity\n\t\t\treturn (\n\t\t\t\t!previousMessage ||\n\t\t\t\t(isActivityMessage ? isActivityMessage(message) : false) ||\n\t\t\t\t(isActivityMessage ? isActivityMessage(previousMessage) : false) ||\n\t\t\t\tpreviousMessage.user._id !== message.user._id\n\t\t\t);\n\t\t},\n\t\t[showUserAvatar, showAvatarForEveryMessage, isActivityMessage],\n\t);\n\n\t// Render a message bubble (or call custom renderBubble)\n\tconst renderMessageBubble = useCallback(\n\t\t(message: IMessage, previousMessage?: IMessage, nextMessage?: IMessage) => {\n\t\t\tconst position = isUserMessage(message) ? 'right' : 'left';\n\t\t\tconst isTopOfStack = previousMessage?.user?._id !== message?.user?._id;\n\t\t\tconst isBottomOfStack = nextMessage?.user?._id !== message?.user?._id;\n\n\t\t\tconst bubbleProps: BubbleProps<IMessage> = {\n\t\t\t\tcurrentMessage: message,\n\t\t\t\tpreviousMessage,\n\t\t\t\tnextMessage,\n\t\t\t\tposition,\n\t\t\t\tuser,\n\t\t\t\t...extraProps,\n\t\t\t};\n\n\t\t\t// Use custom render function if provided\n\t\t\tif (renderBubble) {\n\t\t\t\treturn renderBubble(bubbleProps);\n\t\t\t}\n\n\t\t\t// Default bubble rendering\n\t\t\tconst messageId = message._id;\n\t\t\tconst isExpanded = expandedMessages.has(messageId);\n\n\t\t\treturn (\n\t\t\t\t<div\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\tmaxWidth: appType === GiftedChatAppType.Manifest ? '50%' : '70%',\n\t\t\t\t\t\twidth: 'fit-content',\n\t\t\t\t\t\t...(appType === GiftedChatAppType.Manifest\n\t\t\t\t\t\t\t? { minWidth: '130px' }\n\t\t\t\t\t\t\t: {}),\n\t\t\t\t\t\tpadding: '8px 12px',\n\t\t\t\t\t\tborderTopLeftRadius:\n\t\t\t\t\t\t\tposition === 'left' ? (isTopOfStack ? 12 : 2) : 12,\n\t\t\t\t\t\tborderTopRightRadius:\n\t\t\t\t\t\t\tposition === 'right' ? (isTopOfStack ? 12 : 2) : 12,\n\t\t\t\t\t\tborderBottomLeftRadius:\n\t\t\t\t\t\t\tposition === 'left' ? (isBottomOfStack ? 12 : 2) : 12,\n\t\t\t\t\t\tborderBottomRightRadius:\n\t\t\t\t\t\t\tposition === 'right' ? (isBottomOfStack ? 12 : 2) : 12,\n\t\t\t\t\t\tborder:\n\t\t\t\t\t\t\tposition === 'left' && appType === GiftedChatAppType.Manifest\n\t\t\t\t\t\t\t\t? '1px solid rgb(224, 224, 224)'\n\t\t\t\t\t\t\t\t: 'none',\n\t\t\t\t\t\tbackgroundColor:\n\t\t\t\t\t\t\tposition === 'right'\n\t\t\t\t\t\t\t\t? appType === GiftedChatAppType.Manifest\n\t\t\t\t\t\t\t\t\t? COLORS.background.brandTint\n\t\t\t\t\t\t\t\t\t: COLORS.background.brandLight\n\t\t\t\t\t\t\t\t: appType === GiftedChatAppType.Manifest\n\t\t\t\t\t\t\t\t? COLORS.background.pureWhite\n\t\t\t\t\t\t\t\t: COLORS.background.inactive,\n\t\t\t\t\t\tcolor: COLORS.content.primary,\n\t\t\t\t\t\twordBreak: 'break-word',\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t<CollapsibleBubbleText\n\t\t\t\t\t\ttext={message.text ?? ''}\n\t\t\t\t\t\tisExpanded={isExpanded}\n\t\t\t\t\t\tonToggle={() =>\n\t\t\t\t\t\t\tsetExpandedMessages((prev) => {\n\t\t\t\t\t\t\t\tconst next = new Set(prev);\n\t\t\t\t\t\t\t\tif (isExpanded) next.delete(messageId);\n\t\t\t\t\t\t\t\telse next.add(messageId);\n\t\t\t\t\t\t\t\treturn next;\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t);\n\t\t},\n\t\t[isUserMessage, user, renderBubble, extraProps, expandedMessages],\n\t);\n\n\t// Render a message avatar (or call custom renderAvatar)\n\tconst renderMessageAvatar = useCallback(\n\t\t(message: IMessage, previousMessage?: IMessage, nextMessage?: IMessage) => {\n\t\t\tconst shouldShow = shouldShowAvatar(message, previousMessage);\n\n\t\t\tif (!shouldShow) return null;\n\n\t\t\tconst position = isUserMessage(message) ? 'right' : 'left';\n\n\t\t\tconst avatarProps: AvatarProps<IMessage> = {\n\t\t\t\tcurrentMessage: message,\n\t\t\t\tpreviousMessage,\n\t\t\t\tnextMessage,\n\t\t\t\tposition,\n\t\t\t\tuser,\n\t\t\t\trenderAvatarOnTop,\n\t\t\t\tshowUserAvatar,\n\t\t\t\tshowAvatarForEveryMessage,\n\t\t\t};\n\n\t\t\treturn renderAvatar ? renderAvatar(avatarProps) : null;\n\t\t},\n\t\t[\n\t\t\tshouldShowAvatar,\n\t\t\tisUserMessage,\n\t\t\tuser,\n\t\t\trenderAvatarOnTop,\n\t\t\tshowUserAvatar,\n\t\t\tshowAvatarForEveryMessage,\n\t\t\trenderAvatar,\n\t\t],\n\t);\n\n\t// Render: Empty State\n\tif (!messages || messages.length === 0) {\n\t\treturn renderChatEmpty ? <>{renderChatEmpty()}</> : null;\n\t}\n\n\treturn (\n\t\t<div\n\t\t\tref={scrollRef as React.RefObject<HTMLDivElement>}\n\t\t\tstyle={{\n\t\t\t\tflex: 1,\n\t\t\t\toverflowY: 'auto',\n\t\t\t\toverflowX: 'hidden',\n\t\t\t\tdisplay: 'flex',\n\t\t\t\tflexDirection: 'column',\n\t\t\t\t...(maxHeight ? { maxHeight, height: maxHeight } : {}),\n\t\t\t\t...listViewProps.style,\n\t\t\t}}\n\t\t\tonScroll={handleScroll}\n\t\t>\n\t\t\t{/* Spacer to push messages to bottom (newest appears last in DOM) */}\n\t\t\t<div style={{ flex: '1 0 auto' }} />\n\n\t\t\t<div\n\t\t\t\tstyle={{\n\t\t\t\t\tdisplay: 'flex',\n\t\t\t\t\tflexDirection: 'column',\n\t\t\t\t\tflex: '0 0 auto',\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{dayGroups.map((group, groupIndex) => (\n\t\t\t\t\t<div key={`day-group-${groupIndex}`}>\n\t\t\t\t\t\t{/* Day separator — sticks to top while this day scrolls past */}\n\t\t\t\t\t\t{renderDay ? (\n\t\t\t\t\t\t\t<div style={{ position: 'sticky', top: 0, zIndex: 2 }}>\n\t\t\t\t\t\t\t\t{renderDay({ createdAt: group.createdAt })}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<Day\n\t\t\t\t\t\t\t\tcreatedAt={group.createdAt}\n\t\t\t\t\t\t\t\tappType={appType}\n\t\t\t\t\t\t\t\tscrollRootRef={scrollRef}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{group.indices.map((index) => {\n\t\t\t\t\t\t\tconst message = reversedMessages[index];\n\t\t\t\t\t\t\tconst isSmtp =\n\t\t\t\t\t\t\t\tmessage?.['channelId'] === MESSAGE_CHANNELS.SMTP ||\n\t\t\t\t\t\t\t\tmessage?.['channelName'] === MESSAGE_CHANNELS.SMTP;\n\t\t\t\t\t\t\tconst position = isSmtp\n\t\t\t\t\t\t\t\t? 'left'\n\t\t\t\t\t\t\t\t: isUserMessage(message)\n\t\t\t\t\t\t\t\t? 'right'\n\t\t\t\t\t\t\t\t: 'left';\n\t\t\t\t\t\t\tconst previousMessage = reversedMessages[index - 1];\n\t\t\t\t\t\t\tconst nextMessage = reversedMessages[index + 1];\n\t\t\t\t\t\t\tconst placement = getMessagePlacement(message, position);\n\t\t\t\t\t\t\tconst isCentered = shouldCenterAlign(message);\n\t\t\t\t\t\t\t// Check if message is a private note\n\t\t\t\t\t\t\tconst isPrivateNote =\n\t\t\t\t\t\t\t\tmessage['category'] ===\n\t\t\t\t\t\t\t\t\tConstants.ChatActivity.Category.ACTIVITY &&\n\t\t\t\t\t\t\t\tmessage['activityType'] ===\n\t\t\t\t\t\t\t\t\tConstants.ChatActivity.Type.PRIVATE_NOTE;\n\t\t\t\t\t\t\tconst isActivity =\n\t\t\t\t\t\t\t\tmessage['category'] ===\n\t\t\t\t\t\t\t\t\tConstants.ChatActivity.Category.ACTIVITY && !isPrivateNote;\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<React.Fragment\n\t\t\t\t\t\t\t\t\tkey={\n\t\t\t\t\t\t\t\t\t\tmessage._id ?? `${index}-${messageIdGenerator?.() ?? 'id'}`\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{/* Message container */}\n\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\t\t\t\t...(isMobile ? { margin: '0 4px' } : {}),\n\t\t\t\t\t\t\t\t\t\t\t...(isCentered\n\t\t\t\t\t\t\t\t\t\t\t\t? {}\n\t\t\t\t\t\t\t\t\t\t\t\t: { display: 'flex', alignItems: 'flex-start' }),\n\t\t\t\t\t\t\t\t\t\t\t...(appType !== GiftedChatAppType.Manifest\n\t\t\t\t\t\t\t\t\t\t\t\t? !isMobile && position === 'right'\n\t\t\t\t\t\t\t\t\t\t\t\t\t? { marginLeft: 8 }\n\t\t\t\t\t\t\t\t\t\t\t\t\t: { marginRight: 8 }\n\t\t\t\t\t\t\t\t\t\t\t\t: {}),\n\t\t\t\t\t\t\t\t\t\t\t...(isSmtp && !isPrivateNote && isMobile\n\t\t\t\t\t\t\t\t\t\t\t\t? { marginLeft: 8, marginRight: 8 }\n\t\t\t\t\t\t\t\t\t\t\t\t: {}),\n\t\t\t\t\t\t\t\t\t\t\t...(isSmtp && isPrivateNote ? { marginRight: 16 } : {}),\n\t\t\t\t\t\t\t\t\t\t\tjustifyContent: placement,\n\t\t\t\t\t\t\t\t\t\t\tmarginBottom: isSmtp\n\t\t\t\t\t\t\t\t\t\t\t\t? // SMTP: flat 24px between mails, no same/different-user split.\n\t\t\t\t\t\t\t\t\t\t\t\t nextMessage\n\t\t\t\t\t\t\t\t\t\t\t\t\t? 24\n\t\t\t\t\t\t\t\t\t\t\t\t\t: 0\n\t\t\t\t\t\t\t\t\t\t\t\t: nextMessage\n\t\t\t\t\t\t\t\t\t\t\t\t? nextMessage?.user?._id === message?.user?._id\n\t\t\t\t\t\t\t\t\t\t\t\t\t? 4\n\t\t\t\t\t\t\t\t\t\t\t\t\t: 20\n\t\t\t\t\t\t\t\t\t\t\t\t: 0,\n\t\t\t\t\t\t\t\t\t\t\t// Activity cards: no left/bottom margin.\n\t\t\t\t\t\t\t\t\t\t\t...(isActivity ? { marginLeft: 0, marginBottom: 0 } : {}),\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{/* Left avatar or placeholder (for mobile, avatar is hidden) */}\n\t\t\t\t\t\t\t\t\t\t{!isMobile && position === 'left' && (\n\t\t\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\t\t\t\t\t\tmarginRight: '4px',\n\t\t\t\t\t\t\t\t\t\t\t\t\twidth: '24px',\n\t\t\t\t\t\t\t\t\t\t\t\t\tflexShrink: 0,\n\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t{renderMessageAvatar(\n\t\t\t\t\t\t\t\t\t\t\t\t\tmessage,\n\t\t\t\t\t\t\t\t\t\t\t\t\tpreviousMessage,\n\t\t\t\t\t\t\t\t\t\t\t\t\tnextMessage,\n\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t)}\n\n\t\t\t\t\t\t\t\t\t\t{/* Message bubble */}\n\t\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\t\tid={`message-bubble-${\n\t\t\t\t\t\t\t\t\t\t\t\tmessage._id ??\n\t\t\t\t\t\t\t\t\t\t\t\t`${index}-${messageIdGenerator?.() ?? 'id'}`\n\t\t\t\t\t\t\t\t\t\t\t}`}\n\t\t\t\t\t\t\t\t\t\t\tstyle={\n\t\t\t\t\t\t\t\t\t\t\t\tappType === GiftedChatAppType.Manifest\n\t\t\t\t\t\t\t\t\t\t\t\t\t? { width: '100%' }\n\t\t\t\t\t\t\t\t\t\t\t\t\t: isMobile || isSmtp\n\t\t\t\t\t\t\t\t\t\t\t\t\t? { display: 'flex', flexGrow: 1, width: '100%' }\n\t\t\t\t\t\t\t\t\t\t\t\t\t: {}\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{renderMessageBubble(\n\t\t\t\t\t\t\t\t\t\t\t\tmessage,\n\t\t\t\t\t\t\t\t\t\t\t\tpreviousMessage,\n\t\t\t\t\t\t\t\t\t\t\t\tnextMessage,\n\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t\t\t\t{/* Right avatar or placeholder (for mobile, avatar is hidden) */}\n\t\t\t\t\t\t\t\t\t\t{!isMobile && position === 'right' && (\n\t\t\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\t\t\t\t\t\tmarginLeft: '4px',\n\t\t\t\t\t\t\t\t\t\t\t\t\twidth: '24px',\n\t\t\t\t\t\t\t\t\t\t\t\t\tflexShrink: 0,\n\t\t\t\t\t\t\t\t\t\t\t\t\talignSelf: 'flex-start',\n\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t{renderMessageAvatar(\n\t\t\t\t\t\t\t\t\t\t\t\t\tmessage,\n\t\t\t\t\t\t\t\t\t\t\t\t\tpreviousMessage,\n\t\t\t\t\t\t\t\t\t\t\t\t\tnextMessage,\n\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</React.Fragment>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t})}\n\t\t\t\t\t</div>\n\t\t\t\t))}\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\nexport default forwardRef<HTMLDivElement, GiftedChatProps<IMessage>>(\n\tGiftedChatInner,\n);\n"],"names":["COLLAPSED_MAX_HEIGHT","CollapsibleBubbleText","text","isExpanded","onToggle","textRef","useRef","isOverflowing","setIsOverflowing","useState","useEffect","el","overflows","jsxs","Fragment","jsx","BodySecondary","Button","GiftedChatInner","props","forwardedRef","messages","user","renderBubble","renderAvatar","renderDay","renderLoading","renderChatEmpty","listViewProps","renderAvatarOnTop","showUserAvatar","showAvatarForEveryMessage","inverted","messageIdGenerator","topThreshold","TOP_THRESHOLD","appType","GiftedChatAppType","maxHeight","isActivityMessage","extraProps","isMobile","useWindowSize","internalScrollRef","scrollRef","normalizeRef","scrollState","expandedMessages","setExpandedMessages","reversedMessages","useMemo","dayGroups","groups","message","index","previousMessage","isSameDay","scrollToBottom","useScrollToBottom","useImperativeHandle","useInitialMountScroll","useScrollCleanup","useRestoreScrollPosition","useAutoScrollOnNewMessages","useResizeObserverForFirstMessage","handleScroll","useScrollHandler","isUserMessage","useCallback","shouldShowAvatar","renderMessageBubble","nextMessage","position","isTopOfStack","isBottomOfStack","bubbleProps","messageId","COLORS","prev","next","renderMessageAvatar","group","groupIndex","Day","isSmtp","MESSAGE_CHANNELS","placement","getMessagePlacement","isCentered","shouldCenterAlign","isPrivateNote","Constants","isActivity","React","GiftedChat","forwardRef"],"mappings":"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"}
1
+ {"version":3,"file":"GiftedChat.js","sources":["../../../../../src/components/BikGiftedChat/GiftedChat/GiftedChat.tsx"],"sourcesContent":["import React, {\n\tforwardRef,\n\tuseCallback,\n\tuseEffect,\n\tuseImperativeHandle,\n\tuseMemo,\n\tuseRef,\n\tuseState,\n} from 'react';\nimport { COLORS } from '../../../constants/Theme';\nimport { useWindowSize } from '../../../hooks/useWindowSize';\nimport { Button } from '../../button';\nimport { BodySecondary } from '../../TypographyStyle';\nimport { BubbleProps, GiftedChatAppType } from '../Bubble/types';\nimport { IMessage } from '../types';\nimport { Day } from './Day';\nimport { getMessagePlacement, shouldCenterAlign } from './messageHelpers';\nimport {\n\tuseAutoScrollOnNewMessages,\n\tuseInitialMountScroll,\n\tuseResizeObserverForFirstMessage,\n\tuseRestoreScrollPosition,\n\tuseScrollCleanup,\n\tuseScrollHandler,\n\tuseScrollToBottom,\n} from './scrollHooks';\nimport { AvatarProps, GiftedChatProps, MESSAGE_CHANNELS } from './types';\nimport { isSameDay, normalizeRef } from './utils';\nimport { Constants, TOP_THRESHOLD } from './utils';\n\nconst COLLAPSED_MAX_HEIGHT = 204;\n\nconst CollapsibleBubbleText: React.FC<{\n\ttext: string;\n\tisExpanded: boolean;\n\tonToggle: () => void;\n}> = ({ text, isExpanded, onToggle }) => {\n\tconst textRef = useRef<HTMLDivElement>(null);\n\tconst [isOverflowing, setIsOverflowing] = useState(false);\n\n\tuseEffect(() => {\n\t\tconst el = textRef.current;\n\t\tif (el) {\n\t\t\t// Temporarily remove max-height to measure true scroll height\n\t\t\tel.style.maxHeight = 'none';\n\t\t\tconst overflows = el.scrollHeight > COLLAPSED_MAX_HEIGHT;\n\t\t\tel.style.maxHeight = isExpanded ? 'none' : `${COLLAPSED_MAX_HEIGHT}px`;\n\t\t\tsetIsOverflowing(overflows);\n\t\t}\n\t}, [text, isExpanded]);\n\n\treturn (\n\t\t<>\n\t\t\t<div\n\t\t\t\tref={textRef}\n\t\t\t\tstyle={{\n\t\t\t\t\tmaxHeight: isExpanded ? 'none' : COLLAPSED_MAX_HEIGHT,\n\t\t\t\t\toverflow: 'hidden',\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t<BodySecondary>{text}</BodySecondary>\n\t\t\t</div>\n\t\t\t{isOverflowing && (\n\t\t\t\t<Button\n\t\t\t\t\tbuttonType=\"text\"\n\t\t\t\t\tsize=\"xs\"\n\t\t\t\t\tbuttonText={isExpanded ? 'Show less' : 'Read more'}\n\t\t\t\t\tonClick={onToggle}\n\t\t\t\t/>\n\t\t\t)}\n\t\t</>\n\t);\n};\n\nconst GiftedChatInner = (\n\tprops: Omit<GiftedChatProps<IMessage>, 'ref'>,\n\tforwardedRef: React.Ref<HTMLDivElement>,\n) => {\n\tconst {\n\t\tmessages = [],\n\t\tuser,\n\t\trenderBubble,\n\t\trenderAvatar,\n\t\trenderDay,\n\t\trenderLoading,\n\t\trenderChatEmpty,\n\t\tlistViewProps = {},\n\t\trenderAvatarOnTop = false,\n\t\tshowUserAvatar = false,\n\t\tshowAvatarForEveryMessage = false,\n\t\tinverted = false,\n\t\tmessageIdGenerator,\n\t\ttopThreshold = TOP_THRESHOLD,\n\t\tappType = GiftedChatAppType.Bik,\n\t\tmaxHeight,\n\t\tisActivityMessage,\n\t\t...extraProps\n\t} = props || {};\n\n\tconst isMobile = useWindowSize();\n\n\tconst internalScrollRef = useRef<HTMLDivElement | null>(null);\n\tconst scrollRef = normalizeRef(\n\t\tlistViewProps.ref || forwardedRef,\n\t\tinternalScrollRef,\n\t);\n\n\tconst scrollState = useRef({\n\t\tisInitialMount: true,\n\t\tisUserScrolling: false,\n\t\tisLoadingOldMessages: false,\n\t\tisAtBottom: true,\n\t\thasTriggeredEndReached: false,\n\t\tlastMessagesLength: messages?.length ?? 0,\n\t\tpreviousScrollHeight: 0,\n\t\tpreviousScrollTop: 0,\n\t\tscrollTimeout: null,\n\t});\n\n\tconst [expandedMessages, setExpandedMessages] = useState<\n\t\tSet<string | number>\n\t>(new Set());\n\n\t// Reverse messages so newest appears last in DOM (natural reading order)\n\tconst reversedMessages = useMemo(() => {\n\t\tif (!messages || messages.length === 0) return [] as IMessage[];\n\t\treturn [...messages].reverse() as IMessage[];\n\t}, [messages]);\n\n\t// Group consecutive same-day messages so each day separator can stick\n\t// within its own section and get pushed out by the next day's separator.\n\tconst dayGroups = useMemo(() => {\n\t\tconst groups: { createdAt: IMessage['createdAt']; indices: number[] }[] =\n\t\t\t[];\n\t\treversedMessages.forEach((message, index) => {\n\t\t\tconst previousMessage = reversedMessages[index - 1];\n\t\t\tif (index === 0 || !isSameDay(message, previousMessage)) {\n\t\t\t\tgroups.push({ createdAt: message.createdAt, indices: [index] });\n\t\t\t} else {\n\t\t\t\tgroups[groups.length - 1].indices.push(index);\n\t\t\t}\n\t\t});\n\t\treturn groups;\n\t}, [reversedMessages]);\n\n\tconst scrollToBottom = useScrollToBottom(scrollRef, scrollState);\n\n\tuseImperativeHandle(forwardedRef, () => scrollRef.current!);\n\n\tuseInitialMountScroll(\n\t\tscrollRef,\n\t\tscrollState,\n\t\treversedMessages.length,\n\t\tscrollToBottom,\n\t);\n\n\tuseScrollCleanup(scrollState);\n\n\tuseRestoreScrollPosition(scrollRef, scrollState, reversedMessages.length);\n\n\tuseAutoScrollOnNewMessages(\n\t\tscrollRef,\n\t\tscrollState,\n\t\tmessages.length,\n\t\tscrollToBottom,\n\t);\n\n\tuseResizeObserverForFirstMessage(\n\t\tmessages?.[0],\n\t\tscrollState,\n\t\tscrollToBottom,\n\t\tmessageIdGenerator,\n\t);\n\n\tconst handleScroll = useScrollHandler(\n\t\tscrollState,\n\t\tlistViewProps.onEndReached,\n\t\tlistViewProps.onScroll,\n\t\ttopThreshold,\n\t);\n\n\t// Check if a message belongs to the current user\n\tconst isUserMessage = useCallback(\n\t\t(message: IMessage) => {\n\t\t\treturn Boolean(message && user && message.user?._id === user._id);\n\t\t},\n\t\t[user],\n\t);\n\n\t// Determine if avatar should be shown for this message\n\tconst shouldShowAvatar = useCallback(\n\t\t(message: IMessage, previousMessage?: IMessage) => {\n\t\t\tif (!showUserAvatar) return false;\n\t\t\tif (showAvatarForEveryMessage) return true;\n\n\t\t\tif (isUserMessage(message)) return true;\n\n\t\t\t// Show avatar on the first message in a consecutive sender stack,\n\t\t\t// or when an activity interrupts the stack, or when the current message itself is an activity\n\t\t\treturn (\n\t\t\t\t!previousMessage ||\n\t\t\t\t(isActivityMessage ? isActivityMessage(message) : false) ||\n\t\t\t\t(isActivityMessage ? isActivityMessage(previousMessage) : false) ||\n\t\t\t\tpreviousMessage.user._id !== message.user._id\n\t\t\t);\n\t\t},\n\t\t[\n\t\t\tshowUserAvatar,\n\t\t\tshowAvatarForEveryMessage,\n\t\t\tisActivityMessage,\n\t\t\tisUserMessage,\n\t\t],\n\t);\n\n\t// Render a message bubble (or call custom renderBubble)\n\tconst renderMessageBubble = useCallback(\n\t\t(message: IMessage, previousMessage?: IMessage, nextMessage?: IMessage) => {\n\t\t\tconst position = isUserMessage(message) ? 'right' : 'left';\n\t\t\tconst isTopOfStack = previousMessage?.user?._id !== message?.user?._id;\n\t\t\tconst isBottomOfStack = nextMessage?.user?._id !== message?.user?._id;\n\n\t\t\tconst bubbleProps: BubbleProps<IMessage> = {\n\t\t\t\tcurrentMessage: message,\n\t\t\t\tpreviousMessage,\n\t\t\t\tnextMessage,\n\t\t\t\tposition,\n\t\t\t\tuser,\n\t\t\t\t...extraProps,\n\t\t\t};\n\n\t\t\t// Use custom render function if provided\n\t\t\tif (renderBubble) {\n\t\t\t\treturn renderBubble(bubbleProps);\n\t\t\t}\n\n\t\t\t// Default bubble rendering\n\t\t\tconst messageId = message._id;\n\t\t\tconst isExpanded = expandedMessages.has(messageId);\n\n\t\t\treturn (\n\t\t\t\t<div\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\tmaxWidth: appType === GiftedChatAppType.Manifest ? '50%' : '70%',\n\t\t\t\t\t\twidth: 'fit-content',\n\t\t\t\t\t\t...(appType === GiftedChatAppType.Manifest\n\t\t\t\t\t\t\t? { minWidth: '130px' }\n\t\t\t\t\t\t\t: {}),\n\t\t\t\t\t\tpadding: '8px 12px',\n\t\t\t\t\t\tborderTopLeftRadius:\n\t\t\t\t\t\t\tposition === 'left' ? (isTopOfStack ? 12 : 2) : 12,\n\t\t\t\t\t\tborderTopRightRadius: 12,\n\t\t\t\t\t\tborderBottomLeftRadius:\n\t\t\t\t\t\t\tposition === 'left' ? (isBottomOfStack ? 12 : 2) : 12,\n\t\t\t\t\t\tborderBottomRightRadius: 12,\n\t\t\t\t\t\tborder:\n\t\t\t\t\t\t\tposition === 'left' && appType === GiftedChatAppType.Manifest\n\t\t\t\t\t\t\t\t? '1px solid rgb(224, 224, 224)'\n\t\t\t\t\t\t\t\t: 'none',\n\t\t\t\t\t\tbackgroundColor:\n\t\t\t\t\t\t\tposition === 'right'\n\t\t\t\t\t\t\t\t? appType === GiftedChatAppType.Manifest\n\t\t\t\t\t\t\t\t\t? COLORS.background.brandTint\n\t\t\t\t\t\t\t\t\t: COLORS.background.brandLight\n\t\t\t\t\t\t\t\t: appType === GiftedChatAppType.Manifest\n\t\t\t\t\t\t\t\t? COLORS.background.pureWhite\n\t\t\t\t\t\t\t\t: COLORS.background.inactive,\n\t\t\t\t\t\tcolor: COLORS.content.primary,\n\t\t\t\t\t\twordBreak: 'break-word',\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t<CollapsibleBubbleText\n\t\t\t\t\t\ttext={message.text ?? ''}\n\t\t\t\t\t\tisExpanded={isExpanded}\n\t\t\t\t\t\tonToggle={() =>\n\t\t\t\t\t\t\tsetExpandedMessages((prev) => {\n\t\t\t\t\t\t\t\tconst next = new Set(prev);\n\t\t\t\t\t\t\t\tif (isExpanded) next.delete(messageId);\n\t\t\t\t\t\t\t\telse next.add(messageId);\n\t\t\t\t\t\t\t\treturn next;\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t);\n\t\t},\n\t\t[isUserMessage, user, renderBubble, extraProps, expandedMessages],\n\t);\n\n\t// Render a message avatar (or call custom renderAvatar)\n\tconst renderMessageAvatar = useCallback(\n\t\t(message: IMessage, previousMessage?: IMessage, nextMessage?: IMessage) => {\n\t\t\tconst shouldShow = shouldShowAvatar(message, previousMessage);\n\n\t\t\tif (!shouldShow) return null;\n\n\t\t\tconst position = isUserMessage(message) ? 'right' : 'left';\n\n\t\t\tconst avatarProps: AvatarProps<IMessage> = {\n\t\t\t\tcurrentMessage: message,\n\t\t\t\tpreviousMessage,\n\t\t\t\tnextMessage,\n\t\t\t\tposition,\n\t\t\t\tuser,\n\t\t\t\trenderAvatarOnTop,\n\t\t\t\tshowUserAvatar,\n\t\t\t\tshowAvatarForEveryMessage,\n\t\t\t};\n\n\t\t\treturn renderAvatar ? renderAvatar(avatarProps) : null;\n\t\t},\n\t\t[\n\t\t\tshouldShowAvatar,\n\t\t\tisUserMessage,\n\t\t\tuser,\n\t\t\trenderAvatarOnTop,\n\t\t\tshowUserAvatar,\n\t\t\tshowAvatarForEveryMessage,\n\t\t\trenderAvatar,\n\t\t],\n\t);\n\n\t// Render: Empty State\n\tif (!messages || messages.length === 0) {\n\t\treturn renderChatEmpty ? <>{renderChatEmpty()}</> : null;\n\t}\n\n\treturn (\n\t\t<div\n\t\t\tref={scrollRef as React.RefObject<HTMLDivElement>}\n\t\t\tstyle={{\n\t\t\t\tflex: 1,\n\t\t\t\toverflowY: 'auto',\n\t\t\t\toverflowX: 'hidden',\n\t\t\t\tdisplay: 'flex',\n\t\t\t\tflexDirection: 'column',\n\t\t\t\t...(maxHeight ? { maxHeight, height: maxHeight } : {}),\n\t\t\t\t...listViewProps.style,\n\t\t\t}}\n\t\t\tonScroll={handleScroll}\n\t\t>\n\t\t\t{/* Spacer to push messages to bottom (newest appears last in DOM) */}\n\t\t\t<div style={{ flex: '1 0 auto' }} />\n\n\t\t\t<div\n\t\t\t\tstyle={{\n\t\t\t\t\tdisplay: 'flex',\n\t\t\t\t\tflexDirection: 'column',\n\t\t\t\t\tflex: '0 0 auto',\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{dayGroups.map((group, groupIndex) => (\n\t\t\t\t\t<div key={`day-group-${groupIndex}`}>\n\t\t\t\t\t\t{/* Day separator — sticks to top while this day scrolls past */}\n\t\t\t\t\t\t{renderDay ? (\n\t\t\t\t\t\t\t<div style={{ position: 'sticky', top: 0, zIndex: 2 }}>\n\t\t\t\t\t\t\t\t{renderDay({ createdAt: group.createdAt })}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<Day\n\t\t\t\t\t\t\t\tcreatedAt={group.createdAt}\n\t\t\t\t\t\t\t\tappType={appType}\n\t\t\t\t\t\t\t\tscrollRootRef={scrollRef}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{group.indices.map((index) => {\n\t\t\t\t\t\t\tconst message = reversedMessages[index];\n\t\t\t\t\t\t\tconst isSmtp =\n\t\t\t\t\t\t\t\tmessage?.['channelId'] === MESSAGE_CHANNELS.SMTP ||\n\t\t\t\t\t\t\t\tmessage?.['channelName'] === MESSAGE_CHANNELS.SMTP;\n\t\t\t\t\t\t\tconst position = isSmtp\n\t\t\t\t\t\t\t\t? 'left'\n\t\t\t\t\t\t\t\t: isUserMessage(message)\n\t\t\t\t\t\t\t\t? 'right'\n\t\t\t\t\t\t\t\t: 'left';\n\t\t\t\t\t\t\tconst previousMessage = reversedMessages[index - 1];\n\t\t\t\t\t\t\tconst nextMessage = reversedMessages[index + 1];\n\t\t\t\t\t\t\tconst placement = getMessagePlacement(message, position);\n\t\t\t\t\t\t\tconst isCentered = shouldCenterAlign(message);\n\t\t\t\t\t\t\t// Check if message is a private note\n\t\t\t\t\t\t\tconst isPrivateNote =\n\t\t\t\t\t\t\t\tmessage['category'] ===\n\t\t\t\t\t\t\t\t\tConstants.ChatActivity.Category.ACTIVITY &&\n\t\t\t\t\t\t\t\tmessage['activityType'] ===\n\t\t\t\t\t\t\t\t\tConstants.ChatActivity.Type.PRIVATE_NOTE;\n\t\t\t\t\t\t\tconst isActivity =\n\t\t\t\t\t\t\t\tmessage['category'] ===\n\t\t\t\t\t\t\t\t\tConstants.ChatActivity.Category.ACTIVITY && !isPrivateNote;\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<React.Fragment\n\t\t\t\t\t\t\t\t\tkey={\n\t\t\t\t\t\t\t\t\t\tmessage._id ?? `${index}-${messageIdGenerator?.() ?? 'id'}`\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{/* Message container */}\n\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\t\t\t\t...(isMobile ? { margin: '0 4px' } : {}),\n\t\t\t\t\t\t\t\t\t\t\t...(isCentered\n\t\t\t\t\t\t\t\t\t\t\t\t? {}\n\t\t\t\t\t\t\t\t\t\t\t\t: { display: 'flex', alignItems: 'flex-start' }),\n\t\t\t\t\t\t\t\t\t\t\t...(appType !== GiftedChatAppType.Manifest\n\t\t\t\t\t\t\t\t\t\t\t\t? !isMobile && position === 'right'\n\t\t\t\t\t\t\t\t\t\t\t\t\t? { marginLeft: 8 }\n\t\t\t\t\t\t\t\t\t\t\t\t\t: { marginRight: 8 }\n\t\t\t\t\t\t\t\t\t\t\t\t: {}),\n\t\t\t\t\t\t\t\t\t\t\t...(isSmtp && !isPrivateNote && isMobile\n\t\t\t\t\t\t\t\t\t\t\t\t? { marginLeft: 8, marginRight: 8 }\n\t\t\t\t\t\t\t\t\t\t\t\t: {}),\n\t\t\t\t\t\t\t\t\t\t\t...(isSmtp && isPrivateNote ? { marginRight: 16 } : {}),\n\t\t\t\t\t\t\t\t\t\t\tjustifyContent: placement,\n\t\t\t\t\t\t\t\t\t\t\tmarginBottom: isSmtp\n\t\t\t\t\t\t\t\t\t\t\t\t? // SMTP: flat 24px between mails, no same/different-user split.\n\t\t\t\t\t\t\t\t\t\t\t\t nextMessage\n\t\t\t\t\t\t\t\t\t\t\t\t\t? 24\n\t\t\t\t\t\t\t\t\t\t\t\t\t: 0\n\t\t\t\t\t\t\t\t\t\t\t\t: nextMessage\n\t\t\t\t\t\t\t\t\t\t\t\t? nextMessage?.user?._id === message?.user?._id\n\t\t\t\t\t\t\t\t\t\t\t\t\t? isUserMessage(message)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t? 20\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t: 4\n\t\t\t\t\t\t\t\t\t\t\t\t\t: 20\n\t\t\t\t\t\t\t\t\t\t\t\t: 0,\n\t\t\t\t\t\t\t\t\t\t\t// Activity cards: no left/bottom margin.\n\t\t\t\t\t\t\t\t\t\t\t...(isActivity ? { marginLeft: 0, marginBottom: 0 } : {}),\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{/* Left avatar or placeholder (for mobile, avatar is hidden) */}\n\t\t\t\t\t\t\t\t\t\t{!isMobile && position === 'left' && (\n\t\t\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\t\t\t\t\t\tmarginRight: '4px',\n\t\t\t\t\t\t\t\t\t\t\t\t\twidth: '24px',\n\t\t\t\t\t\t\t\t\t\t\t\t\tflexShrink: 0,\n\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t{renderMessageAvatar(\n\t\t\t\t\t\t\t\t\t\t\t\t\tmessage,\n\t\t\t\t\t\t\t\t\t\t\t\t\tpreviousMessage,\n\t\t\t\t\t\t\t\t\t\t\t\t\tnextMessage,\n\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t)}\n\n\t\t\t\t\t\t\t\t\t\t{/* Message bubble */}\n\t\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\t\tid={`message-bubble-${\n\t\t\t\t\t\t\t\t\t\t\t\tmessage._id ??\n\t\t\t\t\t\t\t\t\t\t\t\t`${index}-${messageIdGenerator?.() ?? 'id'}`\n\t\t\t\t\t\t\t\t\t\t\t}`}\n\t\t\t\t\t\t\t\t\t\t\tstyle={\n\t\t\t\t\t\t\t\t\t\t\t\tappType === GiftedChatAppType.Manifest\n\t\t\t\t\t\t\t\t\t\t\t\t\t? { width: '100%' }\n\t\t\t\t\t\t\t\t\t\t\t\t\t: isMobile || isSmtp\n\t\t\t\t\t\t\t\t\t\t\t\t\t? { display: 'flex', flexGrow: 1, width: '100%' }\n\t\t\t\t\t\t\t\t\t\t\t\t\t: {}\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{renderMessageBubble(\n\t\t\t\t\t\t\t\t\t\t\t\tmessage,\n\t\t\t\t\t\t\t\t\t\t\t\tpreviousMessage,\n\t\t\t\t\t\t\t\t\t\t\t\tnextMessage,\n\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t\t\t\t{/* Right avatar or placeholder (for mobile, avatar is hidden) */}\n\t\t\t\t\t\t\t\t\t\t{!isMobile && position === 'right' && (\n\t\t\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\t\t\t\t\t\tmarginLeft: '4px',\n\t\t\t\t\t\t\t\t\t\t\t\t\twidth: '24px',\n\t\t\t\t\t\t\t\t\t\t\t\t\tflexShrink: 0,\n\t\t\t\t\t\t\t\t\t\t\t\t\talignSelf: 'flex-start',\n\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t{renderMessageAvatar(\n\t\t\t\t\t\t\t\t\t\t\t\t\tmessage,\n\t\t\t\t\t\t\t\t\t\t\t\t\tpreviousMessage,\n\t\t\t\t\t\t\t\t\t\t\t\t\tnextMessage,\n\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</React.Fragment>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t})}\n\t\t\t\t\t</div>\n\t\t\t\t))}\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\nexport default forwardRef<HTMLDivElement, GiftedChatProps<IMessage>>(\n\tGiftedChatInner,\n);\n"],"names":["COLLAPSED_MAX_HEIGHT","CollapsibleBubbleText","text","isExpanded","onToggle","textRef","useRef","isOverflowing","setIsOverflowing","useState","useEffect","el","overflows","jsxs","Fragment","jsx","BodySecondary","Button","GiftedChatInner","props","forwardedRef","messages","user","renderBubble","renderAvatar","renderDay","renderLoading","renderChatEmpty","listViewProps","renderAvatarOnTop","showUserAvatar","showAvatarForEveryMessage","inverted","messageIdGenerator","topThreshold","TOP_THRESHOLD","appType","GiftedChatAppType","maxHeight","isActivityMessage","extraProps","isMobile","useWindowSize","internalScrollRef","scrollRef","normalizeRef","scrollState","expandedMessages","setExpandedMessages","reversedMessages","useMemo","dayGroups","groups","message","index","previousMessage","isSameDay","scrollToBottom","useScrollToBottom","useImperativeHandle","useInitialMountScroll","useScrollCleanup","useRestoreScrollPosition","useAutoScrollOnNewMessages","useResizeObserverForFirstMessage","handleScroll","useScrollHandler","isUserMessage","useCallback","shouldShowAvatar","renderMessageBubble","nextMessage","position","isTopOfStack","isBottomOfStack","bubbleProps","messageId","COLORS","prev","next","renderMessageAvatar","group","groupIndex","Day","isSmtp","MESSAGE_CHANNELS","placement","getMessagePlacement","isCentered","shouldCenterAlign","isPrivateNote","Constants","isActivity","React","GiftedChat","forwardRef"],"mappings":"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"}
@@ -1,20 +1,20 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("react/jsx-runtime"),Ft=require("../../assets/icons/check.svg.js"),qt=require("../../assets/icons/chevronLeft.svg.js"),Bt=require("../../assets/icons/chevronRight.svg.js"),Ut=require("../../assets/icons/cross.svg.js"),zt=require("../../assets/icons/edit.svg.js"),Gt=require("../../assets/icons/info.svg.js"),Wt=require("../../assets/icons/rewind.svg.js"),Xt=require("../../assets/icons/thumb-down-line.svg.js"),Yt=require("../../assets/icons/thumb-up-line.svg.js"),Jt=require("../../helpers/BaseWhatsappContentLang.helper.js"),at=require("../../helpers/sanitize.js"),r=require("react"),ht=require("styled-components"),s=require("../../constants/Theme.js"),te=require("../tooltips/Tooltip.js"),ye=require("../TypographyStyle.js"),B=require("./ai/actionRegistry.js"),ne=require("./ai/aiTag.js"),lt=require("./ai/api.js"),U=require("./CustomEditor.styled.js"),c=require("./WhatsAppTextEditorHeader.js"),pt=a=>a&&typeof a=="object"&&"default"in a?a:{default:a},Vt=pt(r),g=pt(ht),_e="Character limit reached",ut=3e3,Qt=5,dt=3,gt=1200,Zt=1e3,Kt="Rephrase this WhatsApp utility template to improve clarity and readability while preserving variables, intent, and compliance.",xt=ht.keyframes`
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("react/jsx-runtime"),Nt=require("../../assets/icons/check.svg.js"),Ft=require("../../assets/icons/chevronLeft.svg.js"),Bt=require("../../assets/icons/chevronRight.svg.js"),qt=require("../../assets/icons/cross.svg.js"),Ut=require("../../assets/icons/edit.svg.js"),Gt=require("../../assets/icons/info.svg.js"),zt=require("../../assets/icons/rewind.svg.js"),Wt=require("../../assets/icons/thumb-down-line.svg.js"),Xt=require("../../assets/icons/thumb-up-line.svg.js"),Yt=require("../../helpers/BaseWhatsappContentLang.helper.js"),r=require("react"),gt=require("styled-components"),s=require("../../constants/Theme.js"),te=require("../tooltips/Tooltip.js"),ye=require("../TypographyStyle.js"),q=require("./ai/actionRegistry.js"),ne=require("./ai/aiTag.js"),at=require("./ai/api.js"),U=require("./CustomEditor.styled.js"),c=require("./WhatsAppTextEditorHeader.js"),ht=a=>a&&typeof a=="object"&&"default"in a?a:{default:a},Jt=ht(r),f=ht(gt),_e="Character limit reached",lt=3e3,Vt=5,ut=3,dt=1200,Qt=1e3,Zt="Rephrase this WhatsApp utility template to improve clarity and readability while preserving variables, intent, and compliance.",pt=gt.keyframes`
2
2
  0% { opacity: 0.55; }
3
3
  50% { opacity: 1; }
4
4
  100% { opacity: 0.55; }
5
- `,en=g.default.div`
5
+ `,Kt=f.default.div`
6
6
  padding: 14px 12px;
7
7
  display: flex;
8
8
  flex-direction: column;
9
9
  gap: 10px;
10
10
  min-height: 150px;
11
- `,j=g.default.div`
11
+ `,j=f.default.div`
12
12
  height: 16px;
13
13
  border-radius: 6px;
14
14
  width: ${a=>a.width};
15
15
  background: #ececef;
16
- animation: ${xt} 1.1s ease-in-out infinite;
17
- `,tn=g.default.div`
16
+ animation: ${pt} 1.1s ease-in-out infinite;
17
+ `,en=f.default.div`
18
18
  padding: 12px;
19
19
  display: flex;
20
20
  flex-direction: column;
@@ -33,25 +33,25 @@
33
33
  ::-webkit-scrollbar-track {
34
34
  background: transparent;
35
35
  }
36
- `,nn=g.default.div`
36
+ `,tn=f.default.div`
37
37
  text-decoration: line-through;
38
38
  color: ${s.COLORS.content.secondary};
39
- `,ft=g.default.div`
39
+ `,ft=f.default.div`
40
40
  color: ${s.COLORS.content.primary};
41
- `,rn=g.default.div`
41
+ `,nn=f.default.div`
42
42
  display: flex;
43
43
  flex-direction: column;
44
44
  gap: 8px;
45
45
  width: 100%;
46
46
  min-height: 40px;
47
- `,sn=g.default.div`
47
+ `,rn=f.default.div`
48
48
  display: flex;
49
49
  align-items: center;
50
50
  gap: 6px;
51
- `,on=g.default.span`
51
+ `,sn=f.default.span`
52
52
  color: ${s.COLORS.content.primary};
53
53
  font-size: 14px;
54
- `,H=g.default.button`
54
+ `,H=f.default.button`
55
55
  border: 0;
56
56
  background: transparent;
57
57
  padding: 6px;
@@ -69,19 +69,19 @@
69
69
  opacity: 0.35;
70
70
  cursor: not-allowed;
71
71
  }
72
- `,cn=g.default(H)`
72
+ `,on=f.default(H)`
73
73
  :disabled {
74
74
  opacity: 1;
75
75
  cursor: wait;
76
76
  }
77
- `,an=g.default.div`
77
+ `,cn=f.default.div`
78
78
  width: 14px;
79
79
  height: 14px;
80
80
  border-radius: 4px;
81
81
  background: #ececef;
82
82
  flex-shrink: 0;
83
- animation: ${xt} 1.1s ease-in-out infinite;
84
- `,ln=g.default.div`
83
+ animation: ${pt} 1.1s ease-in-out infinite;
84
+ `,an=f.default.div`
85
85
  background: ${s.COLORS.surface.standard};
86
86
  display: flex;
87
87
  flex-direction: column;
@@ -89,7 +89,7 @@
89
89
  gap: 10px;
90
90
  border-radius: 0 0 4px 4px;
91
91
  position: relative;
92
- `,un=g.default.div`
92
+ `,ln=f.default.div`
93
93
  border: 1px solid #f5a4c0;
94
94
  border-radius: 10px;
95
95
  padding: 8px 10px;
@@ -97,7 +97,7 @@
97
97
  align-items: center;
98
98
  gap: 10px;
99
99
  background: ${s.COLORS.surface.standard};
100
- `,dn=g.default.input`
100
+ `,un=f.default.input`
101
101
  flex: 1;
102
102
  min-width: 0;
103
103
  border: 0;
@@ -105,11 +105,11 @@
105
105
  font-size: 14px;
106
106
  background: transparent;
107
107
  color: ${s.COLORS.content.primary};
108
- `,gn=g.default.div`
108
+ `,dn=f.default.div`
109
109
  display: flex;
110
110
  align-items: center;
111
111
  gap: 10px;
112
- `,fn=g.default.button`
112
+ `,fn=f.default.button`
113
113
  border: 0;
114
114
  background: transparent;
115
115
  color: ${s.COLORS.content.secondary};
@@ -117,7 +117,7 @@
117
117
  font-weight: 500;
118
118
  padding: 0;
119
119
  cursor: pointer;
120
- `,hn=g.default.button`
120
+ `,gn=f.default.button`
121
121
  border: 1px solid #5d3a72;
122
122
  color: #5d3a72;
123
123
  background: ${s.COLORS.surface.standard};
@@ -127,7 +127,7 @@
127
127
  line-height: 1.1;
128
128
  font-weight: 600;
129
129
  cursor: pointer;
130
- `,pn=g.default.div`
130
+ `,hn=f.default.div`
131
131
  margin-top: 4px;
132
132
  border-radius: 12px;
133
133
  width: 331px;
@@ -138,7 +138,7 @@
138
138
  display: flex;
139
139
  flex-direction: column;
140
140
  gap: 2px;
141
- `,xn=g.default.button`
141
+ `,pn=f.default.button`
142
142
  width: 100%;
143
143
  border: 0;
144
144
  border-radius: 8px;
@@ -152,5 +152,5 @@
152
152
  :hover {
153
153
  background: ${a=>a.selected?"#d9e8db":s.COLORS.surface.subdued};
154
154
  }
155
- `,v=new Jt.BaseWhatsappContentLangHelper,bn={[c.EditorActionTypes.BOLD]:"*",[c.EditorActionTypes.ITALIC]:"_",[c.EditorActionTypes.STRIKETHROUGH]:"~"};function mn(a){return`whatsapp-editor-rephrase-highlight-${a||"default"}`}const bt=Vt.default.forwardRef(({onChange:a,onClickVariable:Rn,text:P,RightComponent:mt,error:I,limit:M,onError:D,rows:Rt,actions:St,editorInstanceKey:A,editorSessionId:re,templateType:L="marketing",templateId:R,requestExecutor:fe,baseUrl:he,endpointPath:Oe,useCase:Ie,storeId:Le,apiAdapter:pe,conversationId:ke="whatsapp-template-editor",systemId:we="whatsapp-writer",intent:je="default",enabledAIActions:ve=[c.AIEditorActionTypes.REPHRASE,c.AIEditorActionTypes.SHORTEN,c.AIEditorActionTypes.EXPAND,c.AIEditorActionTypes.EMOJIFY],disableBuiltInAIActions:He=!1,promptOverrides:Pe,rephraseTones:Me,aiActionMinChars:De,instructionSuggestions:$e=B.DEFAULT_INSTRUCTION_SUGGESTIONS,onAnalyticsEvent:Ne,onAITagComputed:ie,prefillWasAiGenerated:C=!1,editorHeader:Fe,onAIToneSelect:At,onAIActionRequest:se,onBuildAIPrompt:qe,onBlur:Et,...Ct},Tt)=>{const f=r.useRef(null),[o,yt]=r.useState(P||""),[Be,z]=r.useState(!1),[xe,Ue]=r.useState(0),[l,ze]=r.useState(!1),[Ge,be]=r.useState(!1),[T,oe]=r.useState(""),[ce,_t]=r.useState({}),[m,We]=r.useState(null),[p,me]=r.useState([]),[y,G]=r.useState(0),[u,Xe]=r.useState(null),Ye=r.useRef(null),h=r.useRef(null),W=r.useRef(null),E=r.useRef(null),X=r.useRef(null),Y=r.useRef(null),Je=r.useRef(null),Re=r.useRef(!!C),ae=r.useRef(null),J=r.useRef(""),le=r.useRef(!1),[Se,Ve]=r.useState({}),Ot=r.useRef(`mount-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,8)}`),V=r.useMemo(()=>mn(`${A||"default"}-${re||Ot.current}`),[A,re]);r.useEffect(()=>{Re.current=!!C},[C,A]),r.useEffect(()=>{le.current=!1,J.current=""},[A,re]),r.useEffect(()=>{if(!C){le.current=!1,J.current="";return}if(le.current)return;const e=P??"";e.length>0&&(J.current=e,le.current=!0)},[C,P,A,re]);const ue=r.useMemo(()=>B.resolveActionPrompts(L,Pe,Me),[Pe,Me,L]),Qe=r.useMemo(()=>{const e=T.trim().toLowerCase();return e?$e.filter(t=>t.toLowerCase().includes(e)):[]},[$e,T]),Q=r.useMemo(()=>({...B.DEFAULT_AI_ACTION_MIN_CHARS,...De||{}}),[De]),Ze=Q[c.AIEditorActionTypes.REPHRASE]||B.DEFAULT_AI_ACTION_MIN_CHARS[c.AIEditorActionTypes.REPHRASE],It=r.useCallback(e=>{const t=e.trim().replace(/\s+/g," ");if(!t)return"";const i=t.split(" ").length;return`[anonymized:length_${t.length}:words_${i}]`},[]),S=r.useCallback((e,t)=>{Ne?.(e,t)},[Ne]),_=r.useCallback(e=>{yt(t=>t===e?t:e)},[]),k=r.useCallback(e=>{if(Y.current&&clearTimeout(Y.current),e.length>gt){a?.(e,e),Y.current=setTimeout(()=>{a?.(e,v.getHTML(e))},16);return}a?.(e,v.getHTML(e))},[a]),Ke=r.useCallback(e=>{const i=ae.current?.acceptedText||(C?J.current:"");if(!i||e===i)return;const d=ne.computeAiTagOnPostEdit({acceptedAiText:i,currentEditedText:e});ie?.({...d,source:"post_edit_debounce"})},[ie,C]),Z=r.useCallback(()=>{We(null),me([]),G(0),Xe(null),Ve({})},[]),et=r.useCallback(()=>{if(l||m&&p.length>0||xe>=Qt)return;const e=xe+1;Ue(e),typeof window<"u"&&A&&sessionStorage.setItem(V,String(e)),z(!0),W.current&&clearTimeout(W.current),W.current=setTimeout(()=>{z(!1)},1200)},[A,V,l,m,p,xe]),de=r.useRef(et);de.current=et;function Lt(e){const t=at.stripHtmlTags(e.target.value),i=ae.current;i&&!i.editedEventEmitted&&t!==i.acceptedText&&(ae.current={...i,editedEventEmitted:!0},S("ai_suggestion_edited",{action_type:i.actionType,template_id:R})),E.current&&(clearTimeout(E.current),E.current=null);const d=i?.acceptedText||(C?J.current:"");d&&t!==d&&(E.current=setTimeout(()=>{Ke(t)},Zt)),_(t),k(t)}function tt(e){const t=f?.current;t!=null&&(t.selectionStart?(t.focus(),t.selectionEnd=e):t.focus())}function kt(e){const t=bn[e];if(t&&f.current){const i=f.current.selectionStart,d=f.current.selectionEnd;if(i===d){const{text:b}=nt(t,i);tt(i+1),k(b)}else{const{text:b}=Ae(t);k(b)}}}function wt(e){const{text:t}=ge(e);k(t)}function Ae(e){let t=f.current?.value??"";if(f.current&&e){const i=f.current.selectionStart,d=f.current.selectionEnd,b=e;if(i===d)return ge(b);{t=v.wrappWildcard(i,d,b,t);const N=v.getHTML(t);return _(t),{text:t,html:N}}}return{text:t,html:t}}function ge(e){const t=f.current?.value??"";if(f.current&&e){const i=f.current.selectionStart,d=f.current.selectionEnd;if(i===d)return nt(e,i)}return{text:t,html:t}}function nt(e,t){let i=f.current?.value??"";i=i.slice(0,t)+e+i.slice(t);const d=v.getHTML(i);return _(i),{text:i,html:d}}r.useEffect(()=>{if(typeof window>"u"||!A)return;const e=Number(sessionStorage.getItem(V)||"0");return Number.isNaN(e)||Ue(e),()=>{sessionStorage.removeItem(V)}},[A,V]),r.useEffect(()=>{if(l){z(!1),h.current&&(clearTimeout(h.current),h.current=null);return}if(m&&p.length>0){z(!1),h.current&&(clearTimeout(h.current),h.current=null);return}const e=!!o.trim()&&o.length>=Ze;if(X.current===null){X.current=e,e&&(h.current=setTimeout(()=>{de.current()},ut));return}if(!e){X.current=!1,z(!1),h.current&&(clearTimeout(h.current),h.current=null);return}const t=!X.current&&e;X.current=!0,t&&de.current(),h.current&&clearTimeout(h.current),h.current=setTimeout(()=>{de.current()},ut)},[o,l,Ze,m,p]),r.useEffect(()=>()=>{h.current&&clearTimeout(h.current),W.current&&clearTimeout(W.current),Y.current&&clearTimeout(Y.current),E.current&&clearTimeout(E.current)},[]);const x=p[y]||"",$=r.useMemo(()=>!u||!x?null:`${u}-${y}-${x}`,[x,u,y]),rt=!!($&&Se[$]),jt=r.useMemo(()=>v.getHTML(m||""),[m]),vt=r.useMemo(()=>v.getHTML(x),[x]),Ee=p.length<dt,O=!!m&&p.length>0,Ht=p.length<=1||y<=0,Pt=p.length<=1||y>=p.length-1;r.useEffect(()=>{if(!O)return;const e=Ye.current;e&&(e.scrollTop=e.scrollHeight)},[x,O,l]);const K=r.useCallback(async(e,t=!1,i,d,b=c.AIActionVariant.DEFAULT)=>{if(!se&&!pe&&(!fe||!he)){D?.("AI configuration missing");return}if(!o.trim())return;const N=Q[e]||B.DEFAULT_AI_ACTION_MIN_CHARS[e]||50;if(o.length<N||l||t&&!Ee)return;const ee=ue[e],F=e===c.AIEditorActionTypes.REPHRASE&&L==="utility"&&b===c.AIActionVariant.REPHRASE?{...ee,label:"Rephrase",basePrompt:Kt}:ee,w=d||ce[e],st=F.tones?.find(q=>q.id===w),Ce=i!==void 0?i:T,ot=qe?.({actionType:e,actionVariant:b,currentText:o,templateType:L,config:F,toneId:w,toneLabel:st?.label,instructionText:Ce||void 0})||lt.buildActionPrompt({config:F,currentText:o,selectedToneId:w,instructionText:Ce});ze(!0),S("ai_action_triggered",{action_type:e,template_id:R,template_category:L});try{const q=se?await se({actionType:e,actionVariant:b,currentText:o,templateType:L,toneId:w,toneLabel:st?.label,instructionText:Ce||void 0,prompt:ot}):await lt.requestAISuggestion({apiAdapter:pe,requestExecutor:fe,baseUrl:he,endpointPath:Oe,prompt:ot,intent:je,conversationId:ke,systemId:we,useCase:Ie,storeId:Le}),Te=typeof q=="string"?q.trim():(q?.body||"").trim();if(!Te)return;if(!t){We(o),Xe(e),me([Te]),G(0);return}me(Nt=>{const ct=[...Nt,Te].slice(0,dt);return G(ct.length-1),ct})}catch{D?.("Failed to generate AI suggestion")}finally{ze(!1)}},[fe,he,o,l,Ee,ue,ce,T,S,R,Oe,pe,je,ke,we,Ie,Le,L,D,Q,se,qe]),Mt=r.useCallback(()=>{if(!x||!m||!u)return;_(x),k(x),S("ai_suggestion_accepted",{action_type:u,template_id:R}),ae.current={acceptedText:x,baselineText:m,actionType:u,editedEventEmitted:!1};const e=Re.current,t=ne.computeAiTagOnAccept({baselineText:m,acceptedText:x,initialAiPrefillPhase:e});e&&(Re.current=!1),ie?.({...t,source:"accept"}),Z()},[x,m,u,_,k,S,R,ie,Z]),Dt=r.useCallback(()=>{u&&(S("ai_suggestion_discarded",{action_type:u,template_id:R}),Z())},[Z,S,u,R]),it=r.useCallback(e=>{!u||!$||Se[$]||(Ve(t=>({...t,[$]:e})),S("ai_feedback_submitted",{action_type:u,template_id:R,rating:e,candidate_index:y+1}))},[$,S,Se,u,y,R]),$t=r.useMemo(()=>He?[]:ve.map(e=>{const t=ue[e],i=ce[e];return{type:e,label:t.label,isPrimary:e===c.AIEditorActionTypes.REPHRASE,loading:l&&u===e,highlighted:e===c.AIEditorActionTypes.REPHRASE&&Be,disabled:!o.trim()||o.length<(Q[e]||B.DEFAULT_AI_ACTION_MIN_CHARS[e]||50)||l||O&&u===e,showToneDropdown:e===c.AIEditorActionTypes.REPHRASE&&!!t.tones?.length,tones:t.tones,selectedToneId:i}}),[ve,He,ue,ce,l,u,O,Be,o,Q]);return r.useImperativeHandle(Tt,()=>({addTextOrWrap:Ae,addText:ge,get(){return o},setCaretPosition:tt}),[Ae,ge,o]),r.useEffect(()=>{P!==void 0&&_(P||"")},[P,_]),r.useEffect(()=>{if(!M||!D)return;const e=o.length>M?_e:I??"";Je.current!==e&&(Je.current=e,D(e))},[o,I,M,D]),n.jsxs(U.OuterContainer,{children:[n.jsxs(U.EditorFooterRow,{children:[n.jsx(U.EditorFooterTitle,{children:Fe?n.jsx(ye.TitleSmall,{"data-test":"body-text-for-edit-template",children:Fe}):null}),n.jsxs(U.EditorFooterRight,{children:[I&&I!==_e?n.jsxs(n.Fragment,{children:[n.jsx(Gt.default,{width:16,height:16,color:s.COLORS.content.negative}),n.jsx(ye.BodyCaption,{color:s.COLORS.content.negative,children:I})]}):null,M?n.jsxs(ye.BodyCaption,{style:{color:I===_e||o.length>M?s.COLORS.content.negative:s.COLORS.content.secondary},children:[o.length,"/",M]}):null]})]}),n.jsxs(U.Container,{isError:!!I,children:[O?n.jsxs(tn,{ref:Ye,children:[n.jsx(nn,{dangerouslySetInnerHTML:{__html:jt}}),l?n.jsx(ft,{"aria-busy":"true",children:n.jsxs(rn,{children:[n.jsx(j,{width:"96%"}),n.jsx(j,{width:"84%"}),n.jsx(j,{width:"68%"})]})}):n.jsx(ft,{dangerouslySetInnerHTML:{__html:vt}}),n.jsxs(sn,{children:[n.jsx(H,{"aria-label":"Previous suggestion",type:"button",disabled:Ht,onClick:()=>G(e=>Math.max(0,e-1)),children:n.jsx(qt.default,{width:14,height:14,color:s.COLORS.content.secondary})}),n.jsxs(on,{children:[y+1,"/",p.length]}),n.jsx(H,{"aria-label":"Next suggestion",type:"button",disabled:Pt,onClick:()=>G(e=>Math.min(p.length-1,e+1)),children:n.jsx(Bt.default,{width:14,height:14,color:s.COLORS.content.secondary})}),n.jsx(te.Tooltip,{body:"Like",placement:"top",children:n.jsx(H,{"aria-label":"Like suggestion",type:"button",disabled:rt,onClick:()=>it("like"),children:n.jsx(Yt.default,{width:14,height:14,color:s.COLORS.content.secondary})})}),n.jsx(te.Tooltip,{body:"Dislike",placement:"top",children:n.jsx(H,{"aria-label":"Dislike suggestion",type:"button",disabled:rt,onClick:()=>it("dislike"),children:n.jsx(Xt.default,{width:14,height:14,color:s.COLORS.content.secondary})})}),Ee?n.jsx(te.Tooltip,{body:l?"Regenerating…":"Regenerate",placement:"top",children:n.jsx(cn,{"aria-label":"Regenerate suggestion","aria-busy":l,type:"button",disabled:l,onClick:()=>{u&&K(u,!0)},children:l?n.jsx(an,{"aria-hidden":!0}):n.jsx(Wt.default,{width:14,height:14})})}):null,n.jsx(te.Tooltip,{body:"Discard",placement:"top",children:n.jsx(H,{"aria-label":"Discard suggestion",type:"button",onClick:Dt,children:n.jsx(Ut.default,{width:14,height:14,color:s.COLORS.content.secondary})})}),n.jsx(te.Tooltip,{body:"Accept",placement:"top",children:n.jsx(H,{"aria-label":"Accept suggestion",type:"button",onClick:Mt,children:n.jsx(Ft.default,{width:14,height:14,color:s.COLORS.content.secondary})})})]})]}):l?n.jsxs(en,{children:[n.jsx(j,{width:"96%"}),n.jsx(j,{width:"92%"}),n.jsx(j,{width:"88%"}),n.jsx(j,{width:"54%"})]}):n.jsx(U.TextSpace,{ref:f,...Ct,value:o,onChange:Lt,onBlur:e=>{E.current&&(clearTimeout(E.current),E.current=null),Ke(e.target.value),Et?.(e)},onPaste:e=>{const t=e.clipboardData.getData("text");if(t.length>gt){e.preventDefault();const i=f.current,d=i?.selectionStart??0,b=i?.selectionEnd??d,N=i?.value??o,ee=N.slice(0,d)+t+N.slice(b);_(ee),k(ee);const F=d+t.length;requestAnimationFrame(()=>{const w=f.current;if(w)try{w.setSelectionRange(F,F)}catch{}})}},rows:Rt}),Ge?n.jsxs(ln,{children:[n.jsxs(un,{children:[n.jsx(zt.default,{width:18,height:18,color:s.COLORS.content.secondary}),n.jsx(dn,{value:T,placeholder:"Add specific instructions to refine your message",onChange:e=>oe(at.stripHtmlTags(e.target.value))}),n.jsxs(gn,{children:[n.jsx(fn,{type:"button",onClick:()=>{oe(""),be(!1)},children:"Cancel"}),n.jsx(hn,{type:"button",onClick:()=>{const e=T.trim();e&&S("ai_instruction_used",{action_type:c.AIEditorActionTypes.REPHRASE,template_id:R,instruction_text:It(e)}),be(!1),oe(""),K(c.AIEditorActionTypes.REPHRASE,!1,e)},children:"Improve"})]})]}),T.trim().length>0&&Qe.length>0?n.jsx(pn,{children:Qe.map(e=>n.jsx(xn,{type:"button",selected:T===e,onClick:()=>oe(e),children:e},e))}):null]}):n.jsx(c.WhatsAppTextEditorHeader,{actions:St,ref:f,onActionSelect:kt,RightComponent:mt,rightActionsDisabled:O||l,onEmojiClick:wt,aiActions:$t,disableAllActions:O||l,instructionActive:Ge,onAIInstructionsClick:()=>be(!0),onAIToneChange:(e,t)=>{_t(i=>({...i,[e]:t})),At?.(e,t),e===c.AIEditorActionTypes.REPHRASE&&K(e,!1,void 0,t,c.AIActionVariant.DEFAULT)},onAIActionClick:(e,t=c.AIActionVariant.DEFAULT)=>{if(!l){if(O){if(u===e)return;Z(),K(e,!1,void 0,void 0,t);return}K(e,!1,void 0,void 0,t)}}})]})]})});bt.displayName="WhatsAppTextEditor";exports.AI_TAG_CHANGE_RATIO_THRESHOLD=ne.AI_TAG_CHANGE_RATIO_THRESHOLD;exports.computeAiTagOnAccept=ne.computeAiTagOnAccept;exports.levenshteinDistance=ne.levenshteinDistance;exports.WhatsAppTextEditor=bt;
155
+ `,v=new Yt.BaseWhatsappContentLangHelper,xn={[c.EditorActionTypes.BOLD]:"*",[c.EditorActionTypes.ITALIC]:"_",[c.EditorActionTypes.STRIKETHROUGH]:"~"};function bn(a){return`whatsapp-editor-rephrase-highlight-${a||"default"}`}const xt=Jt.default.forwardRef(({onChange:a,onClickVariable:Rn,text:P,RightComponent:bt,error:I,limit:M,onError:D,rows:Rt,actions:St,editorInstanceKey:A,editorSessionId:re,templateType:L="marketing",templateId:S,requestExecutor:ge,baseUrl:he,endpointPath:Oe,useCase:Ie,storeId:Le,apiAdapter:pe,conversationId:ke="whatsapp-template-editor",systemId:we="whatsapp-writer",intent:je="default",enabledAIActions:ve=[c.AIEditorActionTypes.REPHRASE,c.AIEditorActionTypes.SHORTEN,c.AIEditorActionTypes.EXPAND,c.AIEditorActionTypes.EMOJIFY],disableBuiltInAIActions:He=!1,promptOverrides:Pe,rephraseTones:Me,aiActionMinChars:De,instructionSuggestions:$e=q.DEFAULT_INSTRUCTION_SUGGESTIONS,onAnalyticsEvent:Ne,onAITagComputed:ie,prefillWasAiGenerated:C=!1,editorHeader:Fe,onAIToneSelect:mt,onAIActionRequest:se,onBuildAIPrompt:Be,onBlur:At,...Et},Ct)=>{const g=r.useRef(null),[o,Tt]=r.useState(P||""),[qe,G]=r.useState(!1),[xe,Ue]=r.useState(0),[l,Ge]=r.useState(!1),[ze,be]=r.useState(!1),[T,oe]=r.useState(""),[ce,yt]=r.useState({}),[R,We]=r.useState(null),[p,Re]=r.useState([]),[y,z]=r.useState(0),[u,Xe]=r.useState(null),Ye=r.useRef(null),h=r.useRef(null),W=r.useRef(null),E=r.useRef(null),X=r.useRef(null),Y=r.useRef(null),Je=r.useRef(null),Se=r.useRef(!!C),ae=r.useRef(null),J=r.useRef(""),le=r.useRef(!1),[me,Ve]=r.useState({}),_t=r.useRef(`mount-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,8)}`),V=r.useMemo(()=>bn(`${A||"default"}-${re||_t.current}`),[A,re]);r.useEffect(()=>{Se.current=!!C},[C,A]),r.useEffect(()=>{le.current=!1,J.current=""},[A,re]),r.useEffect(()=>{if(!C){le.current=!1,J.current="";return}if(le.current)return;const e=P??"";e.length>0&&(J.current=e,le.current=!0)},[C,P,A,re]);const ue=r.useMemo(()=>q.resolveActionPrompts(L,Pe,Me),[Pe,Me,L]),Qe=r.useMemo(()=>{const e=T.trim().toLowerCase();return e?$e.filter(t=>t.toLowerCase().includes(e)):[]},[$e,T]),Q=r.useMemo(()=>({...q.DEFAULT_AI_ACTION_MIN_CHARS,...De||{}}),[De]),Ze=Q[c.AIEditorActionTypes.REPHRASE]||q.DEFAULT_AI_ACTION_MIN_CHARS[c.AIEditorActionTypes.REPHRASE],Ot=r.useCallback(e=>{const t=e.trim().replace(/\s+/g," ");if(!t)return"";const i=t.split(" ").length;return`[anonymized:length_${t.length}:words_${i}]`},[]),m=r.useCallback((e,t)=>{Ne?.(e,t)},[Ne]),_=r.useCallback(e=>{Tt(t=>t===e?t:e)},[]),k=r.useCallback(e=>{if(Y.current&&clearTimeout(Y.current),e.length>dt){a?.(e,e),Y.current=setTimeout(()=>{a?.(e,v.getHTML(e))},16);return}a?.(e,v.getHTML(e))},[a]),Ke=r.useCallback(e=>{const i=ae.current?.acceptedText||(C?J.current:"");if(!i||e===i)return;const d=ne.computeAiTagOnPostEdit({acceptedAiText:i,currentEditedText:e});ie?.({...d,source:"post_edit_debounce"})},[ie,C]),Z=r.useCallback(()=>{We(null),Re([]),z(0),Xe(null),Ve({})},[]),et=r.useCallback(()=>{if(l||R&&p.length>0||xe>=Vt)return;const e=xe+1;Ue(e),typeof window<"u"&&A&&sessionStorage.setItem(V,String(e)),G(!0),W.current&&clearTimeout(W.current),W.current=setTimeout(()=>{G(!1)},1200)},[A,V,l,R,p,xe]),de=r.useRef(et);de.current=et;function It(e){const t=e.target.value,i=ae.current;i&&!i.editedEventEmitted&&t!==i.acceptedText&&(ae.current={...i,editedEventEmitted:!0},m("ai_suggestion_edited",{action_type:i.actionType,template_id:S})),E.current&&(clearTimeout(E.current),E.current=null);const d=i?.acceptedText||(C?J.current:"");d&&t!==d&&(E.current=setTimeout(()=>{Ke(t)},Qt)),_(t),k(t)}function tt(e){const t=g?.current;t!=null&&(t.selectionStart?(t.focus(),t.selectionEnd=e):t.focus())}function Lt(e){const t=xn[e];if(t&&g.current){const i=g.current.selectionStart,d=g.current.selectionEnd;if(i===d){const{text:b}=nt(t,i);tt(i+1),k(b)}else{const{text:b}=Ae(t);k(b)}}}function kt(e){const{text:t}=fe(e);k(t)}function Ae(e){let t=g.current?.value??"";if(g.current&&e){const i=g.current.selectionStart,d=g.current.selectionEnd,b=e;if(i===d)return fe(b);{t=v.wrappWildcard(i,d,b,t);const N=v.getHTML(t);return _(t),{text:t,html:N}}}return{text:t,html:t}}function fe(e){const t=g.current?.value??"";if(g.current&&e){const i=g.current.selectionStart,d=g.current.selectionEnd;if(i===d)return nt(e,i)}return{text:t,html:t}}function nt(e,t){let i=g.current?.value??"";i=i.slice(0,t)+e+i.slice(t);const d=v.getHTML(i);return _(i),{text:i,html:d}}r.useEffect(()=>{if(typeof window>"u"||!A)return;const e=Number(sessionStorage.getItem(V)||"0");return Number.isNaN(e)||Ue(e),()=>{sessionStorage.removeItem(V)}},[A,V]),r.useEffect(()=>{if(l){G(!1),h.current&&(clearTimeout(h.current),h.current=null);return}if(R&&p.length>0){G(!1),h.current&&(clearTimeout(h.current),h.current=null);return}const e=!!o.trim()&&o.length>=Ze;if(X.current===null){X.current=e,e&&(h.current=setTimeout(()=>{de.current()},lt));return}if(!e){X.current=!1,G(!1),h.current&&(clearTimeout(h.current),h.current=null);return}const t=!X.current&&e;X.current=!0,t&&de.current(),h.current&&clearTimeout(h.current),h.current=setTimeout(()=>{de.current()},lt)},[o,l,Ze,R,p]),r.useEffect(()=>()=>{h.current&&clearTimeout(h.current),W.current&&clearTimeout(W.current),Y.current&&clearTimeout(Y.current),E.current&&clearTimeout(E.current)},[]);const x=p[y]||"",$=r.useMemo(()=>!u||!x?null:`${u}-${y}-${x}`,[x,u,y]),rt=!!($&&me[$]),wt=r.useMemo(()=>v.getHTML(R||""),[R]),jt=r.useMemo(()=>v.getHTML(x),[x]),Ee=p.length<ut,O=!!R&&p.length>0,vt=p.length<=1||y<=0,Ht=p.length<=1||y>=p.length-1;r.useEffect(()=>{if(!O)return;const e=Ye.current;e&&(e.scrollTop=e.scrollHeight)},[x,O,l]);const K=r.useCallback(async(e,t=!1,i,d,b=c.AIActionVariant.DEFAULT)=>{if(!se&&!pe&&(!ge||!he)){D?.("AI configuration missing");return}if(!o.trim())return;const N=Q[e]||q.DEFAULT_AI_ACTION_MIN_CHARS[e]||50;if(o.length<N||l||t&&!Ee)return;const ee=ue[e],F=e===c.AIEditorActionTypes.REPHRASE&&L==="utility"&&b===c.AIActionVariant.REPHRASE?{...ee,label:"Rephrase",basePrompt:Zt}:ee,w=d||ce[e],st=F.tones?.find(B=>B.id===w),Ce=i!==void 0?i:T,ot=Be?.({actionType:e,actionVariant:b,currentText:o,templateType:L,config:F,toneId:w,toneLabel:st?.label,instructionText:Ce||void 0})||at.buildActionPrompt({config:F,currentText:o,selectedToneId:w,instructionText:Ce});Ge(!0),m("ai_action_triggered",{action_type:e,template_id:S,template_category:L});try{const B=se?await se({actionType:e,actionVariant:b,currentText:o,templateType:L,toneId:w,toneLabel:st?.label,instructionText:Ce||void 0,prompt:ot}):await at.requestAISuggestion({apiAdapter:pe,requestExecutor:ge,baseUrl:he,endpointPath:Oe,prompt:ot,intent:je,conversationId:ke,systemId:we,useCase:Ie,storeId:Le}),Te=typeof B=="string"?B.trim():(B?.body||"").trim();if(!Te)return;if(!t){We(o),Xe(e),Re([Te]),z(0);return}Re($t=>{const ct=[...$t,Te].slice(0,ut);return z(ct.length-1),ct})}catch{D?.("Failed to generate AI suggestion")}finally{Ge(!1)}},[ge,he,o,l,Ee,ue,ce,T,m,S,Oe,pe,je,ke,we,Ie,Le,L,D,Q,se,Be]),Pt=r.useCallback(()=>{if(!x||!R||!u)return;_(x),k(x),m("ai_suggestion_accepted",{action_type:u,template_id:S}),ae.current={acceptedText:x,baselineText:R,actionType:u,editedEventEmitted:!1};const e=Se.current,t=ne.computeAiTagOnAccept({baselineText:R,acceptedText:x,initialAiPrefillPhase:e});e&&(Se.current=!1),ie?.({...t,source:"accept"}),Z()},[x,R,u,_,k,m,S,ie,Z]),Mt=r.useCallback(()=>{u&&(m("ai_suggestion_discarded",{action_type:u,template_id:S}),Z())},[Z,m,u,S]),it=r.useCallback(e=>{!u||!$||me[$]||(Ve(t=>({...t,[$]:e})),m("ai_feedback_submitted",{action_type:u,template_id:S,rating:e,candidate_index:y+1}))},[$,m,me,u,y,S]),Dt=r.useMemo(()=>He?[]:ve.map(e=>{const t=ue[e],i=ce[e];return{type:e,label:t.label,isPrimary:e===c.AIEditorActionTypes.REPHRASE,loading:l&&u===e,highlighted:e===c.AIEditorActionTypes.REPHRASE&&qe,disabled:!o.trim()||o.length<(Q[e]||q.DEFAULT_AI_ACTION_MIN_CHARS[e]||50)||l||O&&u===e,showToneDropdown:e===c.AIEditorActionTypes.REPHRASE&&!!t.tones?.length,tones:t.tones,selectedToneId:i}}),[ve,He,ue,ce,l,u,O,qe,o,Q]);return r.useImperativeHandle(Ct,()=>({addTextOrWrap:Ae,addText:fe,get(){return o},setCaretPosition:tt}),[Ae,fe,o]),r.useEffect(()=>{P!==void 0&&_(P||"")},[P,_]),r.useEffect(()=>{if(!M||!D)return;const e=o.length>M?_e:I??"";Je.current!==e&&(Je.current=e,D(e))},[o,I,M,D]),n.jsxs(U.OuterContainer,{children:[n.jsxs(U.EditorFooterRow,{children:[n.jsx(U.EditorFooterTitle,{children:Fe?n.jsx(ye.TitleSmall,{"data-test":"body-text-for-edit-template",children:Fe}):null}),n.jsxs(U.EditorFooterRight,{children:[I&&I!==_e?n.jsxs(n.Fragment,{children:[n.jsx(Gt.default,{width:16,height:16,color:s.COLORS.content.negative}),n.jsx(ye.BodyCaption,{color:s.COLORS.content.negative,children:I})]}):null,M?n.jsxs(ye.BodyCaption,{style:{color:I===_e||o.length>M?s.COLORS.content.negative:s.COLORS.content.secondary},children:[o.length,"/",M]}):null]})]}),n.jsxs(U.Container,{isError:!!I,children:[O?n.jsxs(en,{ref:Ye,children:[n.jsx(tn,{dangerouslySetInnerHTML:{__html:wt}}),l?n.jsx(ft,{"aria-busy":"true",children:n.jsxs(nn,{children:[n.jsx(j,{width:"96%"}),n.jsx(j,{width:"84%"}),n.jsx(j,{width:"68%"})]})}):n.jsx(ft,{dangerouslySetInnerHTML:{__html:jt}}),n.jsxs(rn,{children:[n.jsx(H,{"aria-label":"Previous suggestion",type:"button",disabled:vt,onClick:()=>z(e=>Math.max(0,e-1)),children:n.jsx(Ft.default,{width:14,height:14,color:s.COLORS.content.secondary})}),n.jsxs(sn,{children:[y+1,"/",p.length]}),n.jsx(H,{"aria-label":"Next suggestion",type:"button",disabled:Ht,onClick:()=>z(e=>Math.min(p.length-1,e+1)),children:n.jsx(Bt.default,{width:14,height:14,color:s.COLORS.content.secondary})}),n.jsx(te.Tooltip,{body:"Like",placement:"top",children:n.jsx(H,{"aria-label":"Like suggestion",type:"button",disabled:rt,onClick:()=>it("like"),children:n.jsx(Xt.default,{width:14,height:14,color:s.COLORS.content.secondary})})}),n.jsx(te.Tooltip,{body:"Dislike",placement:"top",children:n.jsx(H,{"aria-label":"Dislike suggestion",type:"button",disabled:rt,onClick:()=>it("dislike"),children:n.jsx(Wt.default,{width:14,height:14,color:s.COLORS.content.secondary})})}),Ee?n.jsx(te.Tooltip,{body:l?"Regenerating…":"Regenerate",placement:"top",children:n.jsx(on,{"aria-label":"Regenerate suggestion","aria-busy":l,type:"button",disabled:l,onClick:()=>{u&&K(u,!0)},children:l?n.jsx(cn,{"aria-hidden":!0}):n.jsx(zt.default,{width:14,height:14})})}):null,n.jsx(te.Tooltip,{body:"Discard",placement:"top",children:n.jsx(H,{"aria-label":"Discard suggestion",type:"button",onClick:Mt,children:n.jsx(qt.default,{width:14,height:14,color:s.COLORS.content.secondary})})}),n.jsx(te.Tooltip,{body:"Accept",placement:"top",children:n.jsx(H,{"aria-label":"Accept suggestion",type:"button",onClick:Pt,children:n.jsx(Nt.default,{width:14,height:14,color:s.COLORS.content.secondary})})})]})]}):l?n.jsxs(Kt,{children:[n.jsx(j,{width:"96%"}),n.jsx(j,{width:"92%"}),n.jsx(j,{width:"88%"}),n.jsx(j,{width:"54%"})]}):n.jsx(U.TextSpace,{ref:g,...Et,value:o,onChange:It,onBlur:e=>{E.current&&(clearTimeout(E.current),E.current=null),Ke(e.target.value),At?.(e)},onPaste:e=>{const t=e.clipboardData.getData("text");if(t.length>dt){e.preventDefault();const i=g.current,d=i?.selectionStart??0,b=i?.selectionEnd??d,N=i?.value??o,ee=N.slice(0,d)+t+N.slice(b);_(ee),k(ee);const F=d+t.length;requestAnimationFrame(()=>{const w=g.current;if(w)try{w.setSelectionRange(F,F)}catch{}})}},rows:Rt}),ze?n.jsxs(an,{children:[n.jsxs(ln,{children:[n.jsx(Ut.default,{width:18,height:18,color:s.COLORS.content.secondary}),n.jsx(un,{value:T,placeholder:"Add specific instructions to refine your message",onChange:e=>oe(e.target.value)}),n.jsxs(dn,{children:[n.jsx(fn,{type:"button",onClick:()=>{oe(""),be(!1)},children:"Cancel"}),n.jsx(gn,{type:"button",onClick:()=>{const e=T.trim();e&&m("ai_instruction_used",{action_type:c.AIEditorActionTypes.REPHRASE,template_id:S,instruction_text:Ot(e)}),be(!1),oe(""),K(c.AIEditorActionTypes.REPHRASE,!1,e)},children:"Improve"})]})]}),T.trim().length>0&&Qe.length>0?n.jsx(hn,{children:Qe.map(e=>n.jsx(pn,{type:"button",selected:T===e,onClick:()=>oe(e),children:e},e))}):null]}):n.jsx(c.WhatsAppTextEditorHeader,{actions:St,ref:g,onActionSelect:Lt,RightComponent:bt,rightActionsDisabled:O||l,onEmojiClick:kt,aiActions:Dt,disableAllActions:O||l,instructionActive:ze,onAIInstructionsClick:()=>be(!0),onAIToneChange:(e,t)=>{yt(i=>({...i,[e]:t})),mt?.(e,t),e===c.AIEditorActionTypes.REPHRASE&&K(e,!1,void 0,t,c.AIActionVariant.DEFAULT)},onAIActionClick:(e,t=c.AIActionVariant.DEFAULT)=>{if(!l){if(O){if(u===e)return;Z(),K(e,!1,void 0,void 0,t);return}K(e,!1,void 0,void 0,t)}}})]})]})});xt.displayName="WhatsAppTextEditor";exports.AI_TAG_CHANGE_RATIO_THRESHOLD=ne.AI_TAG_CHANGE_RATIO_THRESHOLD;exports.computeAiTagOnAccept=ne.computeAiTagOnAccept;exports.levenshteinDistance=ne.levenshteinDistance;exports.WhatsAppTextEditor=xt;
156
156
  //# sourceMappingURL=WhatsAppTextEditor.js.map