posthog-js 1.371.3 → 1.372.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/array.full.es5.js +1 -1
- package/dist/array.full.js +1 -1
- package/dist/array.full.no-external.js +1 -1
- package/dist/array.js +1 -1
- package/dist/array.no-external.js +1 -1
- package/dist/conversations.js +1 -1
- package/dist/conversations.js.map +1 -1
- package/dist/customizations.full.js +1 -1
- package/dist/default-extensions.js +1 -1
- package/dist/extension-bundles.js +1 -1
- package/dist/lazy-recorder.js +1 -1
- package/dist/main.js +1 -1
- package/dist/module.full.js +1 -1
- package/dist/module.full.no-external.js +1 -1
- package/dist/module.js +1 -1
- package/dist/module.no-external.js +1 -1
- package/dist/module.slim.js +1 -1
- package/dist/module.slim.no-external.js +1 -1
- package/dist/posthog-recorder.js +1 -1
- package/dist/posthog-recorder.js.map +1 -1
- package/dist/src/extensions/conversations/external/components/ConversationsWidget.d.ts +9 -3
- package/dist/src/extensions/conversations/external/components/MessagesView.d.ts +3 -1
- package/dist/src/extensions/conversations/external/components/NewConversationButton.d.ts +12 -0
- package/dist/src/extensions/conversations/external/components/styles.d.ts +15 -0
- package/dist/src/extensions/conversations/external/index.d.ts +8 -1
- package/lib/package.json +1 -1
- package/lib/src/extensions/conversations/external/components/ConversationsWidget.d.ts +9 -3
- package/lib/src/extensions/conversations/external/components/ConversationsWidget.js +18 -10
- package/lib/src/extensions/conversations/external/components/ConversationsWidget.js.map +1 -1
- package/lib/src/extensions/conversations/external/components/MessagesView.d.ts +3 -1
- package/lib/src/extensions/conversations/external/components/MessagesView.js +3 -2
- package/lib/src/extensions/conversations/external/components/MessagesView.js.map +1 -1
- package/lib/src/extensions/conversations/external/components/NewConversationButton.d.ts +12 -0
- package/lib/src/extensions/conversations/external/components/NewConversationButton.js +18 -0
- package/lib/src/extensions/conversations/external/components/NewConversationButton.js.map +1 -0
- package/lib/src/extensions/conversations/external/components/TicketListView.js +2 -5
- package/lib/src/extensions/conversations/external/components/TicketListView.js.map +1 -1
- package/lib/src/extensions/conversations/external/components/styles.d.ts +15 -0
- package/lib/src/extensions/conversations/external/components/styles.js +15 -0
- package/lib/src/extensions/conversations/external/components/styles.js.map +1 -1
- package/lib/src/extensions/conversations/external/index.d.ts +8 -1
- package/lib/src/extensions/conversations/external/index.js +115 -25
- package/lib/src/extensions/conversations/external/index.js.map +1 -1
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/package.json +6 -6
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TicketListView.js","sourceRoot":"","sources":["../../../../../../src/extensions/conversations/external/components/TicketListView.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,mDAAiD;
|
|
1
|
+
{"version":3,"file":"TicketListView.js","sourceRoot":"","sources":["../../../../../../src/extensions/conversations/external/components/TicketListView.tsx"],"names":[],"mappings":"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","sourcesContent":["// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport { h, FunctionComponent } from 'preact'\nimport { Ticket } from '../../../../posthog-conversations-types'\nimport { getStyles } from './styles'\nimport { TicketListItem } from './TicketListItem'\nimport { NewConversationButton } from './NewConversationButton'\n\ninterface TicketListViewProps {\n tickets: Ticket[]\n isLoading: boolean\n styles: ReturnType<typeof getStyles>\n onSelectTicket: (ticketId: string) => void\n onNewConversation: () => void\n onOpenRestoreRequest: () => void\n}\n\n/**\n * Loading state component\n */\nconst LoadingState: FunctionComponent<{ styles: ReturnType<typeof getStyles> }> = ({ styles }) => (\n <div style={styles.ticketListLoading}>\n <div style={styles.loadingSpinner} />\n <span>Loading conversations...</span>\n </div>\n)\n\n/**\n * Empty state component when there are no tickets\n */\nconst EmptyState: FunctionComponent<{\n styles: ReturnType<typeof getStyles>\n onNewConversation: () => void\n onOpenRestoreRequest: () => void\n}> = ({ styles, onNewConversation, onOpenRestoreRequest }) => (\n <div style={styles.ticketListEmpty}>\n <div style={styles.emptyStateIcon}>\n <svg width=\"48\" height=\"48\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.5\">\n <path d=\"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z\" />\n </svg>\n </div>\n <div style={styles.emptyStateTitle}>No conversations yet</div>\n <div style={styles.emptyStateDescription}>Start a new conversation to get help from our team.</div>\n <button\n style={styles.newConversationButtonLarge}\n onClick={onNewConversation}\n onMouseEnter={(e) => {\n e.currentTarget.style.opacity = '0.9'\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.opacity = '1'\n }}\n >\n Start a conversation\n </button>\n <button\n style={styles.fetchPreviousButton}\n onClick={onOpenRestoreRequest}\n onMouseEnter={(e) => {\n e.currentTarget.style.opacity = '0.8'\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.opacity = '1'\n }}\n >\n Fetch previous conversations\n </button>\n </div>\n)\n\n/**\n * Ticket list view showing all user's tickets\n */\nexport const TicketListView: FunctionComponent<TicketListViewProps> = ({\n tickets,\n isLoading,\n styles,\n onSelectTicket,\n onNewConversation,\n onOpenRestoreRequest,\n}) => {\n // Show loading state\n if (isLoading && tickets.length === 0) {\n return <LoadingState styles={styles} />\n }\n\n // Show empty state when no tickets\n if (tickets.length === 0) {\n return (\n <EmptyState\n styles={styles}\n onNewConversation={onNewConversation}\n onOpenRestoreRequest={onOpenRestoreRequest}\n />\n )\n }\n\n // Show ticket list\n return (\n <div style={styles.ticketListContainer}>\n {/* Ticket list - sorted by most recent activity */}\n <div style={styles.ticketList}>\n {[...tickets]\n .sort((a, b) => {\n const dateA = new Date(a.last_message_at || a.created_at).getTime()\n const dateB = new Date(b.last_message_at || b.created_at).getTime()\n return dateB - dateA // Descending order (newest first)\n })\n .map((ticket) => (\n <TicketListItem\n key={`${ticket.id}-${ticket.last_message_at || ticket.created_at}-${ticket.unread_count}`}\n ticket={ticket}\n styles={styles}\n onClick={onSelectTicket}\n />\n ))}\n </div>\n\n {/* New conversation button at bottom */}\n <NewConversationButton styles={styles} onClick={onNewConversation} />\n </div>\n )\n}\n"]}
|
|
@@ -283,6 +283,21 @@ export declare const getStyles: (primaryColor: string, position?: WidgetPosition
|
|
|
283
283
|
alignItems: string;
|
|
284
284
|
flexShrink: number;
|
|
285
285
|
};
|
|
286
|
+
resolvedBanner: {
|
|
287
|
+
paddingTop: string;
|
|
288
|
+
background: string;
|
|
289
|
+
borderTop: string;
|
|
290
|
+
display: string;
|
|
291
|
+
flexDirection: "column";
|
|
292
|
+
flexShrink: number;
|
|
293
|
+
};
|
|
294
|
+
resolvedBannerText: {
|
|
295
|
+
padding: string;
|
|
296
|
+
fontSize: string;
|
|
297
|
+
color: string;
|
|
298
|
+
textAlign: "center";
|
|
299
|
+
lineHeight: number;
|
|
300
|
+
};
|
|
286
301
|
input: {
|
|
287
302
|
flex: number;
|
|
288
303
|
maxHeight: string;
|
|
@@ -174,6 +174,21 @@ var getStyles = function (primaryColor, position) {
|
|
|
174
174
|
alignItems: 'center', // Changed from flex-end to center to vertically align input and sendButton
|
|
175
175
|
flexShrink: 0,
|
|
176
176
|
},
|
|
177
|
+
resolvedBanner: {
|
|
178
|
+
paddingTop: '12px',
|
|
179
|
+
background: 'white',
|
|
180
|
+
borderTop: '1px solid #dcdcdc',
|
|
181
|
+
display: 'flex',
|
|
182
|
+
flexDirection: 'column',
|
|
183
|
+
flexShrink: 0,
|
|
184
|
+
},
|
|
185
|
+
resolvedBannerText: {
|
|
186
|
+
padding: '0 20px',
|
|
187
|
+
fontSize: '13px',
|
|
188
|
+
color: '#64748b',
|
|
189
|
+
textAlign: 'center',
|
|
190
|
+
lineHeight: 1.5,
|
|
191
|
+
},
|
|
177
192
|
input: {
|
|
178
193
|
flex: 1,
|
|
179
194
|
maxHeight: '120px',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"styles.js","sourceRoot":"","sources":["../../../../../../src/extensions/conversations/external/components/styles.ts"],"names":[],"mappings":"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","sourcesContent":["// Inline styles following PostHog design system\n\nimport type { WidgetPosition } from '../../../../posthog-conversations-types'\nimport { Z_INDEX_CONVERSATIONS } from '../../../../constants'\n\n/**\n * Calculate contrasting text color (black or white) based on background brightness\n * Uses HSP (Highly Sensitive Purity) brightness formula\n */\nfunction getContrastTextColor(hexColor: string): string {\n const hex = hexColor.replace(/^#/, '')\n const fullHex = hex.length === 3 ? hex[0] + hex[0] + hex[1] + hex[1] + hex[2] + hex[2] : hex\n\n const r = parseInt(fullHex.slice(0, 2), 16)\n const g = parseInt(fullHex.slice(2, 4), 16)\n const b = parseInt(fullHex.slice(4, 6), 16)\n\n // HSP brightness formula\n const hsp = Math.sqrt(0.299 * (r * r) + 0.587 * (g * g) + 0.114 * (b * b))\n return hsp > 127.5 ? '#020617' : 'white'\n}\n\nexport const getStyles = (primaryColor: string, position: WidgetPosition = 'bottom_right') => {\n const isLeft = position.includes('left')\n const isTop = position.includes('top')\n\n return {\n widget: {\n position: 'fixed' as const,\n ...(isTop ? { top: '20px' } : { bottom: '20px' }),\n ...(isLeft ? { left: '20px' } : { right: '20px' }),\n zIndex: Z_INDEX_CONVERSATIONS,\n fontFamily:\n '-apple-system, BlinkMacSystemFont, \"Inter\", \"Segoe UI\", \"Roboto\", Helvetica, Arial, sans-serif',\n },\n buttonContainer: {\n position: 'relative' as const,\n },\n button: {\n width: '50px',\n height: '50px',\n borderRadius: '50%',\n background: primaryColor,\n color: getContrastTextColor(primaryColor),\n border: 'none',\n cursor: 'pointer',\n boxShadow: '0 4px 12px rgba(0, 0, 0, 0.15)',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n transition: 'transform 0.2s ease-out, box-shadow 0.2s ease-out',\n },\n unreadBadge: {\n position: 'absolute' as const,\n ...(isTop ? { bottom: '-4px' } : { top: '-4px' }),\n ...(isLeft ? { left: '-4px' } : { right: '-4px' }),\n minWidth: '20px',\n height: '20px',\n borderRadius: '10px',\n background: '#ef4444',\n color: 'white',\n fontSize: '11px',\n fontWeight: 600,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n padding: '0 5px',\n boxShadow: '0 2px 4px rgba(0, 0, 0, 0.2)',\n border: '2px solid white',\n boxSizing: 'border-box' as const,\n },\n window: {\n position: 'absolute' as const,\n ...(isTop ? { top: 0 } : { bottom: 0 }),\n ...(isLeft ? { left: 0 } : { right: 0 }),\n background: 'white',\n borderRadius: '10px',\n boxShadow: '0 10px 25px -3px rgba(0,0,0,0.12), 0 4px 12px -2px rgba(0,0,0,0.10)',\n display: 'flex',\n flexDirection: 'column' as const,\n overflow: 'hidden',\n transition: 'all 0.3s cubic-bezier(0.4, 0, 0.2, 1)',\n //border: '1px solid #dcdcdc',\n border: 'none',\n },\n windowOpen: {\n width: '400px',\n maxWidth: 'calc(100vw - 40px)',\n height: '600px',\n maxHeight: 'calc(100vh - 100px)',\n },\n header: {\n background: primaryColor,\n color: getContrastTextColor(primaryColor),\n padding: '8px 12px',\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n flexShrink: 0,\n },\n headerTitle: {\n fontWeight: 500,\n fontSize: '14px',\n },\n headerActions: {\n display: 'flex',\n gap: '4px',\n alignItems: 'center',\n },\n headerLinkButton: {\n background: 'transparent',\n border: 'none',\n color: getContrastTextColor(primaryColor),\n cursor: 'pointer',\n padding: '6px 8px',\n fontSize: '12px',\n borderRadius: '4px',\n opacity: 0.9,\n },\n headerButton: {\n background: 'transparent',\n border: 'none',\n color: getContrastTextColor(primaryColor),\n cursor: 'pointer',\n padding: '6px 8px',\n fontSize: '16px',\n lineHeight: 1,\n borderRadius: '4px',\n transition: 'background 0.2s ease-out',\n opacity: 0.9,\n },\n messages: {\n flex: 1,\n overflowY: 'auto' as const,\n padding: '14px',\n display: 'flex',\n flexDirection: 'column' as const,\n gap: '8px',\n background: 'white',\n },\n message: {\n display: 'flex',\n flexDirection: 'column' as const,\n maxWidth: '85%',\n animation: 'fadeIn 0.2s ease-out',\n },\n messageCustomer: {\n alignSelf: 'flex-end',\n alignItems: 'flex-end',\n },\n messageAgent: {\n alignSelf: 'flex-start',\n alignItems: 'flex-start',\n },\n messageAuthor: {\n fontSize: '10px',\n color: '#939393',\n marginBottom: '4px',\n fontWeight: 500,\n },\n messageContent: {\n padding: '8px 12px',\n borderRadius: '8px',\n fontSize: '12px',\n lineHeight: 1.5,\n wordWrap: 'break-word' as const,\n whiteSpace: 'pre-wrap' as const,\n },\n messageContentCustomer: {\n background: primaryColor,\n color: getContrastTextColor(primaryColor),\n borderBottomRightRadius: '2px',\n },\n messageContentAgent: {\n background: 'white',\n color: '#020617',\n border: '1.5px solid #dcdcdc',\n borderBottomLeftRadius: '2px',\n },\n messageTime: {\n fontSize: '10px',\n color: '#939393',\n marginTop: '4px',\n opacity: 0.8,\n },\n error: {\n padding: '10px 16px',\n background: '#fee2e2',\n color: '#991b1b',\n fontSize: '13px',\n borderTop: '1px solid #fecaca',\n borderBottom: '1px solid #fecaca',\n textAlign: 'center' as const,\n fontWeight: 500,\n },\n inputContainer: {\n padding: '8px 12px',\n background: 'white',\n borderTop: '1px solid #dcdcdc',\n display: 'flex',\n gap: '8px',\n alignItems: 'center', // Changed from flex-end to center to vertically align input and sendButton\n flexShrink: 0,\n },\n input: {\n flex: 1,\n maxHeight: '120px',\n fontSize: '14px',\n resize: 'vertical',\n fontFamily: 'inherit',\n lineHeight: 1.5,\n color: '#020617',\n background: 'white',\n border: 'none',\n outline: 'none',\n transition: 'border-color 0.2s ease-out, box-shadow 0.2s ease-out',\n display: 'flex',\n alignItems: 'center',\n fieldSizing: 'content',\n },\n sendButton: {\n width: '33px',\n height: '33px', // Match input minHeight for vertical alignment\n borderRadius: '10px',\n background: primaryColor,\n color: getContrastTextColor(primaryColor),\n border: 'none',\n cursor: 'pointer',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n transition: 'all 0.2s ease-out',\n boxShadow: '0 2px 0 rgba(0, 0, 0, 0.045)',\n fontWeight: 700,\n flexShrink: 0,\n },\n // Identification form styles\n identificationForm: {\n flex: 1,\n display: 'flex',\n flexDirection: 'column' as const,\n padding: '24px',\n background: '#eeeded',\n overflowY: 'auto' as const,\n },\n formTitle: {\n fontSize: '18px',\n fontWeight: 600,\n color: '#020617',\n marginBottom: '8px',\n },\n formDescription: {\n fontSize: '14px',\n color: '#64748b',\n marginBottom: '24px',\n lineHeight: 1.5,\n },\n recoverFooter: {\n padding: '10px 14px',\n borderTop: '1px solid #e5e7eb',\n fontSize: '12px',\n color: '#64748b',\n lineHeight: 1.5,\n flexShrink: 0,\n textAlign: 'center',\n },\n recoverFooterLink: {\n background: 'none',\n border: 'none',\n padding: 0,\n color: '#64748b',\n cursor: 'pointer',\n fontSize: '12px',\n fontFamily: 'inherit',\n textDecoration: 'underline',\n },\n formField: {\n marginBottom: '16px',\n },\n formLabel: {\n display: 'block',\n fontSize: '13px',\n fontWeight: 500,\n color: '#020617',\n marginBottom: '6px',\n },\n formInput: {\n width: '100%',\n padding: '10px 12px',\n border: '1px solid #dcdcdc',\n borderRadius: '6px',\n fontSize: '14px',\n fontFamily: 'inherit',\n color: '#020617',\n background: 'white',\n transition: 'border-color 0.2s ease-out, box-shadow 0.2s ease-out',\n boxSizing: 'border-box' as const,\n },\n formInputError: {\n borderColor: '#ef4444',\n },\n formError: {\n fontSize: '12px',\n color: '#ef4444',\n marginTop: '4px',\n },\n formSubmitButton: {\n width: '100%',\n padding: '12px 16px',\n borderRadius: '6px',\n background: primaryColor,\n color: getContrastTextColor(primaryColor),\n border: 'none',\n cursor: 'pointer',\n fontSize: '14px',\n fontWeight: 600,\n transition: 'all 0.2s ease-out',\n marginTop: '8px',\n },\n formOptional: {\n fontSize: '12px',\n color: '#939393',\n fontWeight: 400,\n },\n restoreRequestSuccess: {\n marginTop: '12px',\n fontSize: '12px',\n color: '#166534',\n background: '#dcfce7',\n border: '1px solid #86efac',\n borderRadius: '6px',\n padding: '10px 12px',\n lineHeight: 1.4,\n },\n // Ticket list styles\n ticketListContainer: {\n flex: 1,\n display: 'flex',\n flexDirection: 'column' as const,\n background: 'white',\n overflowY: 'auto' as const,\n },\n ticketList: {\n flex: 1,\n overflowY: 'auto' as const,\n },\n ticketItem: {\n padding: '14px 16px',\n borderBottom: '1px solid #f1f1f1',\n cursor: 'pointer',\n transition: 'background 0.15s ease-out',\n background: 'white',\n display: 'flex',\n alignItems: 'center',\n gap: '12px',\n },\n ticketItemUnread: {\n background: '#fafafa',\n },\n ticketItemContent: {\n display: 'flex',\n flexDirection: 'column' as const,\n gap: '6px',\n flex: 1,\n minWidth: 0, // Allow text truncation\n },\n ticketItemArrow: {\n color: '#939393',\n flexShrink: 0,\n display: 'flex',\n alignItems: 'center',\n },\n ticketItemHeader: {\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'flex-start',\n gap: '8px',\n },\n ticketPreview: {\n fontSize: '13px',\n color: '#020617',\n lineHeight: 1.4,\n flex: 1,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap' as const,\n },\n ticketPreviewUnread: {\n fontSize: '13px',\n color: '#020617',\n lineHeight: 1.4,\n flex: 1,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap' as const,\n fontWeight: 600,\n },\n ticketUnreadBadge: {\n minWidth: '18px',\n height: '18px',\n borderRadius: '9px',\n background: '#ef4444',\n color: 'white',\n fontSize: '10px',\n fontWeight: 600,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n padding: '0 5px',\n flexShrink: 0,\n },\n ticketMeta: {\n display: 'flex',\n alignItems: 'center',\n gap: '8px',\n },\n ticketTime: {\n fontSize: '11px',\n color: '#939393',\n },\n ticketStatus: {\n fontSize: '10px',\n color: '#64748b',\n background: '#f1f5f9',\n padding: '2px 6px',\n borderRadius: '4px',\n textTransform: 'uppercase' as const,\n letterSpacing: '0.3px',\n },\n newConversationButton: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n margin: '12px 16px',\n padding: '10px 16px',\n borderRadius: '8px',\n background: primaryColor,\n color: getContrastTextColor(primaryColor),\n border: 'none',\n cursor: 'pointer',\n fontSize: '13px',\n fontWeight: 500,\n transition: 'all 0.2s ease-out',\n },\n // Ticket list loading state\n ticketListLoading: {\n flex: 1,\n display: 'flex',\n flexDirection: 'column' as const,\n alignItems: 'center',\n justifyContent: 'center',\n gap: '12px',\n color: '#64748b',\n fontSize: '13px',\n },\n loadingSpinner: {\n width: '24px',\n height: '24px',\n border: '2px solid #e2e8f0',\n borderTop: `2px solid ${primaryColor}`,\n borderRadius: '50%',\n animation: 'spin 0.8s linear infinite',\n },\n // Ticket list empty state\n ticketListEmpty: {\n flex: 1,\n display: 'flex',\n flexDirection: 'column' as const,\n alignItems: 'center',\n justifyContent: 'center',\n padding: '32px 24px',\n textAlign: 'center' as const,\n },\n emptyStateIcon: {\n color: '#cbd5e1',\n marginBottom: '16px',\n },\n emptyStateTitle: {\n fontSize: '16px',\n fontWeight: 600,\n color: '#020617',\n marginBottom: '8px',\n },\n emptyStateDescription: {\n fontSize: '13px',\n color: '#64748b',\n lineHeight: 1.5,\n marginBottom: '20px',\n },\n newConversationButtonLarge: {\n padding: '12px 24px',\n borderRadius: '8px',\n background: primaryColor,\n color: getContrastTextColor(primaryColor),\n border: 'none',\n cursor: 'pointer',\n fontSize: '14px',\n fontWeight: 600,\n transition: 'all 0.2s ease-out',\n },\n fetchPreviousButton: {\n marginTop: '10px',\n background: 'transparent',\n border: 'none',\n color: primaryColor,\n cursor: 'pointer',\n fontSize: '13px',\n textDecoration: 'underline',\n opacity: 1,\n },\n // Back button for message view header\n backButton: {\n background: 'transparent',\n border: 'none',\n color: getContrastTextColor(primaryColor),\n cursor: 'pointer',\n padding: '6px 0px',\n marginRight: '4px',\n fontSize: '16px',\n lineHeight: 1,\n borderRadius: '4px',\n transition: 'background 0.2s ease-out',\n opacity: 0.9,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n },\n // Header with back button layout\n headerWithBack: {\n display: 'flex',\n alignItems: 'center',\n },\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"styles.js","sourceRoot":"","sources":["../../../../../../src/extensions/conversations/external/components/styles.ts"],"names":[],"mappings":"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","sourcesContent":["// Inline styles following PostHog design system\n\nimport type { WidgetPosition } from '../../../../posthog-conversations-types'\nimport { Z_INDEX_CONVERSATIONS } from '../../../../constants'\n\n/**\n * Calculate contrasting text color (black or white) based on background brightness\n * Uses HSP (Highly Sensitive Purity) brightness formula\n */\nfunction getContrastTextColor(hexColor: string): string {\n const hex = hexColor.replace(/^#/, '')\n const fullHex = hex.length === 3 ? hex[0] + hex[0] + hex[1] + hex[1] + hex[2] + hex[2] : hex\n\n const r = parseInt(fullHex.slice(0, 2), 16)\n const g = parseInt(fullHex.slice(2, 4), 16)\n const b = parseInt(fullHex.slice(4, 6), 16)\n\n // HSP brightness formula\n const hsp = Math.sqrt(0.299 * (r * r) + 0.587 * (g * g) + 0.114 * (b * b))\n return hsp > 127.5 ? '#020617' : 'white'\n}\n\nexport const getStyles = (primaryColor: string, position: WidgetPosition = 'bottom_right') => {\n const isLeft = position.includes('left')\n const isTop = position.includes('top')\n\n return {\n widget: {\n position: 'fixed' as const,\n ...(isTop ? { top: '20px' } : { bottom: '20px' }),\n ...(isLeft ? { left: '20px' } : { right: '20px' }),\n zIndex: Z_INDEX_CONVERSATIONS,\n fontFamily:\n '-apple-system, BlinkMacSystemFont, \"Inter\", \"Segoe UI\", \"Roboto\", Helvetica, Arial, sans-serif',\n },\n buttonContainer: {\n position: 'relative' as const,\n },\n button: {\n width: '50px',\n height: '50px',\n borderRadius: '50%',\n background: primaryColor,\n color: getContrastTextColor(primaryColor),\n border: 'none',\n cursor: 'pointer',\n boxShadow: '0 4px 12px rgba(0, 0, 0, 0.15)',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n transition: 'transform 0.2s ease-out, box-shadow 0.2s ease-out',\n },\n unreadBadge: {\n position: 'absolute' as const,\n ...(isTop ? { bottom: '-4px' } : { top: '-4px' }),\n ...(isLeft ? { left: '-4px' } : { right: '-4px' }),\n minWidth: '20px',\n height: '20px',\n borderRadius: '10px',\n background: '#ef4444',\n color: 'white',\n fontSize: '11px',\n fontWeight: 600,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n padding: '0 5px',\n boxShadow: '0 2px 4px rgba(0, 0, 0, 0.2)',\n border: '2px solid white',\n boxSizing: 'border-box' as const,\n },\n window: {\n position: 'absolute' as const,\n ...(isTop ? { top: 0 } : { bottom: 0 }),\n ...(isLeft ? { left: 0 } : { right: 0 }),\n background: 'white',\n borderRadius: '10px',\n boxShadow: '0 10px 25px -3px rgba(0,0,0,0.12), 0 4px 12px -2px rgba(0,0,0,0.10)',\n display: 'flex',\n flexDirection: 'column' as const,\n overflow: 'hidden',\n transition: 'all 0.3s cubic-bezier(0.4, 0, 0.2, 1)',\n //border: '1px solid #dcdcdc',\n border: 'none',\n },\n windowOpen: {\n width: '400px',\n maxWidth: 'calc(100vw - 40px)',\n height: '600px',\n maxHeight: 'calc(100vh - 100px)',\n },\n header: {\n background: primaryColor,\n color: getContrastTextColor(primaryColor),\n padding: '8px 12px',\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n flexShrink: 0,\n },\n headerTitle: {\n fontWeight: 500,\n fontSize: '14px',\n },\n headerActions: {\n display: 'flex',\n gap: '4px',\n alignItems: 'center',\n },\n headerLinkButton: {\n background: 'transparent',\n border: 'none',\n color: getContrastTextColor(primaryColor),\n cursor: 'pointer',\n padding: '6px 8px',\n fontSize: '12px',\n borderRadius: '4px',\n opacity: 0.9,\n },\n headerButton: {\n background: 'transparent',\n border: 'none',\n color: getContrastTextColor(primaryColor),\n cursor: 'pointer',\n padding: '6px 8px',\n fontSize: '16px',\n lineHeight: 1,\n borderRadius: '4px',\n transition: 'background 0.2s ease-out',\n opacity: 0.9,\n },\n messages: {\n flex: 1,\n overflowY: 'auto' as const,\n padding: '14px',\n display: 'flex',\n flexDirection: 'column' as const,\n gap: '8px',\n background: 'white',\n },\n message: {\n display: 'flex',\n flexDirection: 'column' as const,\n maxWidth: '85%',\n animation: 'fadeIn 0.2s ease-out',\n },\n messageCustomer: {\n alignSelf: 'flex-end',\n alignItems: 'flex-end',\n },\n messageAgent: {\n alignSelf: 'flex-start',\n alignItems: 'flex-start',\n },\n messageAuthor: {\n fontSize: '10px',\n color: '#939393',\n marginBottom: '4px',\n fontWeight: 500,\n },\n messageContent: {\n padding: '8px 12px',\n borderRadius: '8px',\n fontSize: '12px',\n lineHeight: 1.5,\n wordWrap: 'break-word' as const,\n whiteSpace: 'pre-wrap' as const,\n },\n messageContentCustomer: {\n background: primaryColor,\n color: getContrastTextColor(primaryColor),\n borderBottomRightRadius: '2px',\n },\n messageContentAgent: {\n background: 'white',\n color: '#020617',\n border: '1.5px solid #dcdcdc',\n borderBottomLeftRadius: '2px',\n },\n messageTime: {\n fontSize: '10px',\n color: '#939393',\n marginTop: '4px',\n opacity: 0.8,\n },\n error: {\n padding: '10px 16px',\n background: '#fee2e2',\n color: '#991b1b',\n fontSize: '13px',\n borderTop: '1px solid #fecaca',\n borderBottom: '1px solid #fecaca',\n textAlign: 'center' as const,\n fontWeight: 500,\n },\n inputContainer: {\n padding: '8px 12px',\n background: 'white',\n borderTop: '1px solid #dcdcdc',\n display: 'flex',\n gap: '8px',\n alignItems: 'center', // Changed from flex-end to center to vertically align input and sendButton\n flexShrink: 0,\n },\n resolvedBanner: {\n paddingTop: '12px',\n background: 'white',\n borderTop: '1px solid #dcdcdc',\n display: 'flex',\n flexDirection: 'column' as const,\n flexShrink: 0,\n },\n resolvedBannerText: {\n padding: '0 20px',\n fontSize: '13px',\n color: '#64748b',\n textAlign: 'center' as const,\n lineHeight: 1.5,\n },\n input: {\n flex: 1,\n maxHeight: '120px',\n fontSize: '14px',\n resize: 'vertical',\n fontFamily: 'inherit',\n lineHeight: 1.5,\n color: '#020617',\n background: 'white',\n border: 'none',\n outline: 'none',\n transition: 'border-color 0.2s ease-out, box-shadow 0.2s ease-out',\n display: 'flex',\n alignItems: 'center',\n fieldSizing: 'content',\n },\n sendButton: {\n width: '33px',\n height: '33px', // Match input minHeight for vertical alignment\n borderRadius: '10px',\n background: primaryColor,\n color: getContrastTextColor(primaryColor),\n border: 'none',\n cursor: 'pointer',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n transition: 'all 0.2s ease-out',\n boxShadow: '0 2px 0 rgba(0, 0, 0, 0.045)',\n fontWeight: 700,\n flexShrink: 0,\n },\n // Identification form styles\n identificationForm: {\n flex: 1,\n display: 'flex',\n flexDirection: 'column' as const,\n padding: '24px',\n background: '#eeeded',\n overflowY: 'auto' as const,\n },\n formTitle: {\n fontSize: '18px',\n fontWeight: 600,\n color: '#020617',\n marginBottom: '8px',\n },\n formDescription: {\n fontSize: '14px',\n color: '#64748b',\n marginBottom: '24px',\n lineHeight: 1.5,\n },\n recoverFooter: {\n padding: '10px 14px',\n borderTop: '1px solid #e5e7eb',\n fontSize: '12px',\n color: '#64748b',\n lineHeight: 1.5,\n flexShrink: 0,\n textAlign: 'center',\n },\n recoverFooterLink: {\n background: 'none',\n border: 'none',\n padding: 0,\n color: '#64748b',\n cursor: 'pointer',\n fontSize: '12px',\n fontFamily: 'inherit',\n textDecoration: 'underline',\n },\n formField: {\n marginBottom: '16px',\n },\n formLabel: {\n display: 'block',\n fontSize: '13px',\n fontWeight: 500,\n color: '#020617',\n marginBottom: '6px',\n },\n formInput: {\n width: '100%',\n padding: '10px 12px',\n border: '1px solid #dcdcdc',\n borderRadius: '6px',\n fontSize: '14px',\n fontFamily: 'inherit',\n color: '#020617',\n background: 'white',\n transition: 'border-color 0.2s ease-out, box-shadow 0.2s ease-out',\n boxSizing: 'border-box' as const,\n },\n formInputError: {\n borderColor: '#ef4444',\n },\n formError: {\n fontSize: '12px',\n color: '#ef4444',\n marginTop: '4px',\n },\n formSubmitButton: {\n width: '100%',\n padding: '12px 16px',\n borderRadius: '6px',\n background: primaryColor,\n color: getContrastTextColor(primaryColor),\n border: 'none',\n cursor: 'pointer',\n fontSize: '14px',\n fontWeight: 600,\n transition: 'all 0.2s ease-out',\n marginTop: '8px',\n },\n formOptional: {\n fontSize: '12px',\n color: '#939393',\n fontWeight: 400,\n },\n restoreRequestSuccess: {\n marginTop: '12px',\n fontSize: '12px',\n color: '#166534',\n background: '#dcfce7',\n border: '1px solid #86efac',\n borderRadius: '6px',\n padding: '10px 12px',\n lineHeight: 1.4,\n },\n // Ticket list styles\n ticketListContainer: {\n flex: 1,\n display: 'flex',\n flexDirection: 'column' as const,\n background: 'white',\n overflowY: 'auto' as const,\n },\n ticketList: {\n flex: 1,\n overflowY: 'auto' as const,\n },\n ticketItem: {\n padding: '14px 16px',\n borderBottom: '1px solid #f1f1f1',\n cursor: 'pointer',\n transition: 'background 0.15s ease-out',\n background: 'white',\n display: 'flex',\n alignItems: 'center',\n gap: '12px',\n },\n ticketItemUnread: {\n background: '#fafafa',\n },\n ticketItemContent: {\n display: 'flex',\n flexDirection: 'column' as const,\n gap: '6px',\n flex: 1,\n minWidth: 0, // Allow text truncation\n },\n ticketItemArrow: {\n color: '#939393',\n flexShrink: 0,\n display: 'flex',\n alignItems: 'center',\n },\n ticketItemHeader: {\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'flex-start',\n gap: '8px',\n },\n ticketPreview: {\n fontSize: '13px',\n color: '#020617',\n lineHeight: 1.4,\n flex: 1,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap' as const,\n },\n ticketPreviewUnread: {\n fontSize: '13px',\n color: '#020617',\n lineHeight: 1.4,\n flex: 1,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap' as const,\n fontWeight: 600,\n },\n ticketUnreadBadge: {\n minWidth: '18px',\n height: '18px',\n borderRadius: '9px',\n background: '#ef4444',\n color: 'white',\n fontSize: '10px',\n fontWeight: 600,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n padding: '0 5px',\n flexShrink: 0,\n },\n ticketMeta: {\n display: 'flex',\n alignItems: 'center',\n gap: '8px',\n },\n ticketTime: {\n fontSize: '11px',\n color: '#939393',\n },\n ticketStatus: {\n fontSize: '10px',\n color: '#64748b',\n background: '#f1f5f9',\n padding: '2px 6px',\n borderRadius: '4px',\n textTransform: 'uppercase' as const,\n letterSpacing: '0.3px',\n },\n newConversationButton: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n margin: '12px 16px',\n padding: '10px 16px',\n borderRadius: '8px',\n background: primaryColor,\n color: getContrastTextColor(primaryColor),\n border: 'none',\n cursor: 'pointer',\n fontSize: '13px',\n fontWeight: 500,\n transition: 'all 0.2s ease-out',\n },\n // Ticket list loading state\n ticketListLoading: {\n flex: 1,\n display: 'flex',\n flexDirection: 'column' as const,\n alignItems: 'center',\n justifyContent: 'center',\n gap: '12px',\n color: '#64748b',\n fontSize: '13px',\n },\n loadingSpinner: {\n width: '24px',\n height: '24px',\n border: '2px solid #e2e8f0',\n borderTop: `2px solid ${primaryColor}`,\n borderRadius: '50%',\n animation: 'spin 0.8s linear infinite',\n },\n // Ticket list empty state\n ticketListEmpty: {\n flex: 1,\n display: 'flex',\n flexDirection: 'column' as const,\n alignItems: 'center',\n justifyContent: 'center',\n padding: '32px 24px',\n textAlign: 'center' as const,\n },\n emptyStateIcon: {\n color: '#cbd5e1',\n marginBottom: '16px',\n },\n emptyStateTitle: {\n fontSize: '16px',\n fontWeight: 600,\n color: '#020617',\n marginBottom: '8px',\n },\n emptyStateDescription: {\n fontSize: '13px',\n color: '#64748b',\n lineHeight: 1.5,\n marginBottom: '20px',\n },\n newConversationButtonLarge: {\n padding: '12px 24px',\n borderRadius: '8px',\n background: primaryColor,\n color: getContrastTextColor(primaryColor),\n border: 'none',\n cursor: 'pointer',\n fontSize: '14px',\n fontWeight: 600,\n transition: 'all 0.2s ease-out',\n },\n fetchPreviousButton: {\n marginTop: '10px',\n background: 'transparent',\n border: 'none',\n color: primaryColor,\n cursor: 'pointer',\n fontSize: '13px',\n textDecoration: 'underline',\n opacity: 1,\n },\n // Back button for message view header\n backButton: {\n background: 'transparent',\n border: 'none',\n color: getContrastTextColor(primaryColor),\n cursor: 'pointer',\n padding: '6px 0px',\n marginRight: '4px',\n fontSize: '16px',\n lineHeight: 1,\n borderRadius: '4px',\n transition: 'background 0.2s ease-out',\n opacity: 0.9,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n },\n // Header with back button layout\n headerWithBack: {\n display: 'flex',\n alignItems: 'center',\n },\n }\n}\n"]}
|
|
@@ -23,7 +23,7 @@ export declare class ConversationsManager implements ConversationsManagerInterfa
|
|
|
23
23
|
private _initializeWidgetPromise;
|
|
24
24
|
private _currentView;
|
|
25
25
|
private _tickets;
|
|
26
|
-
private
|
|
26
|
+
private _showTicketList;
|
|
27
27
|
constructor(config: ConversationsRemoteConfig, _posthog: PostHog);
|
|
28
28
|
/**
|
|
29
29
|
* Send a message programmatically via the API
|
|
@@ -105,6 +105,13 @@ export declare class ConversationsManager implements ConversationsManagerInterfa
|
|
|
105
105
|
* Load tickets list from API
|
|
106
106
|
*/
|
|
107
107
|
private _loadTickets;
|
|
108
|
+
private _computeShowTicketList;
|
|
109
|
+
private _isCurrentTicketResolved;
|
|
110
|
+
/**
|
|
111
|
+
* Patch the local _tickets cache with a new status for a given ticket and push
|
|
112
|
+
* any UI-relevant changes (resolved lock + list visibility) to the widget.
|
|
113
|
+
*/
|
|
114
|
+
private _applyTicketStatusUpdate;
|
|
108
115
|
/**
|
|
109
116
|
* Main poll function that polls based on current view
|
|
110
117
|
*/
|
|
@@ -1,4 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __assign = (this && this.__assign) || function () {
|
|
3
|
+
__assign = Object.assign || function(t) {
|
|
4
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
+
s = arguments[i];
|
|
6
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
+
t[p] = s[p];
|
|
8
|
+
}
|
|
9
|
+
return t;
|
|
10
|
+
};
|
|
11
|
+
return __assign.apply(this, arguments);
|
|
12
|
+
};
|
|
2
13
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
14
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
15
|
return new (P || (P = Promise))(function (resolve, reject) {
|
|
@@ -35,6 +46,31 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
35
46
|
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
36
47
|
}
|
|
37
48
|
};
|
|
49
|
+
var __read = (this && this.__read) || function (o, n) {
|
|
50
|
+
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
51
|
+
if (!m) return o;
|
|
52
|
+
var i = m.call(o), r, ar = [], e;
|
|
53
|
+
try {
|
|
54
|
+
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
55
|
+
}
|
|
56
|
+
catch (error) { e = { error: error }; }
|
|
57
|
+
finally {
|
|
58
|
+
try {
|
|
59
|
+
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
60
|
+
}
|
|
61
|
+
finally { if (e) throw e.error; }
|
|
62
|
+
}
|
|
63
|
+
return ar;
|
|
64
|
+
};
|
|
65
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
66
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
67
|
+
if (ar || !(i in from)) {
|
|
68
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
69
|
+
ar[i] = from[i];
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
|
73
|
+
};
|
|
38
74
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
75
|
exports.ConversationsManager = void 0;
|
|
40
76
|
exports.initConversations = initConversations;
|
|
@@ -78,7 +114,7 @@ var ConversationsManager = /** @class */ (function () {
|
|
|
78
114
|
// View state management for ticket list vs message view
|
|
79
115
|
this._currentView = 'messages';
|
|
80
116
|
this._tickets = [];
|
|
81
|
-
this.
|
|
117
|
+
this._showTicketList = false;
|
|
82
118
|
/**
|
|
83
119
|
* Handle user identification from the widget form
|
|
84
120
|
*/
|
|
@@ -240,9 +276,9 @@ var ConversationsManager = /** @class */ (function () {
|
|
|
240
276
|
* Handle ticket selection from the list
|
|
241
277
|
*/
|
|
242
278
|
this._handleSelectTicket = function (ticketId) { return __awaiter(_this, void 0, void 0, function () {
|
|
243
|
-
var _a, _b;
|
|
244
|
-
return __generator(this, function (
|
|
245
|
-
switch (
|
|
279
|
+
var _a, _b, _c;
|
|
280
|
+
return __generator(this, function (_d) {
|
|
281
|
+
switch (_d.label) {
|
|
246
282
|
case 0:
|
|
247
283
|
// Switch to this ticket
|
|
248
284
|
this._switchToTicketIfNeeded(ticketId);
|
|
@@ -252,13 +288,15 @@ var ConversationsManager = /** @class */ (function () {
|
|
|
252
288
|
// Switch view to messages
|
|
253
289
|
this._currentView = 'messages';
|
|
254
290
|
(_b = this._widgetRef) === null || _b === void 0 ? void 0 : _b.setView('messages');
|
|
291
|
+
// Push resolved state for this ticket so MessagesView locks the input if needed
|
|
292
|
+
(_c = this._widgetRef) === null || _c === void 0 ? void 0 : _c.setCurrentTicketResolved(this._isCurrentTicketResolved());
|
|
255
293
|
// Load messages for the selected ticket
|
|
256
294
|
return [4 /*yield*/, this._loadMessages()
|
|
257
295
|
// Mark as read if widget is open
|
|
258
296
|
];
|
|
259
297
|
case 1:
|
|
260
298
|
// Load messages for the selected ticket
|
|
261
|
-
|
|
299
|
+
_d.sent();
|
|
262
300
|
// Mark as read if widget is open
|
|
263
301
|
if (this._isWidgetOpen() && this._unreadCount > 0) {
|
|
264
302
|
this._markMessagesAsRead();
|
|
@@ -271,7 +309,7 @@ var ConversationsManager = /** @class */ (function () {
|
|
|
271
309
|
* Handle new conversation request
|
|
272
310
|
*/
|
|
273
311
|
this._handleNewConversation = function () {
|
|
274
|
-
var _a, _b;
|
|
312
|
+
var _a, _b, _c;
|
|
275
313
|
logger.info('New conversation requested');
|
|
276
314
|
// Clear current ticket
|
|
277
315
|
_this._currentTicketId = null;
|
|
@@ -281,8 +319,10 @@ var ConversationsManager = /** @class */ (function () {
|
|
|
281
319
|
// Switch view to messages
|
|
282
320
|
_this._currentView = 'messages';
|
|
283
321
|
(_a = _this._widgetRef) === null || _a === void 0 ? void 0 : _a.setView('messages');
|
|
322
|
+
// Fresh ticket is never resolved — unlock the input
|
|
323
|
+
(_b = _this._widgetRef) === null || _b === void 0 ? void 0 : _b.setCurrentTicketResolved(false);
|
|
284
324
|
// Clear messages and add greeting
|
|
285
|
-
(
|
|
325
|
+
(_c = _this._widgetRef) === null || _c === void 0 ? void 0 : _c.clearMessages(true);
|
|
286
326
|
};
|
|
287
327
|
/**
|
|
288
328
|
* Handle back to tickets request
|
|
@@ -856,6 +896,11 @@ var ConversationsManager = /** @class */ (function () {
|
|
|
856
896
|
this._markMessagesAsRead();
|
|
857
897
|
}
|
|
858
898
|
}
|
|
899
|
+
// Sync ticket_status so an agent-side resolve flips the UI to locked state even
|
|
900
|
+
// while we're polling messages (ticket polling doesn't run in messages view).
|
|
901
|
+
if (response.ticket_status) {
|
|
902
|
+
this._applyTicketStatusUpdate(this._currentTicketId, response.ticket_status);
|
|
903
|
+
}
|
|
859
904
|
if (response.messages.length > 0) {
|
|
860
905
|
(_b = this._widgetRef) === null || _b === void 0 ? void 0 : _b.addMessages(response.messages);
|
|
861
906
|
lastMessage = response.messages[response.messages.length - 1];
|
|
@@ -880,24 +925,25 @@ var ConversationsManager = /** @class */ (function () {
|
|
|
880
925
|
ConversationsManager.prototype._loadTickets = function () {
|
|
881
926
|
return __awaiter(this, void 0, void 0, function () {
|
|
882
927
|
var response, totalUnread, error_5;
|
|
883
|
-
var _a, _b;
|
|
884
|
-
return __generator(this, function (
|
|
885
|
-
switch (
|
|
928
|
+
var _a, _b, _c;
|
|
929
|
+
return __generator(this, function (_d) {
|
|
930
|
+
switch (_d.label) {
|
|
886
931
|
case 0:
|
|
887
|
-
|
|
932
|
+
_d.trys.push([0, 2, , 3]);
|
|
888
933
|
return [4 /*yield*/, this.getTickets()];
|
|
889
934
|
case 1:
|
|
890
|
-
response =
|
|
935
|
+
response = _d.sent();
|
|
891
936
|
this._tickets = response.results;
|
|
892
|
-
this.
|
|
893
|
-
(_a = this._widgetRef) === null || _a === void 0 ? void 0 : _a.updateTickets(response.results);
|
|
937
|
+
this._showTicketList = this._computeShowTicketList(response.results);
|
|
938
|
+
(_a = this._widgetRef) === null || _a === void 0 ? void 0 : _a.updateTickets(response.results, this._showTicketList);
|
|
894
939
|
totalUnread = response.results.reduce(function (sum, t) { return sum + (t.unread_count || 0); }, 0);
|
|
895
940
|
this._unreadCount = totalUnread;
|
|
896
941
|
(_b = this._widgetRef) === null || _b === void 0 ? void 0 : _b.setUnreadCount(totalUnread);
|
|
942
|
+
(_c = this._widgetRef) === null || _c === void 0 ? void 0 : _c.setCurrentTicketResolved(this._isCurrentTicketResolved());
|
|
897
943
|
logger.info('Tickets loaded', { count: response.results.length, totalUnread: totalUnread });
|
|
898
944
|
return [3 /*break*/, 3];
|
|
899
945
|
case 2:
|
|
900
|
-
error_5 =
|
|
946
|
+
error_5 = _d.sent();
|
|
901
947
|
logger.error('Failed to load tickets', error_5);
|
|
902
948
|
return [3 /*break*/, 3];
|
|
903
949
|
case 3: return [2 /*return*/];
|
|
@@ -905,6 +951,43 @@ var ConversationsManager = /** @class */ (function () {
|
|
|
905
951
|
});
|
|
906
952
|
});
|
|
907
953
|
};
|
|
954
|
+
ConversationsManager.prototype._computeShowTicketList = function (tickets) {
|
|
955
|
+
if (tickets.length > 1) {
|
|
956
|
+
return true;
|
|
957
|
+
}
|
|
958
|
+
if (tickets.length === 1 && tickets[0].status === 'resolved') {
|
|
959
|
+
return true;
|
|
960
|
+
}
|
|
961
|
+
return false;
|
|
962
|
+
};
|
|
963
|
+
ConversationsManager.prototype._isCurrentTicketResolved = function () {
|
|
964
|
+
var _this = this;
|
|
965
|
+
if (!this._currentTicketId) {
|
|
966
|
+
return false;
|
|
967
|
+
}
|
|
968
|
+
var ticket = this._tickets.find(function (t) { return t.id === _this._currentTicketId; });
|
|
969
|
+
return (ticket === null || ticket === void 0 ? void 0 : ticket.status) === 'resolved';
|
|
970
|
+
};
|
|
971
|
+
/**
|
|
972
|
+
* Patch the local _tickets cache with a new status for a given ticket and push
|
|
973
|
+
* any UI-relevant changes (resolved lock + list visibility) to the widget.
|
|
974
|
+
*/
|
|
975
|
+
ConversationsManager.prototype._applyTicketStatusUpdate = function (ticketId, status) {
|
|
976
|
+
var _a, _b;
|
|
977
|
+
var idx = this._tickets.findIndex(function (t) { return t.id === ticketId; });
|
|
978
|
+
if (idx === -1) {
|
|
979
|
+
return;
|
|
980
|
+
}
|
|
981
|
+
if (this._tickets[idx].status === status) {
|
|
982
|
+
return;
|
|
983
|
+
}
|
|
984
|
+
this._tickets = __spreadArray(__spreadArray(__spreadArray([], __read(this._tickets.slice(0, idx)), false), [
|
|
985
|
+
__assign(__assign({}, this._tickets[idx]), { status: status })
|
|
986
|
+
], false), __read(this._tickets.slice(idx + 1)), false);
|
|
987
|
+
this._showTicketList = this._computeShowTicketList(this._tickets);
|
|
988
|
+
(_a = this._widgetRef) === null || _a === void 0 ? void 0 : _a.updateTickets(this._tickets, this._showTicketList);
|
|
989
|
+
(_b = this._widgetRef) === null || _b === void 0 ? void 0 : _b.setCurrentTicketResolved(this._isCurrentTicketResolved());
|
|
990
|
+
};
|
|
908
991
|
/**
|
|
909
992
|
* Determine initial view based on ticket count
|
|
910
993
|
*/
|
|
@@ -947,13 +1030,19 @@ var ConversationsManager = /** @class */ (function () {
|
|
|
947
1030
|
*/
|
|
948
1031
|
ConversationsManager.prototype._applyTicketsToState = function (tickets) {
|
|
949
1032
|
this._tickets = tickets;
|
|
950
|
-
this.
|
|
1033
|
+
this._showTicketList = this._computeShowTicketList(tickets);
|
|
951
1034
|
var totalUnread = tickets.reduce(function (sum, t) { return sum + (t.unread_count || 0); }, 0);
|
|
952
1035
|
this._unreadCount = totalUnread;
|
|
953
1036
|
if (tickets.length >= 2) {
|
|
954
1037
|
this._currentTicketId = null;
|
|
955
1038
|
return 'tickets';
|
|
956
1039
|
}
|
|
1040
|
+
// Single resolved ticket: show list so user can start a new conversation instead of writing to it
|
|
1041
|
+
if (tickets.length === 1 && tickets[0].status === 'resolved') {
|
|
1042
|
+
this._currentTicketId = null;
|
|
1043
|
+
this._persistence.clearTicketId();
|
|
1044
|
+
return 'tickets';
|
|
1045
|
+
}
|
|
957
1046
|
if (tickets.length === 1) {
|
|
958
1047
|
this._currentTicketId = tickets[0].id;
|
|
959
1048
|
this._persistence.saveTicketId(tickets[0].id);
|
|
@@ -1240,29 +1329,30 @@ var ConversationsManager = /** @class */ (function () {
|
|
|
1240
1329
|
ConversationsManager.prototype._loadTicketsAndReconcileView = function () {
|
|
1241
1330
|
return __awaiter(this, void 0, void 0, function () {
|
|
1242
1331
|
var identityBefore, response, view, error_7;
|
|
1243
|
-
var _a, _b, _c;
|
|
1244
|
-
return __generator(this, function (
|
|
1245
|
-
switch (
|
|
1332
|
+
var _a, _b, _c, _d;
|
|
1333
|
+
return __generator(this, function (_e) {
|
|
1334
|
+
switch (_e.label) {
|
|
1246
1335
|
case 0:
|
|
1247
|
-
|
|
1336
|
+
_e.trys.push([0, 2, , 3]);
|
|
1248
1337
|
identityBefore = this._posthog.config.identity_distinct_id;
|
|
1249
1338
|
return [4 /*yield*/, this.getTickets()];
|
|
1250
1339
|
case 1:
|
|
1251
|
-
response =
|
|
1340
|
+
response = _e.sent();
|
|
1252
1341
|
if (this._posthog.config.identity_distinct_id !== identityBefore) {
|
|
1253
1342
|
return [2 /*return*/];
|
|
1254
1343
|
}
|
|
1255
1344
|
view = this._applyTicketsToState(response.results);
|
|
1256
|
-
(_a = this._widgetRef) === null || _a === void 0 ? void 0 : _a.updateTickets(response.results);
|
|
1345
|
+
(_a = this._widgetRef) === null || _a === void 0 ? void 0 : _a.updateTickets(response.results, this._showTicketList);
|
|
1257
1346
|
(_b = this._widgetRef) === null || _b === void 0 ? void 0 : _b.setUnreadCount(this._unreadCount);
|
|
1347
|
+
(_c = this._widgetRef) === null || _c === void 0 ? void 0 : _c.setCurrentTicketResolved(this._isCurrentTicketResolved());
|
|
1258
1348
|
this._currentView = view;
|
|
1259
|
-
(
|
|
1349
|
+
(_d = this._widgetRef) === null || _d === void 0 ? void 0 : _d.setView(view);
|
|
1260
1350
|
if (view === 'messages' && this._currentTicketId) {
|
|
1261
1351
|
void this._loadMessages();
|
|
1262
1352
|
}
|
|
1263
1353
|
return [3 /*break*/, 3];
|
|
1264
1354
|
case 2:
|
|
1265
|
-
error_7 =
|
|
1355
|
+
error_7 = _e.sent();
|
|
1266
1356
|
logger.error('Failed to load tickets after identity change', error_7);
|
|
1267
1357
|
return [3 /*break*/, 3];
|
|
1268
1358
|
case 3: return [2 /*return*/];
|
|
@@ -1332,7 +1422,7 @@ var ConversationsManager = /** @class */ (function () {
|
|
|
1332
1422
|
// Render widget with ref
|
|
1333
1423
|
(0, preact_1.render)((0, jsx_runtime_1.jsx)(ConversationsWidget_1.ConversationsWidget, { ref: function (ref) {
|
|
1334
1424
|
_this._widgetRef = ref;
|
|
1335
|
-
}, config: this._config, initialState: initialState, initialUserTraits: initialUserTraits, isUserIdentified: this._posthog._isIdentified(), isIdentityMode: !(0, core_1.isNull)(this._identityFields()), initialView: initialView, initialTickets: initialTickets,
|
|
1425
|
+
}, config: this._config, initialState: initialState, initialUserTraits: initialUserTraits, isUserIdentified: this._posthog._isIdentified(), isIdentityMode: !(0, core_1.isNull)(this._identityFields()), initialView: initialView, initialTickets: initialTickets, showTicketList: this._showTicketList, onSendMessage: this._handleSendMessage, onStateChange: this._handleStateChange, onIdentify: this._handleIdentify, onRequestRestoreLink: this._handleRequestRestoreLink, onSelectTicket: this._handleSelectTicket, onNewConversation: this._handleNewConversation, onBackToTickets: this._handleBackToTickets, onViewChange: this._handleViewChange }), container);
|
|
1336
1426
|
};
|
|
1337
1427
|
return ConversationsManager;
|
|
1338
1428
|
}());
|