@product7/product7-js 0.6.4 → 0.6.7

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.
@@ -1 +1 @@
1
- {"version":3,"file":"product7-js.js","sources":["../src/api/mock-data/index.js","../src/api/utils/helpers.js","../src/api/services/ChangelogService.js","../src/api/services/FeedbackService.js","../src/api/services/HelpService.js","../src/api/services/LiveChatService.js","../src/utils/errors.js","../src/api/services/SurveyService.js","../src/core/BaseAPIService.js","../src/core/APIService.js","../src/core/EventBus.js","../src/styles/base.js","../src/styles/changelog.js","../src/styles/components.js","../src/styles/design-tokens.js","../src/styles/feedback.js","../src/styles/liveChat-components.js","../src/styles/liveChat-core.js","../src/styles/liveChat-features.js","../src/styles/liveChat-views.js","../src/styles/liveChat.js","../src/styles/survey.js","../src/styles/styles.js","../src/utils/helpers.js","../src/widgets/BaseWidget.js","../src/widgets/ButtonWidget.js","../src/widgets/ChangelogWidget.js","../src/widgets/InlineWidget.js","../src/core/WebSocketService.js","../src/styles/liveChatCustomStyles.js","../src/utils/notificationSoundData.js","../src/utils/NotificationSound.js","../src/widgets/liveChat/LiveChatState.js","../src/widgets/liveChat/components/LiveChatLauncher.js","../src/widgets/liveChat/components/NavigationTabs.js","../src/widgets/liveChat/components/LiveChatPanel.js","../src/widgets/liveChat/views/ChangelogView.js","../src/widgets/liveChat/views/ChatView.js","../src/widgets/liveChat/views/ConversationsView.js","../src/widgets/liveChat/views/HelpView.js","../src/widgets/liveChat/views/HomeView.js","../src/widgets/liveChat/views/PreChatFormView.js","../src/widgets/LiveChatWidget.js","../src/widgets/SurveyWidget.js","../src/widgets/TabWidget.js","../src/widgets/WidgetFactory.js","../src/core/Product7.js","../src/index.js"],"sourcesContent":["export const MOCK_CHANGELOGS = [\n\t{\n\t\tid: 'changelog_1',\n\t\ttitle:\n\t\t\t'Feature prioritization, multiple roadmaps, and feature request analytics.',\n\t\texcerpt:\n\t\t\t'We are super excited to bring you the long-waited feature prioritization together with many quality updates!',\n\t\tdescription:\n\t\t\t'We are super excited to bring you the long-waited feature prioritization together with many quality updates!',\n\t\tcover_image:\n\t\t\t'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAwIiBoZWlnaHQ9IjI1MCIgdmlld0JveD0iMCAwIDQwMCAyNTAiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHJlY3Qgd2lkdGg9IjQwMCIgaGVpZ2h0PSIyNTAiIGZpbGw9IiNEQkVBRkUiLz48cmVjdCB4PSIyMCIgeT0iMjAiIHdpZHRoPSIzNjAiIGhlaWdodD0iMjEwIiByeD0iOCIgZmlsbD0id2hpdGUiIHN0cm9rZT0iIzE1NUVFRiIgc3Ryb2tlLXdpZHRoPSIyIi8+PHJlY3QgeD0iMzAiIHk9IjQwIiB3aWR0aD0iODAiIGhlaWdodD0iOCIgcng9IjQiIGZpbGw9IiNFNUU3RUIiLz48cmVjdCB4PSIzMCIgeT0iNjAiIHdpZHRoPSIxNDAiIGhlaWdodD0iNDAiIHJ4PSI0IiBmaWxsPSIjRjNGNEY2Ii8+PHRleHQgeD0iNDAiIHk9Ijg1IiBmb250LWZhbWlseT0ic3lzdGVtLXVpIiBmb250LXNpemU9IjE2IiBmb250LXdlaWdodD0iNjAwIiBmaWxsPSIjMUYyOTM3Ij4yMDA8L3RleHQ+PHRleHQgeD0iNDAiIHk9Ijk1IiBmb250LWZhbWlseT0ic3lzdGVtLXVpIiBmb250LXNpemU9IjgiIGZpbGw9IiM2QjcyODAiPlBvc3RzPC90ZXh0PjxyZWN0IHg9IjE4MCIgeT0iNjAiIHdpZHRoPSI4MCIgaGVpZ2h0PSI0MCIgcng9IjQiIGZpbGw9IiNGM0Y0RjYiLz48cmVjdCB4PSIyNzAiIHk9IjYwIiB3aWR0aD0iODAiIGhlaWdodD0iNDAiIHJ4PSI0IiBmaWxsPSIjRjNGNEY2Ii8+PHBhdGggZD0iTTMwIDEzMEgzNzBNMzAgMTUwSDM3ME0zMCAxNzBIMzcwTTMwIDE5MEgzNzAiIHN0cm9rZT0iI0U1RTdFQiIgc3Ryb2tlLXdpZHRoPSIxIi8+PHBhdGggZD0iTTUwIDE2MEwxMDAgMTQwTDE1MCAxNTBMMjAwIDEzMEwyNTAgMTM1TDMwMCAxMjBMMzUwIDEyNSIgc3Ryb2tlPSIjMTU1RUVGIiBzdHJva2Utd2lkdGg9IjIiIGZpbGw9Im5vbmUiLz48L3N2Zz4=',\n\t\tslug: 'feature-prioritization-roadmaps-analytics',\n\t\tpublished_at: '2025-03-15T10:00:00Z',\n\t\tlabels: [\n\t\t\t{ name: 'New Feature', color: '#10B981' },\n\t\t\t{ name: 'Analytics', color: '#6366F1' },\n\t\t],\n\t\tstatus: 'published',\n\t},\n\t{\n\t\tid: 'changelog_2',\n\t\ttitle: 'Dark mode support and UI improvements',\n\t\texcerpt:\n\t\t\t'You asked for it, we delivered! Dark mode is now available across all pages.',\n\t\tdescription:\n\t\t\t'You asked for it, we delivered! Dark mode is now available across all pages.',\n\t\tcover_image:\n\t\t\t'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAwIiBoZWlnaHQ9IjI1MCIgdmlld0JveD0iMCAwIDQwMCAyNTAiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHJlY3Qgd2lkdGg9IjQwMCIgaGVpZ2h0PSIyNTAiIGZpbGw9IiMxRjI5MzciLz48cmVjdCB4PSIyMCIgeT0iMjAiIHdpZHRoPSIzNjAiIGhlaWdodD0iMjEwIiByeD0iOCIgZmlsbD0iIzM3NDE1MSIgc3Ryb2tlPSIjNEI1NTYzIiBzdHJva2Utd2lkdGg9IjEiLz48Y2lyY2xlIGN4PSIyMDAiIGN5PSIxMjUiIHI9IjQwIiBmaWxsPSIjRkJCRjI0Ii8+PHBhdGggZD0iTTIyMCAxMjVDMjIwIDEzNiAyMTEgMTQ1IDIwMCAxNDVDMTg5IDE0NSAxODAgMTM2IDE4MCAxMjVDMTgwIDExNCAxODkgMTA1IDIwMCAxMDVDMjExIDEwNSAyMjAgMTE0IDIyMCAxMjVaIiBmaWxsPSIjMUYyOTM3Ii8+PC9zdmc+',\n\t\tslug: 'dark-mode-ui-improvements',\n\t\tpublished_at: '2025-03-01T10:00:00Z',\n\t\tlabels: [{ name: 'Enhancement', color: '#8B5CF6' }],\n\t\tstatus: 'published',\n\t},\n\t{\n\t\tid: 'changelog_3',\n\t\ttitle: 'Performance improvements and bug fixes',\n\t\texcerpt:\n\t\t\t'This release includes major performance improvements and several bug fixes.',\n\t\tdescription:\n\t\t\t'This release includes major performance improvements and several bug fixes.',\n\t\tslug: 'performance-improvements-bug-fixes',\n\t\tpublished_at: '2025-02-15T10:00:00Z',\n\t\tlabels: [\n\t\t\t{ name: 'Bug Fix', color: '#EF4444' },\n\t\t\t{ name: 'Performance', color: '#F59E0B' },\n\t\t],\n\t\tstatus: 'published',\n\t},\n];\n\nexport const MOCK_CONVERSATIONS = [\n\t{\n\t\tid: 'conv_1',\n\t\tsubject: 'Question about pricing',\n\t\tstatus: 'open',\n\t\tlast_message_at: new Date(Date.now() - 49 * 60 * 1000).toISOString(),\n\t\tcreated_at: new Date(Date.now() - 2 * 24 * 60 * 60 * 1000).toISOString(),\n\t\tunread: 1,\n\t\tassigned_user: {\n\t\t\tid: 'user_1',\n\t\t\tname: 'Sarah',\n\t\t\tavatar: null,\n\t\t},\n\t},\n\t{\n\t\tid: 'conv_2',\n\t\tsubject: 'Feature request',\n\t\tstatus: 'open',\n\t\tlast_message_at: new Date(\n\t\t\tDate.now() - 6 * 24 * 60 * 60 * 1000\n\t\t).toISOString(),\n\t\tcreated_at: new Date(Date.now() - 10 * 24 * 60 * 60 * 1000).toISOString(),\n\t\tunread: 0,\n\t\tassigned_user: {\n\t\t\tid: 'user_2',\n\t\t\tname: 'Tom',\n\t\t\tavatar: null,\n\t\t},\n\t},\n];\n\nexport const MOCK_MESSAGES = {\n\tconv_1: [\n\t\t{\n\t\t\tid: 'msg_1',\n\t\t\tcontent: \"Hi there! 👋 I'm Sarah. How can I help you today?\",\n\t\t\tsender_type: 'agent',\n\t\t\tsender_name: 'Sarah',\n\t\t\tsender_avatar: null,\n\t\t\tcreated_at: new Date(Date.now() - 50 * 60 * 1000).toISOString(),\n\t\t},\n\t\t{\n\t\t\tid: 'msg_2',\n\t\t\tcontent: 'Hi! I have a question about your enterprise pricing.',\n\t\t\tsender_type: 'customer',\n\t\t\tcreated_at: new Date(Date.now() - 49 * 60 * 1000).toISOString(),\n\t\t},\n\t],\n\tconv_2: [\n\t\t{\n\t\t\tid: 'msg_3',\n\t\t\tcontent: \"Hello! I'm Tom from the product team.\",\n\t\t\tsender_type: 'agent',\n\t\t\tsender_name: 'Tom',\n\t\t\tsender_avatar: null,\n\t\t\tcreated_at: new Date(Date.now() - 7 * 24 * 60 * 60 * 1000).toISOString(),\n\t\t},\n\t\t{\n\t\t\tid: 'msg_4',\n\t\t\tcontent: 'I would love to see a dark mode feature!',\n\t\t\tsender_type: 'customer',\n\t\t\tcreated_at: new Date(\n\t\t\t\tDate.now() - 6 * 24 * 60 * 60 * 1000 - 30 * 60 * 1000\n\t\t\t).toISOString(),\n\t\t},\n\t\t{\n\t\t\tid: 'msg_5',\n\t\t\tcontent:\n\t\t\t\t\"Great suggestion! That feature will be available next week. I'll let you know when it's ready.\",\n\t\t\tsender_type: 'agent',\n\t\t\tsender_name: 'Tom',\n\t\t\tsender_avatar: null,\n\t\t\tcreated_at: new Date(Date.now() - 6 * 24 * 60 * 60 * 1000).toISOString(),\n\t\t},\n\t],\n};\n\nexport const MOCK_HELP_COLLECTIONS = [\n\t{\n\t\tid: 'collection_1',\n\t\ttitle: 'Product Overview',\n\t\tdescription: 'See how your AI-first customer service solution works.',\n\t\tarticleCount: 24,\n\t\ticon: 'ph-book-open',\n\t\turl: '#',\n\t},\n\t{\n\t\tid: 'collection_2',\n\t\ttitle: 'Getting Started',\n\t\tdescription: 'Everything you need to know to get started with Product7.',\n\t\tarticleCount: 30,\n\t\ticon: 'ph-rocket',\n\t\turl: '#',\n\t},\n\t{\n\t\tid: 'collection_3',\n\t\ttitle: 'AI Agent',\n\t\tdescription:\n\t\t\t'Resolving customer questions instantly and accurately—from live chat to email.',\n\t\tarticleCount: 82,\n\t\ticon: 'ph-robot',\n\t\turl: '#',\n\t},\n\t{\n\t\tid: 'collection_4',\n\t\ttitle: 'Channels',\n\t\tdescription:\n\t\t\t'Enabling the channels you use to communicate with customers, all from the Inbox.',\n\t\tarticleCount: 45,\n\t\ticon: 'ph-chat-circle',\n\t\turl: '#',\n\t},\n\t{\n\t\tid: 'collection_5',\n\t\ttitle: 'Billing & Payments',\n\t\tdescription: 'Manage your subscription, invoices, and payment methods.',\n\t\tarticleCount: 12,\n\t\ticon: 'ph-credit-card',\n\t\turl: '#',\n\t},\n];\n\nexport const MOCK_SURVEYS = [\n\t{\n\t\tid: 'mock_nps_survey',\n\t\tname: 'NPS Score',\n\t\tslug: 'nps',\n\t\tstatus: 'active',\n\t\ttrigger_type: 'manual',\n\t\tpages: [\n\t\t\t{\n\t\t\t\tid: 'nps-page-1',\n\t\t\t\ttype: 'rating',\n\t\t\t\ttitle: 'How likely are you to recommend us to a friend?',\n\t\t\t\tdescription: '',\n\t\t\t\tplaceholder: '',\n\t\t\t\trating_config: {\n\t\t\t\t\tscale: 11,\n\t\t\t\t\tlow_label: 'Very unlikely',\n\t\t\t\t\thigh_label: 'Very likely',\n\t\t\t\t\tsurvey_type: 'nps',\n\t\t\t\t},\n\t\t\t\tmultiple_choice_config: null,\n\t\t\t\tlink_config: null,\n\t\t\t\tafter_this_page: { default: 'end_survey', conditions: [] },\n\t\t\t\trequired: true,\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tid: 'mock_csat_survey',\n\t\tname: 'CSAT Survey',\n\t\tslug: 'csat',\n\t\tstatus: 'active',\n\t\ttrigger_type: 'manual',\n\t\tpages: [\n\t\t\t{\n\t\t\t\tid: 'csat-page-1',\n\t\t\t\ttype: 'rating',\n\t\t\t\ttitle: 'How satisfied are you with our service?',\n\t\t\t\tdescription: '',\n\t\t\t\tplaceholder: '',\n\t\t\t\trating_config: {\n\t\t\t\t\tscale: 5,\n\t\t\t\t\tlow_label: 'Very dissatisfied',\n\t\t\t\t\thigh_label: 'Very satisfied',\n\t\t\t\t\tsurvey_type: 'emoji',\n\t\t\t\t},\n\t\t\t\tmultiple_choice_config: null,\n\t\t\t\tlink_config: null,\n\t\t\t\tafter_this_page: { default: 'end_survey', conditions: [] },\n\t\t\t\trequired: true,\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tid: 'mock_ces_survey',\n\t\tname: 'Customer Effort Score',\n\t\tslug: 'ces',\n\t\tstatus: 'active',\n\t\ttrigger_type: 'manual',\n\t\tpages: [\n\t\t\t{\n\t\t\t\tid: 'ces-page-1',\n\t\t\t\ttype: 'rating',\n\t\t\t\ttitle: 'How easy was it to use our product?',\n\t\t\t\tdescription: '',\n\t\t\t\tplaceholder: '',\n\t\t\t\trating_config: {\n\t\t\t\t\tscale: 5,\n\t\t\t\t\tlow_label: 'Very difficult',\n\t\t\t\t\thigh_label: 'Very easy',\n\t\t\t\t\tsurvey_type: 'ces',\n\t\t\t\t},\n\t\t\t\tmultiple_choice_config: null,\n\t\t\t\tlink_config: null,\n\t\t\t\tafter_this_page: { default: 'end_survey', conditions: [] },\n\t\t\t\trequired: true,\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tid: 'mock_open_question_survey',\n\t\tname: 'Open Question',\n\t\tslug: 'open-question',\n\t\tstatus: 'active',\n\t\ttrigger_type: 'manual',\n\t\tpages: [\n\t\t\t{\n\t\t\t\tid: 'open-page-1',\n\t\t\t\ttype: 'text',\n\t\t\t\ttitle: 'What could we do better?',\n\t\t\t\tdescription:\n\t\t\t\t\t'Is there anything we could do to make our product better for you?',\n\t\t\t\tplaceholder: 'Type your answer here',\n\t\t\t\trating_config: null,\n\t\t\t\tmultiple_choice_config: null,\n\t\t\t\tlink_config: null,\n\t\t\t\tafter_this_page: { default: 'end_survey', conditions: [] },\n\t\t\t\trequired: true,\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tid: 'mock_product_idea_poll_survey',\n\t\tname: 'Product Idea Poll',\n\t\tslug: 'product-idea-poll',\n\t\tstatus: 'active',\n\t\ttrigger_type: 'manual',\n\t\tpages: [\n\t\t\t{\n\t\t\t\tid: 'poll-page-1',\n\t\t\t\ttype: 'multiple_choice',\n\t\t\t\ttitle: 'Which feature should we add next?',\n\t\t\t\tdescription: 'Vote on the feature you would like to see next.',\n\t\t\t\tplaceholder: '',\n\t\t\t\trating_config: null,\n\t\t\t\tmultiple_choice_config: {\n\t\t\t\t\tallow_multiple_selection: false,\n\t\t\t\t\tsurvey_type: 'regular',\n\t\t\t\t\toptions: [\n\t\t\t\t\t\t{ id: 'opt1', label: 'Better reporting' },\n\t\t\t\t\t\t{ id: 'opt2', label: 'Mobile app' },\n\t\t\t\t\t\t{ id: 'opt3', label: 'Integrations' },\n\t\t\t\t\t\t{ id: 'opt4', label: 'AI features' },\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t\tlink_config: null,\n\t\t\t\tafter_this_page: { default: 'end_survey', conditions: [] },\n\t\t\t\trequired: true,\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tid: 'mock_pmf_survey',\n\t\tname: 'Product Market Fit (PMF)',\n\t\tslug: 'pmf',\n\t\tstatus: 'active',\n\t\ttrigger_type: 'manual',\n\t\tpages: [\n\t\t\t{\n\t\t\t\tid: 'pmf-page-1',\n\t\t\t\ttype: 'multiple_choice',\n\t\t\t\ttitle: 'How would you feel if you could no longer use our product?',\n\t\t\t\tdescription: '',\n\t\t\t\tplaceholder: '',\n\t\t\t\trating_config: null,\n\t\t\t\tmultiple_choice_config: {\n\t\t\t\t\tallow_multiple_selection: false,\n\t\t\t\t\tsurvey_type: 'regular',\n\t\t\t\t\toptions: [\n\t\t\t\t\t\t{ id: 'very_disappointed', label: 'Very disappointed' },\n\t\t\t\t\t\t{ id: 'somewhat_disappointed', label: 'Somewhat disappointed' },\n\t\t\t\t\t\t{ id: 'not_disappointed', label: 'Not disappointed' },\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t\tlink_config: null,\n\t\t\t\tafter_this_page: { default: 'end_survey', conditions: [] },\n\t\t\t\trequired: true,\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tid: 'mock_user_interview_survey',\n\t\tname: 'User Interview Request',\n\t\tslug: 'user-interview',\n\t\tstatus: 'active',\n\t\ttrigger_type: 'manual',\n\t\tpages: [\n\t\t\t{\n\t\t\t\tid: 'interview-page-1',\n\t\t\t\ttype: 'link',\n\t\t\t\ttitle: 'Would you like to hop on a quick demo?',\n\t\t\t\tdescription:\n\t\t\t\t\t'We would love to hear your thoughts and answer any questions you have.',\n\t\t\t\tplaceholder: '',\n\t\t\t\trating_config: null,\n\t\t\t\tmultiple_choice_config: null,\n\t\t\t\tlink_config: {\n\t\t\t\t\tbutton_text: 'Book a demo',\n\t\t\t\t\tlink_text: '',\n\t\t\t\t\tredirect_url: 'https://example.com',\n\t\t\t\t\topen_in: 'new_tab',\n\t\t\t\t},\n\t\t\t\tafter_this_page: { default: 'end_survey', conditions: [] },\n\t\t\t\trequired: true,\n\t\t\t},\n\t\t],\n\t},\n];\n","export const delay = (ms) => new Promise((resolve) => setTimeout(resolve, ms));\n\nexport function getDeviceInfo() {\n\tif (typeof navigator === 'undefined') {\n\t\treturn { device: null, browser: null, os: null };\n\t}\n\n\tconst ua = navigator.userAgent;\n\n\tlet device = 'desktop';\n\tif (/Mobi|Android/i.test(ua)) {\n\t\tdevice = /Tablet|iPad/i.test(ua) ? 'tablet' : 'mobile';\n\t}\n\n\tlet browser = 'unknown';\n\tif (ua.includes('Firefox')) browser = 'firefox';\n\telse if (ua.includes('Edg')) browser = 'edge';\n\telse if (ua.includes('Chrome')) browser = 'chrome';\n\telse if (ua.includes('Safari')) browser = 'safari';\n\telse if (ua.includes('Opera') || ua.includes('OPR')) browser = 'opera';\n\n\tlet os = 'unknown';\n\tif (ua.includes('Windows')) os = 'windows';\n\telse if (ua.includes('Mac')) os = 'macos';\n\telse if (ua.includes('Linux')) os = 'linux';\n\telse if (ua.includes('Android')) os = 'android';\n\telse if (ua.includes('iPhone') || ua.includes('iPad')) os = 'ios';\n\n\treturn { device, browser, os };\n}\n","import { MOCK_CHANGELOGS } from '../mock-data/index.js';\nimport { delay } from '../utils/helpers.js';\n\nexport class ChangelogService {\n\tconstructor(baseAPI) {\n\t\tthis.api = baseAPI;\n\t}\n\n\tasync getChangelogs(options = {}) {\n\t\tawait this.api._ensureSession();\n\n\t\tif (this.api.mock) {\n\t\t\tawait delay(300);\n\t\t\treturn { success: true, data: MOCK_CHANGELOGS };\n\t\t}\n\n\t\treturn this.api._handleAuthRetry(async () => {\n\t\t\tconst endpoint = this.api._getEndpointWithParams(\n\t\t\t\t'/widget/changelogs',\n\t\t\t\toptions\n\t\t\t);\n\t\t\treturn await this.api._makeRequest(endpoint, {\n\t\t\t\tmethod: 'GET',\n\t\t\t\theaders: { Authorization: `Bearer ${this.api.sessionToken}` },\n\t\t\t});\n\t\t});\n\t}\n}\n","import { delay } from '../utils/helpers.js';\n\nexport class FeedbackService {\n\tconstructor(baseAPI) {\n\t\tthis.api = baseAPI;\n\t}\n\n\tasync submitFeedback(feedbackData) {\n\t\tawait this.api._ensureSession();\n\n\t\tif (this.api.mock) {\n\t\t\tawait delay(500);\n\t\t\treturn {\n\t\t\t\tsuccess: true,\n\t\t\t\tdata: {\n\t\t\t\t\tid: 'mock_post_' + Date.now(),\n\t\t\t\t\ttitle: feedbackData.title,\n\t\t\t\t\tcontent: feedbackData.content,\n\t\t\t\t},\n\t\t\t\tmessage: 'Feedback submitted successfully!',\n\t\t\t};\n\t\t}\n\n\t\tconst contact = this.api.getContactIdentity();\n\n\t\tconst payload = {\n\t\t\tboard:\n\t\t\t\tfeedbackData.board_id || feedbackData.board || feedbackData.boardName,\n\t\t\ttitle: feedbackData.title,\n\t\t\tcontent: feedbackData.content,\n\t\t\tattachments: feedbackData.attachments || [],\n\t\t\t...(contact?.contactId && {\n\t\t\t\tcontact_id: contact.contactId,\n\t\t\t\tcontact_email: contact.contactEmail,\n\t\t\t\tcontact_name: contact.contactName,\n\t\t\t}),\n\t\t};\n\n\t\treturn this.api._handleAuthRetry(async () => {\n\t\t\tconst response = await this.api._makeRequest('/widget/feedback', {\n\t\t\t\tmethod: 'POST',\n\t\t\t\tbody: JSON.stringify(payload),\n\t\t\t\theaders: {\n\t\t\t\t\t'Content-Type': 'application/json',\n\t\t\t\t\tAuthorization: `Bearer ${this.api.sessionToken}`,\n\t\t\t\t},\n\t\t\t});\n\t\t\treturn response;\n\t\t});\n\t}\n}\n","import { MOCK_HELP_COLLECTIONS } from '../mock-data/index.js';\nimport { delay } from '../utils/helpers.js';\n\nexport class HelpService {\n\tconstructor(baseAPI) {\n\t\tthis.api = baseAPI;\n\t}\n\n\tasync getHelpCollections(options = {}) {\n\t\tawait this.api._ensureSession();\n\n\t\tif (this.api.mock) {\n\t\t\tawait delay(200);\n\t\t\treturn { status: true, data: MOCK_HELP_COLLECTIONS };\n\t\t}\n\n\t\tconst endpoint = this.api._getEndpointWithParams(\n\t\t\t'/widget/help/collections',\n\t\t\toptions\n\t\t);\n\t\treturn this.api._makeRequest(endpoint, {\n\t\t\tmethod: 'GET',\n\t\t\theaders: { Authorization: `Bearer ${this.api.sessionToken}` },\n\t\t});\n\t}\n\n\tasync searchHelpArticles(query, options = {}) {\n\t\tawait this.api._ensureSession();\n\n\t\tif (this.api.mock) {\n\t\t\tawait delay(200);\n\t\t\tconst filtered = MOCK_HELP_COLLECTIONS.filter(\n\t\t\t\t(c) =>\n\t\t\t\t\tc.title.toLowerCase().includes(query.toLowerCase()) ||\n\t\t\t\t\tc.description.toLowerCase().includes(query.toLowerCase())\n\t\t\t);\n\t\t\treturn { status: true, data: filtered };\n\t\t}\n\n\t\tconst params = { q: query, ...options };\n\t\tconst endpoint = this.api._getEndpointWithParams(\n\t\t\t'/widget/help/search',\n\t\t\tparams\n\t\t);\n\t\treturn this.api._makeRequest(endpoint, {\n\t\t\tmethod: 'GET',\n\t\t\theaders: { Authorization: `Bearer ${this.api.sessionToken}` },\n\t\t});\n\t}\n}\n","import { MOCK_CONVERSATIONS, MOCK_MESSAGES } from '../mock-data/index.js';\nimport { delay } from '../utils/helpers.js';\n\nexport class LiveChatService {\n\tconstructor(baseAPI) {\n\t\tthis.api = baseAPI;\n\t}\n\n\tasync getLiveChatSettings() {\n\t\tawait this.api._ensureSession();\n\n\t\tif (this.api.mock) {\n\t\t\treturn {\n\t\t\t\tstatus: true,\n\t\t\t\tdata: {\n\t\t\t\t\tenabled: true,\n\t\t\t\t\tgreeting_message: 'Hi there! How can we help?',\n\t\t\t\t\tteam_name: 'Support Team',\n\t\t\t\t\tresponse_time: 'Usually replies within a few minutes',\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\n\t\treturn this.api._makeRequest('/widget/livechat/settings', {\n\t\t\tmethod: 'GET',\n\t\t\theaders: { Authorization: `Bearer ${this.api.sessionToken}` },\n\t\t});\n\t}\n\n\tasync checkAgentsOnline() {\n\t\tawait this.api._ensureSession();\n\n\t\tif (this.api.mock) {\n\t\t\treturn {\n\t\t\t\tstatus: true,\n\t\t\t\tdata: {\n\t\t\t\t\tagents_online: true,\n\t\t\t\t\tonline_count: 2,\n\t\t\t\t\tresponse_time: 'Usually replies within a few minutes',\n\t\t\t\t\tavailable_agents: [\n\t\t\t\t\t\t{ full_name: 'Sarah', picture: '' },\n\t\t\t\t\t\t{ full_name: 'Tom', picture: '' },\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\n\t\treturn this.api._makeRequest('/widget/livechat/agents/online', {\n\t\t\tmethod: 'GET',\n\t\t\theaders: { Authorization: `Bearer ${this.api.sessionToken}` },\n\t\t});\n\t}\n\n\tasync getConversations(options = {}) {\n\t\tawait this.api._ensureSession();\n\n\t\tif (this.api.mock) {\n\t\t\tawait delay(300);\n\t\t\treturn {\n\t\t\t\tstatus: true,\n\t\t\t\tdata: MOCK_CONVERSATIONS,\n\t\t\t\tmeta: { total: MOCK_CONVERSATIONS.length, page: 1, limit: 20 },\n\t\t\t};\n\t\t}\n\n\t\tconst endpoint = this.api._getEndpointWithParams(\n\t\t\t'/widget/livechat/conversations',\n\t\t\toptions\n\t\t);\n\t\treturn this.api._makeRequest(endpoint, {\n\t\t\tmethod: 'GET',\n\t\t\theaders: { Authorization: `Bearer ${this.api.sessionToken}` },\n\t\t});\n\t}\n\n\tasync getConversation(conversationId) {\n\t\tawait this.api._ensureSession();\n\n\t\tif (this.api.mock) {\n\t\t\tawait delay(200);\n\t\t\tconst conv = MOCK_CONVERSATIONS.find((c) => c.id === conversationId);\n\t\t\treturn {\n\t\t\t\tstatus: true,\n\t\t\t\tdata: { ...conv, messages: MOCK_MESSAGES[conversationId] || [] },\n\t\t\t};\n\t\t}\n\n\t\treturn this.api._makeRequest(\n\t\t\t`/widget/livechat/conversations/${conversationId}`,\n\t\t\t{\n\t\t\t\tmethod: 'GET',\n\t\t\t\theaders: { Authorization: `Bearer ${this.api.sessionToken}` },\n\t\t\t}\n\t\t);\n\t}\n\n\tasync startConversation(data) {\n\t\tawait this.api._ensureSession();\n\n\t\tif (this.api.mock) {\n\t\t\tawait delay(300);\n\t\t\tconst newConv = {\n\t\t\t\tid: 'conv_' + Date.now(),\n\t\t\t\tsubject: data.subject || 'New conversation',\n\t\t\t\tstatus: 'open',\n\t\t\t\tlast_message_at: new Date().toISOString(),\n\t\t\t\tcreated_at: new Date().toISOString(),\n\t\t\t\tmessages: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: 'msg_' + Date.now(),\n\t\t\t\t\t\tcontent: data.message,\n\t\t\t\t\t\tsender_type: 'customer',\n\t\t\t\t\t\tcreated_at: new Date().toISOString(),\n\t\t\t\t\t\tattachments: data.attachments || [],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\t\t\tMOCK_CONVERSATIONS.unshift(newConv);\n\t\t\tMOCK_MESSAGES[newConv.id] = newConv.messages;\n\t\t\treturn { status: true, data: newConv };\n\t\t}\n\n\t\treturn this.api._makeRequest('/widget/livechat/conversations', {\n\t\t\tmethod: 'POST',\n\t\t\theaders: {\n\t\t\t\t'Content-Type': 'application/json',\n\t\t\t\tAuthorization: `Bearer ${this.api.sessionToken}`,\n\t\t\t},\n\t\t\tbody: JSON.stringify({\n\t\t\t\tmessage: data.message,\n\t\t\t\tsubject: data.subject || '',\n\t\t\t\tattachments: data.attachments || [],\n\t\t\t}),\n\t\t});\n\t}\n\n\tasync sendMessage(conversationId, data) {\n\t\tawait this.api._ensureSession();\n\n\t\tif (this.api.mock) {\n\t\t\tawait delay(200);\n\t\t\tconst newMessage = {\n\t\t\t\tid: 'msg_' + Date.now(),\n\t\t\t\tcontent: data.content,\n\t\t\t\tsender_type: 'customer',\n\t\t\t\tcreated_at: new Date().toISOString(),\n\t\t\t\tattachments: data.attachments || [],\n\t\t\t};\n\t\t\tif (!MOCK_MESSAGES[conversationId]) {\n\t\t\t\tMOCK_MESSAGES[conversationId] = [];\n\t\t\t}\n\t\t\tMOCK_MESSAGES[conversationId].push(newMessage);\n\t\t\treturn { status: true, data: newMessage };\n\t\t}\n\n\t\treturn this.api._makeRequest(\n\t\t\t`/widget/livechat/conversations/${conversationId}/messages`,\n\t\t\t{\n\t\t\t\tmethod: 'POST',\n\t\t\t\theaders: {\n\t\t\t\t\t'Content-Type': 'application/json',\n\t\t\t\t\tAuthorization: `Bearer ${this.api.sessionToken}`,\n\t\t\t\t},\n\t\t\t\tbody: JSON.stringify({\n\t\t\t\t\tcontent: data.content,\n\t\t\t\t\tattachments: data.attachments || [],\n\t\t\t\t}),\n\t\t\t}\n\t\t);\n\t}\n\n\tasync getUnreadCount() {\n\t\tawait this.api._ensureSession();\n\n\t\tif (this.api.mock) {\n\t\t\tconst count = MOCK_CONVERSATIONS.reduce(\n\t\t\t\t(sum, c) => sum + (c.unread || 0),\n\t\t\t\t0\n\t\t\t);\n\t\t\treturn {\n\t\t\t\tstatus: true,\n\t\t\t\tdata: { unread_count: count, unread_conversations: count > 0 ? 1 : 0 },\n\t\t\t};\n\t\t}\n\n\t\treturn this.api._makeRequest('/widget/livechat/unread', {\n\t\t\tmethod: 'GET',\n\t\t\theaders: { Authorization: `Bearer ${this.api.sessionToken}` },\n\t\t});\n\t}\n\n\tasync markConversationAsRead(conversationId) {\n\t\tawait this.api._ensureSession();\n\n\t\tif (this.api.mock) {\n\t\t\treturn { status: true };\n\t\t}\n\n\t\treturn this.api._makeRequest(\n\t\t\t`/widget/livechat/conversations/${conversationId}/read`,\n\t\t\t{\n\t\t\t\tmethod: 'POST',\n\t\t\t\theaders: { Authorization: `Bearer ${this.api.sessionToken}` },\n\t\t\t}\n\t\t);\n\t}\n\n\tasync getMessages(conversationId, options = {}) {\n\t\tawait this.api._ensureSession();\n\n\t\tif (this.api.mock) {\n\t\t\tawait delay(200);\n\t\t\treturn {\n\t\t\t\tstatus: true,\n\t\t\t\tdata: MOCK_MESSAGES[conversationId] || [],\n\t\t\t\tmeta: { total: 0, page: 1, limit: 50 },\n\t\t\t};\n\t\t}\n\n\t\tconst params = { ...options };\n\t\tconst endpoint = this.api._getEndpointWithParams(\n\t\t\t`/widget/livechat/conversations/${conversationId}/messages`,\n\t\t\tparams\n\t\t);\n\t\treturn this.api._makeRequest(endpoint, {\n\t\t\tmethod: 'GET',\n\t\t\theaders: { Authorization: `Bearer ${this.api.sessionToken}` },\n\t\t});\n\t}\n\n\tasync uploadFile(base64Data, filename) {\n\t\tawait this.api._ensureSession();\n\n\t\tif (this.api.mock) {\n\t\t\tawait delay(300);\n\t\t\treturn { status: true, url: `https://mock-cdn.example.com/${filename}` };\n\t\t}\n\n\t\treturn this.api._makeRequest('/widget/livechat/upload', {\n\t\t\tmethod: 'POST',\n\t\t\theaders: {\n\t\t\t\t'Content-Type': 'application/json',\n\t\t\t\tAuthorization: `Bearer ${this.api.sessionToken}`,\n\t\t\t},\n\t\t\tbody: JSON.stringify({ file: base64Data, filename }),\n\t\t});\n\t}\n\n\tasync identifyContact(data) {\n\t\treturn this.api.identify(data);\n\t}\n\n\tasync submitRating(conversationId, data) {\n\t\tawait this.api._ensureSession();\n\n\t\tif (this.api.mock) {\n\t\t\treturn { status: true, data: { rated: true } };\n\t\t}\n\n\t\treturn this.api._makeRequest(\n\t\t\t`/widget/livechat/conversations/${conversationId}/rating`,\n\t\t\t{\n\t\t\t\tmethod: 'POST',\n\t\t\t\theaders: {\n\t\t\t\t\t'Content-Type': 'application/json',\n\t\t\t\t\tAuthorization: `Bearer ${this.api.sessionToken}`,\n\t\t\t\t},\n\t\t\t\tbody: JSON.stringify(data),\n\t\t\t}\n\t\t);\n\t}\n\n\tasync sendTypingIndicator(conversationId, isTyping) {\n\t\tawait this.api._ensureSession();\n\n\t\tif (this.api.mock) {\n\t\t\treturn { status: true };\n\t\t}\n\n\t\treturn this.api._makeRequest(\n\t\t\t`/widget/livechat/conversations/${conversationId}/typing`,\n\t\t\t{\n\t\t\t\tmethod: 'POST',\n\t\t\t\theaders: {\n\t\t\t\t\t'Content-Type': 'application/json',\n\t\t\t\t\tAuthorization: `Bearer ${this.api.sessionToken}`,\n\t\t\t\t},\n\t\t\t\tbody: JSON.stringify({ is_typing: isTyping }),\n\t\t\t}\n\t\t);\n\t}\n}\n","export class SDKError extends Error {\n\tconstructor(message, cause) {\n\t\tsuper(message);\n\t\tthis.name = 'SDKError';\n\t\tthis.cause = cause;\n\n\t\tif (Error.captureStackTrace) {\n\t\t\tError.captureStackTrace(this, SDKError);\n\t\t}\n\t}\n}\n\nexport class APIError extends Error {\n\tconstructor(status, message, response) {\n\t\tsuper(message);\n\t\tthis.name = 'APIError';\n\t\tthis.status = status;\n\t\tthis.response = response;\n\n\t\tif (Error.captureStackTrace) {\n\t\t\tError.captureStackTrace(this, APIError);\n\t\t}\n\t}\n\n\tisNetworkError() {\n\t\treturn this.status === 0;\n\t}\n\n\tisClientError() {\n\t\treturn this.status >= 400 && this.status < 500;\n\t}\n\n\tisServerError() {\n\t\treturn this.status >= 500 && this.status < 600;\n\t}\n}\n\nexport class WidgetError extends Error {\n\tconstructor(message, widgetType, widgetId) {\n\t\tsuper(message);\n\t\tthis.name = 'WidgetError';\n\t\tthis.widgetType = widgetType;\n\t\tthis.widgetId = widgetId;\n\n\t\tif (Error.captureStackTrace) {\n\t\t\tError.captureStackTrace(this, WidgetError);\n\t\t}\n\t}\n}\n\nexport class ConfigError extends Error {\n\tconstructor(message, configKey) {\n\t\tsuper(message);\n\t\tthis.name = 'ConfigError';\n\t\tthis.configKey = configKey;\n\n\t\tif (Error.captureStackTrace) {\n\t\t\tError.captureStackTrace(this, ConfigError);\n\t\t}\n\t}\n}\n\nexport class ValidationError extends Error {\n\tconstructor(message, field, value) {\n\t\tsuper(message);\n\t\tthis.name = 'ValidationError';\n\t\tthis.field = field;\n\t\tthis.value = value;\n\n\t\tif (Error.captureStackTrace) {\n\t\t\tError.captureStackTrace(this, ValidationError);\n\t\t}\n\t}\n}\n\nexport class ErrorHandler {\n\tconstructor(debug = false) {\n\t\tthis.debug = debug;\n\t}\n\n\thandle(error, context = '') {\n\t\tconst errorInfo = {\n\t\t\tname: error.name,\n\t\t\tmessage: error.message,\n\t\t\tcontext,\n\t\t\ttimestamp: new Date().toISOString(),\n\t\t};\n\n\t\tif (error instanceof APIError) {\n\t\t\terrorInfo.status = error.status;\n\t\t\terrorInfo.type = 'api';\n\t\t} else if (error instanceof WidgetError) {\n\t\t\terrorInfo.widgetType = error.widgetType;\n\t\t\terrorInfo.widgetId = error.widgetId;\n\t\t\terrorInfo.type = 'widget';\n\t\t} else if (error instanceof ConfigError) {\n\t\t\terrorInfo.configKey = error.configKey;\n\t\t\terrorInfo.type = 'config';\n\t\t} else if (error instanceof ValidationError) {\n\t\t\terrorInfo.field = error.field;\n\t\t\terrorInfo.value = error.value;\n\t\t\terrorInfo.type = 'validation';\n\t\t} else {\n\t\t\terrorInfo.type = 'unknown';\n\t\t}\n\n\t\tif (this.debug) {\n\t\t\tconsole.error('[Product7 Error]', errorInfo, error);\n\t\t} else {\n\t\t\tconsole.error('[Product7 Error]', error.message);\n\t\t}\n\n\t\treturn errorInfo;\n\t}\n\n\tgetUserMessage(error) {\n\t\tif (error instanceof APIError) {\n\t\t\tif (error.isNetworkError()) {\n\t\t\t\treturn 'Network error. Please check your connection and try again.';\n\t\t\t} else if (error.isClientError()) {\n\t\t\t\treturn 'Invalid request. Please check your input and try again.';\n\t\t\t} else if (error.isServerError()) {\n\t\t\t\treturn 'Server error. Please try again later.';\n\t\t\t}\n\t\t\treturn 'Failed to submit feedback. Please try again.';\n\t\t}\n\n\t\tif (error instanceof ValidationError) {\n\t\t\treturn `Please check your ${error.field}: ${error.message}`;\n\t\t}\n\n\t\tif (error instanceof ConfigError) {\n\t\t\treturn 'Configuration error. Please check your SDK setup.';\n\t\t}\n\n\t\tif (error instanceof WidgetError) {\n\t\t\treturn 'Widget error. Please try refreshing the page.';\n\t\t}\n\n\t\treturn 'An unexpected error occurred. Please try again.';\n\t}\n}\n","import { APIError } from '../../utils/errors.js';\nimport { MOCK_SURVEYS } from '../mock-data/index.js';\nimport { delay, getDeviceInfo } from '../utils/helpers.js';\n\nexport class SurveyService {\n\tconstructor(baseAPI) {\n\t\tthis.api = baseAPI;\n\t}\n\n\tasync getActiveSurveys(context = {}) {\n\t\tawait this.api._ensureSession();\n\n\t\tif (this.api.mock) {\n\t\t\tawait delay(200);\n\t\t\treturn { success: true, data: MOCK_SURVEYS };\n\t\t}\n\n\t\tconst respondent = this._getRespondentContext(context);\n\n\t\tconst params = {\n\t\t\turl:\n\t\t\t\tcontext.url ||\n\t\t\t\t(typeof window !== 'undefined' ? window.location.href : ''),\n\t\t\t...getDeviceInfo(),\n\t\t\t...(respondent.respondent_id && {\n\t\t\t\trespondent_id: respondent.respondent_id,\n\t\t\t}),\n\t\t\t...(respondent.email && { email: respondent.email }),\n\t\t\t...(context.includeEligibility !== undefined && {\n\t\t\t\tinclude_eligibility: context.includeEligibility,\n\t\t\t}),\n\t\t\t...(context.userProperties && {\n\t\t\t\tuser_properties: context.userProperties,\n\t\t\t}),\n\t\t};\n\n\t\treturn this.api._handleAuthRetry(async () => {\n\t\t\tconst endpoint = this.api._getEndpointWithParams(\n\t\t\t\t'/widget/surveys/active',\n\t\t\t\tparams\n\t\t\t);\n\t\t\treturn await this.api._makeRequest(endpoint, {\n\t\t\t\tmethod: 'GET',\n\t\t\t\theaders: { Authorization: `Bearer ${this.api.sessionToken}` },\n\t\t\t});\n\t\t});\n\t}\n\n\t_getRespondentContext(context = {}) {\n\t\tconst metadata =\n\t\t\ttypeof this.api.getMetadata === 'function'\n\t\t\t\t? this.api.getMetadata() || {}\n\t\t\t\t: {};\n\n\t\treturn {\n\t\t\trespondent_id:\n\t\t\t\tcontext.respondentId || context.userId || metadata.user_id || null,\n\t\t\temail: context.email || metadata.email || null,\n\t\t};\n\t}\n\n\tasync submitSurveyResponse(surveyId, responseData) {\n\t\tif (!surveyId) throw new APIError(400, 'Survey ID is required');\n\n\t\tawait this.api._ensureSession();\n\n\t\tif (this.api.mock) {\n\t\t\tawait delay(300);\n\t\t\treturn {\n\t\t\t\tsuccess: true,\n\t\t\t\tdata: {\n\t\t\t\t\tid: 'mock_response_' + Date.now(),\n\t\t\t\t\tsurvey_id: surveyId,\n\t\t\t\t\t...responseData,\n\t\t\t\t},\n\t\t\t\tmessage: 'Survey response submitted successfully!',\n\t\t\t};\n\t\t}\n\n\t\tconst respondent = this._getRespondentContext(responseData);\n\t\tconst contact = this.api.getContactIdentity?.() || null;\n\n\t\tconst payload = {\n\t\t\tanswers: Array.isArray(responseData.answers) ? responseData.answers : [],\n\t\t\t...(responseData.feedback && { feedback: responseData.feedback }),\n\t\t\t...(respondent.respondent_id && {\n\t\t\t\trespondent_id: respondent.respondent_id,\n\t\t\t}),\n\t\t\t...(respondent.email && { email: respondent.email }),\n\t\t\t...(contact?.contactId && {\n\t\t\t\tcontact_id: contact.contactId,\n\t\t\t\tcontact_email: contact.contactEmail,\n\t\t\t\tcontact_name: contact.contactName,\n\t\t\t}),\n\t\t};\n\n\t\treturn this.api._handleAuthRetry(async () => {\n\t\t\treturn await this.api._makeRequest(\n\t\t\t\t`/widget/surveys/${surveyId}/responses`,\n\t\t\t\t{\n\t\t\t\t\tmethod: 'POST',\n\t\t\t\t\tbody: JSON.stringify(payload),\n\t\t\t\t\theaders: {\n\t\t\t\t\t\t'Content-Type': 'application/json',\n\t\t\t\t\t\tAuthorization: `Bearer ${this.api.sessionToken}`,\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t);\n\t\t});\n\t}\n\n\tasync dismissSurvey(surveyId) {\n\t\tif (!surveyId) throw new APIError(400, 'Survey ID is required');\n\n\t\tawait this.api._ensureSession();\n\n\t\tif (this.api.mock) {\n\t\t\tawait delay(100);\n\t\t\treturn { success: true, message: 'Survey dismissed successfully' };\n\t\t}\n\n\t\treturn this.api._handleAuthRetry(async () => {\n\t\t\treturn await this.api._makeRequest(\n\t\t\t\t`/widget/surveys/${surveyId}/dismiss`,\n\t\t\t\t{\n\t\t\t\t\tmethod: 'POST',\n\t\t\t\t\theaders: { Authorization: `Bearer ${this.api.sessionToken}` },\n\t\t\t\t}\n\t\t\t);\n\t\t});\n\t}\n}\n","import { APIError } from '../utils/errors.js';\n\nexport class BaseAPIService {\n\tconstructor(config = {}) {\n\t\tthis.workspace = config.workspace;\n\t\tthis.sessionToken = null;\n\t\tthis.sessionExpiry = null;\n\t\tthis.metadata = config.metadata || null;\n\t\tthis.identitySyncedToken = null;\n\t\tthis.mock = config.mock || false;\n\t\tthis.env = config.env || 'production';\n\t\tthis.baseURL = this._getBaseURL(config);\n\n\t\tthis._loadStoredSession();\n\t\tthis._loadStoredMetadata();\n\t\tif (this.isSessionValid() && this.metadata) {\n\t\t\tthis.identitySyncedToken = this.sessionToken;\n\t\t}\n\t}\n\n\t_getBaseURL(config) {\n\t\tif (config.apiUrl) return config.apiUrl;\n\n\t\tconst ENV_URLS = {\n\t\t\tproduction: {\n\t\t\t\tbase: 'https://api.product7.io/api/v1',\n\t\t\t\twithWorkspace: (ws) => `https://${ws}.api.product7.io/api/v1`,\n\t\t\t},\n\t\t\tstaging: {\n\t\t\t\tbase: 'https://staging.api.product7.io/api/v1',\n\t\t\t\twithWorkspace: (ws) => `https://${ws}.staging.api.product7.io/api/v1`,\n\t\t\t},\n\t\t\tlocalstack: {\n\t\t\t\tbase: 'http://localhost:1323/api/v1',\n\t\t\t\twithWorkspace: (ws) => `http://${ws}.localhost:1323/api/v1`,\n\t\t\t},\n\t\t};\n\n\t\tlet env = this.env;\n\t\tif (!env || env === 'production') {\n\t\t\tconst hostname =\n\t\t\t\t(typeof window !== 'undefined' && window.location?.hostname) || '';\n\t\t\tconst port =\n\t\t\t\t(typeof window !== 'undefined' && window.location?.port) || '';\n\t\t\tif (hostname.includes('staging')) {\n\t\t\t\tenv = 'staging';\n\t\t\t} else if (hostname === 'app.localhost' && port === '3005') {\n\t\t\t\tenv = 'localstack';\n\t\t\t}\n\t\t}\n\n\t\tconst envConfig = ENV_URLS[env] || ENV_URLS.production;\n\t\treturn this.workspace\n\t\t\t? envConfig.withWorkspace(this.workspace)\n\t\t\t: envConfig.base;\n\t}\n\n\tasync init(metadata = undefined) {\n\t\tif (metadata !== undefined) {\n\t\t\tthis.setMetadata(metadata);\n\t\t}\n\n\t\tif (this.isSessionValid()) {\n\t\t\treturn { sessionToken: this.sessionToken };\n\t\t}\n\n\t\tif (!this.workspace) {\n\t\t\tthrow new APIError(400, 'Missing workspace for initialization');\n\t\t}\n\n\t\tif (this.mock) {\n\t\t\treturn this._initMockSession();\n\t\t}\n\n\t\treturn this._initRealSession();\n\t}\n\n\tasync _initMockSession() {\n\t\tthis.sessionToken = 'mock_session_' + Date.now();\n\t\tthis.sessionExpiry = new Date(Date.now() + 3600 * 1000);\n\t\tthis.identitySyncedToken = null;\n\t\tthis._storeSession();\n\t\treturn {\n\t\t\tsessionToken: this.sessionToken,\n\t\t\tconfig: {\n\t\t\t\tprimaryColor: '#21244A',\n\t\t\t\tbackgroundColor: '#ffffff',\n\t\t\t\ttextColor: '#1F2937',\n\t\t\t\tboardName: 'feature-requests',\n\t\t\t\tsize: 'medium',\n\t\t\t\tdisplayMode: 'modal',\n\t\t\t},\n\t\t\texpiresIn: 3600,\n\t\t};\n\t}\n\n\tasync _initRealSession() {\n\t\tconst payload = {\n\t\t\tworkspace: this.workspace,\n\t\t};\n\n\t\ttry {\n\t\t\tconst response = await this._makeRequest('/widget/init', {\n\t\t\t\tmethod: 'POST',\n\t\t\t\tbody: JSON.stringify(payload),\n\t\t\t\theaders: { 'Content-Type': 'application/json' },\n\t\t\t});\n\t\t\tconst initData = this._extractInitResponseData(response);\n\n\t\t\tthis.sessionToken = initData.sessionToken;\n\t\t\tthis.sessionExpiry = new Date(Date.now() + initData.expiresIn * 1000);\n\t\t\tthis.identitySyncedToken = null;\n\t\t\tthis._storeSession();\n\n\t\t\treturn {\n\t\t\t\tsessionToken: this.sessionToken,\n\t\t\t\tconfig: initData.config,\n\t\t\t\twidgets: initData.widgets,\n\t\t\t\texpiresIn: initData.expiresIn,\n\t\t\t\tstatus: initData.status,\n\t\t\t\tmessage: initData.message,\n\t\t\t\tconfigVersion: initData.configVersion,\n\t\t\t};\n\t\t} catch (error) {\n\t\t\tthrow new APIError(\n\t\t\t\terror.status || 500,\n\t\t\t\t`Failed to initialize widget: ${error.message}`,\n\t\t\t\terror.response\n\t\t\t);\n\t\t}\n\t}\n\n\t_extractInitResponseData(response) {\n\t\tconst payload =\n\t\t\tresponse && typeof response.data === 'object'\n\t\t\t\t? response.data\n\t\t\t\t: response || {};\n\n\t\tconst configData =\n\t\t\tpayload.config && typeof payload.config === 'object'\n\t\t\t\t? payload.config\n\t\t\t\t: {};\n\n\t\tconst sessionToken =\n\t\t\tpayload.session_token ||\n\t\t\tpayload.sessionToken ||\n\t\t\tconfigData.session_token ||\n\t\t\tconfigData.sessionToken;\n\n\t\tconst expiresIn = Number(\n\t\t\tpayload.expires_in ??\n\t\t\t\tpayload.expiresIn ??\n\t\t\t\tconfigData.expires_in ??\n\t\t\t\tconfigData.expiresIn\n\t\t);\n\n\t\tif (!sessionToken) {\n\t\t\tthrow new APIError(500, 'Invalid init response: missing session_token');\n\t\t}\n\n\t\tif (!Number.isFinite(expiresIn) || expiresIn <= 0) {\n\t\t\tthrow new APIError(500, 'Invalid init response: missing expires_in');\n\t\t}\n\n\t\treturn {\n\t\t\tsessionToken,\n\t\t\texpiresIn,\n\t\t\tconfig: configData,\n\t\t\twidgets:\n\t\t\t\tpayload.widgets && typeof payload.widgets === 'object'\n\t\t\t\t\t? payload.widgets\n\t\t\t\t\t: null,\n\t\t\tconfigVersion:\n\t\t\t\tconfigData.config_version ??\n\t\t\t\tconfigData.configVersion ??\n\t\t\t\tpayload.config_version ??\n\t\t\t\tpayload.configVersion ??\n\t\t\t\tnull,\n\t\t\tstatus: response?.status ?? payload?.status ?? true,\n\t\t\tmessage: response?.message ?? payload?.message ?? null,\n\t\t};\n\t}\n\n\tasync _ensureSession() {\n\t\tif (!this.isSessionValid()) {\n\t\t\tawait this.init();\n\t\t}\n\t\tif (!this.sessionToken) {\n\t\t\tthrow new APIError(401, 'No valid session token available');\n\t\t}\n\t}\n\n\tasync _handleAuthRetry(method, ...args) {\n\t\ttry {\n\t\t\treturn await method.apply(this, args);\n\t\t} catch (error) {\n\t\t\tif (error.status === 401) {\n\t\t\t\tthis.sessionToken = null;\n\t\t\t\tthis.sessionExpiry = null;\n\t\t\t\tawait this.init();\n\t\t\t\tawait this._restoreIdentity();\n\t\t\t\treturn await method.apply(this, args);\n\t\t\t}\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\tasync identify(metadata = this.metadata) {\n\t\tif (metadata !== undefined) {\n\t\t\tthis.setMetadata(metadata);\n\t\t}\n\n\t\tif (!this.metadata) {\n\t\t\tthrow new APIError(400, 'Missing user context for identify');\n\t\t}\n\n\t\tawait this._ensureSession();\n\n\t\tconst payload = this._buildIdentifyPayload(this.metadata);\n\n\t\tif (this.mock) {\n\t\t\tthis.identitySyncedToken = this.sessionToken;\n\t\t\treturn {\n\t\t\t\tstatus: true,\n\t\t\t\tidentified: true,\n\t\t\t\tdata: {\n\t\t\t\t\tuser_id: payload.user_id || null,\n\t\t\t\t\temail: payload.email || null,\n\t\t\t\t\tname: payload.name || null,\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\n\t\tconst response = await this._makeRequest('/widget/identify', {\n\t\t\tmethod: 'POST',\n\t\t\tbody: JSON.stringify(payload),\n\t\t\theaders: {\n\t\t\t\t'Content-Type': 'application/json',\n\t\t\t\tAuthorization: `Bearer ${this.sessionToken}`,\n\t\t\t},\n\t\t});\n\n\t\tthis.identitySyncedToken = this.sessionToken;\n\t\treturn response;\n\t}\n\n\tisSessionValid() {\n\t\treturn (\n\t\t\tthis.sessionToken && this.sessionExpiry && new Date() < this.sessionExpiry\n\t\t);\n\t}\n\n\tsetMetadata(metadata) {\n\t\tthis.metadata = metadata || null;\n\t\tthis.identitySyncedToken = null;\n\t\tif (this.metadata) {\n\t\t\tthis._storeData('product7_metadata', this.metadata);\n\t\t} else {\n\t\t\tthis._removeData('product7_metadata');\n\t\t}\n\t}\n\n\tgetMetadata() {\n\t\treturn this.metadata;\n\t}\n\n\tclearSession() {\n\t\tthis.sessionToken = null;\n\t\tthis.sessionExpiry = null;\n\t\tthis.identitySyncedToken = null;\n\t\tthis.contactId = null;\n\t\tthis.contactEmail = null;\n\t\tthis.contactName = null;\n\t\tthis._removeData('product7_session');\n\t\tthis._removeData('product7_metadata');\n\t\tthis._removeData('product7_contact');\n\t}\n\n\t_storeSession() {\n\t\tif (typeof localStorage === 'undefined') return;\n\t\ttry {\n\t\t\tconst sessionData = {\n\t\t\t\ttoken: this.sessionToken,\n\t\t\t\texpiry: this.sessionExpiry.toISOString(),\n\t\t\t\tworkspace: this.workspace,\n\t\t\t};\n\t\t\tthis._storeData('product7_session', sessionData);\n\t\t} catch (error) {\n\t\t\t// Silent fail\n\t\t}\n\t}\n\n\t_loadStoredSession() {\n\t\tif (typeof localStorage === 'undefined') return false;\n\t\ttry {\n\t\t\tconst stored = localStorage.getItem('product7_session');\n\t\t\tif (!stored) return false;\n\n\t\t\tconst sessionData = JSON.parse(stored);\n\n\t\t\t// Invalidate mock tokens when not in mock mode (and vice versa)\n\t\t\tconst isMockToken =\n\t\t\t\tsessionData.token && sessionData.token.startsWith('mock_');\n\t\t\tif (isMockToken !== this.mock) {\n\t\t\t\tlocalStorage.removeItem('product7_session');\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\tthis.workspace &&\n\t\t\t\tsessionData.workspace &&\n\t\t\t\tsessionData.workspace !== this.workspace\n\t\t\t) {\n\t\t\t\tlocalStorage.removeItem('product7_session');\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tthis.sessionToken = sessionData.token;\n\t\t\tthis.sessionExpiry = new Date(sessionData.expiry);\n\n\t\t\treturn this.isSessionValid();\n\t\t} catch (error) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\t_loadStoredMetadata() {\n\t\tif (this.metadata || typeof localStorage === 'undefined') return false;\n\n\t\ttry {\n\t\t\tconst session = localStorage.getItem('product7_session');\n\t\t\tif (session) {\n\t\t\t\tconst sessionData = JSON.parse(session);\n\t\t\t\tif (\n\t\t\t\t\tthis.workspace &&\n\t\t\t\t\tsessionData.workspace &&\n\t\t\t\t\tsessionData.workspace !== this.workspace\n\t\t\t\t) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst stored = localStorage.getItem('product7_metadata');\n\t\t\tif (!stored) return false;\n\n\t\t\tthis.metadata = JSON.parse(stored);\n\t\t\treturn true;\n\t\t} catch (error) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\t_storeData(key, value) {\n\t\tif (typeof localStorage !== 'undefined') {\n\t\t\tlocalStorage.setItem(key, JSON.stringify(value));\n\t\t}\n\t}\n\n\t_removeData(key) {\n\t\tif (typeof localStorage !== 'undefined') {\n\t\t\tlocalStorage.removeItem(key);\n\t\t}\n\t}\n\n\tasync _makeRequest(endpoint, options = {}) {\n\t\tconst url = `${this.baseURL}${endpoint}`;\n\n\t\ttry {\n\t\t\tconst response = await fetch(url, options);\n\n\t\t\tif (!response.ok) {\n\t\t\t\tlet errorMessage = `HTTP ${response.status}`;\n\t\t\t\tlet responseData = null;\n\n\t\t\t\ttry {\n\t\t\t\t\tresponseData = await response.json();\n\t\t\t\t\terrorMessage =\n\t\t\t\t\t\tresponseData.message || responseData.error || errorMessage;\n\t\t\t\t} catch (e) {\n\t\t\t\t\terrorMessage = (await response.text()) || errorMessage;\n\t\t\t\t}\n\n\t\t\t\tthrow new APIError(response.status, errorMessage, responseData);\n\t\t\t}\n\n\t\t\tconst contentType = response.headers.get('content-type');\n\t\t\tif (contentType && contentType.includes('application/json')) {\n\t\t\t\treturn await response.json();\n\t\t\t}\n\n\t\t\treturn await response.text();\n\t\t} catch (error) {\n\t\t\tif (error instanceof APIError) throw error;\n\t\t\tthrow new APIError(0, error.message, null);\n\t\t}\n\t}\n\n\t_buildQueryParams(params) {\n\t\tconst queryParams = new URLSearchParams();\n\t\tObject.entries(params).forEach(([key, value]) => {\n\t\t\tif (value !== undefined && value !== null) {\n\t\t\t\tqueryParams.append(\n\t\t\t\t\tkey,\n\t\t\t\t\ttypeof value === 'object' ? JSON.stringify(value) : value\n\t\t\t\t);\n\t\t\t}\n\t\t});\n\t\treturn queryParams.toString();\n\t}\n\n\t_getEndpointWithParams(endpoint, params) {\n\t\tconst queryString = this._buildQueryParams(params);\n\t\treturn `${endpoint}${queryString ? '?' + queryString : ''}`;\n\t}\n\n\t_buildIdentifyPayload(metadata = {}) {\n\t\tconst payload = {\n\t\t\tuser_id: metadata.user_id,\n\t\t\temail: metadata.email,\n\t\t\tname: metadata.name,\n\t\t\tavatar:\n\t\t\t\tmetadata.profile_picture || metadata.avatar_url || metadata.avatar,\n\t\t\tattributes: metadata.custom_fields || {},\n\t\t};\n\n\t\tif (metadata.company) {\n\t\t\tpayload.company = metadata.company;\n\t\t}\n\n\t\treturn payload;\n\t}\n\n\tasync _restoreIdentity() {\n\t\tif (\n\t\t\t!this.metadata ||\n\t\t\t!this.sessionToken ||\n\t\t\t!this.identitySyncedToken ||\n\t\t\tthis.identitySyncedToken === this.sessionToken\n\t\t) {\n\t\t\treturn;\n\t\t}\n\n\t\tawait this.identify(this.metadata);\n\t}\n}\n","import { ChangelogService } from '../api/services/ChangelogService.js';\nimport { FeedbackService } from '../api/services/FeedbackService.js';\nimport { HelpService } from '../api/services/HelpService.js';\nimport { LiveChatService } from '../api/services/LiveChatService.js';\nimport { SurveyService } from '../api/services/SurveyService.js';\nimport { BaseAPIService } from './BaseAPIService.js';\n\nexport class APIService extends BaseAPIService {\n\tconstructor(config = {}) {\n\t\tsuper(config);\n\n\t\tthis.feedback = new FeedbackService(this);\n\t\tthis.survey = new SurveyService(this);\n\t\tthis.liveChat = new LiveChatService(this);\n\t\tthis.help = new HelpService(this);\n\t\tthis.changelog = new ChangelogService(this);\n\t}\n\n\tasync submitFeedback(data) {\n\t\treturn this.feedback.submitFeedback(data);\n\t}\n\n\tasync getActiveSurveys(context) {\n\t\treturn this.survey.getActiveSurveys(context);\n\t}\n\n\tasync submitSurveyResponse(surveyId, responseData) {\n\t\treturn this.survey.submitSurveyResponse(surveyId, responseData);\n\t}\n\n\tasync dismissSurvey(surveyId) {\n\t\treturn this.survey.dismissSurvey(surveyId);\n\t}\n\n\tasync getLiveChatSettings() {\n\t\treturn this.liveChat.getLiveChatSettings();\n\t}\n\n\tasync checkAgentsOnline() {\n\t\treturn this.liveChat.checkAgentsOnline();\n\t}\n\n\tasync getConversations(options) {\n\t\treturn this.liveChat.getConversations(options);\n\t}\n\n\tasync getConversation(conversationId) {\n\t\treturn this.liveChat.getConversation(conversationId);\n\t}\n\n\tasync getMessages(conversationId, options) {\n\t\treturn this.liveChat.getMessages(conversationId, options);\n\t}\n\n\tasync startConversation(data) {\n\t\treturn this.liveChat.startConversation(data);\n\t}\n\n\tasync sendMessage(conversationId, data) {\n\t\treturn this.liveChat.sendMessage(conversationId, data);\n\t}\n\n\tasync uploadFile(base64Data, filename) {\n\t\treturn this.liveChat.uploadFile(base64Data, filename);\n\t}\n\n\tasync sendTypingIndicator(conversationId, isTyping) {\n\t\treturn this.liveChat.sendTypingIndicator(conversationId, isTyping);\n\t}\n\n\tasync markConversationAsRead(conversationId) {\n\t\treturn this.liveChat.markConversationAsRead(conversationId);\n\t}\n\n\tasync getUnreadCount() {\n\t\treturn this.liveChat.getUnreadCount();\n\t}\n\n\tasync submitRating(conversationId, data) {\n\t\treturn this.liveChat.submitRating(conversationId, data);\n\t}\n\n\tasync identify(metadata) {\n\t\tawait this._ensureSession();\n\n\t\tif (this.mock) {\n\t\t\tawait new Promise((r) => setTimeout(r, 300));\n\t\t\tconst mockResponse = {\n\t\t\t\tstatus: true,\n\t\t\t\tdata: {\n\t\t\t\t\tcontact_id: 'mock_contact_' + Date.now(),\n\t\t\t\t\temail: metadata.email || '',\n\t\t\t\t\tname: metadata.name || '',\n\t\t\t\t\tavatar: metadata.avatar || '',\n\t\t\t\t\tis_new: true,\n\t\t\t\t},\n\t\t\t};\n\t\t\tthis._storeContactIdentity(mockResponse.data, metadata);\n\t\t\treturn mockResponse;\n\t\t}\n\n\t\tconst payload = {};\n\n\t\tif (metadata.email) payload.email = metadata.email;\n\t\tif (metadata.user_id) payload.user_id = metadata.user_id;\n\t\tif (metadata.name) payload.name = metadata.name;\n\t\tif (metadata.avatar) payload.avatar = metadata.avatar;\n\t\tif (metadata.attributes) payload.attributes = metadata.attributes;\n\t\tif (metadata.company) payload.company = metadata.company;\n\n\t\tconst response = await this._makeRequest('/widget/identify', {\n\t\t\tmethod: 'POST',\n\t\t\theaders: {\n\t\t\t\t'Content-Type': 'application/json',\n\t\t\t\tAuthorization: `Bearer ${this.sessionToken}`,\n\t\t\t},\n\t\t\tbody: JSON.stringify(payload),\n\t\t});\n\n\t\tif (response?.status && response?.data) {\n\t\t\tthis._storeContactIdentity(response.data, metadata);\n\t\t}\n\n\t\treturn response;\n\t}\n\n\t_storeContactIdentity(data, metadata = {}) {\n\t\tthis.contactId = data.contact_id || null;\n\t\tthis.contactEmail = data.email || metadata.email || null;\n\t\tthis.contactName = data.name || metadata.name || null;\n\n\t\ttry {\n\t\t\tlocalStorage.setItem(\n\t\t\t\t'product7_contact',\n\t\t\t\tJSON.stringify({\n\t\t\t\t\tcontactId: this.contactId,\n\t\t\t\t\tcontactEmail: this.contactEmail,\n\t\t\t\t\tcontactName: this.contactName,\n\t\t\t\t})\n\t\t\t);\n\t\t} catch (e) {\n\t\t\t/* silent */\n\t\t}\n\t}\n\n\tgetContactIdentity() {\n\t\tif (this.contactId) {\n\t\t\treturn {\n\t\t\t\tcontactId: this.contactId,\n\t\t\t\tcontactEmail: this.contactEmail,\n\t\t\t\tcontactName: this.contactName,\n\t\t\t};\n\t\t}\n\n\t\ttry {\n\t\t\tconst stored = localStorage.getItem('product7_contact');\n\t\t\tif (stored) {\n\t\t\t\tconst parsed = JSON.parse(stored);\n\t\t\t\tthis.contactId = parsed.contactId;\n\t\t\t\tthis.contactEmail = parsed.contactEmail;\n\t\t\t\tthis.contactName = parsed.contactName;\n\t\t\t\treturn parsed;\n\t\t\t}\n\t\t} catch (e) {\n\t\t\t/* silent */\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tasync identifyContact(data) {\n\t\treturn this.identify(data);\n\t}\n\n\tasync getHelpCollections(options) {\n\t\treturn this.help.getHelpCollections(options);\n\t}\n\n\tasync searchHelpArticles(query, options) {\n\t\treturn this.help.searchHelpArticles(query, options);\n\t}\n\n\tasync getChangelogs(options) {\n\t\treturn this.changelog.getChangelogs(options);\n\t}\n}\n","export class EventBus {\n\tconstructor() {\n\t\tthis.events = new Map();\n\t}\n\n\ton(event, callback) {\n\t\tif (!this.events.has(event)) {\n\t\t\tthis.events.set(event, []);\n\t\t}\n\t\tthis.events.get(event).push(callback);\n\n\t\treturn () => this.off(event, callback);\n\t}\n\n\toff(event, callback) {\n\t\tconst callbacks = this.events.get(event);\n\t\tif (callbacks) {\n\t\t\tconst index = callbacks.indexOf(callback);\n\t\t\tif (index > -1) {\n\t\t\t\tcallbacks.splice(index, 1);\n\t\t\t}\n\t\t}\n\t}\n\n\temit(event, data) {\n\t\tconst callbacks = this.events.get(event);\n\t\tif (callbacks) {\n\t\t\tcallbacks.forEach((callback) => {\n\t\t\t\ttry {\n\t\t\t\t\tcallback(data);\n\t\t\t\t} catch (error) {\n\t\t\t\t\tconsole.error('[Product7] Event callback error:', error);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\tonce(event, callback) {\n\t\tconst unsubscribe = this.on(event, (data) => {\n\t\t\tcallback(data);\n\t\t\tunsubscribe();\n\t\t});\n\t\treturn unsubscribe;\n\t}\n\n\tclear() {\n\t\tthis.events.clear();\n\t}\n\n\tgetListenerCount(event) {\n\t\tconst callbacks = this.events.get(event);\n\t\treturn callbacks ? callbacks.length : 0;\n\t}\n}\n","export const baseStyles = `\n.feedback-widget,\n.liveChat-widget,\n.changelog-widget,\n.feedback-survey,\n.feedback-panel,\n.feedback-modal,\n.changelog-modal,\n.changelog-list-modal,\n.product7-notification {\n box-sizing: border-box;\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', Oxygen, Ubuntu, Cantarell, sans-serif;\n}\n\n.feedback-widget *,\n.feedback-widget *::before,\n.feedback-widget *::after,\n.liveChat-widget *,\n.liveChat-widget *::before,\n.liveChat-widget *::after,\n.changelog-widget *,\n.changelog-widget *::before,\n.changelog-widget *::after,\n.feedback-survey *,\n.feedback-survey *::before,\n.feedback-survey *::after,\n.feedback-panel *,\n.feedback-panel *::before,\n.feedback-panel *::after,\n.feedback-modal *,\n.feedback-modal *::before,\n.feedback-modal *::after,\n.changelog-modal *,\n.changelog-modal *::before,\n.changelog-modal *::after,\n.changelog-list-modal *,\n.changelog-list-modal *::before,\n.changelog-list-modal *::after {\n box-sizing: border-box;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .feedback-widget *,\n .liveChat-widget *,\n .changelog-widget *,\n .feedback-survey * {\n transition: none !important;\n animation: none !important;\n }\n}\n\n@media print {\n .feedback-widget,\n .feedback-panel,\n .sdk-modal-backdrop,\n .sdk-notification,\n .changelog-widget,\n .changelog-modal,\n .liveChat-widget,\n .liveChat-launcher,\n .liveChat-panel,\n .feedback-survey,\n .feedback-survey-backdrop {\n display: none !important;\n }\n}\n`;\n","export const changelogStyles = `\n.changelog-widget {\n position: fixed;\n z-index: var(--z-modal);\n}\n\n.changelog-widget.position-right {\n bottom: var(--spacing-5);\n right: var(--spacing-5);\n}\n\n.changelog-widget.position-left {\n bottom: var(--spacing-5);\n left: var(--spacing-5);\n}\n\n.changelog-trigger-btn {\n position: relative;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: var(--spacing-2);\n height: 48px;\n border-radius: var(--radius-full);\n border: none;\n padding: var(--spacing-3) var(--spacing-5);\n font-size: var(--font-size-base);\n font-weight: var(--font-weight-medium);\n font-family: inherit;\n cursor: pointer;\n transition: all var(--transition-slow);\n color: #ffffff;\n background: var(--color-primary);\n box-shadow: var(--shadow-md);\n width: fit-content;\n}\n\n.changelog-trigger-btn:hover {\n box-shadow: var(--shadow-lg);\n}\n\n.changelog-trigger-btn:active {\n transform: translateY(1px);\n box-shadow: var(--shadow-md);\n transition-duration: 100ms;\n}\n\n.changelog-trigger-btn:focus-visible {\n outline: 2px solid var(--color-primary);\n outline-offset: 2px;\n}\n\n.changelog-icon {\n flex-shrink: 0;\n}\n\n.changelog-confetti-emoji {\n font-size: var(--font-size-base);\n margin-left: 2px;\n}\n\n.changelog-badge {\n position: absolute;\n top: -4px;\n right: -4px;\n width: 12px;\n height: 12px;\n background: var(--color-error);\n border-radius: var(--radius-full);\n border: 2px solid var(--color-white);\n}\n\n/* ========================================\n CONFETTI\n ======================================== */\n\n.changelog-confetti-container {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n pointer-events: none;\n z-index: var(--z-notification);\n overflow: hidden;\n}\n\n.changelog-confetti {\n position: absolute;\n top: -20px;\n opacity: 0;\n animation: confettiFall 2s ease-out forwards;\n}\n\n@keyframes confettiFall {\n 0% {\n opacity: 1;\n transform: translateY(0) rotate(0deg) scale(1);\n }\n 10% {\n opacity: 1;\n }\n 100% {\n opacity: 0;\n transform: translateY(100vh) rotate(720deg) scale(0.5);\n }\n}\n\n/* ========================================\n POPUP MODAL\n ======================================== */\n\n.changelog-modal {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n z-index: var(--z-modal);\n display: flex;\n align-items: center;\n justify-content: center;\n padding: var(--spacing-5);\n pointer-events: none;\n font-family: inherit;\n}\n\n.changelog-modal-backdrop,\n.changelog-list-modal-backdrop {\n position: fixed;\n inset: 0;\n background: rgba(0, 0, 0, 0.5);\n opacity: 0;\n pointer-events: none;\n transition: opacity var(--transition-slow);\n z-index: var(--z-modal-backdrop);\n}\n\n.changelog-modal-backdrop.show,\n.changelog-list-modal-backdrop.show {\n opacity: 1;\n pointer-events: auto;\n}\n\n.changelog-modal.open {\n pointer-events: auto;\n}\n\n.changelog-modal-container {\n position: relative;\n width: 100%;\n max-width: 480px;\n max-height: 90vh;\n background: var(--color-white);\n border-radius: 12px;\n overflow: hidden;\n box-shadow: var(--shadow-xl);\n transform: scale(0.95) translateY(20px);\n opacity: 0;\n transition: all var(--transition-slow);\n}\n\n.changelog-modal.open .changelog-modal-container {\n transform: scale(1) translateY(0);\n opacity: 1;\n}\n\n.changelog-modal-close {\n position: absolute;\n top: var(--spacing-4);\n right: var(--spacing-4);\n background: none;\n border: none;\n cursor: pointer;\n color: var(--color-neutral-500);\n padding: 0;\n width: 28px;\n height: 28px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 8px;\n transition: all var(--transition-base);\n line-height: 1;\n z-index: 10;\n}\n\n.changelog-modal-close:hover {\n background: var(--color-neutral-100);\n color: var(--color-neutral-900);\n}\n\n.changelog-modal-close:active {\n transform: translateY(1px);\n transition-duration: 100ms;\n}\n\n.changelog-modal-content {\n overflow-y: auto;\n max-height: 90vh;\n}\n\n.changelog-loading {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 80px var(--spacing-5);\n}\n\n.changelog-empty {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 80px var(--spacing-5);\n text-align: center;\n color: var(--color-text-tertiary);\n}\n\n.changelog-empty svg {\n margin-bottom: var(--spacing-4);\n stroke: var(--color-neutral-300);\n}\n\n.changelog-empty p {\n margin: 0;\n font-size: var(--font-size-md);\n}\n\n/* ========================================\n POPUP ITEM\n ======================================== */\n\n.changelog-popup-item {\n display: flex;\n flex-direction: column;\n}\n\n.changelog-popup-image {\n width: 100%;\n padding: var(--spacing-6) var(--spacing-6) 0;\n}\n\n.changelog-popup-image img {\n width: 100%;\n height: auto;\n display: block;\n object-fit: cover;\n border-radius: 8px;\n border: 1px solid var(--color-border);\n}\n\n.changelog-popup-body {\n padding: var(--spacing-6) var(--spacing-8) var(--spacing-8);\n text-align: center;\n}\n\n.changelog-popup-title {\n margin: 0 0 var(--spacing-3);\n font-size: var(--font-size-xl);\n font-weight: var(--font-weight-semibold);\n line-height: var(--line-height-snug);\n color: var(--color-text-primary);\n}\n\n.changelog-popup-description {\n margin: 0 0 var(--spacing-6);\n font-size: var(--font-size-md);\n line-height: var(--line-height-loose);\n color: var(--color-text-secondary);\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n}\n\n.changelog-popup-btn {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n padding: var(--spacing-3) var(--spacing-8);\n font-size: var(--font-size-base);\n font-weight: var(--font-weight-medium);\n color: #ffffff;\n background: var(--color-primary);\n border: 1px solid var(--color-primary);\n border-radius: 8px;\n cursor: pointer;\n transition: all var(--transition-base);\n font-family: inherit;\n height: 40px;\n}\n\n.changelog-popup-btn:hover:not(:disabled) {\n background: var(--color-primary-hover);\n}\n\n.changelog-popup-btn:active:not(:disabled) {\n transform: translateY(1px);\n transition-duration: 100ms;\n}\n\n.changelog-popup-btn:focus-visible {\n outline: 2px solid var(--color-primary);\n outline-offset: 2px;\n}\n\n/* ========================================\n POPUP FOOTER / DOTS\n ======================================== */\n\n.changelog-popup-footer {\n padding: 0 var(--spacing-8) var(--spacing-6);\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--spacing-4);\n}\n\n.changelog-popup-dots {\n display: flex;\n gap: var(--spacing-2);\n}\n\n.changelog-dot {\n width: 8px;\n height: 8px;\n border-radius: var(--radius-full);\n background: var(--color-neutral-300);\n cursor: pointer;\n transition: all var(--transition-base);\n}\n\n.changelog-dot:hover {\n background: var(--color-neutral-400);\n}\n\n.changelog-dot.active {\n background: var(--color-primary);\n transform: scale(1.2);\n}\n\n.changelog-view-all-btn {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n background: none;\n border: none;\n color: var(--color-primary);\n font-size: var(--font-size-base);\n font-weight: var(--font-weight-medium);\n cursor: pointer;\n padding: var(--spacing-2) var(--spacing-3);\n border-radius: 8px;\n transition: all var(--transition-base);\n font-family: inherit;\n}\n\n.changelog-view-all-btn:hover {\n background: var(--color-primary-light);\n}\n\n.changelog-view-all-btn:active {\n transform: translateY(1px);\n transition-duration: 100ms;\n}\n\n/* ========================================\n LIST MODAL\n ======================================== */\n\n.changelog-list-modal {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n z-index: var(--z-modal);\n display: flex;\n align-items: center;\n justify-content: center;\n padding: var(--spacing-5);\n pointer-events: none;\n font-family: inherit;\n}\n\n.changelog-list-modal.open {\n pointer-events: auto;\n}\n\n.changelog-list-modal-container {\n position: relative;\n width: 100%;\n max-width: 460px;\n max-height: 85vh;\n background: var(--color-white);\n border-radius: 12px;\n overflow: hidden;\n box-shadow: var(--shadow-lg);\n transform: scale(0.95) translateY(20px);\n opacity: 0;\n transition: all var(--transition-slow);\n display: flex;\n flex-direction: column;\n}\n\n.changelog-list-modal.open .changelog-list-modal-container {\n transform: scale(1) translateY(0);\n opacity: 1;\n}\n\n.changelog-list-modal-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: var(--spacing-4) var(--spacing-5);\n border-bottom: 1px solid var(--color-border);\n flex-shrink: 0;\n}\n\n.changelog-list-modal-header h2 {\n margin: 0;\n font-size: var(--font-size-md);\n font-weight: var(--font-weight-semibold);\n color: var(--color-text-primary);\n}\n\n.changelog-list-modal-close {\n background: none;\n border: none;\n cursor: pointer;\n color: var(--color-neutral-500);\n padding: 0;\n width: 28px;\n height: 28px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 8px;\n transition: all var(--transition-base);\n}\n\n.changelog-list-modal-close:hover {\n background: var(--color-neutral-100);\n color: var(--color-neutral-900);\n}\n\n.changelog-list-modal-close:active {\n transform: translateY(1px);\n transition-duration: 100ms;\n}\n\n.changelog-list-modal-body {\n flex: 1;\n overflow-y: auto;\n}\n\n/* ========================================\n LIST ITEMS\n ======================================== */\n\n.changelog-list {\n display: flex;\n flex-direction: column;\n}\n\n.changelog-list-item {\n display: flex;\n align-items: center;\n gap: var(--spacing-3);\n padding: var(--spacing-4) var(--spacing-5);\n border-bottom: 1px solid var(--color-border);\n cursor: pointer;\n transition: background var(--transition-base);\n}\n\n.changelog-list-item:hover {\n background: var(--color-neutral-50);\n}\n\n.changelog-list-item:last-child {\n border-bottom: none;\n}\n\n.changelog-list-item-content {\n flex: 1;\n min-width: 0;\n display: flex;\n flex-direction: column;\n gap: 3px;\n}\n\n.changelog-list-item-meta {\n display: flex;\n align-items: center;\n gap: var(--spacing-2);\n flex-wrap: wrap;\n}\n\n.changelog-list-item-date {\n font-size: var(--font-size-xs);\n color: var(--color-text-tertiary);\n font-weight: var(--font-weight-medium);\n}\n\n.changelog-list-item-labels {\n display: flex;\n flex-wrap: wrap;\n gap: var(--spacing-1);\n}\n\n.changelog-label {\n display: inline-flex;\n align-items: center;\n padding: 1px 8px;\n border-radius: var(--radius-full);\n font-size: var(--font-size-xs);\n font-weight: var(--font-weight-medium);\n line-height: 1.5;\n}\n\n.changelog-list-item-title {\n margin: 0;\n font-size: var(--font-size-base);\n font-weight: var(--font-weight-semibold);\n line-height: var(--line-height-snug);\n color: var(--color-text-primary);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.changelog-list-item-description {\n margin: 0;\n font-size: var(--font-size-sm);\n line-height: var(--line-height-normal);\n color: var(--color-text-secondary);\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n}\n\n.changelog-list-item-image {\n width: 64px;\n height: 64px;\n flex-shrink: 0;\n border-radius: 8px;\n overflow: hidden;\n border: 1px solid var(--color-border);\n}\n\n.changelog-list-item-image img {\n width: 100%;\n height: 100%;\n display: block;\n object-fit: cover;\n}\n\n.changelog-list-item-arrow {\n flex-shrink: 0;\n color: var(--color-text-tertiary);\n transition: all var(--transition-base);\n}\n\n.changelog-list-item:hover .changelog-list-item-arrow {\n color: var(--color-primary);\n transform: translateX(3px);\n}\n\n/* ========================================\n DARK THEME — scoped variable overrides\n ======================================== */\n\n.changelog-theme-dark.changelog-widget .changelog-trigger-btn {\n background: #1a1e24;\n color: #e8e8e8;\n border: 1px solid #232930;\n}\n\n.changelog-theme-dark.changelog-modal-backdrop,\n.changelog-theme-dark.changelog-list-modal-backdrop {\n background: rgba(2, 6, 23, 0.72);\n}\n\n.changelog-theme-dark .changelog-modal-container,\n.changelog-theme-dark .changelog-list-modal-container {\n --color-white: #1a1e24;\n --color-border: #232930;\n --color-neutral-50: #232930;\n --color-neutral-100: #2d343c;\n --color-neutral-300: #2d343c;\n --color-neutral-400: #555555;\n --color-neutral-500: #777777;\n --color-neutral-900: #e8e8e8;\n --color-text-primary: #e8e8e8;\n --color-text-secondary: #999999;\n --color-text-tertiary: #666666;\n}\n\n/* ========================================\n RESPONSIVE\n ======================================== */\n\n@media (max-width: 768px) {\n .changelog-widget {\n bottom: var(--spacing-4);\n right: var(--spacing-4);\n }\n\n .changelog-widget.position-left {\n left: var(--spacing-4);\n }\n\n .changelog-modal {\n padding: var(--spacing-4);\n }\n\n .changelog-modal-container {\n max-width: 100%;\n border-radius: 12px;\n }\n\n .changelog-popup-image {\n padding: var(--spacing-5) var(--spacing-5) 0;\n }\n\n .changelog-popup-body {\n padding: var(--spacing-5) var(--spacing-6) var(--spacing-6);\n }\n\n .changelog-popup-title {\n font-size: var(--font-size-lg);\n }\n\n .changelog-popup-description {\n font-size: var(--font-size-base);\n }\n\n .changelog-popup-btn {\n padding: var(--spacing-3) var(--spacing-7);\n font-size: var(--font-size-base);\n width: 100%;\n }\n\n .changelog-popup-footer {\n padding: 0 var(--spacing-6) var(--spacing-5);\n }\n\n .changelog-list-modal {\n padding: var(--spacing-4);\n }\n\n .changelog-list-modal-container {\n max-width: 100%;\n max-height: 90vh;\n border-radius: 12px;\n }\n\n .changelog-list-item {\n padding: var(--spacing-3) var(--spacing-4);\n }\n\n .changelog-list-item-image {\n width: 56px;\n height: 56px;\n }\n}\n`;\n","export const componentsStyles = `\n.sdk-btn {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: var(--spacing-2);\n border-radius: 8px;\n border: none;\n font-size: var(--font-size-md);\n font-weight: var(--font-weight-medium);\n font-family: inherit;\n cursor: pointer;\n transition: all var(--transition-base);\n outline: none;\n}\n\n.sdk-btn:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n}\n\n.sdk-btn:focus-visible {\n outline: 2px solid var(--color-primary);\n outline-offset: 2px;\n}\n\n.sdk-btn-primary {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: var(--spacing-2);\n background: var(--color-primary);\n color: var(--color-white);\n border: 1px solid var(--color-primary);\n border-radius: 8px;\n font-size: var(--font-size-base);\n font-weight: var(--font-weight-medium);\n font-family: inherit;\n cursor: pointer;\n height: 40px;\n padding: 8px 18px;\n transition: all var(--transition-base);\n}\n\n.sdk-btn-primary:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n}\n\n.sdk-btn-primary:hover:not(:disabled) {\n background: var(--color-primary-hover);\n}\n\n.sdk-btn-primary:active:not(:disabled) {\n background: var(--color-primary-active);\n transform: translateY(1px);\n transition-duration: 100ms;\n}\n\n.sdk-btn-secondary {\n background: transparent;\n color: var(--color-neutral-600);\n border: 1px solid var(--color-border);\n height: 40px;\n padding: 8px 18px;\n}\n\n.sdk-btn-secondary:hover:not(:disabled) {\n background: var(--color-neutral-50);\n border-color: var(--color-neutral-400);\n color: var(--color-neutral-700);\n}\n\n.sdk-btn-secondary:active:not(:disabled) {\n transform: translateY(1px);\n transition-duration: 100ms;\n}\n\n.sdk-btn-ghost {\n background: transparent;\n color: var(--color-neutral-600);\n}\n\n.sdk-btn-ghost:hover:not(:disabled) {\n background: var(--color-neutral-100);\n color: var(--color-neutral-700);\n}\n\n.sdk-btn-ghost:active:not(:disabled) {\n transform: translateY(1px);\n transition-duration: 100ms;\n}\n\n.sdk-btn-sm {\n height: 36px;\n padding: 8px 14px;\n font-size: var(--font-size-base);\n}\n\n.sdk-btn-lg {\n height: 48px;\n padding: 12px 20px;\n font-size: var(--font-size-lg);\n}\n\n.sdk-btn-pill {\n border-radius: var(--radius-full);\n}\n\n.sdk-btn-block {\n width: 100%;\n}\n\n.sdk-btn-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 36px;\n height: 36px;\n border: none;\n background: none;\n border-radius: 8px;\n cursor: pointer;\n color: var(--color-text-secondary);\n transition: all var(--transition-base);\n padding: 0;\n}\n\n.sdk-btn-icon:hover {\n background: rgba(128, 128, 128, 0.12);\n color: var(--color-text-primary);\n}\n\n.sdk-btn-icon:active {\n transform: translateY(1px);\n transition-duration: 100ms;\n}\n\n.sdk-btn-icon:focus-visible {\n outline: 2px solid var(--color-primary);\n outline-offset: 2px;\n}\n\n.sdk-input {\n width: 100%;\n height: 40px;\n border-radius: 8px;\n border: 1px solid var(--color-border);\n padding: 8px 14px;\n font-size: var(--font-size-md);\n font-weight: var(--font-weight-normal);\n line-height: var(--line-height-relaxed);\n color: var(--color-text-primary);\n font-family: inherit;\n outline: none;\n transition: all var(--transition-base);\n background: var(--color-white);\n}\n\n.sdk-input::placeholder {\n color: var(--color-text-tertiary);\n}\n\n.sdk-input:focus {\n border-color: var(--color-primary);\n box-shadow: 0 0 0 3px var(--color-primary-light);\n}\n\n.sdk-input:disabled {\n background: var(--color-neutral-50);\n cursor: not-allowed;\n}\n\n.sdk-textarea {\n width: 100%;\n min-height: 120px;\n resize: vertical;\n border-radius: 8px;\n border: 1px solid var(--color-border);\n padding: 10px 14px;\n font-size: var(--font-size-md);\n font-weight: var(--font-weight-normal);\n line-height: var(--line-height-relaxed);\n color: var(--color-text-primary);\n font-family: inherit;\n outline: none;\n transition: all var(--transition-base);\n background: var(--color-white);\n}\n\n.sdk-textarea::placeholder {\n color: var(--color-text-tertiary);\n}\n\n.sdk-textarea:focus {\n border-color: var(--color-primary);\n box-shadow: 0 0 0 3px var(--color-primary-light);\n}\n\n.sdk-select {\n width: 100%;\n height: 40px;\n border-radius: 8px;\n border: 1px solid var(--color-border);\n padding: 8px 14px;\n font-size: var(--font-size-md);\n color: var(--color-text-primary);\n font-family: inherit;\n outline: none;\n transition: all var(--transition-base);\n background: var(--color-white);\n cursor: pointer;\n}\n\n.sdk-select:focus {\n border-color: var(--color-primary);\n box-shadow: 0 0 0 3px var(--color-primary-light);\n}\n\n.sdk-label {\n display: block;\n font-size: var(--font-size-base);\n font-weight: var(--font-weight-medium);\n line-height: var(--line-height-tight);\n color: var(--color-neutral-700);\n margin-bottom: var(--spacing-2);\n}\n\n.sdk-required {\n color: var(--color-error, #D13212);\n margin-left: 1px;\n}\n\n.sdk-form-group {\n display: flex;\n flex-direction: column;\n margin-bottom: var(--spacing-5);\n}\n\n.sdk-form-group:last-child {\n margin-bottom: 0;\n}\n\n.sdk-card {\n background: var(--color-white);\n border-radius: 10px;\n box-shadow: var(--shadow-base);\n overflow: hidden;\n}\n\n.sdk-card-header {\n padding: var(--spacing-6);\n border-bottom: 1px solid var(--color-border);\n}\n\n.sdk-card-body {\n padding: var(--spacing-6);\n}\n\n.sdk-card-footer {\n padding: var(--spacing-6);\n border-top: 1px solid var(--color-border);\n}\n\n.sdk-modal-backdrop {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(0, 0, 0, 0.5);\n opacity: 0;\n transition: opacity var(--transition-slow);\n pointer-events: none;\n z-index: var(--z-modal-backdrop);\n}\n\n.sdk-modal-backdrop.show {\n opacity: 1;\n pointer-events: auto;\n}\n\n.sdk-modal {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n z-index: var(--z-modal);\n display: flex;\n align-items: center;\n justify-content: center;\n padding: var(--spacing-5);\n pointer-events: none;\n}\n\n.sdk-modal.open {\n pointer-events: auto;\n}\n\n.sdk-modal-container {\n position: relative;\n width: 100%;\n max-width: 580px;\n max-height: 90vh;\n background: var(--color-white);\n border-radius: 10px;\n overflow: hidden;\n box-shadow: var(--shadow-2xl);\n transform: scale(0.95) translateY(20px);\n opacity: 0;\n transition: all var(--transition-slow);\n}\n\n.sdk-modal.open .sdk-modal-container {\n transform: scale(1) translateY(0);\n opacity: 1;\n}\n\n.sdk-modal-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: var(--spacing-6);\n border-bottom: 1px solid var(--color-border);\n}\n\n.sdk-modal-title {\n margin: 0;\n font-size: var(--font-size-xl);\n font-weight: var(--font-weight-semibold);\n color: var(--color-text-primary);\n}\n\n.sdk-modal-body {\n overflow-y: auto;\n max-height: calc(90vh - 120px);\n}\n\n.sdk-close-btn {\n background: none;\n border: none;\n padding: 0;\n cursor: pointer;\n color: var(--color-neutral-500);\n display: flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n border-radius: 8px;\n transition: all var(--transition-base);\n line-height: 1;\n flex-shrink: 0;\n}\n\n.sdk-close-btn:hover {\n background: rgba(128, 128, 128, 0.12);\n color: var(--color-text-primary);\n}\n\n.sdk-close-btn:active {\n transform: translateY(1px);\n transition-duration: 100ms;\n}\n\n.sdk-close-btn svg {\n width: 18px;\n height: 18px;\n}\n\n.sdk-avatar {\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--color-primary);\n color: var(--color-white);\n font-weight: var(--font-weight-semibold);\n border-radius: var(--radius-full);\n overflow: hidden;\n flex-shrink: 0;\n}\n\n.sdk-avatar-sm {\n width: 24px;\n height: 24px;\n font-size: var(--font-size-xs);\n}\n\n.sdk-avatar-md {\n width: 32px;\n height: 32px;\n font-size: var(--font-size-sm);\n}\n\n.sdk-avatar-lg {\n width: 40px;\n height: 40px;\n font-size: var(--font-size-base);\n}\n\n.sdk-avatar img {\n width: 100%;\n height: 100%;\n object-fit: cover;\n}\n\n.sdk-badge {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n padding: 2px var(--spacing-2);\n border-radius: var(--radius-full);\n font-size: var(--font-size-xs);\n font-weight: var(--font-weight-semibold);\n line-height: 1;\n}\n\n.sdk-badge-primary {\n background: var(--color-primary-light);\n color: var(--color-primary);\n}\n\n.sdk-badge-success {\n background: var(--color-success-light);\n color: var(--color-success-dark);\n}\n\n.sdk-badge-error {\n background: var(--color-error-light);\n color: var(--color-error-dark);\n}\n\n.sdk-badge-dot {\n width: 8px;\n height: 8px;\n border-radius: var(--radius-full);\n position: absolute;\n top: -2px;\n right: -2px;\n}\n\n.sdk-badge-dot.primary {\n background: var(--color-primary);\n}\n\n.sdk-badge-dot.error {\n background: var(--color-error);\n border: 2px solid var(--color-white);\n}\n\n.sdk-notification {\n position: fixed;\n top: var(--spacing-6);\n right: var(--spacing-6);\n z-index: var(--z-notification);\n background: var(--color-white);\n border-radius: 10px;\n box-shadow: var(--shadow-lg);\n min-width: 320px;\n animation: slideInRight 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n}\n\n.sdk-notification-content {\n display: flex;\n align-items: center;\n padding: var(--spacing-4) var(--spacing-5);\n gap: var(--spacing-3);\n}\n\n.sdk-notification-success {\n border: 1px solid var(--color-success-light);\n}\n\n.sdk-notification-success .sdk-notification-icon {\n width: 20px;\n height: 20px;\n border-radius: var(--radius-full);\n background: var(--color-success);\n color: var(--color-white);\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: var(--font-size-sm);\n font-weight: var(--font-weight-semibold);\n flex-shrink: 0;\n}\n\n.sdk-notification-text {\n color: var(--color-success-dark);\n font-weight: var(--font-weight-medium);\n font-size: var(--font-size-base);\n flex: 1;\n}\n\n.sdk-notification .sdk-close-btn {\n flex-shrink: 0;\n}\n\n.sdk-spinner {\n width: 32px;\n height: 32px;\n border: 3px solid var(--color-neutral-200);\n border-top-color: var(--color-primary);\n border-radius: var(--radius-full);\n animation: spin 0.8s linear infinite;\n}\n\n.sdk-spinner-sm {\n width: 20px;\n height: 20px;\n border-width: 2px;\n}\n\n@keyframes spin {\n to {\n transform: rotate(360deg);\n }\n}\n\n@keyframes slideInRight {\n from {\n transform: translateX(400px);\n opacity: 0;\n }\n to {\n transform: translateX(0);\n opacity: 1;\n }\n}\n\n@keyframes fadeIn {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n\n@media (max-width: 768px) {\n .sdk-modal {\n padding: var(--spacing-4);\n }\n \n .sdk-modal-container {\n max-width: 100%;\n border-radius: 10px;\n }\n \n .sdk-notification {\n top: var(--spacing-4);\n right: var(--spacing-4);\n left: var(--spacing-4);\n min-width: auto;\n }\n}\n`;\n","export const designTokens = `\n:root {\n --color-primary: #155EEF;\n --color-primary-hover: #1249CA;\n --color-primary-active: #0D3A9F;\n --color-primary-light: rgba(21, 94, 239, 0.1);\n --color-primary-border: rgba(21, 94, 239, 0.3);\n \n --color-success: #10B981;\n --color-success-hover: #059669;\n --color-success-light: #D1FAE5;\n --color-success-dark: #065F46;\n \n --color-error: #EF4444;\n --color-error-hover: #DC2626;\n --color-error-light: #FEE2E2;\n --color-error-dark: #991B1B;\n --color-error-border: #FECACA;\n \n --color-warning: #F59E0B;\n --color-warning-light: #FEF3C7;\n \n --color-neutral-50: #F9FAFB;\n --color-neutral-100: #F3F4F6;\n --color-neutral-200: #E5E7EB;\n --color-neutral-300: #D1D5DB;\n --color-neutral-400: #9CA3AF;\n --color-neutral-500: #6B7280;\n --color-neutral-600: #4B5563;\n --color-neutral-700: #374151;\n --color-neutral-800: #1F2937;\n --color-neutral-900: #111827;\n \n --color-white: #FFFFFF;\n --color-black: #000000;\n\n --color-background: #FFFFFF;\n --color-surface: #F9FAFB;\n --color-border: #E5E7EB;\n --color-text-primary: #111827;\n --color-text-secondary: #4B5563;\n --color-text-tertiary: #6B7280;\n\n /* Web Chat semantic tokens (light defaults) */\n --msg-bg: #FFFFFF;\n --msg-bg-surface: #F3F4F6;\n --msg-bg-elevated: #FFFFFF;\n --msg-bg-hover: #F9FAFB;\n --msg-bg-input: rgba(255, 255, 255, 0.7);\n --msg-bg-bubble-own: #F3F4F6;\n --msg-bg-bubble-received: #155EEF;\n --msg-bg-header-gradient: linear-gradient(180deg, #e0e7ff 0%, #f0f4ff 35%, #FFFFFF 65%);\n --msg-bg-header-glow1: radial-gradient(circle, rgba(21, 94, 239, 0.08) 0%, transparent 70%);\n --msg-bg-header-glow2: radial-gradient(circle, rgba(139, 92, 246, 0.05) 0%, transparent 70%);\n --msg-text: #111827;\n --msg-text-secondary: #4B5563;\n --msg-text-tertiary: #6B7280;\n --msg-text-muted: #9CA3AF;\n --msg-border: #E5E7EB;\n --msg-border-bubble: transparent;\n --msg-shadow-card: rgba(9, 30, 66, 0.25) 0px 1px 1px, rgba(9, 30, 66, 0.13) 0px 0px 1px 1px;\n --msg-shadow-card-hover: rgba(9, 30, 66, 0.3) 0px 2px 2px, rgba(9, 30, 66, 0.18) 0px 0px 1px 1px;\n \n --spacing-1: 4px;\n --spacing-2: 8px;\n --spacing-3: 12px;\n --spacing-4: 16px;\n --spacing-5: 20px;\n --spacing-6: 24px;\n --spacing-7: 28px;\n --spacing-8: 32px;\n --spacing-10: 40px;\n --spacing-12: 48px;\n \n --font-size-xs: 0.75rem;\n --font-size-sm: 0.8125rem;\n --font-size-base: 0.875rem;\n --font-size-md: 0.9375rem;\n --font-size-lg: 1rem;\n --font-size-xl: 1.125rem;\n --font-size-2xl: 1.25rem;\n --font-size-3xl: 1.5rem;\n \n --font-weight-normal: 450;\n --font-weight-medium: 500;\n --font-weight-semibold: 600;\n --font-weight-bold: 700;\n \n --line-height-tight: 1.25;\n --line-height-snug: 1.3;\n --line-height-normal: 1.4;\n --line-height-relaxed: 1.5;\n --line-height-loose: 1.6;\n \n --radius-sm: 6px;\n --radius-md: 8px;\n --radius-lg: 10px;\n --radius-xl: 12px;\n --radius-2xl: 16px;\n --radius-3xl: 20px;\n --radius-4xl: 24px;\n --radius-full: 9999px;\n \n --shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.05);\n --shadow-base: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06);\n --shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);\n --shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);\n --shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);\n --shadow-2xl: 0 25px 50px -12px rgba(0, 0, 0, 0.25);\n \n --transition-fast: 150ms cubic-bezier(0.4, 0, 0.2, 1);\n --transition-base: 200ms cubic-bezier(0.4, 0, 0.2, 1);\n --transition-slow: 300ms cubic-bezier(0.4, 0, 0.2, 1);\n \n --z-dropdown: 1000;\n --z-sticky: 1020;\n --z-fixed: 1030;\n --z-modal-backdrop: 999998;\n --z-modal: 999999;\n --z-popover: 1000000;\n --z-tooltip: 1000001;\n --z-notification: 1000002;\n}\n`;\n","export const feedbackStyles = `\n.feedback-widget-button {\n position: fixed;\n z-index: var(--z-notification);\n}\n\n.feedback-widget-button.position-right {\n bottom: var(--spacing-5);\n right: var(--spacing-5);\n}\n\n.feedback-widget-button.position-left {\n bottom: var(--spacing-5);\n left: var(--spacing-5);\n}\n\n.feedback-trigger-btn {\n position: relative;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: var(--spacing-2);\n height: 48px;\n border-radius: var(--radius-full);\n border: none;\n padding: var(--spacing-3) var(--spacing-5);\n font-size: var(--font-size-base);\n font-weight: var(--font-weight-medium);\n font-family: inherit;\n cursor: pointer;\n transition: all var(--transition-slow);\n color: #ffffff;\n background: var(--color-primary);\n box-shadow: var(--shadow-md);\n width: fit-content;\n touch-action: manipulation;\n -webkit-tap-highlight-color: transparent;\n}\n\n.feedback-trigger-btn:hover:not(:disabled) {\n box-shadow: var(--shadow-lg);\n}\n\n.feedback-trigger-btn:active:not(:disabled) {\n transform: translateY(1px);\n box-shadow: var(--shadow-md);\n transition-duration: 100ms;\n}\n\n.feedback-trigger-btn:disabled {\n opacity: 0.7;\n cursor: not-allowed;\n}\n\n.feedback-trigger-btn:focus-visible {\n outline: 2px solid var(--color-primary);\n outline-offset: 2px;\n}\n\n.feedback-icon {\n flex-shrink: 0;\n}\n\n.feedback-minimize-icon,\n.feedback-expand-icon {\n position: absolute;\n top: -6px;\n right: -6px;\n width: 24px;\n height: 24px;\n padding: var(--spacing-1);\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--color-white);\n border-radius: var(--radius-full);\n opacity: 0;\n transition: opacity var(--transition-base);\n box-shadow: var(--shadow-sm);\n cursor: pointer;\n pointer-events: none;\n}\n\n.feedback-minimize-icon svg,\n.feedback-expand-icon svg {\n width: 16px;\n height: 16px;\n display: block;\n fill: var(--color-primary);\n}\n\n.feedback-widget-button:not(.minimized) .feedback-trigger-btn:hover .feedback-minimize-icon {\n opacity: 1;\n pointer-events: auto;\n}\n\n.feedback-widget-button.minimized .feedback-trigger-btn {\n padding: var(--spacing-3);\n width: 48px;\n height: 48px;\n justify-content: center;\n}\n\n.feedback-widget-button.minimized .feedback-text {\n display: none;\n}\n\n.feedback-widget-button.minimized .feedback-minimize-icon {\n display: none;\n}\n\n.feedback-widget-button.minimized .feedback-trigger-btn:hover .feedback-expand-icon {\n opacity: 1;\n pointer-events: auto;\n}\n\n.feedback-panel,\n.feedback-modal {\n box-sizing: border-box;\n}\n\n.feedback-panel *,\n.feedback-panel *::before,\n.feedback-panel *::after,\n.feedback-modal *,\n.feedback-modal *::before,\n.feedback-modal *::after {\n box-sizing: border-box;\n}\n\n.feedback-panel {\n position: fixed;\n bottom: 80px;\n right: var(--spacing-6);\n width: 420px;\n max-height: 500px;\n z-index: var(--z-popover);\n border-radius: 12px;\n overflow: hidden;\n opacity: 0;\n transform: translateX(calc(100% + 24px));\n transition: transform 0.35s cubic-bezier(0.4, 0, 0.2, 1), opacity 0.2s ease;\n font-family: inherit;\n box-shadow: var(--shadow-lg);\n}\n\n.feedback-panel.open {\n transform: translateX(0);\n opacity: 1;\n}\n\n.feedback-panel.panel-from-left {\n right: auto;\n left: var(--spacing-6);\n transform: translateX(calc(-100% - 24px));\n}\n\n.feedback-panel.panel-from-left.open {\n transform: translateX(0);\n}\n\n.feedback-modal {\n position: fixed;\n top: 50%;\n left: 50%;\n border-radius: 12px;\n overflow: hidden;\n opacity: 0;\n transform: translate(-50%, -50%) scale(0.96);\n width: min(460px, calc(100vw - (var(--spacing-5) * 2)));\n max-height: min(560px, calc(100vh - (var(--spacing-6) * 2)));\n z-index: var(--z-popover);\n transition: transform var(--transition-slow), opacity var(--transition-slow);\n font-family: inherit;\n box-shadow: var(--shadow-xl);\n}\n\n.feedback-modal.open {\n transform: translate(-50%, -50%) scale(1);\n opacity: 1;\n}\n\n.feedback-panel-content {\n background: var(--feedback-panel-bg, var(--color-white));\n color: var(--feedback-panel-text, var(--color-text-primary));\n height: 100%;\n display: flex;\n flex-direction: column;\n}\n\n.feedback-panel-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: var(--spacing-4) var(--spacing-6);\n border-bottom: 1px solid var(--color-border);\n flex-shrink: 0;\n}\n\n.feedback-panel-header h3 {\n margin: 0;\n font-size: var(--font-size-xl);\n font-weight: var(--font-weight-semibold);\n color: var(--feedback-panel-text, var(--color-text-primary));\n}\n\n.feedback-panel-body {\n flex: 1;\n overflow-y: auto;\n overflow-x: hidden;\n padding: var(--spacing-6);\n}\n\n.feedback-form {\n display: flex;\n flex-direction: column;\n height: 100%;\n}\n\n.feedback-form-actions {\n display: flex;\n flex-direction: column;\n gap: var(--spacing-3);\n margin-top: auto;\n padding-top: var(--spacing-6);\n}\n\n.feedback-error {\n color: #ffffff;\n font-size: var(--font-size-base);\n font-weight: var(--font-weight-normal);\n margin-top: var(--spacing-2);\n padding: var(--spacing-3);\n background: #D13212;\n border-radius: var(--radius-md);\n display: none;\n}\n\n.feedback-error.show {\n display: block;\n}\n\n/* ========================================\n DARK THEME — scoped variable overrides\n ======================================== */\n\n.feedback-panel.theme-dark,\n.feedback-modal.theme-dark {\n /* Aligned with web chat dark theme */\n --color-white: #0f1317;\n --color-background: #0f1317;\n --color-surface: #1a1e24;\n --color-border: #232930;\n --color-neutral-50: #1a1e24;\n --color-neutral-100: #1a1e24;\n --color-neutral-200: #232930;\n --color-neutral-300: #2d343c;\n --color-neutral-400: #555555;\n --color-neutral-500: #777777;\n --color-neutral-900: #e8e8e8;\n --color-text-primary: #e8e8e8;\n --color-text-secondary: #999999;\n --color-text-tertiary: #666666;\n --feedback-panel-bg: #1a1e24;\n --feedback-panel-text: #e8e8e8;\n}\n\n@media (max-width: 768px) {\n .feedback-widget-button {\n bottom: var(--spacing-4);\n right: var(--spacing-4);\n }\n\n .feedback-widget-button.position-left {\n left: var(--spacing-4);\n }\n\n .feedback-minimize-icon,\n .feedback-expand-icon {\n top: -4px;\n right: -4px;\n width: 20px;\n height: 20px;\n }\n\n .feedback-minimize-icon svg,\n .feedback-expand-icon svg {\n width: 14px;\n height: 14px;\n }\n\n .feedback-panel {\n width: min(420px, calc(100vw - (var(--spacing-4) * 2)));\n max-height: min(500px, calc(100vh - 88px));\n top: auto;\n bottom: 72px;\n right: var(--spacing-4);\n left: auto;\n transform: translateX(calc(100% + 24px));\n border-radius: var(--radius-2xl);\n }\n\n .feedback-panel.panel-from-left {\n right: auto;\n left: var(--spacing-4);\n transform: translateX(calc(-100% - 24px));\n }\n\n .feedback-panel.open {\n transform: translateX(0);\n }\n\n .feedback-panel-header {\n padding: var(--spacing-4) var(--spacing-6);\n }\n\n .feedback-panel-body {\n padding: var(--spacing-6);\n }\n\n .feedback-form-group textarea {\n min-height: 120px;\n }\n}\n`;\n","export const liveChatComponentsStyles = `\n\n/* ========================================\n MESSAGES\n ======================================== */\n\n.liveChat-message {\n display: flex;\n gap: var(--spacing-2);\n max-width: 75%;\n}\n\n.liveChat-message-system {\n align-self: center;\n display: flex;\n align-items: center;\n gap: var(--spacing-2);\n padding: var(--spacing-2) 0;\n width: 100%;\n}\n\n.liveChat-message-system::before,\n.liveChat-message-system::after {\n content: '';\n flex: 1;\n height: 1px;\n background: var(--msg-border);\n}\n\n.liveChat-message-system-text {\n font-size: 0.875rem;\n font-weight: 500;\n color: var(--msg-text-secondary);\n white-space: nowrap;\n padding: 0 var(--spacing-2);\n}\n\n/* Rich join/leave system event */\n.liveChat-message-system-event {\n align-self: center;\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 4px;\n padding: var(--spacing-3) 0;\n width: 100%;\n text-align: center;\n}\n\n.liveChat-message-system-event-avatar {\n width: 3rem;\n height: 3rem;\n border-radius: var(--radius-full);\n border: 1px solid var(--msg-border);\n background: var(--msg-bg);\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 1.125rem;\n font-weight: var(--font-weight-semibold);\n color: var(--msg-text);\n overflow: hidden;\n flex-shrink: 0;\n margin-bottom: 4px;\n}\n\n.liveChat-message-system-event-avatar img {\n width: 60%;\n height: 60%;\n object-fit: contain;\n}\n\n.liveChat-message-system-event-name {\n font-size: 0.875rem;\n font-weight: var(--font-weight-semibold);\n color: var(--msg-text);\n line-height: 1.3;\n}\n\n.liveChat-message-system-event-action {\n font-size: 0.875rem;\n font-weight: 500;\n color: var(--msg-text-secondary);\n margin-top: -2px;\n}\n\n.liveChat-message-system-event-time {\n font-size: 0.875rem;\n font-weight: 500;\n color: var(--msg-text-tertiary);\n}\n\n.liveChat-message-own {\n align-self: flex-end;\n flex-direction: column;\n align-items: flex-end;\n}\n\n.liveChat-message-received {\n align-self: flex-start;\n flex-direction: column;\n}\n\n.liveChat-message-row {\n display: flex;\n align-items: flex-end;\n gap: var(--spacing-2);\n}\n\n.liveChat-message-wrapper {\n display: flex;\n flex-direction: column;\n}\n\n.liveChat-message-avatar {\n display: none;\n}\n\n.liveChat-message-sender {\n display: none;\n}\n\n.liveChat-message-bubble {\n padding: 7px 13px;\n border-radius: 1.125rem;\n word-wrap: break-word;\n max-width: 100%;\n}\n\n.liveChat-message-own .liveChat-message-bubble {\n background: var(--msg-bg-bubble-own);\n color: #111827;\n border-bottom-right-radius: 0.25rem;\n}\n\n.liveChat-message-received .liveChat-message-bubble {\n background: var(--msg-bg-bubble-received);\n color: #ffffff;\n border-bottom-left-radius: 0.25rem;\n}\n\n.liveChat-message-content {\n font-size: 0.875rem;\n font-weight: 500;\n line-height: var(--line-height-relaxed);\n}\n\n.liveChat-message-content p {\n margin: 0 0 0.5rem;\n}\n\n.liveChat-message-content p:last-child {\n margin-bottom: 0;\n}\n\n.liveChat-message-time {\n font-size: var(--font-size-xs);\n color: var(--msg-text-tertiary);\n margin-top: 0.25rem;\n padding: 0 var(--spacing-1);\n}\n\n.liveChat-message-meta {\n display: flex;\n align-items: center;\n gap: 0.375rem;\n font-size: var(--font-size-xs);\n color: var(--msg-text-tertiary);\n margin-top: 0.25rem;\n padding: 0 var(--spacing-1);\n}\n\n.liveChat-message-meta-own {\n justify-content: flex-end;\n}\n\n.liveChat-message-sent-status {\n color: var(--msg-text-muted);\n}\n\n.liveChat-message-optimistic .liveChat-message-bubble {\n opacity: 0.7;\n}\n\n.liveChat-message-image {\n max-width: 220px;\n max-height: 200px;\n width: auto;\n height: auto;\n border-radius: var(--radius-lg);\n margin-top: var(--spacing-1);\n cursor: pointer;\n object-fit: contain;\n display: block;\n}\n\n.liveChat-message-file {\n display: inline-flex;\n align-items: center;\n gap: var(--spacing-2);\n margin-top: var(--spacing-1);\n padding: var(--spacing-2) var(--spacing-3);\n border-radius: var(--radius-lg);\n background: var(--color-neutral-100);\n color: var(--color-primary);\n text-decoration: none;\n font-size: var(--font-size-sm);\n transition: background var(--transition-base);\n max-width: 100%;\n word-break: break-all;\n cursor: pointer;\n}\n\n.liveChat-message-file:hover {\n background: var(--color-neutral-200);\n}\n\n.liveChat-file-download-icon {\n margin-left: auto;\n opacity: 0.5;\n flex-shrink: 0;\n}\n\n.liveChat-message-file:hover .liveChat-file-download-icon {\n opacity: 1;\n}\n\n.liveChat-closed-banner {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: var(--spacing-2);\n padding: var(--spacing-3) var(--spacing-4);\n margin: var(--spacing-4);\n background: var(--color-success-light);\n color: var(--color-success-dark);\n border-radius: var(--radius-xl);\n font-size: var(--font-size-sm);\n font-weight: var(--font-weight-medium);\n}\n\n/* ========================================\n SCROLL PILL & CONNECTION BANNER\n ======================================== */\n\n.liveChat-scroll-pill {\n position: absolute;\n bottom: 80px;\n left: 50%;\n transform: translateX(-50%);\n display: flex;\n align-items: center;\n gap: var(--spacing-1);\n padding: 6px 14px;\n background: var(--color-primary);\n color: #ffffff;\n font-size: var(--font-size-xs);\n font-weight: 500;\n border-radius: var(--radius-full);\n cursor: pointer;\n box-shadow: var(--shadow-lg);\n z-index: 10;\n white-space: nowrap;\n}\n\n.liveChat-connection-banner {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: var(--spacing-2);\n padding: 6px var(--spacing-4);\n background: #fef3c7;\n color: #92400e;\n font-size: var(--font-size-xs);\n font-weight: 500;\n flex-shrink: 0;\n}\n\n.liveChat-widget.theme-dark .liveChat-connection-banner {\n background: rgba(245, 158, 11, 0.15);\n color: #fbbf24;\n}\n\n/* ========================================\n CHAT HEADER\n ======================================== */\n\n.liveChat-chat-header {\n display: flex;\n align-items: center;\n gap: var(--spacing-2);\n padding: var(--spacing-3) var(--spacing-4);\n border-bottom: 1px solid var(--msg-border);\n}\n\n.liveChat-chat-header-avatar {\n width: 2.25rem;\n height: 2.25rem;\n border-radius: var(--radius-lg);\n background: var(--msg-bg-surface);\n border: 1px solid var(--msg-border);\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n overflow: hidden;\n padding: 4px;\n}\n\n.liveChat-chat-header-avatar img {\n width: 100%;\n height: 100%;\n object-fit: contain;\n}\n\n.liveChat-chat-header-avatar svg {\n width: 1.25rem;\n height: 1.25rem;\n color: var(--msg-text-secondary);\n}\n\n.liveChat-chat-header-info {\n flex: 1;\n display: flex;\n flex-direction: column;\n gap: 0;\n min-width: 0;\n}\n\n.liveChat-chat-title {\n font-size: var(--font-size-base);\n font-weight: var(--font-weight-semibold);\n color: var(--msg-text);\n line-height: 1.4;\n}\n\n.liveChat-chat-subtitle {\n font-size: var(--font-size-sm);\n color: var(--msg-text-secondary);\n line-height: 1.4;\n}\n\n.liveChat-chat-header-actions {\n display: flex;\n align-items: center;\n gap: var(--spacing-1);\n flex-shrink: 0;\n}\n\n.liveChat-chat-messages {\n flex: 1;\n overflow-y: auto;\n padding: var(--spacing-5) var(--spacing-4);\n display: flex;\n flex-direction: column;\n gap: var(--spacing-4);\n}\n\n.liveChat-chat-empty {\n flex: 1;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n text-align: center;\n padding: var(--spacing-10);\n}\n\n.liveChat-chat-empty-avatars {\n margin-bottom: var(--spacing-4);\n}\n\n.liveChat-chat-empty-logo {\n width: 48px;\n height: 48px;\n border-radius: var(--radius-xl);\n overflow: hidden;\n margin-bottom: var(--spacing-4);\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--msg-bg-surface);\n}\n\n.liveChat-chat-empty-logo img {\n width: 100%;\n height: 100%;\n object-fit: contain;\n}\n\n.liveChat-chat-empty h3 {\n margin: 0 0 var(--spacing-2);\n font-size: var(--font-size-base);\n font-weight: var(--font-weight-semibold);\n color: var(--msg-text);\n}\n\n\n/* ========================================\n COMPOSE AREA\n ======================================== */\n\n/* ========================================\n EMOJI PICKER\n ======================================== */\n\n.liveChat-emoji-picker-container {\n padding: 0 var(--spacing-3) var(--spacing-2);\n}\n\n.liveChat-emoji-picker-container emoji-picker {\n width: 100%;\n height: 320px;\n border-radius: var(--radius-xl);\n border: 1px solid var(--msg-border);\n box-shadow: var(--shadow-lg);\n\n --background: var(--msg-bg);\n --border-color: var(--msg-border);\n --border-radius: 12px;\n --category-font-color: var(--msg-text-secondary);\n --category-font-size: 0.7rem;\n --emoji-size: 1.35rem;\n --emoji-padding: 0.3rem;\n --input-border-color: var(--msg-border);\n --input-border-radius: 8px;\n --input-font-color: var(--msg-text);\n --input-font-size: 0.8rem;\n --input-placeholder-color: var(--msg-text-tertiary);\n --input-padding: 0.375rem 0.625rem;\n --outline-color: var(--color-primary);\n --num-columns: 8;\n --indicator-color: var(--color-primary);\n --hover-background: var(--msg-bg-hover);\n}\n\n.liveChat-widget.theme-dark .liveChat-emoji-picker-container emoji-picker {\n --background: var(--msg-bg);\n --border-color: var(--msg-border);\n --category-font-color: var(--msg-text-secondary);\n --input-font-color: var(--msg-text);\n --input-placeholder-color: var(--msg-text-tertiary);\n --hover-background: var(--msg-bg-hover);\n}\n\n.liveChat-chat-compose {\n display: flex;\n flex-direction: column;\n padding: var(--spacing-3) var(--spacing-4);\n background: var(--msg-bg);\n margin: 0 var(--spacing-3) var(--spacing-3);\n border: 1px solid var(--msg-border);\n border-radius: var(--radius-xl);\n}\n\n.liveChat-compose-input-wrapper {\n width: 100%;\n}\n\n.liveChat-compose-input {\n width: 100%;\n background: transparent;\n border: none;\n outline: none;\n color: var(--msg-text);\n font-size: var(--font-size-base);\n line-height: var(--line-height-relaxed);\n resize: none;\n max-height: 120px;\n font-family: inherit;\n padding: var(--spacing-1) 0;\n}\n\n.liveChat-compose-input::placeholder {\n color: var(--msg-text-tertiary);\n}\n\n.liveChat-compose-input:focus {\n outline: none;\n}\n\n.liveChat-chat-compose:focus-within {\n border-color: var(--color-primary-border);\n box-shadow: 0 0 0 3px var(--color-primary-light);\n}\n\n.liveChat-compose-bottom {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-top: var(--spacing-2);\n}\n\n.liveChat-compose-actions {\n display: flex;\n align-items: center;\n gap: var(--spacing-1);\n}\n\n.liveChat-compose-send {\n width: 2.25rem;\n height: 2.25rem;\n background: transparent;\n border: 1px solid var(--msg-border);\n border-radius: var(--radius-full);\n color: var(--msg-text-secondary);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: all var(--transition-base);\n flex-shrink: 0;\n}\n\n.liveChat-compose-send:hover:not(:disabled) {\n background: var(--color-primary);\n border-color: var(--color-primary);\n color: var(--msg-bg);\n}\n\n.liveChat-compose-send:active:not(:disabled) {\n transform: translateY(1px);\n transition-duration: 100ms;\n}\n\n.liveChat-compose-send:disabled {\n color: var(--color-neutral-300);\n border-color: var(--color-neutral-200);\n cursor: not-allowed;\n}\n\n.liveChat-compose-send svg {\n color: inherit;\n}\n\n.liveChat-compose-file-input {\n display: none;\n}\n\n.liveChat-compose-attach {\n width: 2rem;\n height: 2rem;\n flex-shrink: 0;\n color: var(--msg-text-secondary);\n}\n\n.liveChat-compose-attach:hover {\n color: var(--msg-text);\n}\n\n.liveChat-compose-attach svg {\n width: 1.25rem;\n height: 1.25rem;\n}\n\n/* ========================================\n TYPING INDICATOR\n ======================================== */\n\n.liveChat-typing-indicator {\n display: none;\n align-items: center;\n gap: var(--spacing-2);\n padding: var(--spacing-2) var(--spacing-3);\n margin: var(--spacing-1) 0;\n}\n\n.liveChat-typing-dots {\n display: flex;\n align-items: center;\n gap: 4px;\n background: var(--color-neutral-100);\n padding: var(--spacing-2) var(--spacing-3);\n border-radius: var(--radius-2xl);\n}\n\n.liveChat-typing-dots span {\n width: 6px;\n height: 6px;\n background: var(--color-neutral-400);\n border-radius: var(--radius-full);\n animation: liveChat-typing-bounce 1.4s infinite ease-in-out;\n}\n\n.liveChat-typing-dots span:nth-child(1) { animation-delay: -0.32s; }\n.liveChat-typing-dots span:nth-child(2) { animation-delay: -0.16s; }\n.liveChat-typing-dots span:nth-child(3) { animation-delay: 0s; }\n\n.liveChat-typing-text {\n font-size: var(--font-size-xs);\n color: var(--msg-text-tertiary);\n}\n\n/* ========================================\n NAVIGATION TABS\n ======================================== */\n\n.liveChat-panel-nav {\n border-top: 1px solid var(--msg-border);\n background: var(--msg-bg);\n}\n\n.liveChat-nav-tabs {\n display: flex;\n padding: var(--spacing-1) var(--spacing-2) 0;\n gap: var(--spacing-1);\n}\n\n.liveChat-nav-footer {\n padding: 2px var(--spacing-2) var(--spacing-2);\n text-align: center;\n}\n\n.liveChat-powered-by {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n font-size: 10px;\n color: var(--msg-text-tertiary);\n text-decoration: none;\n transition: color var(--transition-base);\n}\n\n.liveChat-powered-by:hover {\n color: var(--msg-text-secondary);\n}\n\n.liveChat-powered-by svg {\n width: 12px;\n height: 14px;\n}\n\n.liveChat-powered-by strong {\n font-weight: var(--font-weight-semibold);\n}\n\n.liveChat-nav-tab {\n flex: 1;\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 2px;\n padding: var(--spacing-1) var(--spacing-1);\n background: none;\n border: none;\n cursor: pointer;\n border-radius: 8px;\n transition: all var(--transition-base);\n position: relative;\n}\n\n.liveChat-nav-tab:hover {\n background: transparent;\n}\n\n.liveChat-nav-tab:active {\n transform: translateY(1px);\n transition-duration: 100ms;\n}\n\n.liveChat-nav-tab:hover .liveChat-nav-icon,\n.liveChat-nav-tab:hover .liveChat-nav-label {\n color: var(--msg-text);\n}\n\n.liveChat-nav-icon {\n color: var(--msg-text-secondary);\n transition: color var(--transition-base);\n display: flex;\n align-items: center;\n justify-content: center;\n width: 26px;\n height: 26px;\n}\n\n.liveChat-nav-icon svg {\n width: 26px;\n height: 26px;\n display: block;\n}\n\n.liveChat-nav-label {\n font-size: var(--font-size-sm);\n font-weight: var(--font-weight-medium);\n color: var(--msg-text-secondary);\n transition: color var(--transition-base);\n}\n\n.liveChat-nav-tab.active .liveChat-nav-icon,\n.liveChat-nav-tab.active .liveChat-nav-label {\n color: var(--color-primary);\n}\n\n.liveChat-nav-badge {\n position: absolute;\n top: var(--spacing-1);\n right: calc(50% - 16px);\n min-width: 16px;\n height: 16px;\n background: var(--color-error);\n color: var(--msg-bg);\n font-size: 10px;\n font-weight: var(--font-weight-semibold);\n border-radius: var(--radius-full);\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 0 var(--spacing-1);\n}\n\n/* ========================================\n PRECHAT\n ======================================== */\n\n.liveChat-prechat-view {\n position: relative;\n}\n\n.liveChat-prechat-overlay {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(0, 0, 0, 0.45);\n display: flex;\n align-items: center;\n justify-content: center;\n padding: var(--spacing-5);\n z-index: var(--z-popover);\n backdrop-filter: blur(2px);\n}\n\n.liveChat-prechat-card {\n background: var(--msg-bg);\n border-radius: var(--radius-xl);\n padding: var(--spacing-6) var(--spacing-6) var(--spacing-5);\n width: 100%;\n max-width: 320px;\n box-shadow: var(--shadow-xl);\n border: 1px solid var(--msg-border);\n text-align: center;\n}\n\n.liveChat-prechat-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 60px;\n height: 60px;\n border-radius: var(--radius-full);\n background: var(--color-primary-light);\n color: var(--color-primary);\n margin: 0 auto var(--spacing-4);\n}\n\n.liveChat-prechat-title {\n margin: 0 0 var(--spacing-2);\n font-size: var(--font-size-base);\n font-weight: var(--font-weight-semibold);\n color: var(--msg-text);\n}\n\n.liveChat-prechat-subtitle {\n margin: 0 0 var(--spacing-5);\n font-size: var(--font-size-sm);\n color: var(--msg-text-secondary);\n line-height: var(--line-height-relaxed);\n}\n\n.liveChat-prechat-form {\n display: flex;\n flex-direction: column;\n gap: var(--spacing-2);\n}\n\n.liveChat-prechat-field {\n display: flex;\n flex-direction: column;\n gap: var(--spacing-1);\n}\n\n.liveChat-prechat-input {\n width: 100%;\n padding: var(--spacing-2) var(--spacing-3);\n border: 1px solid var(--msg-border);\n border-radius: var(--radius-md);\n font-size: var(--font-size-sm);\n font-family: inherit;\n background: var(--msg-bg-surface);\n color: var(--msg-text);\n outline: none;\n transition: border-color var(--transition-fast);\n box-sizing: border-box;\n}\n\n.liveChat-prechat-input::placeholder {\n color: var(--msg-text-secondary);\n}\n\n.liveChat-prechat-input:focus {\n border-color: var(--color-primary);\n}\n\n.liveChat-prechat-error {\n font-size: var(--font-size-xs);\n color: #dc2626;\n}\n\n.liveChat-prechat-submit {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: var(--spacing-2);\n padding: var(--spacing-2) var(--spacing-3);\n border-radius: var(--radius-md);\n font-size: var(--font-size-sm);\n font-weight: var(--font-weight-medium);\n font-family: inherit;\n cursor: pointer;\n transition: all var(--transition-fast);\n border: none;\n width: 100%;\n background: var(--color-primary);\n color: #ffffff;\n margin-top: var(--spacing-1);\n}\n\n.liveChat-prechat-submit:hover {\n background: var(--color-primary-hover);\n}\n\n.liveChat-prechat-submit:active {\n transform: translateY(1px);\n transition-duration: 100ms;\n}\n\n.liveChat-prechat-submit:disabled {\n opacity: 0.7;\n cursor: not-allowed;\n}\n`;\n","export const liveChatCoreStyles = `\n\n.liveChat-launcher {\n position: fixed;\n z-index: var(--z-modal);\n}\n\n.liveChat-launcher-right {\n bottom: var(--liveChat-v-padding, var(--spacing-5));\n right: var(--liveChat-h-padding, var(--spacing-5));\n}\n\n.liveChat-launcher-left {\n bottom: var(--liveChat-v-padding, var(--spacing-5));\n left: var(--liveChat-h-padding, var(--spacing-5));\n}\n\n.liveChat-launcher-btn {\n width: 60px;\n height: 60px;\n border-radius: var(--radius-full);\n border: none;\n background: var(--color-primary);\n color: #ffffff;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n box-shadow: var(--shadow-lg);\n transition: all var(--transition-slow);\n position: relative;\n}\n\n.liveChat-launcher-btn:hover {\n box-shadow: var(--shadow-xl);\n}\n\n.liveChat-launcher-btn:active {\n transform: translateY(1px);\n transition-duration: 100ms;\n}\n\n.liveChat-launcher-badge {\n position: absolute;\n top: -3px;\n right: -3px;\n min-width: 22px;\n height: 22px;\n background: #ef4444;\n color: #ffffff;\n font-size: 11px;\n font-weight: 700;\n border-radius: var(--radius-full);\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 0 6px;\n border: 2.5px solid #ffffff;\n box-shadow: 0 2px 6px rgb(239 68 68 / 0.45);\n letter-spacing: -0.2px;\n line-height: 1;\n}\n\n.liveChat-panel {\n position: fixed;\n z-index: var(--z-popover);\n width: 400px;\n height: 720px;\n max-height: calc(100vh - 100px);\n opacity: 0;\n visibility: hidden;\n pointer-events: none;\n transform: translateY(8px) scale(0.97);\n transition:\n opacity 160ms cubic-bezier(0.4, 0, 1, 1),\n transform 180ms cubic-bezier(0.4, 0, 1, 1),\n visibility 0s linear 180ms,\n width 300ms cubic-bezier(0.16, 1, 0.3, 1),\n height 300ms cubic-bezier(0.16, 1, 0.3, 1),\n max-height 300ms cubic-bezier(0.16, 1, 0.3, 1);\n}\n\n.liveChat-panel.open {\n opacity: 1;\n visibility: visible;\n pointer-events: auto;\n transform: translateY(0) scale(1);\n transition:\n opacity 220ms cubic-bezier(0.16, 1, 0.3, 1),\n transform 300ms cubic-bezier(0.16, 1, 0.3, 1),\n visibility 0s linear 0s;\n}\n\n.liveChat-panel-right {\n bottom: calc(var(--liveChat-v-padding, var(--spacing-5)) + 70px);\n right: var(--liveChat-h-padding, var(--spacing-5));\n transform-origin: bottom right;\n}\n\n.liveChat-panel-left {\n bottom: calc(var(--liveChat-v-padding, var(--spacing-5)) + 70px);\n left: var(--liveChat-h-padding, var(--spacing-5));\n transform-origin: bottom left;\n}\n\n.liveChat-panel-content {\n background: var(--msg-bg);\n height: 100%;\n border-radius: var(--radius-2xl);\n overflow: hidden;\n display: flex;\n flex-direction: column;\n box-shadow: var(--shadow-xl);\n border: 1px solid var(--msg-border);\n}\n\n.liveChat-panel-content *::-webkit-scrollbar {\n display: none;\n}\n\n.liveChat-panel-content * {\n scrollbar-width: none;\n}\n\n.liveChat-panel-views {\n flex: 1;\n overflow: hidden;\n display: flex;\n flex-direction: column;\n}\n\n.liveChat-view {\n height: 100%;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n position: relative;\n}\n\n.liveChat-avatar-stack {\n display: flex;\n align-items: center;\n}\n\n.liveChat-avatar-stack .sdk-avatar {\n margin-left: -8px;\n}\n\n.liveChat-avatar-stack .sdk-avatar:first-child {\n margin-left: 0;\n}\n\n.liveChat-avatar-stack-tiny .sdk-avatar {\n margin-left: -6px;\n}\n\n.liveChat-avatar-stack-tiny .sdk-avatar:first-child {\n margin-left: 0;\n}\n\n.liveChat-mobile-close-btn {\n display: none;\n}\n\n.liveChat-panel.liveChat-panel-expanded {\n width: 720px;\n height: 88vh;\n max-height: 88vh;\n}\n\n.liveChat-chat-menu-wrapper {\n position: relative;\n}\n\n.liveChat-chat-menu-dropdown {\n position: absolute;\n top: calc(100% + 6px);\n right: 0;\n background: var(--color-white, #ffffff);\n border: 1px solid var(--color-border, #e5e7eb);\n border-radius: var(--radius-lg);\n box-shadow: 0 4px 16px rgba(0,0,0,0.12);\n min-width: 190px;\n z-index: 20;\n overflow: hidden;\n opacity: 0;\n visibility: hidden;\n transform: translateY(-4px);\n transition: opacity 140ms ease, transform 140ms ease, visibility 0s linear 140ms;\n}\n\n.liveChat-chat-menu-dropdown.open {\n opacity: 1;\n visibility: visible;\n transform: translateY(0);\n transition: opacity 140ms ease, transform 140ms ease, visibility 0s linear 0s;\n}\n\n.liveChat-chat-menu-item {\n width: 100%;\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 10px 14px;\n background: none;\n border: none;\n cursor: pointer;\n font-size: 13px;\n font-weight: 500;\n color: var(--color-text-primary, #111827);\n text-align: left;\n transition: background 120ms;\n}\n\n.liveChat-chat-menu-item:hover {\n background: var(--color-neutral-50, #f9fafb);\n}\n\n.liveChat-chat-menu-item iconify-icon {\n color: var(--color-text-secondary, #6b7280);\n flex-shrink: 0;\n}\n\n@media (max-width: 480px) {\n .liveChat-mobile-close-btn {\n display: flex;\n }\n .liveChat-chat-menu-wrapper {\n display: none;\n }\n .liveChat-panel {\n width: 100%;\n height: 100%;\n max-height: 100%;\n bottom: 0;\n right: 0;\n left: 0;\n border-radius: 0;\n transform-origin: bottom center;\n transform: translateY(12px) scale(0.98);\n }\n\n .liveChat-panel.open {\n transform: translateY(0) scale(1);\n }\n\n .liveChat-panel-content {\n border-radius: 0;\n }\n\n .liveChat-launcher {\n bottom: var(--spacing-4);\n right: var(--spacing-4);\n }\n\n .liveChat-launcher-left {\n left: var(--spacing-4);\n }\n}\n\n/* ========================================\n DARK THEME — token overrides only\n ======================================== */\n\n.liveChat-widget.theme-dark {\n /* Web Chat semantic tokens */\n --msg-bg: #0f1317;\n --msg-bg-surface: #1a1e24;\n --msg-bg-elevated: #232930;\n --msg-bg-hover: #232930;\n --msg-bg-input: #1a1e24;\n --msg-bg-bubble-own: #1e2330;\n --msg-bg-bubble-received: #1D4ED8;\n --msg-bg-header-gradient: linear-gradient(180deg, #1a1e2e 0%, #141720 50%, #0f1317 100%);\n --msg-bg-header-glow1: radial-gradient(circle, rgba(21, 94, 239, 0.07) 0%, transparent 70%);\n --msg-bg-header-glow2: radial-gradient(circle, rgba(139, 92, 246, 0.05) 0%, transparent 70%);\n --msg-text: #e8e8e8;\n --msg-text-secondary: #999999;\n --msg-text-tertiary: #666666;\n --msg-text-muted: #555555;\n --msg-border: #232930;\n --msg-border-bubble: #3a4255;\n --msg-shadow-card: none;\n --msg-shadow-card-hover: none;\n\n /* Override base design tokens within web chat scope */\n --color-white: #0f1317;\n --color-background: #0f1317;\n --color-surface: #1a1e24;\n --color-neutral-50: #1a1e24;\n --color-neutral-100: #1a1e24;\n --color-neutral-200: #232930;\n --color-neutral-300: #2d343c;\n --color-neutral-400: #555555;\n --color-neutral-500: #777777;\n --color-border: #232930;\n --color-text-primary: #e8e8e8;\n --color-text-secondary: #999999;\n --color-text-tertiary: #666666;\n --color-success-light: rgba(16, 185, 129, 0.15);\n --color-success-dark: #34d399;\n --color-error: #f87171;\n --color-error-light: rgba(239, 68, 68, 0.15);\n --color-error-dark: #fca5a5;\n}\n`;\n","export const liveChatFeaturesStyles = `\n/* ========================================\n ATTACHMENTS\n ======================================== */\n.liveChat-compose-attachments-preview {\n display: none;\n flex-wrap: wrap;\n gap: var(--spacing-2);\n padding: var(--spacing-2) var(--spacing-4);\n border-top: 1px solid var(--msg-border);\n background: var(--msg-bg);\n}\n\n.liveChat-attachment-preview {\n position: relative;\n width: 56px;\n height: 56px;\n border-radius: var(--radius-lg);\n overflow: hidden;\n border: 1px solid var(--color-border);\n}\n\n.liveChat-attachment-thumb {\n width: 100%;\n height: 100%;\n object-fit: cover;\n display: block;\n}\n\n.liveChat-attachment-file-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--color-neutral-100);\n color: var(--color-text-secondary);\n}\n\n.liveChat-attachment-remove {\n position: absolute;\n top: 2px;\n right: 2px;\n width: 18px;\n height: 18px;\n background: rgba(0, 0, 0, 0.7);\n border: none;\n border-radius: var(--radius-full);\n color: var(--color-white);\n font-size: var(--font-size-xs);\n line-height: 1;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 0;\n transition: background var(--transition-base);\n}\n\n.liveChat-attachment-remove:hover {\n background: var(--color-error);\n}\n\n/* ========================================\n EMAIL OVERLAY\n ======================================== */\n.liveChat-email-overlay {\n position: absolute;\n bottom: 0;\n left: 0;\n right: 0;\n top: 0;\n display: none;\n align-items: flex-end;\n z-index: 20;\n background: rgba(0, 0, 0, 0.5);\n pointer-events: auto;\n}\n\n.liveChat-email-card {\n width: 100%;\n animation: liveChat-slide-up 0.25s ease;\n}\n\n.liveChat-email-actions {\n display: flex;\n gap: var(--spacing-2);\n margin-top: var(--spacing-1);\n}\n\n/* ========================================\n EMPTY STATE\n ======================================== */\n.liveChat-empty-state {\n flex: 1;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n text-align: center;\n padding: var(--spacing-10);\n}\n\n.liveChat-empty-state-icon {\n color: var(--msg-text-tertiary);\n margin-bottom: var(--spacing-4);\n}\n\n.liveChat-empty-state h3 {\n margin: 0 0 var(--spacing-2);\n font-size: var(--font-size-xl);\n font-weight: var(--font-weight-semibold);\n color: var(--color-text-primary);\n}\n\n.liveChat-empty-state p {\n margin: 0;\n font-size: var(--font-size-base);\n color: var(--color-text-secondary);\n}\n\n/* ========================================\n ANIMATIONS\n ======================================== */\n@keyframes spin {\n to {\n transform: rotate(360deg);\n }\n}\n\n@keyframes liveChat-typing-bounce {\n 0%, 80%, 100% {\n transform: scale(0);\n }\n 40% {\n transform: scale(1);\n }\n}\n\n@keyframes liveChat-slide-up {\n from {\n transform: translateY(100%);\n opacity: 0;\n }\n to {\n transform: translateY(0);\n opacity: 1;\n }\n}\n\n@keyframes liveChat-fade-in {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n\n/* ========================================\n RESPONSIVE\n ======================================== */\n@media (max-width: 480px) {\n .liveChat-prechat-overlay {\n padding: var(--spacing-4);\n }\n .liveChat-prechat-card {\n max-width: 100%;\n }\n}\n`;\n","export const liveChatViewsStyles = `\n/* ========================================\n HOME VIEW\n ======================================== */\n\n.liveChat-home-view {\n background: var(--msg-bg-header-gradient);\n position: relative;\n overflow: hidden;\n}\n\n.liveChat-home-view::before {\n content: '';\n position: absolute;\n top: 0;\n left: 0;\n width: 600px;\n height: 600px;\n background: var(--msg-bg-header-glow1);\n filter: blur(60px);\n pointer-events: none;\n z-index: 1;\n}\n\n.liveChat-home-view::after {\n content: '';\n position: absolute;\n top: 0;\n right: 0;\n width: 500px;\n height: 500px;\n background: var(--msg-bg-header-glow2);\n filter: blur(60px);\n pointer-events: none;\n z-index: 1;\n}\n\n.liveChat-home-scroll {\n flex: 1;\n overflow-y: auto;\n display: flex;\n flex-direction: column;\n position: relative;\n}\n\n.liveChat-home-header {\n padding: var(--spacing-6) var(--spacing-5);\n position: relative;\n z-index: 2;\n flex-shrink: 0;\n}\n\n.liveChat-home-header-top {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: var(--spacing-8);\n position: relative;\n z-index: 2;\n}\n\n.liveChat-home-logo {\n width: 48px;\n height: 48px;\n border-radius: var(--radius-lg);\n overflow: visible;\n flex-shrink: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.liveChat-home-logo img {\n width: 100%;\n height: 100%;\n object-fit: contain;\n border-radius: var(--radius-lg);\n}\n\n.liveChat-home-avatars {\n flex: 1;\n display: flex;\n justify-content: flex-end;\n margin-right: var(--spacing-4);\n margin-left: var(--spacing-4);\n}\n\n.liveChat-home-avatars:empty {\n display: none;\n}\n\n.liveChat-home-welcome {\n display: flex;\n flex-direction: column;\n text-align: left;\n position: relative;\n z-index: 2;\n}\n\n.liveChat-home-greeting {\n font-size: clamp(22px, 8vw, 34px);\n font-weight: var(--font-weight-bold);\n color: var(--msg-text);\n line-height: var(--line-height-tight);\n word-break: break-word;\n}\n\n.liveChat-home-question {\n font-size: clamp(18px, 6.5vw, 28px);\n font-weight: var(--font-weight-bold);\n color: var(--msg-text);\n line-height: var(--line-height-tight);\n word-break: break-word;\n}\n\n.liveChat-home-body {\n flex: 1;\n padding: 0 var(--spacing-5) var(--spacing-5);\n position: relative;\n z-index: 2;\n}\n\n.liveChat-home-recent-card {\n background: var(--msg-bg);\n border: 1px solid var(--msg-border);\n border-radius: 10px;\n padding: var(--spacing-3) var(--spacing-4);\n margin-bottom: var(--spacing-2);\n cursor: pointer;\n transition: background var(--transition-base);\n box-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05);\n}\n\n.liveChat-home-recent-card:hover {\n background: var(--msg-bg-hover);\n}\n\n.liveChat-home-recent-card-label {\n font-size: 0.875rem;\n font-weight: 600;\n color: var(--msg-text-tertiary);\n margin-bottom: var(--spacing-2);\n}\n\n.liveChat-home-recent-card-row {\n display: flex;\n align-items: center;\n gap: var(--spacing-3);\n}\n\n.liveChat-home-recent-avatar {\n width: 36px;\n height: 36px;\n border-radius: var(--radius-full);\n flex-shrink: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: var(--font-size-sm);\n font-weight: var(--font-weight-semibold);\n color: #ffffff;\n overflow: hidden;\n}\n\n.liveChat-home-recent-avatar img {\n width: 100%;\n height: 100%;\n object-fit: cover;\n}\n\n.liveChat-home-recent-avatar-logo {\n background: var(--msg-bg-surface);\n border: 1px solid var(--msg-border);\n padding: 4px;\n}\n\n.liveChat-home-recent-avatar-logo img {\n object-fit: contain;\n}\n\n.liveChat-home-recent-card-content {\n flex: 1;\n min-width: 0;\n}\n\n.liveChat-home-recent-card-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--spacing-2);\n margin-bottom: 2px;\n}\n\n.liveChat-home-recent-card-name {\n font-size: var(--font-size-sm);\n font-weight: var(--font-weight-semibold);\n color: var(--msg-text);\n}\n\n.liveChat-home-recent-card-time {\n font-size: var(--font-size-xs);\n color: var(--msg-text-tertiary);\n flex-shrink: 0;\n}\n\n.liveChat-home-recent-card-preview {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--spacing-2);\n}\n\n.liveChat-home-recent-card-message {\n font-size: var(--font-size-sm);\n color: var(--msg-text-secondary);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.liveChat-home-recent-unread-dot {\n width: 8px;\n height: 8px;\n border-radius: var(--radius-full);\n background: var(--color-primary);\n flex-shrink: 0;\n}\n\n.liveChat-home-message-btn {\n width: 100%;\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: var(--spacing-3) var(--spacing-5);\n background: var(--msg-bg-surface);\n border: 1px solid var(--msg-border);\n border-radius: 8px;\n color: var(--msg-text);\n font-size: var(--font-size-base);\n font-weight: var(--font-weight-normal);\n cursor: pointer;\n transition: all var(--transition-base);\n margin-bottom: var(--spacing-2);\n font-family: inherit;\n box-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05);\n}\n\n.liveChat-home-message-btn:hover {\n background: var(--msg-bg-hover);\n}\n\n.liveChat-home-message-btn:active {\n transform: translateY(1px);\n transition-duration: 100ms;\n}\n\n.liveChat-home-continue-btn {\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n gap: var(--spacing-3);\n}\n\n.liveChat-home-continue-btn > svg {\n flex-shrink: 0;\n}\n\n.liveChat-home-continue-info {\n display: flex;\n flex-direction: column;\n gap: 2px;\n text-align: left;\n flex: 1;\n}\n\n.liveChat-home-continue-label {\n font-size: 0.875rem;\n font-weight: var(--font-weight-semibold);\n color: var(--msg-text);\n}\n\n.liveChat-home-message-subtext {\n font-size: var(--font-size-xs);\n font-weight: 400;\n color: var(--msg-text-secondary);\n}\n\n.liveChat-home-continue-preview {\n font-size: var(--font-size-sm);\n opacity: 0.6;\n font-weight: var(--font-weight-normal);\n}\n\n.liveChat-home-featured {\n background: var(--msg-bg);\n border-radius: var(--radius-xl);\n overflow: hidden;\n margin-bottom: var(--spacing-5);\n box-shadow: var(--msg-shadow-card);\n}\n\n.liveChat-home-featured-image {\n width: 100%;\n height: 160px;\n object-fit: cover;\n display: block;\n}\n\n.liveChat-home-featured-divider {\n height: 1px;\n background: var(--msg-border);\n}\n\n.liveChat-home-featured-content {\n padding: var(--spacing-4) var(--spacing-5);\n}\n\n.liveChat-home-featured-content h3 {\n margin: 0 0 var(--spacing-2);\n font-size: var(--font-size-xl);\n font-weight: var(--font-weight-semibold);\n color: var(--msg-text);\n line-height: var(--line-height-normal);\n}\n\n.liveChat-home-featured-content p {\n margin: 0;\n font-size: var(--font-size-base);\n color: var(--msg-text-tertiary);\n line-height: var(--line-height-relaxed);\n}\n\n.liveChat-home-featured-btn {\n margin-top: var(--spacing-3);\n}\n\n.liveChat-home-changelog-section {\n margin-top: var(--spacing-5);\n display: flex;\n flex-direction: column;\n gap: var(--spacing-4);\n}\n\n.liveChat-home-changelog-card {\n background: var(--msg-bg-surface);\n border-radius: 8px;\n overflow: hidden;\n cursor: pointer;\n border: 1px solid var(--msg-border);\n transition: all var(--transition-base);\n box-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05);\n}\n\n.liveChat-home-changelog-card:hover {\n background: var(--msg-bg-hover);\n}\n\n.liveChat-home-changelog-card:active {\n transform: translateY(1px);\n transition-duration: 100ms;\n}\n\n.liveChat-home-changelog-cover {\n width: 100%;\n height: 140px;\n overflow: hidden;\n position: relative;\n}\n\n.liveChat-home-changelog-cover img {\n width: 100%;\n height: 100%;\n object-fit: cover;\n}\n\n.liveChat-home-changelog-cover-text {\n position: absolute;\n bottom: var(--spacing-3);\n left: var(--spacing-3);\n right: var(--spacing-3);\n color: #ffffff;\n font-size: var(--font-size-md);\n font-weight: var(--font-weight-semibold);\n text-shadow: 0 1px 3px rgba(0, 0, 0, 0.4);\n line-height: var(--line-height-snug);\n}\n\n.liveChat-home-changelog-card-content {\n padding: var(--spacing-4);\n border-top: 1px solid var(--msg-border);\n}\n\n.liveChat-home-changelog-card-title {\n margin: 0 0 var(--spacing-2);\n font-size: var(--font-size-md);\n font-weight: var(--font-weight-semibold);\n color: var(--msg-text);\n line-height: var(--line-height-snug);\n}\n\n.liveChat-home-changelog-card-desc {\n margin: 0;\n font-size: var(--font-size-sm);\n font-weight: var(--font-weight-normal);\n color: var(--msg-text-secondary);\n line-height: var(--line-height-relaxed);\n display: -webkit-box;\n -webkit-line-clamp: 3;\n -webkit-box-orient: vertical;\n overflow: hidden;\n}\n\n.liveChat-home-availability,\n.liveChat-chat-availability {\n display: flex;\n align-items: center;\n gap: var(--spacing-2);\n margin-top: var(--spacing-2);\n font-size: var(--font-size-sm);\n color: var(--msg-text-secondary);\n}\n\n.liveChat-availability-dot {\n width: 8px;\n height: 8px;\n border-radius: var(--radius-full);\n flex-shrink: 0;\n align-self: center;\n display: block;\n}\n\n.liveChat-availability-online {\n background: var(--color-success);\n box-shadow: 0 0 0 2px var(--color-success-light);\n}\n\n.liveChat-availability-away {\n background: var(--color-neutral-400);\n}\n\n.liveChat-availability-text {\n opacity: 0.9;\n}\n\n/* ========================================\n CONVERSATIONS VIEW\n ======================================== */\n\n.liveChat-conversations-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: var(--spacing-3) var(--spacing-5);\n border-bottom: 1px solid var(--msg-border);\n background: var(--msg-bg-header-gradient);\n position: relative;\n overflow: hidden;\n}\n\n.liveChat-conversations-header h2 {\n margin: 0;\n font-size: var(--font-size-xl);\n font-weight: var(--font-weight-semibold);\n color: var(--msg-text);\n text-align: center;\n flex: 1;\n}\n\n.liveChat-conversations-body {\n flex: 1;\n overflow-y: auto;\n padding: 0;\n}\n\n.liveChat-conversations-list {\n display: flex;\n flex-direction: column;\n}\n\n.liveChat-conversation-item + .liveChat-conversation-item {\n border-top: 1px solid var(--msg-border);\n}\n\n.liveChat-conversation-item {\n display: flex;\n align-items: center;\n gap: var(--spacing-3);\n padding: 10px var(--spacing-4);\n cursor: pointer;\n transition: background var(--transition-base);\n}\n\n.liveChat-conversation-item:hover {\n background: var(--msg-bg-hover);\n}\n\n.liveChat-conversation-item:active {\n transform: translateY(1px);\n transition-duration: 100ms;\n}\n\n.liveChat-conversation-avatars {\n flex-shrink: 0;\n display: flex;\n align-items: center;\n align-self: stretch;\n}\n\n.liveChat-conversation-content {\n flex: 1;\n min-width: 0;\n display: flex;\n flex-direction: column;\n justify-content: center;\n}\n\n.liveChat-conversation-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: 2px;\n gap: var(--spacing-3);\n}\n\n.liveChat-conversation-title {\n font-size: var(--font-size-sm);\n font-weight: var(--font-weight-semibold);\n color: var(--msg-text);\n line-height: 1.4;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.liveChat-conversation-time {\n font-size: var(--font-size-sm);\n color: var(--msg-text-tertiary);\n flex-shrink: 0;\n}\n\n.liveChat-conversation-preview {\n display: flex;\n align-items: center;\n gap: var(--spacing-2);\n}\n\n.liveChat-conversation-message {\n font-size: var(--font-size-sm);\n font-weight: 400;\n color: var(--msg-text-secondary);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n line-height: 1.4;\n}\n\n.liveChat-conversation-item.unread .liveChat-conversation-message {\n color: var(--msg-text);\n font-weight: 500;\n}\n\n.liveChat-unread-dot {\n width: 8px;\n height: 8px;\n background: var(--color-primary);\n border-radius: var(--radius-full);\n flex-shrink: 0;\n}\n\n.liveChat-conversation-item.closed .liveChat-conversation-title,\n.liveChat-conversation-item.closed .liveChat-conversation-message {\n color: var(--msg-text-tertiary);\n}\n\n.liveChat-conversation-resolved-badge {\n font-size: 0.6875rem;\n font-weight: 500;\n color: var(--color-success-dark);\n background: var(--color-success-light);\n border-radius: var(--radius-full);\n padding: 1px 7px;\n flex-shrink: 0;\n}\n\n.liveChat-conversations-footer {\n border-top: 1px solid var(--msg-border);\n}\n\n.liveChat-new-message-btn {\n width: 100%;\n display: flex;\n align-items: center;\n gap: var(--spacing-3);\n padding: 12px var(--spacing-4);\n background: transparent;\n border: none;\n color: var(--msg-text);\n font-size: var(--font-size-sm);\n font-weight: var(--font-weight-medium);\n cursor: pointer;\n transition: background var(--transition-base);\n font-family: inherit;\n text-align: left;\n}\n\n.liveChat-new-message-btn:hover {\n background: var(--msg-bg-hover);\n}\n\n.liveChat-new-message-btn:active {\n transform: translateX(4px) translateY(1px);\n transition-duration: 100ms;\n}\n\n.liveChat-new-message-btn span {\n flex: 1;\n text-align: left;\n}\n\n/* ========================================\n HELP VIEW\n ======================================== */\n\n.liveChat-help-header {\n display: flex;\n flex-direction: column;\n gap: var(--spacing-2);\n padding: var(--spacing-2) var(--spacing-5) var(--spacing-3);\n border-bottom: 1px solid var(--msg-border);\n flex-shrink: 0;\n background: var(--msg-bg-header-gradient);\n position: relative;\n overflow: hidden;\n}\n\n.liveChat-help-header::before {\n content: '';\n position: absolute;\n top: -20px;\n left: -20px;\n width: 200px;\n height: 200px;\n background: var(--msg-bg-header-glow1);\n filter: blur(30px);\n pointer-events: none;\n}\n\n.liveChat-help-header::after {\n content: '';\n position: absolute;\n top: -10px;\n right: -20px;\n width: 150px;\n height: 150px;\n background: var(--msg-bg-header-glow2);\n filter: blur(25px);\n pointer-events: none;\n}\n\n.liveChat-help-header-top {\n display: flex;\n align-items: center;\n justify-content: center;\n position: relative;\n}\n\n.liveChat-help-header-top h2 {\n margin: 0;\n font-size: var(--font-size-xl);\n font-weight: var(--font-weight-semibold);\n color: var(--msg-text);\n}\n\n.liveChat-help-close-btn {\n position: absolute;\n right: 0;\n top: 50%;\n transform: translateY(-50%);\n}\n\n.liveChat-help-search-wrap {\n position: relative;\n width: 100%;\n}\n\n.liveChat-help-search-icon {\n position: absolute;\n left: var(--spacing-3);\n top: 50%;\n transform: translateY(-50%);\n color: var(--msg-text-tertiary);\n display: flex;\n align-items: center;\n pointer-events: none;\n}\n\n.liveChat-help-search-input {\n width: 100%;\n background: var(--msg-bg-input);\n border: 1px solid var(--msg-border);\n border-radius: var(--radius-md);\n padding: var(--spacing-2) var(--spacing-3) var(--spacing-2) calc(var(--spacing-3) + 16px + var(--spacing-2));\n font-size: var(--font-size-base);\n font-weight: var(--font-weight-normal);\n color: var(--msg-text);\n font-family: inherit;\n outline: none;\n transition: border-color var(--transition-base), background var(--transition-base);\n box-sizing: border-box;\n}\n\n.liveChat-help-search-input:focus {\n border-color: var(--color-primary);\n background: var(--msg-bg);\n}\n\n.liveChat-help-search-input::placeholder {\n color: var(--msg-text-tertiary);\n}\n\n.liveChat-help-body {\n flex: 1;\n overflow-y: auto;\n padding: 0;\n}\n\n.liveChat-help-collections-header {\n display: none;\n}\n\n.liveChat-help-collections {\n padding: 0;\n}\n\n.liveChat-help-collection {\n display: flex;\n align-items: center;\n gap: var(--spacing-3);\n padding: var(--spacing-3) var(--spacing-5);\n cursor: pointer;\n transition: background var(--transition-base);\n border-bottom: 1px solid var(--msg-border);\n}\n\n.liveChat-help-collection:hover {\n background: var(--msg-bg-hover);\n}\n\n.liveChat-help-collection:active {\n transform: translateY(1px);\n transition-duration: 100ms;\n}\n\n.liveChat-help-collection-icon {\n flex-shrink: 0;\n width: 2.25rem;\n height: 2.25rem;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--msg-text-secondary);\n}\n\n.liveChat-help-collection-icon svg {\n width: 1.5rem;\n height: 1.5rem;\n display: block;\n flex-shrink: 0;\n}\n\n.liveChat-help-collection-icon iconify-icon {\n font-size: 1.5rem;\n width: 1em;\n height: 1em;\n display: block;\n flex-shrink: 0;\n}\n\n.liveChat-help-collection-content {\n flex: 1;\n min-width: 0;\n}\n\n.liveChat-help-collection-title {\n font-size: var(--font-size-base);\n font-weight: var(--font-weight-semibold);\n color: var(--msg-text);\n line-height: var(--line-height-snug);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.liveChat-help-collection-desc {\n margin: 2px 0 var(--spacing-1);\n font-size: var(--font-size-sm);\n color: var(--msg-text-secondary);\n line-height: var(--line-height-normal);\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.liveChat-help-collection-meta {\n display: flex;\n align-items: center;\n gap: var(--spacing-2);\n margin-top: 2px;\n}\n\n.liveChat-help-collection-avatar {\n display: none;\n}\n\n.liveChat-help-collection-avatar--initials {\n display: none;\n line-height: 1;\n}\n\n.liveChat-help-collection-count {\n font-size: var(--font-size-xs);\n font-weight: var(--font-weight-medium);\n color: var(--msg-text-tertiary);\n}\n\n.liveChat-help-footer {\n padding: var(--spacing-4) var(--spacing-5);\n border-top: 1px solid var(--msg-border);\n text-align: center;\n}\n\n.liveChat-help-footer-link {\n display: inline-flex;\n align-items: center;\n gap: var(--spacing-2);\n font-size: var(--font-size-base);\n font-weight: var(--font-weight-semibold);\n color: var(--msg-text);\n text-decoration: none;\n cursor: pointer;\n transition: color var(--transition-base);\n}\n\n.liveChat-help-footer-link:hover {\n color: var(--color-primary);\n}\n\n/* ========================================\n CHANGELOG VIEW\n ======================================== */\n\n.liveChat-changelog-header {\n padding: var(--spacing-2) var(--spacing-5);\n border-bottom: 1px solid var(--msg-border);\n flex-shrink: 0;\n background: var(--msg-bg-header-gradient);\n position: relative;\n overflow: hidden;\n}\n\n.liveChat-changelog-header::before {\n content: '';\n position: absolute;\n top: -20px;\n left: -20px;\n width: 200px;\n height: 200px;\n background: var(--msg-bg-header-glow1);\n filter: blur(30px);\n pointer-events: none;\n}\n\n.liveChat-changelog-header::after {\n content: '';\n position: absolute;\n top: -10px;\n right: -20px;\n width: 150px;\n height: 150px;\n background: var(--msg-bg-header-glow2);\n filter: blur(25px);\n pointer-events: none;\n}\n\n.liveChat-changelog-header-top {\n display: flex;\n align-items: center;\n justify-content: center;\n position: relative;\n}\n\n.liveChat-changelog-header-top h2 {\n margin: 0;\n font-size: var(--font-size-xl);\n font-weight: var(--font-weight-semibold);\n color: var(--msg-text);\n}\n\n.liveChat-changelog-close-btn {\n position: absolute;\n right: 0;\n top: 50%;\n transform: translateY(-50%);\n}\n\n.liveChat-changelog-body {\n flex: 1;\n overflow-y: auto;\n}\n\n.liveChat-changelog-list {\n display: flex;\n flex-direction: column;\n gap: var(--spacing-3);\n padding: var(--spacing-4) var(--spacing-5);\n}\n\n.liveChat-changelog-card {\n display: flex;\n flex-direction: column;\n border: 1px solid var(--msg-border);\n border-radius: 10px;\n overflow: hidden;\n cursor: pointer;\n transition: box-shadow var(--transition-base), transform var(--transition-base);\n}\n\n.liveChat-changelog-card:hover {\n box-shadow: var(--shadow-md);\n transform: translateY(-1px);\n}\n\n.liveChat-changelog-card:active {\n transform: translateY(0);\n transition-duration: 100ms;\n}\n\n.liveChat-changelog-content {\n display: flex;\n flex-direction: column;\n gap: var(--spacing-1);\n padding: var(--spacing-3) var(--spacing-4);\n}\n\n.liveChat-changelog-meta {\n display: flex;\n align-items: center;\n gap: var(--spacing-2);\n flex-wrap: wrap;\n}\n\n.liveChat-changelog-date {\n font-size: var(--font-size-xs);\n font-weight: var(--font-weight-medium);\n color: var(--msg-text-tertiary);\n}\n\n.liveChat-changelog-tags {\n display: flex;\n flex-wrap: wrap;\n gap: var(--spacing-1);\n}\n\n.liveChat-changelog-tag {\n display: inline-flex;\n align-items: center;\n padding: 1px 8px;\n border-radius: var(--radius-full);\n font-size: 11px;\n font-weight: var(--font-weight-medium);\n line-height: 1.5;\n}\n\n.liveChat-changelog-title {\n margin: 0;\n font-size: var(--font-size-base);\n font-weight: var(--font-weight-semibold);\n color: var(--msg-text);\n line-height: var(--line-height-snug);\n}\n\n.liveChat-changelog-description {\n margin: 0;\n font-size: var(--font-size-sm);\n color: var(--msg-text-secondary);\n line-height: var(--line-height-normal);\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n}\n\n.liveChat-changelog-thumb {\n width: 100%;\n overflow: hidden;\n border-bottom: 1px solid var(--msg-border);\n}\n\n.liveChat-changelog-thumb img {\n width: 100%;\n height: 180px;\n display: block;\n object-fit: cover;\n}\n`;\n","import { liveChatComponentsStyles } from './liveChat-components.js';\nimport { liveChatCoreStyles } from './liveChat-core.js';\nimport { liveChatFeaturesStyles } from './liveChat-features.js';\nimport { liveChatViewsStyles } from './liveChat-views.js';\n\nexport const liveChatStyles =\n\tliveChatCoreStyles +\n\tliveChatViewsStyles +\n\tliveChatComponentsStyles +\n\tliveChatFeaturesStyles;\n\nexport {\n\tliveChatComponentsStyles,\n\tliveChatCoreStyles,\n\tliveChatFeaturesStyles,\n\tliveChatViewsStyles,\n};\n","export const surveyStyles = `\n.feedback-survey-container {\n display: none;\n}\n\n.feedback-survey-backdrop {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(0, 0, 0, 0.4);\n z-index: var(--z-modal-backdrop);\n animation: fadeIn var(--transition-slow);\n}\n\n.feedback-survey-backdrop-dark {\n background: rgba(2, 6, 23, 0.65);\n}\n\n/* ========================================\n SURVEY CARD\n ======================================== */\n\n.feedback-survey {\n position: fixed;\n z-index: var(--z-modal);\n background: var(--color-white);\n border: 1px solid var(--color-neutral-200);\n border-radius: var(--radius-xl);\n box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05);\n padding: var(--spacing-6);\n min-width: 320px;\n max-width: 400px;\n font-family: inherit;\n overflow: hidden;\n opacity: 0;\n transition: opacity 200ms ease, transform 240ms cubic-bezier(0.16, 1, 0.3, 1);\n}\n\n/* ========================================\n DARK THEME\n ======================================== */\n\n.feedback-survey-theme-dark {\n --color-white: #0f1317;\n --color-background: #0f1317;\n --color-surface: #1a1e24;\n --color-border: #232930;\n --color-neutral-50: #1a1e24;\n --color-neutral-100: #1a1e24;\n --color-neutral-200: #232930;\n --color-neutral-300: #2d343c;\n --color-neutral-400: #555555;\n --color-neutral-500: #777777;\n --color-neutral-900: #e8e8e8;\n --color-text-primary: #e8e8e8;\n --color-text-secondary: #999999;\n --color-text-tertiary: #666666;\n --color-primary-light: rgba(21, 94, 239, 0.18);\n --color-primary-border: rgba(21, 94, 239, 0.4);\n --color-error-light: rgba(239, 68, 68, 0.15);\n --color-error-border: rgba(239, 68, 68, 0.25);\n --color-error-dark: #fca5a5;\n}\n\n/* ========================================\n POSITION VARIANTS + ENTRANCE STATES\n ======================================== */\n\n.feedback-survey-right {\n bottom: var(--spacing-6);\n right: var(--spacing-6);\n transform: translateY(10px);\n}\n\n.feedback-survey-left {\n bottom: var(--spacing-6);\n left: var(--spacing-6);\n transform: translateY(10px);\n}\n\n.feedback-survey-center {\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%) scale(0.97);\n}\n\n/* ========================================\n CLOSE BUTTON\n ======================================== */\n\n.feedback-survey-close {\n position: absolute;\n top: var(--spacing-4);\n right: var(--spacing-4);\n background: none;\n border: none;\n cursor: pointer;\n color: var(--color-neutral-500);\n padding: 4px;\n width: 28px;\n height: 28px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: var(--radius-md);\n transition: all var(--transition-base);\n}\n\n.feedback-survey-close iconify-icon {\n display: block;\n}\n\n.feedback-survey-close:hover {\n background: var(--color-neutral-100);\n color: var(--color-neutral-900);\n}\n\n.feedback-survey-close:focus-visible {\n outline: none;\n box-shadow: 0 0 0 3px var(--color-primary-light);\n}\n\n/* ========================================\n TYPOGRAPHY\n ======================================== */\n\n.feedback-survey-title {\n margin: 0 0 var(--spacing-3) 0;\n font-size: var(--font-size-xl);\n font-weight: var(--font-weight-semibold);\n line-height: var(--line-height-snug);\n padding-right: 36px;\n color: var(--color-text-primary);\n}\n\n.feedback-survey-description {\n color: var(--color-text-secondary);\n margin: 0 0 var(--spacing-4) 0;\n font-size: var(--font-size-base);\n line-height: var(--line-height-relaxed);\n}\n\n.feedback-survey-description-primary .feedback-survey-description {\n color: var(--color-text-primary);\n font-size: var(--font-size-lg);\n font-weight: var(--font-weight-semibold);\n line-height: var(--line-height-snug);\n padding-right: 36px;\n}\n\n.feedback-survey-content {\n margin-bottom: var(--spacing-3);\n}\n\n/* ========================================\n PROGRESS BAR\n ======================================== */\n\n.feedback-survey-progress {\n margin-bottom: var(--spacing-4);\n}\n\n.feedback-survey-progress-track {\n height: 3px;\n background: var(--color-neutral-200);\n border-radius: var(--radius-full);\n overflow: hidden;\n}\n\n.feedback-survey-progress-fill {\n height: 100%;\n background: var(--color-primary);\n border-radius: var(--radius-full);\n transition: width 320ms cubic-bezier(0.16, 1, 0.3, 1);\n}\n\n/* ========================================\n NPS — individual colored buttons\n ======================================== */\n\n.feedback-survey-nps {\n display: flex;\n justify-content: space-between;\n gap: var(--spacing-1);\n}\n\n.feedback-survey-nps-btn {\n flex: 1;\n height: 40px;\n min-height: unset;\n border-radius: 6px;\n cursor: pointer;\n font-size: var(--font-size-sm);\n font-weight: var(--font-weight-medium);\n color: #ffffff;\n border: 1px solid transparent;\n transition: filter var(--transition-fast), transform var(--transition-fast);\n font-family: inherit;\n}\n\n.feedback-survey-nps-btn:hover {\n filter: brightness(1.12);\n}\n\n.feedback-survey-nps-btn.selected {\n filter: brightness(0.82);\n box-shadow: inset 0 0 0 2px rgba(0, 0, 0, 0.25);\n}\n\n.feedback-survey-nps-btn:active {\n transform: translateY(1px);\n transition-duration: 100ms;\n}\n\n/* NPS score colors */\n.feedback-survey-nps-score-0 { background: #dc2626; border-color: #dc2626; }\n.feedback-survey-nps-score-1 { background: #ef4444; border-color: #ef4444; }\n.feedback-survey-nps-score-2 { background: #f97316; border-color: #f97316; }\n.feedback-survey-nps-score-3 { background: #fb923c; border-color: #fb923c; }\n.feedback-survey-nps-score-4 { background: #fdba74; border-color: #fdba74; }\n.feedback-survey-nps-score-5 { background: #fbbf24; border-color: #fbbf24; }\n.feedback-survey-nps-score-6 { background: #fde047; border-color: #fde047; color: #171717; }\n.feedback-survey-nps-score-7 { background: #e5e7eb; border-color: #e5e7eb; color: #374151; }\n.feedback-survey-nps-score-8 { background: #e5e7eb; border-color: #e5e7eb; color: #374151; }\n.feedback-survey-nps-score-9 { background: #4ade80; border-color: #4ade80; }\n.feedback-survey-nps-score-10 { background: #16a34a; border-color: #16a34a; }\n\n/* ========================================\n CSAT — emoji row\n ======================================== */\n\n.feedback-survey-csat {\n display: flex;\n justify-content: space-between;\n gap: var(--spacing-3);\n padding: var(--spacing-2) 0;\n}\n\n.feedback-survey-csat-btn {\n background: none;\n border: none;\n cursor: pointer;\n font-size: 32px;\n transition: transform var(--transition-fast), opacity var(--transition-fast);\n padding: var(--spacing-2) var(--spacing-1);\n min-width: 44px;\n min-height: 44px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: var(--radius-lg);\n line-height: 1;\n}\n\n.feedback-survey-csat-btn:hover {\n transform: scale(1.15);\n}\n\n.feedback-survey-csat-btn.selected {\n transform: scale(1.2);\n}\n\n.feedback-survey-csat:has(.selected) .feedback-survey-csat-btn:not(.selected) {\n transform: scale(0.85);\n opacity: 0.3;\n}\n\n.feedback-survey-csat-btn:active {\n transform: scale(1.05) translateY(1px);\n transition-duration: 100ms;\n}\n\n.feedback-survey-csat-btn.selected:active {\n transform: scale(1.2) translateY(1px);\n}\n\n/* ========================================\n NUMBER RATING (segmented scale)\n ======================================== */\n\n.feedback-survey-rating-scale {\n display: flex;\n overflow: hidden;\n border: 1px solid var(--color-neutral-200);\n border-radius: 6px;\n background: var(--color-white);\n}\n\n.feedback-survey-rating-scale-btn {\n flex: 1;\n height: 40px;\n padding: 0;\n border: 0;\n border-right: 1px solid var(--color-neutral-200);\n border-radius: 0;\n background: var(--color-white);\n cursor: pointer;\n font-size: clamp(14px, 3vw, 18px);\n font-weight: var(--font-weight-medium);\n color: #374151;\n transition: background var(--transition-fast), color var(--transition-fast);\n font-family: inherit;\n}\n\n.feedback-survey-rating-scale-btn:last-child {\n border-right: none;\n}\n\n.feedback-survey-rating-scale-btn:hover {\n background: var(--color-primary-light);\n color: var(--color-primary);\n}\n\n.feedback-survey-rating-scale-btn:focus-visible {\n outline: none;\n z-index: 1;\n box-shadow: inset 0 0 0 2px var(--color-primary);\n}\n\n.feedback-survey-rating-scale-btn.selected {\n background: var(--color-primary-light);\n color: var(--color-primary-active);\n box-shadow: inset 0 0 0 2px var(--color-primary);\n}\n\n.feedback-survey-rating-scale-btn:active {\n transform: translateY(1px);\n transition-duration: 100ms;\n}\n\n/* ========================================\n STARS\n ======================================== */\n\n.feedback-survey-stars {\n display: flex;\n gap: var(--spacing-2);\n justify-content: center;\n}\n\n.feedback-survey-star-btn {\n background: none;\n border: none;\n cursor: pointer;\n padding: 4px;\n width: 40px;\n height: 40px;\n flex-shrink: 0;\n line-height: 1;\n color: var(--color-neutral-300);\n transition: color var(--transition-fast), transform var(--transition-fast);\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.feedback-survey-star-btn iconify-icon {\n display: block;\n pointer-events: none;\n flex-shrink: 0;\n}\n\n.feedback-survey-star-btn.filled,\n.feedback-survey-star-btn.hovered {\n color: #f59e0b;\n}\n\n.feedback-survey-star-btn:hover {\n color: #f59e0b;\n}\n\n.feedback-survey-star-btn:active {\n transform: scale(0.9);\n transition-duration: 100ms;\n}\n\n/* ========================================\n SCALE LABELS\n ======================================== */\n\n.feedback-survey-labels {\n display: flex;\n justify-content: space-between;\n margin-top: var(--spacing-2);\n padding: 0 var(--spacing-1);\n font-size: var(--font-size-xs);\n color: var(--color-text-tertiary);\n}\n\n/* ========================================\n FORM INPUTS\n ======================================== */\n\n.feedback-survey-feedback {\n margin-top: var(--spacing-4);\n}\n\n.feedback-survey-textarea {\n width: 100%;\n padding: var(--spacing-3);\n border: 1px solid var(--color-border);\n border-radius: var(--radius-md);\n font-size: var(--font-size-base);\n resize: vertical;\n height: 80px;\n background: var(--color-white);\n color: var(--color-text-primary);\n font-family: inherit;\n box-sizing: border-box;\n transition: border-color var(--transition-base);\n outline: none;\n}\n\n.feedback-survey-textarea::placeholder {\n color: var(--color-text-tertiary);\n}\n\n.feedback-survey-textarea:focus {\n border-color: var(--color-primary);\n box-shadow: 0 0 0 3px var(--color-primary-light);\n}\n\n/* ========================================\n MULTI-PAGE TEXT INPUT\n ======================================== */\n\n.feedback-survey-page-textarea {\n width: 100%;\n min-height: 120px;\n padding: var(--spacing-3);\n border: 1px solid var(--color-border);\n border-radius: var(--radius-md);\n font-size: var(--font-size-sm);\n font-family: inherit;\n background: var(--color-white);\n color: var(--color-text-primary);\n box-sizing: border-box;\n resize: vertical;\n outline: none;\n transition: border-color var(--transition-base);\n}\n\n.feedback-survey-page-textarea::placeholder {\n color: var(--color-text-tertiary);\n}\n\n.feedback-survey-page-textarea:focus {\n border-color: var(--color-primary);\n box-shadow: 0 0 0 3px var(--color-primary-light);\n}\n\n/* ========================================\n MULTIPLE CHOICE\n ======================================== */\n\n.feedback-survey-multiple-choice {\n display: flex;\n flex-direction: column;\n gap: var(--spacing-2);\n}\n\n.feedback-survey-page-choice-btn {\n width: 100%;\n height: 40px;\n padding: 0 var(--spacing-4);\n border: 1px solid var(--color-neutral-200);\n border-radius: var(--radius-md);\n background: var(--color-white);\n color: #374151;\n text-align: left;\n font-size: var(--font-size-sm);\n font-weight: var(--font-weight-medium);\n cursor: pointer;\n font-family: inherit;\n display: flex;\n align-items: center;\n justify-content: space-between;\n transition: all var(--transition-fast);\n}\n\n.feedback-survey-page-choice-btn::after {\n content: '';\n width: 18px;\n height: 18px;\n border-radius: 50%;\n border: 1.5px solid #D1D5DB;\n flex-shrink: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n background: transparent;\n transition: all var(--transition-fast);\n}\n\n.feedback-survey-page-choice-btn:hover {\n border-color: var(--color-primary);\n background: var(--color-primary-light);\n color: var(--color-primary);\n}\n\n.feedback-survey-page-choice-btn:hover::after {\n border-color: var(--color-primary);\n}\n\n.feedback-survey-page-choice-btn.selected {\n border-color: var(--color-primary);\n background: var(--color-primary-light);\n color: var(--color-primary-active);\n}\n\n.feedback-survey-page-choice-btn.selected::after {\n content: '✓';\n color: #ffffff;\n font-size: 11px;\n font-weight: 700;\n border-color: var(--color-primary);\n background-color: var(--color-primary);\n}\n\n.feedback-survey-page-choice-btn:active {\n transform: translateY(1px);\n transition-duration: 100ms;\n}\n\n/* ========================================\n ACTIONS\n ======================================== */\n\n.feedback-survey-actions {\n display: flex;\n align-items: center;\n gap: var(--spacing-3);\n margin-top: var(--spacing-4);\n}\n\n.feedback-survey-back {\n padding: 0 var(--spacing-4);\n min-height: 40px;\n border: 1px solid var(--color-border);\n border-radius: var(--radius-md);\n background: var(--color-white);\n color: var(--color-text-secondary);\n font-size: var(--font-size-sm);\n font-weight: var(--font-weight-medium);\n cursor: pointer;\n font-family: inherit;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: var(--spacing-2);\n transition: all var(--transition-fast);\n flex: 1;\n white-space: nowrap;\n}\n\n.feedback-survey-back:hover {\n background: var(--color-neutral-100);\n border-color: var(--color-neutral-300);\n color: var(--color-text-primary);\n}\n\n.feedback-survey-back:active {\n transform: translateY(1px);\n transition-duration: 100ms;\n}\n\n/* ========================================\n SUBMIT BUTTON\n ======================================== */\n\n.feedback-survey-submit {\n flex: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: var(--spacing-2);\n min-height: 40px;\n padding: 0 var(--spacing-4);\n background: var(--color-primary);\n color: #ffffff;\n border: 1px solid var(--color-primary);\n border-radius: var(--radius-md);\n font-size: var(--font-size-sm);\n font-weight: var(--font-weight-medium);\n cursor: pointer;\n font-family: inherit;\n text-align: center;\n transition: all var(--transition-base);\n}\n\n.feedback-survey-submit:hover:not(:disabled) {\n background: var(--color-primary-hover);\n border-color: var(--color-primary-hover);\n}\n\n.feedback-survey-submit:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n}\n\n.feedback-survey-submit:active:not(:disabled) {\n transform: translateY(1px);\n transition-duration: 100ms;\n}\n\n.feedback-survey-submit iconify-icon,\n.feedback-survey-back iconify-icon {\n flex-shrink: 0;\n}\n\n/* ========================================\n ERROR\n ======================================== */\n\n.feedback-survey-error {\n margin-bottom: var(--spacing-3);\n background: #D13212;\n border-radius: var(--radius-md);\n color: #ffffff;\n font-size: var(--font-size-sm);\n font-weight: var(--font-weight-medium);\n padding: var(--spacing-3) var(--spacing-4);\n display: flex;\n align-items: center;\n gap: var(--spacing-2);\n}\n\n.feedback-survey-error iconify-icon {\n flex-shrink: 0;\n}\n\n/* ========================================\n THANK YOU SCREEN\n ======================================== */\n\n.feedback-survey-thankyou {\n display: flex;\n flex-direction: column;\n align-items: center;\n text-align: center;\n padding: var(--spacing-6) 0;\n}\n\n.feedback-survey-thankyou-icon {\n color: #10b981;\n margin-bottom: var(--spacing-4);\n display: block;\n}\n\n.feedback-survey-thankyou-title {\n margin: 0;\n font-size: var(--font-size-xl);\n font-weight: var(--font-weight-semibold);\n line-height: var(--line-height-snug);\n color: var(--color-text-primary);\n}\n\n.feedback-survey-thankyou-btn {\n margin-top: var(--spacing-5);\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: var(--spacing-2);\n height: 40px;\n padding: 0 var(--spacing-6);\n background: var(--color-primary);\n color: #ffffff;\n border: 1px solid var(--color-primary);\n border-radius: var(--radius-md);\n font-size: var(--font-size-sm);\n font-weight: var(--font-weight-medium);\n text-decoration: none;\n transition: all var(--transition-base);\n}\n\n.feedback-survey-thankyou-btn:hover {\n background: var(--color-primary-hover);\n border-color: var(--color-primary-hover);\n color: #ffffff;\n text-decoration: none;\n}\n\n/* ========================================\n DARK MODE — SELECTED STATE OVERRIDES\n ======================================== */\n\n.feedback-survey-theme-dark .feedback-survey-page-choice-btn.selected,\n.feedback-survey-theme-dark .feedback-survey-rating-scale-btn.selected,\n.feedback-survey-theme-dark .feedback-survey-nps-btn.selected {\n color: var(--color-text-primary);\n}\n\n/* ========================================\n NOTIFICATION TOASTS\n ======================================== */\n\n.product7-notification {\n position: fixed;\n top: var(--spacing-6);\n right: var(--spacing-6);\n padding: var(--spacing-3) var(--spacing-5);\n border-radius: var(--radius-xl);\n font-size: var(--font-size-sm);\n font-weight: var(--font-weight-medium);\n z-index: var(--z-notification);\n box-shadow: var(--shadow-lg);\n font-family: inherit;\n color: #fff;\n}\n\n.product7-notification > div {\n display: flex;\n align-items: center;\n gap: var(--spacing-2);\n}\n\n.product7-notification svg {\n width: 18px;\n height: 18px;\n flex-shrink: 0;\n}\n\n.product7-notification-success { background: #037F0C; }\n.product7-notification-error { background: #D13212; }\n.product7-notification-warning { background: #FF9900; color: #000; }\n.product7-notification-info { background: #0972D3; }\n\n/* ========================================\n RESPONSIVE\n ======================================== */\n\n@media (max-width: 768px) {\n .feedback-survey {\n min-width: 288px;\n padding: var(--spacing-5);\n }\n\n .feedback-survey-nps-btn {\n font-size: var(--font-size-xs);\n }\n\n .feedback-survey-csat-btn {\n font-size: 28px;\n min-width: 40px;\n min-height: 40px;\n }\n\n .feedback-survey-title {\n font-size: var(--font-size-lg);\n }\n\n .feedback-survey-description-primary .feedback-survey-description {\n font-size: var(--font-size-md);\n }\n\n .feedback-survey-rating-scale-btn {\n font-size: clamp(13px, 5vw, 16px);\n }\n}\n`;\n","import { baseStyles } from './base.js';\nimport { changelogStyles } from './changelog.js';\nimport { componentsStyles } from './components.js';\nimport { designTokens } from './design-tokens.js';\nimport { feedbackStyles } from './feedback.js';\nimport { liveChatStyles } from './liveChat.js';\nimport { surveyStyles } from './survey.js';\n\nexport const CSS_STYLES =\n\tdesignTokens +\n\tbaseStyles +\n\tcomponentsStyles +\n\tfeedbackStyles +\n\tchangelogStyles +\n\tsurveyStyles +\n\tliveChatStyles;\n\nexport {\n\tbaseStyles,\n\tchangelogStyles,\n\tcomponentsStyles,\n\tdesignTokens,\n\tfeedbackStyles,\n\tliveChatStyles,\n\tsurveyStyles,\n};\n","export function generateId(prefix = 'feedback') {\n\tconst timestamp = Date.now();\n\tconst random = Math.random().toString(36).substring(2, 9);\n\treturn `${prefix}_${timestamp}_${random}`;\n}\n\nexport function deepMerge(target, source) {\n\tconst result = { ...target };\n\n\tfor (const key in source) {\n\t\tif (source.hasOwnProperty(key)) {\n\t\t\tif (\n\t\t\t\tsource[key] &&\n\t\t\t\ttypeof source[key] === 'object' &&\n\t\t\t\t!Array.isArray(source[key])\n\t\t\t) {\n\t\t\t\tresult[key] = deepMerge(target[key] || {}, source[key]);\n\t\t\t} else {\n\t\t\t\tresult[key] = source[key];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn result;\n}\n\nexport function debounce(func, wait) {\n\tlet timeout;\n\treturn function executedFunction(...args) {\n\t\tconst later = () => {\n\t\t\tclearTimeout(timeout);\n\t\t\tfunc(...args);\n\t\t};\n\t\tclearTimeout(timeout);\n\t\ttimeout = setTimeout(later, wait);\n\t};\n}\n\nexport function throttle(func, limit) {\n\tlet lastFunc;\n\tlet lastRan;\n\treturn function (...args) {\n\t\tif (!lastRan) {\n\t\t\tfunc(...args);\n\t\t\tlastRan = Date.now();\n\t\t} else {\n\t\t\tclearTimeout(lastFunc);\n\t\t\tlastFunc = setTimeout(\n\t\t\t\t() => {\n\t\t\t\t\tif (Date.now() - lastRan >= limit) {\n\t\t\t\t\t\tfunc(...args);\n\t\t\t\t\t\tlastRan = Date.now();\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tlimit - (Date.now() - lastRan)\n\t\t\t);\n\t\t}\n\t};\n}\n\nexport function isValidEmail(email) {\n\tif (!email || typeof email !== 'string') return false;\n\n\tconst emailRegex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\n\treturn emailRegex.test(email.trim());\n}\n\nexport function sanitizeHTML(str) {\n\tif (!str || typeof str !== 'string') return '';\n\n\tconst div = document.createElement('div');\n\tdiv.textContent = str;\n\treturn div.innerHTML;\n}\n\nexport function getCSSProperty(element, property, fallback = '') {\n\tif (!element || !property) return fallback;\n\n\ttry {\n\t\tconst style = window.getComputedStyle(element);\n\t\treturn style.getPropertyValue(property) || fallback;\n\t} catch (error) {\n\t\treturn fallback;\n\t}\n}\n\nexport function isInViewport(element) {\n\tif (!element) return false;\n\n\tconst rect = element.getBoundingClientRect();\n\treturn (\n\t\trect.top >= 0 &&\n\t\trect.left >= 0 &&\n\t\trect.bottom <=\n\t\t\t(window.innerHeight || document.documentElement.clientHeight) &&\n\t\trect.right <= (window.innerWidth || document.documentElement.clientWidth)\n\t);\n}\n\nexport function scrollToElement(element, options = {}) {\n\tif (!element) return;\n\n\tconst defaultOptions = {\n\t\tbehavior: 'smooth',\n\t\tblock: 'center',\n\t\tinline: 'nearest',\n\t};\n\n\telement.scrollIntoView({ ...defaultOptions, ...options });\n}\n\nexport function getBrowserInfo() {\n\tconst userAgent = navigator.userAgent;\n\tconst platform = navigator.platform;\n\n\treturn {\n\t\tuserAgent,\n\t\tplatform,\n\t\tlanguage: navigator.language || navigator.userLanguage,\n\t\tcookieEnabled: navigator.cookieEnabled,\n\t\tscreenResolution: `${screen.width}x${screen.height}`,\n\t\twindowSize: `${window.innerWidth}x${window.innerHeight}`,\n\t\ttimezone: Intl.DateTimeFormat().resolvedOptions().timeZone,\n\t};\n}\n\nexport function formatFileSize(bytes) {\n\tif (bytes === 0) return '0 Bytes';\n\n\tconst k = 1024;\n\tconst sizes = ['Bytes', 'KB', 'MB', 'GB'];\n\tconst i = Math.floor(Math.log(bytes) / Math.log(k));\n\n\treturn parseFloat((bytes / Math.pow(k, i)).toFixed(2)) + ' ' + sizes[i];\n}\n\nexport function delay(ms) {\n\treturn new Promise((resolve) => setTimeout(resolve, ms));\n}\n\nexport function safeJsonParse(str, fallback = null) {\n\ttry {\n\t\treturn JSON.parse(str);\n\t} catch (error) {\n\t\treturn fallback;\n\t}\n}\n\nexport function escapeRegex(string) {\n\treturn string.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n}\n\nexport function getNestedProperty(obj, path, defaultValue = undefined) {\n\tif (!obj || !path) return defaultValue;\n\n\tconst keys = path.split('.');\n\tlet current = obj;\n\n\tfor (const key of keys) {\n\t\tif (current === null || current === undefined || !(key in current)) {\n\t\t\treturn defaultValue;\n\t\t}\n\t\tcurrent = current[key];\n\t}\n\n\treturn current;\n}\n\nexport function setNestedProperty(obj, path, value) {\n\tif (!obj || !path) return obj;\n\n\tconst keys = path.split('.');\n\tconst lastKey = keys.pop();\n\tlet current = obj;\n\n\tfor (const key of keys) {\n\t\tif (!(key in current) || typeof current[key] !== 'object') {\n\t\t\tcurrent[key] = {};\n\t\t}\n\t\tcurrent = current[key];\n\t}\n\n\tcurrent[lastKey] = value;\n\treturn obj;\n}\n\nexport function isBrowser() {\n\treturn typeof window !== 'undefined' && typeof document !== 'undefined';\n}\n\nexport function isMobile() {\n\tif (!isBrowser()) return false;\n\n\treturn (\n\t\t/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(\n\t\t\tnavigator.userAgent\n\t\t) || window.innerWidth <= 768\n\t);\n}\n\nexport function getCurrentTimestamp() {\n\treturn new Date().toISOString();\n}\n\nexport function validateConfig(config, required = []) {\n\tconst missing = [];\n\n\tfor (const key of required) {\n\t\tif (!config[key]) {\n\t\t\tmissing.push(key);\n\t\t}\n\t}\n\n\tif (missing.length > 0) {\n\t\tthrow new Error(`Missing required configuration: ${missing.join(', ')}`);\n\t}\n\n\treturn true;\n}\n","export class BaseWidget {\n\tstatic STORAGE_KEY = 'feedback_submitted';\n\tstatic DEFAULT_COOLDOWN_DAYS = 30;\n\n\tconstructor(options = {}) {\n\t\tthis.id = options.id;\n\t\tthis.sdk = options.sdk;\n\t\tthis.apiService = options.apiService;\n\t\tthis.type = options.type || 'base';\n\n\t\tthis.options = {\n\t\t\tcontainer: null,\n\t\t\tposition: this.sdk.config.position,\n\t\t\tboardName: this.sdk.config.boardName,\n\t\t\tdisplayMode: options.displayMode || 'panel',\n\t\t\tsize: options.size || 'medium',\n\t\t\tprimaryColor: options.primaryColor || '#155EEF',\n\t\t\tbackgroundColor: options.backgroundColor || '#ffffff',\n\t\t\ttextColor: options.textColor || '#1F2937',\n\t\t\tautoShow: false,\n\t\t\tshowBackdrop: true,\n\t\t\tcustomStyles: {},\n\t\t\tsuppressAfterSubmission: true,\n\t\t\tsuppressionDays: BaseWidget.DEFAULT_COOLDOWN_DAYS,\n\t\t\ttrigger: true,\n\t\t\t...options,\n\t\t};\n\n\t\tthis.element = null;\n\t\tthis.panelElement = null;\n\t\tthis.backdropElement = null;\n\t\tthis.mounted = false;\n\t\tthis.destroyed = false;\n\n\t\tthis.state = {\n\t\t\tisOpen: false,\n\t\t\tisLoading: false,\n\t\t\tisSubmitting: false,\n\t\t\ttitle: '',\n\t\t\tcontent: '',\n\t\t\temail: '',\n\t\t\tattachments: [],\n\t\t\terrors: {},\n\t\t};\n\n\t\tthis._bindMethods();\n\t}\n\n\tmount(container) {\n\t\tif (this.mounted || this.destroyed) return this;\n\n\t\tif (this.options.enabled === false) {\n\t\t\tthis.sdk.eventBus.emit('widget:suppressed', {\n\t\t\t\twidget: this,\n\t\t\t\ttype: this.type,\n\t\t\t\treason: 'disabled',\n\t\t\t});\n\t\t\treturn this;\n\t\t}\n\n\t\tif (this.options.suppressAfterSubmission && this._hasRecentlySubmitted()) {\n\t\t\tthis.sdk.eventBus.emit('widget:suppressed', {\n\t\t\t\twidget: this,\n\t\t\t\treason: 'recently_submitted',\n\t\t\t});\n\t\t\treturn this;\n\t\t}\n\n\t\tif (typeof container === 'string') {\n\t\t\tcontainer = document.querySelector(container);\n\t\t}\n\n\t\tif (!container) {\n\t\t\tcontainer = document.body;\n\t\t}\n\n\t\tthis.container = container;\n\t\tthis.element = this._render();\n\t\tthis.container.appendChild(this.element);\n\n\t\tthis.mounted = true;\n\t\tthis._attachEvents();\n\n\t\t// Bind to a custom trigger element if a selector or element was provided\n\t\tif (this.options.trigger && this.options.trigger !== true) {\n\t\t\tconst triggerEl =\n\t\t\t\ttypeof this.options.trigger === 'string'\n\t\t\t\t\t? document.querySelector(this.options.trigger)\n\t\t\t\t\t: this.options.trigger instanceof Element\n\t\t\t\t\t\t? this.options.trigger\n\t\t\t\t\t\t: null;\n\t\t\tif (triggerEl) {\n\t\t\t\ttriggerEl.addEventListener('click', () => this.open());\n\t\t\t}\n\t\t}\n\n\t\tthis.onMount();\n\n\t\tif (this.options.autoShow) {\n\t\t\tthis.show();\n\t\t}\n\n\t\tthis.sdk.eventBus.emit('widget:mounted', { widget: this });\n\t\treturn this;\n\t}\n\n\tshow() {\n\t\tif (this.element) {\n\t\t\tthis.element.style.display = 'block';\n\t\t}\n\t\treturn this;\n\t}\n\n\thide() {\n\t\tif (this.element) {\n\t\t\tthis.element.style.display = 'none';\n\t\t}\n\t\treturn this;\n\t}\n\n\topenPanel() {\n\t\tthis.state.isOpen = true;\n\n\t\tthis._renderPanel();\n\t\trequestAnimationFrame(() => {\n\t\t\tif (this.panelElement) {\n\t\t\t\tthis.panelElement.classList.add('open');\n\t\t\t}\n\t\t\tif (this.backdropElement) {\n\t\t\t\tthis.backdropElement.classList.add('show');\n\t\t\t}\n\t\t});\n\t}\n\n\t_showLoadingModal() {\n\t\tthis.state.isLoading = true;\n\n\t\tif (this.options.showBackdrop) {\n\t\t\tthis.backdropElement = document.createElement('div');\n\t\t\tthis.backdropElement.className = 'sdk-modal-backdrop';\n\t\t\tdocument.body.appendChild(this.backdropElement);\n\t\t}\n\n\t\tthis.loadingElement = document.createElement('div');\n\t\tthis.loadingElement.className = 'feedback-loading-modal';\n\t\tthis.loadingElement.innerHTML = `\n\t\t\t<div class=\"sdk-spinner\"></div>\n\t\t`;\n\t\tdocument.body.appendChild(this.loadingElement);\n\n\t\trequestAnimationFrame(() => {\n\t\t\tif (this.backdropElement) {\n\t\t\t\tthis.backdropElement.classList.add('show');\n\t\t\t}\n\t\t\tthis.loadingElement.classList.add('show');\n\t\t});\n\t}\n\n\t_hideLoadingModal() {\n\t\tthis.state.isLoading = false;\n\t\tif (this.loadingElement) {\n\t\t\tthis.loadingElement.remove();\n\t\t\tthis.loadingElement = null;\n\t\t}\n\t}\n\n\tclosePanel() {\n\t\tif (this.panelElement) {\n\t\t\tthis.panelElement.classList.remove('open');\n\t\t}\n\t\tif (this.backdropElement) {\n\t\t\tthis.backdropElement.classList.remove('show');\n\t\t}\n\n\t\tthis.state.isOpen = false;\n\t\tif (this.panelElement && this.panelElement.parentNode) {\n\t\t\tthis.panelElement.parentNode.removeChild(this.panelElement);\n\t\t\tthis.panelElement = null;\n\t\t}\n\t\tif (this.backdropElement && this.backdropElement.parentNode) {\n\t\t\tthis.backdropElement.parentNode.removeChild(this.backdropElement);\n\t\t\tthis.backdropElement = null;\n\t\t}\n\t\tthis._resetForm();\n\t}\n\n\tasync submitFeedback() {\n\t\tif (this.state.isSubmitting) return;\n\n\t\tthis._hideError();\n\n\t\ttry {\n\t\t\tthis.state.isSubmitting = true;\n\t\t\tthis._updateSubmitButton();\n\n\t\t\tconst payload = {\n\t\t\t\ttitle: this.state.title || 'Feedback',\n\t\t\t\tcontent: this.state.content,\n\t\t\t\temail: this.state.email,\n\t\t\t\tboard_id: this.options.boardName,\n\t\t\t\tattachments: this.state.attachments,\n\t\t\t};\n\n\t\t\tif (!this.state.title.trim()) {\n\t\t\t\tthis._showError('Please enter a title.');\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (!this.state.content.trim()) {\n\t\t\t\tthis._showError('Please enter your feedback message.');\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst response = await this.apiService.submitFeedback(payload);\n\n\t\t\tthis._trackSubmission();\n\n\t\t\tthis._showSuccessInPanel();\n\n\t\t\tthis.sdk.eventBus.emit('feedback:submitted', {\n\t\t\t\twidget: this,\n\t\t\t\tfeedback: response,\n\t\t\t});\n\t\t} catch (error) {\n\t\t\tthis._showError('Failed to submit feedback. Please try again.');\n\t\t\tthis.sdk.eventBus.emit('feedback:error', { widget: this, error });\n\t\t} finally {\n\t\t\tthis.state.isSubmitting = false;\n\t\t\tthis._updateSubmitButton();\n\t\t}\n\t}\n\n\thandleConfigUpdate(newConfig) {\n\t\tthis.options.theme = newConfig.theme;\n\t\tif (this.element) {\n\t\t\tthis._updateTheme();\n\t\t}\n\t}\n\n\tdestroy() {\n\t\tif (this.destroyed) return;\n\n\t\tthis.onDestroy();\n\t\tthis.closePanel();\n\n\t\tif (this.element && this.element.parentNode) {\n\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t}\n\n\t\tthis.destroyed = true;\n\t\tthis.mounted = false;\n\t\tthis.sdk.eventBus.emit('widget:destroyed', { widget: this });\n\t}\n\n\tonMount() {}\n\tonDestroy() {}\n\n\t_trackSubmission() {\n\t\ttry {\n\t\t\tconst workspace = this.sdk.config.workspace;\n\t\t\tconst storageKey = `${BaseWidget.STORAGE_KEY}_${workspace}`;\n\t\t\tconst data = {\n\t\t\t\tsubmittedAt: Date.now(),\n\t\t\t\tboardName: this.options.boardName,\n\t\t\t};\n\t\t\tlocalStorage.setItem(storageKey, JSON.stringify(data));\n\t\t} catch (e) {\n\t\t\tconsole.warn('Failed to track feedback submission:', e);\n\t\t}\n\t}\n\n\t_hasRecentlySubmitted() {\n\t\tconst cooldownMs = this.options.suppressionDays * 24 * 60 * 60 * 1000;\n\t\tconst now = Date.now();\n\n\t\tif (this.sdk.config.last_feedback_at) {\n\t\t\ttry {\n\t\t\t\tconst backendTimestamp = new Date(\n\t\t\t\t\tthis.sdk.config.last_feedback_at\n\t\t\t\t).getTime();\n\t\t\t\tif (now - backendTimestamp < cooldownMs) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\t// Invalid date format, continue to localStorage check\n\t\t\t}\n\t\t}\n\n\t\ttry {\n\t\t\tconst workspace = this.sdk.config.workspace;\n\t\t\tconst storageKey = `${BaseWidget.STORAGE_KEY}_${workspace}`;\n\t\t\tconst stored = localStorage.getItem(storageKey);\n\n\t\t\tif (!stored) return false;\n\n\t\t\tconst data = JSON.parse(stored);\n\t\t\tconst submittedAt = data.submittedAt;\n\n\t\t\treturn now - submittedAt < cooldownMs;\n\t\t} catch (e) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tclearSubmissionTracking() {\n\t\ttry {\n\t\t\tconst workspace = this.sdk.config.workspace;\n\t\t\tconst storageKey = `${BaseWidget.STORAGE_KEY}_${workspace}`;\n\t\t\tlocalStorage.removeItem(storageKey);\n\t\t} catch (e) {\n\t\t\tconsole.warn('Failed to clear submission tracking:', e);\n\t\t}\n\t}\n\n\tshouldShow() {\n\t\tif (!this.options.suppressAfterSubmission) return true;\n\t\treturn !this._hasRecentlySubmitted();\n\t}\n\n\t_render() {\n\t\tthrow new Error('_render() must be implemented by concrete widget');\n\t}\n\n\t_attachEvents() {\n\t\t// Override in concrete widgets\n\t}\n\n\t_bindMethods() {\n\t\tthis.openPanel = this.openPanel.bind(this);\n\t\tthis.closePanel = this.closePanel.bind(this);\n\t\tthis.submitFeedback = this.submitFeedback.bind(this);\n\t}\n\n\t_renderPanel() {\n\t\tif (this.panelElement) return;\n\n\t\tif (this.options.showBackdrop && !this.backdropElement) {\n\t\t\tthis.backdropElement = document.createElement('div');\n\t\t\tthis.backdropElement.className = 'sdk-modal-backdrop';\n\t\t\tdocument.body.appendChild(this.backdropElement);\n\n\t\t\tthis.backdropElement.addEventListener('click', this.closePanel);\n\t\t}\n\n\t\tconst modeClass =\n\t\t\tthis.options.displayMode === 'modal'\n\t\t\t\t? 'feedback-modal'\n\t\t\t\t: 'feedback-panel';\n\t\tconst sizeClass = `size-${this.options.size}`;\n\t\tthis.panelElement = document.createElement('div');\n\t\tconst themeClass = `theme-${this.options.theme || 'light'}`;\n\t\tconst isLeftPosition =\n\t\t\tmodeClass === 'feedback-panel' &&\n\t\t\tString(this.options.position).includes('left');\n\t\tconst directionClass = isLeftPosition ? 'panel-from-left' : '';\n\t\tthis.panelElement.className =\n\t\t\t`${modeClass} ${sizeClass} ${themeClass} ${directionClass}`.trim();\n\t\tthis.panelElement.style.setProperty(\n\t\t\t'--color-primary',\n\t\t\tthis.options.primaryColor\n\t\t);\n\t\tthis.panelElement.style.setProperty(\n\t\t\t'--feedback-panel-bg',\n\t\t\tthis.options.backgroundColor\n\t\t);\n\t\tthis.panelElement.style.setProperty(\n\t\t\t'--feedback-panel-text',\n\t\t\tthis.options.textColor\n\t\t);\n\t\tthis.panelElement.innerHTML = this._getPanelHTML();\n\n\t\tdocument.body.appendChild(this.panelElement);\n\t\tthis._attachPanelEvents();\n\n\t\tconst firstInput = this.panelElement.querySelector('input, textarea');\n\t\tif (firstInput) {\n\t\t\tsetTimeout(() => firstInput.focus(), 350);\n\t\t}\n\t}\n\n\t_getPanelHTML() {\n\t\treturn `\n <div class=\"feedback-panel-content\">\n<div class=\"feedback-panel-header\">\n <h3>Send Feedback</h3>\n <button class=\"sdk-close-btn\" type=\"button\" aria-label=\"Close\">\n <iconify-icon icon=\"ph:x\" width=\"18\" height=\"18\"></iconify-icon>\n </button>\n</div>\n <div class=\"feedback-panel-body\">\n <form class=\"feedback-form\">\n <div class=\"sdk-form-group\">\n <label class=\"sdk-label\" for=\"feedback-title-${this.id}\">Title <span class=\"sdk-required\">*</span></label>\n <input \n type=\"text\" \n id=\"feedback-title-${this.id}\" \n name=\"title\" \n class=\"sdk-input\"\n placeholder=\"Brief description of your feedback\"\n value=\"${this.state.title}\"\n />\n </div>\n <div class=\"sdk-form-group\">\n <label class=\"sdk-label\" for=\"feedback-content-${this.id}\">Message <span class=\"sdk-required\">*</span></label>\n <textarea \n id=\"feedback-content-${this.id}\" \n name=\"content\" \n class=\"sdk-textarea\"\n placeholder=\"Tell us what you think...\"\n required\n >${this.state.content}</textarea>\n </div>\n <div class=\"feedback-error\" role=\"alert\"></div>\n <div class=\"feedback-form-actions\">\n <button type=\"submit\" class=\"sdk-btn-primary sdk-btn-block\">\n ${this.state.isSubmitting ? 'Sending...' : 'Send Feedback'}\n </button>\n </div>\n </form>\n </div>\n </div>\n `;\n\t}\n\n\t_attachPanelEvents() {\n\t\tconst panel = this.panelElement;\n\n\t\tpanel\n\t\t\t.querySelector('.sdk-close-btn')\n\t\t\t.addEventListener('click', this.closePanel);\n\n\t\tconst form = panel.querySelector('.feedback-form');\n\t\tform.addEventListener('submit', (e) => {\n\t\t\te.preventDefault();\n\t\t\tthis.submitFeedback();\n\t\t});\n\n\t\tpanel\n\t\t\t.querySelector('input[name=\"title\"]')\n\t\t\t.addEventListener('input', (e) => {\n\t\t\t\tthis.state.title = e.target.value;\n\t\t\t});\n\n\t\tpanel\n\t\t\t.querySelector('textarea[name=\"content\"]')\n\t\t\t.addEventListener('input', (e) => {\n\t\t\t\tthis.state.content = e.target.value;\n\t\t\t});\n\n\t\tconst handleEscape = (e) => {\n\t\t\tif (e.key === 'Escape') {\n\t\t\t\tthis.closePanel();\n\t\t\t\tdocument.removeEventListener('keydown', handleEscape);\n\t\t\t}\n\t\t};\n\t\tdocument.addEventListener('keydown', handleEscape);\n\t}\n\n\t_updateSubmitButton() {\n\t\tif (this.panelElement) {\n\t\t\tconst submitBtn = this.panelElement.querySelector('.sdk-btn-primary');\n\t\t\tif (submitBtn) {\n\t\t\t\tsubmitBtn.disabled = this.state.isSubmitting;\n\t\t\t\tsubmitBtn.innerHTML = this.state.isSubmitting\n\t\t\t\t\t? `<iconify-icon icon=\"ph:circle-notch\" width=\"16\" height=\"16\" style=\"animation: spin 0.8s linear infinite;\"></iconify-icon> Sending...`\n\t\t\t\t\t: `Send Feedback`;\n\t\t\t}\n\t\t}\n\t}\n\n\t_showError(message) {\n\t\tif (this.panelElement) {\n\t\t\tconst errorElement = this.panelElement.querySelector('.feedback-error');\n\t\t\tif (errorElement) {\n\t\t\t\terrorElement.textContent = message;\n\t\t\t\terrorElement.classList.add('show');\n\t\t\t}\n\t\t}\n\t}\n\n\t_hideError() {\n\t\tif (this.panelElement) {\n\t\t\tconst errorElement = this.panelElement.querySelector('.feedback-error');\n\t\t\tif (errorElement) {\n\t\t\t\terrorElement.classList.remove('show');\n\t\t\t}\n\t\t}\n\t}\n\n\t_showSuccessInPanel() {\n\t\tif (!this.panelElement) return;\n\n\t\tconst content = this.panelElement.querySelector('.feedback-panel-content');\n\t\tif (!content) return;\n\n\t\tcontent.innerHTML = `\n\t\t\t<div style=\"display: flex; flex-direction: column; align-items: center; justify-content: center; height: 100%; padding: 40px 24px; text-align: center;\">\n\t\t\t\t<div style=\"width: 56px; height: 56px; border-radius: 50%; background: #037F0C; display: flex; align-items: center; justify-content: center; margin-bottom: 20px;\">\n\t\t\t\t\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"28\" height=\"28\" fill=\"none\" stroke=\"#ffffff\" stroke-width=\"24\" stroke-linecap=\"round\" stroke-linejoin=\"round\" viewBox=\"0 0 256 256\">\n\t\t\t\t\t\t<polyline points=\"216,72 96,192 40,136\"/>\n\t\t\t\t\t</svg>\n\t\t\t\t</div>\n\t\t\t\t<h3 style=\"margin: 0 0 8px; font-size: 1.25rem; font-weight: 600; color: var(--feedback-panel-text, #1d1d1f);\">Thank you!</h3>\n\t\t\t\t<p style=\"margin: 0; font-size: 0.875rem; color: #6b7280; line-height: 1.5;\">Your feedback has been submitted successfully.</p>\n\t\t\t</div>\n\t\t`;\n\n\t\tsetTimeout(() => this.closePanel(), 2000);\n\t}\n\n\t_resetForm() {\n\t\tthis.state.title = '';\n\t\tthis.state.content = '';\n\t\tthis.state.email = '';\n\t\tthis.state.errors = {};\n\t}\n\n\t_updateTheme() {\n\t\t// No longer needed - single theme\n\t}\n\n\topen() {\n\t\tthis.openPanel();\n\t\treturn this;\n\t}\n\n\tclose() {\n\t\tthis.closePanel();\n\t\treturn this;\n\t}\n\n\ttoggle() {\n\t\tif (this.state.isOpen) {\n\t\t\tthis.closePanel();\n\t\t} else {\n\t\t\tthis.openPanel();\n\t\t}\n\t\treturn this;\n\t}\n\n\topenModal() {\n\t\tthis.openPanel();\n\t}\n\n\tcloseModal() {\n\t\tthis.closePanel();\n\t}\n}\n","import { BaseWidget } from './BaseWidget.js';\n\nexport class ButtonWidget extends BaseWidget {\n\tconstructor(options) {\n\t\tsuper({ ...options, type: 'button' });\n\t\tthis.isMinimized = false;\n\t\tthis._hiddenForOpenPanel = false;\n\t}\n\n\t_hasTrigger() {\n\t\treturn this.options.trigger === true || this.options.trigger === undefined;\n\t}\n\n\t_render() {\n\t\tif (!this._hasTrigger()) {\n\t\t\t// No built-in button — widget is opened programmatically or via custom trigger\n\t\t\tconst placeholder = document.createElement('div');\n\t\t\tplaceholder.style.display = 'none';\n\t\t\treturn placeholder;\n\t\t}\n\n\t\tconst buttonText =\n\t\t\tthis.options.buttonText ||\n\t\t\tthis.options.triggerText ||\n\t\t\tthis.options.label ||\n\t\t\tthis.options.text ||\n\t\t\t'Feedback';\n\n\t\tconst button = document.createElement('div');\n\t\tbutton.className = `feedback-widget-button position-${this.options.position}`;\n\t\tbutton.innerHTML = `\n <button class=\"feedback-trigger-btn\" type=\"button\">\n <svg class=\"feedback-icon\" xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" fill=\"currentColor\" viewBox=\"0 0 256 256\">\n <path d=\"M224,48H32a8,8,0,0,0-8,8V192a16,16,0,0,0,16,16H216a16,16,0,0,0,16-16V56A8,8,0,0,0,224,48Zm-8,144H40V74.19l82.59,75.71a8,8,0,0,0,10.82,0L216,74.19V192Z\"/>\n </svg>\n <span class=\"feedback-text\">${buttonText}</span>\n </button>\n `;\n\n\t\tif (this.options.customStyles) {\n\t\t\tObject.assign(button.style, this.options.customStyles);\n\t\t}\n\n\t\treturn button;\n\t}\n\n\t_attachEvents() {\n\t\tif (!this._hasTrigger()) return;\n\n\t\tconst button = this.element.querySelector('.feedback-trigger-btn');\n\n\t\tbutton.addEventListener('click', () => {\n\t\t\tthis.openPanel();\n\t\t});\n\n\t\tbutton.addEventListener('pointerup', (e) => {\n\t\t\tif (e.pointerType === 'mouse') return;\n\t\t\tthis.openPanel();\n\t\t});\n\t}\n\n\topenPanel() {\n\t\tif (this._hasTrigger() && !this.state.isOpen) {\n\t\t\tthis._hiddenForOpenPanel = true;\n\t\t\tthis.hide();\n\t\t}\n\t\tsuper.openPanel();\n\t}\n\n\tclosePanel() {\n\t\tconst shouldRestoreButton = this._hiddenForOpenPanel;\n\t\tsuper.closePanel();\n\n\t\tif (shouldRestoreButton) {\n\t\t\tsetTimeout(() => {\n\t\t\t\tif (!this.destroyed && !this.options._noTriggerButton) {\n\t\t\t\t\tthis.show();\n\t\t\t\t}\n\t\t\t\tthis._hiddenForOpenPanel = false;\n\t\t\t}, 320);\n\t\t}\n\t}\n\n\tmount(container) {\n\t\tsuper.mount(container);\n\t}\n\n\tupdateText(text) {\n\t\tconst textEl = this.element?.querySelector('.feedback-text');\n\t\tif (textEl) {\n\t\t\ttextEl.textContent = text;\n\t\t}\n\t}\n\n\tupdatePosition(position) {\n\t\tthis.options.position = position;\n\t\tif (this.element) {\n\t\t\tthis.element.className = this.element.className.replace(\n\t\t\t\t/position-\\w+/,\n\t\t\t\t`position-${position}`\n\t\t\t);\n\t\t}\n\t}\n}\n","import { BaseWidget } from './BaseWidget.js';\n\nexport class ChangelogWidget extends BaseWidget {\n\tconstructor(options) {\n\t\tsuper({ ...options, type: 'changelog' });\n\t\tthis.changelogs = [];\n\t\tthis.isLoading = false;\n\t\tthis.modalElement = null;\n\t\tthis.sidebarElement = null;\n\t\tthis.listModalBackdropElement = null;\n\t\tthis.currentIndex = 0;\n\t}\n\n\t_hasTrigger() {\n\t\treturn this.options.trigger === true || this.options.trigger === undefined;\n\t}\n\n\t_render() {\n\t\tif (!this._hasTrigger()) {\n\t\t\tconst placeholder = document.createElement('div');\n\t\t\tplaceholder.style.display = 'none';\n\t\t\treturn placeholder;\n\t\t}\n\n\t\tconst trigger = document.createElement('div');\n\t\ttrigger.className = `changelog-widget position-${this.options.position} changelog-theme-${this.options.theme || 'light'}`;\n\t\ttrigger.innerHTML = `\n\t\t\t<button class=\"changelog-trigger-btn\" type=\"button\" aria-label=\"View Updates\">\n\t\t\t\t<svg class=\"changelog-icon\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\n\t\t\t\t\t<path d=\"M5.8 21L7.4 14L2 9.2L9.2 8.6L12 2L14.8 8.6L22 9.2L16.6 14L18.2 21L12 17.3L5.8 21Z\"/>\n\t\t\t\t</svg>\n\t\t\t\t<span class=\"changelog-text\">${this.options.triggerText || \"What's New\"}</span>\n\t\t\t\t<span class=\"changelog-confetti-emoji\">🎉</span>\n\t\t\t\t${this.options.showBadge ? '<span class=\"changelog-badge\"></span>' : ''}\n\t\t\t</button>\n\t\t`;\n\n\t\tif (this.options.customStyles) {\n\t\t\tObject.assign(trigger.style, this.options.customStyles);\n\t\t}\n\n\t\treturn trigger;\n\t}\n\n\t_attachEvents() {\n\t\tif (!this._hasTrigger()) return;\n\n\t\tconst button = this.element.querySelector('.changelog-trigger-btn');\n\t\tbutton.addEventListener('click', () => {\n\t\t\tthis.openSidebar();\n\t\t});\n\t}\n\n\tasync openModal() {\n\t\tif (this.modalElement) return;\n\n\t\tthis.state.isOpen = true;\n\t\tthis._createModal();\n\n\t\tif (this.changelogs.length === 0) {\n\t\t\tawait this._loadChangelogs();\n\t\t}\n\n\t\tthis.currentIndex = 0;\n\t\tthis._renderCurrentChangelog();\n\n\t\tdocument.body.style.overflow = 'hidden';\n\n\t\trequestAnimationFrame(() => {\n\t\t\tif (this.modalElement) {\n\t\t\t\tthis.modalElement.classList.add('open');\n\t\t\t}\n\t\t\tif (this.backdropElement) {\n\t\t\t\tthis.backdropElement.classList.add('show');\n\t\t\t}\n\t\t});\n\t}\n\n\tcloseModal() {\n\t\tdocument.body.style.overflow = '';\n\n\t\tif (this.modalElement) {\n\t\t\tthis.modalElement.classList.remove('open');\n\t\t}\n\t\tif (this.backdropElement) {\n\t\t\tthis.backdropElement.classList.remove('show');\n\t\t}\n\n\t\tsetTimeout(() => {\n\t\t\tthis.state.isOpen = false;\n\t\t\tif (this.modalElement && this.modalElement.parentNode) {\n\t\t\t\tthis.modalElement.parentNode.removeChild(this.modalElement);\n\t\t\t\tthis.modalElement = null;\n\t\t\t}\n\t\t\tif (this.backdropElement && this.backdropElement.parentNode) {\n\t\t\t\tthis.backdropElement.parentNode.removeChild(this.backdropElement);\n\t\t\t\tthis.backdropElement = null;\n\t\t\t}\n\t\t}, 300);\n\t}\n\n\t_createModal() {\n\t\tif (this.options.showBackdrop !== false) {\n\t\t\tthis.backdropElement = document.createElement('div');\n\t\t\tthis.backdropElement.className = `changelog-modal-backdrop changelog-theme-${this.options.theme || 'light'}`;\n\t\t\tdocument.body.appendChild(this.backdropElement);\n\t\t\tthis.backdropElement.addEventListener('click', () => this.closeModal());\n\t\t}\n\n\t\tthis.modalElement = document.createElement('div');\n\t\tthis.modalElement.className = `changelog-modal changelog-theme-${this.options.theme || 'light'}`;\n\t\tthis.modalElement.innerHTML = `\n\t\t\t<div class=\"changelog-modal-container\">\n\t\t\t\t<button class=\"changelog-modal-close\" type=\"button\" aria-label=\"Close\">\n\t\t\t\t\t<iconify-icon icon=\"ph:x\" width=\"18\" height=\"18\"></iconify-icon>\n\t\t\t\t</button>\n\t\t\t\t<div class=\"changelog-modal-content\">\n\t\t\t\t\t<div class=\"changelog-loading\">\n\t\t\t\t\t\t<div class=\"sdk-spinner\"></div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t`;\n\n\t\tdocument.body.appendChild(this.modalElement);\n\n\t\tthis.modalElement\n\t\t\t.querySelector('.changelog-modal-container')\n\t\t\t.addEventListener('click', (e) => e.stopPropagation());\n\n\t\tthis.modalElement\n\t\t\t.querySelector('.changelog-modal-close')\n\t\t\t.addEventListener('click', () => this.closeModal());\n\n\t\tthis._escapeHandler = (e) => {\n\t\t\tif (e.key === 'Escape') this.closeModal();\n\t\t};\n\t\tdocument.addEventListener('keydown', this._escapeHandler);\n\t}\n\n\tasync openSidebar() {\n\t\tif (this.listModalElement) return;\n\n\t\tif (this.modalElement) {\n\t\t\tthis.closeModal();\n\t\t\tawait new Promise((resolve) => setTimeout(resolve, 350));\n\t\t}\n\n\t\tthis.state.isOpen = true;\n\t\tthis._createListModal();\n\n\t\tif (this.changelogs.length === 0) {\n\t\t\tawait this._loadChangelogs();\n\t\t}\n\n\t\tthis._renderChangelogList();\n\n\t\tdocument.body.style.overflow = 'hidden';\n\n\t\trequestAnimationFrame(() => {\n\t\t\tif (this.listModalElement) {\n\t\t\t\tthis.listModalElement.classList.add('open');\n\t\t\t\tthis._showConfetti();\n\t\t\t}\n\t\t\tif (this.listModalBackdropElement) {\n\t\t\t\tthis.listModalBackdropElement.classList.add('show');\n\t\t\t}\n\t\t});\n\t}\n\n\t_showConfetti() {\n\t\tconst colors = [\n\t\t\t'#FF6B6B',\n\t\t\t'#4ECDC4',\n\t\t\t'#FFE66D',\n\t\t\t'#95E1D3',\n\t\t\t'#F38181',\n\t\t\t'#AA96DA',\n\t\t\t'#FCBAD3',\n\t\t\t'#A8D8EA',\n\t\t];\n\t\tconst confettiCount = 50;\n\t\tconst container = document.createElement('div');\n\t\tcontainer.className = 'changelog-confetti-container';\n\t\tdocument.body.appendChild(container);\n\n\t\tfor (let i = 0; i < confettiCount; i++) {\n\t\t\tconst confetti = document.createElement('div');\n\t\t\tconfetti.className = 'changelog-confetti';\n\t\t\tconfetti.style.left = Math.random() * 100 + '%';\n\t\t\tconfetti.style.backgroundColor =\n\t\t\t\tcolors[Math.floor(Math.random() * colors.length)];\n\t\t\tconfetti.style.animationDelay = Math.random() * 0.5 + 's';\n\t\t\tconfetti.style.animationDuration = Math.random() * 1 + 1.5 + 's';\n\n\t\t\tconst shapes = ['circle', 'square', 'rectangle'];\n\t\t\tconst shape = shapes[Math.floor(Math.random() * shapes.length)];\n\t\t\tif (shape === 'circle') {\n\t\t\t\tconfetti.style.borderRadius = '50%';\n\t\t\t\tconfetti.style.width = Math.random() * 8 + 4 + 'px';\n\t\t\t\tconfetti.style.height = confetti.style.width;\n\t\t\t} else if (shape === 'rectangle') {\n\t\t\t\tconfetti.style.width = Math.random() * 4 + 3 + 'px';\n\t\t\t\tconfetti.style.height = Math.random() * 10 + 8 + 'px';\n\t\t\t} else {\n\t\t\t\tconfetti.style.width = Math.random() * 8 + 4 + 'px';\n\t\t\t\tconfetti.style.height = confetti.style.width;\n\t\t\t}\n\n\t\t\tcontainer.appendChild(confetti);\n\t\t}\n\n\t\tsetTimeout(() => {\n\t\t\tif (container.parentNode) container.parentNode.removeChild(container);\n\t\t}, 2500);\n\t}\n\n\tcloseSidebar() {\n\t\tdocument.body.style.overflow = '';\n\n\t\tif (this.listModalElement) {\n\t\t\tthis.listModalElement.classList.remove('open');\n\t\t}\n\t\tif (this.listModalBackdropElement) {\n\t\t\tthis.listModalBackdropElement.classList.remove('show');\n\t\t}\n\n\t\tsetTimeout(() => {\n\t\t\tthis.state.isOpen = false;\n\t\t\tif (this.listModalElement && this.listModalElement.parentNode) {\n\t\t\t\tthis.listModalElement.parentNode.removeChild(this.listModalElement);\n\t\t\t\tthis.listModalElement = null;\n\t\t\t}\n\t\t\tif (\n\t\t\t\tthis.listModalBackdropElement &&\n\t\t\t\tthis.listModalBackdropElement.parentNode\n\t\t\t) {\n\t\t\t\tthis.listModalBackdropElement.parentNode.removeChild(\n\t\t\t\t\tthis.listModalBackdropElement\n\t\t\t\t);\n\t\t\t\tthis.listModalBackdropElement = null;\n\t\t\t}\n\t\t\tif (this._listModalEscapeHandler) {\n\t\t\t\tdocument.removeEventListener('keydown', this._listModalEscapeHandler);\n\t\t\t}\n\t\t}, 300);\n\t}\n\n\t_createListModal() {\n\t\tif (this.options.showBackdrop !== false) {\n\t\t\tthis.listModalBackdropElement = document.createElement('div');\n\t\t\tthis.listModalBackdropElement.className = `changelog-list-modal-backdrop changelog-theme-${this.options.theme || 'light'}`;\n\t\t\tdocument.body.appendChild(this.listModalBackdropElement);\n\t\t\tthis.listModalBackdropElement.addEventListener('click', () =>\n\t\t\t\tthis.closeSidebar()\n\t\t\t);\n\t\t}\n\n\t\tthis.listModalElement = document.createElement('div');\n\t\tthis.listModalElement.className = `changelog-list-modal changelog-theme-${this.options.theme || 'light'}`;\n\t\tthis.listModalElement.innerHTML = `\n\t\t\t<div class=\"changelog-list-modal-container\">\n\t\t\t\t<div class=\"changelog-list-modal-header\">\n\t\t\t\t\t<h2>${this.options.title || \"What's New\"} 🎉</h2>\n\t\t\t\t\t<button class=\"changelog-list-modal-close\" type=\"button\" aria-label=\"Close\">\n\t\t\t\t\t\t<iconify-icon icon=\"ph:x\" width=\"18\" height=\"18\"></iconify-icon>\n\t\t\t\t\t</button>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"changelog-list-modal-body\">\n\t\t\t\t\t<div class=\"changelog-loading\">\n\t\t\t\t\t\t<div class=\"sdk-spinner\"></div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t`;\n\n\t\tdocument.body.appendChild(this.listModalElement);\n\n\t\tthis.listModalElement\n\t\t\t.querySelector('.changelog-list-modal-container')\n\t\t\t.addEventListener('click', (e) => e.stopPropagation());\n\n\t\tthis.listModalElement\n\t\t\t.querySelector('.changelog-list-modal-close')\n\t\t\t.addEventListener('click', () => this.closeSidebar());\n\n\t\tthis._listModalEscapeHandler = (e) => {\n\t\t\tif (e.key === 'Escape') this.closeSidebar();\n\t\t};\n\t\tdocument.addEventListener('keydown', this._listModalEscapeHandler);\n\t}\n\n\t_renderChangelogList() {\n\t\tconst body = this.listModalElement.querySelector(\n\t\t\t'.changelog-list-modal-body'\n\t\t);\n\n\t\tif (this.isLoading) return;\n\n\t\tif (this.changelogs.length === 0) {\n\t\t\tbody.innerHTML = `\n\t\t\t\t<div class=\"changelog-empty\">\n\t\t\t\t\t<svg width=\"48\" height=\"48\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\">\n\t\t\t\t\t\t<path d=\"M14.5 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7.5L14.5 2z\"/>\n\t\t\t\t\t\t<polyline points=\"14,2 14,8 20,8\"/>\n\t\t\t\t\t</svg>\n\t\t\t\t\t<p>No updates yet</p>\n\t\t\t\t</div>\n\t\t\t`;\n\t\t\treturn;\n\t\t}\n\n\t\tbody.innerHTML = `\n\t\t\t<div class=\"changelog-list\">\n\t\t\t\t${this.changelogs.map((changelog, index) => this._renderChangelogListItem(changelog, index)).join('')}\n\t\t\t</div>\n\t\t`;\n\n\t\tbody.querySelectorAll('.changelog-list-item').forEach((item, index) => {\n\t\t\titem.addEventListener('click', () => {\n\t\t\t\tthis._handleViewUpdate(this.changelogs[index]);\n\t\t\t});\n\t\t});\n\t}\n\n\t_renderChangelogListItem(changelog, index) {\n\t\tconst hasImage = changelog.cover_image || changelog.image;\n\t\tconst imageUrl = changelog.cover_image || changelog.image;\n\t\tconst date = changelog.published_at\n\t\t\t? this._formatDate(changelog.published_at)\n\t\t\t: '';\n\t\tconst description = this._stripHtml(\n\t\t\tchangelog.excerpt || changelog.description\n\t\t);\n\t\tconst labelsHTML =\n\t\t\tchangelog.labels && changelog.labels.length > 0\n\t\t\t\t? `<div class=\"changelog-list-item-labels\">\n\t\t\t\t\t\t${changelog.labels\n\t\t\t\t\t\t\t.map(\n\t\t\t\t\t\t\t\t(label) =>\n\t\t\t\t\t\t\t\t\t`<span class=\"changelog-label\" style=\"background-color: ${label.color || '#E5E7EB'}; color: ${this._getContrastColor(label.color || '#E5E7EB')}\">${label.name}</span>`\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t.join('')}\n\t\t\t\t\t</div>`\n\t\t\t\t: '';\n\n\t\treturn `\n\t\t\t<div class=\"changelog-list-item\" data-index=\"${index}\">\n\t\t\t\t<div class=\"changelog-list-item-content\">\n\t\t\t\t\t<div class=\"changelog-list-item-meta\">\n\t\t\t\t\t\t${date ? `<span class=\"changelog-list-item-date\">${date}</span>` : ''}\n\t\t\t\t\t\t${labelsHTML}\n\t\t\t\t\t</div>\n\t\t\t\t\t<h3 class=\"changelog-list-item-title\">${changelog.title}</h3>\n\t\t\t\t\t${description ? `<p class=\"changelog-list-item-description\">${description}</p>` : ''}\n\t\t\t\t</div>\n\t\t\t\t${hasImage ? `<div class=\"changelog-list-item-image\"><img src=\"${imageUrl}\" alt=\"${changelog.title}\" loading=\"lazy\" /></div>` : ''}\n\t\t\t\t<iconify-icon icon=\"ph:caret-right\" class=\"changelog-list-item-arrow\" width=\"16\" height=\"16\"></iconify-icon>\n\t\t\t</div>\n\t\t`;\n\t}\n\n\tasync _loadChangelogs() {\n\t\tthis.isLoading = true;\n\n\t\ttry {\n\t\t\tconst result = await this.apiService.getChangelogs();\n\t\t\tthis.changelogs = result.data || [];\n\t\t\tthis.sdk.eventBus.emit('changelog:loaded', {\n\t\t\t\tchangelogs: this.changelogs,\n\t\t\t});\n\t\t} catch (error) {\n\t\t\tthis.changelogs = [];\n\t\t\tthis.sdk.eventBus.emit('changelog:error', { error });\n\t\t} finally {\n\t\t\tthis.isLoading = false;\n\t\t}\n\t}\n\n\t_renderCurrentChangelog() {\n\t\tconst content = this.modalElement.querySelector('.changelog-modal-content');\n\n\t\tif (this.isLoading) return;\n\n\t\tif (this.changelogs.length === 0) {\n\t\t\tcontent.innerHTML = `\n\t\t\t\t<div class=\"changelog-empty\">\n\t\t\t\t\t<svg width=\"48\" height=\"48\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\">\n\t\t\t\t\t\t<path d=\"M14.5 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7.5L14.5 2z\"/>\n\t\t\t\t\t\t<polyline points=\"14,2 14,8 20,8\"/>\n\t\t\t\t\t</svg>\n\t\t\t\t\t<p>No updates yet</p>\n\t\t\t\t</div>\n\t\t\t`;\n\t\t\treturn;\n\t\t}\n\n\t\tconst changelog = this.changelogs[this.currentIndex];\n\t\tconst hasImage = changelog.cover_image || changelog.image;\n\t\tconst imageUrl = changelog.cover_image || changelog.image;\n\t\tconst hasMultiple = this.changelogs.length > 1;\n\t\tconst description = this._stripHtml(\n\t\t\tchangelog.excerpt || changelog.description\n\t\t);\n\n\t\tcontent.innerHTML = `\n\t\t\t<div class=\"changelog-popup-item\">\n\t\t\t\t${\n\t\t\t\t\thasImage\n\t\t\t\t\t\t? `\n\t\t\t\t\t<div class=\"changelog-popup-image\">\n\t\t\t\t\t\t<img src=\"${imageUrl}\" alt=\"${changelog.title}\" loading=\"lazy\" />\n\t\t\t\t\t</div>\n\t\t\t\t`\n\t\t\t\t\t\t: ''\n\t\t\t\t}\n\t\t\t\t<div class=\"changelog-popup-body\">\n\t\t\t\t\t<h2 class=\"changelog-popup-title\">${changelog.title}</h2>\n\t\t\t\t\t${description ? `<p class=\"changelog-popup-description\">${description}</p>` : ''}\n\t\t\t\t\t<button class=\"changelog-popup-btn\" type=\"button\">\n\t\t\t\t\t\t${this.options.viewButtonText || 'View Update'}\n\t\t\t\t\t</button>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"changelog-popup-footer\">\n\t\t\t\t\t${\n\t\t\t\t\t\thasMultiple\n\t\t\t\t\t\t\t? `\n\t\t\t\t\t\t<div class=\"changelog-popup-dots\">\n\t\t\t\t\t\t\t${this.changelogs\n\t\t\t\t\t\t\t\t.map(\n\t\t\t\t\t\t\t\t\t(_, i) => `\n\t\t\t\t\t\t\t\t<span class=\"changelog-dot ${i === this.currentIndex ? 'active' : ''}\" data-index=\"${i}\"></span>\n\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.join('')}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t`\n\t\t\t\t\t\t\t: ''\n\t\t\t\t\t}\n\t\t\t\t\t<button class=\"changelog-view-all-btn\" type=\"button\">\n\t\t\t\t\t\tView all updates\n\t\t\t\t\t\t<iconify-icon icon=\"ph:arrow-right\" width=\"16\" height=\"16\"></iconify-icon>\n\t\t\t\t\t</button>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t`;\n\n\t\tcontent\n\t\t\t.querySelector('.changelog-popup-btn')\n\t\t\t.addEventListener('click', () => {\n\t\t\t\tthis._handleViewUpdate(changelog);\n\t\t\t});\n\n\t\tcontent\n\t\t\t.querySelector('.changelog-view-all-btn')\n\t\t\t.addEventListener('click', () => {\n\t\t\t\tthis.closeModal();\n\t\t\t\tsetTimeout(() => this.openSidebar(), 350);\n\t\t\t});\n\n\t\tif (hasMultiple) {\n\t\t\tcontent.querySelectorAll('.changelog-dot').forEach((dot) => {\n\t\t\t\tdot.addEventListener('click', (e) => {\n\t\t\t\t\tthis.currentIndex = parseInt(e.target.dataset.index, 10);\n\t\t\t\t\tthis._renderCurrentChangelog();\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\t}\n\n\t_handleViewUpdate(changelog) {\n\t\tthis.sdk.eventBus.emit('changelog:view', { changelog });\n\n\t\tconst changelogBase = (this.options.changelogBaseUrl || '').replace(\n\t\t\t/\\/$/,\n\t\t\t''\n\t\t);\n\t\tconst url =\n\t\t\tchangelog.url ||\n\t\t\t(changelog.slug && changelogBase\n\t\t\t\t? `${changelogBase}/${changelog.slug}`\n\t\t\t\t: null) ||\n\t\t\tchangelogBase ||\n\t\t\tnull;\n\n\t\tif (url) {\n\t\t\tif (this.options.openInNewTab !== false) {\n\t\t\t\twindow.open(url, '_blank', 'noopener,noreferrer');\n\t\t\t} else {\n\t\t\t\twindow.location.href = url;\n\t\t\t}\n\t\t}\n\n\t\tif (typeof this.options.onViewUpdate === 'function') {\n\t\t\tthis.options.onViewUpdate(changelog);\n\t\t}\n\t}\n\n\t_stripHtml(html) {\n\t\tconst tmp = document.createElement('div');\n\t\ttmp.innerHTML = html;\n\t\treturn (tmp.textContent || tmp.innerText || '').trim();\n\t}\n\n\t_truncateDescription(html, maxLength = 120) {\n\t\tif (!html) return '';\n\t\tconst plain = this._stripHtml(html);\n\t\tif (plain.length <= maxLength) return plain;\n\t\treturn plain.substring(0, maxLength).trimEnd() + '...';\n\t}\n\n\t_formatDate(dateString) {\n\t\tconst date = new Date(dateString);\n\t\treturn date.toLocaleDateString('en-US', {\n\t\t\tyear: 'numeric',\n\t\t\tmonth: 'short',\n\t\t\tday: 'numeric',\n\t\t});\n\t}\n\n\t_getContrastColor(hexColor) {\n\t\tconst hex = hexColor.replace('#', '');\n\t\tconst r = parseInt(hex.substr(0, 2), 16);\n\t\tconst g = parseInt(hex.substr(2, 2), 16);\n\t\tconst b = parseInt(hex.substr(4, 2), 16);\n\t\tconst luminance = (0.299 * r + 0.587 * g + 0.114 * b) / 255;\n\t\treturn luminance > 0.5 ? '#1F2937' : '#FFFFFF';\n\t}\n\n\thideBadge() {\n\t\tconst badge = this.element?.querySelector('.changelog-badge');\n\t\tif (badge) badge.style.display = 'none';\n\t}\n\n\tshowBadge() {\n\t\tconst badge = this.element?.querySelector('.changelog-badge');\n\t\tif (badge) badge.style.display = 'block';\n\t}\n\n\tnextChangelog() {\n\t\tif (this.currentIndex < this.changelogs.length - 1) {\n\t\t\tthis.currentIndex++;\n\t\t\tthis._renderCurrentChangelog();\n\t\t}\n\t}\n\n\tprevChangelog() {\n\t\tif (this.currentIndex > 0) {\n\t\t\tthis.currentIndex--;\n\t\t\tthis._renderCurrentChangelog();\n\t\t}\n\t}\n\n\tasync refresh() {\n\t\tthis.changelogs = [];\n\t\tawait this._loadChangelogs();\n\t\tif (this.modalElement) {\n\t\t\tthis.currentIndex = 0;\n\t\t\tthis._renderCurrentChangelog();\n\t\t}\n\t\tif (this.listModalElement) {\n\t\t\tthis._renderChangelogList();\n\t\t}\n\t}\n\n\topen() {\n\t\tthis.openSidebar();\n\t\treturn this;\n\t}\n\n\tclose() {\n\t\tthis.closeSidebar();\n\t\treturn this;\n\t}\n\n\ttoggle() {\n\t\tif (this.state.isOpen) {\n\t\t\tthis.closeSidebar();\n\t\t} else {\n\t\t\tthis.openSidebar();\n\t\t}\n\t\treturn this;\n\t}\n\n\tmount(container) {\n\t\tsuper.mount(container);\n\n\t\t// Bind to a custom trigger element if provided\n\t\tif (this.options.trigger && this.options.trigger !== true) {\n\t\t\tconst triggerEl =\n\t\t\t\ttypeof this.options.trigger === 'string'\n\t\t\t\t\t? document.querySelector(this.options.trigger)\n\t\t\t\t\t: this.options.trigger instanceof Element\n\t\t\t\t\t\t? this.options.trigger\n\t\t\t\t\t\t: null;\n\t\t\tif (triggerEl) {\n\t\t\t\ttriggerEl.addEventListener('click', () => this.open());\n\t\t\t}\n\t\t}\n\t}\n\n\tdestroy() {\n\t\tif (this._escapeHandler) {\n\t\t\tdocument.removeEventListener('keydown', this._escapeHandler);\n\t\t}\n\t\tif (this._listModalEscapeHandler) {\n\t\t\tdocument.removeEventListener('keydown', this._listModalEscapeHandler);\n\t\t}\n\t\tthis.closeModal();\n\t\tthis.closeSidebar();\n\t\tsuper.destroy();\n\t}\n}\n","import { BaseWidget } from './BaseWidget.js';\n\nexport class InlineWidget extends BaseWidget {\n\tconstructor(options) {\n\t\tsuper({ ...options, type: 'inline' });\n\t}\n\n\t_render() {\n\t\tconst widget = document.createElement('div');\n\t\twidget.className = 'feedback-widget feedback-widget-inline';\n\t\twidget.innerHTML = `\n <div class=\"feedback-inline-content\">\n <h3>Send us your feedback</h3>\n <form class=\"feedback-inline-form\">\n <div class=\"sdk-form-group\">\n <input \n type=\"text\" \n name=\"title\" \n class=\"sdk-input\"\n placeholder=\"Title (optional)\"\n value=\"${this.state.title}\"\n />\n </div>\n <div class=\"sdk-form-group\">\n <textarea \n name=\"content\" \n class=\"sdk-textarea\"\n placeholder=\"Your feedback...\"\n required\n >${this.state.content}</textarea>\n </div>\n <div class=\"sdk-form-group\">\n <input \n type=\"email\" \n name=\"email\" \n class=\"sdk-input\"\n placeholder=\"Email (optional)\"\n value=\"${this.state.email}\"\n />\n </div>\n <button type=\"submit\" class=\"sdk-btn-primary sdk-btn-block\">\n Send Feedback\n </button>\n <div class=\"feedback-error\"></div>\n </form>\n </div>\n `;\n\n\t\tif (this.options.customStyles) {\n\t\t\tObject.assign(widget.style, this.options.customStyles);\n\t\t}\n\n\t\treturn widget;\n\t}\n\n\t_attachEvents() {\n\t\tconst form = this.element.querySelector('.feedback-inline-form');\n\n\t\tform.addEventListener('submit', (e) => {\n\t\t\te.preventDefault();\n\t\t\tthis.submitFeedback();\n\t\t});\n\n\t\tform.querySelector('input[name=\"title\"]').addEventListener('input', (e) => {\n\t\t\tthis.state.title = e.target.value;\n\t\t});\n\n\t\tform\n\t\t\t.querySelector('textarea[name=\"content\"]')\n\t\t\t.addEventListener('input', (e) => {\n\t\t\t\tthis.state.content = e.target.value;\n\t\t\t});\n\n\t\tform.querySelector('input[name=\"email\"]').addEventListener('input', (e) => {\n\t\t\tthis.state.email = e.target.value;\n\t\t});\n\t}\n\n\topenModal() {\n\t\tconst textarea = this.element.querySelector('textarea[name=\"content\"]');\n\t\tif (textarea) {\n\t\t\ttextarea.focus();\n\t\t}\n\t}\n\n\tcloseModal() {\n\t\t// Inline widget doesn't use modal\n\t}\n\n\t_showSuccessMessage() {\n\t\tconst widget = this.element.querySelector('.feedback-inline-content');\n\t\tconst originalContent = widget.innerHTML;\n\n\t\twidget.innerHTML = `\n <div class=\"feedback-success\">\n <div class=\"sdk-notification-icon\">✓</div>\n <h3>Thank you!</h3>\n <p>Your feedback has been submitted successfully.</p>\n <button class=\"sdk-btn-primary\">Send Another</button>\n </div>\n `;\n\n\t\tconst resetBtn = widget.querySelector('.sdk-btn-primary');\n\t\tresetBtn.addEventListener('click', () => {\n\t\t\twidget.innerHTML = originalContent;\n\t\t\tthis._attachEvents();\n\t\t\tthis._resetForm();\n\t\t});\n\t}\n\n\t_showError(message) {\n\t\tconst errorElement = this.element.querySelector('.feedback-error');\n\t\tif (errorElement) {\n\t\t\terrorElement.textContent = message;\n\t\t\terrorElement.classList.add('show');\n\n\t\t\tsetTimeout(() => {\n\t\t\t\tif (errorElement) {\n\t\t\t\t\terrorElement.classList.remove('show');\n\t\t\t\t}\n\t\t\t}, 5000);\n\t\t}\n\t}\n\n\t_updateSubmitButton() {\n\t\tconst submitBtn = this.element.querySelector('.sdk-btn-primary');\n\t\tif (submitBtn) {\n\t\t\tsubmitBtn.textContent = this.state.isSubmitting\n\t\t\t\t? 'Sending...'\n\t\t\t\t: 'Send Feedback';\n\t\t\tsubmitBtn.disabled = this.state.isSubmitting;\n\t\t}\n\t}\n\n\tupdateTitle(title) {\n\t\tconst titleElement = this.element?.querySelector('h3');\n\t\tif (titleElement) {\n\t\t\ttitleElement.textContent = title;\n\t\t}\n\t}\n\n\tsetPlaceholder(field, placeholder) {\n\t\tconst input = this.element?.querySelector(`[name=\"${field}\"]`);\n\t\tif (input) {\n\t\t\tinput.placeholder = placeholder;\n\t\t}\n\t}\n}\n","/**\n * WebSocketService - Real-time communication for web chat widget\n */\n\nexport class WebSocketService {\n\tconstructor(config = {}) {\n\t\tthis.baseURL = config.baseURL || '';\n\t\tthis.workspace = config.workspace || '';\n\t\tthis.sessionToken = config.sessionToken || null;\n\t\tthis.mock = config.mock || false;\n\n\t\tthis.ws = null;\n\t\tthis.reconnectAttempts = 0;\n\t\tthis.maxReconnectAttempts = 5;\n\t\tthis.reconnectDelay = 1000;\n\t\tthis.pingInterval = null;\n\t\tthis.isConnected = false;\n\n\t\t// Event listeners\n\t\tthis._listeners = new Map();\n\n\t\t// Bind methods\n\t\tthis._onOpen = this._onOpen.bind(this);\n\t\tthis._onMessage = this._onMessage.bind(this);\n\t\tthis._onClose = this._onClose.bind(this);\n\t\tthis._onError = this._onError.bind(this);\n\t}\n\n\t/**\n\t * Connect to WebSocket server\n\t */\n\tconnect(sessionToken = null) {\n\t\tif (sessionToken) {\n\t\t\tthis.sessionToken = sessionToken;\n\t\t}\n\n\t\tif (!this.sessionToken) {\n\t\t\tconsole.warn('[WebSocket] No session token provided');\n\t\t\treturn;\n\t\t}\n\n\t\t// Mock mode - simulate connection\n\t\tif (this.mock) {\n\t\t\tthis.isConnected = true;\n\t\t\tthis._emit('connected', {});\n\t\t\tthis._startMockResponses();\n\t\t\treturn;\n\t\t}\n\n\t\t// Build WebSocket URL\n\t\tconst wsProtocol = window.location.protocol === 'https:' ? 'wss:' : 'ws:';\n\t\tlet wsURL = this.baseURL.replace(/^https?:/, wsProtocol);\n\t\twsURL = wsURL.replace('/api/v1', '');\n\t\twsURL = `${wsURL}/api/v1/widget/livechat/ws?token=${encodeURIComponent(this.sessionToken)}`;\n\n\t\ttry {\n\t\t\tthis.ws = new WebSocket(wsURL);\n\t\t\tthis.ws.onopen = this._onOpen;\n\t\t\tthis.ws.onmessage = this._onMessage;\n\t\t\tthis.ws.onclose = this._onClose;\n\t\t\tthis.ws.onerror = this._onError;\n\t\t} catch (error) {\n\t\t\tconsole.error('[WebSocket] Connection error:', error);\n\t\t\tthis._scheduleReconnect();\n\t\t}\n\t}\n\n\t/**\n\t * Disconnect from WebSocket server\n\t */\n\tdisconnect() {\n\t\tthis.isConnected = false;\n\t\tthis.reconnectAttempts = this.maxReconnectAttempts; // Prevent reconnection\n\n\t\tif (this.pingInterval) {\n\t\t\tclearInterval(this.pingInterval);\n\t\t\tthis.pingInterval = null;\n\t\t}\n\n\t\tif (this.ws) {\n\t\t\tthis.ws.close();\n\t\t\tthis.ws = null;\n\t\t}\n\n\t\tif (this._mockInterval) {\n\t\t\tclearInterval(this._mockInterval);\n\t\t\tthis._mockInterval = null;\n\t\t}\n\t}\n\n\t/**\n\t * Subscribe to events\n\t * @param {string} event - Event name\n\t * @param {Function} callback - Event handler\n\t * @returns {Function} Unsubscribe function\n\t */\n\ton(event, callback) {\n\t\tif (!this._listeners.has(event)) {\n\t\t\tthis._listeners.set(event, new Set());\n\t\t}\n\t\tthis._listeners.get(event).add(callback);\n\t\treturn () => this._listeners.get(event).delete(callback);\n\t}\n\n\t/**\n\t * Remove event listener\n\t */\n\toff(event, callback) {\n\t\tif (this._listeners.has(event)) {\n\t\t\tthis._listeners.get(event).delete(callback);\n\t\t}\n\t}\n\n\t/**\n\t * Send message through WebSocket\n\t */\n\tsend(type, payload = {}) {\n\t\tif (!this.isConnected) {\n\t\t\tconsole.warn('[WebSocket] Not connected, cannot send message');\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.mock) {\n\t\t\t// Mock mode - just log\n\t\t\tconsole.log('[WebSocket Mock] Sending:', type, payload);\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.ws && this.ws.readyState === WebSocket.OPEN) {\n\t\t\tthis.ws.send(JSON.stringify({ type, payload }));\n\t\t}\n\t}\n\n\t// Private methods\n\n\t_onOpen() {\n\t\tconsole.log('[WebSocket] Connected');\n\t\tthis.isConnected = true;\n\t\tthis.reconnectAttempts = 0;\n\t\tthis._emit('connected', {});\n\n\t\t// Start ping interval to keep connection alive\n\t\tthis.pingInterval = setInterval(() => {\n\t\t\tthis.send('ping', {});\n\t\t}, 30000);\n\t}\n\n\t_onMessage(event) {\n\t\ttry {\n\t\t\tconst data = JSON.parse(event.data);\n\t\t\tconst { type, payload } = data;\n\n\t\t\t// Handle different event types\n\t\t\tswitch (type) {\n\t\t\t\tcase 'message:new':\n\t\t\t\t\tthis._emit('message', payload);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'typing:started':\n\t\t\t\t\tthis._emit('typing_started', payload);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'typing:stopped':\n\t\t\t\t\tthis._emit('typing_stopped', payload);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'conversation:updated':\n\t\t\t\t\tthis._emit('conversation_updated', payload);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'conversation:closed':\n\t\t\t\t\tthis._emit('conversation_closed', payload);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'availability:changed':\n\t\t\t\t\tthis._emit('availability_changed', payload);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'pong':\n\t\t\t\t\t// Ping response, ignore\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tconsole.log('[WebSocket] Unknown event:', type, payload);\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tconsole.error('[WebSocket] Failed to parse message:', error);\n\t\t}\n\t}\n\n\t_onClose(event) {\n\t\tconsole.log('[WebSocket] Disconnected:', event.code, event.reason);\n\t\tthis.isConnected = false;\n\n\t\tif (this.pingInterval) {\n\t\t\tclearInterval(this.pingInterval);\n\t\t\tthis.pingInterval = null;\n\t\t}\n\n\t\tthis._emit('disconnected', { code: event.code, reason: event.reason });\n\t\tthis._scheduleReconnect();\n\t}\n\n\t_onError(error) {\n\t\tconsole.error('[WebSocket] Error:', error);\n\t\tthis._emit('error', { error });\n\t}\n\n\t_scheduleReconnect() {\n\t\tif (this.reconnectAttempts >= this.maxReconnectAttempts) {\n\t\t\tconsole.log('[WebSocket] Max reconnect attempts reached');\n\t\t\tthis._emit('reconnect_failed', {});\n\t\t\treturn;\n\t\t}\n\n\t\tthis.reconnectAttempts++;\n\t\tconst delay = this.reconnectDelay * Math.pow(2, this.reconnectAttempts - 1);\n\t\tconsole.log(\n\t\t\t`[WebSocket] Reconnecting in ${delay}ms (attempt ${this.reconnectAttempts})`\n\t\t);\n\n\t\tsetTimeout(() => {\n\t\t\tthis.connect();\n\t\t}, delay);\n\t}\n\n\t_emit(event, data) {\n\t\tif (this._listeners.has(event)) {\n\t\t\tthis._listeners.get(event).forEach((callback) => {\n\t\t\t\ttry {\n\t\t\t\t\tcallback(data);\n\t\t\t\t} catch (error) {\n\t\t\t\t\tconsole.error(`[WebSocket] Error in ${event} handler:`, error);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\t// Mock support for development\n\t_startMockResponses() {\n\t\t// Simulate agent typing and responses\n\t\tthis._mockInterval = setInterval(() => {\n\t\t\t// Randomly emit typing or message events for demo\n\t\t\tconst random = Math.random();\n\t\t\tif (random < 0.1) {\n\t\t\t\tthis._emit('typing_started', {\n\t\t\t\t\tconversation_id: 'conv_1',\n\t\t\t\t\tuser_id: 'agent_1',\n\t\t\t\t\tuser_name: 'Sarah',\n\t\t\t\t\tis_agent: true,\n\t\t\t\t});\n\n\t\t\t\t// Stop typing after 2 seconds\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tthis._emit('typing_stopped', {\n\t\t\t\t\t\tconversation_id: 'conv_1',\n\t\t\t\t\t\tuser_id: 'agent_1',\n\t\t\t\t\t});\n\t\t\t\t}, 2000);\n\t\t\t}\n\t\t}, 10000);\n\t}\n\n\t/**\n\t * Simulate receiving a message (for mock mode)\n\t */\n\tsimulateMessage(conversationId, message) {\n\t\tif (this.mock) {\n\t\t\tthis._emit('message', {\n\t\t\t\tconversation_id: conversationId,\n\t\t\t\tmessage: {\n\t\t\t\t\tid: 'msg_' + Date.now(),\n\t\t\t\t\tcontent: message.content,\n\t\t\t\t\tsender_type: message.sender_type || 'agent',\n\t\t\t\t\tsender_name: message.sender_name || 'Support',\n\t\t\t\t\tsender_avatar: message.sender_avatar || null,\n\t\t\t\t\tcreated_at: new Date().toISOString(),\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\t}\n}\n","export function applyliveChatCustomStyles(options = {}) {\n\tconst {\n\t\tprimaryColor = '#155EEF',\n\t\ttextColor = '#1d1d1f',\n\t\tbackgroundColor = '#ffffff',\n\t\ttheme = 'light',\n\t} = options;\n\n\tlet styleElement = document.getElementById('product7-liveChat-custom-styles');\n\n\tif (!styleElement) {\n\t\tstyleElement = document.createElement('style');\n\t\tstyleElement.id = 'product7-liveChat-custom-styles';\n\t\tdocument.head.appendChild(styleElement);\n\t}\n\n\tconst adjustColor = (hex, percent, alpha = 1) => {\n\t\tconst normalized = String(hex || '').trim();\n\t\tif (!/^#?[0-9a-fA-F]{6}$/.test(normalized)) {\n\t\t\treturn normalized || '#000000';\n\t\t}\n\n\t\tconst num = parseInt(normalized.replace('#', ''), 16);\n\t\tconst r = Math.max(0, Math.min(255, (num >> 16) + percent));\n\t\tconst g = Math.max(0, Math.min(255, ((num >> 8) & 0x00ff) + percent));\n\t\tconst b = Math.max(0, Math.min(255, (num & 0x0000ff) + percent));\n\n\t\tif (alpha < 1) {\n\t\t\treturn `rgba(${r}, ${g}, ${b}, ${alpha})`;\n\t\t}\n\n\t\treturn '#' + ((r << 16) | (g << 8) | b).toString(16).padStart(6, '0');\n\t};\n\n\tconst darkSurface = adjustColor(backgroundColor, 12);\n\tconst darkSurfaceAlt = adjustColor(backgroundColor, 20);\n\tconst darkBorder = adjustColor(backgroundColor, 34);\n\n\tstyleElement.textContent = `\n\t\t#product7-liveChat-widget {\n\t\t\t--color-primary: ${primaryColor} !important;\n\t\t\t--color-primary-hover: ${adjustColor(primaryColor, -10)} !important;\n\t\t}\n\n\t\t.liveChat-launcher-btn {\n\t\t\tbackground: ${primaryColor} !important;\n\t\t}\n\n\t\t.liveChat-launcher-btn:hover {\n\t\t\tbox-shadow: 0 8px 24px ${adjustColor(primaryColor, 0, 0.3)} !important;\n\t\t}\n\n\t\t.sdk-btn-primary {\n\t\t\tbackground: ${primaryColor} !important;\n\t\t\tborder-color: ${primaryColor} !important;\n\t\t}\n\n\t\t.sdk-btn-primary:hover {\n\t\t\tbackground: ${adjustColor(primaryColor, -10)} !important;\n\t\t\tborder-color: ${adjustColor(primaryColor, -10)} !important;\n\t\t}\n\n\t\t.liveChat-compose-send:hover:not(:disabled) {\n\t\t\tbackground: ${primaryColor} !important;\n\t\t\tborder-color: ${primaryColor} !important;\n\t\t\tcolor: #FFFFFF !important;\n\t\t}\n\n\t\t.liveChat-nav-tab.active .liveChat-nav-icon,\n\t\t.liveChat-nav-tab.active .liveChat-nav-label {\n\t\t\tcolor: ${primaryColor} !important;\n\t\t}\n\n\t\t.liveChat-home-view::before {\n\t\t\tbackground: radial-gradient(circle, ${adjustColor(primaryColor, 0, 0.08)} 0%, transparent 70%) !important;\n\t\t}\n\n\t\t${\n\t\t\tbackgroundColor !== '#ffffff'\n\t\t\t\t? `\n\t\t.liveChat-panel-content {\n\t\t\tbackground: ${backgroundColor} !important;\n\t\t}\n\t\t`\n\t\t\t\t: ''\n\t\t}\n\n\t\t${\n\t\t\ttextColor !== '#1d1d1f'\n\t\t\t\t? `\n\t\t.liveChat-panel-content,\n\t\t.liveChat-view {\n\t\t\tcolor: ${textColor} !important;\n\t\t}\n\t\t`\n\t\t\t\t: ''\n\t\t}\n\n\t\t/* Dark theme is now handled by CSS custom properties in liveChat-core.js */\n\t`;\n\n\tconsole.log('✅ Custom web chat styles applied:', { primaryColor, theme });\n}\n\nexport function removeliveChatCustomStyles() {\n\tconst styleElement = document.getElementById(\n\t\t'product7-liveChat-custom-styles'\n\t);\n\tif (styleElement && styleElement.parentNode) {\n\t\tstyleElement.parentNode.removeChild(styleElement);\n\t}\n}\n","export default \"data:audio/mpeg;base64,SUQzBAAAAAAAGFRTU0UAAAAOAAADTGF2ZjUyLjExMS4wAP/7MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFhpbmcAAAAHAAAAHAAAIwgAHBwcNDQ0ND4+PlNTU1NfX190dHR0gICAioqKipSUlJSdnZ2oqKiosrKyu7u7u8bGxs7Ozs7X19fX3d3d4uLi4uXl5ejo6Ojr6+vu7u7u8fHx8fT09Pf39/f6+vr9/f39////AAAAAP/70GQAAAFZANHlBAAIMYAaXaCAARjV1Un5yIIKOJpo/zmAASTQWo7TdQAWD5toISgIYPg/lAQBCJw/+XP/UcKHFg++oEPwQ5c/9Rz+IAwCUm47pbZVAAROD4fBAEAQBAEw+XB8HwQBAEAQwffDHBM//Ln/iAEKwf/Lv9QIHPhjQAUrwgq4irMio5s5BUEAAAHCSeMAiNK062DzEZqDg43EwYIywBjGwcFiG8BeOXiQFAASMAAQRyHqBtpfAbggmYC5BhCyQyoANAEQsoSiRAZEc4oichtjvICKXDpy4bpkNJoXw1xzCLEwPouEsQMiZPjoEBDw4iZJUeSdNEFEoQIkCCEabjjJgrk0meMVGdJJOmx8qGxECcKZfTZRsmaIPdlysyZxRui91rqp7sv1TUwupJd/+3//onkM66K0mzVX//////8ydhEqptEMhmJZZVf3aRpEAAAFKRxTJQBaadeApgkSDQ1AQCpFGDFQEHQVfpsrtV+/z1gdSkjncSxSCceMSpHAuhKaWPxiG37ZjEW2o3XkG+6+pX+cZU6F6MX4s6EapLF/LL6lLZp7tWQWPj09HaTdNeltynw7jc3nu3P0FJAmeu43JqrUlcwr/Rydbmn1F/KqZXIAEAMkdbRou7ktcejaANCJAAlFZ4FRga9Rg2UNPqzFDTK/JF4lEjEo09F7NRDDECs5Y4DAY5JvN/EzKTZIIwMRRtNOGDSgk4VhBxa1pu4MJi04KIDFh4IcgcWJhmICJatIxBYWBQMALceRMFi67EvgcGbdmIRFOaG2VtPzccu+XJHgMtokMrl75iGZ3G5K8J+RxS8Dg9HtYBSsMAUSwEANxhuzTQ1Cqt6ksWXUqzytzNW3UHWwvRrk3bschmMwmaprXYvWkd+Uw/fj8rfyUu/EYHfySRV33Dh7Vret67qZ3S4f/9y/eWPxStez5n9vDd4LAwxk7/8LmlRxAAAgBVaDWNKCECikAADaBkbyhTdJ9AwALxiACrkxlRgIBqGRIrDGVBEw43AaJGBAGcJAQGiiAQQQOCr06EM9ZMDClaUEIiAodogZokISAGAhg8OEiMUYkQn1LVTI6dSJZctRJxCmZpW7TTWqe3hJJ6H/+9BktoAH0FVUfm9gAOeLaj/NaAAN/QFl/YWAIVwK7H+wMAT5bMWYy48/uaf7KZ7zn/moAlUj6Y0GW9Wcj5YyjU3q3W7vdmKb64D4wQv5UkdeWT0mrdLLbEq1v6kxhUy/95u5Bb9v/HoEfyP5Ou7Fa/VxwlXfq1eYfr/////xvZ4WJufl9THHPDLCmy/63aXYSWj/C4g//qb7VwAARXIiQR0NbJZURqcJH54mvNKXZpmUbACzEJJcteXbANB2YSXLL73w1zH6LbkPaRYbpNt7OO2W7rj6fui4t0Pjq43Q/v/+adzVcOdDr28f9w2Wdy5RPWXNmqKlHtZMnhYYBU/+txproyhDW/HJ/K6gAO2kkQA7v4IOiMyRrjYWrjxOU3Dk3DmefQiXGdNjEVgADik2LDDOCBcWMsNfVrEZwHGjfEw8NA0eBpYw80kkQi1KFKaGUKepd+3/0DK7EDnbt7U1XNeQEAVHf9kqBLzjxchaDngEDJaeEpfJ9oegJMJNIEqM0SUDozTc5R/85vvqZWKAgIUMfrSOzzpzjBdoTOJBsKgu4FhYGSRVY1Z5Sv8kVAoiFjQMBV36Hq+xJ/rIAADtXe63ACLsC0EudKI+PvNYWozM2vT+MFighxHKtMkGLP9V3n2v4OsZ/+i5WNZ5AbMuzfVnVq5VdiolNpio6q3tfysZRKgJwqWIhoekJp/6Ku5UQADPT2xtM6skVsL6KlTcpIeUOZk7hODETSqZzJfApYpusk8SP94xv+PLP/gmKT4DkuZUkmxnl9I+KZBZYc1IsY0FrTpqfaPJIvDCgg2SKsIpVStst3hvu9r6qP+ui/jlUQFF+3sjYO5OmwqbpxT1eFpa43QKABtkdSai5slNSzq0r6lDMJC0a4ZTymh555BgUPgZzQ4VBWKhy13G2VhsCH5R4OMsTWzV3+nobKeCAAZ997I3CudEoCwlmso4tZRVajMqeGWnRiTuKxkFdJug655kFnkj9JZ1cv3po1roaF1qQ9ZmBCAAaSKjTGLsrqSFwSeD7TQ5BeaJKOtqtegdfu08KKta9TmppaKVKbNRgAAdr/tXGB6CSCPl1Lelt7XW7T01ifVk2zjE1bLW839346gs//uAZPGAAtMh2Hn4GlhT52rfPeJdDAirVe28aaE2Dmr9tY0siLho4mUCDpWMFgQGgu42pLnLawWb/bpWNprQxluj9TNaXJSgOIMS1KzM0TRIAAAABFakEh3cgBQEGVwwSAstoCBiYpGhkVAplAwJmPAkYLCBkEDgYHpEhgdJRk+AeYkqaA6eReiyrxNIvmnxxStER14EjE2/9hljaO2siCoAhzKnpuRt269O0veD7Pq/uNbdzt6jfydzch/Kkpf1/dcqV6ta/y3Y1MWIft8iMqtZzUahrWPO71nqvG43fsROXu5Y3KZJGnRZbEH1clnOWX//OZ/+2WTnxeAH4ZfTSxQdl7ovLbXkoM0tW5UzXqqe3b9bPWP/+H7q59vrHa/P1WVuvIHDdeijc/LKqG114l3Joq5VSQSsRUcUBhEnmWs49v5f///////////////y/mff///////////////3Ad21LEZyZxNSU0SUaZb/+8Bk6AADBiBVfWGgCEbieq+nmAEjzhFJ+cyQBEdCKT85gkCgwCAAAAA6AP0AywXlGoy0hpYVBKCMGkNVAtKWyXWFQkQg10C3jJ4dCWsMS6ezji0j3yF6W6MVa5lLJbaXvIFSNMi8Vdp4aejr0kYgJ/IpLXJpq0lmN4S38scPty+3K4brc1En1pL+vzx/k/bwt3IYllNldscl0R/HlzH9/zJ2IEd+3kzt34vWlVWVWqbn5Z/njz8O/+aXAXCHDZovNNc0AZypebBMlXypavJwV2u4yFL1vG4qA//93+9d/ff/Fg5dCKWEFHZcd41TwOim499QNk7qNZnHhm2uvA4NA5XIelTssq//5////////////////KFL24Op////////////////I3ifN9VM55RBBXv+tQAA8aAYzpLaSOxTi1EgJ6SJFPyUphVqcwGS1LvW/Hx+27zX1/f7Y2w5rdPTwuJkLERYGnMZHg0LksCgqGoKvEWkqYTKtOnRLvoGgFPadXgqdiKxbu2ws92sNCIOHN0xkAtG+saAAuK4rNZxyl0v8x2rfuXaCm7ruwZLSEFAQkKru7B2WMZy0qeUZjNZr5eXDP+8VVSOR/5cly6S3120bi5SXY5P/1/UrllfUiyZj+qtq/Gz6oCQis9gNG1u21A0eEUXlKZgMvvdIkmDwsbcNCBMVljFm2IIcE8ACMnAIqJ5o4ovJhYfY7tmbWsu4ZKGwoGj1xMcMFgkXCSxoCoYgLnHOeXrZ732rlR3aaea7yj3pmotxSf7xyc1Dh+5TFr0wqwIVP21sSQbmXDVCyWUShytfMIk5hICPrNcf8gAU0jNh7zmBR7zKBdJnMh5iGmKwCw2AhFFLET9V5UhXa9tKeiboUnWpVnXt+hNyqNSCo/9lbTHi4JEl8E7XYjqAVkytmTqv480FwBHphkz+gCImRlt/l+zgEGBYUUwqFASIlSa4kDqXSQjZP/7kGTXgAMhHFV/PMAIZMpqf+yMAQuYW1PtMMchLYiqfYeY5BKRPlwyPGm0h57mTRatw8sKFSxJ6Qkii3cxr7t2npUe5jiBHD36yNAFjaTGCLBODkTI8F3rOs3tJq5ibOTHBB/1e77vxB9BcDBRj1iri4ZU1tWpYCaAHxVLR88FRh8YzNlFoqoARURTEfrZ7RoAkQhVlVWs7kJoNAICEvqiYTnEAh83wMwqBEKljl/QAQUBzQU23VCwbQiboHCIi7pAGW0gucKh1qaVodzUER3Dg1yo+yGHJ6G1rvqj2zdBAmDJmdP5O0copn7ffNlat8dijhMpej6btfn+oPJ4otdnkPadqff53u42cq/fnIcll53LGayZdEXZjbsvb/OfzuH+/E3F5unzldfBurLXidmAHmijdn7/+c7zm8d/lc5v6naliUUlNv/y3W+rlvmv/X6/f4frncYcoaOnjfX7tWOzF6knJa/stjkZlU1Wl0rpsqGXRX/73////////////////s4D//40JO7lCKrIQMosxW5slIAgAAHEwqUBMBpIRP/7wGTdgALpEdV9YSAISyJ6j6eYAR9V1U35zJID5kInvzkwAAUOswQKYfbgRGMcAS2mShYBtVW+/ZQGTCYcC3krCfxeBuQDTFYiw7QDkA3ALgAuFESiPhMeycGTD1BC4g8ghGjIkcXDdMqkiLGaGZUctjNFMTaKKtSkETR3WZuX0lHTh0mK0a7pEmUCQIITjD2QIZYS8cQyouH/RJwzNzM3l84gMaLhGeGVFcE5jmCkhX0mb/OEUYihiZrL58g5wVsOsaJASAkYRUuECJoXN21Mv8qEUPG54m3J9SB8ihoRA6LWOcLJGUEJR9E0WCLF8ZYiYuUY0dv////m6Zu////5HEyUi2pay7VlQCu/lSLHr5UCnC3EtWSFFyPmU41ejDtVSXOUIxUVBqppIkDQKAaU8ccc4zuLqKthvPFLw59cO5bp17S1EFlKlQyBT6abQESjyoKuDoVd3//lnthVblKF/drhqpZv7hlUE//+scGe4n4Q4lSGBcEogF3elPhZTsZ2coDNmWOCtBE3fZz7SILsNB1AkWdqmlMDZI1BUBCNQ1Iul4GD7Rc2DjR0iapBWDVosxqlte1v20vfURLf/pa7ynUzMPtbFGA3zySgiGps6D5zr7ODoUF4smCtcWz3bTaasLlq0xTAYpCLC6X0UmU3depWpSj6zqy8PFHhQHgfEa1PKElkGbaF8UFai7TQooacDSXjrTaPFcUSauGYzQNfJEyAKhWG8FcP8viIFAa50N5ND2W0Mc2JVsuY1Txq2OTWnDBSlV9tXD6X6t1yaCwkHB087asUePLgy425hNiFnUtG7LhWCzwEscEpuWlXf30a6hqLdiEjBKRtEAf6BBmCnAObOEnDlBUeEIBjAyhrUkE5q9kUgpSmOAgBgbI32T2TCCG4o0FgXINWfFCixcmUMXEXMbKg0oLIcr1pa0Vz//qS7y4YGU5LZGUAf7FhhZpvYfa4mE4zyQA0//uQROqAAvohVP89AAhaQlq/55gBC1hzT+wxqWFgDOm896zkkHhHC3zY4TW6KxZeeKijTMT7x9fOHdIcBkxmlbM0I12nnqZs5Z+/n5nMqWbjMfLM7/+hX3X+saipUxAhEkciIGjzqgQ8URCgNZstVheWBmVAKBo+ftWTNXCKebWrP24SjE0YX29v5rH72d81aRJL/w6Z0nn0YzJaxpb+fnhAsI6ApelH2Mtp9vt1DCwzABAL11QSiX4mGFSvLH3+axdogBgOu+7zpu1mf4VhdI8PSi0IpwO5p3mbT4DLsWT1tw4JllrCREqdrljZZEIzFEvOGBZjkNfTS51Skl3dSgiYVDETG66kCUJWoGUHMHITiA/JzUAURQYJzmIRmFM19h5usH9KQ60PYKShp//ufqhGRKRKlKNjkJjUkwezNAFODQxo04gu0SBwnWFXlnpE7iuLatTZf/7nt1hDw7qKoTkjbaAK1DTUZhRnskXFHIsWikTJ5qGF7W51ruOMyXzpaqqJ6kSTRDD0RBYsKMYxjTlQsA5rchxBj6GiUY1kPfrt//uAZPKAAnoa0nnsEchPRppfYQNdCnTRQ+wka4FHked5hY0oc39Zo0OZGBFVMoHsnkrloTUGaFvYGZA8gFU6wcxWSli08ad1Lrv5C433TW+XUieWDO1yB8LTvTBlaWe5n4KVy2dEBtMkBIJWBlbp6ieU0VS6BUkmtFibBzJb/ctv+xIv6WqiTUciSKAt2D0DUKllO0vVsrMZw5hcotN206zXfvums4xvL1c+cvHmt+PuVuP20DNmRpsP2P2KG7zFDa1RVy7atP/vmglphUU0P/+kRHjQjPDpb2fTSipOIQpCAyNjl45Ep59YxWDiLcUo54i9geA4cNCdZ0QhJQTACBANNBoPJaRIhxBahgVS6hSSYCYXFFPmXCwrqJJ83dTejV/0Vf0H+9txKlVAK4QEiqv5c6amObwOV9meA8s3x3bC/lGMJIS9SgtJpbzPgRetZcsOXbRGt5cfMu61n9Se1QS0w0OjHLJHEwDzhE3/+4Bk9QCC1SVPcewaUEkDqg89Y0oL9Ks5zLBpgQ8OZ7WHmSjE0DOWD1UB6x2selkCOsgsdBIhQ0fIGHnQ4AT4fUBlOE5sGSQ0MBdoEcKhaSFQK5iKC7T0hLGj5oiYWbQcclKOlnYV4rqssFEC6vDOpIbcaSAAWlmLGECRI+zfOsT4gSrqN0lxgvDzj73j2xaLJn42lK0jKPmSqSzF7G5gxSGgeLkBtj3RVifNmRnZFXiFv/VVmHh3RDM42okgDg8ewcCjcCIB0JSwqFjEyQ2L8IuzGm8YVQnVfFrhVQGCYcHoED0LtuDgCLBkPrWgNH0MYEBebFrnCNgTeGgmpuoeU1n8HxQqw1Udq9O3+iea3JIfWIB/ZGr8taNAbzQw+0BT8VNDEHASHaccmmny+p+pvUJQ2exjvPOVk/GnY7JHrfu+Qz3uOOGBY+CYy9r311KaFqhZZJyjHRf0e7+pau7/q0n2ldaUKQIBzXwCEv/7cGT2AALbEE9zDBnAOsI5vGHjOAqoM0HnvSTBHw6nPPeNKJ4wSnnL3Pfd0nkVIfx3OCLRicV7A+zrEd7BzqJbZZ9dkRpMxNApobQLtadQYMAUPBtalBgIBk0YOFix6y01dsQSQxAoj+3bb/P19nq8w6RdlrttScROZCmzUN6vAN+s/1SGFiAeZhiCx6whRcskuRZaViO4OBIIBr6vq4qvOtRQqJ6tnSd1Kczt//Rr/f//6ChnZlVVORpJAgpIloYiZQpciVtOkowTmgIBk0sJxk+ZPLaMyJ9zT3rTRVH5MzmrZ5KgIgciJWFDp95c5Dx2IRUyMIEUCoKqwyYAwoLoI7/0e6N010Q/+hd366xSNkhAH1CvSYD9yiZrYQzAIrgxeWh9ViBA7AoZ6bTtZ5ywmoQBWBohn6D/+4Bk5oASwhHO+68ZwFOEeZxtZkoLcHE3rTxpQQMO5rW0DShLNF0HMvMgw1KeroR/++t/5IVDj9u1jaqaUDUVzxaodFpuUs0SJRNxbDxbFw4rhYiPI1MQAnbTE2bbpkfjT/Oyc8c5yj4jU55x70An0AeJoKHGi0AkZNrWGEzhCJlUXub230ep32f6mbKTttrHF/cAAjJcXiXKZlY2UkK2ISVhcgeynDULl55lV9lCtdjnmgpfjUGrH1B96Tp0KCwUAd4mRPElrkf7f//6agiHdXVlRxJIAAXC5SiMAwSeHlBKGPPAiIRwTqhgmRAi5TtLq7Op6lv14pszASS/+hUic05F4WUCt7c/UuglYV9KXd2n5dAv2K29teToHq5/8N4Eu8RKxDW2SIAANEw6hD6sj16yu8O0AD5J7LqnGmDtxa7Xq7SIexnpFZKdht54Z4Oj1E2y0QGJxJBHZNEzYYFLKd/G/divLiNrJZYr/v/7gGTnAAK6Gc57KTHAQSOpvWGDSgrEXzWMPMcBAg7msPSNKAQFBtAIyBJkLlvLzVSrYwJxwewpn8lp6s223beynSZ0IneseWpnmooQHg6KFgOJgkPUCACALkIQeCQq++iu7c/bDdlNOK4sRGKaw0zpZc+38vkQiIeImIb/Wk1cZLK7EB43TskkqRG0FhHduBqDZHDdKisxWGAZN5ple7KJuBXtLQ1p7l0b+NPdj5Kb/57v4ZrqkbMbaDwAM6rBajuLsj4Ud2RICsnXF2PxsK2tSiX8diXI1qQ1JigPjaFs8zr2oEK8K336e4xbnJcH47+f79qLDdyD/+V+3tqWm5e1D2v+X5vvP398v/9od95G6lX656mgdnhndmVyRogABpch8ohZhELgTFMkSISHhFpFyyFSe+MiIj9wJhMqeBxCcGhyhCk8YOE2LF01ul93eOVG0j267bOVyNgAATvEkEaOaidgMSH4qyPgUbFy//twZPQAEpEsTnnpGmpHRHn/PYNLSwRzM4wwaUD8ieg9hIzlVAbKoTUn/3D7LGpKCUdiZUPlNrbOoOUDAXBqRPDGgmFVtTZWH3OeOn6hHOdChrv99rYmwI7UdNMzqbakgHB6wqihck19DBtNwP4pQ7NMgx/+1EDOb2C5vMbrmiQp32Mb/0NyRpstUrAB+y02vpp7I7EAQ9MW04wMDj01ikpOXWVnDNiw9K6jYgGh8Pmf3S8+pOab1sihfCWIrIoQSizTah9rDondc6MYcUX6WrGhj6lHPfa+i7vQ1hWpFA6SGlmroBNdnSZWrVLRV+MUQAgXJ6OGnhBrOaWi5oxeVypErF0q6rlTBQVvMngOGQcclwfoYLrizqkvTAos7ePFyviz5XXrGFWdC9mLe91XV4tnMqoAeBNrD//7gGTmABL8F0rZ7BnCPWHZ3z0mJwjseTWnpGlA0o6nNPQJLbTse1HtTVAsiGnwADAQIM7GGcgCw0iUCxE68DAUXOgcHA4gSgcdckYeWgCAiQD14HWYDzww8Vtzlr0FrKh+t+3FEaarPoa8lCqj1aShkASbSlk64mSs7XS7zNsOfjErzKEEhaJxczc5LuxHRpS7TJ7mR0RmCTg1TRFnjmk6fz8hbahvY1KF/////o/61fftqpUAEJSosR2aohuAyWwgO4P0Nshk1pZpUw9zMHCo5RFIGccjRqlgAuLHlC5ZHffCdO0s8eold5tIxaw7z6EZZ9wzffr2baG7hVjljWRSS2NtAAAK1xFubUtCh1rnrEKMFfztMiFchUPMrEfp0QrU4K8rB5qBiyEzLyCrUymqjdLAyPAiX8U5VZVi3NKwqFA+LhAsDwdB1YfDpNQKsOPDg9JLLgEMVC1TRy7dGlTmFz6lNQpDUXJTW6tJ//twZP4AEtgrSuNJGmBOo6k4aMNKCsA5KSwkRMD+jqUxkxUoWjcnetr3ossDa0aH0L3kmq/CJJtG2joTVrFHEQzo4DGAI2Ql56ZEDaaXMWv/JJtdZRP/2bP//tfZq//0qrEyUkn/wAHcC0113Nq8luMSKgQIkJlUNEcgT1erIi5L2mSZjUmbYdCAbi6ljBom3/bR2f/bZ///p3ej+hsQlptHIAAsz9aja4E1e7h5a3d6KUmRKHuCokDY6405AoEK0oak9UqZGJqoCM3qXEai7IfdVGqwYVNgAoPBprDLgbnKTDRZccx3/+5/yW27/6v//s//6hRIbmgHpoQlYp81tSaKCweNpfT3OQ4QEyLRqUmkuFbWVKAACNmhlQQJFBRB3abC/DhKBDY26rMLy/9qff7Wd1Hf7l/7///7cGTogRJpE8pJ6BHALUP5nTxiSwnkOScnmGTAupClJPCNKP/+vYloJAA4ZFjoWBXEhWPsCTyrPkf/VSrTEEk22LwIs0qCJVR4ChMPygSAPknFIoJtQTH/AQJecQ5IDGuj/2y1TEFNRTMuOTkuNVVVVVVVVVVVVVVVVVVVpAAAgAAAPiQJHPs/5FKgoQCgAABUiS+nyxsaAadglwQFUlUrmUxBTUUzLjk5LjVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVcQAAAAIy8NYgAAAHlp56ACNuQRQWWUqTEFNRTMuOTkuNaqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqrgAAFNcQgc0AAAC14AAlbgmdVMQU1FMy45OS41VVVVVVX/+1Bk9oER4htK4yEZwCfBeVw9AycF4CEnLCRigHsA5WUAgARVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVgAAAS6HUNUxBTUUzLjk5LjVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVKTEFNRTMuOTkuNaqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq//swZPOBEUQESTIJGAAXYLk4YEMSA1AHLYwEACAxASTU8QAEqqqqqqqqqqqqqqqqqqqqqqpMQU1FMy45OS41qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqkxBTUUzLjk5LjWqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq//sQRPAHMH0BycjpAAgK4Dk4QSABQIgFJqWAACgZAGUVAAAEqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqTEFNRTMuOTkuNaqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqr/+xBk6QdwQAFJweAACgYgOSUwIAHAsAcnB4QAKAoA5ECwAASqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqpMQU1FMy45OS41qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqv/7EGTmh3A7Asop4RAOBGAZNRQAAUB8AyahAAAoBwCjwLAABKqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqkxBTUUzLjk5LjWqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq//sQZOEH8CYBSajgAAwAAA/wAAABACwBKAAAACABgGVAEAAEqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqr/+xBk3g/wAwDJgCAACAAAD/AAAAEAAAH+AAAAIAAAP8AAAASqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqv/7EETdj/AAAH+AAAAIAAAP8AAAAQAAAf4AAAAgAAA/wAAABKqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq//sQZN2P8AAAf4AAAAgAAA/wAAABAAAB/gAAACAAAD/AAAAEqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqr/+xBk3Y/wAAB/gAAACAAAD/AAAAEAAAH+AAAAIAAAP8AAAASqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqv/7EETdj/AAAH+AAAAIAAAP8AAAAQAAAf4AAAAgAAA/wAAABKqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq//sQZN2P8AAAf4AAAAgAAA/wAAABAAABpAAAACAAADSAAAAEqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqo=\";\n","/**\n * NotificationSound — plays a soft ping when a new agent message arrives.\n *\n * Default: the bundled notification-sound.mp3 (inlined as base64 at build time).\n * Falls back to a Web Audio API synthetic chime if the file was not bundled.\n * Override: pass `soundUrl` (MP3/OGG/WAV URL or base64 data URI) to use a different file.\n */\nimport BUNDLED_SOUND from './notificationSoundData.js';\n\nexport class NotificationSound {\n\tconstructor({ soundUrl = BUNDLED_SOUND, volume = 0.4 } = {}) {\n\t\tthis._soundUrl = soundUrl;\n\t\tthis._volume = Math.min(1, Math.max(0, volume));\n\t\tthis._enabled = true;\n\t\tthis._audioCtx = null;\n\t\tthis._audioBuffer = null;\n\t\tthis._loadPromise = null;\n\n\t\tif (soundUrl) {\n\t\t\tthis._loadPromise = this._loadAudioFile(soundUrl);\n\t\t}\n\t}\n\n\tsetEnabled(enabled) {\n\t\tthis._enabled = Boolean(enabled);\n\t}\n\n\tsetVolume(volume) {\n\t\tthis._volume = Math.min(1, Math.max(0, volume));\n\t}\n\n\tasync play() {\n\t\tif (!this._enabled) return;\n\t\tif (typeof window === 'undefined') return;\n\n\t\ttry {\n\t\t\tif (this._soundUrl) {\n\t\t\t\tawait this._playFile();\n\t\t\t} else {\n\t\t\t\tawait this._playSynthetic();\n\t\t\t}\n\t\t} catch {\n\t\t\t/* autoplay policy or context suspended — silent fail */\n\t\t}\n\t}\n\n\t// ── Private ────────────────────────────────────────────────────────────────\n\n\t_getAudioContext() {\n\t\tif (!this._audioCtx || this._audioCtx.state === 'closed') {\n\t\t\tconst AudioContext = window.AudioContext || window.webkitAudioContext;\n\t\t\tif (!AudioContext) return null;\n\t\t\tthis._audioCtx = new AudioContext();\n\t\t}\n\t\treturn this._audioCtx;\n\t}\n\n\t/**\n\t * Synthetic two-tone chime via Web Audio API — no file required.\n\t * • First tone: 880 Hz, 0–80 ms\n\t * • Second tone: 1100 Hz, 60–160 ms\n\t * Sounds like a gentle message ping.\n\t */\n\tasync _playSynthetic() {\n\t\tconst ctx = this._getAudioContext();\n\t\tif (!ctx) return;\n\n\t\tif (ctx.state === 'suspended') {\n\t\t\tawait ctx.resume();\n\t\t}\n\n\t\tconst now = ctx.currentTime;\n\t\tconst vol = this._volume;\n\n\t\tconst tones = [\n\t\t\t{ freq: 880, start: 0, end: 0.08 },\n\t\t\t{ freq: 1100, start: 0.06, end: 0.16 },\n\t\t];\n\n\t\ttones.forEach(({ freq, start, end }) => {\n\t\t\tconst osc = ctx.createOscillator();\n\t\t\tconst gain = ctx.createGain();\n\n\t\t\tosc.type = 'sine';\n\t\t\tosc.frequency.value = freq;\n\n\t\t\tgain.gain.setValueAtTime(0, now + start);\n\t\t\tgain.gain.linearRampToValueAtTime(vol, now + start + 0.01);\n\t\t\tgain.gain.linearRampToValueAtTime(0, now + end);\n\n\t\t\tosc.connect(gain);\n\t\t\tgain.connect(ctx.destination);\n\n\t\t\tosc.start(now + start);\n\t\t\tosc.stop(now + end + 0.01);\n\t\t});\n\t}\n\n\tasync _loadAudioFile(url) {\n\t\ttry {\n\t\t\tconst ctx = this._getAudioContext();\n\t\t\tif (!ctx) return;\n\n\t\t\tconst response = await fetch(url);\n\t\t\tconst arrayBuffer = await response.arrayBuffer();\n\t\t\tthis._audioBuffer = await ctx.decodeAudioData(arrayBuffer);\n\t\t} catch {\n\t\t\t/* failed to load — fall back to synthetic */\n\t\t\tthis._soundUrl = null;\n\t\t}\n\t}\n\n\tasync _playFile() {\n\t\tif (this._loadPromise) {\n\t\t\tawait this._loadPromise;\n\t\t\tthis._loadPromise = null;\n\t\t}\n\n\t\tif (!this._audioBuffer) {\n\t\t\tthis._playSynthetic();\n\t\t\treturn;\n\t\t}\n\n\t\tconst ctx = this._getAudioContext();\n\t\tif (!ctx) return;\n\n\t\tif (ctx.state === 'suspended') {\n\t\t\tawait ctx.resume();\n\t\t}\n\n\t\tconst source = ctx.createBufferSource();\n\t\tconst gain = ctx.createGain();\n\n\t\tsource.buffer = this._audioBuffer;\n\t\tgain.gain.value = this._volume;\n\n\t\tsource.connect(gain);\n\t\tgain.connect(ctx.destination);\n\t\tsource.start();\n\t}\n}\n","export class LiveChatState {\n\tconstructor(options = {}) {\n\t\tthis.currentView = 'home';\n\t\tthis.isOpen = false;\n\t\tthis.unreadCount = 0;\n\t\tthis.activeConversationId = null;\n\n\t\tthis.conversations = [];\n\t\tthis.messages = {};\n\n\t\tthis.helpArticles = [];\n\t\tthis.helpSearchQuery = '';\n\n\t\tthis.homeChangelogItems = [];\n\t\tthis.changelogItems = [];\n\n\t\tthis.teamName = options.teamName || 'Support';\n\t\tthis.teamAvatars = options.teamAvatars || [];\n\t\tthis.greetingMessage = options.greetingMessage || 'Hi there 👋';\n\t\tthis.welcomeMessage = options.welcomeMessage || 'How can we help?';\n\t\tthis.startButtonText = options.startButtonText || 'Send us a message';\n\t\tthis.showAvatars = options.showAvatars !== false;\n\n\t\tthis.metadata = options.metadata || null;\n\t\tthis.isIdentified = false;\n\t\tthis.pendingMessage = null;\n\n\t\tthis.enableHelp = options.enableHelp !== false;\n\t\tthis.enableChangelog = options.enableChangelog !== false;\n\t\tthis.homeModuleEnabled = options.homeModuleEnabled !== false;\n\t\tthis.messagesModuleEnabled = options.messagesModuleEnabled !== false;\n\n\t\tthis.requireEmailBeforeChat = options.requireEmailBeforeChat || false;\n\t\tthis.allowAttachments = options.allowAttachments !== false;\n\t\tthis.allowEmoji = options.allowEmoji !== false;\n\t\tthis.showReplyTime = options.showReplyTime !== false;\n\n\t\tthis.agentsOnline = false;\n\t\tthis.onlineCount = 0;\n\t\tthis.onlineMessage = options.onlineMessage || \"We're online now\";\n\t\tthis.responseTime =\n\t\t\toptions.responseTime || 'We typically reply within a few minutes';\n\n\t\tthis.businessHoursState = options.businessHoursState || null;\n\t\tthis.nextOpenAt = options.nextOpenAt || null;\n\t\tthis.holidayName = options.holidayName || null;\n\n\t\tthis.typingUsers = {};\n\n\t\tthis.isLoading = false;\n\t\tthis.isLoadingMessages = false;\n\n\t\tthis.urls = options.urls || {\n\t\t\tfeedback: null,\n\t\t\tchangelog: null,\n\t\t\thelp: null,\n\t\t\troadmap: null,\n\t\t};\n\n\t\tthis._listeners = new Set();\n\t}\n\n\tsubscribe(callback) {\n\t\tthis._listeners.add(callback);\n\t\treturn () => this._listeners.delete(callback);\n\t}\n\n\t_notify(changeType, data) {\n\t\tthis._listeners.forEach((cb) => cb(changeType, data, this));\n\t}\n\n\tsetView(view) {\n\t\tconst previousView = this.currentView;\n\t\tthis.currentView = view;\n\t\tthis._notify('viewChange', { previousView, currentView: view });\n\t}\n\n\tsetOpen(isOpen) {\n\t\tthis.isOpen = isOpen;\n\t\tthis._notify('openChange', { isOpen });\n\t}\n\n\tsetActiveConversation(conversationId) {\n\t\tconst previousConversationId = this.activeConversationId;\n\t\tthis.activeConversationId = conversationId;\n\t\tthis._notify('conversationChange', {\n\t\t\tconversationId,\n\t\t\tpreviousConversationId,\n\t\t});\n\t}\n\n\tsetIdentified(isIdentified, metadata = null) {\n\t\tthis.isIdentified = isIdentified;\n\t\tif (metadata) {\n\t\t\tthis.metadata = { ...this.metadata, ...metadata };\n\t\t}\n\t\tthis._notify('identificationChange', { isIdentified, metadata });\n\t}\n\n\tsetConversations(conversations) {\n\t\tthis.conversations = conversations;\n\t\tthis._updateUnreadCount();\n\t\tthis._notify('conversationsUpdate', { conversations });\n\t}\n\n\taddConversation(conversation) {\n\t\tthis.conversations.unshift(conversation);\n\t\tthis._updateUnreadCount();\n\t\tthis._notify('conversationAdded', { conversation });\n\t}\n\n\tsetMessages(conversationId, messages) {\n\t\tthis.messages[conversationId] = messages;\n\t\tthis._notify('messagesUpdate', { conversationId, messages });\n\t}\n\n\t_getMessageAttachmentsSignature(message) {\n\t\tif (\n\t\t\t!Array.isArray(message?.attachments) ||\n\t\t\tmessage.attachments.length === 0\n\t\t) {\n\t\t\treturn '';\n\t\t}\n\n\t\treturn message.attachments\n\t\t\t.map((att) => `${att?.type || ''}:${att?.name || ''}`)\n\t\t\t.join('|');\n\t}\n\n\t_findOptimisticMatchIndex(conversationId, incomingMessage, matchWindowMs) {\n\t\tconst messages = this.messages[conversationId] || [];\n\t\tconst incomingTimestamp = Date.parse(incomingMessage.timestamp);\n\t\tconst incomingSignature =\n\t\t\tthis._getMessageAttachmentsSignature(incomingMessage);\n\n\t\tfor (let i = messages.length - 1; i >= 0; i--) {\n\t\t\tconst candidate = messages[i];\n\t\t\tif (!candidate?.isOptimistic || !candidate?.isOwn) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif ((candidate.content || '') !== (incomingMessage.content || '')) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tconst candidateSignature =\n\t\t\t\tthis._getMessageAttachmentsSignature(candidate);\n\t\t\tif (candidateSignature !== incomingSignature) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tconst candidateTimestamp = Date.parse(candidate.timestamp);\n\t\t\tif (\n\t\t\t\tNumber.isNaN(incomingTimestamp) ||\n\t\t\t\tNumber.isNaN(candidateTimestamp) ||\n\t\t\t\tMath.abs(incomingTimestamp - candidateTimestamp) <= matchWindowMs\n\t\t\t) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\n\t\treturn -1;\n\t}\n\n\t_updateConversationFromMessage(conversationId, message, countUnread) {\n\t\tconst conv = this.conversations.find((c) => c.id === conversationId);\n\t\tif (!conv) {\n\t\t\treturn;\n\t\t}\n\n\t\tconv.lastMessage = message.content;\n\t\tconv.lastMessageTime = message.timestamp;\n\n\t\tif (countUnread && !message.isOwn) {\n\t\t\tconv.unread = (conv.unread || 0) + 1;\n\t\t\tthis._updateUnreadCount();\n\t\t}\n\t}\n\n\tupsertMessage(conversationId, message, options = {}) {\n\t\tif (!this.messages[conversationId]) {\n\t\t\tthis.messages[conversationId] = [];\n\t\t}\n\n\t\tconst reconcileOwnOptimistic = options.reconcileOwnOptimistic === true;\n\t\tconst optimisticMatchWindowMs = options.optimisticMatchWindowMs || 30000;\n\t\tconst messages = this.messages[conversationId];\n\t\tconst existingIndex =\n\t\t\tmessage?.id != null\n\t\t\t\t? messages.findIndex((msg) => msg?.id === message.id)\n\t\t\t\t: -1;\n\n\t\tif (existingIndex !== -1) {\n\t\t\tmessages[existingIndex] = {\n\t\t\t\t...messages[existingIndex],\n\t\t\t\t...message,\n\t\t\t\tisOptimistic: false,\n\t\t\t};\n\t\t\tthis._updateConversationFromMessage(\n\t\t\t\tconversationId,\n\t\t\t\tmessages[existingIndex],\n\t\t\t\tfalse\n\t\t\t);\n\t\t\tthis._notify('messagesUpdate', {\n\t\t\t\tconversationId,\n\t\t\t\tmessages: [...messages],\n\t\t\t});\n\t\t\treturn messages[existingIndex];\n\t\t}\n\n\t\tif (reconcileOwnOptimistic && message?.isOwn) {\n\t\t\tconst optimisticIndex = this._findOptimisticMatchIndex(\n\t\t\t\tconversationId,\n\t\t\t\tmessage,\n\t\t\t\toptimisticMatchWindowMs\n\t\t\t);\n\t\t\tif (optimisticIndex !== -1) {\n\t\t\t\tmessages[optimisticIndex] = {\n\t\t\t\t\t...messages[optimisticIndex],\n\t\t\t\t\t...message,\n\t\t\t\t\tisOptimistic: false,\n\t\t\t\t};\n\t\t\t\tthis._updateConversationFromMessage(\n\t\t\t\t\tconversationId,\n\t\t\t\t\tmessages[optimisticIndex],\n\t\t\t\t\tfalse\n\t\t\t\t);\n\t\t\t\tthis._notify('messagesUpdate', {\n\t\t\t\t\tconversationId,\n\t\t\t\t\tmessages: [...messages],\n\t\t\t\t});\n\t\t\t\treturn messages[optimisticIndex];\n\t\t\t}\n\t\t}\n\n\t\tconst storedMessage = {\n\t\t\t...message,\n\t\t\tisOptimistic: Boolean(message?.isOptimistic),\n\t\t};\n\t\tmessages.push(storedMessage);\n\t\tthis._updateConversationFromMessage(conversationId, storedMessage, true);\n\t\tthis._notify('messageAdded', { conversationId, message: storedMessage });\n\t\treturn storedMessage;\n\t}\n\n\taddMessage(conversationId, message) {\n\t\treturn this.upsertMessage(conversationId, message);\n\t}\n\n\tupdateConversation(conversationId, updates) {\n\t\tconst conv = this.conversations.find((c) => c.id === conversationId);\n\t\tif (!conv) {\n\t\t\treturn null;\n\t\t}\n\n\t\tObject.assign(conv, updates);\n\t\tthis._notify('conversationUpdated', { conversationId, conversation: conv });\n\t\treturn conv;\n\t}\n\n\tmarkAsRead(conversationId) {\n\t\tconst conv = this.conversations.find((c) => c.id === conversationId);\n\t\tif (conv && conv.unread > 0) {\n\t\t\tconv.unread = 0;\n\t\t\tthis._updateUnreadCount();\n\t\t\tthis._notify('conversationRead', { conversationId });\n\t\t}\n\t}\n\n\t_updateUnreadCount() {\n\t\tthis.unreadCount = this.conversations.reduce(\n\t\t\t(sum, c) => sum + (c.unread || 0),\n\t\t\t0\n\t\t);\n\t\tthis._notify('unreadCountChange', { count: this.unreadCount });\n\t}\n\n\tsetHelpArticles(articles) {\n\t\tthis.helpArticles = articles;\n\t\tthis._notify('helpArticlesUpdate', { articles });\n\t}\n\n\tsetHelpSearchQuery(query) {\n\t\tthis.helpSearchQuery = query;\n\t\tthis._notify('helpSearchChange', { query });\n\t}\n\n\tsetHomeChangelogItems(items) {\n\t\tthis.homeChangelogItems = items;\n\t\tthis._notify('homeChangelogUpdate', { items });\n\t}\n\n\tsetChangelogItems(items) {\n\t\tthis.changelogItems = items;\n\t\tthis._notify('changelogUpdate', { items });\n\t}\n\n\tgetActiveConversation() {\n\t\treturn this.conversations.find((c) => c.id === this.activeConversationId);\n\t}\n\n\tgetActiveMessages() {\n\t\treturn this.messages[this.activeConversationId] || [];\n\t}\n\n\tsetTeamAvatarsFromAgents(agents) {\n\t\tif (!agents || agents.length === 0) return;\n\n\t\tthis.teamAvatars = agents.map((agent) => {\n\t\t\tif (agent.picture) return agent.picture;\n\t\t\treturn agent.full_name || '?';\n\t\t});\n\t\tthis._notify('teamAvatarsUpdate', { teamAvatars: this.teamAvatars });\n\t}\n\n\tgetFilteredHelpArticles() {\n\t\tif (!this.helpSearchQuery) {\n\t\t\treturn this.helpArticles;\n\t\t}\n\t\tconst query = this.helpSearchQuery.toLowerCase();\n\t\treturn this.helpArticles.filter(\n\t\t\t(article) =>\n\t\t\t\tarticle.title.toLowerCase().includes(query) ||\n\t\t\t\t(article.description &&\n\t\t\t\t\tarticle.description.toLowerCase().includes(query))\n\t\t);\n\t}\n\n\treset() {\n\t\tconst previousView = this.currentView;\n\t\tthis.currentView = 'home';\n\t\tthis.activeConversationId = null;\n\t\tthis.helpSearchQuery = '';\n\t\tif (previousView !== 'home') {\n\t\t\tthis._notify('viewChange', { previousView, currentView: 'home' });\n\t\t}\n\t\tthis._notify('reset', {});\n\t}\n}\n","export class LiveChatLauncher {\n\tconstructor(state, options = {}) {\n\t\tthis.state = state;\n\t\tthis.options = {\n\t\t\tposition: options.position || 'right',\n\t\t\tprimaryColor: options.primaryColor || '#155EEF',\n\t\t\t...options,\n\t\t};\n\t\tthis.element = null;\n\t\tthis._unsubscribe = null;\n\t}\n\n\trender() {\n\t\tthis.element = document.createElement('div');\n\t\tthis.element.className = `liveChat-launcher liveChat-launcher-${this.options.position}`;\n\n\t\tthis._updateContent();\n\t\tthis._attachEvents();\n\n\t\tthis._unsubscribe = this.state.subscribe((type, data) => {\n\t\t\tif (type === 'openChange') {\n\t\t\t\tthis._updateIcon();\n\t\t\t}\n\t\t\tif (type === 'unreadCountChange') {\n\t\t\t\tthis._updateBadge();\n\t\t\t}\n\t\t});\n\n\t\treturn this.element;\n\t}\n\n\t_updateContent() {\n\t\tconst badgeHtml =\n\t\t\tthis.state.unreadCount > 0\n\t\t\t\t? `<span class=\"liveChat-launcher-badge\">${this.state.unreadCount > 9 ? '9+' : this.state.unreadCount}</span>`\n\t\t\t\t: '';\n\n\t\tthis.element.innerHTML = `\n <button class=\"liveChat-launcher-btn\" aria-label=\"Open live chat\">\n <span class=\"liveChat-launcher-icon liveChat-launcher-icon-chat\">\n <iconify-icon icon=\"ph:chats-circle\" width=\"24\" height=\"24\"></iconify-icon>\n </span>\n <span class=\"liveChat-launcher-icon liveChat-launcher-icon-close\" style=\"display: none;\">\n <iconify-icon icon=\"ph:caret-down-bold\" width=\"22\" height=\"22\"></iconify-icon>\n </span>\n ${badgeHtml}\n </button>\n `;\n\n\t\tconst btn = this.element.querySelector('.liveChat-launcher-btn');\n\t\tif (btn && this.options.primaryColor) {\n\t\t\tbtn.style.setProperty(\n\t\t\t\t'background',\n\t\t\t\tthis.options.primaryColor,\n\t\t\t\t'important'\n\t\t\t);\n\t\t}\n\t}\n\n\t_attachEvents() {\n\t\tthis.element\n\t\t\t.querySelector('.liveChat-launcher-btn')\n\t\t\t.addEventListener('click', () => {\n\t\t\t\tthis.state.setOpen(!this.state.isOpen);\n\t\t\t});\n\t}\n\n\t_updateIcon() {\n\t\tconst chatIcon = this.element.querySelector('.liveChat-launcher-icon-chat');\n\t\tconst closeIcon = this.element.querySelector(\n\t\t\t'.liveChat-launcher-icon-close'\n\t\t);\n\n\t\tif (this.state.isOpen) {\n\t\t\tchatIcon.style.display = 'none';\n\t\t\tcloseIcon.style.display = 'flex';\n\t\t\tthis.element.classList.add('liveChat-launcher-open');\n\t\t} else {\n\t\t\tchatIcon.style.display = 'flex';\n\t\t\tcloseIcon.style.display = 'none';\n\t\t\tthis.element.classList.remove('liveChat-launcher-open');\n\t\t}\n\t}\n\n\t_updateBadge() {\n\t\tconst existingBadge = this.element.querySelector(\n\t\t\t'.liveChat-launcher-badge'\n\t\t);\n\t\tif (existingBadge) {\n\t\t\texistingBadge.remove();\n\t\t}\n\n\t\tif (this.state.unreadCount > 0 && !this.state.isOpen) {\n\t\t\tconst badge = document.createElement('span');\n\t\t\tbadge.className = 'liveChat-launcher-badge';\n\t\t\tbadge.textContent =\n\t\t\t\tthis.state.unreadCount > 9 ? '9+' : this.state.unreadCount;\n\t\t\tthis.element.querySelector('.liveChat-launcher-btn').appendChild(badge);\n\t\t}\n\t}\n\n\tshow() {\n\t\tif (this.element) {\n\t\t\tthis.element.style.display = 'block';\n\t\t}\n\t}\n\n\thide() {\n\t\tif (this.element) {\n\t\t\tthis.element.style.display = 'none';\n\t\t}\n\t}\n\n\tdestroy() {\n\t\tif (this._unsubscribe) {\n\t\t\tthis._unsubscribe();\n\t\t}\n\t\tif (this.element && this.element.parentNode) {\n\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t}\n\t}\n}\n","export class NavigationTabs {\n\tconstructor(state, options = {}) {\n\t\tthis.state = state;\n\t\tthis.options = options;\n\t\tthis.element = null;\n\t\tthis._unsubscribe = null;\n\t}\n\n\trender() {\n\t\tthis.element = document.createElement('div');\n\t\tthis.element.className = 'liveChat-panel-nav';\n\n\t\tthis._updateContent();\n\t\tthis._attachEvents();\n\n\t\tthis._unsubscribe = this.state.subscribe((type) => {\n\t\t\tif (type === 'viewChange' || type === 'unreadCountChange') {\n\t\t\t\tthis._updateActiveTab();\n\t\t\t} else if (type === 'settingsUpdate') {\n\t\t\t\tthis._updateContent();\n\t\t\t\tthis._updateActiveTab();\n\t\t\t}\n\t\t});\n\n\t\treturn this.element;\n\t}\n\n\t_getTabs() {\n\t\tconst tabs = [];\n\n\t\tif (this.state.homeModuleEnabled !== false) {\n\t\t\ttabs.push({ id: 'home', label: 'Home', icon: 'ph:house-simple' });\n\t\t}\n\n\t\tif (this.state.messagesModuleEnabled !== false) {\n\t\t\ttabs.push({\n\t\t\t\tid: 'messages',\n\t\t\t\tlabel: 'Messages',\n\t\t\t\ticon: 'ph:chats',\n\t\t\t\tbadge: this.state.unreadCount,\n\t\t\t});\n\t\t}\n\n\t\tif (this.state.enableHelp) {\n\t\t\ttabs.push({ id: 'help', label: 'Help', icon: 'ph:books' });\n\t\t}\n\n\t\tif (this.state.enableChangelog) {\n\t\t\ttabs.push({\n\t\t\t\tid: 'changelog',\n\t\t\t\tlabel: 'Updates',\n\t\t\t\ticon: 'ph:megaphone',\n\t\t\t});\n\t\t}\n\n\t\treturn tabs;\n\t}\n\n\t_updateContent() {\n\t\tconst tabs = this._getTabs();\n\t\tconst tabsHtml = tabs\n\t\t\t.map((tab) => {\n\t\t\t\tconst isActive = this.state.currentView === tab.id;\n\t\t\t\tconst badgeHtml =\n\t\t\t\t\ttab.badge && tab.badge > 0\n\t\t\t\t\t\t? `<span class=\"liveChat-nav-badge\">${tab.badge > 9 ? '9+' : tab.badge}</span>`\n\t\t\t\t\t\t: '';\n\n\t\t\t\treturn `\n\t\t\t\t\t<button class=\"liveChat-nav-tab ${isActive ? 'active' : ''}\" data-tab=\"${tab.id}\">\n\t\t\t\t\t\t<span class=\"liveChat-nav-icon\">\n\t\t\t\t\t\t\t<iconify-icon icon=\"${tab.icon}\" width=\"22\" height=\"22\"></iconify-icon>\n\t\t\t\t\t\t</span>\n\t\t\t\t\t\t<span class=\"liveChat-nav-label\">${tab.label}</span>\n\t\t\t\t\t\t${badgeHtml}\n\t\t\t\t\t</button>\n\t\t\t\t`;\n\t\t\t})\n\t\t\t.join('');\n\n\t\tthis.element.innerHTML = `\n\t\t\t<div class=\"liveChat-nav-tabs\">\n\t\t\t\t${tabsHtml}\n\t\t\t</div>\n\t\t\t<div class=\"liveChat-nav-footer\">\n\t\t\t\t<a href=\"https://product7.io\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"liveChat-powered-by\">\n\t\t\t\t\t<svg width=\"12\" height=\"14\" viewBox=\"0 0 28 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n\t\t\t\t\t\t<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M15.0615 5.28044C8.5161 4.42949 3.30825 11.1456 5.89967 17.6588C6.9321 20.2538 9.06268 22.2644 11.8777 23.1968C16.2682 24.6507 18.4038 22.3222 19.0483 23.9691C19.4055 24.8894 18.7282 25.3209 17.988 25.4938C10.9146 27.15 5.15304 22.7566 3.5869 17.5531C1.52205 10.6941 5.98684 4.6667 11.3483 3.41065C17.8801 1.88094 24.0325 6.19355 24.3926 12.7175C24.7448 19.0921 18.6217 24.5978 11.927 22.2036C10.8789 21.8285 8.8419 20.6682 8.46823 19.858C8.06026 18.9727 8.80261 18.1725 9.68285 18.3576C10.2223 18.4726 10.3116 18.8706 11.3161 19.5372C14.4549 21.6213 19.1276 20.6132 21.2046 17.0972C23.991 12.3817 21.0481 6.05351 15.06 5.27758L15.0615 5.28044Z\" fill=\"#21244A\"/>\n\t\t\t\t\t\t<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M15.2492 2.19833C11.944 1.71463 8.88819 3.07214 6.91479 4.49682C2.27067 7.85488 0.76169 14.5038 3.49672 19.8731C4.08535 21.0096 4.84379 22.0497 5.7459 22.9576L7.16343 24.2515C7.67214 24.9131 7.27203 25.7176 6.64115 25.9269C5.13502 26.4271 2.0499 21.8172 1.42044 20.5383C0.0872204 17.8297 -0.312889 14.9047 0.242977 11.503C1.66908 2.77063 11.221 -2.51652 19.7197 1.21021C27.7548 4.73331 30.2733 15.4555 23.9351 22.0773C23.3107 22.7296 21.6352 24.4823 20.6278 23.8907C20.0076 23.5263 19.8933 22.6446 20.5192 22.1238C21.0301 21.6986 21.4759 21.435 21.9896 20.9734C23.6665 19.4688 25.2562 16.8752 25.3477 13.5636C25.4427 10.2055 24.1266 7.5848 22.3904 5.74859C20.6392 3.89665 18.6751 2.69919 15.2456 2.19691L15.2492 2.19833Z\" fill=\"#F69F06\"/>\n\t\t\t\t\t\t<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M8.48332 27.2217C7.93817 26.265 8.89987 25.3776 10.1352 25.8641C15.5653 27.9926 18.3081 25.5269 19.0255 27.0823C19.2655 27.6039 19.0448 28.1619 18.7354 28.3863C17.9895 28.9257 14.82 28.9343 13.9262 28.8714C12.9071 28.8053 11.897 28.6377 10.9111 28.3713C10.0888 28.1348 8.88057 27.9247 8.48189 27.2281L8.48332 27.2217Z\" fill=\"#21244A\"/>\n\t\t\t\t\t\t<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M15.8722 31.0607C15.7765 32.1381 14.579 32.0331 13.5766 31.9545C12.5742 31.8759 11.5203 31.8502 11.601 30.7013C11.6789 29.5882 12.8035 29.7532 13.8274 29.8332C14.4425 29.8811 15.9951 29.681 15.8722 31.0607Z\" fill=\"#21244A\"/>\n\t\t\t\t\t</svg>\n\t\t\t\t\tPowered by <strong>Product7</strong>\n\t\t\t\t</a>\n\t\t\t</div>\n\t\t`;\n\t}\n\n\t_attachEvents() {\n\t\tthis.element.addEventListener('click', (e) => {\n\t\t\tconst tab = e.target.closest('.liveChat-nav-tab');\n\t\t\tif (tab) {\n\t\t\t\tconst tabId = tab.dataset.tab;\n\t\t\t\tthis.state.setView(tabId);\n\t\t\t}\n\t\t});\n\t}\n\n\t_updateActiveTab() {\n\t\tconst tabs = this.element.querySelectorAll('.liveChat-nav-tab');\n\t\ttabs.forEach((tab) => {\n\t\t\tconst isActive = tab.dataset.tab === this.state.currentView;\n\t\t\ttab.classList.toggle('active', isActive);\n\n\t\t\tif (tab.dataset.tab === 'messages') {\n\t\t\t\tconst existingBadge = tab.querySelector('.liveChat-nav-badge');\n\t\t\t\tif (existingBadge) existingBadge.remove();\n\n\t\t\t\tif (this.state.unreadCount > 0) {\n\t\t\t\t\tconst badge = document.createElement('span');\n\t\t\t\t\tbadge.className = 'liveChat-nav-badge';\n\t\t\t\t\tbadge.textContent =\n\t\t\t\t\t\tthis.state.unreadCount > 9 ? '9+' : this.state.unreadCount;\n\t\t\t\t\ttab.appendChild(badge);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\tdestroy() {\n\t\tif (this._unsubscribe) {\n\t\t\tthis._unsubscribe();\n\t\t}\n\t\tif (this.element && this.element.parentNode) {\n\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t}\n\t}\n}\n","import { NavigationTabs } from './NavigationTabs.js';\n\nexport class LiveChatPanel {\n\tconstructor(state, options = {}) {\n\t\tthis.state = state;\n\t\tthis.options = {\n\t\t\tposition: options.position || 'right',\n\t\t\t...options,\n\t\t};\n\t\tthis.element = null;\n\t\tthis.navigationTabs = null;\n\t\tthis.currentViewComponent = null;\n\t\tthis.viewRegistry = {};\n\t\tthis._unsubscribe = null;\n\t\tthis._expanded = false;\n\t}\n\n\tregisterView(name, ViewClass) {\n\t\tthis.viewRegistry[name] = ViewClass;\n\t}\n\n\trender() {\n\t\tthis.element = document.createElement('div');\n\t\tthis.element.className = `liveChat-panel liveChat-panel-${this.options.position}`;\n\n\t\tthis.element.innerHTML = `\n\t\t\t<div class=\"liveChat-panel-content\">\n\t\t\t\t<div class=\"liveChat-panel-views\"></div>\n\t\t\t\t<div class=\"liveChat-panel-nav\"></div>\n\t\t\t</div>\n\t\t`;\n\n\t\tthis.options.onToggleExpand = () => this._toggleExpand();\n\t\tthis.options.isExpanded = () => this._expanded;\n\n\t\tthis.navigationTabs = new NavigationTabs(this.state, this.options);\n\t\tconst navContainer = this.element.querySelector('.liveChat-panel-nav');\n\t\tnavContainer.appendChild(this.navigationTabs.render());\n\n\t\tthis._renderCurrentView();\n\n\t\tthis._unsubscribe = this.state.subscribe((type) => {\n\t\t\tif (type === 'viewChange') {\n\t\t\t\tthis._renderCurrentView();\n\t\t\t}\n\t\t});\n\n\t\treturn this.element;\n\t}\n\n\t_toggleExpand() {\n\t\tthis._expanded = !this._expanded;\n\t\tthis.element.classList.toggle('liveChat-panel-expanded', this._expanded);\n\n\t\tconst menuIcon = this.element.querySelector(\n\t\t\t'.liveChat-expand-window-btn iconify-icon'\n\t\t);\n\t\tconst menuLabel = this.element.querySelector(\n\t\t\t'.liveChat-expand-window-btn span'\n\t\t);\n\t\tif (menuIcon)\n\t\t\tmenuIcon.setAttribute(\n\t\t\t\t'icon',\n\t\t\t\tthis._expanded ? 'ph:arrows-in' : 'ph:arrows-out'\n\t\t\t);\n\t\tif (menuLabel)\n\t\t\tmenuLabel.textContent = this._expanded\n\t\t\t\t? 'Collapse window'\n\t\t\t\t: 'Expand window';\n\t}\n\n\t_renderCurrentView() {\n\t\tconst viewsContainer = this.element.querySelector('.liveChat-panel-views');\n\t\tconst navContainer = this.element.querySelector('.liveChat-panel-nav');\n\n\t\tif (this.currentViewComponent && this.currentViewComponent.destroy) {\n\t\t\tthis.currentViewComponent.destroy();\n\t\t}\n\n\t\tviewsContainer.innerHTML = '';\n\n\t\t// Collapse expanded state when leaving chat view\n\t\tif (this.state.currentView !== 'chat' && this._expanded) {\n\t\t\tthis._expanded = false;\n\t\t\tthis.element.classList.remove('liveChat-panel-expanded');\n\t\t}\n\n\t\tconst ViewClass = this.viewRegistry[this.state.currentView];\n\t\tif (ViewClass) {\n\t\t\tthis.currentViewComponent = new ViewClass(this.state, this.options);\n\t\t\tviewsContainer.appendChild(this.currentViewComponent.render());\n\t\t} else {\n\t\t\tviewsContainer.innerHTML = `<div class=\"liveChat-empty-state\">\n\t\t\t\t<p>View not found: ${this.state.currentView}</p>\n\t\t\t</div>`;\n\t\t}\n\n\t\t// Hide nav in chat and prechat views\n\t\tif (navContainer) {\n\t\t\tconst hideNav =\n\t\t\t\tthis.state.currentView === 'chat' ||\n\t\t\t\tthis.state.currentView === 'prechat';\n\t\t\tnavContainer.style.display = hideNav ? 'none' : '';\n\t\t}\n\t}\n\n\tshow() {\n\t\tif (this.element) {\n\t\t\trequestAnimationFrame(() => {\n\t\t\t\tthis.element.classList.add('open');\n\t\t\t});\n\t\t}\n\t}\n\n\thide() {\n\t\tif (this.element) {\n\t\t\tthis.element.classList.remove('open');\n\t\t}\n\t}\n\n\tsetHeader(headerContent) {\n\t\tconst header = this.element.querySelector('.liveChat-panel-header');\n\t\tif (header) {\n\t\t\theader.innerHTML = headerContent;\n\t\t}\n\t}\n\n\tdestroy() {\n\t\tif (this._unsubscribe) {\n\t\t\tthis._unsubscribe();\n\t\t}\n\t\tif (this.navigationTabs) {\n\t\t\tthis.navigationTabs.destroy();\n\t\t}\n\t\tif (this.currentViewComponent && this.currentViewComponent.destroy) {\n\t\t\tthis.currentViewComponent.destroy();\n\t\t}\n\t\tif (this.element && this.element.parentNode) {\n\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t}\n\t}\n}\n","export class ChangelogView {\n\tconstructor(state, options = {}) {\n\t\tthis.state = state;\n\t\tthis.options = options;\n\t\tthis.element = null;\n\t\tthis._unsubscribe = null;\n\n\t\t// Configurable header colour — defaults to Product7 blue\n\t\tthis._headerBg = `linear-gradient(180deg, #f0f4ff 0%, #ffffff 100%)`;\n\t}\n\n\trender() {\n\t\tthis.element = document.createElement('div');\n\t\tthis.element.className = 'liveChat-view liveChat-changelog-view';\n\n\t\tthis._updateContent();\n\n\t\tthis._unsubscribe = this.state.subscribe((type) => {\n\t\t\tif (type === 'changelogUpdate') {\n\t\t\t\tthis._updateChangelogList();\n\t\t\t}\n\t\t});\n\n\t\treturn this.element;\n\t}\n\n\t_updateContent() {\n\t\tthis.element.innerHTML = `\n\t\t\t<div class=\"liveChat-changelog-header\">\n\t\t\t\t<div class=\"liveChat-changelog-header-top\">\n\t\t\t\t\t<h2>Latest Updates</h2>\n\t\t\t\t\t<button class=\"sdk-close-btn liveChat-changelog-close-btn liveChat-mobile-close-btn\" aria-label=\"Close\">\n\t\t\t\t\t\t<iconify-icon icon=\"ph:x\" width=\"18\" height=\"18\"></iconify-icon>\n\t\t\t\t\t</button>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t<div class=\"liveChat-changelog-body\">\n\t\t\t\t<div class=\"liveChat-changelog-list\"></div>\n\t\t\t</div>\n\t\t`;\n\n\t\tthis._updateChangelogList();\n\t\tthis._attachEvents();\n\t}\n\n\t_updateChangelogList() {\n\t\tconst changelogContainer = this.element.querySelector(\n\t\t\t'.liveChat-changelog-list'\n\t\t);\n\t\tconst changelogItems = this.state.changelogItems;\n\n\t\tif (changelogItems.length === 0) {\n\t\t\tchangelogContainer.innerHTML = this._renderEmptyState();\n\t\t\treturn;\n\t\t}\n\n\t\tchangelogContainer.innerHTML = changelogItems\n\t\t\t.map((item) => this._renderChangelogCard(item))\n\t\t\t.join('');\n\n\t\tthis._attachChangelogEvents();\n\t}\n\n\t_stripHtml(html) {\n\t\tif (!html) return '';\n\t\tconst tmp = document.createElement('div');\n\t\ttmp.innerHTML = html;\n\t\treturn (tmp.textContent || tmp.innerText || '').trim();\n\t}\n\n\t_renderChangelogCard(item) {\n\t\treturn `\n\t\t\t<div class=\"liveChat-changelog-card\" data-changelog-id=\"${item.id}\">\n\t\t\t\t${item.coverImage ? `<div class=\"liveChat-changelog-thumb\"><img src=\"${item.coverImage}\" alt=\"${item.title}\" onerror=\"this.parentElement.style.display='none';\" /></div>` : ''}\n\t\t\t\t<div class=\"liveChat-changelog-content\">\n\t\t\t\t\t<h3 class=\"liveChat-changelog-title\">${item.title}</h3>\n\t\t\t\t\t${item.description ? `<p class=\"liveChat-changelog-description\">${this._stripHtml(item.description)}</p>` : ''}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t`;\n\t}\n\n\t_getContrastColor(hexColor) {\n\t\tconst hex = hexColor.replace('#', '');\n\t\tconst r = parseInt(hex.substring(0, 2), 16);\n\t\tconst g = parseInt(hex.substring(2, 4), 16);\n\t\tconst b = parseInt(hex.substring(4, 6), 16);\n\t\tconst luminance = (0.299 * r + 0.587 * g + 0.114 * b) / 255;\n\t\treturn luminance > 0.5 ? '#374151' : '#ffffff';\n\t}\n\n\t_renderEmptyState() {\n\t\treturn `\n\t\t\t<div class=\"liveChat-empty-state\">\n\t\t\t\t<div class=\"liveChat-empty-state-icon\">\n\t\t\t\t\t<iconify-icon icon=\"ph:megaphone\" width=\"48\" height=\"48\"></iconify-icon>\n\t\t\t\t</div>\n\t\t\t\t<h3>No changelog yet</h3>\n\t\t\t\t<p>Check back later for updates</p>\n\t\t\t</div>\n\t\t`;\n\t}\n\n\t_formatDate(dateString) {\n\t\tif (!dateString) return '';\n\t\tconst date = new Date(dateString);\n\t\treturn date.toLocaleDateString('en-US', {\n\t\t\tmonth: 'short',\n\t\t\tday: 'numeric',\n\t\t\tyear: 'numeric',\n\t\t});\n\t}\n\n\t_truncateText(text, maxLength) {\n\t\tif (!text) return '';\n\t\tif (text.length <= maxLength) return text;\n\t\treturn text.substring(0, maxLength).trim() + '...';\n\t}\n\n\t_attachEvents() {\n\t\tconst mobileCloseBtn = this.element.querySelector(\n\t\t\t'.liveChat-changelog-close-btn'\n\t\t);\n\t\tif (mobileCloseBtn) {\n\t\t\tmobileCloseBtn.addEventListener('click', () => {\n\t\t\t\tthis.state.setOpen(false);\n\t\t\t});\n\t\t}\n\n\t\tthis._attachChangelogEvents();\n\t}\n\n\t_attachChangelogEvents() {\n\t\tthis.element\n\t\t\t.querySelectorAll('.liveChat-changelog-card')\n\t\t\t.forEach((card) => {\n\t\t\t\tcard.addEventListener('click', () => {\n\t\t\t\t\tconst changelogId = card.dataset.changelogId;\n\t\t\t\t\tconst changelogItem = this.state.changelogItems.find(\n\t\t\t\t\t\t(n) => n.id === changelogId\n\t\t\t\t\t);\n\t\t\t\t\tif (changelogItem?.url) {\n\t\t\t\t\t\twindow.open(changelogItem.url, '_blank');\n\t\t\t\t\t} else if (this.options.onChangelogClick) {\n\t\t\t\t\t\tthis.options.onChangelogClick(changelogItem);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t}\n\n\tdestroy() {\n\t\tif (this._unsubscribe) {\n\t\t\tthis._unsubscribe();\n\t\t}\n\t\tif (this.element && this.element.parentNode) {\n\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t}\n\t}\n}\n","export class ChatView {\n\tconstructor(state, options = {}) {\n\t\tthis.state = state;\n\t\tthis.options = options;\n\t\tthis.element = null;\n\t\tthis._unsubscribe = null;\n\t\tthis._typingTimeout = null;\n\t\tthis._isTyping = false;\n\t\tthis._typingIndicator = null;\n\t\tthis._isConversationClosed = false;\n\t\tthis._pendingAttachments = [];\n\t\tthis._emojiPickerOpen = false;\n\t\tthis._emojiOutsideHandler = null;\n\t\tthis._menuOutsideHandler = null;\n\t}\n\n\trender() {\n\t\tthis.element = document.createElement('div');\n\t\tthis.element.className = 'liveChat-view liveChat-chat-view';\n\n\t\tthis._updateContent();\n\n\t\tthis._unsubscribe = this.state.subscribe((type, data) => {\n\t\t\tif (type === 'connectionChange') {\n\t\t\t\tconst banner = this.element?.querySelector(\n\t\t\t\t\t'.liveChat-connection-banner'\n\t\t\t\t);\n\t\t\t\tif (banner) {\n\t\t\t\t\tbanner.style.display = data.connected ? 'none' : 'flex';\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (\n\t\t\t\ttype === 'messageAdded' &&\n\t\t\t\tdata.conversationId === this.state.activeConversationId\n\t\t\t) {\n\t\t\t\tthis._hideTypingIndicator();\n\t\t\t\tthis._appendMessage(data.message);\n\t\t\t} else if (\n\t\t\t\ttype === 'typingStarted' &&\n\t\t\t\tdata.conversationId === this.state.activeConversationId\n\t\t\t) {\n\t\t\t\tthis._showTypingIndicator(data.userName);\n\t\t\t} else if (\n\t\t\t\ttype === 'typingStopped' &&\n\t\t\t\tdata.conversationId === this.state.activeConversationId\n\t\t\t) {\n\t\t\t\tthis._hideTypingIndicator();\n\t\t\t} else if (\n\t\t\t\ttype === 'conversationUpdated' &&\n\t\t\t\tdata.conversationId === this.state.activeConversationId\n\t\t\t) {\n\t\t\t\tthis._updateContent();\n\t\t\t} else if (\n\t\t\t\ttype === 'messagesUpdate' &&\n\t\t\t\tdata.conversationId === this.state.activeConversationId\n\t\t\t) {\n\t\t\t\tthis._updateContent();\n\t\t\t} else if (type === 'settingsUpdate') {\n\t\t\t\tthis._updateContent();\n\t\t\t}\n\t\t});\n\n\t\treturn this.element;\n\t}\n\n\t_updateContent() {\n\t\tconst conversation = this.state.getActiveConversation();\n\t\tconst messages = this.state.getActiveMessages();\n\t\tconst isNewConversation = !this.state.activeConversationId;\n\t\tconst isClosed = !isNewConversation && conversation?.status === 'closed';\n\t\tthis._isConversationClosed = isClosed;\n\n\t\tconst messagesHtml =\n\t\t\tmessages.length === 0\n\t\t\t\t? this._renderEmptyState(isNewConversation)\n\t\t\t\t: this._renderGroupedMessages(messages);\n\n\t\tconst defaultPlaceholder =\n\t\t\tthis.options.composePlaceholder || 'Write a message...';\n\t\tconst placeholder = isNewConversation\n\t\t\t? this.options.composePlaceholder || 'Start typing your message...'\n\t\t\t: isClosed\n\t\t\t\t? 'Conversation closed'\n\t\t\t\t: defaultPlaceholder;\n\n\t\tconst logoUrl = this.options.logoUrl;\n\t\tconst teamName = this.state.teamName || 'Support';\n\t\tconst headerAvatarHtml = logoUrl\n\t\t\t? `<img src=\"${this._escapeHtml(logoUrl)}\" alt=\"${this._escapeHtml(teamName)}\" />`\n\t\t\t: `<iconify-icon icon=\"ph:chats-circle\" width=\"20\" height=\"20\"></iconify-icon>`;\n\n\t\tconst isExpanded = this.options.isExpanded?.() ?? false;\n\t\tconst expandIcon = isExpanded ? 'ph:arrows-in' : 'ph:arrows-out';\n\t\tconst expandLabel = isExpanded ? 'Collapse window' : 'Expand window';\n\n\t\tthis.element.innerHTML = `\n\t\t\t<div class=\"liveChat-chat-header\">\n\t\t\t\t<button class=\"sdk-btn-icon liveChat-back-btn\" aria-label=\"Back\">\n\t\t\t\t\t<iconify-icon icon=\"ph:arrow-left\" width=\"20\" height=\"20\"></iconify-icon>\n\t\t\t\t</button>\n\t\t\t\t<div class=\"liveChat-chat-header-avatar\">\n\t\t\t\t\t${headerAvatarHtml}\n\t\t\t\t</div>\n\t\t\t\t<div class=\"liveChat-chat-header-info\">\n\t\t\t\t\t<span class=\"liveChat-chat-title\">${this._escapeHtml(teamName)}</span>\n\t\t\t\t\t${isClosed || this.state.showReplyTime !== false ? `<span class=\"liveChat-chat-subtitle\">${isClosed ? 'Conversation resolved' : this.state.responseTime || 'Typically replies within minutes'}</span>` : ''}\n\t\t\t\t</div>\n\t\t\t\t<div class=\"liveChat-chat-header-actions\">\n\t\t\t\t\t<div class=\"liveChat-chat-menu-wrapper\">\n\t\t\t\t\t\t<button class=\"sdk-btn-icon liveChat-chat-menu-btn\" aria-label=\"Options\">\n\t\t\t\t\t\t\t<iconify-icon icon=\"ph:dots-three\" width=\"20\" height=\"20\"></iconify-icon>\n\t\t\t\t\t\t</button>\n\t\t\t\t\t\t<div class=\"liveChat-chat-menu-dropdown\">\n\t\t\t\t\t\t\t<button class=\"liveChat-chat-menu-item liveChat-expand-window-btn\">\n\t\t\t\t\t\t\t\t<iconify-icon icon=\"${expandIcon}\" width=\"16\" height=\"16\"></iconify-icon>\n\t\t\t\t\t\t\t\t<span>${expandLabel}</span>\n\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<button class=\"sdk-btn-icon sdk-close-btn liveChat-mobile-close-btn\" aria-label=\"Close\">\n\t\t\t\t\t\t<iconify-icon icon=\"ph:x\" width=\"18\" height=\"18\"></iconify-icon>\n\t\t\t\t\t</button>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t<div class=\"liveChat-connection-banner\" style=\"display:none;\">\n\t\t\t\t<iconify-icon icon=\"ph:wifi-slash\" width=\"14\" height=\"14\"></iconify-icon>\n\t\t\t\t<span>Reconnecting…</span>\n\t\t\t</div>\n\n\t\t\t<div class=\"liveChat-chat-messages\">\n\t\t\t\t${messagesHtml}\n\t\t\t\t${\n\t\t\t\t\tisClosed\n\t\t\t\t\t\t? `\n\t\t\t\t<div class=\"liveChat-closed-banner\">\n\t\t\t\t\t<iconify-icon icon=\"ph:check-circle\" width=\"18\" height=\"18\"></iconify-icon>\n\t\t\t\t\t<span>This conversation has been resolved</span>\n\t\t\t\t</div>\n\t\t\t\t`\n\t\t\t\t\t\t: ''\n\t\t\t\t}\n\t\t\t\t<div class=\"liveChat-typing-indicator\">\n\t\t\t\t\t<div class=\"liveChat-typing-dots\">\n\t\t\t\t\t\t<span></span><span></span><span></span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<span class=\"liveChat-typing-text\"></span>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t<div class=\"liveChat-scroll-pill\" style=\"display:none;\">\n\t\t\t\t<iconify-icon icon=\"ph:arrow-down\" width=\"14\" height=\"14\"></iconify-icon>\n\t\t\t\t<span>New message</span>\n\t\t\t</div>\n\n\t\t\t${\n\t\t\t\tisClosed\n\t\t\t\t\t? ''\n\t\t\t\t\t: `\n\t\t\t<div class=\"liveChat-compose-attachments-preview\"></div>\n\n\t\t\t<div class=\"liveChat-chat-compose\">\n\t\t\t\t<div class=\"liveChat-compose-input-wrapper\">\n\t\t\t\t\t<textarea class=\"liveChat-compose-input\" placeholder=\"${placeholder}\" rows=\"1\"></textarea>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"liveChat-compose-bottom\">\n\t\t\t\t\t<div class=\"liveChat-compose-actions\">\n\t\t\t\t\t\t${this.state.allowAttachments !== false ? `<button class=\"sdk-btn-icon liveChat-compose-attach\" aria-label=\"Attach file\"><iconify-icon icon=\"ph:paperclip\" width=\"20\" height=\"20\"></iconify-icon></button>` : ''}\n\t\t\t\t\t\t${this.state.allowEmoji !== false ? `<button class=\"sdk-btn-icon liveChat-emoji-btn\" aria-label=\"Emoji\"><iconify-icon icon=\"ph:smiley\" width=\"20\" height=\"20\"></iconify-icon></button>` : ''}\n\t\t\t\t\t</div>\n\t\t\t\t\t<button class=\"liveChat-compose-send\" aria-label=\"Send\" disabled>\n\t\t\t\t\t\t<iconify-icon icon=\"ph:paper-plane-right\" width=\"20\" height=\"20\"></iconify-icon>\n\t\t\t\t\t</button>\n\t\t\t\t</div>\n\t\t\t\t${this.state.allowAttachments !== false ? `<input type=\"file\" class=\"liveChat-compose-file-input\" multiple accept=\"image/*,.pdf,.doc,.docx,.xls,.xlsx,.txt,.zip\" />` : ''}\n\t\t\t</div>\n\t\t\t`\n\t\t\t}\n\t\t`;\n\n\t\tthis._typingIndicator = this.element.querySelector(\n\t\t\t'.liveChat-typing-indicator'\n\t\t);\n\t\tthis._attachEvents();\n\t\tthis._scrollToBottom();\n\t\tthis._renderAttachmentPreviews();\n\t\tthis._setupScrollPill();\n\t}\n\n\t_renderEmptyState(isNewConversation = false) {\n\t\tconst logoUrl = this.options.logoUrl;\n\n\t\tconst logoHtml = logoUrl\n\t\t\t? `<div class=\"liveChat-chat-empty-logo\"><img src=\"${this._escapeHtml(logoUrl)}\" alt=\"${this._escapeHtml(this.state.teamName)}\" /></div>`\n\t\t\t: '';\n\n\t\treturn `\n\t\t\t<div class=\"liveChat-chat-empty\">\n\t\t\t\t${logoHtml}\n\t\t\t\t<h3>${isNewConversation ? 'Start a new conversation' : 'Start the conversation'}</h3>\n\t\t\t</div>\n\t\t`;\n\t}\n\n\t_renderMessageAttachments(attachments) {\n\t\tif (!attachments || attachments.length === 0) return '';\n\t\treturn attachments\n\t\t\t.map((att) => {\n\t\t\t\tif (att.type === 'image') {\n\t\t\t\t\treturn `<img class=\"liveChat-message-image\" src=\"${this._escapeHtml(att.url)}\" alt=\"${this._escapeHtml(att.name || 'image')}\" data-url=\"${this._escapeHtml(att.url)}\" />`;\n\t\t\t\t}\n\t\t\t\treturn `<a class=\"liveChat-message-file\" href=\"${this._escapeHtml(att.url)}\" data-url=\"${this._escapeHtml(att.url)}\" data-name=\"${this._escapeHtml(att.name || 'file')}\">\n\t\t\t\t<iconify-icon icon=\"ph:file\" width=\"18\" height=\"18\"></iconify-icon>\n\t\t\t\t<span>${this._escapeHtml(att.name || 'file')}</span>\n\t\t\t\t<iconify-icon icon=\"ph:download-simple\" width=\"16\" height=\"16\" class=\"liveChat-file-download-icon\"></iconify-icon>\n\t\t\t</a>`;\n\t\t\t})\n\t\t\t.join('');\n\t}\n\n\t_renderMessage(message, isLastInGroup = true) {\n\t\tif (message.isSystem) {\n\t\t\treturn this._renderSystemMessage(message);\n\t\t}\n\n\t\tconst isOwn = message.isOwn;\n\t\tconst messageClass = isOwn\n\t\t\t? 'liveChat-message-own'\n\t\t\t: 'liveChat-message-received';\n\t\tconst timeStr = isLastInGroup\n\t\t\t? this._formatMessageTime(message.timestamp)\n\t\t\t: '';\n\t\tconst attachmentsHtml = this._renderMessageAttachments(message.attachments);\n\t\tconst isOptimistic = message.isOptimistic;\n\n\t\tconst contentHtml = message.content\n\t\t\t? `<div class=\"liveChat-message-content\">${this._formatMessageContent(message.content)}</div>`\n\t\t\t: '';\n\t\tconst bubbleHtml = contentHtml\n\t\t\t? `<div class=\"liveChat-message-bubble\">${contentHtml}</div>`\n\t\t\t: '';\n\n\t\tif (isOwn) {\n\t\t\tconst sentIndicator = isLastInGroup\n\t\t\t\t? `<div class=\"liveChat-message-meta liveChat-message-meta-own\">\n\t\t\t\t\t\t${\n\t\t\t\t\t\t\tisOptimistic\n\t\t\t\t\t\t\t\t? `<span class=\"liveChat-message-sent-status\">Sending…</span>`\n\t\t\t\t\t\t\t\t: `<span class=\"liveChat-message-sent-status\">Sent</span>`\n\t\t\t\t\t\t}\n\t\t\t\t\t\t${timeStr ? `<span>·</span><span>${timeStr}</span>` : ''}\n\t\t\t\t\t</div>`\n\t\t\t\t: '';\n\t\t\treturn `\n\t\t\t\t<div class=\"liveChat-message ${messageClass}${isOptimistic ? ' liveChat-message-optimistic' : ''}\">\n\t\t\t\t\t${bubbleHtml}\n\t\t\t\t\t${attachmentsHtml}\n\t\t\t\t\t${sentIndicator}\n\t\t\t\t</div>\n\t\t\t`;\n\t\t}\n\n\t\tconst avatarHtml = this._renderSenderAvatar(message.sender);\n\t\treturn `\n\t\t\t<div class=\"liveChat-message ${messageClass}\">\n\t\t\t\t<div class=\"liveChat-message-row\">\n\t\t\t\t\t<div class=\"liveChat-message-avatar\">${avatarHtml}</div>\n\t\t\t\t\t<div class=\"liveChat-message-wrapper\">\n\t\t\t\t\t\t${bubbleHtml}\n\t\t\t\t\t\t${attachmentsHtml}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t${timeStr ? `<div class=\"liveChat-message-meta\"><span>${timeStr}</span></div>` : ''}\n\t\t\t</div>\n\t\t`;\n\t}\n\n\t_renderSystemMessage(message) {\n\t\tconst content = message.content || '';\n\t\tconst isJoinLeave =\n\t\t\tcontent.includes('joined the chat') ||\n\t\t\tcontent.includes('left the chat') ||\n\t\t\tcontent.includes('joined the conversation') ||\n\t\t\tcontent.includes('left the conversation');\n\n\t\tif (isJoinLeave && message.sender) {\n\t\t\tconst rawName = message.sender.name || '';\n\t\t\tconst name = rawName\n\t\t\t\t.split(' ')\n\t\t\t\t.map((w) => w.charAt(0).toUpperCase() + w.slice(1))\n\t\t\t\t.join(' ');\n\t\t\tconst logoUrl = this.options.logoUrl;\n\t\t\tconst logoHtml = logoUrl\n\t\t\t\t? `<img src=\"${this._escapeHtml(logoUrl)}\" alt=\"logo\" />`\n\t\t\t\t: name.charAt(0).toUpperCase();\n\t\t\tconst timeStr = this._formatMessageTime(message.timestamp);\n\n\t\t\tconst rawAction = content.replace(rawName, '').trim();\n\t\t\tconst action = rawAction.charAt(0).toUpperCase() + rawAction.slice(1);\n\n\t\t\treturn `\n\t\t\t\t<div class=\"liveChat-message-system-event\">\n\t\t\t\t\t<div class=\"liveChat-message-system-event-avatar\">${logoHtml}</div>\n\t\t\t\t\t<span class=\"liveChat-message-system-event-name\">${this._escapeHtml(name)}</span>\n\t\t\t\t\t<span class=\"liveChat-message-system-event-action\">${this._escapeHtml(action)}</span>\n\t\t\t\t\t${timeStr ? `<span class=\"liveChat-message-system-event-time\">${timeStr}</span>` : ''}\n\t\t\t\t</div>\n\t\t\t`;\n\t\t}\n\n\t\t// Render automated/bot messages as a proper received chat bubble\n\t\tconst teamName = this.state.teamName || 'Support';\n\t\tconst logoUrl = this.options.logoUrl;\n\t\tconst avatarHtml = logoUrl\n\t\t\t? `<div class=\"sdk-avatar sdk-avatar-sm\"><img src=\"${this._escapeHtml(logoUrl)}\" alt=\"${this._escapeHtml(teamName)}\" /></div>`\n\t\t\t: `<div class=\"sdk-avatar sdk-avatar-sm\">${teamName.charAt(0).toUpperCase()}</div>`;\n\t\tconst timeStr = this._formatMessageTime(message.timestamp);\n\n\t\treturn `\n\t\t\t<div class=\"liveChat-message liveChat-message-received\">\n\t\t\t\t<div class=\"liveChat-message-row\">\n\t\t\t\t\t<div class=\"liveChat-message-avatar\">${avatarHtml}</div>\n\t\t\t\t\t<div class=\"liveChat-message-wrapper\">\n\t\t\t\t\t\t<div class=\"liveChat-message-bubble\">\n\t\t\t\t\t\t\t<div class=\"liveChat-message-content\">${this._formatMessageContent(content)}</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t${timeStr ? `<div class=\"liveChat-message-meta\"><span>${timeStr}</span></div>` : ''}\n\t\t\t</div>\n\t\t`;\n\t}\n\n\t_renderSenderAvatar(sender) {\n\t\tif (sender?.avatarUrl) {\n\t\t\treturn `<div class=\"sdk-avatar sdk-avatar-sm\"><img src=\"${sender.avatarUrl}\" alt=\"${sender.name}\" /></div>`;\n\t\t}\n\t\tconst initial = (sender?.name || 'S').charAt(0).toUpperCase();\n\t\treturn `<div class=\"sdk-avatar sdk-avatar-sm\">${initial}</div>`;\n\t}\n\n\t_renderTeamAvatars() {\n\t\tconst avatars = this.state.teamAvatars;\n\t\tif (!avatars || avatars.length === 0) {\n\t\t\treturn '';\n\t\t}\n\n\t\tconst avatarItems = avatars\n\t\t\t.slice(0, 3)\n\t\t\t.map((avatar) => {\n\t\t\t\tif (typeof avatar === 'string' && avatar.startsWith('http')) {\n\t\t\t\t\treturn `<div class=\"sdk-avatar sdk-avatar-md\"><img src=\"${avatar}\" alt=\"Team member\" /></div>`;\n\t\t\t\t}\n\t\t\t\treturn `<div class=\"sdk-avatar sdk-avatar-md\">${avatar.charAt(0).toUpperCase()}</div>`;\n\t\t\t})\n\t\t\t.join('');\n\n\t\treturn `<div class=\"liveChat-avatar-stack\">${avatarItems}</div>`;\n\t}\n\n\t_formatMessageTime(timestamp) {\n\t\tif (!timestamp) return '';\n\t\tconst date = new Date(timestamp);\n\t\tconst datePart = date.toLocaleDateString('en-GB', {\n\t\t\tday: '2-digit',\n\t\t\tmonth: 'short',\n\t\t\tyear: 'numeric',\n\t\t});\n\t\tconst timePart = date.toLocaleTimeString('en-GB', {\n\t\t\thour: '2-digit',\n\t\t\tminute: '2-digit',\n\t\t\thour12: false,\n\t\t});\n\t\treturn `${datePart}, ${timePart}`;\n\t}\n\n\t_formatMessageContent(content) {\n\t\tif (!content) return '';\n\t\treturn content\n\t\t\t.replace(/&/g, '&amp;')\n\t\t\t.replace(/</g, '&lt;')\n\t\t\t.replace(/>/g, '&gt;')\n\t\t\t.replace(/\\n/g, '<br>');\n\t}\n\n\t_appendMessage(message) {\n\t\tconst messagesContainer = this.element.querySelector(\n\t\t\t'.liveChat-chat-messages'\n\t\t);\n\t\tconst emptyState = messagesContainer.querySelector('.liveChat-chat-empty');\n\t\tif (emptyState) {\n\t\t\temptyState.remove();\n\t\t}\n\n\t\tconst messageHtml = this._renderMessage(message);\n\t\tconst tempDiv = document.createElement('div');\n\t\ttempDiv.innerHTML = messageHtml;\n\t\tmessagesContainer.appendChild(tempDiv.firstElementChild);\n\n\t\t// Show scroll pill if user is scrolled up, otherwise scroll to bottom\n\t\tconst isNearBottom =\n\t\t\tmessagesContainer.scrollHeight -\n\t\t\t\tmessagesContainer.scrollTop -\n\t\t\t\tmessagesContainer.clientHeight <\n\t\t\t80;\n\n\t\tif (isNearBottom) {\n\t\t\tthis._scrollToBottom();\n\t\t} else if (!message.isOwn) {\n\t\t\tconst pill = this.element.querySelector('.liveChat-scroll-pill');\n\t\t\tif (pill) pill.style.display = 'flex';\n\t\t}\n\t}\n\n\t_scrollToBottom() {\n\t\tconst messagesContainer = this.element.querySelector(\n\t\t\t'.liveChat-chat-messages'\n\t\t);\n\t\tif (messagesContainer) {\n\t\t\tsetTimeout(() => {\n\t\t\t\tmessagesContainer.scrollTop = messagesContainer.scrollHeight;\n\t\t\t}, 50);\n\t\t}\n\t}\n\n\t_setupScrollPill() {\n\t\tconst messagesContainer = this.element.querySelector(\n\t\t\t'.liveChat-chat-messages'\n\t\t);\n\t\tconst pill = this.element.querySelector('.liveChat-scroll-pill');\n\t\tif (!messagesContainer || !pill) return;\n\n\t\tpill.addEventListener('click', () => {\n\t\t\tthis._scrollToBottom();\n\t\t\tpill.style.display = 'none';\n\t\t});\n\n\t\tmessagesContainer.addEventListener('scroll', () => {\n\t\t\tconst isNearBottom =\n\t\t\t\tmessagesContainer.scrollHeight -\n\t\t\t\t\tmessagesContainer.scrollTop -\n\t\t\t\t\tmessagesContainer.clientHeight <\n\t\t\t\t80;\n\t\t\tif (isNearBottom) {\n\t\t\t\tpill.style.display = 'none';\n\t\t\t}\n\t\t});\n\t}\n\n\t_renderGroupedMessages(messages) {\n\t\tconst GROUP_TIME_GAP = 5 * 60 * 1000; // 5 minutes\n\t\tlet html = '';\n\n\t\tmessages.forEach((msg, index) => {\n\t\t\tconst isLast = index === messages.length - 1;\n\t\t\tconst nextMsg = messages[index + 1];\n\t\t\tconst currentTime = msg.timestamp ? new Date(msg.timestamp).getTime() : 0;\n\t\t\tconst nextTime = nextMsg?.timestamp\n\t\t\t\t? new Date(nextMsg.timestamp).getTime()\n\t\t\t\t: null;\n\t\t\tconst senderKey = msg.isSystem\n\t\t\t\t? 'system'\n\t\t\t\t: msg.isOwn\n\t\t\t\t\t? 'own'\n\t\t\t\t\t: msg.sender?.name || 'agent';\n\t\t\tconst nextSenderKey = nextMsg\n\t\t\t\t? nextMsg.isSystem\n\t\t\t\t\t? 'system'\n\t\t\t\t\t: nextMsg.isOwn\n\t\t\t\t\t\t? 'own'\n\t\t\t\t\t\t: nextMsg.sender?.name || 'agent'\n\t\t\t\t: null;\n\n\t\t\tconst timeGapAfter = nextTime && nextTime - currentTime > GROUP_TIME_GAP;\n\t\t\tconst senderChanges = nextMsg && senderKey !== nextSenderKey;\n\t\t\tconst isLastInGroup = isLast || timeGapAfter || senderChanges;\n\n\t\t\thtml += this._renderMessage(msg, isLastInGroup);\n\t\t});\n\n\t\treturn html;\n\t}\n\n\t_updateSendButtonState() {\n\t\tconst input = this.element.querySelector('.liveChat-compose-input');\n\t\tconst sendBtn = this.element.querySelector('.liveChat-compose-send');\n\t\tif (input && sendBtn) {\n\t\t\tsendBtn.disabled =\n\t\t\t\t!input.value.trim() && this._pendingAttachments.length === 0;\n\t\t}\n\t}\n\n\t_renderAttachmentPreviews() {\n\t\tconst container = this.element.querySelector(\n\t\t\t'.liveChat-compose-attachments-preview'\n\t\t);\n\t\tif (!container) return;\n\n\t\tif (this._pendingAttachments.length === 0) {\n\t\t\tcontainer.innerHTML = '';\n\t\t\tcontainer.style.display = 'none';\n\t\t\treturn;\n\t\t}\n\n\t\tcontainer.style.display = 'flex';\n\t\tcontainer.innerHTML = this._pendingAttachments\n\t\t\t.map((att, i) => {\n\t\t\t\tconst isImage = att.type.startsWith('image');\n\t\t\t\tconst thumb = isImage\n\t\t\t\t\t? `<img class=\"liveChat-attachment-thumb\" src=\"${att.preview}\" alt=\"${this._escapeHtml(att.file.name)}\" />`\n\t\t\t\t\t: `<div class=\"liveChat-attachment-thumb liveChat-attachment-file-icon\"><iconify-icon icon=\"ph:file\" width=\"24\" height=\"24\"></iconify-icon></div>`;\n\t\t\t\treturn `\n\t\t\t\t<div class=\"liveChat-attachment-preview\" data-index=\"${i}\">\n\t\t\t\t\t${thumb}\n\t\t\t\t\t<button class=\"liveChat-attachment-remove\" data-index=\"${i}\" aria-label=\"Remove\">&times;</button>\n\t\t\t\t</div>\n\t\t\t`;\n\t\t\t})\n\t\t\t.join('');\n\n\t\tcontainer.querySelectorAll('.liveChat-attachment-remove').forEach((btn) => {\n\t\t\tbtn.addEventListener('click', (e) => {\n\t\t\t\tconst idx = parseInt(e.currentTarget.dataset.index, 10);\n\t\t\t\tthis._pendingAttachments.splice(idx, 1);\n\t\t\t\tthis._renderAttachmentPreviews();\n\t\t\t\tthis._updateSendButtonState();\n\t\t\t});\n\t\t});\n\t}\n\n\t_attachEvents() {\n\t\tthis.element\n\t\t\t.querySelector('.liveChat-back-btn')\n\t\t\t.addEventListener('click', () => {\n\t\t\t\tthis.state.setView('messages');\n\t\t\t});\n\n\t\tconst mobileCloseBtn = this.element.querySelector(\n\t\t\t'.liveChat-mobile-close-btn'\n\t\t);\n\t\tif (mobileCloseBtn) {\n\t\t\tmobileCloseBtn.addEventListener('click', () => {\n\t\t\t\tthis.state.setOpen(false);\n\t\t\t});\n\t\t}\n\n\t\tconst menuBtn = this.element.querySelector('.liveChat-chat-menu-btn');\n\t\tconst dropdown = this.element.querySelector('.liveChat-chat-menu-dropdown');\n\t\tif (menuBtn && dropdown) {\n\t\t\tmenuBtn.addEventListener('click', (e) => {\n\t\t\t\te.stopPropagation();\n\t\t\t\tdropdown.classList.toggle('open');\n\t\t\t\tif (\n\t\t\t\t\tdropdown.classList.contains('open') &&\n\t\t\t\t\tthis._menuOutsideHandler === null\n\t\t\t\t) {\n\t\t\t\t\tthis._menuOutsideHandler = (ev) => {\n\t\t\t\t\t\tif (!dropdown.contains(ev.target) && !menuBtn.contains(ev.target)) {\n\t\t\t\t\t\t\tdropdown.classList.remove('open');\n\t\t\t\t\t\t\tdocument.removeEventListener('click', this._menuOutsideHandler);\n\t\t\t\t\t\t\tthis._menuOutsideHandler = null;\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\tsetTimeout(\n\t\t\t\t\t\t() => document.addEventListener('click', this._menuOutsideHandler),\n\t\t\t\t\t\t0\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tconst expandWindowBtn = this.element.querySelector(\n\t\t\t'.liveChat-expand-window-btn'\n\t\t);\n\t\tif (expandWindowBtn && dropdown) {\n\t\t\texpandWindowBtn.addEventListener('click', () => {\n\t\t\t\tdropdown.classList.remove('open');\n\t\t\t\tif (this._menuOutsideHandler) {\n\t\t\t\t\tdocument.removeEventListener('click', this._menuOutsideHandler);\n\t\t\t\t\tthis._menuOutsideHandler = null;\n\t\t\t\t}\n\t\t\t\tthis.options.onToggleExpand?.();\n\t\t\t});\n\t\t}\n\n\t\tconst input = this.element.querySelector('.liveChat-compose-input');\n\t\tconst sendBtn = this.element.querySelector('.liveChat-compose-send');\n\n\t\tif (input && sendBtn) {\n\t\t\tinput.addEventListener('input', () => {\n\t\t\t\tinput.style.height = 'auto';\n\t\t\t\tinput.style.height = Math.min(input.scrollHeight, 120) + 'px';\n\t\t\t\tthis._updateSendButtonState();\n\n\t\t\t\tif (input.value.trim()) {\n\t\t\t\t\tthis._startTyping();\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tinput.addEventListener('keydown', (e) => {\n\t\t\t\tif (e.key === 'Enter' && !e.shiftKey) {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\tthis._sendMessage();\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tsendBtn.addEventListener('click', () => {\n\t\t\t\tthis._sendMessage();\n\t\t\t});\n\t\t}\n\n\t\tconst emojiBtn = this.element.querySelector('.liveChat-emoji-btn');\n\t\tif (emojiBtn) {\n\t\t\temojiBtn.addEventListener('click', (e) => {\n\t\t\t\te.stopPropagation();\n\t\t\t\tthis._toggleEmojiPicker();\n\t\t\t});\n\t\t}\n\n\t\tconst attachBtn = this.element.querySelector('.liveChat-compose-attach');\n\t\tconst fileInput = this.element.querySelector(\n\t\t\t'.liveChat-compose-file-input'\n\t\t);\n\n\t\tif (attachBtn && fileInput) {\n\t\t\tattachBtn.addEventListener('click', () => {\n\t\t\t\tfileInput.click();\n\t\t\t});\n\n\t\t\tfileInput.addEventListener('change', (e) => {\n\t\t\t\tconst files = e.target.files;\n\t\t\t\tif (!files) return;\n\t\t\t\tArray.from(files).forEach((file) => {\n\t\t\t\t\tconst reader = new FileReader();\n\t\t\t\t\treader.onload = (ev) => {\n\t\t\t\t\t\tthis._pendingAttachments.push({\n\t\t\t\t\t\t\tfile,\n\t\t\t\t\t\t\tpreview: ev.target.result,\n\t\t\t\t\t\t\ttype: file.type,\n\t\t\t\t\t\t});\n\t\t\t\t\t\tthis._renderAttachmentPreviews();\n\t\t\t\t\t\tthis._updateSendButtonState();\n\t\t\t\t\t};\n\t\t\t\t\treader.readAsDataURL(file);\n\t\t\t\t});\n\t\t\t\tfileInput.value = '';\n\t\t\t});\n\t\t}\n\n\t\tconst messagesContainer = this.element.querySelector(\n\t\t\t'.liveChat-chat-messages'\n\t\t);\n\t\tif (messagesContainer) {\n\t\t\tmessagesContainer.addEventListener('click', (e) => {\n\t\t\t\tconst fileLink = e.target.closest('.liveChat-message-file');\n\t\t\t\tif (fileLink) {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\tconst url = fileLink.dataset.url;\n\t\t\t\t\tconst name = fileLink.dataset.name;\n\t\t\t\t\tthis._downloadFile(url, name);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst img = e.target.closest('.liveChat-message-image');\n\t\t\t\tif (img) {\n\t\t\t\t\tconst url = img.dataset.url || img.src;\n\t\t\t\t\twindow.open(url, '_blank');\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\tasync _downloadFile(url, name) {\n\t\ttry {\n\t\t\tconst response = await fetch(url);\n\t\t\tconst blob = await response.blob();\n\t\t\tconst blobUrl = URL.createObjectURL(blob);\n\t\t\tconst a = document.createElement('a');\n\t\t\ta.href = blobUrl;\n\t\t\ta.download = name || 'download';\n\t\t\ta.style.display = 'none';\n\t\t\tdocument.body.appendChild(a);\n\t\t\ta.click();\n\t\t\tdocument.body.removeChild(a);\n\t\t\tURL.revokeObjectURL(blobUrl);\n\t\t} catch {\n\t\t\twindow.open(url, '_blank');\n\t\t}\n\t}\n\n\t_escapeHtml(text) {\n\t\tif (!text) return '';\n\t\treturn text\n\t\t\t.replace(/&/g, '&amp;')\n\t\t\t.replace(/</g, '&lt;')\n\t\t\t.replace(/>/g, '&gt;')\n\t\t\t.replace(/\"/g, '&quot;');\n\t}\n\n\tasync _sendMessage() {\n\t\tif (this._isConversationClosed) return;\n\n\t\tconst input = this.element.querySelector('.liveChat-compose-input');\n\t\tconst content = input.value.trim();\n\t\tconst hasAttachments = this._pendingAttachments.length > 0;\n\n\t\tif (!content && !hasAttachments) return;\n\n\t\tthis._stopTyping();\n\n\t\tconst attachmentsToSend = [...this._pendingAttachments];\n\t\tconst isNewConversation = !this.state.activeConversationId;\n\n\t\tif (isNewConversation) {\n\t\t\tif (this.options.onStartConversation) {\n\t\t\t\tthis.options.onStartConversation(content, attachmentsToSend);\n\t\t\t}\n\t\t} else {\n\t\t\tconst message = {\n\t\t\t\tid: 'msg_' + Date.now(),\n\t\t\t\tcontent: content,\n\t\t\t\tisOwn: true,\n\t\t\t\tisOptimistic: true,\n\t\t\t\ttimestamp: new Date().toISOString(),\n\t\t\t\tattachments: attachmentsToSend.map((a) => ({\n\t\t\t\t\turl: a.preview,\n\t\t\t\t\ttype: a.type.startsWith('image') ? 'image' : 'file',\n\t\t\t\t\tname: a.file.name,\n\t\t\t\t})),\n\t\t\t};\n\n\t\t\tthis.state.addMessage(this.state.activeConversationId, message);\n\n\t\t\tif (this.options.onSendMessage) {\n\t\t\t\tthis.options.onSendMessage(\n\t\t\t\t\tthis.state.activeConversationId,\n\t\t\t\t\tmessage,\n\t\t\t\t\tattachmentsToSend\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\tinput.value = '';\n\t\tinput.style.height = 'auto';\n\t\tthis._pendingAttachments = [];\n\t\tthis._renderAttachmentPreviews();\n\t\tthis._updateSendButtonState();\n\t}\n\n\t_loadEmojiPicker() {\n\t\tif (document.querySelector('#product7-emoji-picker-script')) {\n\t\t\treturn Promise.resolve();\n\t\t}\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tconst script = document.createElement('script');\n\t\t\tscript.id = 'product7-emoji-picker-script';\n\t\t\tscript.type = 'module';\n\t\t\tscript.src =\n\t\t\t\t'https://cdn.jsdelivr.net/npm/emoji-picker-element@1/index.js';\n\t\t\tscript.onload = resolve;\n\t\t\tscript.onerror = reject;\n\t\t\tdocument.head.appendChild(script);\n\t\t});\n\t}\n\n\tasync _toggleEmojiPicker() {\n\t\tconst existing = this.element.querySelector(\n\t\t\t'.liveChat-emoji-picker-container'\n\t\t);\n\t\tif (existing) {\n\t\t\texisting.remove();\n\t\t\tthis._emojiPickerOpen = false;\n\t\t\tif (this._emojiOutsideHandler) {\n\t\t\t\tdocument.removeEventListener('click', this._emojiOutsideHandler);\n\t\t\t\tthis._emojiOutsideHandler = null;\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\ttry {\n\t\t\tawait this._loadEmojiPicker();\n\t\t} catch {\n\t\t\treturn;\n\t\t}\n\n\t\tconst container = document.createElement('div');\n\t\tcontainer.className = 'liveChat-emoji-picker-container';\n\n\t\tconst picker = document.createElement('emoji-picker');\n\t\tcontainer.appendChild(picker);\n\n\t\tconst compose = this.element.querySelector('.liveChat-chat-compose');\n\t\tcompose.parentNode.insertBefore(container, compose);\n\t\tthis._emojiPickerOpen = true;\n\n\t\tpicker.addEventListener('emoji-click', (e) => {\n\t\t\tthis._insertEmoji(e.detail.unicode);\n\t\t\tcontainer.remove();\n\t\t\tthis._emojiPickerOpen = false;\n\t\t\tif (this._emojiOutsideHandler) {\n\t\t\t\tdocument.removeEventListener('click', this._emojiOutsideHandler);\n\t\t\t\tthis._emojiOutsideHandler = null;\n\t\t\t}\n\t\t});\n\n\t\tthis._emojiOutsideHandler = (e) => {\n\t\t\tif (\n\t\t\t\t!container.contains(e.target) &&\n\t\t\t\t!e.target.closest('.liveChat-emoji-btn')\n\t\t\t) {\n\t\t\t\tcontainer.remove();\n\t\t\t\tthis._emojiPickerOpen = false;\n\t\t\t\tdocument.removeEventListener('click', this._emojiOutsideHandler);\n\t\t\t\tthis._emojiOutsideHandler = null;\n\t\t\t}\n\t\t};\n\t\tsetTimeout(\n\t\t\t() => document.addEventListener('click', this._emojiOutsideHandler),\n\t\t\t0\n\t\t);\n\t}\n\n\t_insertEmoji(emoji) {\n\t\tconst input = this.element.querySelector('.liveChat-compose-input');\n\t\tif (!input) return;\n\t\tconst start = input.selectionStart;\n\t\tconst end = input.selectionEnd;\n\t\tinput.value = input.value.slice(0, start) + emoji + input.value.slice(end);\n\t\tinput.selectionStart = input.selectionEnd = start + emoji.length;\n\t\tinput.focus();\n\t\tinput.dispatchEvent(new Event('input'));\n\t}\n\n\t_startTyping() {\n\t\tif (this._isConversationClosed) return;\n\t\tif (!this._isTyping && this.state.activeConversationId) {\n\t\t\tthis._isTyping = true;\n\t\t\tif (this.options.onTyping) {\n\t\t\t\tthis.options.onTyping(this.state.activeConversationId, true);\n\t\t\t}\n\t\t}\n\n\t\tif (this._typingTimeout) {\n\t\t\tclearTimeout(this._typingTimeout);\n\t\t}\n\t\tthis._typingTimeout = setTimeout(() => {\n\t\t\tthis._stopTyping();\n\t\t}, 3000);\n\t}\n\n\t_stopTyping() {\n\t\tif (this._isTyping && this.state.activeConversationId) {\n\t\t\tthis._isTyping = false;\n\t\t\tif (this.options.onTyping) {\n\t\t\t\tthis.options.onTyping(this.state.activeConversationId, false);\n\t\t\t}\n\t\t}\n\t\tif (this._typingTimeout) {\n\t\t\tclearTimeout(this._typingTimeout);\n\t\t\tthis._typingTimeout = null;\n\t\t}\n\t}\n\n\t_showTypingIndicator(userName) {\n\t\tif (this._typingIndicator) {\n\t\t\tthis._typingIndicator.style.display = 'flex';\n\t\t\tconst textEl = this._typingIndicator.querySelector(\n\t\t\t\t'.liveChat-typing-text'\n\t\t\t);\n\t\t\tif (textEl) {\n\t\t\t\ttextEl.textContent = `${userName || 'Support'} is typing...`;\n\t\t\t}\n\t\t\tthis._scrollToBottom();\n\t\t}\n\t}\n\n\t_hideTypingIndicator() {\n\t\tif (this._typingIndicator) {\n\t\t\tthis._typingIndicator.style.display = 'none';\n\t\t}\n\t}\n\n\tdestroy() {\n\t\tif (this._unsubscribe) {\n\t\t\tthis._unsubscribe();\n\t\t}\n\t\tif (this._typingTimeout) {\n\t\t\tclearTimeout(this._typingTimeout);\n\t\t}\n\t\tthis._stopTyping();\n\t\tif (this._emojiOutsideHandler) {\n\t\t\tdocument.removeEventListener('click', this._emojiOutsideHandler);\n\t\t}\n\t\tif (this._menuOutsideHandler) {\n\t\t\tdocument.removeEventListener('click', this._menuOutsideHandler);\n\t\t}\n\t\tif (this.element && this.element.parentNode) {\n\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t}\n\t}\n}\n","export class ConversationsView {\n\tconstructor(state, options = {}) {\n\t\tthis.state = state;\n\t\tthis.options = options;\n\t\tthis.element = null;\n\t\tthis._unsubscribe = null;\n\t\tthis.avatarColors = [\n\t\t\t'#155EEF',\n\t\t\t'#8b5cf6',\n\t\t\t'#10b981',\n\t\t\t'#f59e0b',\n\t\t\t'#ef4444',\n\t\t\t'#ec4899',\n\t\t\t'#06b6d4',\n\t\t];\n\t}\n\n\trender() {\n\t\tthis.element = document.createElement('div');\n\t\tthis.element.className = 'liveChat-view liveChat-conversations-view';\n\n\t\tthis._updateContent();\n\t\tthis._attachEvents();\n\n\t\tthis._unsubscribe = this.state.subscribe((type) => {\n\t\t\tif (\n\t\t\t\ttype === 'conversationsUpdate' ||\n\t\t\t\ttype === 'conversationAdded' ||\n\t\t\t\ttype === 'conversationRead' ||\n\t\t\t\ttype === 'conversationUpdated'\n\t\t\t) {\n\t\t\t\tthis._updateContent();\n\t\t\t}\n\t\t});\n\n\t\treturn this.element;\n\t}\n\n\t_getAvatarColor(name) {\n\t\t// Generate consistent color based on name\n\t\tconst charCode = (name || 'S').charCodeAt(0);\n\t\treturn this.avatarColors[charCode % this.avatarColors.length];\n\t}\n\n\t_updateContent() {\n\t\tconst conversations = this.state.conversations;\n\n\t\tlet conversationsHtml;\n\t\tif (conversations.length === 0) {\n\t\t\tconversationsHtml = `\n <div class=\"liveChat-empty-state\">\n <div class=\"liveChat-empty-state-icon\">\n <iconify-icon icon=\"ph:chat-circle\" width=\"48\" height=\"48\"></iconify-icon>\n </div>\n <h3>No conversations yet</h3>\n <p>Start a new conversation with our team</p>\n </div>\n `;\n\t\t} else {\n\t\t\tconversationsHtml = `\n <div class=\"liveChat-conversations-list\">\n ${conversations.map((conv) => this._renderConversationItem(conv)).join('')}\n </div>\n `;\n\t\t}\n\n\t\tthis.element.innerHTML = `\n <div class=\"liveChat-conversations-header\">\n <h2>Messages</h2>\n <button class=\"sdk-close-btn liveChat-mobile-close-btn\" aria-label=\"Close\">\n <iconify-icon icon=\"ph:x\" width=\"18\" height=\"18\"></iconify-icon>\n</button>\n </div>\n\n <div class=\"liveChat-conversations-body\">\n ${conversationsHtml}\n </div>\n\n <div class=\"liveChat-conversations-footer\">\n <button class=\"liveChat-new-message-btn\">\n <iconify-icon icon=\"ph:pencil-simple\" width=\"16\" height=\"16\" style=\"flex-shrink: 0; color: var(--msg-text-secondary);\"></iconify-icon>\n <span style=\"flex: 1;\">New conversation</span>\n <iconify-icon icon=\"ph:caret-right\" width=\"16\" height=\"16\" style=\"flex-shrink: 0; color: var(--msg-text-tertiary);\"></iconify-icon>\n </button>\n </div>\n `;\n\n\t\tthis._attachEvents();\n\t}\n\n\t_renderConversationItem(conversation) {\n\t\tconst isClosed = conversation.status === 'closed';\n\t\tconst unreadClass = conversation.unread > 0 ? 'unread' : '';\n\t\tconst closedClass = isClosed ? 'closed' : '';\n\t\tconst timeAgo = this._formatTimeAgo(conversation.lastMessageTime);\n\t\tconst avatarsHtml = this._renderConversationAvatars(\n\t\t\tconversation.participants\n\t\t);\n\n\t\treturn `\n\t\t\t<div class=\"liveChat-conversation-item ${unreadClass} ${closedClass}\" data-conversation-id=\"${conversation.id}\">\n\t\t\t\t<div class=\"liveChat-conversation-avatars\">\n\t\t\t\t\t${avatarsHtml}\n\t\t\t\t</div>\n\t\t\t\t<div class=\"liveChat-conversation-content\">\n\t\t\t\t\t<div class=\"liveChat-conversation-header\">\n\t\t\t\t\t\t<span class=\"liveChat-conversation-title\">${conversation.title || 'Chat with team'}</span>\n\t\t\t\t\t\t<span class=\"liveChat-conversation-time\">${timeAgo}</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"liveChat-conversation-preview\">\n\t\t\t\t\t\t${conversation.unread > 0 ? '<span class=\"liveChat-unread-dot\"></span>' : ''}\n\t\t\t\t\t\t${isClosed ? '<span class=\"liveChat-conversation-resolved-badge\">Resolved</span>' : ''}\n\t\t\t\t\t\t<span class=\"liveChat-conversation-message\">${this._truncateMessage(conversation.lastMessage)}</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t`;\n\t}\n\n\t_renderConversationAvatars(participants) {\n\t\tif (!participants || participants.length === 0) {\n\t\t\tconst color = this._getAvatarColor('S');\n\t\t\treturn `<div class=\"sdk-avatar sdk-avatar-md\" style=\"background-color: ${color};\">S</div>`;\n\t\t}\n\n\t\tconst p = participants[0];\n\t\tif (p.avatarUrl) {\n\t\t\treturn `<div class=\"sdk-avatar sdk-avatar-md\"><img src=\"${p.avatarUrl}\" alt=\"${p.name}\" /></div>`;\n\t\t}\n\t\tconst initial = (p.name || 'S').charAt(0).toUpperCase();\n\t\tconst color = this._getAvatarColor(p.name);\n\t\treturn `<div class=\"sdk-avatar sdk-avatar-md\" style=\"background-color: ${color};\">${initial}</div>`;\n\t}\n\n\t_renderAvatarStack() {\n\t\tconst avatars = this.state.teamAvatars;\n\t\tif (!avatars || avatars.length === 0) {\n\t\t\tconst color1 = this._getAvatarColor('S');\n\t\t\tconst color2 = this._getAvatarColor('T');\n\t\t\treturn `\n\t\t\t\t<div class=\"liveChat-avatar-stack\">\n\t\t\t\t\t<div class=\"sdk-avatar sdk-avatar-sm\" style=\"background-color: ${color1};\">S</div>\n\t\t\t\t\t<div class=\"sdk-avatar sdk-avatar-sm\" style=\"background-color: ${color2};\">T</div>\n\t\t\t\t</div>\n\t\t\t`;\n\t\t}\n\n\t\tconst avatarItems = avatars\n\t\t\t.slice(0, 2)\n\t\t\t.map((avatar) => {\n\t\t\t\tif (typeof avatar === 'string' && avatar.startsWith('http')) {\n\t\t\t\t\treturn `<div class=\"sdk-avatar sdk-avatar-sm\"><img src=\"${avatar}\" alt=\"Team member\" /></div>`;\n\t\t\t\t}\n\t\t\t\tconst initial = avatar.charAt(0).toUpperCase();\n\t\t\t\tconst color = this._getAvatarColor(avatar);\n\t\t\t\treturn `<div class=\"sdk-avatar sdk-avatar-sm\" style=\"background-color: ${color};\">${initial}</div>`;\n\t\t\t})\n\t\t\t.join('');\n\n\t\treturn `<div class=\"liveChat-avatar-stack\">${avatarItems}</div>`;\n\t}\n\n\t_formatTimeAgo(timestamp) {\n\t\tif (!timestamp) return '';\n\t\tconst date = new Date(timestamp);\n\t\tconst now = new Date();\n\t\tconst diffMs = now - date;\n\t\tconst diffMins = Math.floor(diffMs / 60000);\n\t\tconst diffHours = Math.floor(diffMs / 3600000);\n\t\tconst diffDays = Math.floor(diffMs / 86400000);\n\n\t\tif (diffMins < 1) return 'now';\n\t\tif (diffMins < 60) return `${diffMins}m`;\n\t\tif (diffHours < 24) return `${diffHours}h`;\n\t\tif (diffDays < 7) return `${diffDays}d`;\n\t\treturn date.toLocaleDateString('en-US', { month: 'short', day: 'numeric' });\n\t}\n\n\t_truncateMessage(message) {\n\t\tif (!message) return 'No messages yet';\n\t\tconst maxLength = 50;\n\t\tif (message.length <= maxLength) return message;\n\t\treturn message.substring(0, maxLength) + '...';\n\t}\n\n\t_attachEvents() {\n\t\tconst closeBtn = this.element.querySelector('.sdk-close-btn');\n\t\tif (closeBtn) {\n\t\t\tcloseBtn.addEventListener('click', () => {\n\t\t\t\tthis.state.setOpen(false);\n\t\t\t});\n\t\t}\n\n\t\tthis.element\n\t\t\t.querySelectorAll('.liveChat-conversation-item')\n\t\t\t.forEach((item) => {\n\t\t\t\titem.addEventListener('click', () => {\n\t\t\t\t\tconst convId = item.dataset.conversationId;\n\t\t\t\t\tthis.state.setActiveConversation(convId);\n\t\t\t\t\tthis.state.markAsRead(convId);\n\t\t\t\t\tthis.state.setView('chat');\n\n\t\t\t\t\tif (this.options.onSelectConversation) {\n\t\t\t\t\t\tthis.options.onSelectConversation(convId);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\n\t\tconst newMsgBtn = this.element.querySelector('.liveChat-new-message-btn');\n\t\tif (newMsgBtn) {\n\t\t\tnewMsgBtn.addEventListener('click', () => {\n\t\t\t\tthis._startNewConversation();\n\t\t\t});\n\t\t}\n\t}\n\n\t_startNewConversation() {\n\t\t// If there's an open conversation, route to it instead of creating new\n\t\tconst openConversation = this.state.conversations.find(\n\t\t\t(c) => c.status === 'open'\n\t\t);\n\n\t\tif (openConversation) {\n\t\t\tthis.state.setActiveConversation(openConversation.id);\n\t\t\tthis.state.markAsRead(openConversation.id);\n\t\t\tthis.state.setView('chat');\n\t\t\tif (this.options.onSelectConversation) {\n\t\t\t\tthis.options.onSelectConversation(openConversation.id);\n\t\t\t}\n\t\t} else {\n\t\t\tthis.state.setActiveConversation(null);\n\t\t\tif (this.options.onStartNewConversation) {\n\t\t\t\tthis.options.onStartNewConversation();\n\t\t\t} else {\n\t\t\t\tthis.state.setView('chat');\n\t\t\t}\n\t\t}\n\t}\n\n\tdestroy() {\n\t\tif (this._unsubscribe) {\n\t\t\tthis._unsubscribe();\n\t\t}\n\t\tif (this.element && this.element.parentNode) {\n\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t}\n\t}\n}\n","export class HelpView {\n\tconstructor(state, options = {}) {\n\t\tthis.state = state;\n\t\tthis.options = options;\n\t\tthis.element = null;\n\t\tthis._unsubscribe = null;\n\t}\n\n\trender() {\n\t\tthis.element = document.createElement('div');\n\t\tthis.element.className = 'liveChat-view liveChat-help-view';\n\n\t\tthis._updateContent();\n\n\t\tthis._unsubscribe = this.state.subscribe((type) => {\n\t\t\tif (type === 'helpArticlesUpdate' || type === 'helpSearchChange') {\n\t\t\t\tthis._updateCollectionsList();\n\t\t\t}\n\t\t});\n\n\t\treturn this.element;\n\t}\n\n\t_updateContent() {\n\t\tconst searchQuery = this.state.helpSearchQuery || '';\n\n\t\tthis.element.innerHTML = `\n\t\t\t<div class=\"liveChat-help-header\">\n\t\t\t\t<div class=\"liveChat-help-header-top\">\n\t\t\t\t\t<h2>Help</h2>\n\t\t\t\t\t<button class=\"sdk-close-btn liveChat-help-close-btn liveChat-mobile-close-btn\" aria-label=\"Close\">\n\t\t\t\t\t\t<iconify-icon icon=\"ph:x\" width=\"18\" height=\"18\"></iconify-icon>\n\t\t\t\t\t</button>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"liveChat-help-search-wrap\">\n\t\t\t\t\t<span class=\"liveChat-help-search-icon\">\n\t\t\t\t\t\t<iconify-icon icon=\"ph:magnifying-glass\" width=\"16\" height=\"16\"></iconify-icon>\n\t\t\t\t\t</span>\n\t\t\t\t\t<input\n\t\t\t\t\t\ttype=\"text\"\n\t\t\t\t\t\tclass=\"liveChat-help-search-input\"\n\t\t\t\t\t\tplaceholder=\"Search for help...\"\n\t\t\t\t\t\tvalue=\"${searchQuery}\"\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class=\"liveChat-help-body\">\n\t\t\t\t<div class=\"liveChat-help-collections\"></div>\n\t\t\t</div>\n\t\t`;\n\n\t\tthis._updateCollectionsList();\n\t\tthis._attachEvents();\n\t}\n\n\t_updateCollectionsList() {\n\t\tconst container = this.element.querySelector('.liveChat-help-collections');\n\t\tconst collections = (this.state.helpArticles || []).filter(\n\t\t\t(c) => (c.articleCount || 0) > 0\n\t\t);\n\t\tconst searchQuery = (this.state.helpSearchQuery || '').toLowerCase();\n\n\t\tconst filtered = searchQuery\n\t\t\t? collections.filter(\n\t\t\t\t\t(c) =>\n\t\t\t\t\t\tc.title.toLowerCase().includes(searchQuery) ||\n\t\t\t\t\t\t(c.description && c.description.toLowerCase().includes(searchQuery))\n\t\t\t\t)\n\t\t\t: collections;\n\n\t\tif (filtered.length === 0) {\n\t\t\tcontainer.innerHTML = this._renderEmptyState();\n\t\t\treturn;\n\t\t}\n\n\t\tcontainer.innerHTML = filtered\n\t\t\t.map((c) => this._renderCollectionItem(c))\n\t\t\t.join('');\n\t\tthis._attachCollectionEvents();\n\t}\n\n\t_avatarColors = [\n\t\t{ bg: '#EF4444', text: '#FFFFFF' },\n\t\t{ bg: '#F97316', text: '#FFFFFF' },\n\t\t{ bg: '#F59E0B', text: '#FFFFFF' },\n\t\t{ bg: '#10B981', text: '#FFFFFF' },\n\t\t{ bg: '#06B6D4', text: '#FFFFFF' },\n\t\t{ bg: '#3B82F6', text: '#FFFFFF' },\n\t\t{ bg: '#8B5CF6', text: '#FFFFFF' },\n\t\t{ bg: '#EC4899', text: '#FFFFFF' },\n\t];\n\n\t_getAvatarColor(id) {\n\t\tconst hash = id\n\t\t\t.split('')\n\t\t\t.reduce((acc, char) => acc + char.charCodeAt(0), 0);\n\t\treturn this._avatarColors[hash % this._avatarColors.length];\n\t}\n\n\t_getInitials(name) {\n\t\tif (!name) return 'A';\n\t\treturn name\n\t\t\t.split(' ')\n\t\t\t.map((n) => n[0])\n\t\t\t.join('')\n\t\t\t.toUpperCase()\n\t\t\t.slice(0, 2);\n\t}\n\n\t_renderAuthorAvatar(collection) {\n\t\tif (collection.author?.picture) {\n\t\t\treturn `<img\n\t\t\t\tsrc=\"${collection.author.picture}\"\n\t\t\t\talt=\"${collection.author.name || ''}\"\n\t\t\t\tclass=\"liveChat-help-collection-avatar\"\n\t\t\t\ttitle=\"${collection.author.name || ''}\"\n\t\t\t/>`;\n\t\t}\n\n\t\tconst { bg, text } = this._getAvatarColor(collection.id);\n\t\tconst initials = collection.author?.name\n\t\t\t? this._getInitials(collection.author.name)\n\t\t\t: 'A';\n\n\t\treturn `<span\n\t\t\tclass=\"liveChat-help-collection-avatar liveChat-help-collection-avatar--initials\"\n\t\t\tstyle=\"background-color: ${bg}; color: ${text};\"\n\t\t\ttitle=\"${collection.author?.name || 'Author'}\"\n\t\t>${initials}</span>`;\n\t}\n\n\t_resolveCollectionIcon(icon) {\n\t\tif (!icon) return this._defaultCollectionIcon();\n\n\t\tif (icon.trimStart().startsWith('<')) {\n\t\t\treturn `<span class=\"liveChat-help-collection-icon\">${icon}</span>`;\n\t\t}\n\n\t\tif (icon.startsWith('ph:')) {\n\t\t\treturn `<span class=\"liveChat-help-collection-icon\">\n\t\t\t\t<iconify-icon icon=\"${icon}\"></iconify-icon>\n\t\t\t</span>`;\n\t\t}\n\n\t\treturn this._defaultCollectionIcon();\n\t}\n\n\t_defaultCollectionIcon() {\n\t\treturn `<span class=\"liveChat-help-collection-icon\">\n\t\t\t<iconify-icon icon=\"ph:book-open\"></iconify-icon>\n\t\t</span>`;\n\t}\n\n\t_renderCollectionItem(collection) {\n\t\tconst articleCount = collection.articleCount || 0;\n\n\t\treturn `\n\t\t\t<div class=\"liveChat-help-collection\" data-collection-id=\"${collection.id}\">\n\t\t\t\t${this._resolveCollectionIcon(collection.icon)}\n\t\t\t\t<div class=\"liveChat-help-collection-content\">\n\t\t\t\t\t<div class=\"liveChat-help-collection-title\">${collection.title}</div>\n\t\t\t\t\t${collection.description ? `<p class=\"liveChat-help-collection-desc\">${collection.description}</p>` : ''}\n\t\t\t\t\t<div class=\"liveChat-help-collection-meta\">\n\t\t\t\t\t\t${this._renderAuthorAvatar(collection)}\n\t\t\t\t\t\t<span class=\"liveChat-help-collection-count\">\n\t\t\t\t\t\t\t${articleCount} ${articleCount === 1 ? 'article' : 'articles'}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t`;\n\t}\n\n\t_renderEmptyState() {\n\t\tif (this.state.helpSearchQuery) {\n\t\t\treturn `\n\t\t\t\t<div class=\"liveChat-empty-state\">\n\t\t\t\t\t<div class=\"liveChat-empty-state-icon\">\n\t\t\t\t\t\t<iconify-icon icon=\"ph:magnifying-glass\" width=\"48\" height=\"48\"></iconify-icon>\n\t\t\t\t\t</div>\n\t\t\t\t\t<h3>No results found</h3>\n\t\t\t\t\t<p>Try a different search term</p>\n\t\t\t\t</div>\n\t\t\t`;\n\t\t}\n\n\t\treturn `\n\t\t\t<div class=\"liveChat-empty-state\">\n\t\t\t\t<div class=\"liveChat-empty-state-icon\">\n\t\t\t\t\t<iconify-icon icon=\"ph:books\" width=\"48\" height=\"48\"></iconify-icon>\n\t\t\t\t</div>\n\t\t\t\t<h3>Help collections</h3>\n\t\t\t\t<p>No collections available yet</p>\n\t\t\t</div>\n\t\t`;\n\t}\n\n\t_attachEvents() {\n\t\tconst mobileCloseBtn = this.element.querySelector(\n\t\t\t'.liveChat-help-close-btn'\n\t\t);\n\t\tif (mobileCloseBtn) {\n\t\t\tmobileCloseBtn.addEventListener('click', () => {\n\t\t\t\tthis.state.setOpen(false);\n\t\t\t});\n\t\t}\n\n\t\tconst searchInput = this.element.querySelector(\n\t\t\t'.liveChat-help-search-input'\n\t\t);\n\t\tlet searchTimeout;\n\t\tsearchInput.addEventListener('input', (e) => {\n\t\t\tclearTimeout(searchTimeout);\n\t\t\tsearchTimeout = setTimeout(() => {\n\t\t\t\tthis.state.setHelpSearchQuery(e.target.value);\n\t\t\t}, 300);\n\t\t});\n\n\t\tthis._attachCollectionEvents();\n\t}\n\n\t_attachCollectionEvents() {\n\t\tthis.element\n\t\t\t.querySelectorAll('.liveChat-help-collection')\n\t\t\t.forEach((item) => {\n\t\t\t\titem.addEventListener('click', () => {\n\t\t\t\t\tconst collection = this.state.helpArticles.find(\n\t\t\t\t\t\t(c) => c.id === item.dataset.collectionId\n\t\t\t\t\t);\n\t\t\t\t\tif (collection?.url) {\n\t\t\t\t\t\twindow.open(collection.url, '_blank');\n\t\t\t\t\t} else if (this.options.onArticleClick) {\n\t\t\t\t\t\tthis.options.onArticleClick(collection);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t}\n\n\tdestroy() {\n\t\tif (this._unsubscribe) this._unsubscribe();\n\t\tif (this.element?.parentNode)\n\t\t\tthis.element.parentNode.removeChild(this.element);\n\t}\n}\n","export class HomeView {\n\tconstructor(state, options = {}) {\n\t\tthis.state = state;\n\t\tthis.options = options;\n\t\tthis.element = null;\n\t\tthis._unsubscribe = null;\n\t}\n\n\trender() {\n\t\tthis.element = document.createElement('div');\n\t\tthis.element.className = 'liveChat-view liveChat-home-view';\n\n\t\tthis._updateContent();\n\n\t\tthis._unsubscribe = this.state.subscribe((type) => {\n\t\t\tif (\n\t\t\t\ttype === 'homeChangelogUpdate' ||\n\t\t\t\ttype === 'conversationsUpdate' ||\n\t\t\t\ttype === 'availabilityUpdate' ||\n\t\t\t\ttype === 'settingsUpdate'\n\t\t\t) {\n\t\t\t\tthis._updateContent();\n\t\t\t}\n\t\t});\n\n\t\treturn this.element;\n\t}\n\n\t_updateContent() {\n\t\tconst isUnavailable = this.state.businessHoursState === 'offline' || this.state.businessHoursState === 'away';\n\t\tconst avatarsHtml = (this.state.showAvatars && !isUnavailable) ? this._renderAvatarStack() : '';\n\t\tconst recentChangelogHtml = this._renderRecentChangelog();\n\t\tconst availabilityHtml = this._renderAvailabilityStatus();\n\n\t\tthis.element.innerHTML = `\n\t\t\t<div class=\"liveChat-home-scroll\">\n\t\t\t\t<div class=\"liveChat-home-header\">\n\t\t\t\t\t<div class=\"liveChat-home-header-top\">\n\t\t\t\t\t\t<div class=\"liveChat-home-logo\">\n\t\t\t\t\t\t\t${this.options.logoUrl ? `<img src=\"${this.options.logoUrl}\" alt=\"${this.state.teamName}\" />` : ''}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class=\"liveChat-home-avatars\">${avatarsHtml}</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"liveChat-home-welcome\">\n\t\t\t\t\t\t<span class=\"liveChat-home-greeting\">${this.state.greetingMessage}</span>\n\t\t\t\t\t\t<span class=\"liveChat-home-question\">${this.state.welcomeMessage}</span>\n\t\t\t\t\t\t${availabilityHtml}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div class=\"liveChat-home-body\">\n\t\t\t\t\t${this._renderMessageButton()}\n\t\t\t\t\t${this._renderFeaturedCard()}\n\t\t\t\t\t${recentChangelogHtml}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t`;\n\n\t\tthis._attachEvents();\n\t}\n\n\t_renderAvatarStack() {\n\t\tconst avatars = this.state.teamAvatars;\n\t\tconst colors = ['#5856d6', '#007aff', '#34c759', '#ff9500'];\n\n\t\tif (!avatars || avatars.length === 0) {\n\t\t\treturn '';\n\t\t}\n\n\t\tconst avatarItems = avatars\n\t\t\t.slice(0, 4)\n\t\t\t.map((avatar, index) => {\n\t\t\t\tif (typeof avatar === 'string' && avatar.startsWith('http')) {\n\t\t\t\t\treturn `<div class=\"sdk-avatar sdk-avatar-lg\"><img src=\"${avatar}\" alt=\"Team member\" /></div>`;\n\t\t\t\t}\n\t\t\t\treturn `<div class=\"sdk-avatar sdk-avatar-lg\" style=\"background: ${colors[index % colors.length]};\">${avatar.charAt(0).toUpperCase()}</div>`;\n\t\t\t})\n\t\t\t.join('');\n\n\t\treturn `<div class=\"liveChat-avatar-stack\">${avatarItems}</div>`;\n\t}\n\n\t_renderAvailabilityStatus() {\n\t\tconst businessState = this.state.businessHoursState;\n\n\t\tif (businessState === 'offline') {\n\t\t\tlet offlineText = \"We're currently closed\";\n\t\t\tif (this.state.holidayName) {\n\t\t\t\tofflineText = `Closed for ${this.state.holidayName}`;\n\t\t\t} else if (this.state.nextOpenAt) {\n\t\t\t\tconst opens = new Date(this.state.nextOpenAt);\n\t\t\t\tconst now = new Date();\n\t\t\t\tconst diffHours = Math.round((opens - now) / 3600000);\n\t\t\t\tofflineText = diffHours < 24\n\t\t\t\t\t? `Opens in ${diffHours}h`\n\t\t\t\t\t: `Opens ${opens.toLocaleDateString('en-US', { weekday: 'short', hour: 'numeric', hour12: true })}`;\n\t\t\t}\n\t\t\treturn `\n\t\t\t\t<div class=\"liveChat-home-availability\">\n\t\t\t\t\t<span class=\"liveChat-availability-dot liveChat-availability-away\"></span>\n\t\t\t\t\t<span class=\"liveChat-availability-text\">${offlineText}</span>\n\t\t\t\t</div>\n\t\t\t`;\n\t\t}\n\n\t\tif (businessState === 'away') {\n\t\t\treturn `\n\t\t\t\t<div class=\"liveChat-home-availability\">\n\t\t\t\t\t<span class=\"liveChat-availability-dot liveChat-availability-away\"></span>\n\t\t\t\t\t<span class=\"liveChat-availability-text\">${this.state.responseTime}</span>\n\t\t\t\t</div>\n\t\t\t`;\n\t\t}\n\n\t\tif (this.state.agentsOnline) {\n\t\t\treturn `\n\t\t\t\t<div class=\"liveChat-home-availability\">\n\t\t\t\t\t<span class=\"liveChat-availability-dot liveChat-availability-online\"></span>\n\t\t\t\t\t<span class=\"liveChat-availability-text\">${this.state.onlineMessage}</span>\n\t\t\t\t</div>\n\t\t\t`;\n\t\t}\n\n\t\treturn `\n\t\t\t<div class=\"liveChat-home-availability\">\n\t\t\t\t<span class=\"liveChat-availability-dot liveChat-availability-away\"></span>\n\t\t\t\t<span class=\"liveChat-availability-text\">${this.state.responseTime}</span>\n\t\t\t</div>\n\t\t`;\n\t}\n\n\t_renderMessageButton() {\n\t\tconst openConversation = this.state.conversations.find(\n\t\t\t(c) => c.status === 'open'\n\t\t);\n\n\t\tconst sendIcon = `<iconify-icon icon=\"ph:paper-plane-right\" width=\"20\" height=\"20\" style=\"flex-shrink: 0;\"></iconify-icon>`;\n\t\tconst caretIcon = `<iconify-icon icon=\"ph:caret-right\" width=\"20\" height=\"20\" style=\"flex-shrink: 0;\"></iconify-icon>`;\n\n\t\tconst responseTime =\n\t\t\tthis.state.responseTime || 'We typically reply within a few minutes';\n\n\t\tconst recentCardHtml = openConversation\n\t\t\t? this._renderRecentMessageCard(openConversation)\n\t\t\t: '';\n\n\t\treturn `\n\t\t\t${recentCardHtml}\n\t\t\t<button class=\"liveChat-home-message-btn\">\n\t\t\t\t<div class=\"liveChat-home-continue-info\">\n\t\t\t\t\t<span class=\"liveChat-home-continue-label\">${this.state.startButtonText}</span>\n\t\t\t\t\t<span class=\"liveChat-home-message-subtext\">${responseTime}</span>\n\t\t\t\t</div>\n\t\t\t\t${sendIcon}\n\t\t\t</button>\n\t\t\t<button class=\"liveChat-home-message-btn liveChat-feedback-btn\" data-action=\"feedback\">\n\t\t\t\t<span>Leave us feedback</span>\n\t\t\t\t${caretIcon}\n\t\t\t</button>\n\t\t`;\n\t}\n\n\t_renderRecentMessageCard(conversation) {\n\t\tconst logoUrl = this.options.logoUrl;\n\t\tconst teamName = this.state.teamName || 'Support';\n\t\tconst logoHtml = logoUrl\n\t\t\t? `<div class=\"liveChat-home-recent-avatar liveChat-home-recent-avatar-logo\"><img src=\"${logoUrl}\" alt=\"${teamName}\" /></div>`\n\t\t\t: `<div class=\"liveChat-home-recent-avatar\" style=\"background: var(--color-primary);\">${teamName.charAt(0).toUpperCase()}</div>`;\n\n\t\tconst title = conversation.title || teamName;\n\t\tconst timeAgo = this._formatTimeAgo(conversation.lastMessageTime);\n\t\tconst preview = conversation.lastMessage\n\t\t\t? conversation.lastMessage.substring(0, 48) +\n\t\t\t\t(conversation.lastMessage.length > 48 ? '...' : '')\n\t\t\t: '';\n\t\tconst hasUnread = conversation.unread > 0;\n\n\t\treturn `\n\t\t\t<div class=\"liveChat-home-recent-card\" data-conversation-id=\"${conversation.id}\">\n\t\t\t\t<div class=\"liveChat-home-recent-card-label\">Recent message</div>\n\t\t\t\t<div class=\"liveChat-home-recent-card-row\">\n\t\t\t\t\t${logoHtml}\n\t\t\t\t\t<div class=\"liveChat-home-recent-card-content\">\n\t\t\t\t\t\t<div class=\"liveChat-home-recent-card-header\">\n\t\t\t\t\t\t\t<span class=\"liveChat-home-recent-card-name\">${title}</span>\n\t\t\t\t\t\t\t<span class=\"liveChat-home-recent-card-time\">${timeAgo}</span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class=\"liveChat-home-recent-card-preview\">\n\t\t\t\t\t\t\t<span class=\"liveChat-home-recent-card-message\">${preview}</span>\n\t\t\t\t\t\t\t${hasUnread ? '<span class=\"liveChat-home-recent-unread-dot\"></span>' : ''}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t`;\n\t}\n\n\t_formatTimeAgo(timestamp) {\n\t\tif (!timestamp) return '';\n\t\tconst date = new Date(timestamp);\n\t\tconst now = new Date();\n\t\tconst diffMs = now - date;\n\t\tconst diffMins = Math.floor(diffMs / 60000);\n\t\tconst diffHours = Math.floor(diffMs / 3600000);\n\t\tconst diffDays = Math.floor(diffMs / 86400000);\n\t\tif (diffMins < 1) return 'now';\n\t\tif (diffMins < 60) return `${diffMins}m`;\n\t\tif (diffHours < 24) return `${diffHours}h`;\n\t\tif (diffDays < 7) return `${diffDays}d`;\n\t\treturn date.toLocaleDateString('en-US', { month: 'short', day: 'numeric' });\n\t}\n\n\t_renderFeaturedCard() {\n\t\tif (!this.options.featuredContent) {\n\t\t\treturn '';\n\t\t}\n\n\t\tconst { title, description, imageUrl, action } =\n\t\t\tthis.options.featuredContent;\n\n\t\treturn `\n\t\t\t<div class=\"liveChat-home-featured\">\n\t\t\t\t${imageUrl ? `<img src=\"${imageUrl}\" alt=\"${title}\" class=\"liveChat-home-featured-image\" onerror=\"this.style.display='none';\" />` : ''}\n\t\t\t\t<div class=\"liveChat-home-featured-divider\"></div>\n\t\t\t\t<div class=\"liveChat-home-featured-content\">\n\t\t\t\t\t<h3>${title}</h3>\n\t\t\t\t\t${description ? `<p>${description}</p>` : ''}\n\t\t\t\t\t${action ? `<button class=\"sdk-btn sdk-btn-primary liveChat-home-featured-btn\" data-action=\"${action.type}\" data-value=\"${action.value}\">${action.label}</button>` : ''}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t`;\n\t}\n\n\t_renderRecentChangelog() {\n\t\tconst changelogItems = this.state.homeChangelogItems;\n\t\tif (changelogItems.length === 0) {\n\t\t\treturn '';\n\t\t}\n\n\t\tconst changelogHtml = changelogItems\n\t\t\t.map(\n\t\t\t\t(item) => `\n\t\t\t<div class=\"liveChat-home-changelog-card\" data-changelog-id=\"${item.id}\">\n\t\t\t\t${\n\t\t\t\t\titem.coverImage\n\t\t\t\t\t\t? `\n\t\t\t\t\t<div class=\"liveChat-home-changelog-cover\">\n\t\t\t\t\t\t<img src=\"${item.coverImage}\" alt=\"${item.title}\" onerror=\"this.style.display='none';\" />\n\t\t\t\t\t\t${item.coverText ? `<span class=\"liveChat-home-changelog-cover-text\">${item.coverText}</span>` : ''}\n\t\t\t\t\t</div>\n\t\t\t\t`\n\t\t\t\t\t\t: ''\n\t\t\t\t}\n\t\t\t\t<div class=\"liveChat-home-changelog-card-content\">\n\t\t\t\t\t<h4 class=\"liveChat-home-changelog-card-title\">${item.title}</h4>\n\t\t\t\t\t<p class=\"liveChat-home-changelog-card-desc\">${this._stripHtml(item.description)}</p>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t`\n\t\t\t)\n\t\t\t.join('');\n\n\t\treturn `\n\t\t\t<div class=\"liveChat-home-changelog-section\">\n\t\t\t\t${changelogHtml}\n\t\t\t</div>\n\t\t`;\n\t}\n\n\t_stripHtml(html) {\n\t\tif (!html) return '';\n\t\tconst tmp = document.createElement('div');\n\t\ttmp.innerHTML = html;\n\t\treturn (tmp.textContent || tmp.innerText || '').trim();\n\t}\n\n\t_formatDate(dateString) {\n\t\tif (!dateString) return '';\n\t\tconst date = new Date(dateString);\n\t\tconst now = new Date();\n\t\tconst diffDays = Math.floor((now - date) / (1000 * 60 * 60 * 24));\n\n\t\tif (diffDays === 0) return 'Today';\n\t\tif (diffDays === 1) return 'Yesterday';\n\t\tif (diffDays < 7) return `${diffDays}d ago`;\n\t\treturn date.toLocaleDateString('en-US', { month: 'short', day: 'numeric' });\n\t}\n\n\t_attachEvents() {\n\t\tconst recentCard = this.element.querySelector('.liveChat-home-recent-card');\n\t\tif (recentCard) {\n\t\t\trecentCard.addEventListener('click', () => {\n\t\t\t\tconst convId = recentCard.dataset.conversationId;\n\t\t\t\tthis.state.setActiveConversation(convId);\n\t\t\t\tthis.state.markAsRead(convId);\n\t\t\t\tthis.state.setView('chat');\n\t\t\t\tif (this.options.onSelectConversation) {\n\t\t\t\t\tthis.options.onSelectConversation(convId);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tconst msgBtn = this.element.querySelector(\n\t\t\t'.liveChat-home-message-btn:not(.liveChat-feedback-btn)'\n\t\t);\n\t\tif (msgBtn) {\n\t\t\tmsgBtn.addEventListener('click', () => {\n\t\t\t\tthis.state.setActiveConversation(null);\n\t\t\t\tthis.state.setView('chat');\n\t\t\t});\n\t\t}\n\n\t\tconst feedbackBtn = this.element.querySelector('.liveChat-feedback-btn');\n\t\tif (feedbackBtn) {\n\t\t\tfeedbackBtn.addEventListener('click', () => {\n\t\t\t\tif (this.options.onFeedbackClick) {\n\t\t\t\t\tthis.state.setOpen(false);\n\t\t\t\t\tthis.options.onFeedbackClick();\n\t\t\t\t} else if (this.state.urls?.feedback) {\n\t\t\t\t\twindow.open(this.state.urls.feedback, '_blank');\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tthis.element\n\t\t\t.querySelectorAll('.liveChat-home-changelog-card')\n\t\t\t.forEach((card) => {\n\t\t\t\tcard.addEventListener('click', () => {\n\t\t\t\t\tconst item = this.state.homeChangelogItems.find(\n\t\t\t\t\t\t(i) => i.id === card.dataset.changelogId\n\t\t\t\t\t);\n\t\t\t\t\tif (item?.url) {\n\t\t\t\t\t\twindow.open(item.url, '_blank');\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.state.setView('changelog');\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\n\t\tconst seeAllBtn = this.element.querySelector(\n\t\t\t'.liveChat-home-changelog-all'\n\t\t);\n\t\tif (seeAllBtn) {\n\t\t\tseeAllBtn.addEventListener('click', () => {\n\t\t\t\tthis.state.setView('changelog');\n\t\t\t});\n\t\t}\n\n\t\tconst featuredBtn = this.element.querySelector(\n\t\t\t'.liveChat-home-featured-btn'\n\t\t);\n\t\tif (featuredBtn) {\n\t\t\tfeaturedBtn.addEventListener('click', () => {\n\t\t\t\tconst action = featuredBtn.dataset.action;\n\t\t\t\tconst value = featuredBtn.dataset.value;\n\t\t\t\tif (action === 'url') {\n\t\t\t\t\twindow.open(value, '_blank');\n\t\t\t\t} else if (action === 'view') {\n\t\t\t\t\tthis.state.setView(value);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\tdestroy() {\n\t\tif (this._unsubscribe) {\n\t\t\tthis._unsubscribe();\n\t\t}\n\t\tif (this.element && this.element.parentNode) {\n\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t}\n\t}\n}\n","export class PreChatFormView {\n\tconstructor(state, options = {}) {\n\t\tthis.state = state;\n\t\tthis.options = options;\n\t\tthis.element = null;\n\t\tthis._isSubmitting = false;\n\t}\n\n\trender() {\n\t\tthis.element = document.createElement('div');\n\t\tthis.element.className = 'liveChat-view liveChat-prechat-view';\n\t\tthis._updateContent();\n\t\treturn this.element;\n\t}\n\n\t_updateContent() {\n\t\tthis.element.innerHTML = `\n\t\t\t<div class=\"liveChat-prechat-overlay\">\n\t\t\t\t<div class=\"liveChat-prechat-card\">\n\t\t\t\t\t<h4 class=\"liveChat-prechat-title\">Before we continue</h4>\n\t\t\t\t\t<p class=\"liveChat-prechat-subtitle\">Enter your details so we can get back to you.</p>\n\t\t\t\t\t<form class=\"liveChat-prechat-form\" novalidate>\n\t\t\t\t\t\t<div class=\"liveChat-prechat-field\">\n\t\t\t\t\t\t\t<input\n\t\t\t\t\t\t\t\ttype=\"text\"\n\t\t\t\t\t\t\t\tname=\"name\"\n\t\t\t\t\t\t\t\tclass=\"liveChat-prechat-input\"\n\t\t\t\t\t\t\t\tplaceholder=\"Your name\"\n\t\t\t\t\t\t\t\tautocomplete=\"name\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class=\"liveChat-prechat-field\">\n\t\t\t\t\t\t\t<input\n\t\t\t\t\t\t\t\ttype=\"email\"\n\t\t\t\t\t\t\t\tname=\"email\"\n\t\t\t\t\t\t\t\tclass=\"liveChat-prechat-input\"\n\t\t\t\t\t\t\t\tplaceholder=\"Your email address\"\n\t\t\t\t\t\t\t\tautocomplete=\"email\"\n\t\t\t\t\t\t\t\trequired\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<span class=\"liveChat-prechat-error\" style=\"display:none;\"></span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<button type=\"submit\" class=\"liveChat-prechat-submit\">\n\t\t\t\t\t\t\tStart chat\n\t\t\t\t\t\t</button>\n\t\t\t\t\t</form>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t`;\n\n\t\tthis._attachEvents();\n\t}\n\n\t_attachEvents() {\n\t\tconst form = this.element.querySelector('.liveChat-prechat-form');\n\t\tform.addEventListener('submit', async (e) => {\n\t\t\te.preventDefault();\n\t\t\tawait this._handleSubmit();\n\t\t});\n\t}\n\n\tasync _handleSubmit() {\n\t\tif (this._isSubmitting) return;\n\n\t\tconst emailInput = this.element.querySelector('input[name=\"email\"]');\n\t\tconst nameInput = this.element.querySelector('input[name=\"name\"]');\n\t\tconst errorEl = this.element.querySelector('.liveChat-prechat-error');\n\t\tconst submitBtn = this.element.querySelector('.liveChat-prechat-submit');\n\n\t\tconst email = emailInput.value.trim();\n\t\tconst name = nameInput.value.trim();\n\n\t\tif (!email || !/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(email)) {\n\t\t\terrorEl.textContent = 'Please enter a valid email address.';\n\t\t\terrorEl.style.display = 'block';\n\t\t\temailInput.focus();\n\t\t\treturn;\n\t\t}\n\n\t\terrorEl.style.display = 'none';\n\t\tthis._isSubmitting = true;\n\t\tsubmitBtn.disabled = true;\n\t\tsubmitBtn.innerHTML = `\n\t\t\t<iconify-icon icon=\"ph:circle-notch\" width=\"16\" height=\"16\" style=\"animation: spin 0.8s linear infinite;\"></iconify-icon>\n\t\t\tJust a moment...\n\t\t`;\n\n\t\ttry {\n\t\t\tif (this.options.onIdentifyContact) {\n\t\t\t\tawait this.options.onIdentifyContact({\n\t\t\t\t\tname: name || undefined,\n\t\t\t\t\temail,\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tthis.state.setIdentified(true, { name, email });\n\n\t\t\tconst pendingMessage = this.state.pendingMessage;\n\t\t\tif (pendingMessage && this.options.onStartConversation) {\n\t\t\t\tthis.state.pendingMessage = null;\n\t\t\t\tthis.state.setView('chat');\n\t\t\t\tawait this.options.onStartConversation(\n\t\t\t\t\tpendingMessage.content,\n\t\t\t\t\tpendingMessage.attachments\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tthis.state.setView('chat');\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tconsole.error('[PreChatFormView] Error:', error);\n\t\t\terrorEl.textContent = 'Something went wrong. Please try again.';\n\t\t\terrorEl.style.display = 'block';\n\t\t\tthis._isSubmitting = false;\n\t\t\tsubmitBtn.disabled = false;\n\t\t\tsubmitBtn.textContent = 'Start chat';\n\t\t}\n\t}\n\n\tdestroy() {\n\t\tif (this.element && this.element.parentNode) {\n\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t}\n\t}\n}\n","import { WebSocketService } from '../core/WebSocketService.js';\nimport {\n\tapplyliveChatCustomStyles,\n\tremoveliveChatCustomStyles,\n} from '../styles/liveChatCustomStyles.js';\nimport { NotificationSound } from '../utils/NotificationSound.js';\nimport { BaseWidget } from './BaseWidget.js';\nimport { LiveChatState } from './liveChat/LiveChatState.js';\nimport { LiveChatLauncher } from './liveChat/components/LiveChatLauncher.js';\nimport { LiveChatPanel } from './liveChat/components/LiveChatPanel.js';\nimport { ChangelogView } from './liveChat/views/ChangelogView.js';\nimport { ChatView } from './liveChat/views/ChatView.js';\nimport { ConversationsView } from './liveChat/views/ConversationsView.js';\nimport { HelpView } from './liveChat/views/HelpView.js';\nimport { HomeView } from './liveChat/views/HomeView.js';\nimport { PreChatFormView } from './liveChat/views/PreChatFormView.js';\n\nexport class LiveChatWidget extends BaseWidget {\n\tconstructor(options) {\n\t\tsuper({ ...options, type: 'liveChat' });\n\t\tthis._explicitOptions = options || {};\n\t\tconst resolvedTheme = options.theme || 'light';\n\t\tconst hasExplicitTextColor = Object.prototype.hasOwnProperty.call(\n\t\t\toptions,\n\t\t\t'textColor'\n\t\t);\n\t\tconst hasExplicitBackgroundColor = Object.prototype.hasOwnProperty.call(\n\t\t\toptions,\n\t\t\t'backgroundColor'\n\t\t);\n\t\tconst defaultTextColor = resolvedTheme === 'dark' ? '#E2E8F0' : '#1d1d1f';\n\t\tconst defaultBackgroundColor =\n\t\t\tresolvedTheme === 'dark' ? '#0F172A' : '#ffffff';\n\n\t\tconst resolvedEnableChangelog =\n\t\t\ttypeof options.enableChangelog === 'boolean'\n\t\t\t\t? options.enableChangelog\n\t\t\t\t: options.enableNews !== false;\n\n\t\tthis.liveChatOptions = {\n\t\t\tposition: options.position || 'right',\n\t\t\ttheme: resolvedTheme,\n\t\t\tprimaryColor: options.primaryColor || '#155EEF',\n\t\t\ttextColor: hasExplicitTextColor ? options.textColor : defaultTextColor,\n\t\t\tbackgroundColor: hasExplicitBackgroundColor\n\t\t\t\t? options.backgroundColor\n\t\t\t\t: defaultBackgroundColor,\n\t\t\tlogoUrl: options.logoUrl || 'https://product7.io/p7logo.svg',\n\t\t\tteamName: options.teamName || 'Support',\n\t\t\tteamAvatars: options.teamAvatars || [],\n\t\t\tgreetingMessage: options.greetingMessage || 'Hi there 👋',\n\t\t\twelcomeMessage: options.welcomeMessage || 'How can we help?',\n\t\t\tonlineMessage: options.onlineMessage || \"We're online now\",\n\t\t\tresponseTime:\n\t\t\t\toptions.responseTime || 'We typically reply within a few minutes',\n\t\t\tenableHelp: options.enableHelp !== false,\n\t\t\tenableChangelog: resolvedEnableChangelog,\n\t\t\tautoLoadData: options.autoLoadData !== false,\n\t\t\tinitialView: options.initialView || 'home',\n\t\t\tpreviewData: options.previewData || null,\n\t\t\tfeaturedContent: options.featuredContent || null,\n\t\t\tfeedbackBoardName: options.feedbackBoardName || null,\n\t\t\tfeedbackUrl: options.feedbackUrl || null,\n\t\t\tchangelogUrl: options.changelogUrl || null,\n\t\t\thelpUrl: options.helpUrl || null,\n\t\t\troadmapUrl: options.roadmapUrl || null,\n\t\t\tcomposePlaceholder: options.composePlaceholder || null,\n\t\t\tonSendMessage: options.onSendMessage || null,\n\t\t\tonFeedbackClick: options.onFeedbackClick || null,\n\t\t\tonArticleClick: options.onArticleClick || null,\n\t\t\tonChangelogClick: options.onChangelogClick || null,\n\t\t};\n\n\t\tconst sdkMetadata = this.sdk?.apiService?.getMetadata() || null;\n\n\t\tthis.LiveChatState = new LiveChatState({\n\t\t\tteamName: this.liveChatOptions.teamName,\n\t\t\tteamAvatars: this.liveChatOptions.teamAvatars,\n\t\t\tgreetingMessage: this.liveChatOptions.greetingMessage,\n\t\t\twelcomeMessage: this.liveChatOptions.welcomeMessage,\n\t\t\tonlineMessage: this.liveChatOptions.onlineMessage,\n\t\t\tresponseTime: this.liveChatOptions.responseTime,\n\t\t\tenableHelp: this.liveChatOptions.enableHelp,\n\t\t\tenableChangelog: this.liveChatOptions.enableChangelog,\n\t\t\tmetadata: sdkMetadata,\n\t\t\turls: {\n\t\t\t\tfeedback: this.liveChatOptions.feedbackUrl,\n\t\t\t\tchangelog: this.liveChatOptions.changelogUrl,\n\t\t\t\thelp: this.liveChatOptions.helpUrl,\n\t\t\t\troadmap: this.liveChatOptions.roadmapUrl,\n\t\t\t},\n\t\t});\n\n\t\t// If identify() was called before this widget was created, pre-seed identity\n\t\tif (this.sdk?.identified && sdkMetadata) {\n\t\t\tthis.LiveChatState.isIdentified = true;\n\t\t}\n\n\t\tthis.launcher = null;\n\t\tthis.panel = null;\n\t\tthis.wsService = null;\n\t\tthis._wsUnsubscribers = [];\n\t\tthis._feedbackWidget = null;\n\n\t\tconst notificationSoundOption =\n\t\t\toptions.notificationSound !== undefined\n\t\t\t\t? options.notificationSound\n\t\t\t\t: true;\n\n\t\tthis._notificationSound = new NotificationSound({\n\t\t\tsoundUrl:\n\t\t\t\ttypeof notificationSoundOption === 'string'\n\t\t\t\t\t? notificationSoundOption\n\t\t\t\t\t: undefined,\n\t\t\tvolume: options.notificationVolume ?? 0.4,\n\t\t});\n\n\t\tif (notificationSoundOption === false) {\n\t\t\tthis._notificationSound.setEnabled(false);\n\t\t}\n\n\t\tthis._handleOpenChange = this._handleOpenChange.bind(this);\n\t\tthis._handleWebSocketMessage = this._handleWebSocketMessage.bind(this);\n\t\tthis._handleTypingStarted = this._handleTypingStarted.bind(this);\n\t\tthis._handleTypingStopped = this._handleTypingStopped.bind(this);\n\t\tthis._handleConversationClosed = this._handleConversationClosed.bind(this);\n\t}\n\n\t_hasTrigger() {\n\t\treturn this.options.trigger === true || this.options.trigger === undefined;\n\t}\n\n\t_createInternalFeedbackWidget() {\n\t\ttry {\n\t\t\tconst widget = this.sdk.createWidget('button', {\n\t\t\t\ttrigger: false,\n\t\t\t\tdisplayMode: 'modal',\n\t\t\t\tboardName:\n\t\t\t\t\tthis.liveChatOptions.feedbackBoardName || this.sdk.config.boardName,\n\t\t\t\tprimaryColor: this.liveChatOptions.primaryColor,\n\t\t\t\ttheme: this.liveChatOptions.theme,\n\t\t\t});\n\t\t\twidget.mount();\n\t\t\treturn widget;\n\t\t} catch (e) {\n\t\t\tconsole.warn('[LiveChat] Could not create internal feedback widget:', e);\n\t\t\treturn null;\n\t\t}\n\t}\n\n\t_render() {\n\t\tconst container = document.createElement('div');\n\t\tcontainer.className = `liveChat-widget theme-${this.liveChatOptions.theme}`;\n\t\tcontainer.style.zIndex = '999999';\n\t\tcontainer.style.setProperty(\n\t\t\t'--liveChat-h-padding',\n\t\t\t`${this.liveChatOptions.horizontalPadding ?? 20}px`\n\t\t);\n\t\tcontainer.style.setProperty(\n\t\t\t'--liveChat-v-padding',\n\t\t\t`${this.liveChatOptions.verticalPadding ?? 20}px`\n\t\t);\n\t\tthis._widgetContainer = container;\n\n\t\tapplyliveChatCustomStyles({\n\t\t\tprimaryColor: this.liveChatOptions.primaryColor,\n\t\t\ttextColor: this.liveChatOptions.textColor,\n\t\t\tbackgroundColor: this.liveChatOptions.backgroundColor,\n\t\t\ttheme: this.liveChatOptions.theme,\n\t\t});\n\n\t\t// Create internal feedback widget (no floating button) so the\n\t\t// \"Leave a feedback\" button in the home view can open it inline.\n\t\tif (!this.liveChatOptions.onFeedbackClick) {\n\t\t\tthis._feedbackWidget = this._createInternalFeedbackWidget();\n\t\t}\n\n\t\tif (this._hasTrigger()) {\n\t\t\tthis.launcher = new LiveChatLauncher(this.LiveChatState, {\n\t\t\t\tposition: this.liveChatOptions.position,\n\t\t\t\tprimaryColor: this.liveChatOptions.primaryColor,\n\t\t\t});\n\t\t\tcontainer.appendChild(this.launcher.render());\n\t\t}\n\n\t\tthis.panel = new LiveChatPanel(this.LiveChatState, {\n\t\t\tposition: this.liveChatOptions.position,\n\t\t\ttheme: this.liveChatOptions.theme,\n\t\t\tprimaryColor: this.liveChatOptions.primaryColor,\n\t\t\tlogoUrl: this.liveChatOptions.logoUrl,\n\t\t\tfeaturedContent: this.liveChatOptions.featuredContent,\n\t\t\tonSendMessage:\n\t\t\t\tthis.liveChatOptions.onSendMessage ||\n\t\t\t\tthis._handleSendMessage.bind(this),\n\t\t\tonStartConversation: this._handleStartConversation.bind(this),\n\t\t\tonTyping: this.sendTypingIndicator.bind(this),\n\t\t\tonSelectConversation: this._handleSelectConversation.bind(this),\n\t\t\tonStartNewConversation: this._handleNewConversationClick.bind(this),\n\t\t\tonIdentifyContact: this._handleIdentifyContact.bind(this),\n\t\t\tonFeedbackClick:\n\t\t\t\tthis.liveChatOptions.onFeedbackClick ||\n\t\t\t\t(this._feedbackWidget ? () => this._feedbackWidget.open() : null),\n\t\t\tonArticleClick: this.liveChatOptions.onArticleClick,\n\t\t\tonChangelogClick: this.liveChatOptions.onChangelogClick,\n\t\t});\n\n\t\tthis.panel.registerView('home', HomeView);\n\t\tthis.panel.registerView('messages', ConversationsView);\n\t\tthis.panel.registerView('chat', ChatView);\n\t\tthis.panel.registerView('prechat', PreChatFormView);\n\t\tthis.panel.registerView('help', HelpView);\n\t\tthis.panel.registerView('changelog', ChangelogView);\n\n\t\tcontainer.appendChild(this.panel.render());\n\t\tthis.panel.hide();\n\n\t\treturn container;\n\t}\n\n\t_attachEvents() {\n\t\tthis._stateUnsubscribe = this.LiveChatState.subscribe((type, data) => {\n\t\t\tif (type === 'openChange') {\n\t\t\t\tthis._handleOpenChange(data.isOpen);\n\t\t\t}\n\t\t\tif (type === 'conversationChange') {\n\t\t\t\tthis._handleActiveConversationChange(\n\t\t\t\t\tdata.conversationId,\n\t\t\t\t\tdata.previousConversationId\n\t\t\t\t);\n\t\t\t}\n\t\t});\n\t}\n\n\t_handleOpenChange(isOpen) {\n\t\tif (isOpen) {\n\t\t\tthis.panel.show();\n\t\t\tthis.sdk.eventBus.emit('liveChat:opened', { widget: this });\n\t\t} else {\n\t\t\tthis.panel.hide();\n\t\t\tthis.LiveChatState.reset();\n\t\t\tthis.sdk.eventBus.emit('liveChat:closed', { widget: this });\n\t\t}\n\t}\n\n\t_handleActiveConversationChange(conversationId, previousConversationId) {\n\t\tif (previousConversationId && this.wsService) {\n\t\t\tthis.wsService.send('conversation:unsubscribe', {\n\t\t\t\tconversation_id: previousConversationId,\n\t\t\t});\n\t\t}\n\t\tif (conversationId && this.wsService) {\n\t\t\tthis.wsService.send('conversation:subscribe', {\n\t\t\t\tconversation_id: conversationId,\n\t\t\t});\n\t\t}\n\t}\n\n\tasync _handleStartConversation(messageContent, pendingAttachments) {\n\t\ttry {\n\t\t\tif (\n\t\t\t\tthis.LiveChatState.requireEmailBeforeChat &&\n\t\t\t\t!this.LiveChatState.isIdentified\n\t\t\t) {\n\t\t\t\tthis.LiveChatState.pendingMessage = {\n\t\t\t\t\tcontent: messageContent,\n\t\t\t\t\tattachments: pendingAttachments,\n\t\t\t\t};\n\t\t\t\tthis.LiveChatState.setView('prechat');\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tconst openConversation = this.LiveChatState.conversations.find(\n\t\t\t\t(c) => c.status === 'open'\n\t\t\t);\n\n\t\t\tif (openConversation) {\n\t\t\t\tthis.LiveChatState.setActiveConversation(openConversation.id);\n\t\t\t\tawait this._handleSendMessage(\n\t\t\t\t\topenConversation.id,\n\t\t\t\t\t{ content: messageContent },\n\t\t\t\t\tpendingAttachments\n\t\t\t\t);\n\t\t\t\treturn openConversation;\n\t\t\t}\n\n\t\t\treturn await this.startNewConversation(\n\t\t\t\tmessageContent,\n\t\t\t\t'',\n\t\t\t\tpendingAttachments\n\t\t\t);\n\t\t} catch (error) {\n\t\t\tconsole.error('[LiveChatWidget] Failed to start conversation:', error);\n\t\t\treturn null;\n\t\t}\n\t}\n\n\tasync _handleSelectConversation(conversationId) {\n\t\ttry {\n\t\t\tawait this.fetchMessages(conversationId);\n\t\t} catch (error) {\n\t\t\tconsole.error('[LiveChatWidget] Failed to fetch messages:', error);\n\t\t}\n\t}\n\n\t_handleNewConversationClick() {\n\t\tconst openConversation = this.LiveChatState.conversations.find(\n\t\t\t(c) => c.status === 'open'\n\t\t);\n\n\t\tif (openConversation) {\n\t\t\tthis.LiveChatState.setActiveConversation(openConversation.id);\n\t\t\tthis.LiveChatState.setView('chat');\n\t\t\tthis._handleSelectConversation(openConversation.id);\n\t\t} else {\n\t\t\tthis.LiveChatState.setActiveConversation(null);\n\t\t\tthis.LiveChatState.setView('chat');\n\t\t}\n\t}\n\n\tasync _handleIdentifyContact(contactData) {\n\t\ttry {\n\t\t\t// Route through sdk.identify() so the SDK-level identity state is updated\n\t\t\t// and applyIdentity() handles the live chat state + WebSocket as a side effect.\n\t\t\tconst result = await this.sdk.identify({\n\t\t\t\temail: contactData.email,\n\t\t\t\tname: contactData.name,\n\t\t\t});\n\t\t\treturn result;\n\t\t} catch (error) {\n\t\t\tconsole.error('[LiveChatWidget] Failed to identify contact:', error);\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\tmarkAsIdentified(name, email) {\n\t\t// Called externally by the app when the user is already known.\n\t\t// No API call needed — identity was already established via sdk.identify().\n\t\tthis.applyIdentity({ name, email });\n\t}\n\n\tapplyIdentity(metadata = {}) {\n\t\tthis.LiveChatState.setIdentified(true, metadata);\n\n\t\tif (this.apiService?.sessionToken && !this.wsService?.isConnected) {\n\t\t\tthis._initWebSocket();\n\t\t}\n\t}\n\n\tasync _handleUploadFile(base64Data, filename) {\n\t\ttry {\n\t\t\tconst response = await this.apiService.uploadFile(base64Data, filename);\n\t\t\tif (response.status && response.url) {\n\t\t\t\treturn response.url;\n\t\t\t}\n\t\t\tthrow new Error('Upload failed');\n\t\t} catch (error) {\n\t\t\tconsole.error('[LiveChatWidget] Failed to upload file:', error);\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\tasync _uploadPendingAttachments(pendingAttachments) {\n\t\tif (!pendingAttachments || pendingAttachments.length === 0) return [];\n\n\t\tconst uploaded = [];\n\t\tfor (const att of pendingAttachments) {\n\t\t\ttry {\n\t\t\t\tconst cdnUrl = await this._handleUploadFile(att.preview, att.file.name);\n\t\t\t\tuploaded.push({\n\t\t\t\t\turl: cdnUrl,\n\t\t\t\t\ttype: att.type.startsWith('image') ? 'image' : 'file',\n\t\t\t\t\tname: att.file.name,\n\t\t\t\t});\n\t\t\t} catch (err) {\n\t\t\t\tconsole.error(\n\t\t\t\t\t'[LiveChatWidget] Skipping failed attachment upload:',\n\t\t\t\t\tatt.file.name,\n\t\t\t\t\terr\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t\treturn uploaded;\n\t}\n\n\tasync _handleSendMessage(conversationId, message, pendingAttachments) {\n\t\tthis.sdk.eventBus.emit('liveChat:messageSent', {\n\t\t\twidget: this,\n\t\t\tconversationId,\n\t\t\tmessage,\n\t\t});\n\n\t\ttry {\n\t\t\tconst uploadedAttachments =\n\t\t\t\tawait this._uploadPendingAttachments(pendingAttachments);\n\n\t\t\tconst response = await this.apiService.sendMessage(conversationId, {\n\t\t\t\tcontent: message.content,\n\t\t\t\tattachments: uploadedAttachments,\n\t\t\t});\n\n\t\t\tif (response.status && response.data) {\n\t\t\t\tconsole.log('[LiveChatWidget] Message sent:', response.data.id);\n\t\t\t}\n\n\t\t\tif (this.apiService?.mock) {\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tconst mockResponse = {\n\t\t\t\t\t\tid: 'msg_' + Date.now(),\n\t\t\t\t\t\tcontent: \"Thanks for your message! We'll get back to you soon.\",\n\t\t\t\t\t\tisOwn: false,\n\t\t\t\t\t\ttimestamp: new Date().toISOString(),\n\t\t\t\t\t\tsender: {\n\t\t\t\t\t\t\tname: 'Support Team',\n\t\t\t\t\t\t\tavatarUrl: null,\n\t\t\t\t\t\t},\n\t\t\t\t\t};\n\t\t\t\t\tthis.LiveChatState.addMessage(conversationId, mockResponse);\n\t\t\t\t}, 1500);\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tconsole.error('[LiveChatWidget] Failed to send message:', error);\n\t\t}\n\t}\n\n\t_handleWebSocketMessage(data) {\n\t\tconst { conversation_id, message } = data;\n\n\t\tlet attachments = [];\n\t\tif (message.attachments) {\n\t\t\ttry {\n\t\t\t\tattachments =\n\t\t\t\t\ttypeof message.attachments === 'string'\n\t\t\t\t\t\t? JSON.parse(message.attachments)\n\t\t\t\t\t\t: message.attachments;\n\t\t\t} catch (e) {\n\t\t\t\t// ignore\n\t\t\t}\n\t\t}\n\n\t\tconst localMessage = {\n\t\t\tid: message.id,\n\t\t\tcontent: message.content,\n\t\t\tisOwn: message.sender_type === 'customer',\n\t\t\tisSystem: message.sender_type === 'system',\n\t\t\ttimestamp: message.created_at,\n\t\t\tattachments: attachments.length > 0 ? attachments : undefined,\n\t\t\tsender: {\n\t\t\t\tname: message.sender_name || 'Support',\n\t\t\t\tavatarUrl: message.sender_avatar || null,\n\t\t\t},\n\t\t};\n\n\t\tthis.LiveChatState.upsertMessage(conversation_id, localMessage, {\n\t\t\treconcileOwnOptimistic: true,\n\t\t\toptimisticMatchWindowMs: 30000,\n\t\t});\n\n\t\tconst isOwnMessage = message.sender_type === 'customer';\n\n\t\tif (!isOwnMessage && this.LiveChatState.isIdentified) {\n\t\t\tthis._notificationSound.play();\n\t\t}\n\n\t\tif (\n\t\t\t!this.LiveChatState.isOpen ||\n\t\t\tthis.LiveChatState.activeConversationId !== conversation_id\n\t\t) {\n\t\t\tthis._updateUnreadCount();\n\t\t}\n\t}\n\n\t_handleTypingStarted(data) {\n\t\tif (data.is_agent) {\n\t\t\tthis.LiveChatState._notify('typingStarted', {\n\t\t\t\tconversationId: data.conversation_id,\n\t\t\t\tuserName: data.user_name,\n\t\t\t});\n\t\t}\n\t}\n\n\t_handleTypingStopped(data) {\n\t\tthis.LiveChatState._notify('typingStopped', {\n\t\t\tconversationId: data.conversation_id,\n\t\t});\n\t}\n\n\t_handleConversationClosed(data) {\n\t\tconst conversationId =\n\t\t\tdata?.conversation_id || data?.id || data?.conversation?.id;\n\t\tif (!conversationId) return;\n\n\t\tthis.LiveChatState.updateConversation(conversationId, {\n\t\t\tstatus: 'closed',\n\t\t});\n\t}\n\n\tasync _updateUnreadCount() {\n\t\ttry {\n\t\t\tconst response = await this.apiService.getUnreadCount();\n\t\t\tif (response.status && response.data) {\n\t\t\t\tthis.LiveChatState.unreadCount = response.data.unread_count || 0;\n\t\t\t\tthis.LiveChatState._notify('unreadCountChange', {\n\t\t\t\t\tcount: this.LiveChatState.unreadCount,\n\t\t\t\t});\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tconsole.error('[LiveChatWidget] Failed to get unread count:', error);\n\t\t}\n\t}\n\n\t_initWebSocket() {\n\t\tif (this.wsService) {\n\t\t\tthis.wsService.disconnect();\n\t\t}\n\n\t\tthis.wsService = new WebSocketService({\n\t\t\tbaseURL: this.apiService.baseURL,\n\t\t\tworkspace: this.apiService.workspace,\n\t\t\tsessionToken: this.apiService.sessionToken,\n\t\t\tmock: this.apiService.mock,\n\t\t});\n\n\t\tthis._wsUnsubscribers.push(\n\t\t\tthis.wsService.on('message', this._handleWebSocketMessage)\n\t\t);\n\t\tthis._wsUnsubscribers.push(\n\t\t\tthis.wsService.on('typing_started', this._handleTypingStarted)\n\t\t);\n\t\tthis._wsUnsubscribers.push(\n\t\t\tthis.wsService.on('typing_stopped', this._handleTypingStopped)\n\t\t);\n\t\tthis._wsUnsubscribers.push(\n\t\t\tthis.wsService.on('conversation_closed', this._handleConversationClosed)\n\t\t);\n\t\tthis._wsUnsubscribers.push(\n\t\t\tthis.wsService.on('connected', () => {\n\t\t\t\tconsole.log('[LiveChatWidget] WebSocket connected');\n\t\t\t\tif (this.LiveChatState.activeConversationId) {\n\t\t\t\t\tthis.wsService.send('conversation:subscribe', {\n\t\t\t\t\t\tconversation_id: this.LiveChatState.activeConversationId,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t})\n\t\t);\n\t\tthis._wsUnsubscribers.push(\n\t\t\tthis.wsService.on('disconnected', () => {\n\t\t\t\tconsole.log('[LiveChatWidget] WebSocket disconnected');\n\t\t\t\tthis.LiveChatState._notify('connectionChange', { connected: false });\n\t\t\t})\n\t\t);\n\t\tthis._wsUnsubscribers.push(\n\t\t\tthis.wsService.on('connected', () => {\n\t\t\t\tthis.LiveChatState._notify('connectionChange', { connected: true });\n\t\t\t})\n\t\t);\n\n\t\tthis.wsService.connect();\n\t}\n\n\topen() {\n\t\tthis.LiveChatState.setOpen(true);\n\t}\n\n\tclose() {\n\t\tthis.LiveChatState.setOpen(false);\n\t}\n\n\ttoggle() {\n\t\tthis.LiveChatState.setOpen(!this.LiveChatState.isOpen);\n\t}\n\n\tnavigateTo(view) {\n\t\tthis.LiveChatState.setView(view);\n\t\tif (!this.LiveChatState.isOpen) {\n\t\t\tthis.open();\n\t\t}\n\t}\n\n\tsetConversations(conversations) {\n\t\tthis.LiveChatState.setConversations(conversations);\n\t}\n\n\taddMessage(conversationId, message) {\n\t\tthis.LiveChatState.addMessage(conversationId, message);\n\t}\n\n\tsetHelpArticles(articles) {\n\t\tthis.LiveChatState.setHelpArticles(articles);\n\t}\n\n\tsetHomeChangelogItems(items) {\n\t\tthis.LiveChatState.setHomeChangelogItems(items);\n\t}\n\n\tsetChangelogItems(items) {\n\t\tthis.LiveChatState.setChangelogItems(items);\n\t}\n\n\tsetUnreadCount(count) {\n\t\tthis.LiveChatState.unreadCount = count;\n\t\tthis.LiveChatState._notify('unreadCountChange', { count });\n\t}\n\n\tgetState() {\n\t\treturn {\n\t\t\tisOpen: this.LiveChatState.isOpen,\n\t\t\tcurrentView: this.LiveChatState.currentView,\n\t\t\tunreadCount: this.LiveChatState.unreadCount,\n\t\t\tconversations: this.LiveChatState.conversations,\n\t\t};\n\t}\n\n\t_applyPreviewData() {\n\t\tconst data = this.liveChatOptions.previewData;\n\t\tif (!data || typeof data !== 'object') {\n\t\t\treturn;\n\t\t}\n\n\t\tif (Array.isArray(data.conversations)) {\n\t\t\tthis.LiveChatState.setConversations(data.conversations);\n\t\t}\n\n\t\tif (Array.isArray(data.helpArticles)) {\n\t\t\tthis.LiveChatState.setHelpArticles(data.helpArticles);\n\t\t}\n\n\t\tif (Array.isArray(data.homeChangelogItems)) {\n\t\t\tthis.LiveChatState.setHomeChangelogItems(data.homeChangelogItems);\n\t\t}\n\n\t\tif (Array.isArray(data.changelogItems)) {\n\t\t\tthis.LiveChatState.setChangelogItems(data.changelogItems);\n\t\t}\n\n\t\tif (typeof data.unreadCount === 'number') {\n\t\t\tthis.setUnreadCount(data.unreadCount);\n\t\t}\n\n\t\tif (data.availability && typeof data.availability === 'object') {\n\t\t\tconst availability = data.availability;\n\t\t\tthis.LiveChatState.agentsOnline = Boolean(\n\t\t\t\tavailability.agentsOnline ??\n\t\t\t\t\tavailability.agents_online ??\n\t\t\t\t\tavailability.is_online\n\t\t\t);\n\t\t\tthis.LiveChatState.onlineCount =\n\t\t\t\tavailability.onlineCount ?? availability.online_count ?? 0;\n\t\t\tthis.LiveChatState.responseTime =\n\t\t\t\tavailability.responseTime ??\n\t\t\t\tavailability.response_time ??\n\t\t\t\tthis.LiveChatState.responseTime;\n\t\t\tthis.LiveChatState._notify('availabilityUpdate', availability);\n\t\t}\n\n\t\tif (typeof data.currentView === 'string') {\n\t\t\tthis.LiveChatState.setView(data.currentView);\n\t\t}\n\t}\n\n\tasync loadInitialData() {\n\t\ttry {\n\t\t\tconst conversations = await this._fetchConversations();\n\t\t\tthis.LiveChatState.setConversations(conversations);\n\t\t} catch (error) {\n\t\t\tconsole.error('[LiveChatWidget] Failed to load conversations:', error);\n\t\t}\n\n\t\tif (this.liveChatOptions.enableHelp) {\n\t\t\ttry {\n\t\t\t\tconst articles = await this._fetchHelpArticles();\n\t\t\t\tthis.LiveChatState.setHelpArticles(articles);\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('[LiveChatWidget] Failed to load help articles:', error);\n\t\t\t}\n\t\t}\n\n\t\tif (this.liveChatOptions.enableChangelog) {\n\t\t\ttry {\n\t\t\t\tconst { homeItems, changelogItems } = await this._fetchChangelog();\n\t\t\t\tthis.LiveChatState.setHomeChangelogItems(homeItems);\n\t\t\t\tthis.LiveChatState.setChangelogItems(changelogItems);\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('[LiveChatWidget] Failed to load changelog:', error);\n\t\t\t}\n\t\t}\n\t}\n\n\tasync _fetchConversations() {\n\t\ttry {\n\t\t\tconst response = await this.apiService.getConversations();\n\t\t\tif (response.status && response.data) {\n\t\t\t\treturn response.data.map((conv) => ({\n\t\t\t\t\tid: conv.id,\n\t\t\t\t\ttitle:\n\t\t\t\t\t\tconv.subject ||\n\t\t\t\t\t\t`Chat with ${conv.assigned_user?.name || 'Support'}`,\n\t\t\t\t\tparticipants: conv.assigned_user\n\t\t\t\t\t\t? [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tname: conv.assigned_user.name,\n\t\t\t\t\t\t\t\t\tavatarUrl: conv.assigned_user.avatar,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t: [{ name: 'Support', avatarUrl: null }],\n\t\t\t\t\tlastMessage: conv.preview || conv.snippet || '',\n\t\t\t\t\tlastMessageTime: conv.last_message_at,\n\t\t\t\t\tunread: conv.unread || 0,\n\t\t\t\t\tstatus: conv.status,\n\t\t\t\t}));\n\t\t\t}\n\t\t\treturn [];\n\t\t} catch (error) {\n\t\t\tconsole.error('[LiveChatWidget] Failed to fetch conversations:', error);\n\t\t\treturn [];\n\t\t}\n\t}\n\n\tasync _fetchHelpArticles() {\n\t\ttry {\n\t\t\tconst response = await this.apiService.getHelpCollections();\n\t\t\tif (response.success && response.data) {\n\t\t\t\tconst collections = response.data.collections || response.data;\n\t\t\t\tconst helpBase = (this.liveChatOptions.helpUrl || '').replace(\n\t\t\t\t\t/\\/$/,\n\t\t\t\t\t''\n\t\t\t\t);\n\n\t\t\t\tconst sorted = [...collections].sort(\n\t\t\t\t\t(a, b) => (a.order ?? 0) - (b.order ?? 0)\n\t\t\t\t);\n\n\t\t\t\treturn sorted.map((collection) => ({\n\t\t\t\t\tid: collection.id,\n\t\t\t\t\ttitle: collection.title,\n\t\t\t\t\tdescription: collection.description || '',\n\t\t\t\t\tarticleCount: collection.article_count || 0,\n\t\t\t\t\ticon: collection.icon || null,\n\t\t\t\t\tauthor: collection.author || null,\n\t\t\t\t\turl:\n\t\t\t\t\t\tcollection.url_slug && helpBase\n\t\t\t\t\t\t\t? `${helpBase}/collections/${collection.url_slug}`\n\t\t\t\t\t\t\t: helpBase || null,\n\t\t\t\t}));\n\t\t\t}\n\t\t\treturn [];\n\t\t} catch (error) {\n\t\t\tconsole.error('[LiveChatWidget] Failed to fetch help articles:', error);\n\t\t\treturn [];\n\t\t}\n\t}\n\n\tasync fetchMessages(conversationId) {\n\t\ttry {\n\t\t\tconst response = await this.apiService.getConversation(conversationId);\n\t\t\tif (response.status && response.data) {\n\t\t\t\tconst messages = (response.data.messages || []).map((msg) => {\n\t\t\t\t\tlet attachments;\n\t\t\t\t\tif (msg.attachments) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tattachments =\n\t\t\t\t\t\t\t\ttypeof msg.attachments === 'string'\n\t\t\t\t\t\t\t\t\t? JSON.parse(msg.attachments)\n\t\t\t\t\t\t\t\t\t: msg.attachments;\n\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\t// ignore\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn {\n\t\t\t\t\t\tid: msg.id,\n\t\t\t\t\t\tcontent: msg.content,\n\t\t\t\t\t\tisOwn: msg.sender_type === 'customer',\n\t\t\t\t\t\tisSystem: msg.sender_type === 'system',\n\t\t\t\t\t\ttimestamp: msg.created_at,\n\t\t\t\t\t\tattachments:\n\t\t\t\t\t\t\tattachments && attachments.length > 0 ? attachments : undefined,\n\t\t\t\t\t\tsender: {\n\t\t\t\t\t\t\tname:\n\t\t\t\t\t\t\t\tmsg.sender_name ||\n\t\t\t\t\t\t\t\t(msg.sender_type === 'customer' ? 'You' : 'Support'),\n\t\t\t\t\t\t\tavatarUrl: msg.sender_avatar || null,\n\t\t\t\t\t\t},\n\t\t\t\t\t};\n\t\t\t\t});\n\t\t\t\tthis.LiveChatState.setMessages(conversationId, messages);\n\n\t\t\t\tawait this.apiService.markConversationAsRead(conversationId);\n\t\t\t\tthis.LiveChatState.markAsRead(conversationId);\n\n\t\t\t\treturn messages;\n\t\t\t}\n\t\t\treturn [];\n\t\t} catch (error) {\n\t\t\tconsole.error('[LiveChatWidget] Failed to fetch messages:', error);\n\t\t\treturn [];\n\t\t}\n\t}\n\n\tasync startNewConversation(message, subject = '', pendingAttachments = []) {\n\t\ttry {\n\t\t\tconst uploadedAttachments =\n\t\t\t\tawait this._uploadPendingAttachments(pendingAttachments);\n\n\t\t\tconst response = await this.apiService.startConversation({\n\t\t\t\tmessage,\n\t\t\t\tsubject,\n\t\t\t\tattachments: uploadedAttachments,\n\t\t\t});\n\n\t\t\tif (response.status && response.data) {\n\t\t\t\tconst conv = response.data;\n\t\t\t\tconst newConversation = {\n\t\t\t\t\tid: conv.id,\n\t\t\t\t\ttitle: conv.subject || 'New conversation',\n\t\t\t\t\tparticipants: [{ name: 'Support', avatarUrl: null }],\n\t\t\t\t\tlastMessage: message,\n\t\t\t\t\tlastMessageTime: conv.created_at || new Date().toISOString(),\n\t\t\t\t\tunread: 0,\n\t\t\t\t\tstatus: 'open',\n\t\t\t\t};\n\n\t\t\t\tthis.LiveChatState.addConversation(newConversation);\n\n\t\t\t\tconst initialMessages = [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: 'msg_' + Date.now(),\n\t\t\t\t\t\tcontent: message,\n\t\t\t\t\t\tisOwn: true,\n\t\t\t\t\t\ttimestamp: new Date().toISOString(),\n\t\t\t\t\t},\n\t\t\t\t];\n\n\t\t\t\tinitialMessages.push({\n\t\t\t\t\tid: 'system_rt_' + Date.now(),\n\t\t\t\t\tcontent: this.LiveChatState.agentsOnline\n\t\t\t\t\t\t? 'One of our customer support agents will be with you shortly.'\n\t\t\t\t\t\t: this.LiveChatState.responseTime,\n\t\t\t\t\tisSystem: true,\n\t\t\t\t\ttimestamp: new Date().toISOString(),\n\t\t\t\t});\n\n\t\t\t\tthis.LiveChatState.setMessages(conv.id, initialMessages);\n\n\t\t\t\tthis.LiveChatState.setActiveConversation(conv.id);\n\t\t\t\tthis.LiveChatState.setView('chat');\n\n\t\t\t\treturn conv;\n\t\t\t}\n\t\t\treturn null;\n\t\t} catch (error) {\n\t\t\tconsole.error('[LiveChatWidget] Failed to start conversation:', error);\n\t\t\treturn null;\n\t\t}\n\t}\n\n\tasync sendTypingIndicator(conversationId, isTyping) {\n\t\ttry {\n\t\t\tawait this.apiService.sendTypingIndicator(conversationId, isTyping);\n\t\t} catch (error) {\n\t\t\t// silent fail\n\t\t}\n\t}\n\n\tasync _fetchAndApplySettings() {\n\t\ttry {\n\t\t\tconst response = await this.apiService.getLiveChatSettings();\n\t\t\tif (!response?.status || !response?.data) return;\n\n\t\t\tconst s = response.data;\n\t\t\tlet stylesChanged = false;\n\n\t\t\t// Team info\n\t\t\tif (s.team_name && !this._hasExplicitOption('teamName')) {\n\t\t\t\tthis.liveChatOptions.teamName = s.team_name;\n\t\t\t\tthis.LiveChatState.teamName = s.team_name;\n\t\t\t}\n\t\t\tif (s.logo_url && !this._hasExplicitOption('logoUrl')) {\n\t\t\t\tthis.liveChatOptions.logoUrl = s.logo_url;\n\t\t\t}\n\t\t\tif (s.greeting_message && !this._hasExplicitOption('greetingMessage')) {\n\t\t\t\tthis.LiveChatState.greetingMessage = s.greeting_message;\n\t\t\t}\n\t\t\tif (s.welcome_message && !this._hasExplicitOption('welcomeMessage')) {\n\t\t\t\tthis.LiveChatState.welcomeMessage = s.welcome_message;\n\t\t\t}\n\t\t\tif (s.response_time && !this._hasExplicitOption('responseTime')) {\n\t\t\t\tthis.LiveChatState.responseTime = s.response_time;\n\t\t\t}\n\t\t\tif (\n\t\t\t\tArray.isArray(s.team_avatars) &&\n\t\t\t\ts.team_avatars.length > 0 &&\n\t\t\t\t!this._hasExplicitOption('teamAvatars')\n\t\t\t) {\n\t\t\t\tthis.LiveChatState.teamAvatars = s.team_avatars;\n\t\t\t}\n\n\t\t\t// Colors / theme\n\t\t\tif (s.primary_color && !this._hasExplicitOption('primaryColor')) {\n\t\t\t\tthis.liveChatOptions.primaryColor = s.primary_color;\n\t\t\t\tstylesChanged = true;\n\t\t\t}\n\t\t\tif (s.background_color && !this._hasExplicitOption('backgroundColor')) {\n\t\t\t\tthis.liveChatOptions.backgroundColor = s.background_color;\n\t\t\t\tstylesChanged = true;\n\t\t\t}\n\t\t\tif (s.text_color && !this._hasExplicitOption('textColor')) {\n\t\t\t\tthis.liveChatOptions.textColor = s.text_color;\n\t\t\t\tstylesChanged = true;\n\t\t\t}\n\t\t\tif (s.theme && !this._hasExplicitOption('theme')) {\n\t\t\t\tthis.liveChatOptions.theme = s.theme;\n\t\t\t\tstylesChanged = true;\n\t\t\t}\n\t\t\tif (stylesChanged) {\n\t\t\t\tapplyliveChatCustomStyles({\n\t\t\t\t\tprimaryColor: this.liveChatOptions.primaryColor,\n\t\t\t\t\ttextColor: this.liveChatOptions.textColor,\n\t\t\t\t\tbackgroundColor: this.liveChatOptions.backgroundColor,\n\t\t\t\t\ttheme: this.liveChatOptions.theme,\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// Launcher position & padding\n\t\t\tif (s.launcher_position && !this._hasExplicitOption('position')) {\n\t\t\t\tconst parts = s.launcher_position.split('-');\n\t\t\t\tthis.liveChatOptions.position = parts[parts.length - 1] || 'right';\n\t\t\t}\n\t\t\tif (\n\t\t\t\ttypeof s.horizontal_padding === 'number' &&\n\t\t\t\t!this._hasExplicitOption('horizontalPadding')\n\t\t\t) {\n\t\t\t\tthis.liveChatOptions.horizontalPadding = s.horizontal_padding;\n\t\t\t}\n\t\t\tif (\n\t\t\t\ttypeof s.vertical_padding === 'number' &&\n\t\t\t\t!this._hasExplicitOption('verticalPadding')\n\t\t\t) {\n\t\t\t\tthis.liveChatOptions.verticalPadding = s.vertical_padding;\n\t\t\t}\n\t\t\tif (this._widgetContainer) {\n\t\t\t\tthis._widgetContainer.style.setProperty(\n\t\t\t\t\t'--liveChat-h-padding',\n\t\t\t\t\t`${this.liveChatOptions.horizontalPadding ?? 20}px`\n\t\t\t\t);\n\t\t\t\tthis._widgetContainer.style.setProperty(\n\t\t\t\t\t'--liveChat-v-padding',\n\t\t\t\t\t`${this.liveChatOptions.verticalPadding ?? 20}px`\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Module visibility\n\t\t\tif (\n\t\t\t\ttypeof s.home_module_enabled === 'boolean' &&\n\t\t\t\t!this._hasExplicitOption('homeModuleEnabled')\n\t\t\t) {\n\t\t\t\tthis.LiveChatState.homeModuleEnabled = s.home_module_enabled;\n\t\t\t\tif (\n\t\t\t\t\t!s.home_module_enabled &&\n\t\t\t\t\tthis.LiveChatState.currentView === 'home'\n\t\t\t\t) {\n\t\t\t\t\tthis.LiveChatState.currentView =\n\t\t\t\t\t\tthis.LiveChatState.messagesModuleEnabled !== false\n\t\t\t\t\t\t\t? 'messages'\n\t\t\t\t\t\t\t: 'help';\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (\n\t\t\t\ttypeof s.messages_module_enabled === 'boolean' &&\n\t\t\t\t!this._hasExplicitOption('messagesModuleEnabled')\n\t\t\t) {\n\t\t\t\tthis.LiveChatState.messagesModuleEnabled = s.messages_module_enabled;\n\t\t\t\tif (\n\t\t\t\t\t!s.messages_module_enabled &&\n\t\t\t\t\tthis.LiveChatState.currentView === 'messages'\n\t\t\t\t) {\n\t\t\t\t\tthis.LiveChatState.currentView =\n\t\t\t\t\t\tthis.LiveChatState.homeModuleEnabled !== false ? 'home' : 'help';\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Feature flags\n\t\t\tif (\n\t\t\t\ttypeof s.show_avatars === 'boolean' &&\n\t\t\t\t!this._hasExplicitOption('showAvatars')\n\t\t\t) {\n\t\t\t\tthis.LiveChatState.showAvatars = s.show_avatars;\n\t\t\t}\n\t\t\tif (s.start_button_text && !this._hasExplicitOption('startButtonText')) {\n\t\t\t\tthis.LiveChatState.startButtonText = s.start_button_text;\n\t\t\t}\n\t\t\tif (\n\t\t\t\ttypeof s.require_email_before_chat === 'boolean' &&\n\t\t\t\t!this._hasExplicitOption('requireEmailBeforeChat')\n\t\t\t) {\n\t\t\t\tthis.LiveChatState.requireEmailBeforeChat = s.require_email_before_chat;\n\t\t\t}\n\t\t\tif (\n\t\t\t\ttypeof s.allow_attachments === 'boolean' &&\n\t\t\t\t!this._hasExplicitOption('allowAttachments')\n\t\t\t) {\n\t\t\t\tthis.LiveChatState.allowAttachments = s.allow_attachments;\n\t\t\t}\n\t\t\tif (\n\t\t\t\ttypeof s.allow_emoji === 'boolean' &&\n\t\t\t\t!this._hasExplicitOption('allowEmoji')\n\t\t\t) {\n\t\t\t\tthis.LiveChatState.allowEmoji = s.allow_emoji;\n\t\t\t}\n\t\t\tif (\n\t\t\t\ttypeof s.show_reply_time === 'boolean' &&\n\t\t\t\t!this._hasExplicitOption('showReplyTime')\n\t\t\t) {\n\t\t\t\tthis.LiveChatState.showReplyTime = s.show_reply_time;\n\t\t\t}\n\n\t\t\t// URLs\n\t\t\tif (s.feedback_url && !this._hasExplicitOption('feedbackUrl')) {\n\t\t\t\tthis.liveChatOptions.feedbackUrl = s.feedback_url;\n\t\t\t\tthis.LiveChatState.urls.feedback = s.feedback_url;\n\t\t\t}\n\t\t\tif (s.help_url && !this._hasExplicitOption('helpUrl')) {\n\t\t\t\tthis.liveChatOptions.helpUrl = s.help_url;\n\t\t\t\tthis.LiveChatState.urls.help = s.help_url;\n\t\t\t}\n\t\t\tif (s.changelog_url && !this._hasExplicitOption('changelogUrl')) {\n\t\t\t\tthis.liveChatOptions.changelogUrl = s.changelog_url;\n\t\t\t\tthis.LiveChatState.urls.changelog = s.changelog_url;\n\t\t\t}\n\t\t\tif (s.roadmap_url && !this._hasExplicitOption('roadmapUrl')) {\n\t\t\t\tthis.liveChatOptions.roadmapUrl = s.roadmap_url;\n\t\t\t\tthis.LiveChatState.urls.roadmap = s.roadmap_url;\n\t\t\t}\n\n\t\t\t// Business hours availability\n\t\t\tif (s.availability && typeof s.availability === 'object') {\n\t\t\t\tthis.LiveChatState.businessHoursState = s.availability.state || null;\n\t\t\t\tthis.LiveChatState.nextOpenAt = s.availability.next_open_at || null;\n\t\t\t\tthis.LiveChatState.holidayName = s.availability.holiday_name || null;\n\t\t\t}\n\n\t\t\tthis.LiveChatState._notify('settingsUpdate', {});\n\t\t} catch (e) {\n\t\t\t// non-fatal\n\t\t}\n\t}\n\n\t_hasExplicitOption(key) {\n\t\treturn Object.prototype.hasOwnProperty.call(\n\t\t\tthis._explicitOptions || {},\n\t\t\tkey\n\t\t);\n\t}\n\n\tasync checkAgentAvailability() {\n\t\ttry {\n\t\t\tconst response = await this.apiService.checkAgentsOnline();\n\t\t\tif (response.status && response.data) {\n\t\t\t\tthis.LiveChatState.agentsOnline =\n\t\t\t\t\tresponse.data.agents_online ?? response.data.is_online ?? false;\n\t\t\t\tthis.LiveChatState.onlineCount = response.data.online_count || 0;\n\t\t\t\tthis.LiveChatState.responseTime = response.data.response_time || '';\n\n\t\t\t\tif (response.data.available_agents && this.LiveChatState.showAvatars !== false) {\n\t\t\t\t\tthis.LiveChatState.setTeamAvatarsFromAgents(\n\t\t\t\t\t\tresponse.data.available_agents\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tthis.LiveChatState._notify('availabilityUpdate', response.data);\n\t\t\t\treturn response.data;\n\t\t\t}\n\t\t\treturn { agents_online: false, online_count: 0 };\n\t\t} catch (error) {\n\t\t\tconsole.error('[LiveChatWidget] Failed to check availability:', error);\n\t\t\treturn { agents_online: false, online_count: 0 };\n\t\t}\n\t}\n\n\tasync _fetchChangelog() {\n\t\tif (this.apiService?.mock) {\n\t\t\treturn {\n\t\t\t\thomeItems: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: 'changelog_5',\n\t\t\t\t\t\ttitle: 'New integrations available',\n\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t'Connect with more tools you love and streamline your workflow.',\n\t\t\t\t\t\tlabels: [{ name: 'Integration', color: '#dbeafe' }],\n\t\t\t\t\t\tcoverImage:\n\t\t\t\t\t\t\t'https://images.unsplash.com/photo-1674027444485-cec3da58eef4?w=500&auto=format&fit=crop&q=60',\n\t\t\t\t\t\tpublishedAt: new Date(\n\t\t\t\t\t\t\tDate.now() - 14 * 24 * 60 * 60 * 1000\n\t\t\t\t\t\t).toISOString(),\n\t\t\t\t\t\turl: '#',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tid: 'changelog_2',\n\t\t\t\t\t\ttitle: 'A new era of Insights has arrived',\n\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t'We announced Fin Insights, a groundbreaking, AI-powered product that gives you complete visibility into every customer conversation.',\n\t\t\t\t\t\tlabels: [\n\t\t\t\t\t\t\t{ name: 'New feature', color: '#dcfce7' },\n\t\t\t\t\t\t\t{ name: 'AI', color: '#f3e8ff' },\n\t\t\t\t\t\t],\n\t\t\t\t\t\tcoverImage:\n\t\t\t\t\t\t\t'https://images.unsplash.com/photo-1666875753105-c63a6f3bdc86?w=500&auto=format&fit=crop&q=60',\n\t\t\t\t\t\tpublishedAt: new Date(\n\t\t\t\t\t\t\tDate.now() - 5 * 24 * 60 * 60 * 1000\n\t\t\t\t\t\t).toISOString(),\n\t\t\t\t\t\turl: '#',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tid: 'changelog_1',\n\t\t\t\t\t\ttitle: 'The 2025 Customer Service Transformation Report',\n\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t'Learn how AI has transformed customer service from the ground up—rewriting its economics and reshaping expectations.',\n\t\t\t\t\t\tlabels: [{ name: 'Report', color: '#fef9c3' }],\n\t\t\t\t\t\tcoverImage:\n\t\t\t\t\t\t\t'https://images.unsplash.com/photo-1762330467475-a565d04e1808?w=500&auto=format&fit=crop&q=60',\n\t\t\t\t\t\tpublishedAt: new Date(\n\t\t\t\t\t\t\tDate.now() - 2 * 24 * 60 * 60 * 1000\n\t\t\t\t\t\t).toISOString(),\n\t\t\t\t\t\turl: '#',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tchangelogItems: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: 'changelog_4',\n\t\t\t\t\t\ttitle: 'Enhanced conversation analytics',\n\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t'Get deeper insights into your customer conversations with our new analytics dashboard.',\n\t\t\t\t\t\tlabels: [{ name: 'Analytics', color: '#fce7f3' }],\n\t\t\t\t\t\tcoverImage:\n\t\t\t\t\t\t\t'https://images.unsplash.com/photo-1523961131990-5ea7c61b2107?w=500&auto=format&fit=crop&q=60',\n\t\t\t\t\t\tpublishedAt: new Date(\n\t\t\t\t\t\t\tDate.now() - 10 * 24 * 60 * 60 * 1000\n\t\t\t\t\t\t).toISOString(),\n\t\t\t\t\t\turl: '#',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tid: 'changelog_3',\n\t\t\t\t\t\ttitle: 'Escalation guidance for complex issues',\n\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t'New AI-powered escalation guidance helps your team handle complex customer issues more effectively.',\n\t\t\t\t\t\tlabels: [\n\t\t\t\t\t\t\t{ name: 'New feature', color: '#dcfce7' },\n\t\t\t\t\t\t\t{ name: 'AI', color: '#f3e8ff' },\n\t\t\t\t\t\t],\n\t\t\t\t\t\tcoverImage:\n\t\t\t\t\t\t\t'https://images.unsplash.com/photo-1764773516703-b246ac2ad5ef?w=500&auto=format&fit=crop&q=60',\n\t\t\t\t\t\tpublishedAt: new Date(\n\t\t\t\t\t\t\tDate.now() - 7 * 24 * 60 * 60 * 1000\n\t\t\t\t\t\t).toISOString(),\n\t\t\t\t\t\turl: '#',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\t\t}\n\n\t\ttry {\n\t\t\tconst response = await this.apiService.getChangelogs({ limit: 20 });\n\n\t\t\tif (response.success && response.data) {\n\t\t\t\tconst changelogs = Array.isArray(response.data) ? response.data : [];\n\t\t\t\tconst changelogBase = (this.liveChatOptions.changelogUrl || '').replace(\n\t\t\t\t\t/\\/$/,\n\t\t\t\t\t''\n\t\t\t\t);\n\n\t\t\t\tconst mappedItems = changelogs.map((item) => ({\n\t\t\t\t\tid: item.id,\n\t\t\t\t\ttitle: item.title,\n\t\t\t\t\tdescription: item.excerpt || item.description || '',\n\t\t\t\t\tlabels: item.labels || [],\n\t\t\t\t\tcoverImage: item.cover_image || null,\n\t\t\t\t\tpublishedAt: item.published_at,\n\t\t\t\t\turl:\n\t\t\t\t\t\titem.slug && changelogBase\n\t\t\t\t\t\t\t? `${changelogBase}/${item.slug}`\n\t\t\t\t\t\t\t: changelogBase || null,\n\t\t\t\t}));\n\n\t\t\t\treturn {\n\t\t\t\t\thomeItems: mappedItems.slice(0, 3),\n\t\t\t\t\tchangelogItems: mappedItems,\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn { homeItems: [], changelogItems: [] };\n\t\t} catch (error) {\n\t\t\tconsole.error('[LiveChatWidget] Failed to fetch changelog:', error);\n\t\t\treturn { homeItems: [], changelogItems: [] };\n\t\t}\n\t}\n\n\tasync onMount() {\n\t\tthis._applyPreviewData();\n\n\t\tif (this.liveChatOptions.autoLoadData) {\n\t\t\t// Fetch workspace settings and apply only if not explicitly configured\n\t\t\tthis._fetchAndApplySettings();\n\n\t\t\tthis.loadInitialData();\n\n\t\t\tif (this.apiService?.sessionToken) {\n\t\t\t\tthis._initWebSocket();\n\t\t\t}\n\n\t\t\tthis.checkAgentAvailability();\n\n\t\t\tthis._availabilityInterval = setInterval(() => {\n\t\t\t\tthis.checkAgentAvailability();\n\t\t\t}, 60000);\n\t\t}\n\n\t\tif (\n\t\t\tthis.liveChatOptions.initialView &&\n\t\t\tthis.liveChatOptions.initialView !== this.LiveChatState.currentView\n\t\t) {\n\t\t\tthis.LiveChatState.setView(this.liveChatOptions.initialView);\n\t\t}\n\t}\n\n\tonDestroy() {\n\t\tif (this._stateUnsubscribe) {\n\t\t\tthis._stateUnsubscribe();\n\t\t}\n\n\t\tif (this.wsService) {\n\t\t\tthis.wsService.disconnect();\n\t\t}\n\n\t\tthis._wsUnsubscribers.forEach((unsub) => unsub());\n\t\tthis._wsUnsubscribers = [];\n\n\t\tif (this._availabilityInterval) {\n\t\t\tclearInterval(this._availabilityInterval);\n\t\t}\n\t}\n\n\tdestroy() {\n\t\tremoveliveChatCustomStyles();\n\n\t\tif (this.launcher) {\n\t\t\tthis.launcher.destroy();\n\t\t}\n\t\tif (this.panel) {\n\t\t\tthis.panel.destroy();\n\t\t}\n\t\tthis.onDestroy();\n\t\tsuper.destroy();\n\t}\n}\n","import { BaseWidget } from './BaseWidget.js';\n\nexport class SurveyWidget extends BaseWidget {\n\tconstructor(options) {\n\t\tsuper({ ...options, type: 'survey' });\n\n\t\tthis.surveyOptions = {\n\t\t\tsurveyId: options.surveyId || null,\n\t\t\tsurveyType: options.surveyType || 'nps',\n\t\t\tposition: options.position || 'center',\n\t\t\ttheme: options.theme || 'light',\n\t\t\tenabled:\n\t\t\t\ttypeof options.enabled === 'boolean' ? options.enabled : undefined,\n\t\t\ttitle: options.title || null,\n\t\t\tdescription: options.description || null,\n\t\t\tlowLabel: options.lowLabel || null,\n\t\t\thighLabel: options.highLabel || null,\n\t\t\tratingScale: options.ratingScale || options.scale || null,\n\t\t\tshowFeedbackInput:\n\t\t\t\ttypeof options.showFeedbackInput === 'boolean'\n\t\t\t\t\t? options.showFeedbackInput\n\t\t\t\t\t: null,\n\t\t\tshowSubmitButton:\n\t\t\t\ttypeof options.showSubmitButton === 'boolean'\n\t\t\t\t\t? options.showSubmitButton\n\t\t\t\t\t: null,\n\t\t\tautoSubmitOnSelect:\n\t\t\t\ttypeof options.autoSubmitOnSelect === 'boolean'\n\t\t\t\t\t? options.autoSubmitOnSelect\n\t\t\t\t\t: null,\n\t\t\tshowTitle:\n\t\t\t\ttypeof options.showTitle === 'boolean' ? options.showTitle : null,\n\t\t\tshowDescription:\n\t\t\t\ttypeof options.showDescription === 'boolean'\n\t\t\t\t\t? options.showDescription\n\t\t\t\t\t: null,\n\t\t\tcustomQuestions: options.customQuestions || [],\n\t\t\tpages: Array.isArray(options.pages) ? options.pages : [],\n\t\t\tthankYouConfig:\n\t\t\t\toptions.thankYouConfig || options.thank_you_config || null,\n\t\t\trespondentId: options.respondentId || null,\n\t\t\temail: options.email || null,\n\t\t\tonSubmit: options.onSubmit || null,\n\t\t\tonDismiss: options.onDismiss || null,\n\t\t};\n\n\t\tthis.surveyState = {\n\t\t\tscore: null,\n\t\t\tfeedback: '',\n\t\t\tcustomAnswers: {},\n\t\t\tpageAnswers: {},\n\t\t\tcurrentPageIndex: 0,\n\t\t\tisSubmitting: false,\n\t\t\tisVisible: false,\n\t\t};\n\t}\n\n\tstatic removeDanglingElements() {\n\t\tif (typeof document === 'undefined') return;\n\n\t\tdocument\n\t\t\t.querySelectorAll(\n\t\t\t\t'.feedback-survey, .feedback-survey-backdrop, .feedback-survey-success, .product7-notification'\n\t\t\t)\n\t\t\t.forEach((el) => {\n\t\t\t\tif (el && el.parentNode) {\n\t\t\t\t\tel.parentNode.removeChild(el);\n\t\t\t\t}\n\t\t\t});\n\t}\n\n\t_render() {\n\t\tconst container = document.createElement('div');\n\t\tcontainer.className = 'feedback-survey-container';\n\t\treturn container;\n\t}\n\n\t_attachEvents() {\n\t\t// Events are attached when survey is shown\n\t}\n\n\tshow() {\n\t\tif (\n\t\t\tthis.options.enabled === false ||\n\t\t\tthis.surveyOptions.enabled === false\n\t\t) {\n\t\t\tthis.sdk.eventBus.emit('survey:suppressed', {\n\t\t\t\twidget: this,\n\t\t\t\tsurveyId: this.surveyOptions.surveyId,\n\t\t\t\treason: 'disabled',\n\t\t\t});\n\t\t\treturn this;\n\t\t}\n\n\t\tSurveyWidget.removeDanglingElements();\n\t\tthis._renderSurvey();\n\t\tthis.state.isOpen = true;\n\t\tthis.surveyState.isVisible = true;\n\t\tthis.sdk.eventBus.emit('survey:shown', {\n\t\t\twidget: this,\n\t\t\ttype: this.surveyOptions.surveyType,\n\t\t});\n\t\treturn this;\n\t}\n\n\thide() {\n\t\tthis.state.isOpen = false;\n\t\tthis._closeSurvey();\n\t\treturn this;\n\t}\n\n\t_renderSurvey() {\n\t\tthis._closeSurvey(false);\n\n\t\tconst config = this._getSurveyConfig();\n\t\tif (!config) return;\n\t\tconst isMultiPage = this._isMultiPageSurvey();\n\t\tconst isLastPage = this._isLastPage();\n\t\tconst showFeedbackInput = this._shouldShowFeedbackInput();\n\t\tconst showActions = this._shouldShowActions();\n\t\tconst showTitle = this._shouldShowTitle(config);\n\t\tconst showDescription = this._shouldShowDescription(config);\n\t\tconst progressPercent = isMultiPage\n\t\t\t? Math.round(\n\t\t\t\t\t((this.surveyState.currentPageIndex + 1) /\n\t\t\t\t\t\tthis.surveyOptions.pages.length) *\n\t\t\t\t\t\t100\n\t\t\t\t)\n\t\t\t: 0;\n\t\tconst submitLabel = isMultiPage && !isLastPage ? 'Next' : 'Submit';\n\t\tconst iconArrowRight = `<iconify-icon icon=\"ph:arrow-right\" width=\"16\" height=\"16\"></iconify-icon>`;\n\t\tconst iconCheck = `<iconify-icon icon=\"ph:arrow-right\" width=\"16\" height=\"16\"></iconify-icon>`;\n\t\tconst iconArrowLeft = `<iconify-icon icon=\"ph:arrow-left\" width=\"16\" height=\"16\"></iconify-icon>`;\n\t\tconst backButton =\n\t\t\tisMultiPage && this.surveyState.currentPageIndex > 0\n\t\t\t\t? `<button class=\"feedback-survey-back\">${iconArrowLeft} Back</button>`\n\t\t\t\t: '';\n\n\t\tif (this.surveyOptions.position === 'center') {\n\t\t\tthis.backdropElement = document.createElement('div');\n\t\t\tthis.backdropElement.className = `feedback-survey-backdrop feedback-survey-backdrop-${this.surveyOptions.theme}`;\n\t\t\tdocument.body.appendChild(this.backdropElement);\n\t\t\tthis.backdropElement.addEventListener('click', () =>\n\t\t\t\tthis._handleDismiss()\n\t\t\t);\n\t\t}\n\n\t\tthis.surveyElement = document.createElement('div');\n\t\tthis.surveyElement.className = `feedback-survey feedback-survey-${this.surveyOptions.position} feedback-survey-theme-${this.surveyOptions.theme}${\n\t\t\tshowDescription && !showTitle\n\t\t\t\t? ' feedback-survey-description-primary'\n\t\t\t\t: ''\n\t\t}`;\n\n\t\tthis.surveyElement.innerHTML = `\n\t\t\t<button class=\"feedback-survey-close\"><iconify-icon icon=\"ph:x\" width=\"16\" height=\"16\"></iconify-icon></button>\n\t\t\t${showTitle ? `<h3 class=\"feedback-survey-title\">${config.title}</h3>` : ''}\n\t\t\t${showDescription ? `<p class=\"feedback-survey-description\">${config.description}</p>` : ''}\n\t\t\t${isMultiPage && this.surveyOptions.pages.length > 1 ? `<div class=\"feedback-survey-progress\"><div class=\"feedback-survey-progress-track\"><div class=\"feedback-survey-progress-fill\" style=\"width:${progressPercent}%\"></div></div></div>` : ''}\n\t\t\t<div class=\"feedback-survey-content\">${config.html}</div>\n\t\t\t${\n\t\t\t\tshowFeedbackInput\n\t\t\t\t\t? `<div class=\"feedback-survey-feedback\">\n\t\t\t\t<textarea class=\"feedback-survey-textarea\" placeholder=\"Any additional feedback? (optional)\">${this.surveyState.feedback || ''}</textarea>\n\t\t\t</div>`\n\t\t\t\t\t: ''\n\t\t\t}\n\t\t\t${\n\t\t\t\tshowActions\n\t\t\t\t\t? `<div class=\"feedback-survey-actions\">\n\t\t\t\t${backButton}\n\t\t\t\t<button class=\"feedback-survey-submit\">${submitLabel} ${isLastPage ? iconCheck : iconArrowRight}</button>\n\t\t\t</div>`\n\t\t\t\t\t: ''\n\t\t\t}\n\t\t`;\n\n\t\tdocument.body.appendChild(this.surveyElement);\n\t\tthis._attachSurveyEvents();\n\n\t\trequestAnimationFrame(() => {\n\t\t\tif (!this.surveyElement) return;\n\t\t\tthis.surveyElement.style.opacity = '1';\n\t\t\tthis.surveyElement.style.transform =\n\t\t\t\tthis.surveyOptions.position === 'center'\n\t\t\t\t\t? 'translate(-50%, -50%) scale(1)'\n\t\t\t\t\t: 'translateY(0)';\n\t\t});\n\t}\n\n\t_getSurveyConfig() {\n\t\tif (this._isMultiPageSurvey()) {\n\t\t\treturn this._getCurrentPageConfig();\n\t\t}\n\n\t\tconst npsScale = this._getNPSScale();\n\t\tconst npsUsesSegmentedScale = npsScale.values.length <= 7;\n\t\tconst npsContainerClass = npsUsesSegmentedScale\n\t\t\t? 'feedback-survey-ces feedback-survey-rating-scale'\n\t\t\t: 'feedback-survey-nps';\n\t\tconst npsButtonClass = npsUsesSegmentedScale\n\t\t\t? 'feedback-survey-nps-btn feedback-survey-ces-btn feedback-survey-rating-scale-btn'\n\t\t\t: 'feedback-survey-nps-btn';\n\t\tconst npsLowLabel =\n\t\t\tthis.surveyOptions.lowLabel ||\n\t\t\t(npsScale.start === 0 ? 'Not likely' : 'Strongly Disagree');\n\t\tconst npsHighLabel =\n\t\t\tthis.surveyOptions.highLabel ||\n\t\t\t(npsScale.start === 0 ? 'Very likely' : 'Strongly Agree');\n\t\tconst npsPrompt =\n\t\t\tthis.surveyOptions.description ||\n\t\t\tthis.surveyOptions.title ||\n\t\t\t'How likely are you to recommend us?';\n\t\tconst csatPrompt =\n\t\t\tthis.surveyOptions.description ||\n\t\t\tthis.surveyOptions.title ||\n\t\t\t'How satisfied are you?';\n\t\tconst cesPrompt =\n\t\t\tthis.surveyOptions.description ||\n\t\t\tthis.surveyOptions.title ||\n\t\t\t'How easy was it?';\n\n\t\tconst configs = {\n\t\t\tnps: {\n\t\t\t\ttitle: this.surveyOptions.title || '',\n\t\t\t\tdescription: npsPrompt,\n\t\t\t\thtml: `\n\t\t\t\t\t<div class=\"${npsContainerClass}\">\n\t\t\t\t\t\t${npsScale.values\n\t\t\t\t\t\t\t.map(\n\t\t\t\t\t\t\t\t(n) => `\n\t\t\t\t\t\t\t<button class=\"${npsButtonClass}\" data-score=\"${n}\">${n}</button>\n\t\t\t\t\t\t`\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t.join('')}\n\t\t\t\t\t</div>\n\t\t\t\t\t${this._renderScaleLabels(npsLowLabel, npsHighLabel)}\n\t\t\t\t`,\n\t\t\t},\n\t\t\tcsat: {\n\t\t\t\ttitle: this.surveyOptions.title || '',\n\t\t\t\tdescription: csatPrompt,\n\t\t\t\thtml: `\n\t\t\t\t\t<div class=\"feedback-survey-csat\">\n\t\t\t\t\t\t${[\n\t\t\t\t\t\t\t'\\uD83D\\uDE1E',\n\t\t\t\t\t\t\t'\\uD83D\\uDE15',\n\t\t\t\t\t\t\t'\\uD83D\\uDE10',\n\t\t\t\t\t\t\t'\\uD83D\\uDE42',\n\t\t\t\t\t\t\t'\\uD83D\\uDE04',\n\t\t\t\t\t\t]\n\t\t\t\t\t\t\t.map(\n\t\t\t\t\t\t\t\t(emoji, i) => `\n\t\t\t\t\t\t\t<button class=\"feedback-survey-csat-btn\" data-score=\"${i + 1}\">${emoji}</button>\n\t\t\t\t\t\t`\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t.join('')}\n\t\t\t\t\t</div>\n\t\t\t\t\t${this._renderScaleLabels(\n\t\t\t\t\t\tthis.surveyOptions.lowLabel || 'Very dissatisfied',\n\t\t\t\t\t\tthis.surveyOptions.highLabel || 'Very satisfied'\n\t\t\t\t\t)}\n\t\t\t\t`,\n\t\t\t},\n\t\t\tces: {\n\t\t\t\ttitle: this.surveyOptions.title || '',\n\t\t\t\tdescription: cesPrompt,\n\t\t\t\thtml: `\n\t\t\t\t\t<div class=\"feedback-survey-ces-list\">\n\t\t\t\t\t\t${['Very Difficult', 'Difficult', 'Neutral', 'Easy', 'Very Easy']\n\t\t\t\t\t\t\t.map(\n\t\t\t\t\t\t\t\t(label, i) => `\n\t\t\t\t\t\t\t<button class=\"feedback-survey-ces-btn feedback-survey-ces-list-btn\" data-score=\"${i + 1}\">${label}</button>\n\t\t\t\t\t\t`\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t.join('')}\n\t\t\t\t\t</div>\n\t\t\t\t`,\n\t\t\t},\n\t\t\tcustom: {\n\t\t\t\ttitle: this.surveyOptions.title || 'Quick Feedback',\n\t\t\t\tdescription:\n\t\t\t\t\tthis.surveyOptions.description ||\n\t\t\t\t\t'Help us improve by answering a few questions.',\n\t\t\t\thtml: this._renderCustomQuestions(),\n\t\t\t},\n\t\t};\n\n\t\treturn configs[this.surveyOptions.surveyType] || null;\n\t}\n\n\t_getNPSScale() {\n\t\tconst rawScale = Number(this.surveyOptions.ratingScale);\n\t\tconst scale = Number.isFinite(rawScale) && rawScale >= 2 ? rawScale : 5;\n\t\tconst start = scale === 11 ? 0 : 1;\n\t\treturn {\n\t\t\tscale,\n\t\t\tstart,\n\t\t\tvalues: Array.from({ length: scale }, (_, index) => start + index),\n\t\t};\n\t}\n\n\t_renderScaleLabels(lowLabel, highLabel) {\n\t\tconst low = lowLabel || '';\n\t\tconst high = highLabel || '';\n\t\tif (!low && !high) {\n\t\t\treturn '';\n\t\t}\n\t\treturn `\n\t\t\t<div class=\"feedback-survey-labels\">\n\t\t\t\t<span>${low}</span>\n\t\t\t\t<span>${high}</span>\n\t\t\t</div>\n\t\t`;\n\t}\n\n\t_isRatingSurveyType(type = this.surveyOptions.surveyType) {\n\t\treturn type === 'nps' || type === 'csat' || type === 'ces';\n\t}\n\n\t_shouldShowTitle(config) {\n\t\tif (!config || !config.title) {\n\t\t\treturn false;\n\t\t}\n\t\tif (typeof this.surveyOptions.showTitle === 'boolean') {\n\t\t\treturn this.surveyOptions.showTitle;\n\t\t}\n\t\tif (!this._isMultiPageSurvey() && this._isRatingSurveyType()) {\n\t\t\treturn !config.description;\n\t\t}\n\t\treturn true;\n\t}\n\n\t_shouldShowDescription(config) {\n\t\tif (typeof this.surveyOptions.showDescription === 'boolean') {\n\t\t\treturn this.surveyOptions.showDescription;\n\t\t}\n\t\tif (!this._isMultiPageSurvey() && this._isRatingSurveyType()) {\n\t\t\treturn Boolean(config && (config.description || config.title));\n\t\t}\n\t\treturn Boolean(config && config.description);\n\t}\n\n\t_shouldShowFeedbackInput() {\n\t\tif (this._isMultiPageSurvey()) {\n\t\t\treturn false;\n\t\t}\n\t\tif (typeof this.surveyOptions.showFeedbackInput === 'boolean') {\n\t\t\treturn this.surveyOptions.showFeedbackInput;\n\t\t}\n\t\treturn false;\n\t}\n\n\t_shouldAutoSubmitOnSelect() {\n\t\tif (typeof this.surveyOptions.autoSubmitOnSelect === 'boolean') {\n\t\t\treturn this.surveyOptions.autoSubmitOnSelect;\n\t\t}\n\t\tif (this._isMultiPageSurvey()) {\n\t\t\treturn false;\n\t\t}\n\t\tif (this.surveyOptions.showSubmitButton === true) {\n\t\t\treturn false;\n\t\t}\n\t\treturn this._isRatingSurveyType() && !this._shouldShowFeedbackInput();\n\t}\n\n\t_shouldShowActions() {\n\t\tif (this._isMultiPageSurvey()) {\n\t\t\treturn true;\n\t\t}\n\t\tif (typeof this.surveyOptions.showSubmitButton === 'boolean') {\n\t\t\treturn this.surveyOptions.showSubmitButton;\n\t\t}\n\t\treturn !this._shouldAutoSubmitOnSelect();\n\t}\n\n\t_isMultiPageSurvey() {\n\t\treturn (\n\t\t\tArray.isArray(this.surveyOptions.pages) &&\n\t\t\tthis.surveyOptions.pages.length > 0\n\t\t);\n\t}\n\n\t_getCurrentPage() {\n\t\tif (!this._isMultiPageSurvey()) return null;\n\t\treturn this.surveyOptions.pages[this.surveyState.currentPageIndex] || null;\n\t}\n\n\t_isLastPage() {\n\t\tif (!this._isMultiPageSurvey()) return true;\n\t\treturn (\n\t\t\tthis.surveyState.currentPageIndex >= this.surveyOptions.pages.length - 1\n\t\t);\n\t}\n\n\t_getCurrentPageConfig() {\n\t\tconst page = this._getCurrentPage();\n\t\tif (!page) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn {\n\t\t\ttitle: page.title || '',\n\t\t\tdescription: page.description || '',\n\t\t\thtml: this._renderSurveyPage(page),\n\t\t};\n\t}\n\n\t_renderSurveyPage(page) {\n\t\tswitch (page.type) {\n\t\t\tcase 'rating':\n\t\t\t\treturn this._renderRatingPage(page);\n\t\t\tcase 'multiple_choice':\n\t\t\t\treturn this._renderMultipleChoicePage(page);\n\t\t\tcase 'text':\n\t\t\t\treturn this._renderTextPage(page);\n\t\t\tdefault:\n\t\t\t\treturn '';\n\t\t}\n\t}\n\n\t_renderRatingPage(page) {\n\t\tconst pageId = page.id || `page_${this.surveyState.currentPageIndex}`;\n\t\tconst config = page.rating_config || page.ratingConfig || {};\n\t\tconst scale = Number(config.scale) || 5;\n\t\tconst ratingType = config.survey_type || 'number';\n\t\tconst pageAnswer = this.surveyState.pageAnswers[pageId] || {};\n\t\tconst currentRating = pageAnswer.rating;\n\n\t\tconst labelDefaults = {\n\t\t\tnps:\n\t\t\t\tscale === 11\n\t\t\t\t\t? ['Not likely', 'Very likely']\n\t\t\t\t\t: ['Strongly Disagree', 'Strongly Agree'],\n\t\t\temoji: ['Very dissatisfied', 'Very satisfied'],\n\t\t\tnumber: ['Poor', 'Excellent'],\n\t\t\tstar: ['Poor', 'Excellent'],\n\t\t};\n\t\tconst [defaultLow, defaultHigh] = labelDefaults[ratingType] || ['', ''];\n\t\tconst lowLabel = config.low_label || defaultLow;\n\t\tconst highLabel = config.high_label || defaultHigh;\n\t\tconst labels = this._renderScaleLabels(lowLabel, highLabel);\n\n\t\tif (ratingType === 'nps') {\n\t\t\tconst npsScale = Number.isFinite(scale) && scale >= 2 ? scale : 11;\n\t\t\tconst start = npsScale === 11 ? 0 : 1;\n\t\t\tconst values = Array.from({ length: npsScale }, (_, i) => start + i);\n\t\t\treturn `\n\t\t\t\t<div class=\"feedback-survey-nps\" data-page-id=\"${pageId}\">\n\t\t\t\t\t${values\n\t\t\t\t\t\t.map((n) => {\n\t\t\t\t\t\t\tconst selected = currentRating === n ? ' selected' : '';\n\t\t\t\t\t\t\treturn `<button class=\"feedback-survey-page-rating-btn feedback-survey-nps-btn feedback-survey-nps-score-${n}${selected}\" data-page-id=\"${pageId}\" data-score=\"${n}\">${n}</button>`;\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.join('')}\n\t\t\t\t</div>\n\t\t\t\t${labels}\n\t\t\t`;\n\t\t}\n\n\t\tif (ratingType === 'emoji') {\n\t\t\tconst emojis = [\n\t\t\t\t'\\uD83D\\uDE1E',\n\t\t\t\t'\\uD83D\\uDE15',\n\t\t\t\t'\\uD83D\\uDE10',\n\t\t\t\t'\\uD83D\\uDE42',\n\t\t\t\t'\\uD83D\\uDE04',\n\t\t\t];\n\t\t\tconst emojiScale =\n\t\t\t\tNumber.isFinite(scale) && scale >= 2 ? Math.min(scale, 5) : 5;\n\t\t\treturn `\n\t\t\t\t<div class=\"feedback-survey-csat\" data-page-id=\"${pageId}\">\n\t\t\t\t\t${emojis\n\t\t\t\t\t\t.slice(0, emojiScale)\n\t\t\t\t\t\t.map((emoji, i) => {\n\t\t\t\t\t\t\tconst score = i + 1;\n\t\t\t\t\t\t\tconst selected = currentRating === score ? ' selected' : '';\n\t\t\t\t\t\t\treturn `<button class=\"feedback-survey-page-rating-btn feedback-survey-csat-btn${selected}\" data-page-id=\"${pageId}\" data-score=\"${score}\">${emoji}</button>`;\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.join('')}\n\t\t\t\t</div>\n\t\t\t\t${labels}\n\t\t\t`;\n\t\t}\n\n\t\tif (ratingType === 'star') {\n\t\t\tconst starScale = Number.isFinite(scale) && scale >= 2 ? scale : 5;\n\t\t\treturn `\n\t\t\t\t<div class=\"feedback-survey-stars\" data-page-id=\"${pageId}\">\n\t\t\t\t\t${Array.from({ length: starScale }, (_, i) => {\n\t\t\t\t\t\tconst score = i + 1;\n\t\t\t\t\t\tconst filled =\n\t\t\t\t\t\t\ttypeof currentRating === 'number' && currentRating >= score\n\t\t\t\t\t\t\t\t? ' filled'\n\t\t\t\t\t\t\t\t: '';\n\t\t\t\t\t\treturn `<button class=\"feedback-survey-page-rating-btn feedback-survey-star-btn${filled}\" data-page-id=\"${pageId}\" data-score=\"${score}\"><iconify-icon icon=\"ph:star\" width=\"32\" height=\"32\" style=\"pointer-events:none;\"></iconify-icon></button>`;\n\t\t\t\t\t}).join('')}\n\t\t\t\t</div>\n\t\t\t\t${labels}\n\t\t\t`;\n\t\t}\n\n\t\tconst numScale = Number.isFinite(scale) && scale >= 2 ? scale : 5;\n\t\treturn `\n\t\t\t<div class=\"feedback-survey-rating-scale\" data-page-id=\"${pageId}\">\n\t\t\t\t${Array.from({ length: numScale }, (_, i) => {\n\t\t\t\t\tconst score = i + 1;\n\t\t\t\t\tconst selected = currentRating === score ? ' selected' : '';\n\t\t\t\t\treturn `<button class=\"feedback-survey-page-rating-btn feedback-survey-rating-scale-btn${selected}\" data-page-id=\"${pageId}\" data-score=\"${score}\">${score}</button>`;\n\t\t\t\t}).join('')}\n\t\t\t</div>\n\t\t\t${labels}\n\t\t`;\n\t}\n\n\t_renderMultipleChoicePage(page) {\n\t\tconst pageId = page.id || `page_${this.surveyState.currentPageIndex}`;\n\t\tconst config =\n\t\t\tpage.multipleChoiceConfig || page.multiple_choice_config || {};\n\t\tconst options = Array.isArray(config.options) ? config.options : [];\n\t\tconst allowMultiple =\n\t\t\tconfig.allow_multiple === true ||\n\t\t\tconfig.multiple === true ||\n\t\t\tconfig.allow_multiple_selection === true;\n\t\tconst pageAnswer = this.surveyState.pageAnswers[pageId] || {};\n\t\tconst selectedValues = Array.isArray(pageAnswer.values)\n\t\t\t? pageAnswer.values\n\t\t\t: pageAnswer.value\n\t\t\t\t? [pageAnswer.value]\n\t\t\t\t: [];\n\n\t\treturn `\n\t\t\t<div class=\"feedback-survey-multiple-choice\" data-page-id=\"${pageId}\" data-multiple=\"${allowMultiple}\">\n\t\t\t\t${options\n\t\t\t\t\t.map((option, index) => {\n\t\t\t\t\t\tconst value =\n\t\t\t\t\t\t\toption.value || option.id || option.key || `option_${index}`;\n\t\t\t\t\t\tconst label = option.label || option.text || String(value);\n\t\t\t\t\t\tconst selected = selectedValues.includes(value) ? ' selected' : '';\n\t\t\t\t\t\treturn `<button class=\"feedback-survey-page-choice-btn${selected}\" data-page-id=\"${pageId}\" data-value=\"${value}\">${label}</button>`;\n\t\t\t\t\t})\n\t\t\t\t\t.join('')}\n\t\t\t</div>\n\t\t`;\n\t}\n\n\t_renderTextPage(page) {\n\t\tconst pageId = page.id || `page_${this.surveyState.currentPageIndex}`;\n\t\tconst pageAnswer = this.surveyState.pageAnswers[pageId] || {};\n\t\tconst value = pageAnswer.text || '';\n\t\tconst placeholder = page.placeholder || 'Type your answer...';\n\n\t\treturn `\n\t\t\t<div class=\"feedback-survey-text-page\" data-page-id=\"${pageId}\">\n\t\t\t\t<textarea class=\"feedback-survey-page-textarea\" data-page-id=\"${pageId}\" placeholder=\"${placeholder}\">${value}</textarea>\n\t\t\t</div>\n\t\t`;\n\t}\n\n\t_renderCustomQuestions() {\n\t\tif (\n\t\t\t!this.surveyOptions.customQuestions ||\n\t\t\tthis.surveyOptions.customQuestions.length === 0\n\t\t) {\n\t\t\treturn `\n\t\t\t\t<div class=\"sdk-form-group\">\n\t\t\t\t\t<label class=\"sdk-label\">What feature do you use most?</label>\n\t\t\t\t\t<select class=\"feedback-survey-select\" data-question=\"feature\">\n\t\t\t\t\t\t<option value=\"\">Select a feature</option>\n\t\t\t\t\t\t<option value=\"feedback\">Feedback Collection</option>\n\t\t\t\t\t\t<option value=\"surveys\">Surveys</option>\n\t\t\t\t\t\t<option value=\"analytics\">Analytics</option>\n\t\t\t\t\t\t<option value=\"integrations\">Integrations</option>\n\t\t\t\t\t</select>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"sdk-form-group\">\n\t\t\t\t\t<label class=\"sdk-label\">How often do you use it?</label>\n\t\t\t\t\t<div class=\"feedback-survey-frequency\">\n\t\t\t\t\t\t${['Daily', 'Weekly', 'Monthly', 'Rarely']\n\t\t\t\t\t\t\t.map(\n\t\t\t\t\t\t\t\t(freq) => `\n\t\t\t\t\t\t\t<button class=\"feedback-survey-freq-btn\" data-freq=\"${freq}\">${freq}</button>\n\t\t\t\t\t\t`\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t.join('')}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t`;\n\t\t}\n\n\t\treturn this.surveyOptions.customQuestions\n\t\t\t.map(\n\t\t\t\t(q, index) => `\n\t\t\t<div class=\"sdk-form-group\">\n\t\t\t\t<label class=\"sdk-label\">${q.label}</label>\n\t\t\t\t${this._renderQuestionInput(q, index)}\n\t\t\t</div>\n\t\t`\n\t\t\t)\n\t\t\t.join('');\n\t}\n\n\t_renderQuestionInput(question, index) {\n\t\tswitch (question.type) {\n\t\t\tcase 'select':\n\t\t\t\treturn `\n\t\t\t\t\t<select class=\"feedback-survey-select\" data-question=\"${question.id || index}\">\n\t\t\t\t\t\t<option value=\"\">${question.placeholder || 'Select an option'}</option>\n\t\t\t\t\t\t${question.options.map((opt) => `<option value=\"${opt.value}\">${opt.label}</option>`).join('')}\n\t\t\t\t\t</select>\n\t\t\t\t`;\n\t\t\tcase 'text':\n\t\t\t\treturn `\n\t\t\t\t\t<input type=\"text\" class=\"feedback-survey-input\" data-question=\"${question.id || index}\" placeholder=\"${question.placeholder || ''}\">\n\t\t\t\t`;\n\t\t\tdefault:\n\t\t\t\treturn '';\n\t\t}\n\t}\n\n\t_attachSurveyEvents() {\n\t\tif (!this.surveyElement) return;\n\n\t\tconst closeBtn = this.surveyElement.querySelector('.feedback-survey-close');\n\t\tcloseBtn.addEventListener('click', () => this._handleDismiss());\n\n\t\tconst submitBtn = this.surveyElement.querySelector(\n\t\t\t'.feedback-survey-submit'\n\t\t);\n\t\tif (submitBtn) {\n\t\t\tsubmitBtn.addEventListener('click', () => this._handleSubmit());\n\t\t}\n\n\t\tconst backBtn = this.surveyElement.querySelector('.feedback-survey-back');\n\t\tif (backBtn) {\n\t\t\tbackBtn.addEventListener('click', () => this._handleBack());\n\t\t}\n\n\t\tconst textarea = this.surveyElement.querySelector(\n\t\t\t'.feedback-survey-textarea'\n\t\t);\n\t\tif (textarea) {\n\t\t\ttextarea.addEventListener('input', (e) => {\n\t\t\t\tthis.surveyState.feedback = e.target.value;\n\t\t\t});\n\t\t}\n\n\t\tthis._attachTypeSpecificEvents();\n\n\t\tthis._escapeHandler = (e) => {\n\t\t\tif (e.key === 'Escape') {\n\t\t\t\tthis._handleDismiss();\n\t\t\t}\n\t\t};\n\t\tdocument.addEventListener('keydown', this._escapeHandler);\n\t}\n\n\t_attachTypeSpecificEvents() {\n\t\tif (this._isMultiPageSurvey()) {\n\t\t\tthis._attachCurrentPageEvents();\n\t\t\treturn;\n\t\t}\n\n\t\tconst type = this.surveyOptions.surveyType;\n\n\t\tif (type === 'nps') {\n\t\t\tthis.surveyElement\n\t\t\t\t.querySelectorAll('.feedback-survey-nps-btn')\n\t\t\t\t.forEach((btn) => {\n\t\t\t\t\tbtn.addEventListener('click', () =>\n\t\t\t\t\t\tthis._selectNPS(parseInt(btn.dataset.score))\n\t\t\t\t\t);\n\t\t\t\t});\n\t\t}\n\n\t\tif (type === 'csat') {\n\t\t\tthis.surveyElement\n\t\t\t\t.querySelectorAll('.feedback-survey-csat-btn')\n\t\t\t\t.forEach((btn) => {\n\t\t\t\t\tbtn.addEventListener('click', () =>\n\t\t\t\t\t\tthis._selectCSAT(parseInt(btn.dataset.score))\n\t\t\t\t\t);\n\t\t\t\t});\n\t\t}\n\n\t\tif (type === 'ces') {\n\t\t\tthis.surveyElement\n\t\t\t\t.querySelectorAll('.feedback-survey-ces-btn')\n\t\t\t\t.forEach((btn) => {\n\t\t\t\t\tbtn.addEventListener('click', () =>\n\t\t\t\t\t\tthis._selectCES(parseInt(btn.dataset.score))\n\t\t\t\t\t);\n\t\t\t\t});\n\t\t}\n\n\t\tif (type === 'custom') {\n\t\t\tthis.surveyElement\n\t\t\t\t.querySelectorAll('.feedback-survey-freq-btn')\n\t\t\t\t.forEach((btn) => {\n\t\t\t\t\tbtn.addEventListener('click', () =>\n\t\t\t\t\t\tthis._selectFrequency(btn.dataset.freq)\n\t\t\t\t\t);\n\t\t\t\t});\n\n\t\t\tthis.surveyElement\n\t\t\t\t.querySelectorAll('.feedback-survey-select')\n\t\t\t\t.forEach((select) => {\n\t\t\t\t\tselect.addEventListener('change', (e) => {\n\t\t\t\t\t\tthis.surveyState.customAnswers[select.dataset.question] =\n\t\t\t\t\t\t\te.target.value;\n\t\t\t\t\t});\n\t\t\t\t});\n\n\t\t\tthis.surveyElement\n\t\t\t\t.querySelectorAll('.feedback-survey-input')\n\t\t\t\t.forEach((input) => {\n\t\t\t\t\tinput.addEventListener('input', (e) => {\n\t\t\t\t\t\tthis.surveyState.customAnswers[input.dataset.question] =\n\t\t\t\t\t\t\te.target.value;\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t}\n\t}\n\n\t_attachCurrentPageEvents() {\n\t\tconst page = this._getCurrentPage();\n\t\tif (!page || !this.surveyElement) return;\n\t\tconst pageId = page.id || `page_${this.surveyState.currentPageIndex}`;\n\n\t\tif (page.type === 'rating') {\n\t\t\tconst isStarRating = !!this.surveyElement.querySelector(\n\t\t\t\t'.feedback-survey-star-btn'\n\t\t\t);\n\n\t\t\tthis.surveyElement\n\t\t\t\t.querySelectorAll('.feedback-survey-page-rating-btn')\n\t\t\t\t.forEach((btn) => {\n\t\t\t\t\tbtn.addEventListener('click', () => {\n\t\t\t\t\t\tconst score = parseInt(btn.dataset.score);\n\t\t\t\t\t\tif (Number.isNaN(score)) return;\n\t\t\t\t\t\tthis._setPageAnswer(pageId, { rating: score });\n\n\t\t\t\t\t\tif (isStarRating) {\n\t\t\t\t\t\t\tthis.surveyElement\n\t\t\t\t\t\t\t\t.querySelectorAll('.feedback-survey-star-btn')\n\t\t\t\t\t\t\t\t.forEach((star) => {\n\t\t\t\t\t\t\t\t\tconst starScore = parseInt(star.dataset.score);\n\t\t\t\t\t\t\t\t\tstar.classList.toggle('filled', starScore <= score);\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthis.surveyElement\n\t\t\t\t\t\t\t\t.querySelectorAll('.feedback-survey-page-rating-btn')\n\t\t\t\t\t\t\t\t.forEach((item) => item.classList.remove('selected'));\n\t\t\t\t\t\t\tbtn.classList.add('selected');\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\tif (isStarRating) {\n\t\t\t\t\t\tbtn.addEventListener('mouseenter', () => {\n\t\t\t\t\t\t\tconst hoverScore = parseInt(btn.dataset.score);\n\t\t\t\t\t\t\tthis.surveyElement\n\t\t\t\t\t\t\t\t.querySelectorAll('.feedback-survey-star-btn')\n\t\t\t\t\t\t\t\t.forEach((star) => {\n\t\t\t\t\t\t\t\t\tconst starScore = parseInt(star.dataset.score);\n\t\t\t\t\t\t\t\t\tstar.classList.toggle('hovered', starScore <= hoverScore);\n\t\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});\n\n\t\t\tif (isStarRating) {\n\t\t\t\tconst container = this.surveyElement.querySelector(\n\t\t\t\t\t'.feedback-survey-stars'\n\t\t\t\t);\n\t\t\t\tif (container) {\n\t\t\t\t\tcontainer.addEventListener('mouseleave', () => {\n\t\t\t\t\t\tthis.surveyElement\n\t\t\t\t\t\t\t.querySelectorAll('.feedback-survey-star-btn')\n\t\t\t\t\t\t\t.forEach((star) => star.classList.remove('hovered'));\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (page.type === 'multiple_choice') {\n\t\t\tconst container = this.surveyElement.querySelector(\n\t\t\t\t'.feedback-survey-multiple-choice'\n\t\t\t);\n\t\t\tconst allowMultiple = container\n\t\t\t\t? container.dataset.multiple === 'true'\n\t\t\t\t: false;\n\n\t\t\tthis.surveyElement\n\t\t\t\t.querySelectorAll('.feedback-survey-page-choice-btn')\n\t\t\t\t.forEach((btn) => {\n\t\t\t\t\tbtn.addEventListener('click', () => {\n\t\t\t\t\t\tconst value = btn.dataset.value;\n\t\t\t\t\t\tif (!value) return;\n\n\t\t\t\t\t\tconst existing = this.surveyState.pageAnswers[pageId] || {};\n\t\t\t\t\t\tconst existingValues = Array.isArray(existing.values)\n\t\t\t\t\t\t\t? existing.values\n\t\t\t\t\t\t\t: existing.value\n\t\t\t\t\t\t\t\t? [existing.value]\n\t\t\t\t\t\t\t\t: [];\n\n\t\t\t\t\t\tlet nextValues = [];\n\t\t\t\t\t\tif (allowMultiple) {\n\t\t\t\t\t\t\tconst hasValue = existingValues.includes(value);\n\t\t\t\t\t\t\tnextValues = hasValue\n\t\t\t\t\t\t\t\t? existingValues.filter((v) => v !== value)\n\t\t\t\t\t\t\t\t: [...existingValues, value];\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tnextValues = [value];\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tthis._setPageAnswer(pageId, {\n\t\t\t\t\t\t\tvalue: nextValues[0] || null,\n\t\t\t\t\t\t\tvalues: nextValues,\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tif (!allowMultiple) {\n\t\t\t\t\t\t\tthis.surveyElement\n\t\t\t\t\t\t\t\t.querySelectorAll('.feedback-survey-page-choice-btn')\n\t\t\t\t\t\t\t\t.forEach((item) => item.classList.remove('selected'));\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbtn.classList.toggle('selected', nextValues.includes(value));\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t}\n\n\t\tif (page.type === 'text') {\n\t\t\tconst textarea = this.surveyElement.querySelector(\n\t\t\t\t'.feedback-survey-page-textarea'\n\t\t\t);\n\t\t\tif (textarea) {\n\t\t\t\ttextarea.addEventListener('input', (e) => {\n\t\t\t\t\tthis._setPageAnswer(pageId, { text: e.target.value });\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\n\t_selectNPS(score) {\n\t\tthis.surveyState.score = score;\n\t\tthis.surveyElement\n\t\t\t.querySelectorAll('.feedback-survey-nps-btn')\n\t\t\t.forEach((btn) => {\n\t\t\t\tconst btnScore = parseInt(btn.dataset.score);\n\t\t\t\tbtn.classList.toggle('selected', btnScore === score);\n\t\t\t});\n\t\tthis._maybeAutoSubmit();\n\t}\n\n\t_selectCSAT(score) {\n\t\tthis.surveyState.score = score;\n\t\tthis.surveyElement\n\t\t\t.querySelectorAll('.feedback-survey-csat-btn')\n\t\t\t.forEach((btn) => {\n\t\t\t\tconst btnScore = parseInt(btn.dataset.score);\n\t\t\t\tbtn.classList.toggle('selected', btnScore === score);\n\t\t\t});\n\t\tthis._maybeAutoSubmit();\n\t}\n\n\t_maybeAutoSubmit() {\n\t\tif (!this._shouldAutoSubmitOnSelect()) return;\n\t\tthis._handleSubmit();\n\t}\n\n\t_setSubmitLoading(loading) {\n\t\tconst btn = this.surveyElement?.querySelector('.feedback-survey-submit');\n\t\tif (!btn) return;\n\t\tbtn.disabled = loading;\n\t\tbtn.innerHTML = loading\n\t\t\t? `<iconify-icon icon=\"ph:circle-notch\" width=\"16\" height=\"16\" style=\"animation: spin 0.8s linear infinite;\"></iconify-icon> Submitting...`\n\t\t\t: `Submit <iconify-icon icon=\"ph:arrow-right\" width=\"16\" height=\"16\"></iconify-icon>`;\n\t}\n\n\tasync _handleSubmit() {\n\t\tconst type = this.surveyOptions.surveyType;\n\t\tif (this.surveyState.isSubmitting) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (this._isMultiPageSurvey()) {\n\t\t\tif (!this._validateCurrentPage()) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst nextPageIndex = this._getNextPageIndex();\n\t\t\tif (\n\t\t\t\tnextPageIndex !== -1 &&\n\t\t\t\tnextPageIndex !== this.surveyState.currentPageIndex\n\t\t\t) {\n\t\t\t\tthis.surveyState.currentPageIndex = nextPageIndex;\n\t\t\t\tthis._renderSurvey();\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tif (\n\t\t\t!this._isMultiPageSurvey() &&\n\t\t\t(type === 'nps' || type === 'csat' || type === 'ces') &&\n\t\t\tthis.surveyState.score === null\n\t\t) {\n\t\t\tthis._showError('Please select a rating');\n\t\t\treturn;\n\t\t}\n\n\t\tthis.surveyState.isSubmitting = true;\n\t\tthis._setSubmitLoading(true);\n\n\t\tconst respondent = this._getRespondentContext();\n\n\t\tconst responseData = {\n\t\t\tanswers: this._normalizePageAnswersForSubmit(),\n\t\t\t...(this.surveyState.feedback && { feedback: this.surveyState.feedback }),\n\t\t\t...(respondent.respondentId && { respondentId: respondent.respondentId }),\n\t\t\t...(respondent.email && { email: respondent.email }),\n\t\t};\n\n\t\tconst response = {\n\t\t\ttype: type,\n\t\t\tanswers: responseData.answers,\n\t\t\tfeedback: this.surveyState.feedback,\n\t\t\ttimestamp: new Date().toISOString(),\n\t\t};\n\n\t\ttry {\n\t\t\tconst surveyId =\n\t\t\t\tthis.surveyOptions.surveyId || `local_${type}_${Date.now()}`;\n\t\t\tawait this.apiService.submitSurveyResponse(surveyId, responseData);\n\n\t\t\tthis.sdk.eventBus.emit('survey:submitted', { widget: this, response });\n\t\t\tthis._showThankYouScreen(() => {\n\t\t\t\tif (this.surveyOptions.onSubmit) {\n\t\t\t\t\tthis.surveyOptions.onSubmit(response);\n\t\t\t\t}\n\t\t\t});\n\t\t} catch (error) {\n\t\t\tconsole.error('[SurveyWidget] Failed to submit survey:', error);\n\t\t\tthis._showError('Something went wrong. Please try again.');\n\t\t} finally {\n\t\t\tthis.surveyState.isSubmitting = false;\n\t\t\tthis._setSubmitLoading(false);\n\t\t}\n\t}\n\n\t_handleBack() {\n\t\tif (!this._isMultiPageSurvey()) return;\n\t\tif (this.surveyState.currentPageIndex <= 0) return;\n\t\tthis.surveyState.currentPageIndex -= 1;\n\t\tthis._renderSurvey();\n\t}\n\n\t_setPageAnswer(pageId, data) {\n\t\tif (!pageId) return;\n\t\tthis.surveyState.pageAnswers[pageId] = {\n\t\t\t...(this.surveyState.pageAnswers[pageId] || {}),\n\t\t\t...data,\n\t\t};\n\n\t\t// Emit question answered event\n\t\tconst page = this._getCurrentPage();\n\t\tthis.sdk.eventBus.emit('survey:questionAnswered', {\n\t\t\twidget: this,\n\t\t\tpageId,\n\t\t\tpageType: page?.type,\n\t\t\tanswer: this.surveyState.pageAnswers[pageId],\n\t\t});\n\t}\n\n\t_validateCurrentPage() {\n\t\tconst page = this._getCurrentPage();\n\t\tif (!page || page.required !== true) return true;\n\t\tconst pageId = page.id || `page_${this.surveyState.currentPageIndex}`;\n\t\tconst answer = this.surveyState.pageAnswers[pageId] || {};\n\n\t\tif (page.type === 'rating') {\n\t\t\tif (typeof answer.rating !== 'number') {\n\t\t\t\tthis._showError('Please select a rating');\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tif (page.type === 'multiple_choice') {\n\t\t\tconst hasAnswer =\n\t\t\t\tBoolean(answer.value) ||\n\t\t\t\t(Array.isArray(answer.values) && answer.values.length > 0);\n\t\t\tif (!hasAnswer) {\n\t\t\t\tthis._showError('Please select an option');\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tif (page.type === 'text') {\n\t\t\tif (!answer.text || !String(answer.text).trim()) {\n\t\t\t\tthis._showError('Please enter an answer');\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t}\n\n\t_getNextPageIndex() {\n\t\tif (!this._isMultiPageSurvey()) return -1;\n\n\t\tconst page = this._getCurrentPage();\n\t\tconst total = this.surveyOptions.pages.length;\n\t\tconst currentIndex = this.surveyState.currentPageIndex;\n\t\tconst fallbackNext = currentIndex + 1 < total ? currentIndex + 1 : -1;\n\t\tconst navigation = page ? page.after_this_page || page.afterThisPage : null;\n\t\tif (!navigation) return fallbackNext;\n\n\t\tconst conditions = Array.isArray(navigation.conditions)\n\t\t\t? navigation.conditions\n\t\t\t: [];\n\t\tconst pageId = page.id || `page_${currentIndex}`;\n\t\tconst answer = this.surveyState.pageAnswers[pageId] || {};\n\n\t\tfor (const condition of conditions) {\n\t\t\tif (this._evaluateCondition(condition, page, answer)) {\n\t\t\t\treturn this._resolvePageTarget(condition.go_to, total, fallbackNext);\n\t\t\t}\n\t\t}\n\n\t\treturn this._resolvePageTarget(navigation.default, total, fallbackNext);\n\t}\n\n\t_evaluateCondition(condition, page, answer) {\n\t\tconst { operator, values } = condition;\n\t\tif (!operator || !Array.isArray(values)) return false;\n\n\t\tlet answerValue = null;\n\t\tif (page.type === 'rating') {\n\t\t\tanswerValue = typeof answer.rating === 'number' ? answer.rating : null;\n\t\t} else if (page.type === 'multiple_choice') {\n\t\t\tanswerValue =\n\t\t\t\tanswer.value ||\n\t\t\t\t(Array.isArray(answer.values) ? answer.values[0] : null);\n\t\t} else if (page.type === 'text') {\n\t\t\tanswerValue = answer.text || null;\n\t\t}\n\n\t\tif (operator === 'is_empty')\n\t\t\treturn answerValue === null || answerValue === '';\n\t\tif (operator === 'not_empty')\n\t\t\treturn answerValue !== null && answerValue !== '';\n\t\tif (answerValue === null) return false;\n\n\t\tconst [v1, v2] = values;\n\t\tswitch (operator) {\n\t\t\tcase 'equals':\n\t\t\t\treturn String(answerValue) === String(v1);\n\t\t\tcase 'greater_than':\n\t\t\t\treturn Number(answerValue) > Number(v1);\n\t\t\tcase 'less_than':\n\t\t\t\treturn Number(answerValue) < Number(v1);\n\t\t\tcase 'between':\n\t\t\t\treturn (\n\t\t\t\t\tNumber(answerValue) >= Number(v1) && Number(answerValue) <= Number(v2)\n\t\t\t\t);\n\t\t\tcase 'contains':\n\t\t\t\treturn String(answerValue).includes(String(v1));\n\t\t\tdefault:\n\t\t\t\treturn false;\n\t\t}\n\t}\n\n\t_resolvePageTarget(target, total, fallback) {\n\t\tif (!target) return fallback;\n\t\tif (target === 'end_survey') return -1;\n\t\tif (target === 'next_page' || target === 'next') return fallback;\n\t\tif (typeof target === 'number')\n\t\t\treturn target >= 0 && target < total ? target : fallback;\n\t\tif (typeof target === 'string') {\n\t\t\tconst normalizedId = target.replace(/^page:/, '');\n\t\t\tconst idx = this.surveyOptions.pages.findIndex(\n\t\t\t\t(p) => p.id === normalizedId\n\t\t\t);\n\t\t\treturn idx >= 0 ? idx : fallback;\n\t\t}\n\t\treturn fallback;\n\t}\n\n\t_getSubmissionRating() {\n\t\tif (typeof this.surveyState.score === 'number') {\n\t\t\treturn this.surveyState.score;\n\t\t}\n\n\t\tif (!this._isMultiPageSurvey()) {\n\t\t\treturn null;\n\t\t}\n\n\t\tfor (const page of this.surveyOptions.pages) {\n\t\t\tconst pageId =\n\t\t\t\tpage.id || `page_${this.surveyOptions.pages.indexOf(page)}`;\n\t\t\tconst answer = this.surveyState.pageAnswers[pageId];\n\t\t\tif (answer && typeof answer.rating === 'number') {\n\t\t\t\treturn answer.rating;\n\t\t\t}\n\t\t}\n\n\t\treturn null;\n\t}\n\n\t_normalizePageAnswersForSubmit() {\n\t\t// Single-rating surveys (NPS / CSAT / CES / star / emoji) have no pages\n\t\tif (!this._isMultiPageSurvey()) {\n\t\t\tif (typeof this.surveyState.score === 'number') {\n\t\t\t\treturn [{ page_id: 'p1', value: this.surveyState.score }];\n\t\t\t}\n\t\t\treturn [];\n\t\t}\n\n\t\tconst output = [];\n\n\t\tfor (const page of this.surveyOptions.pages) {\n\t\t\tconst pageId =\n\t\t\t\tpage.id || `page_${this.surveyOptions.pages.indexOf(page)}`;\n\t\t\tconst answer = this.surveyState.pageAnswers[pageId];\n\t\t\tif (answer == null) continue;\n\n\t\t\tlet value = null;\n\n\t\t\tif (page.type === 'rating' && typeof answer.rating === 'number') {\n\t\t\t\tvalue = answer.rating;\n\t\t\t} else if (page.type === 'multiple_choice') {\n\t\t\t\tconst config =\n\t\t\t\t\tpage.multipleChoiceConfig || page.multiple_choice_config || {};\n\t\t\t\tconst allowMultiple =\n\t\t\t\t\tconfig.allow_multiple === true ||\n\t\t\t\t\tconfig.multiple === true ||\n\t\t\t\t\tconfig.allow_multiple_selection === true;\n\n\t\t\t\tif (\n\t\t\t\t\tallowMultiple &&\n\t\t\t\t\tArray.isArray(answer.values) &&\n\t\t\t\t\tanswer.values.length > 0\n\t\t\t\t) {\n\t\t\t\t\tvalue = answer.values;\n\t\t\t\t} else if (answer.value != null && answer.value !== '') {\n\t\t\t\t\tvalue = answer.value;\n\t\t\t\t}\n\t\t\t} else if (\n\t\t\t\tpage.type === 'text' &&\n\t\t\t\ttypeof answer.text === 'string' &&\n\t\t\t\tanswer.text.trim()\n\t\t\t) {\n\t\t\t\tvalue = answer.text.trim();\n\t\t\t} else if (page.type === 'link' && typeof answer.clicked === 'boolean') {\n\t\t\t\tvalue = answer.clicked;\n\t\t\t}\n\n\t\t\tif (value !== null) {\n\t\t\t\toutput.push({ page_id: pageId, value });\n\t\t\t}\n\t\t}\n\n\t\treturn output;\n\t}\n\n\t_getRespondentContext() {\n\t\tconst sdkMetadata =\n\t\t\ttypeof this.sdk.getMetadata === 'function'\n\t\t\t\t? this.sdk.getMetadata() || {}\n\t\t\t\t: {};\n\t\tconst apiMetadata =\n\t\t\tthis.apiService && typeof this.apiService.getMetadata === 'function'\n\t\t\t\t? this.apiService.getMetadata() || {}\n\t\t\t\t: {};\n\t\tconst localMetadata = this.options.metadata || {};\n\n\t\treturn {\n\t\t\trespondentId:\n\t\t\t\tthis.surveyOptions.respondentId ||\n\t\t\t\tlocalMetadata.user_id ||\n\t\t\t\tsdkMetadata.user_id ||\n\t\t\t\tapiMetadata.user_id ||\n\t\t\t\tnull,\n\t\t\temail:\n\t\t\t\tthis.surveyOptions.email ||\n\t\t\t\tlocalMetadata.email ||\n\t\t\t\tsdkMetadata.email ||\n\t\t\t\tapiMetadata.email ||\n\t\t\t\tnull,\n\t\t};\n\t}\n\n\tasync _handleDismiss() {\n\t\tif (this.surveyOptions.surveyId) {\n\t\t\ttry {\n\t\t\t\tawait this.apiService.dismissSurvey(this.surveyOptions.surveyId);\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('[SurveyWidget] Failed to dismiss survey:', error);\n\t\t\t}\n\t\t}\n\n\t\tif (this.surveyOptions.onDismiss) {\n\t\t\tthis.surveyOptions.onDismiss();\n\t\t}\n\t\tthis.sdk.eventBus.emit('survey:dismissed', { widget: this });\n\t\tthis._closeSurvey();\n\t}\n\n\t_showError(message) {\n\t\tconst existing = this.surveyElement.querySelector('.feedback-survey-error');\n\t\tif (existing) existing.remove();\n\n\t\tconst error = document.createElement('div');\n\t\terror.className = 'feedback-survey-error';\n\t\terror.innerHTML = `<iconify-icon icon=\"ph:warning\" width=\"15\" height=\"15\"></iconify-icon><span>${message}</span>`;\n\n\t\tthis.surveyElement.prepend(error);\n\n\t\tsetTimeout(() => error.remove(), 3000);\n\t}\n\n\t_showThankYouScreen(onAfterClose) {\n\t\tif (!this.surveyElement) return;\n\n\t\tconst pages = this.surveyOptions.pages || [];\n\t\tconst currentPage =\n\t\t\tpages[this.surveyState.currentPageIndex] ||\n\t\t\tpages[pages.length - 1] ||\n\t\t\tnull;\n\t\tconst pageConfig = currentPage?.thankYouConfig || null;\n\t\tconst surveyConfig = this.surveyOptions.thankYouConfig || null;\n\t\tconst config =\n\t\t\t(pageConfig?.title ? pageConfig : null) ||\n\t\t\t(surveyConfig?.title ? surveyConfig : null) ||\n\t\t\t{};\n\t\tconst title = config.title || 'Thanks for your feedback!';\n\t\tconst buttonText = config.button_text || null;\n\t\tconst rawUrl = config.button_url || '';\n\t\tconst buttonUrl = rawUrl\n\t\t\t? /^https?:\\/\\//i.test(rawUrl)\n\t\t\t\t? rawUrl\n\t\t\t\t: `https://${rawUrl}`\n\t\t\t: '#';\n\n\t\tif (this._escapeHandler) {\n\t\t\tdocument.removeEventListener('keydown', this._escapeHandler);\n\t\t\tthis._escapeHandler = null;\n\t\t}\n\n\t\tthis.surveyElement.innerHTML = `\n\t\t\t<button class=\"feedback-survey-close\"><iconify-icon icon=\"ph:x\" width=\"16\" height=\"16\"></iconify-icon></button>\n\t\t\t<div class=\"feedback-survey-thankyou\">\n\t\t\t\t<iconify-icon icon=\"ph:check-circle\" width=\"48\" height=\"48\" class=\"feedback-survey-thankyou-icon\"></iconify-icon>\n\t\t\t\t<h3 class=\"feedback-survey-thankyou-title\">${title}</h3>\n\t\t\t\t${\n\t\t\t\t\tbuttonText\n\t\t\t\t\t\t? `\n\t\t\t\t\t<a class=\"feedback-survey-thankyou-btn\" href=\"${buttonUrl}\" target=\"_blank\" rel=\"noopener noreferrer\">\n\t\t\t\t\t\t${buttonText}\n\t\t\t\t\t\t<iconify-icon icon=\"ph:arrow-square-out\" width=\"15\" height=\"15\" style=\"pointer-events:none;\"></iconify-icon>\n\t\t\t\t\t</a>`\n\t\t\t\t\t\t: ''\n\t\t\t\t}\n\t\t\t</div>\n\t\t`;\n\n\t\tconst closeBtn = this.surveyElement.querySelector('.feedback-survey-close');\n\t\tif (closeBtn) closeBtn.addEventListener('click', () => this._closeSurvey());\n\n\t\tsetTimeout(\n\t\t\t() => {\n\t\t\t\tif (this.surveyElement) this._closeSurvey();\n\t\t\t\tif (onAfterClose) onAfterClose();\n\t\t\t},\n\t\t\tbuttonText ? 6000 : 3500\n\t\t);\n\t}\n\n\t_closeSurvey(resetState = true, immediate = false) {\n\t\tthis.state.isOpen = false;\n\t\tif (this._escapeHandler) {\n\t\t\tdocument.removeEventListener('keydown', this._escapeHandler);\n\t\t\tthis._escapeHandler = null;\n\t\t}\n\n\t\tconst surveyEl = this.surveyElement;\n\t\tconst backdropEl = this.backdropElement;\n\n\t\tif (surveyEl) {\n\t\t\tsurveyEl.style.opacity = '0';\n\t\t\tconst pos = this.surveyOptions.position;\n\t\t\tsurveyEl.style.transform =\n\t\t\t\tpos === 'center'\n\t\t\t\t\t? 'translate(-50%, -50%) scale(0.95)'\n\t\t\t\t\t: pos === 'bottom'\n\t\t\t\t\t\t? 'translateY(100%)'\n\t\t\t\t\t\t: 'translateY(10px)';\n\t\t\tif (immediate) {\n\t\t\t\tif (surveyEl.parentNode) {\n\t\t\t\t\tsurveyEl.parentNode.removeChild(surveyEl);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tif (surveyEl && surveyEl.parentNode) {\n\t\t\t\t\t\tsurveyEl.parentNode.removeChild(surveyEl);\n\t\t\t\t\t}\n\t\t\t\t}, 300);\n\t\t\t}\n\t\t\tthis.surveyElement = null;\n\t\t}\n\n\t\tif (backdropEl) {\n\t\t\tbackdropEl.style.opacity = '0';\n\t\t\tif (immediate) {\n\t\t\t\tif (backdropEl.parentNode) {\n\t\t\t\t\tbackdropEl.parentNode.removeChild(backdropEl);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tif (backdropEl && backdropEl.parentNode) {\n\t\t\t\t\t\tbackdropEl.parentNode.removeChild(backdropEl);\n\t\t\t\t\t}\n\t\t\t\t}, 300);\n\t\t\t}\n\t\t\tthis.backdropElement = null;\n\t\t}\n\n\t\tif (resetState) {\n\t\t\tthis.surveyState = {\n\t\t\t\tscore: null,\n\t\t\t\tfeedback: '',\n\t\t\t\tcustomAnswers: {},\n\t\t\t\tpageAnswers: {},\n\t\t\t\tcurrentPageIndex: 0,\n\t\t\t\tisSubmitting: false,\n\t\t\t\tisVisible: false,\n\t\t\t};\n\t\t}\n\n\t\tthis.sdk.eventBus.emit('survey:closed', { widget: this });\n\t}\n\n\topen() {\n\t\treturn this.show();\n\t}\n\n\tclose() {\n\t\treturn this.hide();\n\t}\n\n\ttoggle() {\n\t\tif (this.surveyState.isVisible) {\n\t\t\treturn this.hide();\n\t\t}\n\n\t\treturn this.show();\n\t}\n\n\tdestroy() {\n\t\tthis._closeSurvey(true, true);\n\t\tsuper.destroy();\n\t}\n}\n","import { BaseWidget } from './BaseWidget.js';\n\nexport class TabWidget extends BaseWidget {\n\tconstructor(options) {\n\t\tsuper({ ...options, type: 'tab' });\n\t}\n\n\t_render() {\n\t\tconst tab = document.createElement('div');\n\t\ttab.className = `feedback-widget feedback-widget-tab position-${this.options.position}`;\n\t\ttab.innerHTML = `\n <div class=\"feedback-tab-trigger\">\n <span class=\"feedback-tab-text\">Feedback</span>\n </div>\n `;\n\n\t\tif (this.options.customStyles) {\n\t\t\tObject.assign(tab.style, this.options.customStyles);\n\t\t}\n\n\t\treturn tab;\n\t}\n\n\t_attachEvents() {\n\t\tconst tab = this.element.querySelector('.feedback-tab-trigger');\n\t\ttab.addEventListener('click', this.openModal);\n\t}\n\n\tupdateText(text) {\n\t\tconst textElement = this.element?.querySelector('.feedback-tab-text');\n\t\tif (textElement) {\n\t\t\ttextElement.textContent = text;\n\t\t}\n\t}\n\n\tupdatePosition(position) {\n\t\tthis.options.position = position;\n\t\tif (this.element) {\n\t\t\tthis.element.className = this.element.className.replace(\n\t\t\t\t/position-\\w+/,\n\t\t\t\t`position-${position}`\n\t\t\t);\n\t\t}\n\t}\n}\n","import { SDKError } from '../utils/errors.js';\nimport { ButtonWidget } from './ButtonWidget.js';\nimport { ChangelogWidget } from './ChangelogWidget.js';\nimport { InlineWidget } from './InlineWidget.js';\nimport { LiveChatWidget } from './LiveChatWidget.js';\nimport { SurveyWidget } from './SurveyWidget.js';\nimport { TabWidget } from './TabWidget.js';\n\nexport class WidgetFactory {\n\tstatic widgets = new Map([\n\t\t['button', ButtonWidget],\n\t\t['tab', TabWidget],\n\t\t['inline', InlineWidget],\n\t\t['survey', SurveyWidget],\n\t\t['liveChat', LiveChatWidget],\n\t\t['changelog', ChangelogWidget],\n\t]);\n\n\tstatic register(type, WidgetClass) {\n\t\tif (typeof type !== 'string' || !type.trim()) {\n\t\t\tthrow new SDKError('Widget type must be a non-empty string');\n\t\t}\n\n\t\tif (typeof WidgetClass !== 'function') {\n\t\t\tthrow new SDKError('Widget class must be a constructor function');\n\t\t}\n\n\t\tthis.widgets.set(type, WidgetClass);\n\t}\n\n\tstatic create(type, options = {}) {\n\t\tconst WidgetClass = this.widgets.get(type);\n\n\t\tif (!WidgetClass) {\n\t\t\tconst availableTypes = Array.from(this.widgets.keys()).join(', ');\n\t\t\tthrow new SDKError(\n\t\t\t\t`Unknown widget type: ${type}. Available types: ${availableTypes}`\n\t\t\t);\n\t\t}\n\n\t\ttry {\n\t\t\treturn new WidgetClass(options);\n\t\t} catch (error) {\n\t\t\tthrow new SDKError(\n\t\t\t\t`Failed to create widget of type '${type}': ${error.message}`,\n\t\t\t\terror\n\t\t\t);\n\t\t}\n\t}\n\n\tstatic getAvailableTypes() {\n\t\treturn Array.from(this.widgets.keys());\n\t}\n\n\tstatic isTypeRegistered(type) {\n\t\treturn this.widgets.has(type);\n\t}\n\n\tstatic unregister(type) {\n\t\treturn this.widgets.delete(type);\n\t}\n\n\tstatic clear() {\n\t\tthis.widgets.clear();\n\t}\n\n\tstatic getWidgetClass(type) {\n\t\treturn this.widgets.get(type);\n\t}\n}\n","import { CSS_STYLES } from '../styles/styles.js';\nimport { ConfigError, SDKError } from '../utils/errors.js';\nimport { deepMerge, generateId } from '../utils/helpers.js';\nimport { WidgetFactory } from '../widgets/WidgetFactory.js';\nimport { APIService } from './APIService.js';\nimport { EventBus } from './EventBus.js';\n\nexport class Product7 {\n\tconstructor(config = {}) {\n\t\tthis.config = this._validateAndMergeConfig(config);\n\t\tthis.initialized = false;\n\t\tthis.identified = false;\n\t\tthis.widgets = new Map();\n\t\tthis.eventBus = new EventBus();\n\n\t\tthis.apiService = new APIService({\n\t\t\tapiUrl: this.config.apiUrl,\n\t\t\tworkspace: this.config.workspace,\n\t\t\tsiteId: this.config.siteId,\n\t\t\tsessionToken: this.config.sessionToken,\n\t\t\tmetadata: this.config.metadata,\n\t\t\tmock: this.config.mock,\n\t\t\tdebug: this.config.debug,\n\t\t\tenv: this.config.env,\n\t\t});\n\n\t\tthis._bindMethods();\n\t}\n\n\t_injectStyles() {\n\t\tif (typeof document === 'undefined') return;\n\t\tif (document.querySelector('#product7-styles')) return;\n\n\t\tconst style = document.createElement('style');\n\t\tstyle.id = 'product7-styles';\n\t\tstyle.textContent = CSS_STYLES;\n\t\tdocument.head.appendChild(style);\n\n\t\tif (!document.querySelector('#product7-iconify')) {\n\t\t\tconst script = document.createElement('script');\n\t\t\tscript.id = 'product7-iconify';\n\t\t\tscript.src =\n\t\t\t\t'https://cdn.jsdelivr.net/npm/iconify-icon@2/dist/iconify-icon.min.js';\n\t\t\tscript.async = true;\n\t\t\tdocument.head.appendChild(script);\n\t\t}\n\t}\n\n\tasync init() {\n\t\tif (this.initialized) {\n\t\t\treturn { alreadyInitialized: true };\n\t\t}\n\n\t\tthis._injectStyles();\n\n\t\ttry {\n\t\t\tconst initData = await this.apiService.init();\n\n\t\t\tconst serverConfig = initData.config ? { ...initData.config } : {};\n\t\t\tif (initData.widgets) {\n\t\t\t\tconst widgets = { ...initData.widgets };\n\t\t\t\tif (widgets.web_chat && !widgets.liveChat) {\n\t\t\t\t\twidgets.liveChat = widgets.web_chat;\n\t\t\t\t\tdelete widgets.web_chat;\n\t\t\t\t}\n\t\t\t\tserverConfig.widgets = widgets;\n\t\t\t}\n\t\t\tif (Object.keys(serverConfig).length > 0) {\n\t\t\t\tthis.config = deepMerge(serverConfig, this.config);\n\t\t\t}\n\n\t\t\tthis.initialized = true;\n\t\t\tconst identifyResult = await this._syncConfiguredMetadataAfterInit();\n\t\t\tthis.eventBus.emit('sdk:initialized', {\n\t\t\t\tconfig: this.config,\n\t\t\t\tsessionToken: initData.sessionToken,\n\t\t\t});\n\n\t\t\treturn {\n\t\t\t\tinitialized: true,\n\t\t\t\tconfig: initData.config || {},\n\t\t\t\tsessionToken: initData.sessionToken,\n\t\t\t\texpiresIn: initData.expiresIn,\n\t\t\t\tidentified: Boolean(identifyResult?.identified),\n\t\t\t};\n\t\t} catch (error) {\n\t\t\tthis.eventBus.emit('sdk:error', { error });\n\t\t\tthrow new SDKError(`Failed to initialize SDK: ${error.message}`, error);\n\t\t}\n\t}\n\n\tcreateWidget(type = 'button', options = {}) {\n\t\tif (!this.initialized) {\n\t\t\tthrow new SDKError(\n\t\t\t\t'SDK must be initialized before creating widgets. Call init() first.'\n\t\t\t);\n\t\t}\n\n\t\tconst requestedType = type || 'button';\n\t\tconst normalizedType = this._normalizeWidgetType(requestedType);\n\t\tconst widgetId = generateId('widget');\n\t\tconst widgetConfig = this._getWidgetTypeConfig(normalizedType);\n\t\tconst explicitOptions = this._omitUndefined(\n\t\t\tthis._normalizeWidgetOptions(normalizedType, options)\n\t\t);\n\t\tconst widgetEnabled = this._isWidgetEnabled(normalizedType, {\n\t\t\t...widgetConfig,\n\t\t\t...explicitOptions,\n\t\t});\n\t\tconst widgetOptions = {\n\t\t\tid: widgetId,\n\t\t\tsdk: this,\n\t\t\tapiService: this.apiService,\n\t\t\t...this.config,\n\t\t\t...widgetConfig,\n\t\t\t...explicitOptions,\n\t\t\tenabled: widgetEnabled,\n\t\t};\n\n\t\ttry {\n\t\t\tconst widget = WidgetFactory.create(normalizedType, widgetOptions);\n\t\t\tthis.widgets.set(widgetId, widget);\n\t\t\tthis.eventBus.emit('widget:created', {\n\t\t\t\twidget,\n\t\t\t\ttype: requestedType,\n\t\t\t\tinternalType: normalizedType,\n\t\t\t});\n\t\t\treturn widget;\n\t\t} catch (error) {\n\t\t\tthrow new SDKError(`Failed to create widget: ${error.message}`, error);\n\t\t}\n\t}\n\n\tcreateFeedbackWidget(options = {}) {\n\t\treturn this.createWidget('feedback', options);\n\t}\n\n\tcreateLiveChatWidget(options = {}) {\n\t\treturn this.createWidget('liveChat', options);\n\t}\n\n\tcreateChangelogWidget(options = {}) {\n\t\treturn this.createWidget('changelog', options);\n\t}\n\n\tcreateSurveyWidget(options = {}) {\n\t\treturn this.createWidget('survey', options);\n\t}\n\n\tgetWidget(id) {\n\t\treturn this.widgets.get(id);\n\t}\n\n\tasync getActiveSurveys(context = {}) {\n\t\tif (!this.initialized) {\n\t\t\tthrow new SDKError(\n\t\t\t\t'SDK must be initialized before fetching surveys. Call init() first.'\n\t\t\t);\n\t\t}\n\n\t\ttry {\n\t\t\tconst result = await this.apiService.getActiveSurveys(context);\n\t\t\tconst surveys = (result.data || []).map((survey) =>\n\t\t\t\tthis._normalizeSurveyConfig(survey)\n\t\t\t);\n\t\t\tif (context.includeIneligible) {\n\t\t\t\treturn surveys;\n\t\t\t}\n\t\t\treturn surveys.filter((survey) => this._isSurveyEligible(survey));\n\t\t} catch (error) {\n\t\t\tthis.eventBus.emit('sdk:error', { error });\n\t\t\tthrow new SDKError(\n\t\t\t\t`Failed to fetch active surveys: ${error.message}`,\n\t\t\t\terror\n\t\t\t);\n\t\t}\n\t}\n\n\tasync showSurveyById(surveyId, options = {}) {\n\t\tif (!this.initialized) {\n\t\t\tthrow new SDKError(\n\t\t\t\t'SDK must be initialized before showing surveys. Call init() first.'\n\t\t\t);\n\t\t}\n\n\t\tconst { context = {}, ...displayOptions } = options;\n\t\tconst surveys = await this.getActiveSurveys({\n\t\t\t...context,\n\t\t\tincludeEligibility: true,\n\t\t\tincludeIneligible: true,\n\t\t});\n\t\tconst surveyConfig = surveys.find(\n\t\t\t(s) => s.surveyId === surveyId || s.id === surveyId\n\t\t);\n\n\t\tif (!surveyConfig) {\n\t\t\tthrow new SDKError(\n\t\t\t\t`Survey with ID '${surveyId}' not found or not active`\n\t\t\t);\n\t\t}\n\n\t\tif (!this._isSurveyEligible(surveyConfig)) {\n\t\t\tthis.eventBus.emit('survey:suppressed', {\n\t\t\t\tsurveyId,\n\t\t\t\treason: this._getSurveyIneligibilityReason(surveyConfig),\n\t\t\t\tsurvey: surveyConfig,\n\t\t\t});\n\t\t\treturn null;\n\t\t}\n\n\t\treturn this.showSurvey({\n\t\t\tsurveyId: surveyConfig.id,\n\t\t\tsurveyType: surveyConfig.surveyType || surveyConfig.type,\n\t\t\ttitle: surveyConfig.title,\n\t\t\tdescription: surveyConfig.description,\n\t\t\tlowLabel: surveyConfig.lowLabel || surveyConfig.low_label,\n\t\t\thighLabel: surveyConfig.highLabel || surveyConfig.high_label,\n\t\t\tratingScale: surveyConfig.ratingScale ?? surveyConfig.rating_scale,\n\t\t\tshowFeedbackInput:\n\t\t\t\tsurveyConfig.showFeedbackInput ?? surveyConfig.show_feedback_input,\n\t\t\tshowSubmitButton:\n\t\t\t\tsurveyConfig.showSubmitButton ?? surveyConfig.show_submit_button,\n\t\t\tautoSubmitOnSelect:\n\t\t\t\tsurveyConfig.autoSubmitOnSelect ?? surveyConfig.auto_submit_on_select,\n\t\t\tshowTitle: surveyConfig.showTitle ?? surveyConfig.show_title,\n\t\t\tshowDescription:\n\t\t\t\tsurveyConfig.showDescription ?? surveyConfig.show_description,\n\t\t\tcustomQuestions: surveyConfig.customQuestions || surveyConfig.questions,\n\t\t\tpages: surveyConfig.pages,\n\t\t\tthankYouConfig:\n\t\t\t\tsurveyConfig.thankYouConfig || surveyConfig.thank_you_config || null,\n\t\t\tenabled: surveyConfig.enabled,\n\t\t\t...displayOptions,\n\t\t});\n\t}\n\n\tshowSurvey(options = {}) {\n\t\tif (!this.initialized) {\n\t\t\tthrow new SDKError(\n\t\t\t\t'SDK must be initialized before showing surveys. Call init() first.'\n\t\t\t);\n\t\t}\n\n\t\tif (!this._isSurveyEligible(options)) {\n\t\t\tthis.eventBus.emit('survey:suppressed', {\n\t\t\t\tsurveyId: options.surveyId || options.id || null,\n\t\t\t\treason: this._getSurveyIneligibilityReason(options),\n\t\t\t\tsurvey: options,\n\t\t\t});\n\t\t\treturn null;\n\t\t}\n\n\t\tconst normalizedOptions = this._normalizeSurveyConfig(options);\n\t\tconst surveyConfigDefaults = this._getWidgetTypeConfig('survey');\n\t\tconst surveyEnabled = this._isWidgetEnabled('survey', normalizedOptions);\n\n\t\tif (!surveyEnabled) {\n\t\t\tthis.eventBus.emit('survey:suppressed', {\n\t\t\t\tsurveyId:\n\t\t\t\t\tnormalizedOptions.surveyId ||\n\t\t\t\t\tnormalizedOptions.id ||\n\t\t\t\t\toptions.id ||\n\t\t\t\t\tnull,\n\t\t\t\treason: 'disabled',\n\t\t\t\tsurvey: normalizedOptions,\n\t\t\t});\n\t\t\treturn null;\n\t\t}\n\n\t\tconst surveyWidget = this.createSurveyWidget({\n\t\t\tsurveyId: normalizedOptions.surveyId,\n\t\t\tsurveyType:\n\t\t\t\tnormalizedOptions.surveyType || normalizedOptions.type || 'nps',\n\t\t\tposition:\n\t\t\t\tnormalizedOptions.position ??\n\t\t\t\tsurveyConfigDefaults.position ??\n\t\t\t\tthis.config.position ??\n\t\t\t\t'right',\n\t\t\ttheme:\n\t\t\t\tnormalizedOptions.theme ??\n\t\t\t\tsurveyConfigDefaults.theme ??\n\t\t\t\tthis.config.theme ??\n\t\t\t\t'light',\n\t\t\ttitle: normalizedOptions.title,\n\t\t\tdescription: normalizedOptions.description,\n\t\t\tlowLabel: normalizedOptions.lowLabel,\n\t\t\thighLabel: normalizedOptions.highLabel,\n\t\t\tratingScale: normalizedOptions.ratingScale ?? normalizedOptions.scale,\n\t\t\tshowFeedbackInput: normalizedOptions.showFeedbackInput,\n\t\t\tshowSubmitButton: normalizedOptions.showSubmitButton,\n\t\t\tautoSubmitOnSelect: normalizedOptions.autoSubmitOnSelect,\n\t\t\tshowTitle: normalizedOptions.showTitle,\n\t\t\tshowDescription: normalizedOptions.showDescription,\n\t\t\tcustomQuestions: normalizedOptions.customQuestions,\n\t\t\tpages: normalizedOptions.pages,\n\t\t\tthankYouConfig: normalizedOptions.thankYouConfig,\n\t\t\trespondentId: normalizedOptions.respondentId,\n\t\t\temail: normalizedOptions.email,\n\t\t\tonSubmit: normalizedOptions.onSubmit,\n\t\t\tonDismiss: normalizedOptions.onDismiss,\n\t\t\tenabled: surveyEnabled,\n\t\t});\n\n\t\tsurveyWidget.mount();\n\t\tsurveyWidget.show();\n\n\t\treturn surveyWidget;\n\t}\n\n\t_isSurveyEligible(survey = {}) {\n\t\tconst shouldShow = this._getSurveyField(survey, [\n\t\t\t'shouldShow',\n\t\t\t'should_show',\n\t\t]);\n\t\tif (typeof shouldShow === 'boolean') {\n\t\t\treturn shouldShow;\n\t\t}\n\n\t\tconst eligibilityShouldShow = this._getSurveyField(\n\t\t\tsurvey.eligibility || {},\n\t\t\t['shouldShow', 'should_show']\n\t\t);\n\t\tif (typeof eligibilityShouldShow === 'boolean') {\n\t\t\treturn eligibilityShouldShow;\n\t\t}\n\n\t\tconst eligible = this._getSurveyField(survey, [\n\t\t\t'eligible',\n\t\t\t'isEligible',\n\t\t\t'is_eligible',\n\t\t]);\n\t\tif (typeof eligible === 'boolean') {\n\t\t\treturn eligible;\n\t\t}\n\n\t\tconst isAnswered = this._getSurveyField(survey, [\n\t\t\t'isAnswered',\n\t\t\t'is_answered',\n\t\t]);\n\t\tif (typeof isAnswered === 'boolean') {\n\t\t\treturn !isAnswered;\n\t\t}\n\n\t\tconst eligibilityAnswered = this._getSurveyField(survey.eligibility || {}, [\n\t\t\t'isAnswered',\n\t\t\t'is_answered',\n\t\t]);\n\t\tif (typeof eligibilityAnswered === 'boolean') {\n\t\t\treturn !eligibilityAnswered;\n\t\t}\n\n\t\treturn true;\n\t}\n\n\t_getSurveyIneligibilityReason(survey = {}) {\n\t\tconst explicitReason = this._getSurveyField(survey, [\n\t\t\t'reason',\n\t\t\t'suppressionReason',\n\t\t\t'suppression_reason',\n\t\t]);\n\t\tif (explicitReason) {\n\t\t\treturn explicitReason;\n\t\t}\n\n\t\tconst eligibilityReason = this._getSurveyField(survey.eligibility || {}, [\n\t\t\t'reason',\n\t\t\t'suppressionReason',\n\t\t\t'suppression_reason',\n\t\t]);\n\t\tif (eligibilityReason) {\n\t\t\treturn eligibilityReason;\n\t\t}\n\n\t\tconst isAnswered = this._getSurveyField(survey, [\n\t\t\t'isAnswered',\n\t\t\t'is_answered',\n\t\t]);\n\t\tif (isAnswered === true) {\n\t\t\treturn 'already_answered';\n\t\t}\n\n\t\treturn 'ineligible';\n\t}\n\n\t_normalizeSurveyConfig(survey = {}) {\n\t\tconst firstPage =\n\t\t\tArray.isArray(survey.pages) && survey.pages.length > 0\n\t\t\t\t? survey.pages[0]\n\t\t\t\t: null;\n\t\tconst ratingConfig = firstPage\n\t\t\t? firstPage.rating_config || firstPage.ratingConfig || {}\n\t\t\t: {};\n\n\t\tconst inferredType =\n\t\t\tsurvey.surveyType ||\n\t\t\tsurvey.survey_type ||\n\t\t\tsurvey.type ||\n\t\t\tthis._inferSurveyTypeFromPage(firstPage) ||\n\t\t\t'nps';\n\n\t\treturn {\n\t\t\t...survey,\n\t\t\tsurveyId: survey.surveyId || survey.survey_id || survey.id || null,\n\t\t\tsurveyType: survey.surveyType || survey.survey_type || inferredType,\n\t\t\ttype: survey.type || survey.survey_type || inferredType,\n\t\t\tenabled: typeof survey.enabled === 'boolean' ? survey.enabled : undefined,\n\t\t\tshould_show:\n\t\t\t\tsurvey.should_show ??\n\t\t\t\t(survey.eligibility ? survey.eligibility.should_show : undefined),\n\t\t\treason:\n\t\t\t\tsurvey.reason ||\n\t\t\t\t(survey.eligibility ? survey.eligibility.reason : undefined),\n\t\t\ttitle:\n\t\t\t\tsurvey.title || survey.name || (firstPage ? firstPage.title : null),\n\t\t\tdescription:\n\t\t\t\tsurvey.description || (firstPage ? firstPage.description : null),\n\t\t\tlowLabel:\n\t\t\t\tsurvey.lowLabel || survey.low_label || ratingConfig.low_label || null,\n\t\t\thighLabel:\n\t\t\t\tsurvey.highLabel ||\n\t\t\t\tsurvey.high_label ||\n\t\t\t\tratingConfig.high_label ||\n\t\t\t\tnull,\n\t\t\tratingScale:\n\t\t\t\tsurvey.ratingScale ?? survey.rating_scale ?? ratingConfig.scale ?? null,\n\t\t\tshowFeedbackInput:\n\t\t\t\tsurvey.showFeedbackInput ?? survey.show_feedback_input ?? null,\n\t\t\tshowSubmitButton:\n\t\t\t\tsurvey.showSubmitButton ?? survey.show_submit_button ?? null,\n\t\t\tautoSubmitOnSelect:\n\t\t\t\tsurvey.autoSubmitOnSelect ?? survey.auto_submit_on_select ?? null,\n\t\t\tshowTitle: survey.showTitle ?? survey.show_title ?? null,\n\t\t\tshowDescription:\n\t\t\t\tsurvey.showDescription ?? survey.show_description ?? null,\n\t\t\tcustomQuestions:\n\t\t\t\tsurvey.customQuestions ||\n\t\t\t\tsurvey.custom_questions ||\n\t\t\t\tsurvey.questions ||\n\t\t\t\t[],\n\t\t\tthankYouConfig: survey.thankYouConfig || survey.thank_you_config || null,\n\t\t\tpages: this._normalizeSurveyPages(survey.pages || []),\n\t\t};\n\t}\n\n\t_normalizeSurveyPages(pages = []) {\n\t\tif (!Array.isArray(pages)) {\n\t\t\treturn [];\n\t\t}\n\n\t\treturn pages\n\t\t\t.map((page, index) => ({\n\t\t\t\tid: page.id || `page_${index}`,\n\t\t\t\ttype: page.type || 'rating',\n\t\t\t\ttitle: page.title || '',\n\t\t\t\tdescription: page.description || '',\n\t\t\t\tplaceholder: page.placeholder || '',\n\t\t\t\trequired: page.required === true,\n\t\t\t\tposition: page.position ?? index,\n\t\t\t\tratingConfig: page.ratingConfig || page.rating_config || null,\n\t\t\t\tmultipleChoiceConfig:\n\t\t\t\t\tpage.multipleChoiceConfig || page.multiple_choice_config || null,\n\t\t\t\tlinkConfig: page.linkConfig || page.link_config || null,\n\t\t\t\tafterThisPage: page.afterThisPage || page.after_this_page || null,\n\t\t\t\tthankYouConfig: page.thankYouConfig || page.thank_you_config || null,\n\t\t\t}))\n\t\t\t.sort((a, b) => a.position - b.position);\n\t}\n\n\t_inferSurveyTypeFromPage(page) {\n\t\tif (!page) return null;\n\t\tconst ratingConfig = page.rating_config || page.ratingConfig || {};\n\t\tconst scale = ratingConfig.scale;\n\t\tconst surveyType = ratingConfig.survey_type;\n\t\tconst title = (page.title || '').toLowerCase();\n\n\t\tif (scale === 11 || surveyType === 'nps') {\n\t\t\treturn 'nps';\n\t\t}\n\n\t\tconst lowLabel = (ratingConfig.low_label || '').toLowerCase();\n\t\tif (\n\t\t\tsurveyType === 'ces' ||\n\t\t\ttitle.includes('effort') ||\n\t\t\ttitle.includes('easy') ||\n\t\t\tlowLabel.includes('difficult')\n\t\t) {\n\t\t\treturn 'ces';\n\t\t}\n\n\t\treturn 'csat';\n\t}\n\n\t_getSurveyField(survey, fields) {\n\t\tfor (const field of fields) {\n\t\t\tif (survey[field] !== undefined && survey[field] !== null) {\n\t\t\t\treturn survey[field];\n\t\t\t}\n\t\t}\n\t\treturn null;\n\t}\n\n\t_getWidgetTypeConfig(type) {\n\t\tconst widgetsConfig = this._isPlainObject(this.config?.widgets)\n\t\t\t? this.config.widgets\n\t\t\t: {};\n\n\t\tconst mergedTypeConfig = this._getWidgetTypeAliases(type).reduce(\n\t\t\t(config, alias) => {\n\t\t\t\tconst legacyTypeConfig = this._isPlainObject(this.config?.[alias])\n\t\t\t\t\t? this.config[alias]\n\t\t\t\t\t: {};\n\n\t\t\t\tconst namespacedTypeConfig = this._isPlainObject(widgetsConfig?.[alias])\n\t\t\t\t\t? widgetsConfig[alias]\n\t\t\t\t\t: {};\n\n\t\t\t\treturn deepMerge(\n\t\t\t\t\tconfig,\n\t\t\t\t\tdeepMerge(legacyTypeConfig, namespacedTypeConfig)\n\t\t\t\t);\n\t\t\t},\n\t\t\t{}\n\t\t);\n\t\treturn this._toCamelCaseObject(mergedTypeConfig);\n\t}\n\n\t_getWidgetTypeAliases(type) {\n\t\tif (type === 'button') {\n\t\t\treturn ['button', 'feedback'];\n\t\t}\n\n\t\treturn [type];\n\t}\n\n\t_isWidgetEnabled(type, options = {}) {\n\t\tconst typeConfig = this._getWidgetTypeConfig(type);\n\t\tif (typeConfig.enabled === false) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (typeof options.enabled === 'boolean') {\n\t\t\treturn options.enabled;\n\t\t}\n\n\t\tif (typeof typeConfig.enabled === 'boolean') {\n\t\t\treturn typeConfig.enabled;\n\t\t}\n\n\t\treturn true;\n\t}\n\n\t_isPlainObject(value) {\n\t\treturn Object.prototype.toString.call(value) === '[object Object]';\n\t}\n\n\t_toCamelCaseKey(key) {\n\t\treturn key.replace(/_([a-z])/g, (_, char) => char.toUpperCase());\n\t}\n\n\t_toCamelCaseObject(value) {\n\t\tif (Array.isArray(value)) {\n\t\t\treturn value.map((item) => this._toCamelCaseObject(item));\n\t\t}\n\n\t\tif (!this._isPlainObject(value)) {\n\t\t\treturn value;\n\t\t}\n\n\t\tconst normalized = {};\n\t\tfor (const [key, nestedValue] of Object.entries(value)) {\n\t\t\tnormalized[this._toCamelCaseKey(key)] =\n\t\t\t\tthis._toCamelCaseObject(nestedValue);\n\t\t}\n\t\treturn normalized;\n\t}\n\n\t_normalizeWidgetType(type) {\n\t\tif (type === 'feedback') {\n\t\t\treturn 'button';\n\t\t}\n\n\t\treturn type;\n\t}\n\n\t_normalizeWidgetOptions(type, options = {}) {\n\t\tif (!this._isPlainObject(options)) {\n\t\t\treturn options;\n\t\t}\n\n\t\tconst normalizedOptions = { ...options };\n\t\tif (\n\t\t\tnormalizedOptions.headless === true &&\n\t\t\tnormalizedOptions.trigger === undefined &&\n\t\t\ttype !== 'survey'\n\t\t) {\n\t\t\tnormalizedOptions.trigger = false;\n\t\t}\n\n\t\treturn normalizedOptions;\n\t}\n\n\t_omitUndefined(value) {\n\t\tif (!this._isPlainObject(value)) {\n\t\t\treturn value;\n\t\t}\n\n\t\treturn Object.fromEntries(\n\t\t\tObject.entries(value).filter(\n\t\t\t\t([, nestedValue]) => nestedValue !== undefined\n\t\t\t)\n\t\t);\n\t}\n\n\tshowChangelog(options = {}) {\n\t\tif (!this.initialized) {\n\t\t\tthrow new SDKError(\n\t\t\t\t'SDK must be initialized before showing changelog. Call init() first.'\n\t\t\t);\n\t\t}\n\n\t\tconst defaults = {\n\t\t\tposition: this.config.position || 'right',\n\t\t\ttheme: this.config.theme || 'light',\n\t\t\ttitle: \"What's New\",\n\t\t\ttriggerText: \"What's New\",\n\t\t\tshowBadge: true,\n\t\t\tviewButtonText: 'View Update',\n\t\t\tshowBackdrop: true,\n\t\t};\n\n\t\tconst configDefaults = this._getWidgetTypeConfig('changelog');\n\t\tconst explicitOptions = this._omitUndefined(options);\n\t\tconst changelogEnabled = this._isWidgetEnabled(\n\t\t\t'changelog',\n\t\t\texplicitOptions\n\t\t);\n\n\t\tif (!changelogEnabled) {\n\t\t\tthis.eventBus.emit('widget:suppressed', {\n\t\t\t\ttype: 'changelog',\n\t\t\t\treason: 'disabled',\n\t\t\t});\n\t\t\treturn null;\n\t\t}\n\n\t\tconst changelogWidget = this.createChangelogWidget({\n\t\t\t...defaults,\n\t\t\t...configDefaults,\n\t\t\t...explicitOptions,\n\t\t\tenabled: changelogEnabled,\n\t\t});\n\n\t\tchangelogWidget.mount();\n\t\tchangelogWidget.show();\n\n\t\treturn changelogWidget;\n\t}\n\n\tasync getChangelogs(options = {}) {\n\t\tif (!this.initialized) {\n\t\t\tthrow new SDKError(\n\t\t\t\t'SDK must be initialized before fetching changelogs. Call init() first.'\n\t\t\t);\n\t\t}\n\n\t\ttry {\n\t\t\tconst result = await this.apiService.getChangelogs(options);\n\t\t\treturn result.data || [];\n\t\t} catch (error) {\n\t\t\tthis.eventBus.emit('sdk:error', { error });\n\t\t\tthrow new SDKError(`Failed to fetch changelogs: ${error.message}`, error);\n\t\t}\n\t}\n\n\tgetAllWidgets() {\n\t\treturn Array.from(this.widgets.values());\n\t}\n\n\tdestroyWidget(id) {\n\t\tconst widget = this.widgets.get(id);\n\t\tif (widget) {\n\t\t\twidget.destroy();\n\t\t\tthis.widgets.delete(id);\n\t\t\tthis.eventBus.emit('widget:removed', { widgetId: id });\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\tdestroyAllWidgets() {\n\t\tfor (const widget of this.widgets.values()) {\n\t\t\twidget.destroy();\n\t\t}\n\t\tthis.widgets.clear();\n\t\tthis.eventBus.emit('widgets:cleared');\n\t}\n\n\tupdateConfig(newConfig) {\n\t\tconst oldConfig = { ...this.config };\n\t\tthis.config = this._validateAndMergeConfig(newConfig, this.config);\n\n\t\tfor (const widget of this.widgets.values()) {\n\t\t\twidget.handleConfigUpdate(this.config);\n\t\t}\n\n\t\tthis.eventBus.emit('config:updated', {\n\t\t\toldConfig,\n\t\t\tnewConfig: this.config,\n\t\t});\n\t}\n\n\tsetMetadata(metadata) {\n\t\tif (metadata) {\n\t\t\tthis._validateMetadata(metadata);\n\t\t}\n\n\t\tthis.config.metadata = metadata;\n\t\tif (this.apiService) {\n\t\t\tthis.apiService.setMetadata(metadata);\n\t\t}\n\t\tthis.identified = false;\n\t\tthis.eventBus.emit('metadata:updated', { metadata });\n\t}\n\n\tgetMetadata() {\n\t\treturn (\n\t\t\tthis.config.metadata ||\n\t\t\t(this.apiService ? this.apiService.getMetadata() : null)\n\t\t);\n\t}\n\n\tasync identify(metadata = this.config.metadata) {\n\t\tif (!this.initialized) {\n\t\t\tthrow new SDKError(\n\t\t\t\t'SDK must be initialized before identifying users. Call init() first.'\n\t\t\t);\n\t\t}\n\n\t\tif (!metadata) {\n\t\t\tthrow new SDKError(\n\t\t\t\t'Identify requires metadata. Provide at least user_id or email.'\n\t\t\t);\n\t\t}\n\n\t\tthis._validateMetadata(metadata);\n\t\tthis.setMetadata(metadata);\n\n\t\ttry {\n\t\t\tconst response = await this.apiService.identify(metadata);\n\t\t\tconst configPatch = this._extractIdentifyConfig(response);\n\t\t\tif (Object.keys(configPatch).length > 0) {\n\t\t\t\tthis.updateConfig(configPatch);\n\t\t\t}\n\n\t\t\tthis.identified = true;\n\t\t\tthis._applyIdentityToWidgets(metadata);\n\n\t\t\tconst result = {\n\t\t\t\tidentified: true,\n\t\t\t\tmetadata: this.getMetadata(),\n\t\t\t\tresponse,\n\t\t\t};\n\n\t\t\tthis.eventBus.emit('sdk:identified', result);\n\t\t\treturn result;\n\t\t} catch (error) {\n\t\t\tthis.identified = false;\n\t\t\tthis.eventBus.emit('sdk:error', { error, phase: 'identify' });\n\t\t\tthrow new SDKError(`Failed to identify user: ${error.message}`, error);\n\t\t}\n\t}\n\n\tasync reinitialize(newMetadata = null) {\n\t\tthis.apiService.clearSession();\n\t\tthis.initialized = false;\n\t\tthis.identified = false;\n\n\t\tif (newMetadata !== null) {\n\t\t\tthis.setMetadata(newMetadata);\n\t\t}\n\n\t\treturn this.init();\n\t}\n\n\ton(event, callback) {\n\t\tthis.eventBus.on(event, callback);\n\t\treturn this;\n\t}\n\n\toff(event, callback) {\n\t\tthis.eventBus.off(event, callback);\n\t\treturn this;\n\t}\n\n\tonce(event, callback) {\n\t\tthis.eventBus.once(event, callback);\n\t\treturn this;\n\t}\n\n\temit(event, data) {\n\t\tthis.eventBus.emit(event, data);\n\t\treturn this;\n\t}\n\n\tdestroy() {\n\t\tthis.destroyAllWidgets();\n\t\tthis.eventBus.emit('sdk:destroyed');\n\t\tthis.eventBus.clear();\n\t\tthis.apiService.clearSession();\n\t\tthis.initialized = false;\n\t\tthis.identified = false;\n\t}\n\n\thasFeedbackBeenSubmitted(cooldownDays = 30) {\n\t\tconst cooldownMs = cooldownDays * 24 * 60 * 60 * 1000;\n\t\tconst now = Date.now();\n\n\t\tif (this.config.last_feedback_at) {\n\t\t\ttry {\n\t\t\t\tconst backendTimestamp = new Date(\n\t\t\t\t\tthis.config.last_feedback_at\n\t\t\t\t).getTime();\n\t\t\t\tif (now - backendTimestamp < cooldownMs) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\t// Invalid date format, continue to localStorage check\n\t\t\t}\n\t\t}\n\n\t\ttry {\n\t\t\tconst storageKey = `feedback_submitted_${this.config.workspace}`;\n\t\t\tconst stored = localStorage.getItem(storageKey);\n\t\t\tif (!stored) return false;\n\n\t\t\tconst data = JSON.parse(stored);\n\t\t\treturn now - data.submittedAt < cooldownMs;\n\t\t} catch (e) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tclearFeedbackSubmissionTracking() {\n\t\ttry {\n\t\t\tconst storageKey = `feedback_submitted_${this.config.workspace}`;\n\t\t\tlocalStorage.removeItem(storageKey);\n\t\t\tthis.eventBus.emit('feedback:trackingCleared');\n\t\t} catch (e) {\n\t\t\tconsole.warn('Failed to clear feedback tracking:', e);\n\t\t}\n\t}\n\n\t_detectEnvironment() {\n\t\tif (typeof window === 'undefined') {\n\t\t\treturn 'production';\n\t\t}\n\n\t\tconst hostname = window.location.hostname.toLowerCase();\n\t\tconst port = window.location.port;\n\n\t\tif (hostname.includes('staging')) {\n\t\t\treturn 'staging';\n\t\t}\n\n\t\tif (hostname === 'app.localhost' && port === '3005') {\n\t\t\treturn 'localstack';\n\t\t}\n\n\t\treturn 'production';\n\t}\n\n\t_validateAndMergeConfig(newConfig, existingConfig = {}) {\n\t\tconst defaultConfig = {\n\t\t\tapiUrl: null,\n\t\t\tworkspace: null,\n\t\t\tmetadata: null,\n\t\t\tposition: 'right',\n\t\t\ttheme: 'light',\n\t\t\tboardName: 'feature-requests',\n\t\t\tautoShow: true,\n\t\t\tdebug: false,\n\t\t\tmock: false,\n\t\t\tenv: this._detectEnvironment(),\n\t\t};\n\n\t\tconst mergedConfig = deepMerge(\n\t\t\tdeepMerge(defaultConfig, existingConfig),\n\t\t\tnewConfig\n\t\t);\n\n\t\tif (!newConfig.env && !existingConfig.env) {\n\t\t\tmergedConfig.env = this._detectEnvironment();\n\t\t}\n\n\t\tif (!mergedConfig.workspace) {\n\t\t\tthrow new ConfigError('Missing required configuration: workspace');\n\t\t}\n\n\t\tif (mergedConfig.metadata) {\n\t\t\tthis._validateMetadata(mergedConfig.metadata);\n\t\t}\n\n\t\treturn mergedConfig;\n\t}\n\n\t_validateMetadata(metadata) {\n\t\tif (!metadata.user_id && !metadata.email) {\n\t\t\tthrow new ConfigError('Metadata must include at least user_id or email');\n\t\t}\n\n\t\tconst validStructure = {\n\t\t\tuser_id: 'string',\n\t\t\temail: 'string',\n\t\t\tname: 'string',\n\t\t\tcustom_fields: 'object',\n\t\t\tcompany: 'object',\n\t\t};\n\n\t\tfor (const [key, expectedType] of Object.entries(validStructure)) {\n\t\t\tif (metadata[key] && typeof metadata[key] !== expectedType) {\n\t\t\t\tthrow new ConfigError(\n\t\t\t\t\t`Metadata field '${key}' must be of type '${expectedType}'`\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\t_bindMethods() {\n\t\tthis.createWidget = this.createWidget.bind(this);\n\t\tthis.createFeedbackWidget = this.createFeedbackWidget.bind(this);\n\t\tthis.createLiveChatWidget = this.createLiveChatWidget.bind(this);\n\t\tthis.createChangelogWidget = this.createChangelogWidget.bind(this);\n\t\tthis.createSurveyWidget = this.createSurveyWidget.bind(this);\n\t\tthis.destroyWidget = this.destroyWidget.bind(this);\n\t\tthis.identify = this.identify.bind(this);\n\t\tthis.updateConfig = this.updateConfig.bind(this);\n\t}\n\n\tstatic create(config) {\n\t\treturn new Product7(config);\n\t}\n\n\tstatic async createAndInit(config) {\n\t\tconst sdk = new Product7(config);\n\t\tawait sdk.init();\n\t\treturn sdk;\n\t}\n\n\tstatic extractMetadataFromAuth(authData) {\n\t\tif (!authData) return null;\n\n\t\treturn {\n\t\t\tuser_id: authData.sub || authData.id || authData.user_id,\n\t\t\temail: authData.email,\n\t\t\tname: authData.name || authData.display_name || authData.full_name,\n\t\t\tcustom_fields: {\n\t\t\t\trole: authData.role,\n\t\t\t\tplan: authData.plan || authData.subscription?.plan,\n\t\t\t\t...(authData.custom_fields || {}),\n\t\t\t},\n\t\t\tcompany:\n\t\t\t\tauthData.company || authData.organization\n\t\t\t\t\t? {\n\t\t\t\t\t\t\tid: authData.company?.id || authData.organization?.id,\n\t\t\t\t\t\t\tname: authData.company?.name || authData.organization?.name,\n\t\t\t\t\t\t\tmonthly_spend: authData.company?.monthly_spend,\n\t\t\t\t\t\t}\n\t\t\t\t\t: undefined,\n\t\t};\n\t}\n\n\tasync _syncConfiguredMetadataAfterInit() {\n\t\tif (\n\t\t\t!this.config.metadata ||\n\t\t\tthis.apiService.identitySyncedToken === this.apiService.sessionToken\n\t\t) {\n\t\t\treturn null;\n\t\t}\n\n\t\ttry {\n\t\t\treturn await this.identify(this.config.metadata);\n\t\t} catch (error) {\n\t\t\tif (this.config.debug) {\n\t\t\t\tconsole.warn('[Product7] Initial identify failed:', error);\n\t\t\t}\n\t\t\treturn null;\n\t\t}\n\t}\n\n\t_extractIdentifyConfig(response) {\n\t\tconst payload = this._isPlainObject(response?.data)\n\t\t\t? response.data\n\t\t\t: response || {};\n\t\tconst configPatch = this._isPlainObject(payload.config)\n\t\t\t? payload.config\n\t\t\t: {};\n\n\t\tif (payload.last_feedback_at !== undefined) {\n\t\t\tconfigPatch.last_feedback_at = payload.last_feedback_at;\n\t\t} else if (payload.lastFeedbackAt !== undefined) {\n\t\t\tconfigPatch.last_feedback_at = payload.lastFeedbackAt;\n\t\t}\n\n\t\treturn this._omitUndefined(configPatch);\n\t}\n\n\t_applyIdentityToWidgets(metadata) {\n\t\tfor (const widget of this.widgets.values()) {\n\t\t\tif (typeof widget.applyIdentity === 'function') {\n\t\t\t\twidget.applyIdentity(metadata);\n\t\t\t}\n\t\t}\n\t}\n}\n","import { APIService } from './core/APIService.js';\nimport { EventBus } from './core/EventBus.js';\nimport { Product7 as Product7SDK } from './core/Product7.js';\nimport {\n\tAPIError,\n\tConfigError,\n\tSDKError,\n\tValidationError,\n\tWidgetError,\n} from './utils/errors.js';\nimport * as helpers from './utils/helpers.js';\nimport { BaseWidget } from './widgets/BaseWidget.js';\nimport { ButtonWidget } from './widgets/ButtonWidget.js';\nimport { ChangelogWidget } from './widgets/ChangelogWidget.js';\nimport { InlineWidget } from './widgets/InlineWidget.js';\nimport { LiveChatWidget } from './widgets/LiveChatWidget.js';\nimport { SurveyWidget } from './widgets/SurveyWidget.js';\nimport { TabWidget } from './widgets/TabWidget.js';\nimport { WidgetFactory } from './widgets/WidgetFactory.js';\n\n// --- Identify: transform flat user data into internal format ---\n\nfunction transformIdentifyData(data) {\n\tconst {\n\t\torganization,\n\t\temail,\n\t\tname,\n\t\tuserId,\n\t\tprofilePicture,\n\t\tlocale,\n\t\tcompanies,\n\t\t...customAttrs\n\t} = data;\n\n\tconst metadata = {\n\t\tuser_id: userId,\n\t\temail,\n\t\tname,\n\t\tprofile_picture: profilePicture,\n\t};\n\n\t// Flat custom attributes → custom_fields\n\tconst knownKeys = [\n\t\t'organization',\n\t\t'email',\n\t\t'name',\n\t\t'userId',\n\t\t'profilePicture',\n\t\t'locale',\n\t\t'companies',\n\t\t'debug',\n\t\t'mock',\n\t\t'env',\n\t\t'apiUrl',\n\t];\n\tconst customFields = {};\n\tfor (const [key, value] of Object.entries(customAttrs)) {\n\t\tif (!knownKeys.includes(key)) {\n\t\t\tcustomFields[key] = value;\n\t\t}\n\t}\n\tif (Object.keys(customFields).length > 0) {\n\t\tmetadata.custom_fields = customFields;\n\t}\n\n\t// Companies array → company (use first for now, backend supports single)\n\tif (Array.isArray(companies) && companies.length > 0) {\n\t\tconst c = companies[0];\n\t\tmetadata.company = {\n\t\t\tid: c.id,\n\t\t\tname: c.name,\n\t\t\tmonthly_spend: c.monthlySpend,\n\t\t\tcustom_fields: {},\n\t\t};\n\t\tconst companyKnownKeys = ['id', 'name', 'monthlySpend', 'createdAt'];\n\t\tfor (const [key, value] of Object.entries(c)) {\n\t\t\tif (!companyKnownKeys.includes(key)) {\n\t\t\t\tmetadata.company.custom_fields[key] = value;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn {\n\t\tworkspace: organization,\n\t\tmetadata,\n\t\tlocale,\n\t\tdebug: data.debug,\n\t\tmock: data.mock,\n\t\tenv: data.env,\n\t\tapiUrl: data.apiUrl,\n\t};\n}\n\nfunction cleanUndefined(obj) {\n\tObject.keys(obj).forEach((key) => {\n\t\tif (obj[key] === undefined) delete obj[key];\n\t});\n\treturn obj;\n}\n\nfunction hasIdentifyMetadata(metadata = {}) {\n\treturn Object.values(metadata).some((value) => value !== undefined);\n}\n\n// --- Ensure SDK is initialized (shared by widget inits) ---\n\nasync function ensureSDK(options) {\n\tif (\n\t\tProduct7._sdk &&\n\t\toptions.organization &&\n\t\tProduct7._sdk.config.workspace !== options.organization\n\t) {\n\t\tProduct7.destroy();\n\t}\n\n\tif (Product7._sdk) return Product7._sdk;\n\n\tif (options.organization) {\n\t\tconst config = cleanUndefined({\n\t\t\tworkspace: options.organization,\n\t\t\tdebug: options.debug,\n\t\t\tmock: options.mock,\n\t\t\tenv: options.env,\n\t\t\tapiUrl: options.apiUrl,\n\t\t});\n\n\t\tconst sdk = new Product7SDK(config);\n\t\tawait sdk.init();\n\t\tProduct7._sdk = sdk;\n\t\tProduct7._organization = options.organization;\n\t\treturn sdk;\n\t}\n\n\treturn null;\n}\n\n// --- Public API ---\n\nconst Product7 = {\n\t// Internal state\n\t_sdk: null,\n\t_identified: false,\n\t_organization: null,\n\t_q: [],\n\t_feedbackWidget: null,\n\t_LiveChatWidget: null,\n\t_surveyWidget: null,\n\n\tversion: '1.0.0',\n\n\t// ==================\n\t// Identify\n\t// ==================\n\n\tasync identify(data = {}, callback) {\n\t\ttry {\n\t\t\tconst transformed = transformIdentifyData(data);\n\t\t\tProduct7._organization =\n\t\t\t\ttransformed.workspace || Product7._organization || null;\n\n\t\t\tconst config = cleanUndefined({\n\t\t\t\tworkspace: Product7._organization,\n\t\t\t\tdebug: transformed.debug,\n\t\t\t\tmock: transformed.mock,\n\t\t\t\tenv: transformed.env,\n\t\t\t\tapiUrl: transformed.apiUrl,\n\t\t\t});\n\n\t\t\tlet sdk = Product7._sdk;\n\t\t\tconst requiresNewSDK =\n\t\t\t\t!sdk || (config.workspace && sdk.config.workspace !== config.workspace);\n\n\t\t\tif (requiresNewSDK) {\n\t\t\t\tif (Product7._sdk) {\n\t\t\t\t\tProduct7.destroy();\n\t\t\t\t\tProduct7._organization = config.workspace || null;\n\t\t\t\t}\n\t\t\t\tsdk = new Product7SDK(config);\n\t\t\t\tProduct7._sdk = sdk;\n\t\t\t}\n\n\t\t\tconst initData = sdk.initialized\n\t\t\t\t? {\n\t\t\t\t\t\talreadyInitialized: true,\n\t\t\t\t\t\tsessionToken: sdk.apiService?.sessionToken,\n\t\t\t\t\t}\n\t\t\t\t: await sdk.init();\n\n\t\t\tconst identifyData = hasIdentifyMetadata(transformed.metadata)\n\t\t\t\t? await sdk.identify(transformed.metadata)\n\t\t\t\t: null;\n\t\t\tProduct7._identified = Boolean(identifyData?.identified);\n\n\t\t\tProduct7._flushQueue();\n\n\t\t\tif (typeof window !== 'undefined' && typeof CustomEvent !== 'undefined') {\n\t\t\t\twindow.dispatchEvent(\n\t\t\t\t\tnew CustomEvent('Product7Ready', {\n\t\t\t\t\t\tdetail: { sdk, config: sdk.config, initData, identifyData },\n\t\t\t\t\t})\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif (typeof callback === 'function') callback(null);\n\t\t\treturn {\n\t\t\t\t...initData,\n\t\t\t\tidentified: Product7._identified,\n\t\t\t\tidentify: identifyData,\n\t\t\t};\n\t\t} catch (error) {\n\t\t\tconsole.error('[Product7] Identify failed:', error);\n\n\t\t\tif (typeof window !== 'undefined' && typeof CustomEvent !== 'undefined') {\n\t\t\t\twindow.dispatchEvent(\n\t\t\t\t\tnew CustomEvent('Product7Error', {\n\t\t\t\t\t\tdetail: { error, phase: 'identify' },\n\t\t\t\t\t})\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif (typeof callback === 'function') callback(error);\n\t\t\tthrow error;\n\t\t}\n\t},\n\n\t// ==================\n\t// Feedback\n\t// ==================\n\n\tasync feedback(options = {}, callback) {\n\t\tconst sdk = await ensureSDK(options);\n\t\tif (!sdk) {\n\t\t\tProduct7._q.push(['feedback', options, callback]);\n\t\t\treturn null;\n\t\t}\n\n\t\tconst widgetOptions = cleanUndefined({\n\t\t\tdisplayMode: options.displayMode || 'panel',\n\t\t\ttheme: options.theme || sdk.config.theme || 'light',\n\t\t\tsize: options.size || 'medium',\n\t\t\tprimaryColor: options.primaryColor,\n\t\t\tbackgroundColor: options.backgroundColor,\n\t\t\ttextColor: options.textColor,\n\t\t\tsuppressAfterSubmission: options.suppressAfterSubmission,\n\t\t\tsuppressionDays: options.suppressionDays,\n\t\t\tshowBackdrop: options.showBackdrop !== false,\n\t\t\tmetadata: options.metadata,\n\t\t});\n\n\t\t// placement → position\n\t\tif (options.placement === 'right') {\n\t\t\twidgetOptions.position = 'right';\n\t\t} else if (options.placement === 'left') {\n\t\t\twidgetOptions.position = 'left';\n\t\t} else if (options.placement) {\n\t\t\twidgetOptions.position = options.placement;\n\t\t}\n\n\t\t// defaultBoard → boardName\n\t\tif (options.defaultBoard) {\n\t\t\twidgetOptions.boardName = options.defaultBoard;\n\t\t}\n\n\t\t// No placement = modal mode, no floating button\n\t\tif (!options.placement) {\n\t\t\twidgetOptions.autoShow = false;\n\t\t\twidgetOptions.displayMode = 'modal';\n\t\t\twidgetOptions.headless = true;\n\t\t} else {\n\t\t\t// Trigger button is always visible when placement is set\n\t\t\twidgetOptions.suppressAfterSubmission = false;\n\t\t\twidgetOptions.enabled = true;\n\t\t}\n\n\t\ttry {\n\t\t\tconst widget = sdk.createFeedbackWidget(widgetOptions);\n\t\t\twidget.mount();\n\n\t\t\tif (options.placement) {\n\t\t\t\twidget.show();\n\t\t\t} else {\n\t\t\t\twidget.hide();\n\t\t\t}\n\n\t\t\tProduct7._feedbackWidget = widget;\n\n\t\t\tif (typeof callback === 'function') {\n\t\t\t\tcallback({ action: 'widgetReady' });\n\n\t\t\t\tsdk.eventBus.on('feedback:submitted', (data) => {\n\t\t\t\t\tcallback({ action: 'feedbackSubmitted', post: data.feedback });\n\t\t\t\t});\n\n\t\t\t\tsdk.eventBus.on('feedback:error', (data) => {\n\t\t\t\t\tcallback({ action: 'feedbackError', error: data.error });\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tProduct7._setupAttributeTriggers();\n\t\t\tProduct7._setupPostMessageListener();\n\n\t\t\treturn widget;\n\t\t} catch (error) {\n\t\t\tconsole.error('[Product7] Failed to initialize feedback widget:', error);\n\t\t\tif (typeof callback === 'function') callback({ action: 'error', error });\n\t\t\treturn null;\n\t\t}\n\t},\n\n\topenFeedback(options = {}) {\n\t\tif (Product7._feedbackWidget) {\n\t\t\tif (options.setBoard) {\n\t\t\t\tProduct7._feedbackWidget.options.boardName = options.setBoard;\n\t\t\t}\n\t\t\tProduct7._feedbackWidget.open();\n\t\t}\n\t},\n\n\tcloseFeedback() {\n\t\tif (Product7._feedbackWidget) {\n\t\t\tProduct7._feedbackWidget.close();\n\t\t}\n\t},\n\n\tdestroyFeedback() {\n\t\tif (Product7._feedbackWidget) {\n\t\t\tProduct7._feedbackWidget.destroy();\n\t\t\tProduct7._feedbackWidget = null;\n\t\t}\n\t},\n\n\t// ==================\n\t// Web Chat\n\t// ==================\n\n\tasync liveChat(options = {}, callback) {\n\t\tconst sdk = await ensureSDK(options);\n\t\tif (!sdk) {\n\t\t\tProduct7._q.push(['liveChat', options, callback]);\n\t\t\treturn null;\n\t\t}\n\n\t\tconst widgetOptions = cleanUndefined({\n\t\t\ttheme: options.theme || sdk.config.theme || 'light',\n\t\t\tprimaryColor: options.primaryColor,\n\t\t\tbackgroundColor: options.backgroundColor,\n\t\t\ttextColor: options.textColor,\n\t\t\tlogoUrl: options.logoUrl,\n\t\t\tteamName: options.teamName,\n\t\t\tteamAvatars: options.teamAvatars,\n\t\t\tgreetingMessage: options.greetingMessage,\n\t\t\twelcomeMessage: options.welcomeMessage,\n\t\t\tenableHelp: options.enableHelp,\n\t\t\tenableChangelog: options.enableChangelog,\n\t\t\tenableNews: options.enableNews,\n\t\t\tautoLoadData: options.autoLoadData,\n\t\t\tinitialView: options.initialView,\n\t\t\tfeaturedContent: options.featuredContent,\n\t\t\tfeedbackUrl: options.feedbackUrl,\n\t\t\tchangelogUrl: options.changelogUrl,\n\t\t\thelpUrl: options.helpUrl,\n\t\t\troadmapUrl: options.roadmapUrl,\n\t\t\tpreviewData: options.previewData,\n\t\t});\n\n\t\t// placement → position\n\t\tif (options.placement === 'right') {\n\t\t\twidgetOptions.position = 'right';\n\t\t} else if (options.placement === 'left') {\n\t\t\twidgetOptions.position = 'left';\n\t\t} else if (options.placement) {\n\t\t\twidgetOptions.position = options.placement;\n\t\t}\n\n\t\t// Web Chat is always explicitly shown — never suppress based on feedback submission history\n\t\twidgetOptions.suppressAfterSubmission = false;\n\t\twidgetOptions.enabled = true;\n\n\t\ttry {\n\t\t\tconst widget = sdk.createLiveChatWidget(widgetOptions);\n\t\t\twidget.mount();\n\t\t\twidget.show();\n\n\t\t\tProduct7._LiveChatWidget = widget;\n\n\t\t\tif (typeof callback === 'function') {\n\t\t\t\tcallback({ action: 'widgetReady' });\n\n\t\t\t\tsdk.eventBus.on('liveChat:messageSent', (data) => {\n\t\t\t\t\tcallback({ action: 'messageSent', message: data });\n\t\t\t\t});\n\n\t\t\t\tsdk.eventBus.on('liveChat:opened', () => {\n\t\t\t\t\tcallback({ action: 'liveChatOpened' });\n\t\t\t\t});\n\n\t\t\t\tsdk.eventBus.on('liveChat:closed', () => {\n\t\t\t\t\tcallback({ action: 'liveChatClosed' });\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// Listen for data-product7-liveChat clicks\n\t\t\tProduct7._setupLiveChatAttributeTriggers();\n\t\t\tProduct7._setupPostMessageListener();\n\n\t\t\treturn widget;\n\t\t} catch (error) {\n\t\t\tconsole.error('[Product7] Failed to initialize web chat widget:', error);\n\t\t\tif (typeof callback === 'function') callback({ action: 'error', error });\n\t\t\treturn null;\n\t\t}\n\t},\n\n\topenLiveChat() {\n\t\tif (Product7._LiveChatWidget) {\n\t\t\tProduct7._LiveChatWidget.open?.() ||\n\t\t\t\tProduct7._LiveChatWidget.openPanel?.();\n\t\t}\n\t},\n\n\tcloseLiveChat() {\n\t\tif (Product7._LiveChatWidget) {\n\t\t\tProduct7._LiveChatWidget.close?.() ||\n\t\t\t\tProduct7._LiveChatWidget.closePanel?.();\n\t\t}\n\t},\n\n\tdestroyLiveChat() {\n\t\tif (Product7._LiveChatWidget) {\n\t\t\tProduct7._LiveChatWidget.destroy();\n\t\t\tProduct7._LiveChatWidget = null;\n\t\t}\n\t},\n\n\t// ==================\n\t// Survey\n\t// ==================\n\n\tasync survey(options = {}, callback) {\n\t\tconst sdk = await ensureSDK(options);\n\t\tif (!sdk) {\n\t\t\tProduct7._q.push(['survey', options, callback]);\n\t\t\treturn null;\n\t\t}\n\n\t\t// placement → position\n\t\tlet position = 'right';\n\t\tif (options.placement === 'right') {\n\t\t\tposition = 'right';\n\t\t} else if (options.placement === 'left') {\n\t\t\tposition = 'left';\n\t\t} else if (options.placement === 'center') {\n\t\t\tposition = 'center';\n\t\t} else if (options.placement === 'bottom') {\n\t\t\tposition = 'bottom';\n\t\t} else if (options.placement) {\n\t\t\tposition = options.placement;\n\t\t}\n\n\t\t// displayMode: \"popover\" (default), \"modal\", \"fullscreen\"\n\t\tconst displayMode = options.displayMode || 'popover';\n\t\tif (displayMode === 'modal' || displayMode === 'fullscreen') {\n\t\t\tposition = 'center';\n\t\t}\n\n\t\t// Wire up all lifecycle callbacks\n\t\tconst surveyCallbacks = {\n\t\t\tonSubmit: (response) => {\n\t\t\t\tif (typeof callback === 'function') {\n\t\t\t\t\tcallback({ action: 'surveySubmitted', response });\n\t\t\t\t}\n\t\t\t},\n\t\t\tonDismiss: () => {\n\t\t\t\tif (typeof callback === 'function') {\n\t\t\t\t\tcallback({ action: 'surveyDismissed' });\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\n\t\t// Register event bus listeners for additional callbacks\n\t\tif (typeof callback === 'function') {\n\t\t\tsdk.eventBus.on('survey:shown', (data) => {\n\t\t\t\tcallback({ action: 'surveyShown', survey: data });\n\t\t\t});\n\n\t\t\tsdk.eventBus.on('survey:questionAnswered', (data) => {\n\t\t\t\tcallback({\n\t\t\t\t\taction: 'questionAnswered',\n\t\t\t\t\tpageId: data.pageId,\n\t\t\t\t\tpageType: data.pageType,\n\t\t\t\t\tanswer: data.answer,\n\t\t\t\t});\n\t\t\t});\n\n\t\t\tsdk.eventBus.on('survey:closed', () => {\n\t\t\t\tcallback({ action: 'surveyClosed' });\n\t\t\t});\n\t\t}\n\n\t\t// Display method: delayed, exitIntent, or immediate (default)\n\t\tconst displayMethod = options.displayMethod || 'immediate';\n\t\tconst showSurvey = async () => {\n\t\t\ttry {\n\t\t\t\tlet widget;\n\n\t\t\t\tif (options.surveyId) {\n\t\t\t\t\t// Show specific survey by ID\n\t\t\t\t\tconst showOpts = {\n\t\t\t\t\t\tposition,\n\t\t\t\t\t\tdisplayMode,\n\t\t\t\t\t\ttheme: options.theme || sdk.config.theme || 'light',\n\t\t\t\t\t\tshowBackdrop:\n\t\t\t\t\t\t\tdisplayMode === 'modal' || displayMode === 'fullscreen',\n\t\t\t\t\t\t...surveyCallbacks,\n\t\t\t\t\t};\n\n\t\t\t\t\t// force flag: bypass eligibility checks\n\t\t\t\t\tif (options.force) {\n\t\t\t\t\t\tshowOpts.context = { includeIneligible: true };\n\t\t\t\t\t}\n\n\t\t\t\t\twidget = await sdk.showSurveyById(options.surveyId, showOpts);\n\t\t\t\t} else {\n\t\t\t\t\t// Auto-fetch and show first eligible survey\n\t\t\t\t\tconst fetchOpts = options.force ? { includeIneligible: true } : {};\n\t\t\t\t\tconst surveys = await sdk.getActiveSurveys(fetchOpts);\n\n\t\t\t\t\tif (surveys.length === 0) {\n\t\t\t\t\t\tif (typeof callback === 'function') {\n\t\t\t\t\t\t\tcallback({ action: 'noSurveys' });\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst surveyConfig = surveys[0];\n\t\t\t\t\twidget = sdk.showSurvey({\n\t\t\t\t\t\tsurveyId: surveyConfig.surveyId || surveyConfig.id,\n\t\t\t\t\t\tsurveyType: surveyConfig.surveyType || surveyConfig.type || 'nps',\n\t\t\t\t\t\tposition,\n\t\t\t\t\t\tdisplayMode,\n\t\t\t\t\t\ttheme: options.theme || sdk.config.theme || 'light',\n\t\t\t\t\t\tshowBackdrop:\n\t\t\t\t\t\t\tdisplayMode === 'modal' || displayMode === 'fullscreen',\n\t\t\t\t\t\ttitle: surveyConfig.title,\n\t\t\t\t\t\tdescription: surveyConfig.description,\n\t\t\t\t\t\tlowLabel: surveyConfig.lowLabel,\n\t\t\t\t\t\thighLabel: surveyConfig.highLabel,\n\t\t\t\t\t\tratingScale: surveyConfig.ratingScale,\n\t\t\t\t\t\tshowFeedbackInput: surveyConfig.showFeedbackInput,\n\t\t\t\t\t\tshowSubmitButton: surveyConfig.showSubmitButton,\n\t\t\t\t\t\tautoSubmitOnSelect: surveyConfig.autoSubmitOnSelect,\n\t\t\t\t\t\tshowTitle: surveyConfig.showTitle,\n\t\t\t\t\t\tshowDescription: surveyConfig.showDescription,\n\t\t\t\t\t\tcustomQuestions: surveyConfig.customQuestions,\n\t\t\t\t\t\tpages: surveyConfig.pages,\n\t\t\t\t\t\tenabled: options.force ? true : surveyConfig.enabled,\n\t\t\t\t\t\t...surveyCallbacks,\n\t\t\t\t\t});\n\n\t\t\t\t\tif (typeof callback === 'function') {\n\t\t\t\t\t\tcallback({ action: 'surveyReady', survey: surveyConfig });\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tProduct7._surveyWidget = widget;\n\t\t\t\treturn widget;\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('[Product7] Failed to show survey:', error);\n\t\t\t\tif (typeof callback === 'function')\n\t\t\t\t\tcallback({ action: 'error', error });\n\t\t\t\treturn null;\n\t\t\t}\n\t\t};\n\n\t\t// Handle display methods\n\t\tif (displayMethod === 'delayed') {\n\t\t\tconst delay = options.displayDelay || 5000;\n\t\t\tProduct7._surveyTimer = setTimeout(showSurvey, delay);\n\t\t\tif (typeof callback === 'function') {\n\t\t\t\tcallback({ action: 'surveyScheduled', delay });\n\t\t\t}\n\t\t\treturn null;\n\t\t}\n\n\t\tif (displayMethod === 'exitIntent') {\n\t\t\tconst handler = (e) => {\n\t\t\t\tif (e.clientY <= 0) {\n\t\t\t\t\tdocument.removeEventListener('mouseout', handler);\n\t\t\t\t\tProduct7._exitIntentHandler = null;\n\t\t\t\t\tshowSurvey();\n\t\t\t\t}\n\t\t\t};\n\t\t\tProduct7._exitIntentHandler = handler;\n\t\t\tdocument.addEventListener('mouseout', handler);\n\t\t\tif (typeof callback === 'function') {\n\t\t\t\tcallback({ action: 'surveyScheduled', trigger: 'exitIntent' });\n\t\t\t}\n\t\t\treturn null;\n\t\t}\n\n\t\tif (displayMethod === 'onScroll') {\n\t\t\tconst scrollPercent = options.scrollPercentage || 50;\n\t\t\tconst handler = () => {\n\t\t\t\tconst scrolled =\n\t\t\t\t\t(window.scrollY / (document.body.scrollHeight - window.innerHeight)) *\n\t\t\t\t\t100;\n\t\t\t\tif (scrolled >= scrollPercent) {\n\t\t\t\t\twindow.removeEventListener('scroll', handler);\n\t\t\t\t\tProduct7._scrollHandler = null;\n\t\t\t\t\tshowSurvey();\n\t\t\t\t}\n\t\t\t};\n\t\t\tProduct7._scrollHandler = handler;\n\t\t\twindow.addEventListener('scroll', handler, { passive: true });\n\t\t\tif (typeof callback === 'function') {\n\t\t\t\tcallback({\n\t\t\t\t\taction: 'surveyScheduled',\n\t\t\t\t\ttrigger: 'onScroll',\n\t\t\t\t\tscrollPercentage: scrollPercent,\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn null;\n\t\t}\n\n\t\t// Default: immediate\n\t\treturn showSurvey();\n\t},\n\n\tcloseSurvey() {\n\t\tif (Product7._surveyWidget) {\n\t\t\tProduct7._surveyWidget.hide?.() || Product7._surveyWidget.closePanel?.();\n\t\t}\n\t},\n\n\tdestroySurvey() {\n\t\t// Clean up scheduled triggers\n\t\tif (Product7._surveyTimer) {\n\t\t\tclearTimeout(Product7._surveyTimer);\n\t\t\tProduct7._surveyTimer = null;\n\t\t}\n\t\tif (Product7._exitIntentHandler) {\n\t\t\tdocument.removeEventListener('mouseout', Product7._exitIntentHandler);\n\t\t\tProduct7._exitIntentHandler = null;\n\t\t}\n\t\tif (Product7._scrollHandler) {\n\t\t\twindow.removeEventListener('scroll', Product7._scrollHandler);\n\t\t\tProduct7._scrollHandler = null;\n\t\t}\n\t\tif (Product7._surveyWidget) {\n\t\t\tProduct7._surveyWidget.destroy();\n\t\t\tProduct7._surveyWidget = null;\n\t\t}\n\t},\n\n\t// ==================\n\t// Event Tracking\n\t// ==================\n\n\tasync track(eventName, properties = {}) {\n\t\tif (!Product7._sdk) {\n\t\t\tProduct7._q.push(['track', eventName, properties]);\n\t\t\treturn null;\n\t\t}\n\n\t\tconst sdk = Product7._sdk;\n\t\tif (!sdk.apiService?.sessionToken) return null;\n\n\t\ttry {\n\t\t\tconst result = await sdk.apiService._makeRequest('/widget/track', {\n\t\t\t\tmethod: 'POST',\n\t\t\t\tbody: JSON.stringify({\n\t\t\t\t\tevent: eventName,\n\t\t\t\t\tproperties,\n\t\t\t\t\ttimestamp: new Date().toISOString(),\n\t\t\t\t}),\n\t\t\t\theaders: {\n\t\t\t\t\t'Content-Type': 'application/json',\n\t\t\t\t\tAuthorization: `Bearer ${sdk.apiService.sessionToken}`,\n\t\t\t\t},\n\t\t\t});\n\n\t\t\t// If server returns a survey to show, show it\n\t\t\tif (result?.survey) {\n\t\t\t\tProduct7.survey({\n\t\t\t\t\tsurveyId: result.survey.id || result.survey.survey_id,\n\t\t\t\t\tforce: true,\n\t\t\t\t});\n\t\t\t}\n\n\t\t\treturn result;\n\t\t} catch (error) {\n\t\t\tif (sdk.config.debug) {\n\t\t\t\tconsole.warn('[Product7] Track failed:', error);\n\t\t\t}\n\t\t\treturn null;\n\t\t}\n\t},\n\n\t// ==================\n\t// General\n\t// ==================\n\n\tgetInstance() {\n\t\treturn Product7._sdk;\n\t},\n\n\tisReady() {\n\t\treturn Boolean(Product7._sdk?.initialized);\n\t},\n\n\tonReady(callback) {\n\t\tif (typeof window === 'undefined') return;\n\n\t\tif (Product7.isReady()) {\n\t\t\tcallback(Product7._sdk);\n\t\t} else {\n\t\t\twindow.addEventListener(\n\t\t\t\t'Product7Ready',\n\t\t\t\t(event) => callback(event.detail.sdk, event.detail),\n\t\t\t\t{ once: true }\n\t\t\t);\n\t\t}\n\t},\n\n\tonError(callback) {\n\t\tif (typeof window === 'undefined') return;\n\n\t\twindow.addEventListener('Product7Error', (event) => {\n\t\t\tcallback(event.detail.error, event.detail);\n\t\t});\n\t},\n\n\tdestroy() {\n\t\tProduct7.destroyFeedback();\n\t\tProduct7.destroyLiveChat();\n\t\tProduct7.destroySurvey();\n\t\tif (Product7._sdk) {\n\t\t\tProduct7._sdk.destroy();\n\t\t\tProduct7._sdk = null;\n\t\t}\n\t\tProduct7._identified = false;\n\t\tProduct7._organization = null;\n\t\tProduct7._q = [];\n\t\tProduct7._feedbackListenerAttached = false;\n\t\tProduct7._liveChatListenerAttached = false;\n\t\tProduct7._postMessageListenerAttached = false;\n\t},\n\n\t// ==================\n\t// Internal\n\t// ==================\n\n\t_flushQueue() {\n\t\tconst queue = Product7._q.splice(0);\n\t\tfor (const [method, ...args] of queue) {\n\t\t\tif (typeof Product7[method] === 'function') {\n\t\t\t\tProduct7[method](...args);\n\t\t\t}\n\t\t}\n\t},\n\n\t_setupAttributeTriggers() {\n\t\tif (typeof document === 'undefined') return;\n\t\tif (Product7._feedbackListenerAttached) return;\n\t\tProduct7._feedbackListenerAttached = true;\n\n\t\tdocument.addEventListener('click', (e) => {\n\t\t\tconst trigger = e.target.closest('[data-product7-feedback]');\n\t\t\tif (trigger) {\n\t\t\t\te.preventDefault();\n\t\t\t\tProduct7.openFeedback();\n\t\t\t}\n\t\t});\n\t},\n\n\t_setupLiveChatAttributeTriggers() {\n\t\tif (typeof document === 'undefined') return;\n\t\tif (Product7._liveChatListenerAttached) return;\n\t\tProduct7._liveChatListenerAttached = true;\n\n\t\tdocument.addEventListener('click', (e) => {\n\t\t\tconst trigger = e.target.closest('[data-product7-liveChat]');\n\t\t\tif (trigger) {\n\t\t\t\te.preventDefault();\n\t\t\t\tProduct7.openLiveChat();\n\t\t\t}\n\t\t});\n\t},\n\n\t_setupPostMessageListener() {\n\t\tif (typeof window === 'undefined') return;\n\t\tif (Product7._postMessageListenerAttached) return;\n\t\tProduct7._postMessageListenerAttached = true;\n\n\t\twindow.addEventListener('message', (event) => {\n\t\t\tif (event.data?.target !== 'Product7Widget') return;\n\n\t\t\tconst { action, setBoard } = event.data.data || {};\n\t\t\tswitch (action) {\n\t\t\t\tcase 'openFeedback':\n\t\t\t\t\tProduct7.openFeedback({ setBoard });\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'closeFeedback':\n\t\t\t\t\tProduct7.closeFeedback();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'openLiveChat':\n\t\t\t\t\tProduct7.openLiveChat();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'closeLiveChat':\n\t\t\t\t\tProduct7.closeLiveChat();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'closeSurvey':\n\t\t\t\t\tProduct7.closeSurvey();\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t});\n\t},\n\n\t// Expose internals for advanced/npm usage\n\tProduct7SDK,\n\tBaseWidget,\n\tButtonWidget,\n\tChangelogWidget,\n\tTabWidget,\n\tInlineWidget,\n\tSurveyWidget,\n\tLiveChatWidget,\n\tWidgetFactory,\n\tEventBus,\n\tAPIService,\n\tSDKError,\n\tAPIError,\n\tWidgetError,\n\tConfigError,\n\tValidationError,\n\thelpers,\n};\n\n// --- Pre-load queue support ---\nif (typeof window !== 'undefined') {\n\tconst existingQueue = window.Product7?._q || [];\n\twindow.Product7 = Product7;\n\n\tfor (const [method, ...args] of existingQueue) {\n\t\tif (typeof Product7[method] === 'function') {\n\t\t\tProduct7[method](...args);\n\t\t}\n\t}\n}\n\nexport default Product7;\n\nexport {\n\tAPIError,\n\tAPIService,\n\tBaseWidget,\n\tButtonWidget,\n\tChangelogWidget,\n\tConfigError,\n\tEventBus,\n\thelpers,\n\tInlineWidget,\n\tLiveChatWidget,\n\tProduct7SDK as Product7,\n\tSDKError,\n\tSurveyWidget,\n\tTabWidget,\n\tValidationError,\n\tWidgetError,\n\tWidgetFactory,\n};\n"],"names":["delay","Product7SDK"],"mappings":"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K,CAAC,kCAAkC,EAAE,KAAK,CAAC;CAC7D,IAAI;CACJ,GAAG,CAAC,CAAC;CACL,EAAE;CACF,CAAC;;CAED,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE;CACvB,EAAE,MAAM,WAAW,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,IAAI,KAAK;CAC/C,GAAG,QAAQ,CAAC,IAAI,CAAC;CACjB,GAAG,WAAW,EAAE;CAChB,EAAE,CAAC,CAAC;CACJ,EAAE,OAAO,WAAW;CACpB,CAAC;;CAED,CAAC,KAAK,GAAG;CACT,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;CACrB,CAAC;;CAED,CAAC,gBAAgB,CAAC,KAAK,EAAE;CACzB,EAAE,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;CAC1C,EAAE,OAAO,SAAS,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC;CACzC,CAAC;CACD;;CCrDO,MAAM,UAAU,GAAG;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;CClEM,MAAM,eAAe,GAAG;AAC/B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAC;;CC5pBM,MAAM,gBAAgB,GAAG;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;CC7iBM,MAAM,YAAY,GAAG;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;CC3HM,MAAM,cAAc,GAAG;AAC9B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;;CCpUM,MAAM,wBAAwB,GAAG;;AAExC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;;CCz0BM,MAAM,kBAAkB,GAAG;;AAElC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;CCjTM,MAAM,sBAAsB,GAAG;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;CCxKM,MAAM,mBAAmB,GAAG;AACnC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;CC1+BM,MAAM,cAAc;CAC3B,CAAC,kBAAkB;CACnB,CAAC,mBAAmB;CACpB,CAAC,wBAAwB;CACzB,CAAC,sBAAsB;;CCThB,MAAM,YAAY,GAAG;AAC5B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;;CCjvBM,MAAM,UAAU;CACvB,CAAC,YAAY;CACb,CAAC,UAAU;CACX,CAAC,gBAAgB;CACjB,CAAC,cAAc;CACf,CAAC,eAAe;CAChB,CAAC,YAAY;CACb,CAAC,cAAc;;CCfR,SAAS,UAAU,CAAC,MAAM,GAAG,UAAU,EAAE;CAChD,CAAC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE;CAC7B,CAAC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,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"}
1
+ {"version":3,"file":"product7-js.js","sources":["../src/api/mock-data/index.js","../src/api/utils/helpers.js","../src/api/services/ChangelogService.js","../src/api/services/FeedbackService.js","../src/api/services/HelpService.js","../src/api/services/LiveChatService.js","../src/utils/errors.js","../src/api/services/SurveyService.js","../src/core/BaseAPIService.js","../src/core/APIService.js","../src/core/EventBus.js","../src/styles/base.js","../src/styles/changelog.js","../src/styles/components.js","../src/styles/design-tokens.js","../src/styles/feedback.js","../src/styles/liveChat-components.js","../src/styles/liveChat-core.js","../src/styles/liveChat-features.js","../src/styles/liveChat-views.js","../src/styles/liveChat.js","../src/styles/survey.js","../src/styles/styles.js","../src/utils/helpers.js","../src/widgets/BaseWidget.js","../src/widgets/ButtonWidget.js","../src/widgets/ChangelogWidget.js","../src/widgets/InlineWidget.js","../src/core/WebSocketService.js","../src/styles/liveChatCustomStyles.js","../src/utils/notificationSoundData.js","../src/utils/NotificationSound.js","../src/widgets/liveChat/LiveChatState.js","../src/widgets/liveChat/components/LiveChatLauncher.js","../src/widgets/liveChat/components/NavigationTabs.js","../src/widgets/liveChat/components/LiveChatPanel.js","../src/widgets/liveChat/views/ChangelogView.js","../src/widgets/liveChat/views/ChatView.js","../src/widgets/liveChat/views/ConversationsView.js","../src/widgets/liveChat/views/HelpView.js","../src/widgets/liveChat/views/HomeView.js","../src/widgets/liveChat/views/PreChatFormView.js","../src/widgets/LiveChatWidget.js","../src/widgets/SurveyWidget.js","../src/widgets/TabWidget.js","../src/widgets/WidgetFactory.js","../src/core/Product7.js","../src/index.js"],"sourcesContent":["export const MOCK_CHANGELOGS = [\n\t{\n\t\tid: 'changelog_1',\n\t\ttitle:\n\t\t\t'Feature prioritization, multiple roadmaps, and feature request analytics.',\n\t\texcerpt:\n\t\t\t'We are super excited to bring you the long-waited feature prioritization together with many quality updates!',\n\t\tdescription:\n\t\t\t'We are super excited to bring you the long-waited feature prioritization together with many quality updates!',\n\t\tcover_image:\n\t\t\t'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAwIiBoZWlnaHQ9IjI1MCIgdmlld0JveD0iMCAwIDQwMCAyNTAiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHJlY3Qgd2lkdGg9IjQwMCIgaGVpZ2h0PSIyNTAiIGZpbGw9IiNEQkVBRkUiLz48cmVjdCB4PSIyMCIgeT0iMjAiIHdpZHRoPSIzNjAiIGhlaWdodD0iMjEwIiByeD0iOCIgZmlsbD0id2hpdGUiIHN0cm9rZT0iIzE1NUVFRiIgc3Ryb2tlLXdpZHRoPSIyIi8+PHJlY3QgeD0iMzAiIHk9IjQwIiB3aWR0aD0iODAiIGhlaWdodD0iOCIgcng9IjQiIGZpbGw9IiNFNUU3RUIiLz48cmVjdCB4PSIzMCIgeT0iNjAiIHdpZHRoPSIxNDAiIGhlaWdodD0iNDAiIHJ4PSI0IiBmaWxsPSIjRjNGNEY2Ii8+PHRleHQgeD0iNDAiIHk9Ijg1IiBmb250LWZhbWlseT0ic3lzdGVtLXVpIiBmb250LXNpemU9IjE2IiBmb250LXdlaWdodD0iNjAwIiBmaWxsPSIjMUYyOTM3Ij4yMDA8L3RleHQ+PHRleHQgeD0iNDAiIHk9Ijk1IiBmb250LWZhbWlseT0ic3lzdGVtLXVpIiBmb250LXNpemU9IjgiIGZpbGw9IiM2QjcyODAiPlBvc3RzPC90ZXh0PjxyZWN0IHg9IjE4MCIgeT0iNjAiIHdpZHRoPSI4MCIgaGVpZ2h0PSI0MCIgcng9IjQiIGZpbGw9IiNGM0Y0RjYiLz48cmVjdCB4PSIyNzAiIHk9IjYwIiB3aWR0aD0iODAiIGhlaWdodD0iNDAiIHJ4PSI0IiBmaWxsPSIjRjNGNEY2Ii8+PHBhdGggZD0iTTMwIDEzMEgzNzBNMzAgMTUwSDM3ME0zMCAxNzBIMzcwTTMwIDE5MEgzNzAiIHN0cm9rZT0iI0U1RTdFQiIgc3Ryb2tlLXdpZHRoPSIxIi8+PHBhdGggZD0iTTUwIDE2MEwxMDAgMTQwTDE1MCAxNTBMMjAwIDEzMEwyNTAgMTM1TDMwMCAxMjBMMzUwIDEyNSIgc3Ryb2tlPSIjMTU1RUVGIiBzdHJva2Utd2lkdGg9IjIiIGZpbGw9Im5vbmUiLz48L3N2Zz4=',\n\t\tslug: 'feature-prioritization-roadmaps-analytics',\n\t\tpublished_at: '2025-03-15T10:00:00Z',\n\t\tlabels: [\n\t\t\t{ name: 'New Feature', color: '#10B981' },\n\t\t\t{ name: 'Analytics', color: '#6366F1' },\n\t\t],\n\t\tstatus: 'published',\n\t},\n\t{\n\t\tid: 'changelog_2',\n\t\ttitle: 'Dark mode support and UI improvements',\n\t\texcerpt:\n\t\t\t'You asked for it, we delivered! Dark mode is now available across all pages.',\n\t\tdescription:\n\t\t\t'You asked for it, we delivered! Dark mode is now available across all pages.',\n\t\tcover_image:\n\t\t\t'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAwIiBoZWlnaHQ9IjI1MCIgdmlld0JveD0iMCAwIDQwMCAyNTAiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHJlY3Qgd2lkdGg9IjQwMCIgaGVpZ2h0PSIyNTAiIGZpbGw9IiMxRjI5MzciLz48cmVjdCB4PSIyMCIgeT0iMjAiIHdpZHRoPSIzNjAiIGhlaWdodD0iMjEwIiByeD0iOCIgZmlsbD0iIzM3NDE1MSIgc3Ryb2tlPSIjNEI1NTYzIiBzdHJva2Utd2lkdGg9IjEiLz48Y2lyY2xlIGN4PSIyMDAiIGN5PSIxMjUiIHI9IjQwIiBmaWxsPSIjRkJCRjI0Ii8+PHBhdGggZD0iTTIyMCAxMjVDMjIwIDEzNiAyMTEgMTQ1IDIwMCAxNDVDMTg5IDE0NSAxODAgMTM2IDE4MCAxMjVDMTgwIDExNCAxODkgMTA1IDIwMCAxMDVDMjExIDEwNSAyMjAgMTE0IDIyMCAxMjVaIiBmaWxsPSIjMUYyOTM3Ii8+PC9zdmc+',\n\t\tslug: 'dark-mode-ui-improvements',\n\t\tpublished_at: '2025-03-01T10:00:00Z',\n\t\tlabels: [{ name: 'Enhancement', color: '#8B5CF6' }],\n\t\tstatus: 'published',\n\t},\n\t{\n\t\tid: 'changelog_3',\n\t\ttitle: 'Performance improvements and bug fixes',\n\t\texcerpt:\n\t\t\t'This release includes major performance improvements and several bug fixes.',\n\t\tdescription:\n\t\t\t'This release includes major performance improvements and several bug fixes.',\n\t\tslug: 'performance-improvements-bug-fixes',\n\t\tpublished_at: '2025-02-15T10:00:00Z',\n\t\tlabels: [\n\t\t\t{ name: 'Bug Fix', color: '#EF4444' },\n\t\t\t{ name: 'Performance', color: '#F59E0B' },\n\t\t],\n\t\tstatus: 'published',\n\t},\n];\n\nexport const MOCK_CONVERSATIONS = [\n\t{\n\t\tid: 'conv_1',\n\t\tsubject: 'Question about pricing',\n\t\tstatus: 'open',\n\t\tlast_message_at: new Date(Date.now() - 49 * 60 * 1000).toISOString(),\n\t\tcreated_at: new Date(Date.now() - 2 * 24 * 60 * 60 * 1000).toISOString(),\n\t\tunread: 1,\n\t\tassigned_user: {\n\t\t\tid: 'user_1',\n\t\t\tname: 'Sarah',\n\t\t\tavatar: null,\n\t\t},\n\t},\n\t{\n\t\tid: 'conv_2',\n\t\tsubject: 'Feature request',\n\t\tstatus: 'open',\n\t\tlast_message_at: new Date(\n\t\t\tDate.now() - 6 * 24 * 60 * 60 * 1000\n\t\t).toISOString(),\n\t\tcreated_at: new Date(Date.now() - 10 * 24 * 60 * 60 * 1000).toISOString(),\n\t\tunread: 0,\n\t\tassigned_user: {\n\t\t\tid: 'user_2',\n\t\t\tname: 'Tom',\n\t\t\tavatar: null,\n\t\t},\n\t},\n];\n\nexport const MOCK_MESSAGES = {\n\tconv_1: [\n\t\t{\n\t\t\tid: 'msg_1',\n\t\t\tcontent: \"Hi there! 👋 I'm Sarah. How can I help you today?\",\n\t\t\tsender_type: 'agent',\n\t\t\tsender_name: 'Sarah',\n\t\t\tsender_avatar: null,\n\t\t\tcreated_at: new Date(Date.now() - 50 * 60 * 1000).toISOString(),\n\t\t},\n\t\t{\n\t\t\tid: 'msg_2',\n\t\t\tcontent: 'Hi! I have a question about your enterprise pricing.',\n\t\t\tsender_type: 'customer',\n\t\t\tcreated_at: new Date(Date.now() - 49 * 60 * 1000).toISOString(),\n\t\t},\n\t],\n\tconv_2: [\n\t\t{\n\t\t\tid: 'msg_3',\n\t\t\tcontent: \"Hello! I'm Tom from the product team.\",\n\t\t\tsender_type: 'agent',\n\t\t\tsender_name: 'Tom',\n\t\t\tsender_avatar: null,\n\t\t\tcreated_at: new Date(Date.now() - 7 * 24 * 60 * 60 * 1000).toISOString(),\n\t\t},\n\t\t{\n\t\t\tid: 'msg_4',\n\t\t\tcontent: 'I would love to see a dark mode feature!',\n\t\t\tsender_type: 'customer',\n\t\t\tcreated_at: new Date(\n\t\t\t\tDate.now() - 6 * 24 * 60 * 60 * 1000 - 30 * 60 * 1000\n\t\t\t).toISOString(),\n\t\t},\n\t\t{\n\t\t\tid: 'msg_5',\n\t\t\tcontent:\n\t\t\t\t\"Great suggestion! That feature will be available next week. I'll let you know when it's ready.\",\n\t\t\tsender_type: 'agent',\n\t\t\tsender_name: 'Tom',\n\t\t\tsender_avatar: null,\n\t\t\tcreated_at: new Date(Date.now() - 6 * 24 * 60 * 60 * 1000).toISOString(),\n\t\t},\n\t],\n};\n\nexport const MOCK_HELP_COLLECTIONS = [\n\t{\n\t\tid: 'collection_1',\n\t\ttitle: 'Product Overview',\n\t\tdescription: 'See how your AI-first customer service solution works.',\n\t\tarticleCount: 24,\n\t\ticon: 'ph-book-open',\n\t\turl: '#',\n\t},\n\t{\n\t\tid: 'collection_2',\n\t\ttitle: 'Getting Started',\n\t\tdescription: 'Everything you need to know to get started with Product7.',\n\t\tarticleCount: 30,\n\t\ticon: 'ph-rocket',\n\t\turl: '#',\n\t},\n\t{\n\t\tid: 'collection_3',\n\t\ttitle: 'AI Agent',\n\t\tdescription:\n\t\t\t'Resolving customer questions instantly and accurately—from live chat to email.',\n\t\tarticleCount: 82,\n\t\ticon: 'ph-robot',\n\t\turl: '#',\n\t},\n\t{\n\t\tid: 'collection_4',\n\t\ttitle: 'Channels',\n\t\tdescription:\n\t\t\t'Enabling the channels you use to communicate with customers, all from the Inbox.',\n\t\tarticleCount: 45,\n\t\ticon: 'ph-chat-circle',\n\t\turl: '#',\n\t},\n\t{\n\t\tid: 'collection_5',\n\t\ttitle: 'Billing & Payments',\n\t\tdescription: 'Manage your subscription, invoices, and payment methods.',\n\t\tarticleCount: 12,\n\t\ticon: 'ph-credit-card',\n\t\turl: '#',\n\t},\n];\n\nexport const MOCK_SURVEYS = [\n\t{\n\t\tid: 'mock_nps_survey',\n\t\tname: 'NPS Score',\n\t\tslug: 'nps',\n\t\tstatus: 'active',\n\t\ttrigger_type: 'manual',\n\t\tpages: [\n\t\t\t{\n\t\t\t\tid: 'nps-page-1',\n\t\t\t\ttype: 'rating',\n\t\t\t\ttitle: 'How likely are you to recommend us to a friend?',\n\t\t\t\tdescription: '',\n\t\t\t\tplaceholder: '',\n\t\t\t\trating_config: {\n\t\t\t\t\tscale: 11,\n\t\t\t\t\tlow_label: 'Very unlikely',\n\t\t\t\t\thigh_label: 'Very likely',\n\t\t\t\t\tsurvey_type: 'nps',\n\t\t\t\t},\n\t\t\t\tmultiple_choice_config: null,\n\t\t\t\tlink_config: null,\n\t\t\t\tafter_this_page: { default: 'end_survey', conditions: [] },\n\t\t\t\trequired: true,\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tid: 'mock_csat_survey',\n\t\tname: 'CSAT Survey',\n\t\tslug: 'csat',\n\t\tstatus: 'active',\n\t\ttrigger_type: 'manual',\n\t\tpages: [\n\t\t\t{\n\t\t\t\tid: 'csat-page-1',\n\t\t\t\ttype: 'rating',\n\t\t\t\ttitle: 'How satisfied are you with our service?',\n\t\t\t\tdescription: '',\n\t\t\t\tplaceholder: '',\n\t\t\t\trating_config: {\n\t\t\t\t\tscale: 5,\n\t\t\t\t\tlow_label: 'Very dissatisfied',\n\t\t\t\t\thigh_label: 'Very satisfied',\n\t\t\t\t\tsurvey_type: 'emoji',\n\t\t\t\t},\n\t\t\t\tmultiple_choice_config: null,\n\t\t\t\tlink_config: null,\n\t\t\t\tafter_this_page: { default: 'end_survey', conditions: [] },\n\t\t\t\trequired: true,\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tid: 'mock_ces_survey',\n\t\tname: 'Customer Effort Score',\n\t\tslug: 'ces',\n\t\tstatus: 'active',\n\t\ttrigger_type: 'manual',\n\t\tpages: [\n\t\t\t{\n\t\t\t\tid: 'ces-page-1',\n\t\t\t\ttype: 'rating',\n\t\t\t\ttitle: 'How easy was it to use our product?',\n\t\t\t\tdescription: '',\n\t\t\t\tplaceholder: '',\n\t\t\t\trating_config: {\n\t\t\t\t\tscale: 5,\n\t\t\t\t\tlow_label: 'Very difficult',\n\t\t\t\t\thigh_label: 'Very easy',\n\t\t\t\t\tsurvey_type: 'ces',\n\t\t\t\t},\n\t\t\t\tmultiple_choice_config: null,\n\t\t\t\tlink_config: null,\n\t\t\t\tafter_this_page: { default: 'end_survey', conditions: [] },\n\t\t\t\trequired: true,\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tid: 'mock_open_question_survey',\n\t\tname: 'Open Question',\n\t\tslug: 'open-question',\n\t\tstatus: 'active',\n\t\ttrigger_type: 'manual',\n\t\tpages: [\n\t\t\t{\n\t\t\t\tid: 'open-page-1',\n\t\t\t\ttype: 'text',\n\t\t\t\ttitle: 'What could we do better?',\n\t\t\t\tdescription:\n\t\t\t\t\t'Is there anything we could do to make our product better for you?',\n\t\t\t\tplaceholder: 'Type your answer here',\n\t\t\t\trating_config: null,\n\t\t\t\tmultiple_choice_config: null,\n\t\t\t\tlink_config: null,\n\t\t\t\tafter_this_page: { default: 'end_survey', conditions: [] },\n\t\t\t\trequired: true,\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tid: 'mock_product_idea_poll_survey',\n\t\tname: 'Product Idea Poll',\n\t\tslug: 'product-idea-poll',\n\t\tstatus: 'active',\n\t\ttrigger_type: 'manual',\n\t\tpages: [\n\t\t\t{\n\t\t\t\tid: 'poll-page-1',\n\t\t\t\ttype: 'multiple_choice',\n\t\t\t\ttitle: 'Which feature should we add next?',\n\t\t\t\tdescription: 'Vote on the feature you would like to see next.',\n\t\t\t\tplaceholder: '',\n\t\t\t\trating_config: null,\n\t\t\t\tmultiple_choice_config: {\n\t\t\t\t\tallow_multiple_selection: false,\n\t\t\t\t\tsurvey_type: 'regular',\n\t\t\t\t\toptions: [\n\t\t\t\t\t\t{ id: 'opt1', label: 'Better reporting' },\n\t\t\t\t\t\t{ id: 'opt2', label: 'Mobile app' },\n\t\t\t\t\t\t{ id: 'opt3', label: 'Integrations' },\n\t\t\t\t\t\t{ id: 'opt4', label: 'AI features' },\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t\tlink_config: null,\n\t\t\t\tafter_this_page: { default: 'end_survey', conditions: [] },\n\t\t\t\trequired: true,\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tid: 'mock_pmf_survey',\n\t\tname: 'Product Market Fit (PMF)',\n\t\tslug: 'pmf',\n\t\tstatus: 'active',\n\t\ttrigger_type: 'manual',\n\t\tpages: [\n\t\t\t{\n\t\t\t\tid: 'pmf-page-1',\n\t\t\t\ttype: 'multiple_choice',\n\t\t\t\ttitle: 'How would you feel if you could no longer use our product?',\n\t\t\t\tdescription: '',\n\t\t\t\tplaceholder: '',\n\t\t\t\trating_config: null,\n\t\t\t\tmultiple_choice_config: {\n\t\t\t\t\tallow_multiple_selection: false,\n\t\t\t\t\tsurvey_type: 'regular',\n\t\t\t\t\toptions: [\n\t\t\t\t\t\t{ id: 'very_disappointed', label: 'Very disappointed' },\n\t\t\t\t\t\t{ id: 'somewhat_disappointed', label: 'Somewhat disappointed' },\n\t\t\t\t\t\t{ id: 'not_disappointed', label: 'Not disappointed' },\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t\tlink_config: null,\n\t\t\t\tafter_this_page: { default: 'end_survey', conditions: [] },\n\t\t\t\trequired: true,\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tid: 'mock_user_interview_survey',\n\t\tname: 'User Interview Request',\n\t\tslug: 'user-interview',\n\t\tstatus: 'active',\n\t\ttrigger_type: 'manual',\n\t\tpages: [\n\t\t\t{\n\t\t\t\tid: 'interview-page-1',\n\t\t\t\ttype: 'link',\n\t\t\t\ttitle: 'Would you like to hop on a quick demo?',\n\t\t\t\tdescription:\n\t\t\t\t\t'We would love to hear your thoughts and answer any questions you have.',\n\t\t\t\tplaceholder: '',\n\t\t\t\trating_config: null,\n\t\t\t\tmultiple_choice_config: null,\n\t\t\t\tlink_config: {\n\t\t\t\t\tbutton_text: 'Book a demo',\n\t\t\t\t\tlink_text: '',\n\t\t\t\t\tredirect_url: 'https://example.com',\n\t\t\t\t\topen_in: 'new_tab',\n\t\t\t\t},\n\t\t\t\tafter_this_page: { default: 'end_survey', conditions: [] },\n\t\t\t\trequired: true,\n\t\t\t},\n\t\t],\n\t},\n];\n","export const delay = (ms) => new Promise((resolve) => setTimeout(resolve, ms));\n\nexport function getDeviceInfo() {\n\tif (typeof navigator === 'undefined') {\n\t\treturn { device: null, browser: null, os: null };\n\t}\n\n\tconst ua = navigator.userAgent;\n\n\tlet device = 'desktop';\n\tif (/Mobi|Android/i.test(ua)) {\n\t\tdevice = /Tablet|iPad/i.test(ua) ? 'tablet' : 'mobile';\n\t}\n\n\tlet browser = 'unknown';\n\tif (ua.includes('Firefox')) browser = 'firefox';\n\telse if (ua.includes('Edg')) browser = 'edge';\n\telse if (ua.includes('Chrome')) browser = 'chrome';\n\telse if (ua.includes('Safari')) browser = 'safari';\n\telse if (ua.includes('Opera') || ua.includes('OPR')) browser = 'opera';\n\n\tlet os = 'unknown';\n\tif (ua.includes('Windows')) os = 'windows';\n\telse if (ua.includes('Mac')) os = 'macos';\n\telse if (ua.includes('Linux')) os = 'linux';\n\telse if (ua.includes('Android')) os = 'android';\n\telse if (ua.includes('iPhone') || ua.includes('iPad')) os = 'ios';\n\n\treturn { device, browser, os };\n}\n","import { MOCK_CHANGELOGS } from '../mock-data/index.js';\nimport { delay } from '../utils/helpers.js';\n\nexport class ChangelogService {\n\tconstructor(baseAPI) {\n\t\tthis.api = baseAPI;\n\t}\n\n\tasync getChangelogs(options = {}) {\n\t\tawait this.api._ensureSession();\n\n\t\tif (this.api.mock) {\n\t\t\tawait delay(300);\n\t\t\treturn { success: true, data: MOCK_CHANGELOGS };\n\t\t}\n\n\t\treturn this.api._handleAuthRetry(async () => {\n\t\t\tconst endpoint = this.api._getEndpointWithParams(\n\t\t\t\t'/widget/changelogs',\n\t\t\t\toptions\n\t\t\t);\n\t\t\treturn await this.api._makeRequest(endpoint, {\n\t\t\t\tmethod: 'GET',\n\t\t\t\theaders: { Authorization: `Bearer ${this.api.sessionToken}` },\n\t\t\t});\n\t\t});\n\t}\n}\n","import { delay } from '../utils/helpers.js';\n\nexport class FeedbackService {\n\tconstructor(baseAPI) {\n\t\tthis.api = baseAPI;\n\t}\n\n\tasync submitFeedback(feedbackData) {\n\t\tawait this.api._ensureSession();\n\n\t\tif (this.api.mock) {\n\t\t\tawait delay(500);\n\t\t\treturn {\n\t\t\t\tsuccess: true,\n\t\t\t\tdata: {\n\t\t\t\t\tid: 'mock_post_' + Date.now(),\n\t\t\t\t\ttitle: feedbackData.title,\n\t\t\t\t\tcontent: feedbackData.content,\n\t\t\t\t},\n\t\t\t\tmessage: 'Feedback submitted successfully!',\n\t\t\t};\n\t\t}\n\n\t\tconst contact = this.api.getContactIdentity();\n\n\t\tconst payload = {\n\t\t\tboard:\n\t\t\t\tfeedbackData.board_id || feedbackData.board || feedbackData.boardName,\n\t\t\ttitle: feedbackData.title,\n\t\t\tcontent: feedbackData.content,\n\t\t\tattachments: feedbackData.attachments || [],\n\t\t\t...(contact?.contactId && {\n\t\t\t\tcontact_id: contact.contactId,\n\t\t\t\tcontact_email: contact.contactEmail,\n\t\t\t\tcontact_name: contact.contactName,\n\t\t\t}),\n\t\t};\n\n\t\treturn this.api._handleAuthRetry(async () => {\n\t\t\tconst response = await this.api._makeRequest('/widget/feedback', {\n\t\t\t\tmethod: 'POST',\n\t\t\t\tbody: JSON.stringify(payload),\n\t\t\t\theaders: {\n\t\t\t\t\t'Content-Type': 'application/json',\n\t\t\t\t\tAuthorization: `Bearer ${this.api.sessionToken}`,\n\t\t\t\t},\n\t\t\t});\n\t\t\treturn response;\n\t\t});\n\t}\n}\n","import { MOCK_HELP_COLLECTIONS } from '../mock-data/index.js';\nimport { delay } from '../utils/helpers.js';\n\nexport class HelpService {\n\tconstructor(baseAPI) {\n\t\tthis.api = baseAPI;\n\t}\n\n\tasync getHelpCollections(options = {}) {\n\t\tawait this.api._ensureSession();\n\n\t\tif (this.api.mock) {\n\t\t\tawait delay(200);\n\t\t\treturn { status: true, data: MOCK_HELP_COLLECTIONS };\n\t\t}\n\n\t\tconst endpoint = this.api._getEndpointWithParams(\n\t\t\t'/widget/help/collections',\n\t\t\toptions\n\t\t);\n\t\treturn this.api._makeRequest(endpoint, {\n\t\t\tmethod: 'GET',\n\t\t\theaders: { Authorization: `Bearer ${this.api.sessionToken}` },\n\t\t});\n\t}\n\n\tasync searchHelpArticles(query, options = {}) {\n\t\tawait this.api._ensureSession();\n\n\t\tif (this.api.mock) {\n\t\t\tawait delay(200);\n\t\t\tconst filtered = MOCK_HELP_COLLECTIONS.filter(\n\t\t\t\t(c) =>\n\t\t\t\t\tc.title.toLowerCase().includes(query.toLowerCase()) ||\n\t\t\t\t\tc.description.toLowerCase().includes(query.toLowerCase())\n\t\t\t);\n\t\t\treturn { status: true, data: filtered };\n\t\t}\n\n\t\tconst params = { q: query, ...options };\n\t\tconst endpoint = this.api._getEndpointWithParams(\n\t\t\t'/widget/help/search',\n\t\t\tparams\n\t\t);\n\t\treturn this.api._makeRequest(endpoint, {\n\t\t\tmethod: 'GET',\n\t\t\theaders: { Authorization: `Bearer ${this.api.sessionToken}` },\n\t\t});\n\t}\n}\n","import { MOCK_CONVERSATIONS, MOCK_MESSAGES } from '../mock-data/index.js';\nimport { delay } from '../utils/helpers.js';\n\nexport class LiveChatService {\n\tconstructor(baseAPI) {\n\t\tthis.api = baseAPI;\n\t}\n\n\tasync getLiveChatSettings() {\n\t\tawait this.api._ensureSession();\n\n\t\tif (this.api.mock) {\n\t\t\treturn {\n\t\t\t\tstatus: true,\n\t\t\t\tdata: {\n\t\t\t\t\tenabled: true,\n\t\t\t\t\tgreeting_message: 'Hi there! How can we help?',\n\t\t\t\t\tteam_name: 'Support Team',\n\t\t\t\t\tresponse_time: 'Usually replies within a few minutes',\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\n\t\treturn this.api._makeRequest('/widget/livechat/settings', {\n\t\t\tmethod: 'GET',\n\t\t\theaders: { Authorization: `Bearer ${this.api.sessionToken}` },\n\t\t});\n\t}\n\n\tasync checkAgentsOnline() {\n\t\tawait this.api._ensureSession();\n\n\t\tif (this.api.mock) {\n\t\t\treturn {\n\t\t\t\tstatus: true,\n\t\t\t\tdata: {\n\t\t\t\t\tagents_online: true,\n\t\t\t\t\tonline_count: 2,\n\t\t\t\t\tresponse_time: 'Usually replies within a few minutes',\n\t\t\t\t\tavailable_agents: [\n\t\t\t\t\t\t{ full_name: 'Sarah', picture: '' },\n\t\t\t\t\t\t{ full_name: 'Tom', picture: '' },\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\n\t\treturn this.api._makeRequest('/widget/livechat/agents/online', {\n\t\t\tmethod: 'GET',\n\t\t\theaders: { Authorization: `Bearer ${this.api.sessionToken}` },\n\t\t});\n\t}\n\n\tasync getConversations(options = {}) {\n\t\tawait this.api._ensureSession();\n\n\t\tif (this.api.mock) {\n\t\t\tawait delay(300);\n\t\t\treturn {\n\t\t\t\tstatus: true,\n\t\t\t\tdata: MOCK_CONVERSATIONS,\n\t\t\t\tmeta: { total: MOCK_CONVERSATIONS.length, page: 1, limit: 20 },\n\t\t\t};\n\t\t}\n\n\t\tconst endpoint = this.api._getEndpointWithParams(\n\t\t\t'/widget/livechat/conversations',\n\t\t\toptions\n\t\t);\n\t\treturn this.api._makeRequest(endpoint, {\n\t\t\tmethod: 'GET',\n\t\t\theaders: { Authorization: `Bearer ${this.api.sessionToken}` },\n\t\t});\n\t}\n\n\tasync getConversation(conversationId) {\n\t\tawait this.api._ensureSession();\n\n\t\tif (this.api.mock) {\n\t\t\tawait delay(200);\n\t\t\tconst conv = MOCK_CONVERSATIONS.find((c) => c.id === conversationId);\n\t\t\treturn {\n\t\t\t\tstatus: true,\n\t\t\t\tdata: { ...conv, messages: MOCK_MESSAGES[conversationId] || [] },\n\t\t\t};\n\t\t}\n\n\t\treturn this.api._makeRequest(\n\t\t\t`/widget/livechat/conversations/${conversationId}`,\n\t\t\t{\n\t\t\t\tmethod: 'GET',\n\t\t\t\theaders: { Authorization: `Bearer ${this.api.sessionToken}` },\n\t\t\t}\n\t\t);\n\t}\n\n\tasync startConversation(data) {\n\t\tawait this.api._ensureSession();\n\n\t\tif (this.api.mock) {\n\t\t\tawait delay(300);\n\t\t\tconst newConv = {\n\t\t\t\tid: 'conv_' + Date.now(),\n\t\t\t\tsubject: data.subject || 'New conversation',\n\t\t\t\tstatus: 'open',\n\t\t\t\tlast_message_at: new Date().toISOString(),\n\t\t\t\tcreated_at: new Date().toISOString(),\n\t\t\t\tmessages: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: 'msg_' + Date.now(),\n\t\t\t\t\t\tcontent: data.message,\n\t\t\t\t\t\tsender_type: 'customer',\n\t\t\t\t\t\tcreated_at: new Date().toISOString(),\n\t\t\t\t\t\tattachments: data.attachments || [],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\t\t\tMOCK_CONVERSATIONS.unshift(newConv);\n\t\t\tMOCK_MESSAGES[newConv.id] = newConv.messages;\n\t\t\treturn { status: true, data: newConv };\n\t\t}\n\n\t\treturn this.api._makeRequest('/widget/livechat/conversations', {\n\t\t\tmethod: 'POST',\n\t\t\theaders: {\n\t\t\t\t'Content-Type': 'application/json',\n\t\t\t\tAuthorization: `Bearer ${this.api.sessionToken}`,\n\t\t\t},\n\t\t\tbody: JSON.stringify({\n\t\t\t\tmessage: data.message,\n\t\t\t\tsubject: data.subject || '',\n\t\t\t\tattachments: data.attachments || [],\n\t\t\t}),\n\t\t});\n\t}\n\n\tasync sendMessage(conversationId, data) {\n\t\tawait this.api._ensureSession();\n\n\t\tif (this.api.mock) {\n\t\t\tawait delay(200);\n\t\t\tconst newMessage = {\n\t\t\t\tid: 'msg_' + Date.now(),\n\t\t\t\tcontent: data.content,\n\t\t\t\tsender_type: 'customer',\n\t\t\t\tcreated_at: new Date().toISOString(),\n\t\t\t\tattachments: data.attachments || [],\n\t\t\t};\n\t\t\tif (!MOCK_MESSAGES[conversationId]) {\n\t\t\t\tMOCK_MESSAGES[conversationId] = [];\n\t\t\t}\n\t\t\tMOCK_MESSAGES[conversationId].push(newMessage);\n\t\t\treturn { status: true, data: newMessage };\n\t\t}\n\n\t\treturn this.api._makeRequest(\n\t\t\t`/widget/livechat/conversations/${conversationId}/messages`,\n\t\t\t{\n\t\t\t\tmethod: 'POST',\n\t\t\t\theaders: {\n\t\t\t\t\t'Content-Type': 'application/json',\n\t\t\t\t\tAuthorization: `Bearer ${this.api.sessionToken}`,\n\t\t\t\t},\n\t\t\t\tbody: JSON.stringify({\n\t\t\t\t\tcontent: data.content,\n\t\t\t\t\tattachments: data.attachments || [],\n\t\t\t\t}),\n\t\t\t}\n\t\t);\n\t}\n\n\tasync getUnreadCount() {\n\t\tawait this.api._ensureSession();\n\n\t\tif (this.api.mock) {\n\t\t\tconst count = MOCK_CONVERSATIONS.reduce(\n\t\t\t\t(sum, c) => sum + (c.unread || 0),\n\t\t\t\t0\n\t\t\t);\n\t\t\treturn {\n\t\t\t\tstatus: true,\n\t\t\t\tdata: { unread_count: count, unread_conversations: count > 0 ? 1 : 0 },\n\t\t\t};\n\t\t}\n\n\t\treturn this.api._makeRequest('/widget/livechat/unread', {\n\t\t\tmethod: 'GET',\n\t\t\theaders: { Authorization: `Bearer ${this.api.sessionToken}` },\n\t\t});\n\t}\n\n\tasync markConversationAsRead(conversationId) {\n\t\tawait this.api._ensureSession();\n\n\t\tif (this.api.mock) {\n\t\t\treturn { status: true };\n\t\t}\n\n\t\treturn this.api._makeRequest(\n\t\t\t`/widget/livechat/conversations/${conversationId}/read`,\n\t\t\t{\n\t\t\t\tmethod: 'POST',\n\t\t\t\theaders: { Authorization: `Bearer ${this.api.sessionToken}` },\n\t\t\t}\n\t\t);\n\t}\n\n\tasync getMessages(conversationId, options = {}) {\n\t\tawait this.api._ensureSession();\n\n\t\tif (this.api.mock) {\n\t\t\tawait delay(200);\n\t\t\treturn {\n\t\t\t\tstatus: true,\n\t\t\t\tdata: MOCK_MESSAGES[conversationId] || [],\n\t\t\t\tmeta: { total: 0, page: 1, limit: 50 },\n\t\t\t};\n\t\t}\n\n\t\tconst params = { ...options };\n\t\tconst endpoint = this.api._getEndpointWithParams(\n\t\t\t`/widget/livechat/conversations/${conversationId}/messages`,\n\t\t\tparams\n\t\t);\n\t\treturn this.api._makeRequest(endpoint, {\n\t\t\tmethod: 'GET',\n\t\t\theaders: { Authorization: `Bearer ${this.api.sessionToken}` },\n\t\t});\n\t}\n\n\tasync uploadFile(base64Data, filename) {\n\t\tawait this.api._ensureSession();\n\n\t\tif (this.api.mock) {\n\t\t\tawait delay(300);\n\t\t\treturn { status: true, url: `https://mock-cdn.example.com/${filename}` };\n\t\t}\n\n\t\treturn this.api._makeRequest('/widget/livechat/upload', {\n\t\t\tmethod: 'POST',\n\t\t\theaders: {\n\t\t\t\t'Content-Type': 'application/json',\n\t\t\t\tAuthorization: `Bearer ${this.api.sessionToken}`,\n\t\t\t},\n\t\t\tbody: JSON.stringify({ file: base64Data, filename }),\n\t\t});\n\t}\n\n\tasync identifyContact(data) {\n\t\treturn this.api.identify(data);\n\t}\n\n\tasync submitRating(conversationId, data) {\n\t\tawait this.api._ensureSession();\n\n\t\tif (this.api.mock) {\n\t\t\treturn { status: true, data: { rated: true } };\n\t\t}\n\n\t\treturn this.api._makeRequest(\n\t\t\t`/widget/livechat/conversations/${conversationId}/rating`,\n\t\t\t{\n\t\t\t\tmethod: 'POST',\n\t\t\t\theaders: {\n\t\t\t\t\t'Content-Type': 'application/json',\n\t\t\t\t\tAuthorization: `Bearer ${this.api.sessionToken}`,\n\t\t\t\t},\n\t\t\t\tbody: JSON.stringify(data),\n\t\t\t}\n\t\t);\n\t}\n\n\tasync sendTypingIndicator(conversationId, isTyping) {\n\t\tawait this.api._ensureSession();\n\n\t\tif (this.api.mock) {\n\t\t\treturn { status: true };\n\t\t}\n\n\t\treturn this.api._makeRequest(\n\t\t\t`/widget/livechat/conversations/${conversationId}/typing`,\n\t\t\t{\n\t\t\t\tmethod: 'POST',\n\t\t\t\theaders: {\n\t\t\t\t\t'Content-Type': 'application/json',\n\t\t\t\t\tAuthorization: `Bearer ${this.api.sessionToken}`,\n\t\t\t\t},\n\t\t\t\tbody: JSON.stringify({ is_typing: isTyping }),\n\t\t\t}\n\t\t);\n\t}\n}\n","export class SDKError extends Error {\n\tconstructor(message, cause) {\n\t\tsuper(message);\n\t\tthis.name = 'SDKError';\n\t\tthis.cause = cause;\n\n\t\tif (Error.captureStackTrace) {\n\t\t\tError.captureStackTrace(this, SDKError);\n\t\t}\n\t}\n}\n\nexport class APIError extends Error {\n\tconstructor(status, message, response) {\n\t\tsuper(message);\n\t\tthis.name = 'APIError';\n\t\tthis.status = status;\n\t\tthis.response = response;\n\n\t\tif (Error.captureStackTrace) {\n\t\t\tError.captureStackTrace(this, APIError);\n\t\t}\n\t}\n\n\tisNetworkError() {\n\t\treturn this.status === 0;\n\t}\n\n\tisClientError() {\n\t\treturn this.status >= 400 && this.status < 500;\n\t}\n\n\tisServerError() {\n\t\treturn this.status >= 500 && this.status < 600;\n\t}\n}\n\nexport class WidgetError extends Error {\n\tconstructor(message, widgetType, widgetId) {\n\t\tsuper(message);\n\t\tthis.name = 'WidgetError';\n\t\tthis.widgetType = widgetType;\n\t\tthis.widgetId = widgetId;\n\n\t\tif (Error.captureStackTrace) {\n\t\t\tError.captureStackTrace(this, WidgetError);\n\t\t}\n\t}\n}\n\nexport class ConfigError extends Error {\n\tconstructor(message, configKey) {\n\t\tsuper(message);\n\t\tthis.name = 'ConfigError';\n\t\tthis.configKey = configKey;\n\n\t\tif (Error.captureStackTrace) {\n\t\t\tError.captureStackTrace(this, ConfigError);\n\t\t}\n\t}\n}\n\nexport class ValidationError extends Error {\n\tconstructor(message, field, value) {\n\t\tsuper(message);\n\t\tthis.name = 'ValidationError';\n\t\tthis.field = field;\n\t\tthis.value = value;\n\n\t\tif (Error.captureStackTrace) {\n\t\t\tError.captureStackTrace(this, ValidationError);\n\t\t}\n\t}\n}\n\nexport class ErrorHandler {\n\tconstructor(debug = false) {\n\t\tthis.debug = debug;\n\t}\n\n\thandle(error, context = '') {\n\t\tconst errorInfo = {\n\t\t\tname: error.name,\n\t\t\tmessage: error.message,\n\t\t\tcontext,\n\t\t\ttimestamp: new Date().toISOString(),\n\t\t};\n\n\t\tif (error instanceof APIError) {\n\t\t\terrorInfo.status = error.status;\n\t\t\terrorInfo.type = 'api';\n\t\t} else if (error instanceof WidgetError) {\n\t\t\terrorInfo.widgetType = error.widgetType;\n\t\t\terrorInfo.widgetId = error.widgetId;\n\t\t\terrorInfo.type = 'widget';\n\t\t} else if (error instanceof ConfigError) {\n\t\t\terrorInfo.configKey = error.configKey;\n\t\t\terrorInfo.type = 'config';\n\t\t} else if (error instanceof ValidationError) {\n\t\t\terrorInfo.field = error.field;\n\t\t\terrorInfo.value = error.value;\n\t\t\terrorInfo.type = 'validation';\n\t\t} else {\n\t\t\terrorInfo.type = 'unknown';\n\t\t}\n\n\t\tif (this.debug) {\n\t\t\tconsole.error('[Product7 Error]', errorInfo, error);\n\t\t} else {\n\t\t\tconsole.error('[Product7 Error]', error.message);\n\t\t}\n\n\t\treturn errorInfo;\n\t}\n\n\tgetUserMessage(error) {\n\t\tif (error instanceof APIError) {\n\t\t\tif (error.isNetworkError()) {\n\t\t\t\treturn 'Network error. Please check your connection and try again.';\n\t\t\t} else if (error.isClientError()) {\n\t\t\t\treturn 'Invalid request. Please check your input and try again.';\n\t\t\t} else if (error.isServerError()) {\n\t\t\t\treturn 'Server error. Please try again later.';\n\t\t\t}\n\t\t\treturn 'Failed to submit feedback. Please try again.';\n\t\t}\n\n\t\tif (error instanceof ValidationError) {\n\t\t\treturn `Please check your ${error.field}: ${error.message}`;\n\t\t}\n\n\t\tif (error instanceof ConfigError) {\n\t\t\treturn 'Configuration error. Please check your SDK setup.';\n\t\t}\n\n\t\tif (error instanceof WidgetError) {\n\t\t\treturn 'Widget error. Please try refreshing the page.';\n\t\t}\n\n\t\treturn 'An unexpected error occurred. Please try again.';\n\t}\n}\n","import { APIError } from '../../utils/errors.js';\nimport { MOCK_SURVEYS } from '../mock-data/index.js';\nimport { delay, getDeviceInfo } from '../utils/helpers.js';\n\nexport class SurveyService {\n\tconstructor(baseAPI) {\n\t\tthis.api = baseAPI;\n\t}\n\n\tasync getActiveSurveys(context = {}) {\n\t\tawait this.api._ensureSession();\n\n\t\tif (this.api.mock) {\n\t\t\tawait delay(200);\n\t\t\treturn { success: true, data: MOCK_SURVEYS };\n\t\t}\n\n\t\tconst respondent = this._getRespondentContext(context);\n\n\t\tconst params = {\n\t\t\turl:\n\t\t\t\tcontext.url ||\n\t\t\t\t(typeof window !== 'undefined' ? window.location.href : ''),\n\t\t\t...getDeviceInfo(),\n\t\t\t...(respondent.respondent_id && {\n\t\t\t\trespondent_id: respondent.respondent_id,\n\t\t\t}),\n\t\t\t...(respondent.email && { email: respondent.email }),\n\t\t\t...(context.includeEligibility !== undefined && {\n\t\t\t\tinclude_eligibility: context.includeEligibility,\n\t\t\t}),\n\t\t\t...(context.userProperties && {\n\t\t\t\tuser_properties: context.userProperties,\n\t\t\t}),\n\t\t};\n\n\t\treturn this.api._handleAuthRetry(async () => {\n\t\t\tconst endpoint = this.api._getEndpointWithParams(\n\t\t\t\t'/widget/surveys/active',\n\t\t\t\tparams\n\t\t\t);\n\t\t\treturn await this.api._makeRequest(endpoint, {\n\t\t\t\tmethod: 'GET',\n\t\t\t\theaders: { Authorization: `Bearer ${this.api.sessionToken}` },\n\t\t\t});\n\t\t});\n\t}\n\n\t_getRespondentContext(context = {}) {\n\t\tconst metadata =\n\t\t\ttypeof this.api.getMetadata === 'function'\n\t\t\t\t? this.api.getMetadata() || {}\n\t\t\t\t: {};\n\n\t\treturn {\n\t\t\trespondent_id:\n\t\t\t\tcontext.respondentId || context.userId || metadata.user_id || null,\n\t\t\temail: context.email || metadata.email || null,\n\t\t};\n\t}\n\n\tasync submitSurveyResponse(surveyId, responseData) {\n\t\tif (!surveyId) throw new APIError(400, 'Survey ID is required');\n\n\t\tawait this.api._ensureSession();\n\n\t\tif (this.api.mock) {\n\t\t\tawait delay(300);\n\t\t\treturn {\n\t\t\t\tsuccess: true,\n\t\t\t\tdata: {\n\t\t\t\t\tid: 'mock_response_' + Date.now(),\n\t\t\t\t\tsurvey_id: surveyId,\n\t\t\t\t\t...responseData,\n\t\t\t\t},\n\t\t\t\tmessage: 'Survey response submitted successfully!',\n\t\t\t};\n\t\t}\n\n\t\tconst respondent = this._getRespondentContext(responseData);\n\t\tconst contact = this.api.getContactIdentity?.() || null;\n\n\t\tconst payload = {\n\t\t\tanswers: Array.isArray(responseData.answers) ? responseData.answers : [],\n\t\t\t...(responseData.feedback && { feedback: responseData.feedback }),\n\t\t\t...(respondent.respondent_id && {\n\t\t\t\trespondent_id: respondent.respondent_id,\n\t\t\t}),\n\t\t\t...(respondent.email && { email: respondent.email }),\n\t\t\t...(contact?.contactId && {\n\t\t\t\tcontact_id: contact.contactId,\n\t\t\t\tcontact_email: contact.contactEmail,\n\t\t\t\tcontact_name: contact.contactName,\n\t\t\t}),\n\t\t};\n\n\t\treturn this.api._handleAuthRetry(async () => {\n\t\t\treturn await this.api._makeRequest(\n\t\t\t\t`/widget/surveys/${surveyId}/responses`,\n\t\t\t\t{\n\t\t\t\t\tmethod: 'POST',\n\t\t\t\t\tbody: JSON.stringify(payload),\n\t\t\t\t\theaders: {\n\t\t\t\t\t\t'Content-Type': 'application/json',\n\t\t\t\t\t\tAuthorization: `Bearer ${this.api.sessionToken}`,\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t);\n\t\t});\n\t}\n\n\tasync dismissSurvey(surveyId) {\n\t\tif (!surveyId) throw new APIError(400, 'Survey ID is required');\n\n\t\tawait this.api._ensureSession();\n\n\t\tif (this.api.mock) {\n\t\t\tawait delay(100);\n\t\t\treturn { success: true, message: 'Survey dismissed successfully' };\n\t\t}\n\n\t\treturn this.api._handleAuthRetry(async () => {\n\t\t\treturn await this.api._makeRequest(\n\t\t\t\t`/widget/surveys/${surveyId}/dismiss`,\n\t\t\t\t{\n\t\t\t\t\tmethod: 'POST',\n\t\t\t\t\theaders: { Authorization: `Bearer ${this.api.sessionToken}` },\n\t\t\t\t}\n\t\t\t);\n\t\t});\n\t}\n}\n","import { APIError } from '../utils/errors.js';\n\nexport class BaseAPIService {\n\tconstructor(config = {}) {\n\t\tthis.workspace = config.workspace;\n\t\tthis.sessionToken = null;\n\t\tthis.sessionExpiry = null;\n\t\tthis.metadata = config.metadata || null;\n\t\tthis.identitySyncedToken = null;\n\t\tthis.mock = config.mock || false;\n\t\tthis.env = config.env || 'production';\n\t\tthis.baseURL = this._getBaseURL(config);\n\n\t\tthis._loadStoredSession();\n\t\tthis._loadStoredMetadata();\n\t\tif (this.isSessionValid() && this.metadata) {\n\t\t\tthis.identitySyncedToken = this.sessionToken;\n\t\t}\n\t}\n\n\t_getBaseURL(config) {\n\t\tif (config.apiUrl) return config.apiUrl;\n\n\t\tconst ENV_URLS = {\n\t\t\tproduction: {\n\t\t\t\tbase: 'https://api.product7.io/api/v1',\n\t\t\t\twithWorkspace: (ws) => `https://${ws}.api.product7.io/api/v1`,\n\t\t\t},\n\t\t\tstaging: {\n\t\t\t\tbase: 'https://staging.api.product7.io/api/v1',\n\t\t\t\twithWorkspace: (ws) => `https://${ws}.staging.api.product7.io/api/v1`,\n\t\t\t},\n\t\t\tlocalstack: {\n\t\t\t\tbase: 'http://localhost:1323/api/v1',\n\t\t\t\twithWorkspace: (ws) => `http://${ws}.localhost:1323/api/v1`,\n\t\t\t},\n\t\t};\n\n\t\tlet env = this.env;\n\t\tif (!env || env === 'production') {\n\t\t\tconst hostname =\n\t\t\t\t(typeof window !== 'undefined' && window.location?.hostname) || '';\n\t\t\tconst port =\n\t\t\t\t(typeof window !== 'undefined' && window.location?.port) || '';\n\t\t\tif (hostname.includes('staging')) {\n\t\t\t\tenv = 'staging';\n\t\t\t} else if (hostname === 'app.localhost' && port === '3005') {\n\t\t\t\tenv = 'localstack';\n\t\t\t}\n\t\t}\n\n\t\tconst envConfig = ENV_URLS[env] || ENV_URLS.production;\n\t\treturn this.workspace\n\t\t\t? envConfig.withWorkspace(this.workspace)\n\t\t\t: envConfig.base;\n\t}\n\n\tasync init(metadata = undefined) {\n\t\tif (metadata !== undefined) {\n\t\t\tthis.setMetadata(metadata);\n\t\t}\n\n\t\tif (this.isSessionValid()) {\n\t\t\treturn { sessionToken: this.sessionToken };\n\t\t}\n\n\t\tif (!this.workspace) {\n\t\t\tthrow new APIError(400, 'Missing workspace for initialization');\n\t\t}\n\n\t\tif (this.mock) {\n\t\t\treturn this._initMockSession();\n\t\t}\n\n\t\treturn this._initRealSession();\n\t}\n\n\tasync _initMockSession() {\n\t\tthis.sessionToken = 'mock_session_' + Date.now();\n\t\tthis.sessionExpiry = new Date(Date.now() + 3600 * 1000);\n\t\tthis.identitySyncedToken = null;\n\t\tthis._storeSession();\n\t\treturn {\n\t\t\tsessionToken: this.sessionToken,\n\t\t\tconfig: {\n\t\t\t\tprimaryColor: '#21244A',\n\t\t\t\tbackgroundColor: '#ffffff',\n\t\t\t\ttextColor: '#1F2937',\n\t\t\t\tboardName: 'feature-requests',\n\t\t\t\tsize: 'medium',\n\t\t\t\tdisplayMode: 'modal',\n\t\t\t},\n\t\t\texpiresIn: 3600,\n\t\t};\n\t}\n\n\tasync _initRealSession() {\n\t\tconst payload = {\n\t\t\tworkspace: this.workspace,\n\t\t};\n\n\t\ttry {\n\t\t\tconst response = await this._makeRequest('/widget/init', {\n\t\t\t\tmethod: 'POST',\n\t\t\t\tbody: JSON.stringify(payload),\n\t\t\t\theaders: { 'Content-Type': 'application/json' },\n\t\t\t});\n\t\t\tconst initData = this._extractInitResponseData(response);\n\n\t\t\tthis.sessionToken = initData.sessionToken;\n\t\t\tthis.sessionExpiry = new Date(Date.now() + initData.expiresIn * 1000);\n\t\t\tthis.identitySyncedToken = null;\n\t\t\tthis._storeSession();\n\n\t\t\treturn {\n\t\t\t\tsessionToken: this.sessionToken,\n\t\t\t\tconfig: initData.config,\n\t\t\t\twidgets: initData.widgets,\n\t\t\t\texpiresIn: initData.expiresIn,\n\t\t\t\tstatus: initData.status,\n\t\t\t\tmessage: initData.message,\n\t\t\t\tconfigVersion: initData.configVersion,\n\t\t\t};\n\t\t} catch (error) {\n\t\t\tthrow new APIError(\n\t\t\t\terror.status || 500,\n\t\t\t\t`Failed to initialize widget: ${error.message}`,\n\t\t\t\terror.response\n\t\t\t);\n\t\t}\n\t}\n\n\t_extractInitResponseData(response) {\n\t\tconst payload =\n\t\t\tresponse && typeof response.data === 'object'\n\t\t\t\t? response.data\n\t\t\t\t: response || {};\n\n\t\tconst configData =\n\t\t\tpayload.config && typeof payload.config === 'object'\n\t\t\t\t? payload.config\n\t\t\t\t: {};\n\n\t\tconst sessionToken =\n\t\t\tpayload.session_token ||\n\t\t\tpayload.sessionToken ||\n\t\t\tconfigData.session_token ||\n\t\t\tconfigData.sessionToken;\n\n\t\tconst expiresIn = Number(\n\t\t\tpayload.expires_in ??\n\t\t\t\tpayload.expiresIn ??\n\t\t\t\tconfigData.expires_in ??\n\t\t\t\tconfigData.expiresIn\n\t\t);\n\n\t\tif (!sessionToken) {\n\t\t\tthrow new APIError(500, 'Invalid init response: missing session_token');\n\t\t}\n\n\t\tif (!Number.isFinite(expiresIn) || expiresIn <= 0) {\n\t\t\tthrow new APIError(500, 'Invalid init response: missing expires_in');\n\t\t}\n\n\t\treturn {\n\t\t\tsessionToken,\n\t\t\texpiresIn,\n\t\t\tconfig: configData,\n\t\t\twidgets:\n\t\t\t\tpayload.widgets && typeof payload.widgets === 'object'\n\t\t\t\t\t? payload.widgets\n\t\t\t\t\t: null,\n\t\t\tconfigVersion:\n\t\t\t\tconfigData.config_version ??\n\t\t\t\tconfigData.configVersion ??\n\t\t\t\tpayload.config_version ??\n\t\t\t\tpayload.configVersion ??\n\t\t\t\tnull,\n\t\t\tstatus: response?.status ?? payload?.status ?? true,\n\t\t\tmessage: response?.message ?? payload?.message ?? null,\n\t\t};\n\t}\n\n\tasync _ensureSession() {\n\t\tif (!this.isSessionValid()) {\n\t\t\tawait this.init();\n\t\t}\n\t\tif (!this.sessionToken) {\n\t\t\tthrow new APIError(401, 'No valid session token available');\n\t\t}\n\t}\n\n\tasync _handleAuthRetry(method, ...args) {\n\t\ttry {\n\t\t\treturn await method.apply(this, args);\n\t\t} catch (error) {\n\t\t\tif (error.status === 401) {\n\t\t\t\tthis.sessionToken = null;\n\t\t\t\tthis.sessionExpiry = null;\n\t\t\t\tawait this.init();\n\t\t\t\tawait this._restoreIdentity();\n\t\t\t\treturn await method.apply(this, args);\n\t\t\t}\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\tasync identify(metadata = this.metadata) {\n\t\tif (metadata !== undefined) {\n\t\t\tthis.setMetadata(metadata);\n\t\t}\n\n\t\tif (!this.metadata) {\n\t\t\tthrow new APIError(400, 'Missing user context for identify');\n\t\t}\n\n\t\tawait this._ensureSession();\n\n\t\tconst payload = this._buildIdentifyPayload(this.metadata);\n\n\t\tif (this.mock) {\n\t\t\tthis.identitySyncedToken = this.sessionToken;\n\t\t\treturn {\n\t\t\t\tstatus: true,\n\t\t\t\tidentified: true,\n\t\t\t\tdata: {\n\t\t\t\t\tuser_id: payload.user_id || null,\n\t\t\t\t\temail: payload.email || null,\n\t\t\t\t\tname: payload.name || null,\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\n\t\tconst response = await this._makeRequest('/widget/identify', {\n\t\t\tmethod: 'POST',\n\t\t\tbody: JSON.stringify(payload),\n\t\t\theaders: {\n\t\t\t\t'Content-Type': 'application/json',\n\t\t\t\tAuthorization: `Bearer ${this.sessionToken}`,\n\t\t\t},\n\t\t});\n\n\t\tthis.identitySyncedToken = this.sessionToken;\n\t\treturn response;\n\t}\n\n\tisSessionValid() {\n\t\treturn (\n\t\t\tthis.sessionToken && this.sessionExpiry && new Date() < this.sessionExpiry\n\t\t);\n\t}\n\n\tsetMetadata(metadata) {\n\t\tthis.metadata = metadata || null;\n\t\tthis.identitySyncedToken = null;\n\t\tif (this.metadata) {\n\t\t\tthis._storeData('product7_metadata', this.metadata);\n\t\t} else {\n\t\t\tthis._removeData('product7_metadata');\n\t\t}\n\t}\n\n\tgetMetadata() {\n\t\treturn this.metadata;\n\t}\n\n\tclearSession() {\n\t\tthis.sessionToken = null;\n\t\tthis.sessionExpiry = null;\n\t\tthis.identitySyncedToken = null;\n\t\tthis.contactId = null;\n\t\tthis.contactEmail = null;\n\t\tthis.contactName = null;\n\t\tthis._removeData('product7_session');\n\t\tthis._removeData('product7_metadata');\n\t\tthis._removeData('product7_contact');\n\t}\n\n\t_storeSession() {\n\t\tif (typeof localStorage === 'undefined') return;\n\t\ttry {\n\t\t\tconst sessionData = {\n\t\t\t\ttoken: this.sessionToken,\n\t\t\t\texpiry: this.sessionExpiry.toISOString(),\n\t\t\t\tworkspace: this.workspace,\n\t\t\t};\n\t\t\tthis._storeData('product7_session', sessionData);\n\t\t} catch (error) {\n\t\t\t// Silent fail\n\t\t}\n\t}\n\n\t_loadStoredSession() {\n\t\tif (typeof localStorage === 'undefined') return false;\n\t\ttry {\n\t\t\tconst stored = localStorage.getItem('product7_session');\n\t\t\tif (!stored) return false;\n\n\t\t\tconst sessionData = JSON.parse(stored);\n\n\t\t\t// Invalidate mock tokens when not in mock mode (and vice versa)\n\t\t\tconst isMockToken =\n\t\t\t\tsessionData.token && sessionData.token.startsWith('mock_');\n\t\t\tif (isMockToken !== this.mock) {\n\t\t\t\tlocalStorage.removeItem('product7_session');\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\tthis.workspace &&\n\t\t\t\tsessionData.workspace &&\n\t\t\t\tsessionData.workspace !== this.workspace\n\t\t\t) {\n\t\t\t\tlocalStorage.removeItem('product7_session');\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tthis.sessionToken = sessionData.token;\n\t\t\tthis.sessionExpiry = new Date(sessionData.expiry);\n\n\t\t\treturn this.isSessionValid();\n\t\t} catch (error) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\t_loadStoredMetadata() {\n\t\tif (this.metadata || typeof localStorage === 'undefined') return false;\n\n\t\ttry {\n\t\t\tconst session = localStorage.getItem('product7_session');\n\t\t\tif (session) {\n\t\t\t\tconst sessionData = JSON.parse(session);\n\t\t\t\tif (\n\t\t\t\t\tthis.workspace &&\n\t\t\t\t\tsessionData.workspace &&\n\t\t\t\t\tsessionData.workspace !== this.workspace\n\t\t\t\t) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst stored = localStorage.getItem('product7_metadata');\n\t\t\tif (!stored) return false;\n\n\t\t\tthis.metadata = JSON.parse(stored);\n\t\t\treturn true;\n\t\t} catch (error) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\t_storeData(key, value) {\n\t\tif (typeof localStorage !== 'undefined') {\n\t\t\tlocalStorage.setItem(key, JSON.stringify(value));\n\t\t}\n\t}\n\n\t_removeData(key) {\n\t\tif (typeof localStorage !== 'undefined') {\n\t\t\tlocalStorage.removeItem(key);\n\t\t}\n\t}\n\n\tasync _makeRequest(endpoint, options = {}) {\n\t\tconst url = `${this.baseURL}${endpoint}`;\n\n\t\ttry {\n\t\t\tconst response = await fetch(url, options);\n\n\t\t\tif (!response.ok) {\n\t\t\t\tlet errorMessage = `HTTP ${response.status}`;\n\t\t\t\tlet responseData = null;\n\n\t\t\t\ttry {\n\t\t\t\t\tresponseData = await response.json();\n\t\t\t\t\terrorMessage =\n\t\t\t\t\t\tresponseData.message || responseData.error || errorMessage;\n\t\t\t\t} catch (e) {\n\t\t\t\t\terrorMessage = (await response.text()) || errorMessage;\n\t\t\t\t}\n\n\t\t\t\tthrow new APIError(response.status, errorMessage, responseData);\n\t\t\t}\n\n\t\t\tconst contentType = response.headers.get('content-type');\n\t\t\tif (contentType && contentType.includes('application/json')) {\n\t\t\t\treturn await response.json();\n\t\t\t}\n\n\t\t\treturn await response.text();\n\t\t} catch (error) {\n\t\t\tif (error instanceof APIError) throw error;\n\t\t\tthrow new APIError(0, error.message, null);\n\t\t}\n\t}\n\n\t_buildQueryParams(params) {\n\t\tconst queryParams = new URLSearchParams();\n\t\tObject.entries(params).forEach(([key, value]) => {\n\t\t\tif (value !== undefined && value !== null) {\n\t\t\t\tqueryParams.append(\n\t\t\t\t\tkey,\n\t\t\t\t\ttypeof value === 'object' ? JSON.stringify(value) : value\n\t\t\t\t);\n\t\t\t}\n\t\t});\n\t\treturn queryParams.toString();\n\t}\n\n\t_getEndpointWithParams(endpoint, params) {\n\t\tconst queryString = this._buildQueryParams(params);\n\t\treturn `${endpoint}${queryString ? '?' + queryString : ''}`;\n\t}\n\n\t_buildIdentifyPayload(metadata = {}) {\n\t\tconst payload = {\n\t\t\tuser_id: metadata.user_id,\n\t\t\temail: metadata.email,\n\t\t\tname: metadata.name,\n\t\t\tavatar:\n\t\t\t\tmetadata.profile_picture || metadata.avatar_url || metadata.avatar,\n\t\t\tattributes: metadata.custom_fields || {},\n\t\t};\n\n\t\tif (metadata.company) {\n\t\t\tpayload.company = metadata.company;\n\t\t}\n\n\t\treturn payload;\n\t}\n\n\tasync _restoreIdentity() {\n\t\tif (\n\t\t\t!this.metadata ||\n\t\t\t!this.sessionToken ||\n\t\t\t!this.identitySyncedToken ||\n\t\t\tthis.identitySyncedToken === this.sessionToken\n\t\t) {\n\t\t\treturn;\n\t\t}\n\n\t\tawait this.identify(this.metadata);\n\t}\n}\n","import { ChangelogService } from '../api/services/ChangelogService.js';\nimport { FeedbackService } from '../api/services/FeedbackService.js';\nimport { HelpService } from '../api/services/HelpService.js';\nimport { LiveChatService } from '../api/services/LiveChatService.js';\nimport { SurveyService } from '../api/services/SurveyService.js';\nimport { BaseAPIService } from './BaseAPIService.js';\n\nexport class APIService extends BaseAPIService {\n\tconstructor(config = {}) {\n\t\tsuper(config);\n\n\t\tthis.feedback = new FeedbackService(this);\n\t\tthis.survey = new SurveyService(this);\n\t\tthis.liveChat = new LiveChatService(this);\n\t\tthis.help = new HelpService(this);\n\t\tthis.changelog = new ChangelogService(this);\n\t}\n\n\tasync submitFeedback(data) {\n\t\treturn this.feedback.submitFeedback(data);\n\t}\n\n\tasync getActiveSurveys(context) {\n\t\treturn this.survey.getActiveSurveys(context);\n\t}\n\n\tasync submitSurveyResponse(surveyId, responseData) {\n\t\treturn this.survey.submitSurveyResponse(surveyId, responseData);\n\t}\n\n\tasync dismissSurvey(surveyId) {\n\t\treturn this.survey.dismissSurvey(surveyId);\n\t}\n\n\tasync getLiveChatSettings() {\n\t\treturn this.liveChat.getLiveChatSettings();\n\t}\n\n\tasync checkAgentsOnline() {\n\t\treturn this.liveChat.checkAgentsOnline();\n\t}\n\n\tasync getConversations(options) {\n\t\treturn this.liveChat.getConversations(options);\n\t}\n\n\tasync getConversation(conversationId) {\n\t\treturn this.liveChat.getConversation(conversationId);\n\t}\n\n\tasync getMessages(conversationId, options) {\n\t\treturn this.liveChat.getMessages(conversationId, options);\n\t}\n\n\tasync startConversation(data) {\n\t\treturn this.liveChat.startConversation(data);\n\t}\n\n\tasync sendMessage(conversationId, data) {\n\t\treturn this.liveChat.sendMessage(conversationId, data);\n\t}\n\n\tasync uploadFile(base64Data, filename) {\n\t\treturn this.liveChat.uploadFile(base64Data, filename);\n\t}\n\n\tasync sendTypingIndicator(conversationId, isTyping) {\n\t\treturn this.liveChat.sendTypingIndicator(conversationId, isTyping);\n\t}\n\n\tasync markConversationAsRead(conversationId) {\n\t\treturn this.liveChat.markConversationAsRead(conversationId);\n\t}\n\n\tasync getUnreadCount() {\n\t\treturn this.liveChat.getUnreadCount();\n\t}\n\n\tasync submitRating(conversationId, data) {\n\t\treturn this.liveChat.submitRating(conversationId, data);\n\t}\n\n\tasync identify(metadata) {\n\t\tawait this._ensureSession();\n\n\t\tif (this.mock) {\n\t\t\tawait new Promise((r) => setTimeout(r, 300));\n\t\t\tconst mockResponse = {\n\t\t\t\tstatus: true,\n\t\t\t\tdata: {\n\t\t\t\t\tcontact_id: 'mock_contact_' + Date.now(),\n\t\t\t\t\temail: metadata.email || '',\n\t\t\t\t\tname: metadata.name || '',\n\t\t\t\t\tavatar: metadata.avatar || '',\n\t\t\t\t\tis_new: true,\n\t\t\t\t},\n\t\t\t};\n\t\t\tthis._storeContactIdentity(mockResponse.data, metadata);\n\t\t\treturn mockResponse;\n\t\t}\n\n\t\tconst payload = {};\n\n\t\tif (metadata.email) payload.email = metadata.email;\n\t\tif (metadata.user_id) payload.user_id = metadata.user_id;\n\t\tif (metadata.name) payload.name = metadata.name;\n\t\tif (metadata.avatar) payload.avatar = metadata.avatar;\n\t\tif (metadata.attributes) payload.attributes = metadata.attributes;\n\t\tif (metadata.company) payload.company = metadata.company;\n\n\t\tconst response = await this._makeRequest('/widget/identify', {\n\t\t\tmethod: 'POST',\n\t\t\theaders: {\n\t\t\t\t'Content-Type': 'application/json',\n\t\t\t\tAuthorization: `Bearer ${this.sessionToken}`,\n\t\t\t},\n\t\t\tbody: JSON.stringify(payload),\n\t\t});\n\n\t\tif (response?.status && response?.data) {\n\t\t\tthis._storeContactIdentity(response.data, metadata);\n\t\t}\n\n\t\treturn response;\n\t}\n\n\t_storeContactIdentity(data, metadata = {}) {\n\t\tthis.contactId = data.contact_id || null;\n\t\tthis.contactEmail = data.email || metadata.email || null;\n\t\tthis.contactName = data.name || metadata.name || null;\n\n\t\ttry {\n\t\t\tlocalStorage.setItem(\n\t\t\t\t'product7_contact',\n\t\t\t\tJSON.stringify({\n\t\t\t\t\tcontactId: this.contactId,\n\t\t\t\t\tcontactEmail: this.contactEmail,\n\t\t\t\t\tcontactName: this.contactName,\n\t\t\t\t})\n\t\t\t);\n\t\t} catch (e) {\n\t\t\t/* silent */\n\t\t}\n\t}\n\n\tgetContactIdentity() {\n\t\tif (this.contactId) {\n\t\t\treturn {\n\t\t\t\tcontactId: this.contactId,\n\t\t\t\tcontactEmail: this.contactEmail,\n\t\t\t\tcontactName: this.contactName,\n\t\t\t};\n\t\t}\n\n\t\ttry {\n\t\t\tconst stored = localStorage.getItem('product7_contact');\n\t\t\tif (stored) {\n\t\t\t\tconst parsed = JSON.parse(stored);\n\t\t\t\tthis.contactId = parsed.contactId;\n\t\t\t\tthis.contactEmail = parsed.contactEmail;\n\t\t\t\tthis.contactName = parsed.contactName;\n\t\t\t\treturn parsed;\n\t\t\t}\n\t\t} catch (e) {\n\t\t\t/* silent */\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tasync identifyContact(data) {\n\t\treturn this.identify(data);\n\t}\n\n\tasync getHelpCollections(options) {\n\t\treturn this.help.getHelpCollections(options);\n\t}\n\n\tasync searchHelpArticles(query, options) {\n\t\treturn this.help.searchHelpArticles(query, options);\n\t}\n\n\tasync getChangelogs(options) {\n\t\treturn this.changelog.getChangelogs(options);\n\t}\n}\n","export class EventBus {\n\tconstructor() {\n\t\tthis.events = new Map();\n\t}\n\n\ton(event, callback) {\n\t\tif (!this.events.has(event)) {\n\t\t\tthis.events.set(event, []);\n\t\t}\n\t\tthis.events.get(event).push(callback);\n\n\t\treturn () => this.off(event, callback);\n\t}\n\n\toff(event, callback) {\n\t\tconst callbacks = this.events.get(event);\n\t\tif (callbacks) {\n\t\t\tconst index = callbacks.indexOf(callback);\n\t\t\tif (index > -1) {\n\t\t\t\tcallbacks.splice(index, 1);\n\t\t\t}\n\t\t}\n\t}\n\n\temit(event, data) {\n\t\tconst callbacks = this.events.get(event);\n\t\tif (callbacks) {\n\t\t\tcallbacks.forEach((callback) => {\n\t\t\t\ttry {\n\t\t\t\t\tcallback(data);\n\t\t\t\t} catch (error) {\n\t\t\t\t\tconsole.error('[Product7] Event callback error:', error);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\tonce(event, callback) {\n\t\tconst unsubscribe = this.on(event, (data) => {\n\t\t\tcallback(data);\n\t\t\tunsubscribe();\n\t\t});\n\t\treturn unsubscribe;\n\t}\n\n\tclear() {\n\t\tthis.events.clear();\n\t}\n\n\tgetListenerCount(event) {\n\t\tconst callbacks = this.events.get(event);\n\t\treturn callbacks ? callbacks.length : 0;\n\t}\n}\n","export const baseStyles = `\n.feedback-widget,\n.liveChat-widget,\n.changelog-widget,\n.feedback-survey,\n.feedback-panel,\n.feedback-modal,\n.changelog-modal,\n.changelog-list-modal,\n.product7-notification {\n box-sizing: border-box;\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', Oxygen, Ubuntu, Cantarell, sans-serif;\n}\n\n.feedback-widget *,\n.feedback-widget *::before,\n.feedback-widget *::after,\n.liveChat-widget *,\n.liveChat-widget *::before,\n.liveChat-widget *::after,\n.changelog-widget *,\n.changelog-widget *::before,\n.changelog-widget *::after,\n.feedback-survey *,\n.feedback-survey *::before,\n.feedback-survey *::after,\n.feedback-panel *,\n.feedback-panel *::before,\n.feedback-panel *::after,\n.feedback-modal *,\n.feedback-modal *::before,\n.feedback-modal *::after,\n.changelog-modal *,\n.changelog-modal *::before,\n.changelog-modal *::after,\n.changelog-list-modal *,\n.changelog-list-modal *::before,\n.changelog-list-modal *::after {\n box-sizing: border-box;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .feedback-widget *,\n .liveChat-widget *,\n .changelog-widget *,\n .feedback-survey * {\n transition: none !important;\n animation: none !important;\n }\n}\n\n@media print {\n .feedback-widget,\n .feedback-panel,\n .sdk-modal-backdrop,\n .sdk-notification,\n .changelog-widget,\n .changelog-modal,\n .liveChat-widget,\n .liveChat-launcher,\n .liveChat-panel,\n .feedback-survey,\n .feedback-survey-backdrop {\n display: none !important;\n }\n}\n`;\n","export const changelogStyles = `\n.changelog-widget {\n position: fixed;\n z-index: var(--z-modal);\n}\n\n.changelog-widget.position-right {\n bottom: var(--spacing-5);\n right: var(--spacing-5);\n}\n\n.changelog-widget.position-left {\n bottom: var(--spacing-5);\n left: var(--spacing-5);\n}\n\n.changelog-trigger-btn {\n position: relative;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: var(--spacing-2);\n height: 48px;\n border-radius: var(--radius-full);\n border: none;\n padding: var(--spacing-3) var(--spacing-5);\n font-size: var(--font-size-base);\n font-weight: var(--font-weight-medium);\n font-family: inherit;\n cursor: pointer;\n transition: all var(--transition-slow);\n color: #ffffff;\n background: var(--color-primary);\n box-shadow: var(--shadow-md);\n width: fit-content;\n}\n\n.changelog-trigger-btn:hover {\n box-shadow: var(--shadow-lg);\n}\n\n.changelog-trigger-btn:active {\n transform: translateY(1px);\n box-shadow: var(--shadow-md);\n transition-duration: 100ms;\n}\n\n.changelog-trigger-btn:focus-visible {\n outline: 2px solid var(--color-primary);\n outline-offset: 2px;\n}\n\n.changelog-icon {\n flex-shrink: 0;\n}\n\n.changelog-confetti-emoji {\n font-size: var(--font-size-base);\n margin-left: 2px;\n}\n\n.changelog-badge {\n position: absolute;\n top: -4px;\n right: -4px;\n width: 12px;\n height: 12px;\n background: var(--color-error);\n border-radius: var(--radius-full);\n border: 2px solid var(--color-white);\n}\n\n/* ========================================\n CONFETTI\n ======================================== */\n\n.changelog-confetti-container {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n pointer-events: none;\n z-index: var(--z-notification);\n overflow: hidden;\n}\n\n.changelog-confetti {\n position: absolute;\n top: -20px;\n opacity: 0;\n animation: confettiFall 2s ease-out forwards;\n}\n\n@keyframes confettiFall {\n 0% {\n opacity: 1;\n transform: translateY(0) rotate(0deg) scale(1);\n }\n 10% {\n opacity: 1;\n }\n 100% {\n opacity: 0;\n transform: translateY(100vh) rotate(720deg) scale(0.5);\n }\n}\n\n/* ========================================\n POPUP MODAL\n ======================================== */\n\n.changelog-modal {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n z-index: var(--z-modal);\n display: flex;\n align-items: center;\n justify-content: center;\n padding: var(--spacing-5);\n pointer-events: none;\n font-family: inherit;\n}\n\n.changelog-modal-backdrop,\n.changelog-list-modal-backdrop {\n position: fixed;\n inset: 0;\n background: rgba(0, 0, 0, 0.5);\n opacity: 0;\n pointer-events: none;\n transition: opacity var(--transition-slow);\n z-index: var(--z-modal-backdrop);\n}\n\n.changelog-modal-backdrop.show,\n.changelog-list-modal-backdrop.show {\n opacity: 1;\n pointer-events: auto;\n}\n\n.changelog-modal.open {\n pointer-events: auto;\n}\n\n.changelog-modal-container {\n position: relative;\n width: 100%;\n max-width: 480px;\n max-height: 90vh;\n background: var(--color-white);\n border-radius: 12px;\n overflow: hidden;\n box-shadow: var(--shadow-xl);\n transform: scale(0.95) translateY(20px);\n opacity: 0;\n transition: all var(--transition-slow);\n}\n\n.changelog-modal.open .changelog-modal-container {\n transform: scale(1) translateY(0);\n opacity: 1;\n}\n\n.changelog-modal-close {\n position: absolute;\n top: var(--spacing-4);\n right: var(--spacing-4);\n background: none;\n border: none;\n cursor: pointer;\n color: var(--color-neutral-500);\n padding: 0;\n width: 28px;\n height: 28px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 8px;\n transition: all var(--transition-base);\n line-height: 1;\n z-index: 10;\n}\n\n.changelog-modal-close:hover {\n background: var(--color-neutral-100);\n color: var(--color-neutral-900);\n}\n\n.changelog-modal-close:active {\n transform: translateY(1px);\n transition-duration: 100ms;\n}\n\n.changelog-modal-content {\n overflow-y: auto;\n max-height: 90vh;\n}\n\n.changelog-loading {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 80px var(--spacing-5);\n}\n\n.changelog-empty {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 80px var(--spacing-5);\n text-align: center;\n color: var(--color-text-tertiary);\n}\n\n.changelog-empty svg {\n margin-bottom: var(--spacing-4);\n stroke: var(--color-neutral-300);\n}\n\n.changelog-empty p {\n margin: 0;\n font-size: var(--font-size-md);\n}\n\n/* ========================================\n POPUP ITEM\n ======================================== */\n\n.changelog-popup-item {\n display: flex;\n flex-direction: column;\n}\n\n.changelog-popup-image {\n width: 100%;\n padding: var(--spacing-6) var(--spacing-6) 0;\n}\n\n.changelog-popup-image img {\n width: 100%;\n height: auto;\n display: block;\n object-fit: cover;\n border-radius: 8px;\n border: 1px solid var(--color-border);\n}\n\n.changelog-popup-body {\n padding: var(--spacing-6) var(--spacing-8) var(--spacing-8);\n text-align: center;\n}\n\n.changelog-popup-title {\n margin: 0 0 var(--spacing-3);\n font-size: var(--font-size-xl);\n font-weight: var(--font-weight-semibold);\n line-height: var(--line-height-snug);\n color: var(--color-text-primary);\n}\n\n.changelog-popup-description {\n margin: 0 0 var(--spacing-6);\n font-size: var(--font-size-md);\n line-height: var(--line-height-loose);\n color: var(--color-text-secondary);\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n}\n\n.changelog-popup-btn {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n padding: var(--spacing-3) var(--spacing-8);\n font-size: var(--font-size-base);\n font-weight: var(--font-weight-medium);\n color: #ffffff;\n background: var(--color-primary);\n border: 1px solid var(--color-primary);\n border-radius: 8px;\n cursor: pointer;\n transition: all var(--transition-base);\n font-family: inherit;\n height: 40px;\n}\n\n.changelog-popup-btn:hover:not(:disabled) {\n background: var(--color-primary-hover);\n}\n\n.changelog-popup-btn:active:not(:disabled) {\n transform: translateY(1px);\n transition-duration: 100ms;\n}\n\n.changelog-popup-btn:focus-visible {\n outline: 2px solid var(--color-primary);\n outline-offset: 2px;\n}\n\n/* ========================================\n POPUP FOOTER / DOTS\n ======================================== */\n\n.changelog-popup-footer {\n padding: 0 var(--spacing-8) var(--spacing-6);\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--spacing-4);\n}\n\n.changelog-popup-dots {\n display: flex;\n gap: var(--spacing-2);\n}\n\n.changelog-dot {\n width: 8px;\n height: 8px;\n border-radius: var(--radius-full);\n background: var(--color-neutral-300);\n cursor: pointer;\n transition: all var(--transition-base);\n}\n\n.changelog-dot:hover {\n background: var(--color-neutral-400);\n}\n\n.changelog-dot.active {\n background: var(--color-primary);\n transform: scale(1.2);\n}\n\n.changelog-view-all-btn {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n background: none;\n border: none;\n color: var(--color-primary);\n font-size: var(--font-size-base);\n font-weight: var(--font-weight-medium);\n cursor: pointer;\n padding: var(--spacing-2) var(--spacing-3);\n border-radius: 8px;\n transition: all var(--transition-base);\n font-family: inherit;\n}\n\n.changelog-view-all-btn:hover {\n background: var(--color-primary-light);\n}\n\n.changelog-view-all-btn:active {\n transform: translateY(1px);\n transition-duration: 100ms;\n}\n\n/* ========================================\n LIST MODAL\n ======================================== */\n\n.changelog-list-modal {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n z-index: var(--z-modal);\n display: flex;\n align-items: center;\n justify-content: center;\n padding: var(--spacing-5);\n pointer-events: none;\n font-family: inherit;\n}\n\n.changelog-list-modal.open {\n pointer-events: auto;\n}\n\n.changelog-list-modal-container {\n position: relative;\n width: 100%;\n max-width: 460px;\n max-height: 85vh;\n background: var(--color-white);\n border-radius: 12px;\n overflow: hidden;\n box-shadow: var(--shadow-lg);\n transform: scale(0.95) translateY(20px);\n opacity: 0;\n transition: all var(--transition-slow);\n display: flex;\n flex-direction: column;\n}\n\n.changelog-list-modal.open .changelog-list-modal-container {\n transform: scale(1) translateY(0);\n opacity: 1;\n}\n\n.changelog-list-modal-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: var(--spacing-4) var(--spacing-5);\n border-bottom: 1px solid var(--color-border);\n flex-shrink: 0;\n}\n\n.changelog-list-modal-header h2 {\n margin: 0;\n font-size: var(--font-size-md);\n font-weight: var(--font-weight-semibold);\n color: var(--color-text-primary);\n}\n\n.changelog-list-modal-close {\n background: none;\n border: none;\n cursor: pointer;\n color: var(--color-neutral-500);\n padding: 0;\n width: 28px;\n height: 28px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 8px;\n transition: all var(--transition-base);\n}\n\n.changelog-list-modal-close:hover {\n background: var(--color-neutral-100);\n color: var(--color-neutral-900);\n}\n\n.changelog-list-modal-close:active {\n transform: translateY(1px);\n transition-duration: 100ms;\n}\n\n.changelog-list-modal-body {\n flex: 1;\n overflow-y: auto;\n}\n\n/* ========================================\n LIST ITEMS\n ======================================== */\n\n.changelog-list {\n display: flex;\n flex-direction: column;\n}\n\n.changelog-list-item {\n display: flex;\n align-items: center;\n gap: var(--spacing-3);\n padding: var(--spacing-4) var(--spacing-5);\n border-bottom: 1px solid var(--color-border);\n cursor: pointer;\n transition: background var(--transition-base);\n}\n\n.changelog-list-item:hover {\n background: var(--color-neutral-50);\n}\n\n.changelog-list-item:last-child {\n border-bottom: none;\n}\n\n.changelog-list-item-content {\n flex: 1;\n min-width: 0;\n display: flex;\n flex-direction: column;\n gap: 3px;\n}\n\n.changelog-list-item-meta {\n display: flex;\n align-items: center;\n gap: var(--spacing-2);\n flex-wrap: wrap;\n}\n\n.changelog-list-item-date {\n font-size: var(--font-size-xs);\n color: var(--color-text-tertiary);\n font-weight: var(--font-weight-medium);\n}\n\n.changelog-list-item-labels {\n display: flex;\n flex-wrap: wrap;\n gap: var(--spacing-1);\n}\n\n.changelog-label {\n display: inline-flex;\n align-items: center;\n padding: 1px 8px;\n border-radius: var(--radius-full);\n font-size: var(--font-size-xs);\n font-weight: var(--font-weight-medium);\n line-height: 1.5;\n}\n\n.changelog-list-item-title {\n margin: 0;\n font-size: var(--font-size-base);\n font-weight: var(--font-weight-semibold);\n line-height: var(--line-height-snug);\n color: var(--color-text-primary);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.changelog-list-item-description {\n margin: 0;\n font-size: var(--font-size-sm);\n line-height: var(--line-height-normal);\n color: var(--color-text-secondary);\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n}\n\n.changelog-list-item-image {\n width: 64px;\n height: 64px;\n flex-shrink: 0;\n border-radius: 8px;\n overflow: hidden;\n border: 1px solid var(--color-border);\n}\n\n.changelog-list-item-image img {\n width: 100%;\n height: 100%;\n display: block;\n object-fit: cover;\n}\n\n.changelog-list-item-arrow {\n flex-shrink: 0;\n color: var(--color-text-tertiary);\n transition: all var(--transition-base);\n}\n\n.changelog-list-item:hover .changelog-list-item-arrow {\n color: var(--color-primary);\n transform: translateX(3px);\n}\n\n/* ========================================\n DARK THEME — scoped variable overrides\n ======================================== */\n\n.changelog-theme-dark.changelog-widget .changelog-trigger-btn {\n background: #1a1e24;\n color: #e8e8e8;\n border: 1px solid #232930;\n}\n\n.changelog-theme-dark.changelog-modal-backdrop,\n.changelog-theme-dark.changelog-list-modal-backdrop {\n background: rgba(2, 6, 23, 0.72);\n}\n\n.changelog-theme-dark .changelog-modal-container,\n.changelog-theme-dark .changelog-list-modal-container {\n --color-white: #1a1e24;\n --color-border: #232930;\n --color-neutral-50: #232930;\n --color-neutral-100: #2d343c;\n --color-neutral-300: #2d343c;\n --color-neutral-400: #555555;\n --color-neutral-500: #777777;\n --color-neutral-900: #e8e8e8;\n --color-text-primary: #e8e8e8;\n --color-text-secondary: #999999;\n --color-text-tertiary: #666666;\n}\n\n/* ========================================\n RESPONSIVE\n ======================================== */\n\n@media (max-width: 768px) {\n .changelog-widget {\n bottom: var(--spacing-4);\n right: var(--spacing-4);\n }\n\n .changelog-widget.position-left {\n left: var(--spacing-4);\n }\n\n .changelog-modal {\n padding: var(--spacing-4);\n }\n\n .changelog-modal-container {\n max-width: 100%;\n border-radius: 12px;\n }\n\n .changelog-popup-image {\n padding: var(--spacing-5) var(--spacing-5) 0;\n }\n\n .changelog-popup-body {\n padding: var(--spacing-5) var(--spacing-6) var(--spacing-6);\n }\n\n .changelog-popup-title {\n font-size: var(--font-size-lg);\n }\n\n .changelog-popup-description {\n font-size: var(--font-size-base);\n }\n\n .changelog-popup-btn {\n padding: var(--spacing-3) var(--spacing-7);\n font-size: var(--font-size-base);\n width: 100%;\n }\n\n .changelog-popup-footer {\n padding: 0 var(--spacing-6) var(--spacing-5);\n }\n\n .changelog-list-modal {\n padding: var(--spacing-4);\n }\n\n .changelog-list-modal-container {\n max-width: 100%;\n max-height: 90vh;\n border-radius: 12px;\n }\n\n .changelog-list-item {\n padding: var(--spacing-3) var(--spacing-4);\n }\n\n .changelog-list-item-image {\n width: 56px;\n height: 56px;\n }\n}\n`;\n","export const componentsStyles = `\n.sdk-btn {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: var(--spacing-2);\n border-radius: 8px;\n border: none;\n font-size: var(--font-size-md);\n font-weight: var(--font-weight-medium);\n font-family: inherit;\n cursor: pointer;\n transition: all var(--transition-base);\n outline: none;\n}\n\n.sdk-btn:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n}\n\n.sdk-btn:focus-visible {\n outline: 2px solid var(--color-primary);\n outline-offset: 2px;\n}\n\n.sdk-btn-primary {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: var(--spacing-2);\n background: var(--color-primary);\n color: var(--color-white);\n border: 1px solid var(--color-primary);\n border-radius: 8px;\n font-size: var(--font-size-base);\n font-weight: var(--font-weight-medium);\n font-family: inherit;\n cursor: pointer;\n height: 40px;\n padding: 8px 18px;\n transition: all var(--transition-base);\n}\n\n.sdk-btn-primary:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n}\n\n.sdk-btn-primary:hover:not(:disabled) {\n background: var(--color-primary-hover);\n}\n\n.sdk-btn-primary:active:not(:disabled) {\n background: var(--color-primary-active);\n transform: translateY(1px);\n transition-duration: 100ms;\n}\n\n.sdk-btn-secondary {\n background: transparent;\n color: var(--color-neutral-600);\n border: 1px solid var(--color-border);\n height: 40px;\n padding: 8px 18px;\n}\n\n.sdk-btn-secondary:hover:not(:disabled) {\n background: var(--color-neutral-50);\n border-color: var(--color-neutral-400);\n color: var(--color-neutral-700);\n}\n\n.sdk-btn-secondary:active:not(:disabled) {\n transform: translateY(1px);\n transition-duration: 100ms;\n}\n\n.sdk-btn-ghost {\n background: transparent;\n color: var(--color-neutral-600);\n}\n\n.sdk-btn-ghost:hover:not(:disabled) {\n background: var(--color-neutral-100);\n color: var(--color-neutral-700);\n}\n\n.sdk-btn-ghost:active:not(:disabled) {\n transform: translateY(1px);\n transition-duration: 100ms;\n}\n\n.sdk-btn-sm {\n height: 36px;\n padding: 8px 14px;\n font-size: var(--font-size-base);\n}\n\n.sdk-btn-lg {\n height: 48px;\n padding: 12px 20px;\n font-size: var(--font-size-lg);\n}\n\n.sdk-btn-pill {\n border-radius: var(--radius-full);\n}\n\n.sdk-btn-block {\n width: 100%;\n}\n\n.sdk-btn-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 36px;\n height: 36px;\n border: none;\n background: none;\n border-radius: 8px;\n cursor: pointer;\n color: var(--color-text-secondary);\n transition: all var(--transition-base);\n padding: 0;\n}\n\n.sdk-btn-icon:hover {\n background: rgba(128, 128, 128, 0.12);\n color: var(--color-text-primary);\n}\n\n.sdk-btn-icon:active {\n transform: translateY(1px);\n transition-duration: 100ms;\n}\n\n.sdk-btn-icon:focus-visible {\n outline: 2px solid var(--color-primary);\n outline-offset: 2px;\n}\n\n.sdk-input {\n width: 100%;\n height: 40px;\n border-radius: 8px;\n border: 1px solid var(--color-border);\n padding: 8px 14px;\n font-size: var(--font-size-md);\n font-weight: var(--font-weight-normal);\n line-height: var(--line-height-relaxed);\n color: var(--color-text-primary);\n font-family: inherit;\n outline: none;\n transition: all var(--transition-base);\n background: var(--color-white);\n}\n\n.sdk-input::placeholder {\n color: var(--color-text-tertiary);\n}\n\n.sdk-input:focus {\n border-color: var(--color-primary);\n box-shadow: 0 0 0 3px var(--color-primary-light);\n}\n\n.sdk-input:disabled {\n background: var(--color-neutral-50);\n cursor: not-allowed;\n}\n\n.sdk-textarea {\n width: 100%;\n min-height: 120px;\n resize: vertical;\n border-radius: 8px;\n border: 1px solid var(--color-border);\n padding: 10px 14px;\n font-size: var(--font-size-md);\n font-weight: var(--font-weight-normal);\n line-height: var(--line-height-relaxed);\n color: var(--color-text-primary);\n font-family: inherit;\n outline: none;\n transition: all var(--transition-base);\n background: var(--color-white);\n}\n\n.sdk-textarea::placeholder {\n color: var(--color-text-tertiary);\n}\n\n.sdk-textarea:focus {\n border-color: var(--color-primary);\n box-shadow: 0 0 0 3px var(--color-primary-light);\n}\n\n.sdk-select {\n width: 100%;\n height: 40px;\n border-radius: 8px;\n border: 1px solid var(--color-border);\n padding: 8px 14px;\n font-size: var(--font-size-md);\n color: var(--color-text-primary);\n font-family: inherit;\n outline: none;\n transition: all var(--transition-base);\n background: var(--color-white);\n cursor: pointer;\n}\n\n.sdk-select:focus {\n border-color: var(--color-primary);\n box-shadow: 0 0 0 3px var(--color-primary-light);\n}\n\n.sdk-label {\n display: block;\n font-size: var(--font-size-base);\n font-weight: var(--font-weight-medium);\n line-height: var(--line-height-tight);\n color: var(--color-neutral-700);\n margin-bottom: var(--spacing-2);\n}\n\n.sdk-required {\n color: var(--color-error, #D13212);\n margin-left: 1px;\n}\n\n.sdk-form-group {\n display: flex;\n flex-direction: column;\n margin-bottom: var(--spacing-5);\n}\n\n.sdk-form-group:last-child {\n margin-bottom: 0;\n}\n\n.sdk-card {\n background: var(--color-white);\n border-radius: 10px;\n box-shadow: var(--shadow-base);\n overflow: hidden;\n}\n\n.sdk-card-header {\n padding: var(--spacing-6);\n border-bottom: 1px solid var(--color-border);\n}\n\n.sdk-card-body {\n padding: var(--spacing-6);\n}\n\n.sdk-card-footer {\n padding: var(--spacing-6);\n border-top: 1px solid var(--color-border);\n}\n\n.sdk-modal-backdrop {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(0, 0, 0, 0.5);\n opacity: 0;\n transition: opacity var(--transition-slow);\n pointer-events: none;\n z-index: var(--z-modal-backdrop);\n}\n\n.sdk-modal-backdrop.show {\n opacity: 1;\n pointer-events: auto;\n}\n\n.sdk-modal {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n z-index: var(--z-modal);\n display: flex;\n align-items: center;\n justify-content: center;\n padding: var(--spacing-5);\n pointer-events: none;\n}\n\n.sdk-modal.open {\n pointer-events: auto;\n}\n\n.sdk-modal-container {\n position: relative;\n width: 100%;\n max-width: 580px;\n max-height: 90vh;\n background: var(--color-white);\n border-radius: 10px;\n overflow: hidden;\n box-shadow: var(--shadow-2xl);\n transform: scale(0.95) translateY(20px);\n opacity: 0;\n transition: all var(--transition-slow);\n}\n\n.sdk-modal.open .sdk-modal-container {\n transform: scale(1) translateY(0);\n opacity: 1;\n}\n\n.sdk-modal-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: var(--spacing-6);\n border-bottom: 1px solid var(--color-border);\n}\n\n.sdk-modal-title {\n margin: 0;\n font-size: var(--font-size-xl);\n font-weight: var(--font-weight-semibold);\n color: var(--color-text-primary);\n}\n\n.sdk-modal-body {\n overflow-y: auto;\n max-height: calc(90vh - 120px);\n}\n\n.sdk-close-btn {\n background: none;\n border: none;\n padding: 0;\n cursor: pointer;\n color: var(--color-neutral-500);\n display: flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n border-radius: 8px;\n transition: all var(--transition-base);\n line-height: 1;\n flex-shrink: 0;\n}\n\n.sdk-close-btn:hover {\n background: rgba(128, 128, 128, 0.12);\n color: var(--color-text-primary);\n}\n\n.sdk-close-btn:active {\n transform: translateY(1px);\n transition-duration: 100ms;\n}\n\n.sdk-close-btn svg {\n width: 18px;\n height: 18px;\n}\n\n.sdk-avatar {\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--color-primary);\n color: var(--color-white);\n font-weight: var(--font-weight-semibold);\n border-radius: var(--radius-full);\n overflow: hidden;\n flex-shrink: 0;\n}\n\n.sdk-avatar-sm {\n width: 24px;\n height: 24px;\n font-size: var(--font-size-xs);\n}\n\n.sdk-avatar-md {\n width: 32px;\n height: 32px;\n font-size: var(--font-size-sm);\n}\n\n.sdk-avatar-lg {\n width: 40px;\n height: 40px;\n font-size: var(--font-size-base);\n}\n\n.sdk-avatar img {\n width: 100%;\n height: 100%;\n object-fit: cover;\n}\n\n.sdk-badge {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n padding: 2px var(--spacing-2);\n border-radius: var(--radius-full);\n font-size: var(--font-size-xs);\n font-weight: var(--font-weight-semibold);\n line-height: 1;\n}\n\n.sdk-badge-primary {\n background: var(--color-primary-light);\n color: var(--color-primary);\n}\n\n.sdk-badge-success {\n background: var(--color-success-light);\n color: var(--color-success-dark);\n}\n\n.sdk-badge-error {\n background: var(--color-error-light);\n color: var(--color-error-dark);\n}\n\n.sdk-badge-dot {\n width: 8px;\n height: 8px;\n border-radius: var(--radius-full);\n position: absolute;\n top: -2px;\n right: -2px;\n}\n\n.sdk-badge-dot.primary {\n background: var(--color-primary);\n}\n\n.sdk-badge-dot.error {\n background: var(--color-error);\n border: 2px solid var(--color-white);\n}\n\n.sdk-notification {\n position: fixed;\n top: var(--spacing-6);\n right: var(--spacing-6);\n z-index: var(--z-notification);\n background: var(--color-white);\n border-radius: 10px;\n box-shadow: var(--shadow-lg);\n min-width: 320px;\n animation: slideInRight 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n}\n\n.sdk-notification-content {\n display: flex;\n align-items: center;\n padding: var(--spacing-4) var(--spacing-5);\n gap: var(--spacing-3);\n}\n\n.sdk-notification-success {\n border: 1px solid var(--color-success-light);\n}\n\n.sdk-notification-success .sdk-notification-icon {\n width: 20px;\n height: 20px;\n border-radius: var(--radius-full);\n background: var(--color-success);\n color: var(--color-white);\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: var(--font-size-sm);\n font-weight: var(--font-weight-semibold);\n flex-shrink: 0;\n}\n\n.sdk-notification-text {\n color: var(--color-success-dark);\n font-weight: var(--font-weight-medium);\n font-size: var(--font-size-base);\n flex: 1;\n}\n\n.sdk-notification .sdk-close-btn {\n flex-shrink: 0;\n}\n\n.sdk-spinner {\n width: 32px;\n height: 32px;\n border: 3px solid var(--color-neutral-200);\n border-top-color: var(--color-primary);\n border-radius: var(--radius-full);\n animation: spin 0.8s linear infinite;\n}\n\n.sdk-spinner-sm {\n width: 20px;\n height: 20px;\n border-width: 2px;\n}\n\n@keyframes spin {\n to {\n transform: rotate(360deg);\n }\n}\n\n@keyframes slideInRight {\n from {\n transform: translateX(400px);\n opacity: 0;\n }\n to {\n transform: translateX(0);\n opacity: 1;\n }\n}\n\n@keyframes fadeIn {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n\n@media (max-width: 768px) {\n .sdk-modal {\n padding: var(--spacing-4);\n }\n \n .sdk-modal-container {\n max-width: 100%;\n border-radius: 10px;\n }\n \n .sdk-notification {\n top: var(--spacing-4);\n right: var(--spacing-4);\n left: var(--spacing-4);\n min-width: auto;\n }\n}\n`;\n","export const designTokens = `\n:root {\n --color-primary: #155EEF;\n --color-primary-hover: #1249CA;\n --color-primary-active: #0D3A9F;\n --color-primary-light: rgba(21, 94, 239, 0.1);\n --color-primary-border: rgba(21, 94, 239, 0.3);\n \n --color-success: #10B981;\n --color-success-hover: #059669;\n --color-success-light: #D1FAE5;\n --color-success-dark: #065F46;\n \n --color-error: #EF4444;\n --color-error-hover: #DC2626;\n --color-error-light: #FEE2E2;\n --color-error-dark: #991B1B;\n --color-error-border: #FECACA;\n \n --color-warning: #F59E0B;\n --color-warning-light: #FEF3C7;\n \n --color-neutral-50: #F9FAFB;\n --color-neutral-100: #F3F4F6;\n --color-neutral-200: #E5E7EB;\n --color-neutral-300: #D1D5DB;\n --color-neutral-400: #9CA3AF;\n --color-neutral-500: #6B7280;\n --color-neutral-600: #4B5563;\n --color-neutral-700: #374151;\n --color-neutral-800: #1F2937;\n --color-neutral-900: #111827;\n \n --color-white: #FFFFFF;\n --color-black: #000000;\n\n --color-background: #FFFFFF;\n --color-surface: #F9FAFB;\n --color-border: #E5E7EB;\n --color-text-primary: #111827;\n --color-text-secondary: #4B5563;\n --color-text-tertiary: #6B7280;\n\n /* Web Chat semantic tokens (light defaults) */\n --msg-bg: #FFFFFF;\n --msg-bg-surface: #F3F4F6;\n --msg-bg-elevated: #FFFFFF;\n --msg-bg-hover: #F9FAFB;\n --msg-bg-input: rgba(255, 255, 255, 0.7);\n --msg-bg-bubble-own: #F3F4F6;\n --msg-bg-bubble-received: #155EEF;\n --msg-bg-header-gradient: linear-gradient(180deg, #e0e7ff 0%, #f0f4ff 35%, #FFFFFF 65%);\n --msg-bg-header-glow1: radial-gradient(circle, rgba(21, 94, 239, 0.08) 0%, transparent 70%);\n --msg-bg-header-glow2: radial-gradient(circle, rgba(139, 92, 246, 0.05) 0%, transparent 70%);\n --msg-text: #111827;\n --msg-text-secondary: #4B5563;\n --msg-text-tertiary: #6B7280;\n --msg-text-muted: #9CA3AF;\n --msg-border: #E5E7EB;\n --msg-border-bubble: transparent;\n --msg-shadow-card: rgba(9, 30, 66, 0.25) 0px 1px 1px, rgba(9, 30, 66, 0.13) 0px 0px 1px 1px;\n --msg-shadow-card-hover: rgba(9, 30, 66, 0.3) 0px 2px 2px, rgba(9, 30, 66, 0.18) 0px 0px 1px 1px;\n \n --spacing-1: 4px;\n --spacing-2: 8px;\n --spacing-3: 12px;\n --spacing-4: 16px;\n --spacing-5: 20px;\n --spacing-6: 24px;\n --spacing-7: 28px;\n --spacing-8: 32px;\n --spacing-10: 40px;\n --spacing-12: 48px;\n \n --font-size-xs: 0.75rem;\n --font-size-sm: 0.8125rem;\n --font-size-base: 0.875rem;\n --font-size-md: 0.9375rem;\n --font-size-lg: 1rem;\n --font-size-xl: 1.125rem;\n --font-size-2xl: 1.25rem;\n --font-size-3xl: 1.5rem;\n \n --font-weight-normal: 450;\n --font-weight-medium: 500;\n --font-weight-semibold: 600;\n --font-weight-bold: 700;\n \n --line-height-tight: 1.25;\n --line-height-snug: 1.3;\n --line-height-normal: 1.4;\n --line-height-relaxed: 1.5;\n --line-height-loose: 1.6;\n \n --radius-sm: 6px;\n --radius-md: 8px;\n --radius-lg: 10px;\n --radius-xl: 12px;\n --radius-2xl: 16px;\n --radius-3xl: 20px;\n --radius-4xl: 24px;\n --radius-full: 9999px;\n \n --shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.05);\n --shadow-base: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06);\n --shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);\n --shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);\n --shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);\n --shadow-2xl: 0 25px 50px -12px rgba(0, 0, 0, 0.25);\n \n --transition-fast: 150ms cubic-bezier(0.4, 0, 0.2, 1);\n --transition-base: 200ms cubic-bezier(0.4, 0, 0.2, 1);\n --transition-slow: 300ms cubic-bezier(0.4, 0, 0.2, 1);\n \n --z-dropdown: 1000;\n --z-sticky: 1020;\n --z-fixed: 1030;\n --z-modal-backdrop: 999998;\n --z-modal: 999999;\n --z-popover: 1000000;\n --z-tooltip: 1000001;\n --z-notification: 1000002;\n}\n`;\n","export const feedbackStyles = `\n.feedback-widget-button {\n position: fixed;\n z-index: var(--z-notification);\n}\n\n.feedback-widget-button.position-right {\n bottom: var(--spacing-5);\n right: var(--spacing-5);\n}\n\n.feedback-widget-button.position-left {\n bottom: var(--spacing-5);\n left: var(--spacing-5);\n}\n\n.feedback-trigger-btn {\n position: relative;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: var(--spacing-2);\n height: 48px;\n border-radius: var(--radius-full);\n border: none;\n padding: var(--spacing-3) var(--spacing-5);\n font-size: var(--font-size-base);\n font-weight: var(--font-weight-medium);\n font-family: inherit;\n cursor: pointer;\n transition: all var(--transition-slow);\n color: #ffffff;\n background: var(--color-primary);\n box-shadow: var(--shadow-md);\n width: fit-content;\n touch-action: manipulation;\n -webkit-tap-highlight-color: transparent;\n}\n\n.feedback-trigger-btn:hover:not(:disabled) {\n box-shadow: var(--shadow-lg);\n}\n\n.feedback-trigger-btn:active:not(:disabled) {\n transform: translateY(1px);\n box-shadow: var(--shadow-md);\n transition-duration: 100ms;\n}\n\n.feedback-trigger-btn:disabled {\n opacity: 0.7;\n cursor: not-allowed;\n}\n\n.feedback-trigger-btn:focus-visible {\n outline: 2px solid var(--color-primary);\n outline-offset: 2px;\n}\n\n.feedback-icon {\n flex-shrink: 0;\n}\n\n.feedback-minimize-icon,\n.feedback-expand-icon {\n position: absolute;\n top: -6px;\n right: -6px;\n width: 24px;\n height: 24px;\n padding: var(--spacing-1);\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--color-white);\n border-radius: var(--radius-full);\n opacity: 0;\n transition: opacity var(--transition-base);\n box-shadow: var(--shadow-sm);\n cursor: pointer;\n pointer-events: none;\n}\n\n.feedback-minimize-icon svg,\n.feedback-expand-icon svg {\n width: 16px;\n height: 16px;\n display: block;\n fill: var(--color-primary);\n}\n\n.feedback-widget-button:not(.minimized) .feedback-trigger-btn:hover .feedback-minimize-icon {\n opacity: 1;\n pointer-events: auto;\n}\n\n.feedback-widget-button.minimized .feedback-trigger-btn {\n padding: var(--spacing-3);\n width: 48px;\n height: 48px;\n justify-content: center;\n}\n\n.feedback-widget-button.minimized .feedback-text {\n display: none;\n}\n\n.feedback-widget-button.minimized .feedback-minimize-icon {\n display: none;\n}\n\n.feedback-widget-button.minimized .feedback-trigger-btn:hover .feedback-expand-icon {\n opacity: 1;\n pointer-events: auto;\n}\n\n.feedback-panel,\n.feedback-modal {\n box-sizing: border-box;\n}\n\n.feedback-panel *,\n.feedback-panel *::before,\n.feedback-panel *::after,\n.feedback-modal *,\n.feedback-modal *::before,\n.feedback-modal *::after {\n box-sizing: border-box;\n}\n\n.feedback-panel {\n position: fixed;\n bottom: 80px;\n right: var(--spacing-6);\n width: 420px;\n max-height: 500px;\n z-index: var(--z-popover);\n border-radius: 12px;\n overflow: hidden;\n opacity: 0;\n transform: translateX(calc(100% + 24px));\n transition: transform 0.35s cubic-bezier(0.4, 0, 0.2, 1), opacity 0.2s ease;\n font-family: inherit;\n box-shadow: var(--shadow-lg);\n}\n\n.feedback-panel.open {\n transform: translateX(0);\n opacity: 1;\n}\n\n.feedback-panel.panel-from-left {\n right: auto;\n left: var(--spacing-6);\n transform: translateX(calc(-100% - 24px));\n}\n\n.feedback-panel.panel-from-left.open {\n transform: translateX(0);\n}\n\n.feedback-modal {\n position: fixed;\n top: 50%;\n left: 50%;\n border-radius: 12px;\n overflow: hidden;\n opacity: 0;\n transform: translate(-50%, -50%) scale(0.96);\n width: min(460px, calc(100vw - (var(--spacing-5) * 2)));\n max-height: min(560px, calc(100vh - (var(--spacing-6) * 2)));\n z-index: var(--z-popover);\n transition: transform var(--transition-slow), opacity var(--transition-slow);\n font-family: inherit;\n box-shadow: var(--shadow-xl);\n}\n\n.feedback-modal.open {\n transform: translate(-50%, -50%) scale(1);\n opacity: 1;\n}\n\n.feedback-panel-content {\n background: var(--feedback-panel-bg, var(--color-white));\n color: var(--feedback-panel-text, var(--color-text-primary));\n height: 100%;\n display: flex;\n flex-direction: column;\n}\n\n.feedback-panel-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: var(--spacing-4) var(--spacing-6);\n border-bottom: 1px solid var(--color-border);\n flex-shrink: 0;\n}\n\n.feedback-panel-header h3 {\n margin: 0;\n font-size: var(--font-size-xl);\n font-weight: var(--font-weight-semibold);\n color: var(--feedback-panel-text, var(--color-text-primary));\n}\n\n.feedback-panel-body {\n flex: 1;\n overflow-y: auto;\n overflow-x: hidden;\n padding: var(--spacing-6);\n}\n\n.feedback-form {\n display: flex;\n flex-direction: column;\n height: 100%;\n}\n\n.feedback-form-actions {\n display: flex;\n flex-direction: column;\n gap: var(--spacing-3);\n margin-top: auto;\n padding-top: var(--spacing-6);\n}\n\n.feedback-error {\n color: #ffffff;\n font-size: var(--font-size-base);\n font-weight: var(--font-weight-normal);\n margin-top: var(--spacing-2);\n padding: var(--spacing-3);\n background: #D13212;\n border-radius: var(--radius-md);\n display: none;\n}\n\n.feedback-error.show {\n display: block;\n}\n\n/* ========================================\n DARK THEME — scoped variable overrides\n ======================================== */\n\n.feedback-panel.theme-dark,\n.feedback-modal.theme-dark {\n /* Aligned with web chat dark theme */\n --color-white: #0f1317;\n --color-background: #0f1317;\n --color-surface: #1a1e24;\n --color-border: #232930;\n --color-neutral-50: #1a1e24;\n --color-neutral-100: #1a1e24;\n --color-neutral-200: #232930;\n --color-neutral-300: #2d343c;\n --color-neutral-400: #555555;\n --color-neutral-500: #777777;\n --color-neutral-900: #e8e8e8;\n --color-text-primary: #e8e8e8;\n --color-text-secondary: #999999;\n --color-text-tertiary: #666666;\n --feedback-panel-bg: #1a1e24;\n --feedback-panel-text: #e8e8e8;\n}\n\n@media (max-width: 768px) {\n .feedback-widget-button {\n bottom: var(--spacing-4);\n right: var(--spacing-4);\n }\n\n .feedback-widget-button.position-left {\n left: var(--spacing-4);\n }\n\n .feedback-minimize-icon,\n .feedback-expand-icon {\n top: -4px;\n right: -4px;\n width: 20px;\n height: 20px;\n }\n\n .feedback-minimize-icon svg,\n .feedback-expand-icon svg {\n width: 14px;\n height: 14px;\n }\n\n .feedback-panel {\n width: min(420px, calc(100vw - (var(--spacing-4) * 2)));\n max-height: min(500px, calc(100vh - 88px));\n top: auto;\n bottom: 72px;\n right: var(--spacing-4);\n left: auto;\n transform: translateX(calc(100% + 24px));\n border-radius: var(--radius-2xl);\n }\n\n .feedback-panel.panel-from-left {\n right: auto;\n left: var(--spacing-4);\n transform: translateX(calc(-100% - 24px));\n }\n\n .feedback-panel.open {\n transform: translateX(0);\n }\n\n .feedback-panel-header {\n padding: var(--spacing-4) var(--spacing-6);\n }\n\n .feedback-panel-body {\n padding: var(--spacing-6);\n }\n\n .feedback-form-group textarea {\n min-height: 120px;\n }\n}\n`;\n","export const liveChatComponentsStyles = `\n\n/* ========================================\n MESSAGES\n ======================================== */\n\n.liveChat-message {\n display: flex;\n gap: var(--spacing-2);\n max-width: 75%;\n}\n\n.liveChat-message-system {\n align-self: center;\n display: flex;\n align-items: center;\n gap: var(--spacing-2);\n padding: var(--spacing-2) 0;\n width: 100%;\n}\n\n.liveChat-message-system::before,\n.liveChat-message-system::after {\n content: '';\n flex: 1;\n height: 1px;\n background: var(--msg-border);\n}\n\n.liveChat-message-system-text {\n font-size: 0.875rem;\n font-weight: 500;\n color: var(--msg-text-secondary);\n white-space: nowrap;\n padding: 0 var(--spacing-2);\n}\n\n/* Rich join/leave system event */\n.liveChat-message-system-event {\n align-self: center;\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 4px;\n padding: var(--spacing-3) 0;\n width: 100%;\n text-align: center;\n}\n\n.liveChat-message-system-event-avatar {\n width: 3rem;\n height: 3rem;\n border-radius: var(--radius-full);\n border: 1px solid var(--msg-border);\n background: var(--msg-bg);\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 1.125rem;\n font-weight: var(--font-weight-semibold);\n color: var(--msg-text);\n overflow: hidden;\n flex-shrink: 0;\n margin-bottom: 4px;\n}\n\n.liveChat-message-system-event-avatar img {\n width: 60%;\n height: 60%;\n object-fit: contain;\n}\n\n.liveChat-message-system-event-name {\n font-size: 0.875rem;\n font-weight: var(--font-weight-semibold);\n color: var(--msg-text);\n line-height: 1.3;\n}\n\n.liveChat-message-system-event-action {\n font-size: 0.875rem;\n font-weight: 500;\n color: var(--msg-text-secondary);\n margin-top: -2px;\n}\n\n.liveChat-message-system-event-time {\n font-size: 0.875rem;\n font-weight: 500;\n color: var(--msg-text-tertiary);\n}\n\n.liveChat-message-own {\n align-self: flex-end;\n flex-direction: column;\n align-items: flex-end;\n}\n\n.liveChat-message-received {\n align-self: flex-start;\n flex-direction: column;\n}\n\n.liveChat-message-row {\n display: flex;\n align-items: flex-end;\n gap: var(--spacing-2);\n}\n\n.liveChat-message-wrapper {\n display: flex;\n flex-direction: column;\n}\n\n.liveChat-message-avatar {\n display: none;\n}\n\n.liveChat-message-sender {\n display: none;\n}\n\n.liveChat-message-bubble {\n padding: 7px 13px;\n border-radius: 1.125rem;\n word-wrap: break-word;\n max-width: 100%;\n}\n\n.liveChat-message-own .liveChat-message-bubble {\n background: var(--msg-bg-bubble-own);\n color: #111827;\n border-bottom-right-radius: 0.25rem;\n}\n\n.liveChat-message-received .liveChat-message-bubble {\n background: var(--msg-bg-bubble-received);\n color: #ffffff;\n border-bottom-left-radius: 0.25rem;\n}\n\n.liveChat-message-content {\n font-size: 0.875rem;\n font-weight: 500;\n line-height: var(--line-height-relaxed);\n}\n\n.liveChat-message-content p {\n margin: 0 0 0.5rem;\n}\n\n.liveChat-message-content p:last-child {\n margin-bottom: 0;\n}\n\n.liveChat-message-time {\n font-size: var(--font-size-xs);\n color: var(--msg-text-tertiary);\n margin-top: 0.25rem;\n padding: 0 var(--spacing-1);\n}\n\n.liveChat-message-meta {\n display: flex;\n align-items: center;\n gap: 0.375rem;\n font-size: var(--font-size-xs);\n color: var(--msg-text-tertiary);\n margin-top: 0.25rem;\n padding: 0 var(--spacing-1);\n}\n\n.liveChat-message-meta-own {\n justify-content: flex-end;\n}\n\n.liveChat-message-sent-status {\n color: var(--msg-text-muted);\n}\n\n.liveChat-message-optimistic .liveChat-message-bubble {\n opacity: 0.7;\n}\n\n.liveChat-message-image {\n max-width: 220px;\n max-height: 200px;\n width: auto;\n height: auto;\n border-radius: var(--radius-lg);\n margin-top: var(--spacing-1);\n cursor: pointer;\n object-fit: contain;\n display: block;\n}\n\n.liveChat-message-file {\n display: inline-flex;\n align-items: center;\n gap: var(--spacing-2);\n margin-top: var(--spacing-1);\n padding: var(--spacing-2) var(--spacing-3);\n border-radius: var(--radius-lg);\n background: var(--color-neutral-100);\n color: var(--color-primary);\n text-decoration: none;\n font-size: var(--font-size-sm);\n transition: background var(--transition-base);\n max-width: 100%;\n word-break: break-all;\n cursor: pointer;\n}\n\n.liveChat-message-file:hover {\n background: var(--color-neutral-200);\n}\n\n.liveChat-file-download-icon {\n margin-left: auto;\n opacity: 0.5;\n flex-shrink: 0;\n}\n\n.liveChat-message-file:hover .liveChat-file-download-icon {\n opacity: 1;\n}\n\n.liveChat-closed-banner {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: var(--spacing-2);\n padding: var(--spacing-3) var(--spacing-4);\n margin: var(--spacing-4);\n background: var(--color-success-light);\n color: var(--color-success-dark);\n border-radius: var(--radius-xl);\n font-size: var(--font-size-sm);\n font-weight: var(--font-weight-medium);\n}\n\n/* ========================================\n SCROLL PILL & CONNECTION BANNER\n ======================================== */\n\n.liveChat-scroll-pill {\n position: absolute;\n bottom: 80px;\n left: 50%;\n transform: translateX(-50%);\n display: flex;\n align-items: center;\n gap: var(--spacing-1);\n padding: 6px 14px;\n background: var(--color-primary);\n color: #ffffff;\n font-size: var(--font-size-xs);\n font-weight: 500;\n border-radius: var(--radius-full);\n cursor: pointer;\n box-shadow: var(--shadow-lg);\n z-index: 10;\n white-space: nowrap;\n}\n\n.liveChat-connection-banner {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: var(--spacing-2);\n padding: 6px var(--spacing-4);\n background: #fef3c7;\n color: #92400e;\n font-size: var(--font-size-xs);\n font-weight: 500;\n flex-shrink: 0;\n}\n\n.liveChat-widget.theme-dark .liveChat-connection-banner {\n background: rgba(245, 158, 11, 0.15);\n color: #fbbf24;\n}\n\n/* ========================================\n CHAT HEADER\n ======================================== */\n\n.liveChat-chat-header {\n display: flex;\n align-items: center;\n gap: var(--spacing-2);\n padding: var(--spacing-3) var(--spacing-4);\n border-bottom: 1px solid var(--msg-border);\n}\n\n.liveChat-chat-header-avatar {\n width: 2.25rem;\n height: 2.25rem;\n border-radius: var(--radius-lg);\n background: var(--msg-bg-surface);\n border: 1px solid var(--msg-border);\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n overflow: hidden;\n padding: 4px;\n}\n\n.liveChat-chat-header-avatar img {\n width: 100%;\n height: 100%;\n object-fit: contain;\n}\n\n.liveChat-chat-header-avatar svg {\n width: 1.25rem;\n height: 1.25rem;\n color: var(--msg-text-secondary);\n}\n\n.liveChat-chat-header-info {\n flex: 1;\n display: flex;\n flex-direction: column;\n gap: 0;\n min-width: 0;\n}\n\n.liveChat-chat-title {\n font-size: var(--font-size-base);\n font-weight: var(--font-weight-semibold);\n color: var(--msg-text);\n line-height: 1.4;\n}\n\n.liveChat-chat-subtitle {\n font-size: var(--font-size-sm);\n color: var(--msg-text-secondary);\n line-height: 1.4;\n}\n\n.liveChat-chat-header-actions {\n display: flex;\n align-items: center;\n gap: var(--spacing-1);\n flex-shrink: 0;\n}\n\n.liveChat-chat-messages {\n flex: 1;\n overflow-y: auto;\n padding: var(--spacing-5) var(--spacing-4);\n display: flex;\n flex-direction: column;\n gap: var(--spacing-4);\n}\n\n.liveChat-chat-empty {\n flex: 1;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n text-align: center;\n padding: var(--spacing-10);\n}\n\n.liveChat-chat-empty-avatars {\n margin-bottom: var(--spacing-4);\n}\n\n.liveChat-chat-empty-logo {\n width: 48px;\n height: 48px;\n border-radius: var(--radius-xl);\n overflow: hidden;\n margin-bottom: var(--spacing-4);\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--msg-bg-surface);\n}\n\n.liveChat-chat-empty-logo img {\n width: 100%;\n height: 100%;\n object-fit: contain;\n}\n\n.liveChat-chat-empty h3 {\n margin: 0 0 var(--spacing-2);\n font-size: var(--font-size-base);\n font-weight: var(--font-weight-semibold);\n color: var(--msg-text);\n}\n\n\n/* ========================================\n COMPOSE AREA\n ======================================== */\n\n/* ========================================\n EMOJI PICKER\n ======================================== */\n\n.liveChat-emoji-picker-container {\n padding: 0 var(--spacing-3) var(--spacing-2);\n}\n\n.liveChat-emoji-picker-container emoji-picker {\n width: 100%;\n height: 320px;\n border-radius: var(--radius-xl);\n border: 1px solid var(--msg-border);\n box-shadow: var(--shadow-lg);\n\n --background: var(--msg-bg);\n --border-color: var(--msg-border);\n --border-radius: 12px;\n --category-font-color: var(--msg-text-secondary);\n --category-font-size: 0.7rem;\n --emoji-size: 1.35rem;\n --emoji-padding: 0.3rem;\n --input-border-color: var(--msg-border);\n --input-border-radius: 8px;\n --input-font-color: var(--msg-text);\n --input-font-size: 0.8rem;\n --input-placeholder-color: var(--msg-text-tertiary);\n --input-padding: 0.375rem 0.625rem;\n --outline-color: var(--color-primary);\n --num-columns: 8;\n --indicator-color: var(--color-primary);\n --hover-background: var(--msg-bg-hover);\n}\n\n.liveChat-widget.theme-dark .liveChat-emoji-picker-container emoji-picker {\n --background: var(--msg-bg);\n --border-color: var(--msg-border);\n --category-font-color: var(--msg-text-secondary);\n --input-font-color: var(--msg-text);\n --input-placeholder-color: var(--msg-text-tertiary);\n --hover-background: var(--msg-bg-hover);\n}\n\n.liveChat-chat-compose {\n display: flex;\n flex-direction: column;\n padding: var(--spacing-3) var(--spacing-4);\n background: var(--msg-bg);\n margin: 0 var(--spacing-3) var(--spacing-3);\n border: 1px solid var(--msg-border);\n border-radius: var(--radius-xl);\n}\n\n.liveChat-compose-input-wrapper {\n width: 100%;\n}\n\n.liveChat-compose-input {\n width: 100%;\n background: transparent;\n border: none;\n outline: none;\n color: var(--msg-text);\n font-size: var(--font-size-base);\n line-height: var(--line-height-relaxed);\n resize: none;\n max-height: 120px;\n font-family: inherit;\n padding: var(--spacing-1) 0;\n}\n\n.liveChat-compose-input::placeholder {\n color: var(--msg-text-tertiary);\n}\n\n.liveChat-compose-input:focus {\n outline: none;\n}\n\n.liveChat-chat-compose:focus-within {\n border-color: var(--color-primary-border);\n box-shadow: 0 0 0 3px var(--color-primary-light);\n}\n\n.liveChat-compose-bottom {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-top: var(--spacing-2);\n}\n\n.liveChat-compose-actions {\n display: flex;\n align-items: center;\n gap: var(--spacing-1);\n}\n\n.liveChat-compose-send {\n width: 2.25rem;\n height: 2.25rem;\n background: transparent;\n border: 1px solid var(--msg-border);\n border-radius: var(--radius-full);\n color: var(--msg-text-secondary);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: all var(--transition-base);\n flex-shrink: 0;\n}\n\n.liveChat-compose-send:hover:not(:disabled) {\n background: var(--color-primary);\n border-color: var(--color-primary);\n color: var(--msg-bg);\n}\n\n.liveChat-compose-send:active:not(:disabled) {\n transform: translateY(1px);\n transition-duration: 100ms;\n}\n\n.liveChat-compose-send:disabled {\n color: var(--color-neutral-300);\n border-color: var(--color-neutral-200);\n cursor: not-allowed;\n}\n\n.liveChat-compose-send svg {\n color: inherit;\n}\n\n.liveChat-compose-file-input {\n display: none;\n}\n\n.liveChat-compose-attach {\n width: 2rem;\n height: 2rem;\n flex-shrink: 0;\n color: var(--msg-text-secondary);\n}\n\n.liveChat-compose-attach:hover {\n color: var(--msg-text);\n}\n\n.liveChat-compose-attach svg {\n width: 1.25rem;\n height: 1.25rem;\n}\n\n/* ========================================\n TYPING INDICATOR\n ======================================== */\n\n.liveChat-typing-indicator {\n display: none;\n align-items: center;\n gap: var(--spacing-2);\n padding: var(--spacing-2) var(--spacing-3);\n margin: var(--spacing-1) 0;\n}\n\n.liveChat-typing-dots {\n display: flex;\n align-items: center;\n gap: 4px;\n background: var(--color-neutral-100);\n padding: var(--spacing-2) var(--spacing-3);\n border-radius: var(--radius-2xl);\n}\n\n.liveChat-typing-dots span {\n width: 6px;\n height: 6px;\n background: var(--color-neutral-400);\n border-radius: var(--radius-full);\n animation: liveChat-typing-bounce 1.4s infinite ease-in-out;\n}\n\n.liveChat-typing-dots span:nth-child(1) { animation-delay: -0.32s; }\n.liveChat-typing-dots span:nth-child(2) { animation-delay: -0.16s; }\n.liveChat-typing-dots span:nth-child(3) { animation-delay: 0s; }\n\n.liveChat-typing-text {\n font-size: var(--font-size-xs);\n color: var(--msg-text-tertiary);\n}\n\n/* ========================================\n NAVIGATION TABS\n ======================================== */\n\n.liveChat-panel-nav {\n border-top: 1px solid var(--msg-border);\n background: var(--msg-bg);\n}\n\n.liveChat-nav-tabs {\n display: flex;\n padding: var(--spacing-1) var(--spacing-2) 0;\n gap: var(--spacing-1);\n}\n\n.liveChat-nav-footer {\n padding: 2px var(--spacing-2) var(--spacing-2);\n text-align: center;\n}\n\n.liveChat-powered-by {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n font-size: 10px;\n color: var(--msg-text-tertiary);\n text-decoration: none;\n transition: color var(--transition-base);\n}\n\n.liveChat-powered-by:hover {\n color: var(--msg-text-secondary);\n}\n\n.liveChat-powered-by svg {\n width: 12px;\n height: 14px;\n}\n\n.liveChat-powered-by strong {\n font-weight: var(--font-weight-semibold);\n}\n\n.liveChat-nav-tab {\n flex: 1;\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 2px;\n padding: var(--spacing-1) var(--spacing-1);\n background: none;\n border: none;\n cursor: pointer;\n border-radius: 8px;\n transition: all var(--transition-base);\n position: relative;\n}\n\n.liveChat-nav-tab:hover {\n background: transparent;\n}\n\n.liveChat-nav-tab:active {\n transform: translateY(1px);\n transition-duration: 100ms;\n}\n\n.liveChat-nav-tab:hover .liveChat-nav-icon,\n.liveChat-nav-tab:hover .liveChat-nav-label {\n color: var(--msg-text);\n}\n\n.liveChat-nav-icon {\n color: var(--msg-text-secondary);\n transition: color var(--transition-base);\n display: flex;\n align-items: center;\n justify-content: center;\n width: 26px;\n height: 26px;\n}\n\n.liveChat-nav-icon svg {\n width: 26px;\n height: 26px;\n display: block;\n}\n\n.liveChat-nav-label {\n font-size: var(--font-size-sm);\n font-weight: var(--font-weight-medium);\n color: var(--msg-text-secondary);\n transition: color var(--transition-base);\n}\n\n.liveChat-nav-tab.active .liveChat-nav-icon,\n.liveChat-nav-tab.active .liveChat-nav-label {\n color: var(--color-primary);\n}\n\n.liveChat-nav-badge {\n position: absolute;\n top: var(--spacing-1);\n right: calc(50% - 16px);\n min-width: 16px;\n height: 16px;\n background: var(--color-error);\n color: var(--msg-bg);\n font-size: 10px;\n font-weight: var(--font-weight-semibold);\n border-radius: var(--radius-full);\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 0 var(--spacing-1);\n}\n\n/* ========================================\n PRECHAT\n ======================================== */\n\n.liveChat-prechat-view {\n position: relative;\n}\n\n.liveChat-prechat-overlay {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(0, 0, 0, 0.45);\n display: flex;\n align-items: center;\n justify-content: center;\n padding: var(--spacing-5);\n z-index: var(--z-popover);\n backdrop-filter: blur(2px);\n}\n\n.liveChat-prechat-card {\n background: var(--msg-bg);\n border-radius: var(--radius-xl);\n padding: var(--spacing-6) var(--spacing-6) var(--spacing-5);\n width: 100%;\n max-width: 320px;\n box-shadow: var(--shadow-xl);\n border: 1px solid var(--msg-border);\n text-align: center;\n}\n\n.liveChat-prechat-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 60px;\n height: 60px;\n border-radius: var(--radius-full);\n background: var(--color-primary-light);\n color: var(--color-primary);\n margin: 0 auto var(--spacing-4);\n}\n\n.liveChat-prechat-title {\n margin: 0 0 var(--spacing-2);\n font-size: var(--font-size-base);\n font-weight: var(--font-weight-semibold);\n color: var(--msg-text);\n}\n\n.liveChat-prechat-subtitle {\n margin: 0 0 var(--spacing-5);\n font-size: var(--font-size-sm);\n color: var(--msg-text-secondary);\n line-height: var(--line-height-relaxed);\n}\n\n.liveChat-prechat-form {\n display: flex;\n flex-direction: column;\n gap: var(--spacing-2);\n}\n\n.liveChat-prechat-field {\n display: flex;\n flex-direction: column;\n gap: var(--spacing-1);\n}\n\n.liveChat-prechat-input {\n width: 100%;\n padding: var(--spacing-2) var(--spacing-3);\n border: 1px solid var(--msg-border);\n border-radius: var(--radius-md);\n font-size: var(--font-size-sm);\n font-family: inherit;\n background: var(--msg-bg-surface);\n color: var(--msg-text);\n outline: none;\n transition: border-color var(--transition-fast);\n box-sizing: border-box;\n}\n\n.liveChat-prechat-input::placeholder {\n color: var(--msg-text-secondary);\n}\n\n.liveChat-prechat-input:focus {\n border-color: var(--color-primary);\n}\n\n.liveChat-prechat-error {\n font-size: var(--font-size-xs);\n color: #dc2626;\n}\n\n.liveChat-prechat-submit {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: var(--spacing-2);\n padding: var(--spacing-2) var(--spacing-3);\n border-radius: var(--radius-md);\n font-size: var(--font-size-sm);\n font-weight: var(--font-weight-medium);\n font-family: inherit;\n cursor: pointer;\n transition: all var(--transition-fast);\n border: none;\n width: 100%;\n background: var(--color-primary);\n color: #ffffff;\n margin-top: var(--spacing-1);\n}\n\n.liveChat-prechat-submit:hover {\n background: var(--color-primary-hover);\n}\n\n.liveChat-prechat-submit:active {\n transform: translateY(1px);\n transition-duration: 100ms;\n}\n\n.liveChat-prechat-submit:disabled {\n opacity: 0.7;\n cursor: not-allowed;\n}\n`;\n","export const liveChatCoreStyles = `\n\n.liveChat-launcher {\n position: fixed;\n z-index: var(--z-modal);\n}\n\n.liveChat-launcher-right {\n bottom: var(--liveChat-v-padding, var(--spacing-5));\n right: var(--liveChat-h-padding, var(--spacing-5));\n}\n\n.liveChat-launcher-left {\n bottom: var(--liveChat-v-padding, var(--spacing-5));\n left: var(--liveChat-h-padding, var(--spacing-5));\n}\n\n.liveChat-launcher-btn {\n width: 60px;\n height: 60px;\n border-radius: var(--radius-full);\n border: none;\n background: var(--color-primary);\n color: #ffffff;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n box-shadow: var(--shadow-lg);\n transition: all var(--transition-slow);\n position: relative;\n}\n\n.liveChat-launcher-btn:hover {\n box-shadow: var(--shadow-xl);\n}\n\n.liveChat-launcher-btn:active {\n transform: translateY(1px);\n transition-duration: 100ms;\n}\n\n.liveChat-launcher-badge {\n position: absolute;\n top: -3px;\n right: -3px;\n min-width: 22px;\n height: 22px;\n background: #ef4444;\n color: #ffffff;\n font-size: 11px;\n font-weight: 700;\n border-radius: var(--radius-full);\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 0 6px;\n border: 2.5px solid #ffffff;\n box-shadow: 0 2px 6px rgb(239 68 68 / 0.45);\n letter-spacing: -0.2px;\n line-height: 1;\n}\n\n.liveChat-panel {\n position: fixed;\n z-index: var(--z-popover);\n width: 400px;\n height: 720px;\n max-height: calc(100vh - 100px);\n opacity: 0;\n visibility: hidden;\n pointer-events: none;\n transform: translateY(8px) scale(0.97);\n transition:\n opacity 160ms cubic-bezier(0.4, 0, 1, 1),\n transform 180ms cubic-bezier(0.4, 0, 1, 1),\n visibility 0s linear 180ms,\n width 300ms cubic-bezier(0.16, 1, 0.3, 1),\n height 300ms cubic-bezier(0.16, 1, 0.3, 1),\n max-height 300ms cubic-bezier(0.16, 1, 0.3, 1);\n}\n\n.liveChat-panel.open {\n opacity: 1;\n visibility: visible;\n pointer-events: auto;\n transform: translateY(0) scale(1);\n transition:\n opacity 220ms cubic-bezier(0.16, 1, 0.3, 1),\n transform 300ms cubic-bezier(0.16, 1, 0.3, 1),\n visibility 0s linear 0s;\n}\n\n.liveChat-panel-right {\n bottom: calc(var(--liveChat-v-padding, var(--spacing-5)) + 70px);\n right: var(--liveChat-h-padding, var(--spacing-5));\n transform-origin: bottom right;\n}\n\n.liveChat-panel-left {\n bottom: calc(var(--liveChat-v-padding, var(--spacing-5)) + 70px);\n left: var(--liveChat-h-padding, var(--spacing-5));\n transform-origin: bottom left;\n}\n\n.liveChat-panel-content {\n background: var(--msg-bg);\n height: 100%;\n border-radius: var(--radius-2xl);\n overflow: hidden;\n display: flex;\n flex-direction: column;\n box-shadow: var(--shadow-xl);\n border: 1px solid var(--msg-border);\n}\n\n.liveChat-panel-content *::-webkit-scrollbar {\n display: none;\n}\n\n.liveChat-panel-content * {\n scrollbar-width: none;\n}\n\n.liveChat-panel-views {\n flex: 1;\n overflow: hidden;\n display: flex;\n flex-direction: column;\n}\n\n.liveChat-view {\n height: 100%;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n position: relative;\n}\n\n.liveChat-avatar-stack {\n display: flex;\n align-items: center;\n}\n\n.liveChat-avatar-stack .sdk-avatar {\n margin-left: -8px;\n}\n\n.liveChat-avatar-stack .sdk-avatar:first-child {\n margin-left: 0;\n}\n\n.liveChat-avatar-stack-tiny .sdk-avatar {\n margin-left: -6px;\n}\n\n.liveChat-avatar-stack-tiny .sdk-avatar:first-child {\n margin-left: 0;\n}\n\n.liveChat-mobile-close-btn {\n display: none;\n}\n\n.liveChat-panel.liveChat-panel-expanded {\n width: 720px;\n height: 88vh;\n max-height: 88vh;\n}\n\n.liveChat-chat-menu-wrapper {\n position: relative;\n}\n\n.liveChat-chat-menu-dropdown {\n position: absolute;\n top: calc(100% + 6px);\n right: 0;\n background: var(--color-white, #ffffff);\n border: 1px solid var(--color-border, #e5e7eb);\n border-radius: var(--radius-lg);\n box-shadow: 0 4px 16px rgba(0,0,0,0.12);\n min-width: 190px;\n z-index: 20;\n overflow: hidden;\n opacity: 0;\n visibility: hidden;\n transform: translateY(-4px);\n transition: opacity 140ms ease, transform 140ms ease, visibility 0s linear 140ms;\n}\n\n.liveChat-chat-menu-dropdown.open {\n opacity: 1;\n visibility: visible;\n transform: translateY(0);\n transition: opacity 140ms ease, transform 140ms ease, visibility 0s linear 0s;\n}\n\n.liveChat-chat-menu-item {\n width: 100%;\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 10px 14px;\n background: none;\n border: none;\n cursor: pointer;\n font-size: 13px;\n font-weight: 500;\n color: var(--color-text-primary, #111827);\n text-align: left;\n transition: background 120ms;\n}\n\n.liveChat-chat-menu-item:hover {\n background: var(--color-neutral-50, #f9fafb);\n}\n\n.liveChat-chat-menu-item iconify-icon {\n color: var(--color-text-secondary, #6b7280);\n flex-shrink: 0;\n}\n\n@media (max-width: 480px) {\n .liveChat-mobile-close-btn {\n display: flex;\n }\n .liveChat-chat-menu-wrapper {\n display: none;\n }\n .liveChat-panel {\n width: 100%;\n height: 100%;\n max-height: 100%;\n bottom: 0;\n right: 0;\n left: 0;\n border-radius: 0;\n transform-origin: bottom center;\n transform: translateY(12px) scale(0.98);\n }\n\n .liveChat-panel.open {\n transform: translateY(0) scale(1);\n }\n\n .liveChat-panel-content {\n border-radius: 0;\n }\n\n .liveChat-launcher {\n bottom: var(--spacing-4);\n right: var(--spacing-4);\n }\n\n .liveChat-launcher-left {\n left: var(--spacing-4);\n }\n}\n\n/* ========================================\n DARK THEME — token overrides only\n ======================================== */\n\n.liveChat-widget.theme-dark {\n /* Web Chat semantic tokens */\n --msg-bg: #0f1317;\n --msg-bg-surface: #1a1e24;\n --msg-bg-elevated: #232930;\n --msg-bg-hover: #232930;\n --msg-bg-input: #1a1e24;\n --msg-bg-bubble-own: #1e2330;\n --msg-bg-bubble-received: #1D4ED8;\n --msg-bg-header-gradient: linear-gradient(180deg, #1a1e2e 0%, #141720 50%, #0f1317 100%);\n --msg-bg-header-glow1: radial-gradient(circle, rgba(21, 94, 239, 0.07) 0%, transparent 70%);\n --msg-bg-header-glow2: radial-gradient(circle, rgba(139, 92, 246, 0.05) 0%, transparent 70%);\n --msg-text: #e8e8e8;\n --msg-text-secondary: #999999;\n --msg-text-tertiary: #666666;\n --msg-text-muted: #555555;\n --msg-border: #232930;\n --msg-border-bubble: #3a4255;\n --msg-shadow-card: none;\n --msg-shadow-card-hover: none;\n\n /* Override base design tokens within web chat scope */\n --color-white: #0f1317;\n --color-background: #0f1317;\n --color-surface: #1a1e24;\n --color-neutral-50: #1a1e24;\n --color-neutral-100: #1a1e24;\n --color-neutral-200: #232930;\n --color-neutral-300: #2d343c;\n --color-neutral-400: #555555;\n --color-neutral-500: #777777;\n --color-border: #232930;\n --color-text-primary: #e8e8e8;\n --color-text-secondary: #999999;\n --color-text-tertiary: #666666;\n --color-success-light: rgba(16, 185, 129, 0.15);\n --color-success-dark: #34d399;\n --color-error: #f87171;\n --color-error-light: rgba(239, 68, 68, 0.15);\n --color-error-dark: #fca5a5;\n}\n`;\n","export const liveChatFeaturesStyles = `\n/* ========================================\n ATTACHMENTS\n ======================================== */\n.liveChat-compose-attachments-preview {\n display: none;\n flex-wrap: wrap;\n gap: var(--spacing-2);\n padding: var(--spacing-2) var(--spacing-4);\n border-top: 1px solid var(--msg-border);\n background: var(--msg-bg);\n}\n\n.liveChat-attachment-preview {\n position: relative;\n width: 56px;\n height: 56px;\n border-radius: var(--radius-lg);\n overflow: hidden;\n border: 1px solid var(--color-border);\n}\n\n.liveChat-attachment-thumb {\n width: 100%;\n height: 100%;\n object-fit: cover;\n display: block;\n}\n\n.liveChat-attachment-file-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--color-neutral-100);\n color: var(--color-text-secondary);\n}\n\n.liveChat-attachment-remove {\n position: absolute;\n top: 2px;\n right: 2px;\n width: 18px;\n height: 18px;\n background: rgba(0, 0, 0, 0.7);\n border: none;\n border-radius: var(--radius-full);\n color: var(--color-white);\n font-size: var(--font-size-xs);\n line-height: 1;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 0;\n transition: background var(--transition-base);\n}\n\n.liveChat-attachment-remove:hover {\n background: var(--color-error);\n}\n\n/* ========================================\n EMAIL OVERLAY\n ======================================== */\n.liveChat-email-overlay {\n position: absolute;\n bottom: 0;\n left: 0;\n right: 0;\n top: 0;\n display: none;\n align-items: flex-end;\n z-index: 20;\n background: rgba(0, 0, 0, 0.5);\n pointer-events: auto;\n}\n\n.liveChat-email-card {\n width: 100%;\n animation: liveChat-slide-up 0.25s ease;\n}\n\n.liveChat-email-actions {\n display: flex;\n gap: var(--spacing-2);\n margin-top: var(--spacing-1);\n}\n\n/* ========================================\n EMPTY STATE\n ======================================== */\n.liveChat-empty-state {\n flex: 1;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n text-align: center;\n padding: var(--spacing-10);\n}\n\n.liveChat-empty-state-icon {\n color: var(--msg-text-tertiary);\n margin-bottom: var(--spacing-4);\n}\n\n.liveChat-empty-state h3 {\n margin: 0 0 var(--spacing-2);\n font-size: var(--font-size-xl);\n font-weight: var(--font-weight-semibold);\n color: var(--color-text-primary);\n}\n\n.liveChat-empty-state p {\n margin: 0;\n font-size: var(--font-size-base);\n color: var(--color-text-secondary);\n}\n\n/* ========================================\n ANIMATIONS\n ======================================== */\n@keyframes spin {\n to {\n transform: rotate(360deg);\n }\n}\n\n@keyframes liveChat-typing-bounce {\n 0%, 80%, 100% {\n transform: scale(0);\n }\n 40% {\n transform: scale(1);\n }\n}\n\n@keyframes liveChat-slide-up {\n from {\n transform: translateY(100%);\n opacity: 0;\n }\n to {\n transform: translateY(0);\n opacity: 1;\n }\n}\n\n@keyframes liveChat-fade-in {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n\n/* ========================================\n RESPONSIVE\n ======================================== */\n@media (max-width: 480px) {\n .liveChat-prechat-overlay {\n padding: var(--spacing-4);\n }\n .liveChat-prechat-card {\n max-width: 100%;\n }\n}\n`;\n","export const liveChatViewsStyles = `\n/* ========================================\n HOME VIEW\n ======================================== */\n\n.liveChat-home-view {\n background: var(--msg-bg-header-gradient);\n position: relative;\n overflow: hidden;\n}\n\n.liveChat-home-view::before {\n content: '';\n position: absolute;\n top: 0;\n left: 0;\n width: 600px;\n height: 600px;\n background: var(--msg-bg-header-glow1);\n filter: blur(60px);\n pointer-events: none;\n z-index: 1;\n}\n\n.liveChat-home-view::after {\n content: '';\n position: absolute;\n top: 0;\n right: 0;\n width: 500px;\n height: 500px;\n background: var(--msg-bg-header-glow2);\n filter: blur(60px);\n pointer-events: none;\n z-index: 1;\n}\n\n.liveChat-home-scroll {\n flex: 1;\n overflow-y: auto;\n display: flex;\n flex-direction: column;\n position: relative;\n}\n\n.liveChat-home-header {\n padding: var(--spacing-6) var(--spacing-5);\n position: relative;\n z-index: 2;\n flex-shrink: 0;\n}\n\n.liveChat-home-header-top {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: var(--spacing-8);\n position: relative;\n z-index: 2;\n}\n\n.liveChat-home-logo {\n width: 48px;\n height: 48px;\n border-radius: var(--radius-lg);\n overflow: visible;\n flex-shrink: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.liveChat-home-logo img {\n width: 100%;\n height: 100%;\n object-fit: contain;\n border-radius: var(--radius-lg);\n}\n\n.liveChat-home-avatars {\n flex: 1;\n display: flex;\n justify-content: flex-end;\n margin-right: var(--spacing-4);\n margin-left: var(--spacing-4);\n}\n\n.liveChat-home-avatars:empty {\n display: none;\n}\n\n.liveChat-home-welcome {\n display: flex;\n flex-direction: column;\n text-align: left;\n position: relative;\n z-index: 2;\n}\n\n.liveChat-home-greeting {\n font-size: clamp(22px, 8vw, 34px);\n font-weight: var(--font-weight-bold);\n color: var(--msg-text);\n line-height: var(--line-height-tight);\n word-break: break-word;\n}\n\n.liveChat-home-question {\n font-size: clamp(18px, 6.5vw, 28px);\n font-weight: var(--font-weight-bold);\n color: var(--msg-text);\n line-height: var(--line-height-tight);\n word-break: break-word;\n}\n\n.liveChat-home-body {\n flex: 1;\n padding: 0 var(--spacing-5) var(--spacing-5);\n position: relative;\n z-index: 2;\n}\n\n.liveChat-home-recent-card {\n background: var(--msg-bg);\n border: 1px solid var(--msg-border);\n border-radius: 10px;\n padding: var(--spacing-3) var(--spacing-4);\n margin-bottom: var(--spacing-2);\n cursor: pointer;\n transition: background var(--transition-base);\n box-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05);\n}\n\n.liveChat-home-recent-card:hover {\n background: var(--msg-bg-hover);\n}\n\n.liveChat-home-recent-card-label {\n font-size: 0.875rem;\n font-weight: 600;\n color: var(--msg-text-tertiary);\n margin-bottom: var(--spacing-2);\n}\n\n.liveChat-home-recent-card-row {\n display: flex;\n align-items: center;\n gap: var(--spacing-3);\n}\n\n.liveChat-home-recent-avatar {\n width: 36px;\n height: 36px;\n border-radius: var(--radius-full);\n flex-shrink: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: var(--font-size-sm);\n font-weight: var(--font-weight-semibold);\n color: #ffffff;\n overflow: hidden;\n}\n\n.liveChat-home-recent-avatar img {\n width: 100%;\n height: 100%;\n object-fit: cover;\n}\n\n.liveChat-home-recent-avatar-logo {\n background: var(--msg-bg-surface);\n border: 1px solid var(--msg-border);\n padding: 4px;\n}\n\n.liveChat-home-recent-avatar-logo img {\n object-fit: contain;\n}\n\n.liveChat-home-recent-card-content {\n flex: 1;\n min-width: 0;\n}\n\n.liveChat-home-recent-card-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--spacing-2);\n margin-bottom: 2px;\n}\n\n.liveChat-home-recent-card-name {\n font-size: var(--font-size-sm);\n font-weight: var(--font-weight-semibold);\n color: var(--msg-text);\n}\n\n.liveChat-home-recent-card-time {\n font-size: var(--font-size-xs);\n color: var(--msg-text-tertiary);\n flex-shrink: 0;\n}\n\n.liveChat-home-recent-card-preview {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--spacing-2);\n}\n\n.liveChat-home-recent-card-message {\n font-size: var(--font-size-sm);\n color: var(--msg-text-secondary);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.liveChat-home-recent-unread-dot {\n width: 8px;\n height: 8px;\n border-radius: var(--radius-full);\n background: var(--color-primary);\n flex-shrink: 0;\n}\n\n.liveChat-home-message-btn {\n width: 100%;\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: var(--spacing-3) var(--spacing-5);\n background: var(--msg-bg-surface);\n border: 1px solid var(--msg-border);\n border-radius: 8px;\n color: var(--msg-text);\n font-size: var(--font-size-base);\n font-weight: var(--font-weight-normal);\n cursor: pointer;\n transition: all var(--transition-base);\n margin-bottom: var(--spacing-2);\n font-family: inherit;\n box-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05);\n}\n\n.liveChat-home-message-btn:hover {\n background: var(--msg-bg-hover);\n}\n\n.liveChat-home-message-btn:active {\n transform: translateY(1px);\n transition-duration: 100ms;\n}\n\n.liveChat-home-continue-btn {\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n gap: var(--spacing-3);\n}\n\n.liveChat-home-continue-btn > svg {\n flex-shrink: 0;\n}\n\n.liveChat-home-continue-info {\n display: flex;\n flex-direction: column;\n gap: 2px;\n text-align: left;\n flex: 1;\n}\n\n.liveChat-home-continue-label {\n font-size: 0.875rem;\n font-weight: var(--font-weight-semibold);\n color: var(--msg-text);\n}\n\n.liveChat-home-message-subtext {\n font-size: var(--font-size-xs);\n font-weight: 400;\n color: var(--msg-text-secondary);\n}\n\n.liveChat-home-continue-preview {\n font-size: var(--font-size-sm);\n opacity: 0.6;\n font-weight: var(--font-weight-normal);\n}\n\n.liveChat-home-featured {\n background: var(--msg-bg);\n border-radius: var(--radius-xl);\n overflow: hidden;\n margin-bottom: var(--spacing-5);\n box-shadow: var(--msg-shadow-card);\n}\n\n.liveChat-home-featured-image {\n width: 100%;\n height: 160px;\n object-fit: cover;\n display: block;\n}\n\n.liveChat-home-featured-divider {\n height: 1px;\n background: var(--msg-border);\n}\n\n.liveChat-home-featured-content {\n padding: var(--spacing-4) var(--spacing-5);\n}\n\n.liveChat-home-featured-content h3 {\n margin: 0 0 var(--spacing-2);\n font-size: var(--font-size-xl);\n font-weight: var(--font-weight-semibold);\n color: var(--msg-text);\n line-height: var(--line-height-normal);\n}\n\n.liveChat-home-featured-content p {\n margin: 0;\n font-size: var(--font-size-base);\n color: var(--msg-text-tertiary);\n line-height: var(--line-height-relaxed);\n}\n\n.liveChat-home-featured-btn {\n margin-top: var(--spacing-3);\n}\n\n.liveChat-home-changelog-section {\n margin-top: var(--spacing-5);\n display: flex;\n flex-direction: column;\n gap: var(--spacing-4);\n}\n\n.liveChat-home-changelog-card {\n background: var(--msg-bg-surface);\n border-radius: 8px;\n overflow: hidden;\n cursor: pointer;\n border: 1px solid var(--msg-border);\n transition: all var(--transition-base);\n box-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05);\n}\n\n.liveChat-home-changelog-card:hover {\n background: var(--msg-bg-hover);\n}\n\n.liveChat-home-changelog-card:active {\n transform: translateY(1px);\n transition-duration: 100ms;\n}\n\n.liveChat-home-changelog-cover {\n width: 100%;\n height: 140px;\n overflow: hidden;\n position: relative;\n}\n\n.liveChat-home-changelog-cover img {\n width: 100%;\n height: 100%;\n object-fit: cover;\n}\n\n.liveChat-home-changelog-cover-text {\n position: absolute;\n bottom: var(--spacing-3);\n left: var(--spacing-3);\n right: var(--spacing-3);\n color: #ffffff;\n font-size: var(--font-size-md);\n font-weight: var(--font-weight-semibold);\n text-shadow: 0 1px 3px rgba(0, 0, 0, 0.4);\n line-height: var(--line-height-snug);\n}\n\n.liveChat-home-changelog-card-content {\n padding: var(--spacing-4);\n border-top: 1px solid var(--msg-border);\n}\n\n.liveChat-home-changelog-card-title {\n margin: 0 0 var(--spacing-2);\n font-size: var(--font-size-md);\n font-weight: var(--font-weight-semibold);\n color: var(--msg-text);\n line-height: var(--line-height-snug);\n}\n\n.liveChat-home-changelog-card-desc {\n margin: 0;\n font-size: var(--font-size-sm);\n font-weight: var(--font-weight-normal);\n color: var(--msg-text-secondary);\n line-height: var(--line-height-relaxed);\n display: -webkit-box;\n -webkit-line-clamp: 3;\n -webkit-box-orient: vertical;\n overflow: hidden;\n}\n\n.liveChat-home-availability,\n.liveChat-chat-availability {\n display: flex;\n align-items: center;\n gap: var(--spacing-2);\n margin-top: var(--spacing-2);\n font-size: var(--font-size-sm);\n color: var(--msg-text-secondary);\n}\n\n.liveChat-availability-dot {\n width: 8px;\n height: 8px;\n border-radius: var(--radius-full);\n flex-shrink: 0;\n align-self: center;\n display: block;\n}\n\n.liveChat-availability-online {\n background: var(--color-success);\n box-shadow: 0 0 0 2px var(--color-success-light);\n}\n\n.liveChat-availability-away {\n background: var(--color-neutral-400);\n}\n\n.liveChat-availability-text {\n opacity: 0.9;\n}\n\n/* ========================================\n CONVERSATIONS VIEW\n ======================================== */\n\n.liveChat-conversations-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: var(--spacing-3) var(--spacing-5);\n border-bottom: 1px solid var(--msg-border);\n background: var(--msg-bg-header-gradient);\n position: relative;\n overflow: hidden;\n}\n\n.liveChat-conversations-header h2 {\n margin: 0;\n font-size: var(--font-size-xl);\n font-weight: var(--font-weight-semibold);\n color: var(--msg-text);\n text-align: center;\n flex: 1;\n}\n\n.liveChat-conversations-body {\n flex: 1;\n overflow-y: auto;\n padding: 0;\n}\n\n.liveChat-conversations-list {\n display: flex;\n flex-direction: column;\n}\n\n.liveChat-conversation-item + .liveChat-conversation-item {\n border-top: 1px solid var(--msg-border);\n}\n\n.liveChat-conversation-item {\n display: flex;\n align-items: center;\n gap: var(--spacing-3);\n padding: 10px var(--spacing-4);\n cursor: pointer;\n transition: background var(--transition-base);\n}\n\n.liveChat-conversation-item:hover {\n background: var(--msg-bg-hover);\n}\n\n.liveChat-conversation-item:active {\n transform: translateY(1px);\n transition-duration: 100ms;\n}\n\n.liveChat-conversation-avatars {\n flex-shrink: 0;\n display: flex;\n align-items: center;\n align-self: stretch;\n}\n\n.liveChat-conversation-content {\n flex: 1;\n min-width: 0;\n display: flex;\n flex-direction: column;\n justify-content: center;\n}\n\n.liveChat-conversation-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: 2px;\n gap: var(--spacing-3);\n}\n\n.liveChat-conversation-title {\n font-size: var(--font-size-sm);\n font-weight: var(--font-weight-semibold);\n color: var(--msg-text);\n line-height: 1.4;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.liveChat-conversation-time {\n font-size: var(--font-size-sm);\n color: var(--msg-text-tertiary);\n flex-shrink: 0;\n}\n\n.liveChat-conversation-preview {\n display: flex;\n align-items: center;\n gap: var(--spacing-2);\n}\n\n.liveChat-conversation-message {\n font-size: var(--font-size-sm);\n font-weight: 400;\n color: var(--msg-text-secondary);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n line-height: 1.4;\n}\n\n.liveChat-conversation-item.unread .liveChat-conversation-message {\n color: var(--msg-text);\n font-weight: 500;\n}\n\n.liveChat-unread-dot {\n width: 8px;\n height: 8px;\n background: var(--color-primary);\n border-radius: var(--radius-full);\n flex-shrink: 0;\n}\n\n.liveChat-conversation-item.closed .liveChat-conversation-title,\n.liveChat-conversation-item.closed .liveChat-conversation-message {\n color: var(--msg-text-tertiary);\n}\n\n.liveChat-conversation-resolved-badge {\n font-size: 0.6875rem;\n font-weight: 500;\n color: var(--color-success-dark);\n background: var(--color-success-light);\n border-radius: var(--radius-full);\n padding: 1px 7px;\n flex-shrink: 0;\n}\n\n.liveChat-conversations-footer {\n border-top: 1px solid var(--msg-border);\n}\n\n.liveChat-new-message-btn {\n width: 100%;\n display: flex;\n align-items: center;\n gap: var(--spacing-3);\n padding: 12px var(--spacing-4);\n background: transparent;\n border: none;\n color: var(--msg-text);\n font-size: var(--font-size-sm);\n font-weight: var(--font-weight-medium);\n cursor: pointer;\n transition: background var(--transition-base);\n font-family: inherit;\n text-align: left;\n}\n\n.liveChat-new-message-btn:hover {\n background: var(--msg-bg-hover);\n}\n\n.liveChat-new-message-btn:active {\n transform: translateX(4px) translateY(1px);\n transition-duration: 100ms;\n}\n\n.liveChat-new-message-btn span {\n flex: 1;\n text-align: left;\n}\n\n/* ========================================\n HELP VIEW\n ======================================== */\n\n.liveChat-help-header {\n display: flex;\n flex-direction: column;\n gap: var(--spacing-2);\n padding: var(--spacing-2) var(--spacing-5) var(--spacing-3);\n border-bottom: 1px solid var(--msg-border);\n flex-shrink: 0;\n background: var(--msg-bg-header-gradient);\n position: relative;\n overflow: hidden;\n}\n\n.liveChat-help-header::before {\n content: '';\n position: absolute;\n top: -20px;\n left: -20px;\n width: 200px;\n height: 200px;\n background: var(--msg-bg-header-glow1);\n filter: blur(30px);\n pointer-events: none;\n}\n\n.liveChat-help-header::after {\n content: '';\n position: absolute;\n top: -10px;\n right: -20px;\n width: 150px;\n height: 150px;\n background: var(--msg-bg-header-glow2);\n filter: blur(25px);\n pointer-events: none;\n}\n\n.liveChat-help-header-top {\n display: flex;\n align-items: center;\n justify-content: center;\n position: relative;\n}\n\n.liveChat-help-header-top h2 {\n margin: 0;\n font-size: var(--font-size-xl);\n font-weight: var(--font-weight-semibold);\n color: var(--msg-text);\n}\n\n.liveChat-help-close-btn {\n position: absolute;\n right: 0;\n top: 50%;\n transform: translateY(-50%);\n}\n\n.liveChat-help-search-wrap {\n position: relative;\n width: 100%;\n}\n\n.liveChat-help-search-icon {\n position: absolute;\n left: var(--spacing-3);\n top: 50%;\n transform: translateY(-50%);\n color: var(--msg-text-tertiary);\n display: flex;\n align-items: center;\n pointer-events: none;\n}\n\n.liveChat-help-search-input {\n width: 100%;\n background: var(--msg-bg-input);\n border: 1px solid var(--msg-border);\n border-radius: var(--radius-md);\n padding: var(--spacing-2) var(--spacing-3) var(--spacing-2) calc(var(--spacing-3) + 16px + var(--spacing-2));\n font-size: var(--font-size-base);\n font-weight: var(--font-weight-normal);\n color: var(--msg-text);\n font-family: inherit;\n outline: none;\n transition: border-color var(--transition-base), background var(--transition-base);\n box-sizing: border-box;\n}\n\n.liveChat-help-search-input:focus {\n border-color: var(--color-primary);\n background: var(--msg-bg);\n}\n\n.liveChat-help-search-input::placeholder {\n color: var(--msg-text-tertiary);\n}\n\n.liveChat-help-body {\n flex: 1;\n overflow-y: auto;\n padding: 0;\n}\n\n.liveChat-help-collections-header {\n display: none;\n}\n\n.liveChat-help-collections {\n padding: 0;\n}\n\n.liveChat-help-collection {\n display: flex;\n align-items: center;\n gap: var(--spacing-3);\n padding: var(--spacing-3) var(--spacing-5);\n cursor: pointer;\n transition: background var(--transition-base);\n border-bottom: 1px solid var(--msg-border);\n}\n\n.liveChat-help-collection:hover {\n background: var(--msg-bg-hover);\n}\n\n.liveChat-help-collection:active {\n transform: translateY(1px);\n transition-duration: 100ms;\n}\n\n.liveChat-help-collection-icon {\n flex-shrink: 0;\n width: 2.25rem;\n height: 2.25rem;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--msg-text-secondary);\n}\n\n.liveChat-help-collection-icon svg {\n width: 1.5rem;\n height: 1.5rem;\n display: block;\n flex-shrink: 0;\n}\n\n.liveChat-help-collection-icon iconify-icon {\n font-size: 1.5rem;\n width: 1em;\n height: 1em;\n display: block;\n flex-shrink: 0;\n}\n\n.liveChat-help-collection-content {\n flex: 1;\n min-width: 0;\n}\n\n.liveChat-help-collection-title {\n font-size: var(--font-size-base);\n font-weight: var(--font-weight-semibold);\n color: var(--msg-text);\n line-height: var(--line-height-snug);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.liveChat-help-collection-desc {\n margin: 2px 0 var(--spacing-1);\n font-size: var(--font-size-sm);\n color: var(--msg-text-secondary);\n line-height: var(--line-height-normal);\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.liveChat-help-collection-meta {\n display: flex;\n align-items: center;\n gap: var(--spacing-2);\n margin-top: 2px;\n}\n\n.liveChat-help-collection-avatar {\n display: none;\n}\n\n.liveChat-help-collection-avatar--initials {\n display: none;\n line-height: 1;\n}\n\n.liveChat-help-collection-count {\n font-size: var(--font-size-xs);\n font-weight: var(--font-weight-medium);\n color: var(--msg-text-tertiary);\n}\n\n.liveChat-help-footer {\n padding: var(--spacing-4) var(--spacing-5);\n border-top: 1px solid var(--msg-border);\n text-align: center;\n}\n\n.liveChat-help-footer-link {\n display: inline-flex;\n align-items: center;\n gap: var(--spacing-2);\n font-size: var(--font-size-base);\n font-weight: var(--font-weight-semibold);\n color: var(--msg-text);\n text-decoration: none;\n cursor: pointer;\n transition: color var(--transition-base);\n}\n\n.liveChat-help-footer-link:hover {\n color: var(--color-primary);\n}\n\n/* ========================================\n CHANGELOG VIEW\n ======================================== */\n\n.liveChat-changelog-header {\n padding: var(--spacing-2) var(--spacing-5);\n border-bottom: 1px solid var(--msg-border);\n flex-shrink: 0;\n background: var(--msg-bg-header-gradient);\n position: relative;\n overflow: hidden;\n}\n\n.liveChat-changelog-header::before {\n content: '';\n position: absolute;\n top: -20px;\n left: -20px;\n width: 200px;\n height: 200px;\n background: var(--msg-bg-header-glow1);\n filter: blur(30px);\n pointer-events: none;\n}\n\n.liveChat-changelog-header::after {\n content: '';\n position: absolute;\n top: -10px;\n right: -20px;\n width: 150px;\n height: 150px;\n background: var(--msg-bg-header-glow2);\n filter: blur(25px);\n pointer-events: none;\n}\n\n.liveChat-changelog-header-top {\n display: flex;\n align-items: center;\n justify-content: center;\n position: relative;\n}\n\n.liveChat-changelog-header-top h2 {\n margin: 0;\n font-size: var(--font-size-xl);\n font-weight: var(--font-weight-semibold);\n color: var(--msg-text);\n}\n\n.liveChat-changelog-close-btn {\n position: absolute;\n right: 0;\n top: 50%;\n transform: translateY(-50%);\n}\n\n.liveChat-changelog-body {\n flex: 1;\n overflow-y: auto;\n}\n\n.liveChat-changelog-list {\n display: flex;\n flex-direction: column;\n gap: var(--spacing-3);\n padding: var(--spacing-4) var(--spacing-5);\n}\n\n.liveChat-changelog-card {\n display: flex;\n flex-direction: column;\n border: 1px solid var(--msg-border);\n border-radius: 10px;\n overflow: hidden;\n cursor: pointer;\n transition: box-shadow var(--transition-base), transform var(--transition-base);\n}\n\n.liveChat-changelog-card:hover {\n box-shadow: var(--shadow-md);\n transform: translateY(-1px);\n}\n\n.liveChat-changelog-card:active {\n transform: translateY(0);\n transition-duration: 100ms;\n}\n\n.liveChat-changelog-content {\n display: flex;\n flex-direction: column;\n gap: var(--spacing-1);\n padding: var(--spacing-3) var(--spacing-4);\n}\n\n.liveChat-changelog-meta {\n display: flex;\n align-items: center;\n gap: var(--spacing-2);\n flex-wrap: wrap;\n}\n\n.liveChat-changelog-date {\n font-size: var(--font-size-xs);\n font-weight: var(--font-weight-medium);\n color: var(--msg-text-tertiary);\n}\n\n.liveChat-changelog-tags {\n display: flex;\n flex-wrap: wrap;\n gap: var(--spacing-1);\n}\n\n.liveChat-changelog-tag {\n display: inline-flex;\n align-items: center;\n padding: 1px 8px;\n border-radius: var(--radius-full);\n font-size: 11px;\n font-weight: var(--font-weight-medium);\n line-height: 1.5;\n}\n\n.liveChat-changelog-title {\n margin: 0;\n font-size: var(--font-size-base);\n font-weight: var(--font-weight-semibold);\n color: var(--msg-text);\n line-height: var(--line-height-snug);\n}\n\n.liveChat-changelog-description {\n margin: 0;\n font-size: var(--font-size-sm);\n color: var(--msg-text-secondary);\n line-height: var(--line-height-normal);\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n}\n\n.liveChat-changelog-thumb {\n width: 100%;\n overflow: hidden;\n border-bottom: 1px solid var(--msg-border);\n}\n\n.liveChat-changelog-thumb img {\n width: 100%;\n height: 180px;\n display: block;\n object-fit: cover;\n}\n`;\n","import { liveChatComponentsStyles } from './liveChat-components.js';\nimport { liveChatCoreStyles } from './liveChat-core.js';\nimport { liveChatFeaturesStyles } from './liveChat-features.js';\nimport { liveChatViewsStyles } from './liveChat-views.js';\n\nexport const liveChatStyles =\n\tliveChatCoreStyles +\n\tliveChatViewsStyles +\n\tliveChatComponentsStyles +\n\tliveChatFeaturesStyles;\n\nexport {\n\tliveChatComponentsStyles,\n\tliveChatCoreStyles,\n\tliveChatFeaturesStyles,\n\tliveChatViewsStyles,\n};\n","export const surveyStyles = `\n.feedback-survey-container {\n display: none;\n}\n\n.feedback-survey-backdrop {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(0, 0, 0, 0.4);\n z-index: var(--z-modal-backdrop);\n animation: fadeIn var(--transition-slow);\n}\n\n.feedback-survey-backdrop-dark {\n background: rgba(2, 6, 23, 0.65);\n}\n\n/* ========================================\n SURVEY CARD\n ======================================== */\n\n.feedback-survey {\n position: fixed;\n z-index: var(--z-modal);\n background: var(--color-white);\n border: 1px solid var(--color-neutral-200);\n border-radius: var(--radius-xl);\n box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05);\n padding: var(--spacing-6);\n min-width: 320px;\n max-width: 400px;\n font-family: inherit;\n overflow: hidden;\n opacity: 0;\n transition: opacity 200ms ease, transform 240ms cubic-bezier(0.16, 1, 0.3, 1);\n}\n\n/* ========================================\n DARK THEME\n ======================================== */\n\n.feedback-survey-theme-dark {\n --color-white: #0f1317;\n --color-background: #0f1317;\n --color-surface: #1a1e24;\n --color-border: #232930;\n --color-neutral-50: #1a1e24;\n --color-neutral-100: #1a1e24;\n --color-neutral-200: #232930;\n --color-neutral-300: #2d343c;\n --color-neutral-400: #555555;\n --color-neutral-500: #777777;\n --color-neutral-900: #e8e8e8;\n --color-text-primary: #e8e8e8;\n --color-text-secondary: #999999;\n --color-text-tertiary: #666666;\n --color-primary-light: rgba(21, 94, 239, 0.18);\n --color-primary-border: rgba(21, 94, 239, 0.4);\n --color-error-light: rgba(239, 68, 68, 0.15);\n --color-error-border: rgba(239, 68, 68, 0.25);\n --color-error-dark: #fca5a5;\n}\n\n/* ========================================\n POSITION VARIANTS + ENTRANCE STATES\n ======================================== */\n\n.feedback-survey-right {\n bottom: var(--spacing-6);\n right: var(--spacing-6);\n transform: translateY(10px);\n}\n\n.feedback-survey-left {\n bottom: var(--spacing-6);\n left: var(--spacing-6);\n transform: translateY(10px);\n}\n\n.feedback-survey-center {\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%) scale(0.97);\n}\n\n/* ========================================\n CLOSE BUTTON\n ======================================== */\n\n.feedback-survey-close {\n position: absolute;\n top: var(--spacing-4);\n right: var(--spacing-4);\n background: none;\n border: none;\n cursor: pointer;\n color: var(--color-neutral-500);\n padding: 4px;\n width: 28px;\n height: 28px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: var(--radius-md);\n transition: all var(--transition-base);\n}\n\n.feedback-survey-close iconify-icon {\n display: block;\n}\n\n.feedback-survey-close:hover {\n background: var(--color-neutral-100);\n color: var(--color-neutral-900);\n}\n\n.feedback-survey-close:focus-visible {\n outline: none;\n box-shadow: 0 0 0 3px var(--color-primary-light);\n}\n\n/* ========================================\n TYPOGRAPHY\n ======================================== */\n\n.feedback-survey-title {\n margin: 0 0 var(--spacing-3) 0;\n font-size: var(--font-size-xl);\n font-weight: var(--font-weight-semibold);\n line-height: var(--line-height-snug);\n padding-right: 36px;\n color: var(--color-text-primary);\n}\n\n.feedback-survey-description {\n color: var(--color-text-secondary);\n margin: 0 0 var(--spacing-4) 0;\n font-size: var(--font-size-base);\n line-height: var(--line-height-relaxed);\n}\n\n.feedback-survey-description-primary .feedback-survey-description {\n color: var(--color-text-primary);\n font-size: var(--font-size-lg);\n font-weight: var(--font-weight-semibold);\n line-height: var(--line-height-snug);\n padding-right: 36px;\n}\n\n.feedback-survey-content {\n margin-bottom: var(--spacing-3);\n}\n\n/* ========================================\n PROGRESS BAR\n ======================================== */\n\n.feedback-survey-progress {\n margin-bottom: var(--spacing-4);\n}\n\n.feedback-survey-progress-track {\n height: 3px;\n background: var(--color-neutral-200);\n border-radius: var(--radius-full);\n overflow: hidden;\n}\n\n.feedback-survey-progress-fill {\n height: 100%;\n background: var(--color-primary);\n border-radius: var(--radius-full);\n transition: width 320ms cubic-bezier(0.16, 1, 0.3, 1);\n}\n\n/* ========================================\n NPS — individual colored buttons\n ======================================== */\n\n.feedback-survey-nps {\n display: flex;\n justify-content: space-between;\n gap: var(--spacing-1);\n}\n\n.feedback-survey-nps-btn {\n flex: 1;\n height: 40px;\n min-height: unset;\n border-radius: 6px;\n cursor: pointer;\n font-size: var(--font-size-sm);\n font-weight: var(--font-weight-medium);\n color: #ffffff;\n border: 1px solid transparent;\n transition: filter var(--transition-fast), transform var(--transition-fast);\n font-family: inherit;\n}\n\n.feedback-survey-nps-btn:hover {\n filter: brightness(1.12);\n}\n\n.feedback-survey-nps-btn.selected {\n filter: brightness(0.82);\n box-shadow: inset 0 0 0 2px rgba(0, 0, 0, 0.25);\n}\n\n.feedback-survey-nps-btn:active {\n transform: translateY(1px);\n transition-duration: 100ms;\n}\n\n/* NPS score colors */\n.feedback-survey-nps-score-0 { background: #dc2626; border-color: #dc2626; }\n.feedback-survey-nps-score-1 { background: #ef4444; border-color: #ef4444; }\n.feedback-survey-nps-score-2 { background: #f97316; border-color: #f97316; }\n.feedback-survey-nps-score-3 { background: #fb923c; border-color: #fb923c; }\n.feedback-survey-nps-score-4 { background: #fdba74; border-color: #fdba74; }\n.feedback-survey-nps-score-5 { background: #fbbf24; border-color: #fbbf24; }\n.feedback-survey-nps-score-6 { background: #fde047; border-color: #fde047; color: #171717; }\n.feedback-survey-nps-score-7 { background: #e5e7eb; border-color: #e5e7eb; color: #374151; }\n.feedback-survey-nps-score-8 { background: #e5e7eb; border-color: #e5e7eb; color: #374151; }\n.feedback-survey-nps-score-9 { background: #4ade80; border-color: #4ade80; }\n.feedback-survey-nps-score-10 { background: #16a34a; border-color: #16a34a; }\n\n/* ========================================\n CSAT — emoji row\n ======================================== */\n\n.feedback-survey-csat {\n display: flex;\n justify-content: space-between;\n gap: var(--spacing-3);\n padding: var(--spacing-2) 0;\n}\n\n.feedback-survey-csat-btn {\n background: none;\n border: none;\n cursor: pointer;\n font-size: 32px;\n transition: transform var(--transition-fast), opacity var(--transition-fast);\n padding: var(--spacing-2) var(--spacing-1);\n min-width: 44px;\n min-height: 44px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: var(--radius-lg);\n line-height: 1;\n}\n\n.feedback-survey-csat-btn:hover {\n transform: scale(1.15);\n}\n\n.feedback-survey-csat-btn.selected {\n transform: scale(1.2);\n}\n\n.feedback-survey-csat:has(.selected) .feedback-survey-csat-btn:not(.selected) {\n transform: scale(0.85);\n opacity: 0.3;\n}\n\n.feedback-survey-csat-btn:active {\n transform: scale(1.05) translateY(1px);\n transition-duration: 100ms;\n}\n\n.feedback-survey-csat-btn.selected:active {\n transform: scale(1.2) translateY(1px);\n}\n\n/* ========================================\n NUMBER RATING (segmented scale)\n ======================================== */\n\n.feedback-survey-rating-scale {\n display: flex;\n overflow: hidden;\n border: 1px solid var(--color-neutral-200);\n border-radius: 6px;\n background: var(--color-white);\n}\n\n.feedback-survey-rating-scale-btn {\n flex: 1;\n height: 40px;\n padding: 0;\n border: 0;\n border-right: 1px solid var(--color-neutral-200);\n border-radius: 0;\n background: var(--color-white);\n cursor: pointer;\n font-size: clamp(14px, 3vw, 18px);\n font-weight: var(--font-weight-medium);\n color: #374151;\n transition: background var(--transition-fast), color var(--transition-fast);\n font-family: inherit;\n}\n\n.feedback-survey-rating-scale-btn:last-child {\n border-right: none;\n}\n\n.feedback-survey-rating-scale-btn:hover {\n background: var(--color-primary-light);\n color: var(--color-primary);\n}\n\n.feedback-survey-rating-scale-btn:focus-visible {\n outline: none;\n z-index: 1;\n box-shadow: inset 0 0 0 2px var(--color-primary);\n}\n\n.feedback-survey-rating-scale-btn.selected {\n background: var(--color-primary-light);\n color: var(--color-primary-active);\n box-shadow: inset 0 0 0 2px var(--color-primary);\n}\n\n.feedback-survey-rating-scale-btn:active {\n transform: translateY(1px);\n transition-duration: 100ms;\n}\n\n/* ========================================\n STARS\n ======================================== */\n\n.feedback-survey-stars {\n display: flex;\n gap: var(--spacing-2);\n justify-content: center;\n}\n\n.feedback-survey-star-btn {\n background: none;\n border: none;\n cursor: pointer;\n padding: 4px;\n width: 40px;\n height: 40px;\n flex-shrink: 0;\n line-height: 1;\n color: var(--color-neutral-300);\n transition: color var(--transition-fast), transform var(--transition-fast);\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.feedback-survey-star-btn iconify-icon {\n display: block;\n pointer-events: none;\n flex-shrink: 0;\n}\n\n.feedback-survey-star-btn.filled,\n.feedback-survey-star-btn.hovered {\n color: #f59e0b;\n}\n\n.feedback-survey-star-btn:hover {\n color: #f59e0b;\n}\n\n.feedback-survey-star-btn:active {\n transform: scale(0.9);\n transition-duration: 100ms;\n}\n\n/* ========================================\n SCALE LABELS\n ======================================== */\n\n.feedback-survey-labels {\n display: flex;\n justify-content: space-between;\n margin-top: var(--spacing-2);\n padding: 0 var(--spacing-1);\n font-size: var(--font-size-xs);\n color: var(--color-text-tertiary);\n}\n\n/* ========================================\n FORM INPUTS\n ======================================== */\n\n.feedback-survey-feedback {\n margin-top: var(--spacing-4);\n}\n\n.feedback-survey-textarea {\n width: 100%;\n padding: var(--spacing-3);\n border: 1px solid var(--color-border);\n border-radius: var(--radius-md);\n font-size: var(--font-size-base);\n resize: vertical;\n height: 80px;\n background: var(--color-white);\n color: var(--color-text-primary);\n font-family: inherit;\n box-sizing: border-box;\n transition: border-color var(--transition-base);\n outline: none;\n}\n\n.feedback-survey-textarea::placeholder {\n color: var(--color-text-tertiary);\n}\n\n.feedback-survey-textarea:focus {\n border-color: var(--color-primary);\n box-shadow: 0 0 0 3px var(--color-primary-light);\n}\n\n/* ========================================\n MULTI-PAGE TEXT INPUT\n ======================================== */\n\n.feedback-survey-page-textarea {\n width: 100%;\n min-height: 120px;\n padding: var(--spacing-3);\n border: 1px solid var(--color-border);\n border-radius: var(--radius-md);\n font-size: var(--font-size-sm);\n font-family: inherit;\n background: var(--color-white);\n color: var(--color-text-primary);\n box-sizing: border-box;\n resize: vertical;\n outline: none;\n transition: border-color var(--transition-base);\n}\n\n.feedback-survey-page-textarea::placeholder {\n color: var(--color-text-tertiary);\n}\n\n.feedback-survey-page-textarea:focus {\n border-color: var(--color-primary);\n box-shadow: 0 0 0 3px var(--color-primary-light);\n}\n\n/* ========================================\n MULTIPLE CHOICE\n ======================================== */\n\n.feedback-survey-multiple-choice {\n display: flex;\n flex-direction: column;\n gap: var(--spacing-2);\n}\n\n.feedback-survey-page-choice-btn {\n width: 100%;\n height: 40px;\n padding: 0 var(--spacing-4);\n border: 1px solid var(--color-neutral-200);\n border-radius: var(--radius-md);\n background: var(--color-white);\n color: #374151;\n text-align: left;\n font-size: var(--font-size-sm);\n font-weight: var(--font-weight-medium);\n cursor: pointer;\n font-family: inherit;\n display: flex;\n align-items: center;\n justify-content: space-between;\n transition: all var(--transition-fast);\n}\n\n.feedback-survey-page-choice-btn::after {\n content: '';\n width: 18px;\n height: 18px;\n border-radius: 50%;\n border: 1.5px solid #D1D5DB;\n flex-shrink: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n background: transparent;\n transition: all var(--transition-fast);\n}\n\n.feedback-survey-page-choice-btn:hover {\n border-color: var(--color-primary);\n background: var(--color-primary-light);\n color: var(--color-primary);\n}\n\n.feedback-survey-page-choice-btn:hover::after {\n border-color: var(--color-primary);\n}\n\n.feedback-survey-page-choice-btn.selected {\n border-color: var(--color-primary);\n background: var(--color-primary-light);\n color: var(--color-primary-active);\n}\n\n.feedback-survey-page-choice-btn.selected::after {\n content: '✓';\n color: #ffffff;\n font-size: 11px;\n font-weight: 700;\n border-color: var(--color-primary);\n background-color: var(--color-primary);\n}\n\n.feedback-survey-page-choice-btn:active {\n transform: translateY(1px);\n transition-duration: 100ms;\n}\n\n/* ========================================\n ACTIONS\n ======================================== */\n\n.feedback-survey-actions {\n display: flex;\n align-items: center;\n gap: var(--spacing-3);\n margin-top: var(--spacing-4);\n}\n\n.feedback-survey-back {\n padding: 0 var(--spacing-4);\n min-height: 40px;\n border: 1px solid var(--color-border);\n border-radius: var(--radius-md);\n background: var(--color-white);\n color: var(--color-text-secondary);\n font-size: var(--font-size-sm);\n font-weight: var(--font-weight-medium);\n cursor: pointer;\n font-family: inherit;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: var(--spacing-2);\n transition: all var(--transition-fast);\n flex: 1;\n white-space: nowrap;\n}\n\n.feedback-survey-back:hover {\n background: var(--color-neutral-100);\n border-color: var(--color-neutral-300);\n color: var(--color-text-primary);\n}\n\n.feedback-survey-back:active {\n transform: translateY(1px);\n transition-duration: 100ms;\n}\n\n/* ========================================\n SUBMIT BUTTON\n ======================================== */\n\n.feedback-survey-submit {\n flex: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: var(--spacing-2);\n min-height: 40px;\n padding: 0 var(--spacing-4);\n background: var(--color-primary);\n color: #ffffff;\n border: 1px solid var(--color-primary);\n border-radius: var(--radius-md);\n font-size: var(--font-size-sm);\n font-weight: var(--font-weight-medium);\n cursor: pointer;\n font-family: inherit;\n text-align: center;\n transition: all var(--transition-base);\n}\n\n.feedback-survey-submit:hover:not(:disabled) {\n background: var(--color-primary-hover);\n border-color: var(--color-primary-hover);\n}\n\n.feedback-survey-submit:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n}\n\n.feedback-survey-submit:active:not(:disabled) {\n transform: translateY(1px);\n transition-duration: 100ms;\n}\n\n.feedback-survey-submit iconify-icon,\n.feedback-survey-back iconify-icon {\n flex-shrink: 0;\n}\n\n/* ========================================\n ERROR\n ======================================== */\n\n.feedback-survey-error {\n margin-bottom: var(--spacing-3);\n background: #D13212;\n border-radius: var(--radius-md);\n color: #ffffff;\n font-size: var(--font-size-sm);\n font-weight: var(--font-weight-medium);\n padding: var(--spacing-3) var(--spacing-4);\n display: flex;\n align-items: center;\n gap: var(--spacing-2);\n}\n\n.feedback-survey-error iconify-icon {\n flex-shrink: 0;\n}\n\n/* ========================================\n THANK YOU SCREEN\n ======================================== */\n\n.feedback-survey-thankyou {\n display: flex;\n flex-direction: column;\n align-items: center;\n text-align: center;\n padding: var(--spacing-6) 0;\n}\n\n.feedback-survey-thankyou-icon {\n color: #10b981;\n margin-bottom: var(--spacing-4);\n display: block;\n}\n\n.feedback-survey-thankyou-title {\n margin: 0;\n font-size: var(--font-size-xl);\n font-weight: var(--font-weight-semibold);\n line-height: var(--line-height-snug);\n color: var(--color-text-primary);\n}\n\n.feedback-survey-thankyou-btn {\n margin-top: var(--spacing-5);\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: var(--spacing-2);\n height: 40px;\n padding: 0 var(--spacing-6);\n background: var(--color-primary);\n color: #ffffff;\n border: 1px solid var(--color-primary);\n border-radius: var(--radius-md);\n font-size: var(--font-size-sm);\n font-weight: var(--font-weight-medium);\n text-decoration: none;\n transition: all var(--transition-base);\n}\n\n.feedback-survey-thankyou-btn:hover {\n background: var(--color-primary-hover);\n border-color: var(--color-primary-hover);\n color: #ffffff;\n text-decoration: none;\n}\n\n/* ========================================\n DARK MODE — SELECTED STATE OVERRIDES\n ======================================== */\n\n.feedback-survey-theme-dark .feedback-survey-page-choice-btn.selected,\n.feedback-survey-theme-dark .feedback-survey-rating-scale-btn.selected,\n.feedback-survey-theme-dark .feedback-survey-nps-btn.selected {\n color: var(--color-text-primary);\n}\n\n/* ========================================\n NOTIFICATION TOASTS\n ======================================== */\n\n.product7-notification {\n position: fixed;\n top: var(--spacing-6);\n right: var(--spacing-6);\n padding: var(--spacing-3) var(--spacing-5);\n border-radius: var(--radius-xl);\n font-size: var(--font-size-sm);\n font-weight: var(--font-weight-medium);\n z-index: var(--z-notification);\n box-shadow: var(--shadow-lg);\n font-family: inherit;\n color: #fff;\n}\n\n.product7-notification > div {\n display: flex;\n align-items: center;\n gap: var(--spacing-2);\n}\n\n.product7-notification svg {\n width: 18px;\n height: 18px;\n flex-shrink: 0;\n}\n\n.product7-notification-success { background: #037F0C; }\n.product7-notification-error { background: #D13212; }\n.product7-notification-warning { background: #FF9900; color: #000; }\n.product7-notification-info { background: #0972D3; }\n\n/* ========================================\n RESPONSIVE\n ======================================== */\n\n@media (max-width: 768px) {\n .feedback-survey {\n min-width: 288px;\n padding: var(--spacing-5);\n }\n\n .feedback-survey-nps-btn {\n font-size: var(--font-size-xs);\n }\n\n .feedback-survey-csat-btn {\n font-size: 28px;\n min-width: 40px;\n min-height: 40px;\n }\n\n .feedback-survey-title {\n font-size: var(--font-size-lg);\n }\n\n .feedback-survey-description-primary .feedback-survey-description {\n font-size: var(--font-size-md);\n }\n\n .feedback-survey-rating-scale-btn {\n font-size: clamp(13px, 5vw, 16px);\n }\n}\n`;\n","import { baseStyles } from './base.js';\nimport { changelogStyles } from './changelog.js';\nimport { componentsStyles } from './components.js';\nimport { designTokens } from './design-tokens.js';\nimport { feedbackStyles } from './feedback.js';\nimport { liveChatStyles } from './liveChat.js';\nimport { surveyStyles } from './survey.js';\n\nexport const CSS_STYLES =\n\tdesignTokens +\n\tbaseStyles +\n\tcomponentsStyles +\n\tfeedbackStyles +\n\tchangelogStyles +\n\tsurveyStyles +\n\tliveChatStyles;\n\nexport {\n\tbaseStyles,\n\tchangelogStyles,\n\tcomponentsStyles,\n\tdesignTokens,\n\tfeedbackStyles,\n\tliveChatStyles,\n\tsurveyStyles,\n};\n","export function generateId(prefix = 'feedback') {\n\tconst timestamp = Date.now();\n\tconst random = Math.random().toString(36).substring(2, 9);\n\treturn `${prefix}_${timestamp}_${random}`;\n}\n\nexport function deepMerge(target, source) {\n\tconst result = { ...target };\n\n\tfor (const key in source) {\n\t\tif (source.hasOwnProperty(key)) {\n\t\t\tif (\n\t\t\t\tsource[key] &&\n\t\t\t\ttypeof source[key] === 'object' &&\n\t\t\t\t!Array.isArray(source[key])\n\t\t\t) {\n\t\t\t\tresult[key] = deepMerge(target[key] || {}, source[key]);\n\t\t\t} else {\n\t\t\t\tresult[key] = source[key];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn result;\n}\n\nexport function debounce(func, wait) {\n\tlet timeout;\n\treturn function executedFunction(...args) {\n\t\tconst later = () => {\n\t\t\tclearTimeout(timeout);\n\t\t\tfunc(...args);\n\t\t};\n\t\tclearTimeout(timeout);\n\t\ttimeout = setTimeout(later, wait);\n\t};\n}\n\nexport function throttle(func, limit) {\n\tlet lastFunc;\n\tlet lastRan;\n\treturn function (...args) {\n\t\tif (!lastRan) {\n\t\t\tfunc(...args);\n\t\t\tlastRan = Date.now();\n\t\t} else {\n\t\t\tclearTimeout(lastFunc);\n\t\t\tlastFunc = setTimeout(\n\t\t\t\t() => {\n\t\t\t\t\tif (Date.now() - lastRan >= limit) {\n\t\t\t\t\t\tfunc(...args);\n\t\t\t\t\t\tlastRan = Date.now();\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tlimit - (Date.now() - lastRan)\n\t\t\t);\n\t\t}\n\t};\n}\n\nexport function isValidEmail(email) {\n\tif (!email || typeof email !== 'string') return false;\n\n\tconst emailRegex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\n\treturn emailRegex.test(email.trim());\n}\n\nexport function sanitizeHTML(str) {\n\tif (!str || typeof str !== 'string') return '';\n\n\tconst div = document.createElement('div');\n\tdiv.textContent = str;\n\treturn div.innerHTML;\n}\n\nexport function getCSSProperty(element, property, fallback = '') {\n\tif (!element || !property) return fallback;\n\n\ttry {\n\t\tconst style = window.getComputedStyle(element);\n\t\treturn style.getPropertyValue(property) || fallback;\n\t} catch (error) {\n\t\treturn fallback;\n\t}\n}\n\nexport function isInViewport(element) {\n\tif (!element) return false;\n\n\tconst rect = element.getBoundingClientRect();\n\treturn (\n\t\trect.top >= 0 &&\n\t\trect.left >= 0 &&\n\t\trect.bottom <=\n\t\t\t(window.innerHeight || document.documentElement.clientHeight) &&\n\t\trect.right <= (window.innerWidth || document.documentElement.clientWidth)\n\t);\n}\n\nexport function scrollToElement(element, options = {}) {\n\tif (!element) return;\n\n\tconst defaultOptions = {\n\t\tbehavior: 'smooth',\n\t\tblock: 'center',\n\t\tinline: 'nearest',\n\t};\n\n\telement.scrollIntoView({ ...defaultOptions, ...options });\n}\n\nexport function getBrowserInfo() {\n\tconst userAgent = navigator.userAgent;\n\tconst platform = navigator.platform;\n\n\treturn {\n\t\tuserAgent,\n\t\tplatform,\n\t\tlanguage: navigator.language || navigator.userLanguage,\n\t\tcookieEnabled: navigator.cookieEnabled,\n\t\tscreenResolution: `${screen.width}x${screen.height}`,\n\t\twindowSize: `${window.innerWidth}x${window.innerHeight}`,\n\t\ttimezone: Intl.DateTimeFormat().resolvedOptions().timeZone,\n\t};\n}\n\nexport function formatFileSize(bytes) {\n\tif (bytes === 0) return '0 Bytes';\n\n\tconst k = 1024;\n\tconst sizes = ['Bytes', 'KB', 'MB', 'GB'];\n\tconst i = Math.floor(Math.log(bytes) / Math.log(k));\n\n\treturn parseFloat((bytes / Math.pow(k, i)).toFixed(2)) + ' ' + sizes[i];\n}\n\nexport function delay(ms) {\n\treturn new Promise((resolve) => setTimeout(resolve, ms));\n}\n\nexport function safeJsonParse(str, fallback = null) {\n\ttry {\n\t\treturn JSON.parse(str);\n\t} catch (error) {\n\t\treturn fallback;\n\t}\n}\n\nexport function escapeRegex(string) {\n\treturn string.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n}\n\nexport function getNestedProperty(obj, path, defaultValue = undefined) {\n\tif (!obj || !path) return defaultValue;\n\n\tconst keys = path.split('.');\n\tlet current = obj;\n\n\tfor (const key of keys) {\n\t\tif (current === null || current === undefined || !(key in current)) {\n\t\t\treturn defaultValue;\n\t\t}\n\t\tcurrent = current[key];\n\t}\n\n\treturn current;\n}\n\nexport function setNestedProperty(obj, path, value) {\n\tif (!obj || !path) return obj;\n\n\tconst keys = path.split('.');\n\tconst lastKey = keys.pop();\n\tlet current = obj;\n\n\tfor (const key of keys) {\n\t\tif (!(key in current) || typeof current[key] !== 'object') {\n\t\t\tcurrent[key] = {};\n\t\t}\n\t\tcurrent = current[key];\n\t}\n\n\tcurrent[lastKey] = value;\n\treturn obj;\n}\n\nexport function isBrowser() {\n\treturn typeof window !== 'undefined' && typeof document !== 'undefined';\n}\n\nexport function isMobile() {\n\tif (!isBrowser()) return false;\n\n\treturn (\n\t\t/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(\n\t\t\tnavigator.userAgent\n\t\t) || window.innerWidth <= 768\n\t);\n}\n\nexport function getCurrentTimestamp() {\n\treturn new Date().toISOString();\n}\n\nexport function validateConfig(config, required = []) {\n\tconst missing = [];\n\n\tfor (const key of required) {\n\t\tif (!config[key]) {\n\t\t\tmissing.push(key);\n\t\t}\n\t}\n\n\tif (missing.length > 0) {\n\t\tthrow new Error(`Missing required configuration: ${missing.join(', ')}`);\n\t}\n\n\treturn true;\n}\n","export class BaseWidget {\n\tstatic STORAGE_KEY = 'feedback_submitted';\n\tstatic DEFAULT_COOLDOWN_DAYS = 30;\n\n\tconstructor(options = {}) {\n\t\tthis.id = options.id;\n\t\tthis.sdk = options.sdk;\n\t\tthis.apiService = options.apiService;\n\t\tthis.type = options.type || 'base';\n\n\t\tthis.options = {\n\t\t\tcontainer: null,\n\t\t\tposition: this.sdk.config.position,\n\t\t\tboardName: this.sdk.config.boardName,\n\t\t\tdisplayMode: options.displayMode || 'panel',\n\t\t\tsize: options.size || 'medium',\n\t\t\tprimaryColor: options.primaryColor || '#155EEF',\n\t\t\tbackgroundColor: options.backgroundColor || '#ffffff',\n\t\t\ttextColor: options.textColor || '#1F2937',\n\t\t\tautoShow: false,\n\t\t\tshowBackdrop: true,\n\t\t\tcustomStyles: {},\n\t\t\tsuppressAfterSubmission: true,\n\t\t\tsuppressionDays: BaseWidget.DEFAULT_COOLDOWN_DAYS,\n\t\t\ttrigger: true,\n\t\t\t...options,\n\t\t};\n\n\t\tthis.element = null;\n\t\tthis.panelElement = null;\n\t\tthis.backdropElement = null;\n\t\tthis.mounted = false;\n\t\tthis.destroyed = false;\n\n\t\tthis.state = {\n\t\t\tisOpen: false,\n\t\t\tisLoading: false,\n\t\t\tisSubmitting: false,\n\t\t\ttitle: '',\n\t\t\tcontent: '',\n\t\t\temail: '',\n\t\t\tattachments: [],\n\t\t\terrors: {},\n\t\t};\n\n\t\tthis._bindMethods();\n\t}\n\n\tmount(container) {\n\t\tif (this.mounted || this.destroyed) return this;\n\n\t\tif (this.options.enabled === false) {\n\t\t\tthis.sdk.eventBus.emit('widget:suppressed', {\n\t\t\t\twidget: this,\n\t\t\t\ttype: this.type,\n\t\t\t\treason: 'disabled',\n\t\t\t});\n\t\t\treturn this;\n\t\t}\n\n\t\tif (this.options.suppressAfterSubmission && this._hasRecentlySubmitted()) {\n\t\t\tthis.sdk.eventBus.emit('widget:suppressed', {\n\t\t\t\twidget: this,\n\t\t\t\treason: 'recently_submitted',\n\t\t\t});\n\t\t\treturn this;\n\t\t}\n\n\t\tif (typeof container === 'string') {\n\t\t\tcontainer = document.querySelector(container);\n\t\t}\n\n\t\tif (!container) {\n\t\t\tcontainer = document.body;\n\t\t}\n\n\t\tthis.container = container;\n\t\tthis.element = this._render();\n\t\tthis.container.appendChild(this.element);\n\n\t\tthis.mounted = true;\n\t\tthis._attachEvents();\n\n\t\t// Bind to a custom trigger element if a selector or element was provided\n\t\tif (this.options.trigger && this.options.trigger !== true) {\n\t\t\tconst triggerEl =\n\t\t\t\ttypeof this.options.trigger === 'string'\n\t\t\t\t\t? document.querySelector(this.options.trigger)\n\t\t\t\t\t: this.options.trigger instanceof Element\n\t\t\t\t\t\t? this.options.trigger\n\t\t\t\t\t\t: null;\n\t\t\tif (triggerEl) {\n\t\t\t\ttriggerEl.addEventListener('click', () => this.open());\n\t\t\t}\n\t\t}\n\n\t\tthis.onMount();\n\n\t\tif (this.options.autoShow) {\n\t\t\tthis.show();\n\t\t}\n\n\t\tthis.sdk.eventBus.emit('widget:mounted', { widget: this });\n\t\treturn this;\n\t}\n\n\tshow() {\n\t\tif (this.element) {\n\t\t\tthis.element.style.display = 'block';\n\t\t}\n\t\treturn this;\n\t}\n\n\thide() {\n\t\tif (this.element) {\n\t\t\tthis.element.style.display = 'none';\n\t\t}\n\t\treturn this;\n\t}\n\n\topenPanel() {\n\t\tthis.state.isOpen = true;\n\n\t\tthis._renderPanel();\n\t\trequestAnimationFrame(() => {\n\t\t\tif (this.panelElement) {\n\t\t\t\tthis.panelElement.classList.add('open');\n\t\t\t}\n\t\t\tif (this.backdropElement) {\n\t\t\t\tthis.backdropElement.classList.add('show');\n\t\t\t}\n\t\t});\n\t}\n\n\t_showLoadingModal() {\n\t\tthis.state.isLoading = true;\n\n\t\tif (this.options.showBackdrop) {\n\t\t\tthis.backdropElement = document.createElement('div');\n\t\t\tthis.backdropElement.className = 'sdk-modal-backdrop';\n\t\t\tdocument.body.appendChild(this.backdropElement);\n\t\t}\n\n\t\tthis.loadingElement = document.createElement('div');\n\t\tthis.loadingElement.className = 'feedback-loading-modal';\n\t\tthis.loadingElement.innerHTML = `\n\t\t\t<div class=\"sdk-spinner\"></div>\n\t\t`;\n\t\tdocument.body.appendChild(this.loadingElement);\n\n\t\trequestAnimationFrame(() => {\n\t\t\tif (this.backdropElement) {\n\t\t\t\tthis.backdropElement.classList.add('show');\n\t\t\t}\n\t\t\tthis.loadingElement.classList.add('show');\n\t\t});\n\t}\n\n\t_hideLoadingModal() {\n\t\tthis.state.isLoading = false;\n\t\tif (this.loadingElement) {\n\t\t\tthis.loadingElement.remove();\n\t\t\tthis.loadingElement = null;\n\t\t}\n\t}\n\n\tclosePanel() {\n\t\tif (this.panelElement) {\n\t\t\tthis.panelElement.classList.remove('open');\n\t\t}\n\t\tif (this.backdropElement) {\n\t\t\tthis.backdropElement.classList.remove('show');\n\t\t}\n\n\t\tthis.state.isOpen = false;\n\t\tif (this.panelElement && this.panelElement.parentNode) {\n\t\t\tthis.panelElement.parentNode.removeChild(this.panelElement);\n\t\t\tthis.panelElement = null;\n\t\t}\n\t\tif (this.backdropElement && this.backdropElement.parentNode) {\n\t\t\tthis.backdropElement.parentNode.removeChild(this.backdropElement);\n\t\t\tthis.backdropElement = null;\n\t\t}\n\t\tthis._resetForm();\n\t}\n\n\tasync submitFeedback() {\n\t\tif (this.state.isSubmitting) return;\n\n\t\tthis._hideError();\n\n\t\ttry {\n\t\t\tthis.state.isSubmitting = true;\n\t\t\tthis._updateSubmitButton();\n\n\t\t\tconst payload = {\n\t\t\t\ttitle: this.state.title || 'Feedback',\n\t\t\t\tcontent: this.state.content,\n\t\t\t\temail: this.state.email,\n\t\t\t\tboard_id: this.options.boardName,\n\t\t\t\tattachments: this.state.attachments,\n\t\t\t};\n\n\t\t\tif (!this.state.title.trim()) {\n\t\t\t\tthis._showError('Please enter a title.');\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (!this.state.content.trim()) {\n\t\t\t\tthis._showError('Please enter your feedback message.');\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst response = await this.apiService.submitFeedback(payload);\n\n\t\t\tthis._trackSubmission();\n\n\t\t\tthis._showSuccessInPanel();\n\n\t\t\tthis.sdk.eventBus.emit('feedback:submitted', {\n\t\t\t\twidget: this,\n\t\t\t\tfeedback: response,\n\t\t\t});\n\t\t} catch (error) {\n\t\t\tthis._showError('Failed to submit feedback. Please try again.');\n\t\t\tthis.sdk.eventBus.emit('feedback:error', { widget: this, error });\n\t\t} finally {\n\t\t\tthis.state.isSubmitting = false;\n\t\t\tthis._updateSubmitButton();\n\t\t}\n\t}\n\n\thandleConfigUpdate(newConfig) {\n\t\tthis.options.theme = newConfig.theme;\n\t\tif (this.element) {\n\t\t\tthis._updateTheme();\n\t\t}\n\t}\n\n\tdestroy() {\n\t\tif (this.destroyed) return;\n\n\t\tthis.onDestroy();\n\t\tthis.closePanel();\n\n\t\tif (this.element && this.element.parentNode) {\n\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t}\n\n\t\tthis.destroyed = true;\n\t\tthis.mounted = false;\n\t\tthis.sdk.eventBus.emit('widget:destroyed', { widget: this });\n\t}\n\n\tonMount() {}\n\tonDestroy() {}\n\n\t_trackSubmission() {\n\t\ttry {\n\t\t\tconst workspace = this.sdk.config.workspace;\n\t\t\tconst storageKey = `${BaseWidget.STORAGE_KEY}_${workspace}`;\n\t\t\tconst data = {\n\t\t\t\tsubmittedAt: Date.now(),\n\t\t\t\tboardName: this.options.boardName,\n\t\t\t};\n\t\t\tlocalStorage.setItem(storageKey, JSON.stringify(data));\n\t\t} catch (e) {\n\t\t\tconsole.warn('Failed to track feedback submission:', e);\n\t\t}\n\t}\n\n\t_hasRecentlySubmitted() {\n\t\tconst cooldownMs = this.options.suppressionDays * 24 * 60 * 60 * 1000;\n\t\tconst now = Date.now();\n\n\t\tif (this.sdk.config.last_feedback_at) {\n\t\t\ttry {\n\t\t\t\tconst backendTimestamp = new Date(\n\t\t\t\t\tthis.sdk.config.last_feedback_at\n\t\t\t\t).getTime();\n\t\t\t\tif (now - backendTimestamp < cooldownMs) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\t// Invalid date format, continue to localStorage check\n\t\t\t}\n\t\t}\n\n\t\ttry {\n\t\t\tconst workspace = this.sdk.config.workspace;\n\t\t\tconst storageKey = `${BaseWidget.STORAGE_KEY}_${workspace}`;\n\t\t\tconst stored = localStorage.getItem(storageKey);\n\n\t\t\tif (!stored) return false;\n\n\t\t\tconst data = JSON.parse(stored);\n\t\t\tconst submittedAt = data.submittedAt;\n\n\t\t\treturn now - submittedAt < cooldownMs;\n\t\t} catch (e) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tclearSubmissionTracking() {\n\t\ttry {\n\t\t\tconst workspace = this.sdk.config.workspace;\n\t\t\tconst storageKey = `${BaseWidget.STORAGE_KEY}_${workspace}`;\n\t\t\tlocalStorage.removeItem(storageKey);\n\t\t} catch (e) {\n\t\t\tconsole.warn('Failed to clear submission tracking:', e);\n\t\t}\n\t}\n\n\tshouldShow() {\n\t\tif (!this.options.suppressAfterSubmission) return true;\n\t\treturn !this._hasRecentlySubmitted();\n\t}\n\n\t_render() {\n\t\tthrow new Error('_render() must be implemented by concrete widget');\n\t}\n\n\t_attachEvents() {\n\t\t// Override in concrete widgets\n\t}\n\n\t_bindMethods() {\n\t\tthis.openPanel = this.openPanel.bind(this);\n\t\tthis.closePanel = this.closePanel.bind(this);\n\t\tthis.submitFeedback = this.submitFeedback.bind(this);\n\t}\n\n\t_renderPanel() {\n\t\tif (this.panelElement) return;\n\n\t\tif (this.options.showBackdrop && !this.backdropElement) {\n\t\t\tthis.backdropElement = document.createElement('div');\n\t\t\tthis.backdropElement.className = 'sdk-modal-backdrop';\n\t\t\tdocument.body.appendChild(this.backdropElement);\n\n\t\t\tthis.backdropElement.addEventListener('click', this.closePanel);\n\t\t}\n\n\t\tconst modeClass =\n\t\t\tthis.options.displayMode === 'modal'\n\t\t\t\t? 'feedback-modal'\n\t\t\t\t: 'feedback-panel';\n\t\tconst sizeClass = `size-${this.options.size}`;\n\t\tthis.panelElement = document.createElement('div');\n\t\tconst themeClass = `theme-${this.options.theme || 'light'}`;\n\t\tconst isLeftPosition =\n\t\t\tmodeClass === 'feedback-panel' &&\n\t\t\tString(this.options.position).includes('left');\n\t\tconst directionClass = isLeftPosition ? 'panel-from-left' : '';\n\t\tthis.panelElement.className =\n\t\t\t`${modeClass} ${sizeClass} ${themeClass} ${directionClass}`.trim();\n\t\tthis.panelElement.style.setProperty(\n\t\t\t'--color-primary',\n\t\t\tthis.options.primaryColor\n\t\t);\n\t\tthis.panelElement.style.setProperty(\n\t\t\t'--feedback-panel-bg',\n\t\t\tthis.options.backgroundColor\n\t\t);\n\t\tthis.panelElement.style.setProperty(\n\t\t\t'--feedback-panel-text',\n\t\t\tthis.options.textColor\n\t\t);\n\t\tthis.panelElement.innerHTML = this._getPanelHTML();\n\n\t\tdocument.body.appendChild(this.panelElement);\n\t\tthis._attachPanelEvents();\n\n\t\tconst firstInput = this.panelElement.querySelector('input, textarea');\n\t\tif (firstInput) {\n\t\t\tsetTimeout(() => firstInput.focus(), 350);\n\t\t}\n\t}\n\n\t_getPanelHTML() {\n\t\treturn `\n <div class=\"feedback-panel-content\">\n<div class=\"feedback-panel-header\">\n <h3>Send Feedback</h3>\n <button class=\"sdk-close-btn\" type=\"button\" aria-label=\"Close\">\n <iconify-icon icon=\"ph:x\" width=\"18\" height=\"18\"></iconify-icon>\n </button>\n</div>\n <div class=\"feedback-panel-body\">\n <form class=\"feedback-form\">\n <div class=\"sdk-form-group\">\n <label class=\"sdk-label\" for=\"feedback-title-${this.id}\">Title <span class=\"sdk-required\">*</span></label>\n <input \n type=\"text\" \n id=\"feedback-title-${this.id}\" \n name=\"title\" \n class=\"sdk-input\"\n placeholder=\"Brief description of your feedback\"\n value=\"${this.state.title}\"\n />\n </div>\n <div class=\"sdk-form-group\">\n <label class=\"sdk-label\" for=\"feedback-content-${this.id}\">Message <span class=\"sdk-required\">*</span></label>\n <textarea \n id=\"feedback-content-${this.id}\" \n name=\"content\" \n class=\"sdk-textarea\"\n placeholder=\"Tell us what you think...\"\n required\n >${this.state.content}</textarea>\n </div>\n <div class=\"feedback-error\" role=\"alert\"></div>\n <div class=\"feedback-form-actions\">\n <button type=\"submit\" class=\"sdk-btn-primary sdk-btn-block\">\n ${this.state.isSubmitting ? 'Sending...' : 'Send Feedback'}\n </button>\n </div>\n </form>\n </div>\n </div>\n `;\n\t}\n\n\t_attachPanelEvents() {\n\t\tconst panel = this.panelElement;\n\n\t\tpanel\n\t\t\t.querySelector('.sdk-close-btn')\n\t\t\t.addEventListener('click', this.closePanel);\n\n\t\tconst form = panel.querySelector('.feedback-form');\n\t\tform.addEventListener('submit', (e) => {\n\t\t\te.preventDefault();\n\t\t\tthis.submitFeedback();\n\t\t});\n\n\t\tpanel\n\t\t\t.querySelector('input[name=\"title\"]')\n\t\t\t.addEventListener('input', (e) => {\n\t\t\t\tthis.state.title = e.target.value;\n\t\t\t});\n\n\t\tpanel\n\t\t\t.querySelector('textarea[name=\"content\"]')\n\t\t\t.addEventListener('input', (e) => {\n\t\t\t\tthis.state.content = e.target.value;\n\t\t\t});\n\n\t\tconst handleEscape = (e) => {\n\t\t\tif (e.key === 'Escape') {\n\t\t\t\tthis.closePanel();\n\t\t\t\tdocument.removeEventListener('keydown', handleEscape);\n\t\t\t}\n\t\t};\n\t\tdocument.addEventListener('keydown', handleEscape);\n\t}\n\n\t_updateSubmitButton() {\n\t\tif (this.panelElement) {\n\t\t\tconst submitBtn = this.panelElement.querySelector('.sdk-btn-primary');\n\t\t\tif (submitBtn) {\n\t\t\t\tsubmitBtn.disabled = this.state.isSubmitting;\n\t\t\t\tsubmitBtn.innerHTML = this.state.isSubmitting\n\t\t\t\t\t? `<iconify-icon icon=\"ph:circle-notch\" width=\"16\" height=\"16\" style=\"animation: spin 0.8s linear infinite;\"></iconify-icon> Sending...`\n\t\t\t\t\t: `Send Feedback`;\n\t\t\t}\n\t\t}\n\t}\n\n\t_showError(message) {\n\t\tif (this.panelElement) {\n\t\t\tconst errorElement = this.panelElement.querySelector('.feedback-error');\n\t\t\tif (errorElement) {\n\t\t\t\terrorElement.textContent = message;\n\t\t\t\terrorElement.classList.add('show');\n\t\t\t}\n\t\t}\n\t}\n\n\t_hideError() {\n\t\tif (this.panelElement) {\n\t\t\tconst errorElement = this.panelElement.querySelector('.feedback-error');\n\t\t\tif (errorElement) {\n\t\t\t\terrorElement.classList.remove('show');\n\t\t\t}\n\t\t}\n\t}\n\n\t_showSuccessInPanel() {\n\t\tif (!this.panelElement) return;\n\n\t\tconst content = this.panelElement.querySelector('.feedback-panel-content');\n\t\tif (!content) return;\n\n\t\tcontent.innerHTML = `\n\t\t\t<div style=\"display: flex; flex-direction: column; align-items: center; justify-content: center; height: 100%; padding: 40px 24px; text-align: center;\">\n\t\t\t\t<div style=\"width: 56px; height: 56px; border-radius: 50%; background: #037F0C; display: flex; align-items: center; justify-content: center; margin-bottom: 20px;\">\n\t\t\t\t\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"28\" height=\"28\" fill=\"none\" stroke=\"#ffffff\" stroke-width=\"24\" stroke-linecap=\"round\" stroke-linejoin=\"round\" viewBox=\"0 0 256 256\">\n\t\t\t\t\t\t<polyline points=\"216,72 96,192 40,136\"/>\n\t\t\t\t\t</svg>\n\t\t\t\t</div>\n\t\t\t\t<h3 style=\"margin: 0 0 8px; font-size: 1.25rem; font-weight: 600; color: var(--feedback-panel-text, #1d1d1f);\">Thank you!</h3>\n\t\t\t\t<p style=\"margin: 0; font-size: 0.875rem; color: #6b7280; line-height: 1.5;\">Your feedback has been submitted successfully.</p>\n\t\t\t</div>\n\t\t`;\n\n\t\tsetTimeout(() => this.closePanel(), 2000);\n\t}\n\n\t_resetForm() {\n\t\tthis.state.title = '';\n\t\tthis.state.content = '';\n\t\tthis.state.email = '';\n\t\tthis.state.errors = {};\n\t}\n\n\t_updateTheme() {\n\t\t// No longer needed - single theme\n\t}\n\n\topen() {\n\t\tthis.openPanel();\n\t\treturn this;\n\t}\n\n\tclose() {\n\t\tthis.closePanel();\n\t\treturn this;\n\t}\n\n\ttoggle() {\n\t\tif (this.state.isOpen) {\n\t\t\tthis.closePanel();\n\t\t} else {\n\t\t\tthis.openPanel();\n\t\t}\n\t\treturn this;\n\t}\n\n\topenModal() {\n\t\tthis.openPanel();\n\t}\n\n\tcloseModal() {\n\t\tthis.closePanel();\n\t}\n}\n","import { BaseWidget } from './BaseWidget.js';\n\nexport class ButtonWidget extends BaseWidget {\n\tconstructor(options) {\n\t\tsuper({ ...options, type: 'button' });\n\t\tthis.isMinimized = false;\n\t\tthis._hiddenForOpenPanel = false;\n\t}\n\n\t_hasTrigger() {\n\t\treturn this.options.trigger === true || this.options.trigger === undefined;\n\t}\n\n\t_render() {\n\t\tif (!this._hasTrigger()) {\n\t\t\t// No built-in button — widget is opened programmatically or via custom trigger\n\t\t\tconst placeholder = document.createElement('div');\n\t\t\tplaceholder.style.display = 'none';\n\t\t\treturn placeholder;\n\t\t}\n\n\t\tconst buttonText =\n\t\t\tthis.options.buttonText ||\n\t\t\tthis.options.triggerText ||\n\t\t\tthis.options.label ||\n\t\t\tthis.options.text ||\n\t\t\t'Feedback';\n\n\t\tconst button = document.createElement('div');\n\t\tbutton.className = `feedback-widget-button position-${this.options.position}`;\n\t\tbutton.innerHTML = `\n <button class=\"feedback-trigger-btn\" type=\"button\">\n <svg class=\"feedback-icon\" xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" fill=\"currentColor\" viewBox=\"0 0 256 256\">\n <path d=\"M224,48H32a8,8,0,0,0-8,8V192a16,16,0,0,0,16,16H216a16,16,0,0,0,16-16V56A8,8,0,0,0,224,48Zm-8,144H40V74.19l82.59,75.71a8,8,0,0,0,10.82,0L216,74.19V192Z\"/>\n </svg>\n <span class=\"feedback-text\">${buttonText}</span>\n </button>\n `;\n\n\t\tif (this.options.customStyles) {\n\t\t\tObject.assign(button.style, this.options.customStyles);\n\t\t}\n\n\t\treturn button;\n\t}\n\n\t_attachEvents() {\n\t\tif (!this._hasTrigger()) return;\n\n\t\tconst button = this.element.querySelector('.feedback-trigger-btn');\n\n\t\tbutton.addEventListener('click', () => {\n\t\t\tthis.openPanel();\n\t\t});\n\n\t\tbutton.addEventListener('pointerup', (e) => {\n\t\t\tif (e.pointerType === 'mouse') return;\n\t\t\tthis.openPanel();\n\t\t});\n\t}\n\n\topenPanel() {\n\t\tif (this._hasTrigger() && !this.state.isOpen) {\n\t\t\tthis._hiddenForOpenPanel = true;\n\t\t\tthis.hide();\n\t\t}\n\t\tsuper.openPanel();\n\t}\n\n\tclosePanel() {\n\t\tconst shouldRestoreButton = this._hiddenForOpenPanel;\n\t\tsuper.closePanel();\n\n\t\tif (shouldRestoreButton) {\n\t\t\tsetTimeout(() => {\n\t\t\t\tif (!this.destroyed && !this.options._noTriggerButton) {\n\t\t\t\t\tthis.show();\n\t\t\t\t}\n\t\t\t\tthis._hiddenForOpenPanel = false;\n\t\t\t}, 320);\n\t\t}\n\t}\n\n\tmount(container) {\n\t\tsuper.mount(container);\n\t}\n\n\tupdateText(text) {\n\t\tconst textEl = this.element?.querySelector('.feedback-text');\n\t\tif (textEl) {\n\t\t\ttextEl.textContent = text;\n\t\t}\n\t}\n\n\tupdatePosition(position) {\n\t\tthis.options.position = position;\n\t\tif (this.element) {\n\t\t\tthis.element.className = this.element.className.replace(\n\t\t\t\t/position-\\w+/,\n\t\t\t\t`position-${position}`\n\t\t\t);\n\t\t}\n\t}\n}\n","import { BaseWidget } from './BaseWidget.js';\n\nexport class ChangelogWidget extends BaseWidget {\n\tconstructor(options) {\n\t\tsuper({ ...options, type: 'changelog' });\n\t\tthis.changelogs = [];\n\t\tthis.isLoading = false;\n\t\tthis.modalElement = null;\n\t\tthis.sidebarElement = null;\n\t\tthis.listModalBackdropElement = null;\n\t\tthis.currentIndex = 0;\n\t}\n\n\t_hasTrigger() {\n\t\treturn this.options.trigger === true || this.options.trigger === undefined;\n\t}\n\n\t_render() {\n\t\tif (!this._hasTrigger()) {\n\t\t\tconst placeholder = document.createElement('div');\n\t\t\tplaceholder.style.display = 'none';\n\t\t\treturn placeholder;\n\t\t}\n\n\t\tconst trigger = document.createElement('div');\n\t\ttrigger.className = `changelog-widget position-${this.options.position} changelog-theme-${this.options.theme || 'light'}`;\n\t\ttrigger.innerHTML = `\n\t\t\t<button class=\"changelog-trigger-btn\" type=\"button\" aria-label=\"View Updates\">\n\t\t\t\t<svg class=\"changelog-icon\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\n\t\t\t\t\t<path d=\"M5.8 21L7.4 14L2 9.2L9.2 8.6L12 2L14.8 8.6L22 9.2L16.6 14L18.2 21L12 17.3L5.8 21Z\"/>\n\t\t\t\t</svg>\n\t\t\t\t<span class=\"changelog-text\">${this.options.triggerText || \"What's New\"}</span>\n\t\t\t\t<span class=\"changelog-confetti-emoji\">🎉</span>\n\t\t\t\t${this.options.showBadge ? '<span class=\"changelog-badge\"></span>' : ''}\n\t\t\t</button>\n\t\t`;\n\n\t\tif (this.options.customStyles) {\n\t\t\tObject.assign(trigger.style, this.options.customStyles);\n\t\t}\n\n\t\treturn trigger;\n\t}\n\n\t_attachEvents() {\n\t\tif (!this._hasTrigger()) return;\n\n\t\tconst button = this.element.querySelector('.changelog-trigger-btn');\n\t\tbutton.addEventListener('click', () => {\n\t\t\tthis.openSidebar();\n\t\t});\n\t}\n\n\tasync openModal() {\n\t\tif (this.modalElement) return;\n\n\t\tthis.state.isOpen = true;\n\t\tthis._createModal();\n\n\t\tif (this.changelogs.length === 0) {\n\t\t\tawait this._loadChangelogs();\n\t\t}\n\n\t\tthis.currentIndex = 0;\n\t\tthis._renderCurrentChangelog();\n\n\t\tdocument.body.style.overflow = 'hidden';\n\n\t\trequestAnimationFrame(() => {\n\t\t\tif (this.modalElement) {\n\t\t\t\tthis.modalElement.classList.add('open');\n\t\t\t}\n\t\t\tif (this.backdropElement) {\n\t\t\t\tthis.backdropElement.classList.add('show');\n\t\t\t}\n\t\t});\n\t}\n\n\tcloseModal() {\n\t\tdocument.body.style.overflow = '';\n\n\t\tif (this.modalElement) {\n\t\t\tthis.modalElement.classList.remove('open');\n\t\t}\n\t\tif (this.backdropElement) {\n\t\t\tthis.backdropElement.classList.remove('show');\n\t\t}\n\n\t\tsetTimeout(() => {\n\t\t\tthis.state.isOpen = false;\n\t\t\tif (this.modalElement && this.modalElement.parentNode) {\n\t\t\t\tthis.modalElement.parentNode.removeChild(this.modalElement);\n\t\t\t\tthis.modalElement = null;\n\t\t\t}\n\t\t\tif (this.backdropElement && this.backdropElement.parentNode) {\n\t\t\t\tthis.backdropElement.parentNode.removeChild(this.backdropElement);\n\t\t\t\tthis.backdropElement = null;\n\t\t\t}\n\t\t}, 300);\n\t}\n\n\t_createModal() {\n\t\tif (this.options.showBackdrop !== false) {\n\t\t\tthis.backdropElement = document.createElement('div');\n\t\t\tthis.backdropElement.className = `changelog-modal-backdrop changelog-theme-${this.options.theme || 'light'}`;\n\t\t\tdocument.body.appendChild(this.backdropElement);\n\t\t\tthis.backdropElement.addEventListener('click', () => this.closeModal());\n\t\t}\n\n\t\tthis.modalElement = document.createElement('div');\n\t\tthis.modalElement.className = `changelog-modal changelog-theme-${this.options.theme || 'light'}`;\n\t\tthis.modalElement.innerHTML = `\n\t\t\t<div class=\"changelog-modal-container\">\n\t\t\t\t<button class=\"changelog-modal-close\" type=\"button\" aria-label=\"Close\">\n\t\t\t\t\t<iconify-icon icon=\"ph:x\" width=\"18\" height=\"18\"></iconify-icon>\n\t\t\t\t</button>\n\t\t\t\t<div class=\"changelog-modal-content\">\n\t\t\t\t\t<div class=\"changelog-loading\">\n\t\t\t\t\t\t<div class=\"sdk-spinner\"></div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t`;\n\n\t\tdocument.body.appendChild(this.modalElement);\n\n\t\tthis.modalElement\n\t\t\t.querySelector('.changelog-modal-container')\n\t\t\t.addEventListener('click', (e) => e.stopPropagation());\n\n\t\tthis.modalElement\n\t\t\t.querySelector('.changelog-modal-close')\n\t\t\t.addEventListener('click', () => this.closeModal());\n\n\t\tthis._escapeHandler = (e) => {\n\t\t\tif (e.key === 'Escape') this.closeModal();\n\t\t};\n\t\tdocument.addEventListener('keydown', this._escapeHandler);\n\t}\n\n\tasync openSidebar() {\n\t\tif (this.listModalElement) return;\n\n\t\tif (this.modalElement) {\n\t\t\tthis.closeModal();\n\t\t\tawait new Promise((resolve) => setTimeout(resolve, 350));\n\t\t}\n\n\t\tthis.state.isOpen = true;\n\t\tthis._createListModal();\n\n\t\tif (this.changelogs.length === 0) {\n\t\t\tawait this._loadChangelogs();\n\t\t}\n\n\t\tthis._renderChangelogList();\n\n\t\tdocument.body.style.overflow = 'hidden';\n\n\t\trequestAnimationFrame(() => {\n\t\t\tif (this.listModalElement) {\n\t\t\t\tthis.listModalElement.classList.add('open');\n\t\t\t\tthis._showConfetti();\n\t\t\t}\n\t\t\tif (this.listModalBackdropElement) {\n\t\t\t\tthis.listModalBackdropElement.classList.add('show');\n\t\t\t}\n\t\t});\n\t}\n\n\t_showConfetti() {\n\t\tconst colors = [\n\t\t\t'#FF6B6B',\n\t\t\t'#4ECDC4',\n\t\t\t'#FFE66D',\n\t\t\t'#95E1D3',\n\t\t\t'#F38181',\n\t\t\t'#AA96DA',\n\t\t\t'#FCBAD3',\n\t\t\t'#A8D8EA',\n\t\t];\n\t\tconst confettiCount = 50;\n\t\tconst container = document.createElement('div');\n\t\tcontainer.className = 'changelog-confetti-container';\n\t\tdocument.body.appendChild(container);\n\n\t\tfor (let i = 0; i < confettiCount; i++) {\n\t\t\tconst confetti = document.createElement('div');\n\t\t\tconfetti.className = 'changelog-confetti';\n\t\t\tconfetti.style.left = Math.random() * 100 + '%';\n\t\t\tconfetti.style.backgroundColor =\n\t\t\t\tcolors[Math.floor(Math.random() * colors.length)];\n\t\t\tconfetti.style.animationDelay = Math.random() * 0.5 + 's';\n\t\t\tconfetti.style.animationDuration = Math.random() * 1 + 1.5 + 's';\n\n\t\t\tconst shapes = ['circle', 'square', 'rectangle'];\n\t\t\tconst shape = shapes[Math.floor(Math.random() * shapes.length)];\n\t\t\tif (shape === 'circle') {\n\t\t\t\tconfetti.style.borderRadius = '50%';\n\t\t\t\tconfetti.style.width = Math.random() * 8 + 4 + 'px';\n\t\t\t\tconfetti.style.height = confetti.style.width;\n\t\t\t} else if (shape === 'rectangle') {\n\t\t\t\tconfetti.style.width = Math.random() * 4 + 3 + 'px';\n\t\t\t\tconfetti.style.height = Math.random() * 10 + 8 + 'px';\n\t\t\t} else {\n\t\t\t\tconfetti.style.width = Math.random() * 8 + 4 + 'px';\n\t\t\t\tconfetti.style.height = confetti.style.width;\n\t\t\t}\n\n\t\t\tcontainer.appendChild(confetti);\n\t\t}\n\n\t\tsetTimeout(() => {\n\t\t\tif (container.parentNode) container.parentNode.removeChild(container);\n\t\t}, 2500);\n\t}\n\n\tcloseSidebar() {\n\t\tdocument.body.style.overflow = '';\n\n\t\tif (this.listModalElement) {\n\t\t\tthis.listModalElement.classList.remove('open');\n\t\t}\n\t\tif (this.listModalBackdropElement) {\n\t\t\tthis.listModalBackdropElement.classList.remove('show');\n\t\t}\n\n\t\tsetTimeout(() => {\n\t\t\tthis.state.isOpen = false;\n\t\t\tif (this.listModalElement && this.listModalElement.parentNode) {\n\t\t\t\tthis.listModalElement.parentNode.removeChild(this.listModalElement);\n\t\t\t\tthis.listModalElement = null;\n\t\t\t}\n\t\t\tif (\n\t\t\t\tthis.listModalBackdropElement &&\n\t\t\t\tthis.listModalBackdropElement.parentNode\n\t\t\t) {\n\t\t\t\tthis.listModalBackdropElement.parentNode.removeChild(\n\t\t\t\t\tthis.listModalBackdropElement\n\t\t\t\t);\n\t\t\t\tthis.listModalBackdropElement = null;\n\t\t\t}\n\t\t\tif (this._listModalEscapeHandler) {\n\t\t\t\tdocument.removeEventListener('keydown', this._listModalEscapeHandler);\n\t\t\t}\n\t\t}, 300);\n\t}\n\n\t_createListModal() {\n\t\tif (this.options.showBackdrop !== false) {\n\t\t\tthis.listModalBackdropElement = document.createElement('div');\n\t\t\tthis.listModalBackdropElement.className = `changelog-list-modal-backdrop changelog-theme-${this.options.theme || 'light'}`;\n\t\t\tdocument.body.appendChild(this.listModalBackdropElement);\n\t\t\tthis.listModalBackdropElement.addEventListener('click', () =>\n\t\t\t\tthis.closeSidebar()\n\t\t\t);\n\t\t}\n\n\t\tthis.listModalElement = document.createElement('div');\n\t\tthis.listModalElement.className = `changelog-list-modal changelog-theme-${this.options.theme || 'light'}`;\n\t\tthis.listModalElement.innerHTML = `\n\t\t\t<div class=\"changelog-list-modal-container\">\n\t\t\t\t<div class=\"changelog-list-modal-header\">\n\t\t\t\t\t<h2>${this.options.title || \"What's New\"} 🎉</h2>\n\t\t\t\t\t<button class=\"changelog-list-modal-close\" type=\"button\" aria-label=\"Close\">\n\t\t\t\t\t\t<iconify-icon icon=\"ph:x\" width=\"18\" height=\"18\"></iconify-icon>\n\t\t\t\t\t</button>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"changelog-list-modal-body\">\n\t\t\t\t\t<div class=\"changelog-loading\">\n\t\t\t\t\t\t<div class=\"sdk-spinner\"></div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t`;\n\n\t\tdocument.body.appendChild(this.listModalElement);\n\n\t\tthis.listModalElement\n\t\t\t.querySelector('.changelog-list-modal-container')\n\t\t\t.addEventListener('click', (e) => e.stopPropagation());\n\n\t\tthis.listModalElement\n\t\t\t.querySelector('.changelog-list-modal-close')\n\t\t\t.addEventListener('click', () => this.closeSidebar());\n\n\t\tthis._listModalEscapeHandler = (e) => {\n\t\t\tif (e.key === 'Escape') this.closeSidebar();\n\t\t};\n\t\tdocument.addEventListener('keydown', this._listModalEscapeHandler);\n\t}\n\n\t_renderChangelogList() {\n\t\tconst body = this.listModalElement.querySelector(\n\t\t\t'.changelog-list-modal-body'\n\t\t);\n\n\t\tif (this.isLoading) return;\n\n\t\tif (this.changelogs.length === 0) {\n\t\t\tbody.innerHTML = `\n\t\t\t\t<div class=\"changelog-empty\">\n\t\t\t\t\t<svg width=\"48\" height=\"48\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\">\n\t\t\t\t\t\t<path d=\"M14.5 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7.5L14.5 2z\"/>\n\t\t\t\t\t\t<polyline points=\"14,2 14,8 20,8\"/>\n\t\t\t\t\t</svg>\n\t\t\t\t\t<p>No updates yet</p>\n\t\t\t\t</div>\n\t\t\t`;\n\t\t\treturn;\n\t\t}\n\n\t\tbody.innerHTML = `\n\t\t\t<div class=\"changelog-list\">\n\t\t\t\t${this.changelogs.map((changelog, index) => this._renderChangelogListItem(changelog, index)).join('')}\n\t\t\t</div>\n\t\t`;\n\n\t\tbody.querySelectorAll('.changelog-list-item').forEach((item, index) => {\n\t\t\titem.addEventListener('click', () => {\n\t\t\t\tthis._handleViewUpdate(this.changelogs[index]);\n\t\t\t});\n\t\t});\n\t}\n\n\t_renderChangelogListItem(changelog, index) {\n\t\tconst hasImage = changelog.cover_image || changelog.image;\n\t\tconst imageUrl = changelog.cover_image || changelog.image;\n\t\tconst date = changelog.published_at\n\t\t\t? this._formatDate(changelog.published_at)\n\t\t\t: '';\n\t\tconst description = this._stripHtml(\n\t\t\tchangelog.excerpt || changelog.description\n\t\t);\n\t\tconst labelsHTML =\n\t\t\tchangelog.labels && changelog.labels.length > 0\n\t\t\t\t? `<div class=\"changelog-list-item-labels\">\n\t\t\t\t\t\t${changelog.labels\n\t\t\t\t\t\t\t.map(\n\t\t\t\t\t\t\t\t(label) =>\n\t\t\t\t\t\t\t\t\t`<span class=\"changelog-label\" style=\"background-color: ${label.color || '#E5E7EB'}; color: ${this._getContrastColor(label.color || '#E5E7EB')}\">${label.name}</span>`\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t.join('')}\n\t\t\t\t\t</div>`\n\t\t\t\t: '';\n\n\t\treturn `\n\t\t\t<div class=\"changelog-list-item\" data-index=\"${index}\">\n\t\t\t\t<div class=\"changelog-list-item-content\">\n\t\t\t\t\t<div class=\"changelog-list-item-meta\">\n\t\t\t\t\t\t${date ? `<span class=\"changelog-list-item-date\">${date}</span>` : ''}\n\t\t\t\t\t\t${labelsHTML}\n\t\t\t\t\t</div>\n\t\t\t\t\t<h3 class=\"changelog-list-item-title\">${changelog.title}</h3>\n\t\t\t\t\t${description ? `<p class=\"changelog-list-item-description\">${description}</p>` : ''}\n\t\t\t\t</div>\n\t\t\t\t${hasImage ? `<div class=\"changelog-list-item-image\"><img src=\"${imageUrl}\" alt=\"${changelog.title}\" loading=\"lazy\" /></div>` : ''}\n\t\t\t\t<iconify-icon icon=\"ph:caret-right\" class=\"changelog-list-item-arrow\" width=\"16\" height=\"16\"></iconify-icon>\n\t\t\t</div>\n\t\t`;\n\t}\n\n\tasync _loadChangelogs() {\n\t\tthis.isLoading = true;\n\n\t\ttry {\n\t\t\tconst result = await this.apiService.getChangelogs();\n\t\t\tthis.changelogs = result.data || [];\n\t\t\tthis.sdk.eventBus.emit('changelog:loaded', {\n\t\t\t\tchangelogs: this.changelogs,\n\t\t\t});\n\t\t} catch (error) {\n\t\t\tthis.changelogs = [];\n\t\t\tthis.sdk.eventBus.emit('changelog:error', { error });\n\t\t} finally {\n\t\t\tthis.isLoading = false;\n\t\t}\n\t}\n\n\t_renderCurrentChangelog() {\n\t\tconst content = this.modalElement.querySelector('.changelog-modal-content');\n\n\t\tif (this.isLoading) return;\n\n\t\tif (this.changelogs.length === 0) {\n\t\t\tcontent.innerHTML = `\n\t\t\t\t<div class=\"changelog-empty\">\n\t\t\t\t\t<svg width=\"48\" height=\"48\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\">\n\t\t\t\t\t\t<path d=\"M14.5 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7.5L14.5 2z\"/>\n\t\t\t\t\t\t<polyline points=\"14,2 14,8 20,8\"/>\n\t\t\t\t\t</svg>\n\t\t\t\t\t<p>No updates yet</p>\n\t\t\t\t</div>\n\t\t\t`;\n\t\t\treturn;\n\t\t}\n\n\t\tconst changelog = this.changelogs[this.currentIndex];\n\t\tconst hasImage = changelog.cover_image || changelog.image;\n\t\tconst imageUrl = changelog.cover_image || changelog.image;\n\t\tconst hasMultiple = this.changelogs.length > 1;\n\t\tconst description = this._stripHtml(\n\t\t\tchangelog.excerpt || changelog.description\n\t\t);\n\n\t\tcontent.innerHTML = `\n\t\t\t<div class=\"changelog-popup-item\">\n\t\t\t\t${\n\t\t\t\t\thasImage\n\t\t\t\t\t\t? `\n\t\t\t\t\t<div class=\"changelog-popup-image\">\n\t\t\t\t\t\t<img src=\"${imageUrl}\" alt=\"${changelog.title}\" loading=\"lazy\" />\n\t\t\t\t\t</div>\n\t\t\t\t`\n\t\t\t\t\t\t: ''\n\t\t\t\t}\n\t\t\t\t<div class=\"changelog-popup-body\">\n\t\t\t\t\t<h2 class=\"changelog-popup-title\">${changelog.title}</h2>\n\t\t\t\t\t${description ? `<p class=\"changelog-popup-description\">${description}</p>` : ''}\n\t\t\t\t\t<button class=\"changelog-popup-btn\" type=\"button\">\n\t\t\t\t\t\t${this.options.viewButtonText || 'View Update'}\n\t\t\t\t\t</button>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"changelog-popup-footer\">\n\t\t\t\t\t${\n\t\t\t\t\t\thasMultiple\n\t\t\t\t\t\t\t? `\n\t\t\t\t\t\t<div class=\"changelog-popup-dots\">\n\t\t\t\t\t\t\t${this.changelogs\n\t\t\t\t\t\t\t\t.map(\n\t\t\t\t\t\t\t\t\t(_, i) => `\n\t\t\t\t\t\t\t\t<span class=\"changelog-dot ${i === this.currentIndex ? 'active' : ''}\" data-index=\"${i}\"></span>\n\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.join('')}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t`\n\t\t\t\t\t\t\t: ''\n\t\t\t\t\t}\n\t\t\t\t\t<button class=\"changelog-view-all-btn\" type=\"button\">\n\t\t\t\t\t\tView all updates\n\t\t\t\t\t\t<iconify-icon icon=\"ph:arrow-right\" width=\"16\" height=\"16\"></iconify-icon>\n\t\t\t\t\t</button>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t`;\n\n\t\tcontent\n\t\t\t.querySelector('.changelog-popup-btn')\n\t\t\t.addEventListener('click', () => {\n\t\t\t\tthis._handleViewUpdate(changelog);\n\t\t\t});\n\n\t\tcontent\n\t\t\t.querySelector('.changelog-view-all-btn')\n\t\t\t.addEventListener('click', () => {\n\t\t\t\tthis.closeModal();\n\t\t\t\tsetTimeout(() => this.openSidebar(), 350);\n\t\t\t});\n\n\t\tif (hasMultiple) {\n\t\t\tcontent.querySelectorAll('.changelog-dot').forEach((dot) => {\n\t\t\t\tdot.addEventListener('click', (e) => {\n\t\t\t\t\tthis.currentIndex = parseInt(e.target.dataset.index, 10);\n\t\t\t\t\tthis._renderCurrentChangelog();\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\t}\n\n\t_handleViewUpdate(changelog) {\n\t\tthis.sdk.eventBus.emit('changelog:view', { changelog });\n\n\t\tconst changelogBase = (this.options.changelogBaseUrl || '').replace(\n\t\t\t/\\/$/,\n\t\t\t''\n\t\t);\n\t\tconst url =\n\t\t\tchangelog.url ||\n\t\t\t(changelog.slug && changelogBase\n\t\t\t\t? `${changelogBase}/${changelog.slug}`\n\t\t\t\t: null) ||\n\t\t\tchangelogBase ||\n\t\t\tnull;\n\n\t\tif (url) {\n\t\t\tif (this.options.openInNewTab !== false) {\n\t\t\t\twindow.open(url, '_blank', 'noopener,noreferrer');\n\t\t\t} else {\n\t\t\t\twindow.location.href = url;\n\t\t\t}\n\t\t}\n\n\t\tif (typeof this.options.onViewUpdate === 'function') {\n\t\t\tthis.options.onViewUpdate(changelog);\n\t\t}\n\t}\n\n\t_stripHtml(html) {\n\t\tconst tmp = document.createElement('div');\n\t\ttmp.innerHTML = html;\n\t\treturn (tmp.textContent || tmp.innerText || '').trim();\n\t}\n\n\t_truncateDescription(html, maxLength = 120) {\n\t\tif (!html) return '';\n\t\tconst plain = this._stripHtml(html);\n\t\tif (plain.length <= maxLength) return plain;\n\t\treturn plain.substring(0, maxLength).trimEnd() + '...';\n\t}\n\n\t_formatDate(dateString) {\n\t\tconst date = new Date(dateString);\n\t\treturn date.toLocaleDateString('en-US', {\n\t\t\tyear: 'numeric',\n\t\t\tmonth: 'short',\n\t\t\tday: 'numeric',\n\t\t});\n\t}\n\n\t_getContrastColor(hexColor) {\n\t\tconst hex = hexColor.replace('#', '');\n\t\tconst r = parseInt(hex.substr(0, 2), 16);\n\t\tconst g = parseInt(hex.substr(2, 2), 16);\n\t\tconst b = parseInt(hex.substr(4, 2), 16);\n\t\tconst luminance = (0.299 * r + 0.587 * g + 0.114 * b) / 255;\n\t\treturn luminance > 0.5 ? '#1F2937' : '#FFFFFF';\n\t}\n\n\thideBadge() {\n\t\tconst badge = this.element?.querySelector('.changelog-badge');\n\t\tif (badge) badge.style.display = 'none';\n\t}\n\n\tshowBadge() {\n\t\tconst badge = this.element?.querySelector('.changelog-badge');\n\t\tif (badge) badge.style.display = 'block';\n\t}\n\n\tnextChangelog() {\n\t\tif (this.currentIndex < this.changelogs.length - 1) {\n\t\t\tthis.currentIndex++;\n\t\t\tthis._renderCurrentChangelog();\n\t\t}\n\t}\n\n\tprevChangelog() {\n\t\tif (this.currentIndex > 0) {\n\t\t\tthis.currentIndex--;\n\t\t\tthis._renderCurrentChangelog();\n\t\t}\n\t}\n\n\tasync refresh() {\n\t\tthis.changelogs = [];\n\t\tawait this._loadChangelogs();\n\t\tif (this.modalElement) {\n\t\t\tthis.currentIndex = 0;\n\t\t\tthis._renderCurrentChangelog();\n\t\t}\n\t\tif (this.listModalElement) {\n\t\t\tthis._renderChangelogList();\n\t\t}\n\t}\n\n\topen() {\n\t\tthis.openSidebar();\n\t\treturn this;\n\t}\n\n\tclose() {\n\t\tthis.closeSidebar();\n\t\treturn this;\n\t}\n\n\ttoggle() {\n\t\tif (this.state.isOpen) {\n\t\t\tthis.closeSidebar();\n\t\t} else {\n\t\t\tthis.openSidebar();\n\t\t}\n\t\treturn this;\n\t}\n\n\tmount(container) {\n\t\tsuper.mount(container);\n\n\t\t// Bind to a custom trigger element if provided\n\t\tif (this.options.trigger && this.options.trigger !== true) {\n\t\t\tconst triggerEl =\n\t\t\t\ttypeof this.options.trigger === 'string'\n\t\t\t\t\t? document.querySelector(this.options.trigger)\n\t\t\t\t\t: this.options.trigger instanceof Element\n\t\t\t\t\t\t? this.options.trigger\n\t\t\t\t\t\t: null;\n\t\t\tif (triggerEl) {\n\t\t\t\ttriggerEl.addEventListener('click', () => this.open());\n\t\t\t}\n\t\t}\n\t}\n\n\tdestroy() {\n\t\tif (this._escapeHandler) {\n\t\t\tdocument.removeEventListener('keydown', this._escapeHandler);\n\t\t}\n\t\tif (this._listModalEscapeHandler) {\n\t\t\tdocument.removeEventListener('keydown', this._listModalEscapeHandler);\n\t\t}\n\t\tthis.closeModal();\n\t\tthis.closeSidebar();\n\t\tsuper.destroy();\n\t}\n}\n","import { BaseWidget } from './BaseWidget.js';\n\nexport class InlineWidget extends BaseWidget {\n\tconstructor(options) {\n\t\tsuper({ ...options, type: 'inline' });\n\t}\n\n\t_render() {\n\t\tconst widget = document.createElement('div');\n\t\twidget.className = 'feedback-widget feedback-widget-inline';\n\t\twidget.innerHTML = `\n <div class=\"feedback-inline-content\">\n <h3>Send us your feedback</h3>\n <form class=\"feedback-inline-form\">\n <div class=\"sdk-form-group\">\n <input \n type=\"text\" \n name=\"title\" \n class=\"sdk-input\"\n placeholder=\"Title (optional)\"\n value=\"${this.state.title}\"\n />\n </div>\n <div class=\"sdk-form-group\">\n <textarea \n name=\"content\" \n class=\"sdk-textarea\"\n placeholder=\"Your feedback...\"\n required\n >${this.state.content}</textarea>\n </div>\n <div class=\"sdk-form-group\">\n <input \n type=\"email\" \n name=\"email\" \n class=\"sdk-input\"\n placeholder=\"Email (optional)\"\n value=\"${this.state.email}\"\n />\n </div>\n <button type=\"submit\" class=\"sdk-btn-primary sdk-btn-block\">\n Send Feedback\n </button>\n <div class=\"feedback-error\"></div>\n </form>\n </div>\n `;\n\n\t\tif (this.options.customStyles) {\n\t\t\tObject.assign(widget.style, this.options.customStyles);\n\t\t}\n\n\t\treturn widget;\n\t}\n\n\t_attachEvents() {\n\t\tconst form = this.element.querySelector('.feedback-inline-form');\n\n\t\tform.addEventListener('submit', (e) => {\n\t\t\te.preventDefault();\n\t\t\tthis.submitFeedback();\n\t\t});\n\n\t\tform.querySelector('input[name=\"title\"]').addEventListener('input', (e) => {\n\t\t\tthis.state.title = e.target.value;\n\t\t});\n\n\t\tform\n\t\t\t.querySelector('textarea[name=\"content\"]')\n\t\t\t.addEventListener('input', (e) => {\n\t\t\t\tthis.state.content = e.target.value;\n\t\t\t});\n\n\t\tform.querySelector('input[name=\"email\"]').addEventListener('input', (e) => {\n\t\t\tthis.state.email = e.target.value;\n\t\t});\n\t}\n\n\topenModal() {\n\t\tconst textarea = this.element.querySelector('textarea[name=\"content\"]');\n\t\tif (textarea) {\n\t\t\ttextarea.focus();\n\t\t}\n\t}\n\n\tcloseModal() {\n\t\t// Inline widget doesn't use modal\n\t}\n\n\t_showSuccessMessage() {\n\t\tconst widget = this.element.querySelector('.feedback-inline-content');\n\t\tconst originalContent = widget.innerHTML;\n\n\t\twidget.innerHTML = `\n <div class=\"feedback-success\">\n <div class=\"sdk-notification-icon\">✓</div>\n <h3>Thank you!</h3>\n <p>Your feedback has been submitted successfully.</p>\n <button class=\"sdk-btn-primary\">Send Another</button>\n </div>\n `;\n\n\t\tconst resetBtn = widget.querySelector('.sdk-btn-primary');\n\t\tresetBtn.addEventListener('click', () => {\n\t\t\twidget.innerHTML = originalContent;\n\t\t\tthis._attachEvents();\n\t\t\tthis._resetForm();\n\t\t});\n\t}\n\n\t_showError(message) {\n\t\tconst errorElement = this.element.querySelector('.feedback-error');\n\t\tif (errorElement) {\n\t\t\terrorElement.textContent = message;\n\t\t\terrorElement.classList.add('show');\n\n\t\t\tsetTimeout(() => {\n\t\t\t\tif (errorElement) {\n\t\t\t\t\terrorElement.classList.remove('show');\n\t\t\t\t}\n\t\t\t}, 5000);\n\t\t}\n\t}\n\n\t_updateSubmitButton() {\n\t\tconst submitBtn = this.element.querySelector('.sdk-btn-primary');\n\t\tif (submitBtn) {\n\t\t\tsubmitBtn.textContent = this.state.isSubmitting\n\t\t\t\t? 'Sending...'\n\t\t\t\t: 'Send Feedback';\n\t\t\tsubmitBtn.disabled = this.state.isSubmitting;\n\t\t}\n\t}\n\n\tupdateTitle(title) {\n\t\tconst titleElement = this.element?.querySelector('h3');\n\t\tif (titleElement) {\n\t\t\ttitleElement.textContent = title;\n\t\t}\n\t}\n\n\tsetPlaceholder(field, placeholder) {\n\t\tconst input = this.element?.querySelector(`[name=\"${field}\"]`);\n\t\tif (input) {\n\t\t\tinput.placeholder = placeholder;\n\t\t}\n\t}\n}\n","/**\n * WebSocketService - Real-time communication for web chat widget\n */\n\nexport class WebSocketService {\n\tconstructor(config = {}) {\n\t\tthis.baseURL = config.baseURL || '';\n\t\tthis.workspace = config.workspace || '';\n\t\tthis.sessionToken = config.sessionToken || null;\n\t\tthis.mock = config.mock || false;\n\n\t\tthis.ws = null;\n\t\tthis.reconnectAttempts = 0;\n\t\t// Reconnect indefinitely with capped exponential backoff. The\n\t\t// previous 5-attempt hard cap meant ~31s of churn on a flaky network\n\t\t// permanently killed the live-chat connection until page refresh —\n\t\t// the dominant \"messages don't arrive\" symptom in production.\n\t\tthis.reconnectBaseDelay = 1000;\n\t\tthis.reconnectMaxDelay = 30_000;\n\t\tthis.pingInterval = null;\n\t\tthis.isConnected = false;\n\n\t\t// Heartbeat watchdog. The browser's onclose/onerror only fires when\n\t\t// it notices the TCP socket is dead — on stalled-but-not-closed\n\t\t// connections (NAT timeouts, sleeping mobile, some intermediaries)\n\t\t// that can take many minutes. We track the wall-clock time of the\n\t\t// last received frame and force a reconnect if nothing arrives\n\t\t// within the timeout. Server's protocol-level pings come every 54s\n\t\t// (pkg/websocket/client.go pingPeriod) and our app-level pings/pongs\n\t\t// every 30s, so 90s catches a dead pipe with one cycle of headroom.\n\t\tthis.lastFrameAt = 0;\n\t\tthis.heartbeatTimeoutMs = 90_000;\n\t\tthis.heartbeatCheckIntervalMs = 15_000;\n\t\tthis.heartbeatInterval = null;\n\n\t\t// Event listeners\n\t\tthis._listeners = new Map();\n\n\t\t// Bind methods\n\t\tthis._onOpen = this._onOpen.bind(this);\n\t\tthis._onMessage = this._onMessage.bind(this);\n\t\tthis._onClose = this._onClose.bind(this);\n\t\tthis._onError = this._onError.bind(this);\n\t}\n\n\t/**\n\t * Connect to WebSocket server\n\t */\n\tconnect(sessionToken = null) {\n\t\tif (sessionToken) {\n\t\t\tthis.sessionToken = sessionToken;\n\t\t}\n\n\t\tif (!this.sessionToken) {\n\t\t\tconsole.warn('[WebSocket] No session token provided');\n\t\t\treturn;\n\t\t}\n\n\t\tthis._intentionallyClosed = false;\n\n\t\t// Mock mode - simulate connection\n\t\tif (this.mock) {\n\t\t\tthis.isConnected = true;\n\t\t\tthis._emit('connected', {});\n\t\t\tthis._startMockResponses();\n\t\t\treturn;\n\t\t}\n\n\t\t// Build WebSocket URL\n\t\tconst wsProtocol = window.location.protocol === 'https:' ? 'wss:' : 'ws:';\n\t\tlet wsURL = this.baseURL.replace(/^https?:/, wsProtocol);\n\t\twsURL = wsURL.replace('/api/v1', '');\n\t\twsURL = `${wsURL}/api/v1/widget/livechat/ws?token=${encodeURIComponent(this.sessionToken)}`;\n\n\t\ttry {\n\t\t\tthis.ws = new WebSocket(wsURL);\n\t\t\tthis.ws.onopen = this._onOpen;\n\t\t\tthis.ws.onmessage = this._onMessage;\n\t\t\tthis.ws.onclose = this._onClose;\n\t\t\tthis.ws.onerror = this._onError;\n\t\t} catch (error) {\n\t\t\tconsole.error('[WebSocket] Connection error:', error);\n\t\t\tthis._scheduleReconnect();\n\t\t}\n\t}\n\n\t/**\n\t * Disconnect from WebSocket server\n\t */\n\tdisconnect() {\n\t\tthis.isConnected = false;\n\t\tthis._intentionallyClosed = true; // Prevent reconnection\n\n\t\tif (this.pingInterval) {\n\t\t\tclearInterval(this.pingInterval);\n\t\t\tthis.pingInterval = null;\n\t\t}\n\n\t\tthis._stopHeartbeat();\n\n\t\tif (this.ws) {\n\t\t\tthis.ws.close();\n\t\t\tthis.ws = null;\n\t\t}\n\n\t\tif (this._mockInterval) {\n\t\t\tclearInterval(this._mockInterval);\n\t\t\tthis._mockInterval = null;\n\t\t}\n\t}\n\n\t_startHeartbeat() {\n\t\tthis._stopHeartbeat();\n\t\tthis.lastFrameAt = Date.now();\n\t\tthis.heartbeatInterval = setInterval(() => {\n\t\t\tif (Date.now() - this.lastFrameAt > this.heartbeatTimeoutMs) {\n\t\t\t\tconsole.warn(\n\t\t\t\t\t`[WebSocket] No frames in ${this.heartbeatTimeoutMs}ms, forcing reconnect`\n\t\t\t\t);\n\t\t\t\t// Closing the socket fires onclose, which schedules a\n\t\t\t\t// reconnect through the normal path.\n\t\t\t\tthis._stopHeartbeat();\n\t\t\t\tif (this.ws) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tthis.ws.close();\n\t\t\t\t\t} catch (_) {\n\t\t\t\t\t\t// ignore\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}, this.heartbeatCheckIntervalMs);\n\t}\n\n\t_stopHeartbeat() {\n\t\tif (this.heartbeatInterval) {\n\t\t\tclearInterval(this.heartbeatInterval);\n\t\t\tthis.heartbeatInterval = null;\n\t\t}\n\t}\n\n\t/**\n\t * Subscribe to events\n\t * @param {string} event - Event name\n\t * @param {Function} callback - Event handler\n\t * @returns {Function} Unsubscribe function\n\t */\n\ton(event, callback) {\n\t\tif (!this._listeners.has(event)) {\n\t\t\tthis._listeners.set(event, new Set());\n\t\t}\n\t\tthis._listeners.get(event).add(callback);\n\t\treturn () => this._listeners.get(event).delete(callback);\n\t}\n\n\t/**\n\t * Remove event listener\n\t */\n\toff(event, callback) {\n\t\tif (this._listeners.has(event)) {\n\t\t\tthis._listeners.get(event).delete(callback);\n\t\t}\n\t}\n\n\t/**\n\t * Send message through WebSocket\n\t */\n\tsend(type, payload = {}) {\n\t\tif (!this.isConnected) {\n\t\t\tconsole.warn('[WebSocket] Not connected, cannot send message');\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.mock) {\n\t\t\t// Mock mode - just log\n\t\t\tconsole.log('[WebSocket Mock] Sending:', type, payload);\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.ws && this.ws.readyState === WebSocket.OPEN) {\n\t\t\tthis.ws.send(JSON.stringify({ type, payload }));\n\t\t}\n\t}\n\n\t// Private methods\n\n\t_onOpen() {\n\t\tconsole.log('[WebSocket] Connected');\n\t\tthis.isConnected = true;\n\t\tthis.reconnectAttempts = 0;\n\t\tthis._intentionallyClosed = false;\n\t\tthis._startHeartbeat();\n\t\tthis._emit('connected', {});\n\n\t\t// Start ping interval to keep connection alive\n\t\tthis.pingInterval = setInterval(() => {\n\t\t\tthis.send('ping', {});\n\t\t}, 30000);\n\t}\n\n\t_onMessage(event) {\n\t\t// Any inbound frame counts as a sign of life for the watchdog —\n\t\t// including pongs, message:new, typing, etc.\n\t\tthis.lastFrameAt = Date.now();\n\t\ttry {\n\t\t\tconst data = JSON.parse(event.data);\n\t\t\tconst { type, payload } = data;\n\n\t\t\t// Handle different event types\n\t\t\tswitch (type) {\n\t\t\t\tcase 'message:new':\n\t\t\t\t\tthis._emit('message', payload);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'typing:started':\n\t\t\t\t\tthis._emit('typing_started', payload);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'typing:stopped':\n\t\t\t\t\tthis._emit('typing_stopped', payload);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'conversation:updated':\n\t\t\t\t\tthis._emit('conversation_updated', payload);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'conversation:closed':\n\t\t\t\t\tthis._emit('conversation_closed', payload);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'availability:changed':\n\t\t\t\t\tthis._emit('availability_changed', payload);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'pong':\n\t\t\t\t\t// Ping response, ignore\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tconsole.log('[WebSocket] Unknown event:', type, payload);\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tconsole.error('[WebSocket] Failed to parse message:', error);\n\t\t}\n\t}\n\n\t_onClose(event) {\n\t\tconsole.log('[WebSocket] Disconnected:', event.code, event.reason);\n\t\tthis.isConnected = false;\n\n\t\tif (this.pingInterval) {\n\t\t\tclearInterval(this.pingInterval);\n\t\t\tthis.pingInterval = null;\n\t\t}\n\n\t\tthis._stopHeartbeat();\n\n\t\tthis._emit('disconnected', { code: event.code, reason: event.reason });\n\t\t// Skip reconnect if disconnect() was called intentionally.\n\t\tif (!this._intentionallyClosed) {\n\t\t\tthis._scheduleReconnect();\n\t\t}\n\t}\n\n\t_onError(error) {\n\t\tconsole.error('[WebSocket] Error:', error);\n\t\tthis._emit('error', { error });\n\t}\n\n\t_scheduleReconnect() {\n\t\tif (this._intentionallyClosed) return;\n\n\t\tthis.reconnectAttempts++;\n\t\tconst delay = Math.min(\n\t\t\tthis.reconnectBaseDelay * Math.pow(2, this.reconnectAttempts - 1),\n\t\t\tthis.reconnectMaxDelay\n\t\t);\n\t\tconsole.log(\n\t\t\t`[WebSocket] Reconnecting in ${delay}ms (attempt ${this.reconnectAttempts})`\n\t\t);\n\n\t\tsetTimeout(() => {\n\t\t\tthis.connect();\n\t\t}, delay);\n\t}\n\n\t_emit(event, data) {\n\t\tif (this._listeners.has(event)) {\n\t\t\tthis._listeners.get(event).forEach((callback) => {\n\t\t\t\ttry {\n\t\t\t\t\tcallback(data);\n\t\t\t\t} catch (error) {\n\t\t\t\t\tconsole.error(`[WebSocket] Error in ${event} handler:`, error);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\t// Mock support for development\n\t_startMockResponses() {\n\t\t// Simulate agent typing and responses\n\t\tthis._mockInterval = setInterval(() => {\n\t\t\t// Randomly emit typing or message events for demo\n\t\t\tconst random = Math.random();\n\t\t\tif (random < 0.1) {\n\t\t\t\tthis._emit('typing_started', {\n\t\t\t\t\tconversation_id: 'conv_1',\n\t\t\t\t\tuser_id: 'agent_1',\n\t\t\t\t\tuser_name: 'Sarah',\n\t\t\t\t\tis_agent: true,\n\t\t\t\t});\n\n\t\t\t\t// Stop typing after 2 seconds\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tthis._emit('typing_stopped', {\n\t\t\t\t\t\tconversation_id: 'conv_1',\n\t\t\t\t\t\tuser_id: 'agent_1',\n\t\t\t\t\t});\n\t\t\t\t}, 2000);\n\t\t\t}\n\t\t}, 10000);\n\t}\n\n\t/**\n\t * Simulate receiving a message (for mock mode)\n\t */\n\tsimulateMessage(conversationId, message) {\n\t\tif (this.mock) {\n\t\t\tthis._emit('message', {\n\t\t\t\tconversation_id: conversationId,\n\t\t\t\tmessage: {\n\t\t\t\t\tid: 'msg_' + Date.now(),\n\t\t\t\t\tcontent: message.content,\n\t\t\t\t\tsender_type: message.sender_type || 'agent',\n\t\t\t\t\tsender_name: message.sender_name || 'Support',\n\t\t\t\t\tsender_avatar: message.sender_avatar || null,\n\t\t\t\t\tcreated_at: new Date().toISOString(),\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\t}\n}\n","export function applyliveChatCustomStyles(options = {}) {\n\tconst {\n\t\tprimaryColor = '#155EEF',\n\t\ttextColor = '#1d1d1f',\n\t\tbackgroundColor = '#ffffff',\n\t\ttheme = 'light',\n\t} = options;\n\n\tlet styleElement = document.getElementById('product7-liveChat-custom-styles');\n\n\tif (!styleElement) {\n\t\tstyleElement = document.createElement('style');\n\t\tstyleElement.id = 'product7-liveChat-custom-styles';\n\t\tdocument.head.appendChild(styleElement);\n\t}\n\n\tconst adjustColor = (hex, percent, alpha = 1) => {\n\t\tconst normalized = String(hex || '').trim();\n\t\tif (!/^#?[0-9a-fA-F]{6}$/.test(normalized)) {\n\t\t\treturn normalized || '#000000';\n\t\t}\n\n\t\tconst num = parseInt(normalized.replace('#', ''), 16);\n\t\tconst r = Math.max(0, Math.min(255, (num >> 16) + percent));\n\t\tconst g = Math.max(0, Math.min(255, ((num >> 8) & 0x00ff) + percent));\n\t\tconst b = Math.max(0, Math.min(255, (num & 0x0000ff) + percent));\n\n\t\tif (alpha < 1) {\n\t\t\treturn `rgba(${r}, ${g}, ${b}, ${alpha})`;\n\t\t}\n\n\t\treturn '#' + ((r << 16) | (g << 8) | b).toString(16).padStart(6, '0');\n\t};\n\n\tconst darkSurface = adjustColor(backgroundColor, 12);\n\tconst darkSurfaceAlt = adjustColor(backgroundColor, 20);\n\tconst darkBorder = adjustColor(backgroundColor, 34);\n\n\tstyleElement.textContent = `\n\t\t#product7-liveChat-widget {\n\t\t\t--color-primary: ${primaryColor} !important;\n\t\t\t--color-primary-hover: ${adjustColor(primaryColor, -10)} !important;\n\t\t}\n\n\t\t.liveChat-launcher-btn {\n\t\t\tbackground: ${primaryColor} !important;\n\t\t}\n\n\t\t.liveChat-launcher-btn:hover {\n\t\t\tbox-shadow: 0 8px 24px ${adjustColor(primaryColor, 0, 0.3)} !important;\n\t\t}\n\n\t\t.sdk-btn-primary {\n\t\t\tbackground: ${primaryColor} !important;\n\t\t\tborder-color: ${primaryColor} !important;\n\t\t}\n\n\t\t.sdk-btn-primary:hover {\n\t\t\tbackground: ${adjustColor(primaryColor, -10)} !important;\n\t\t\tborder-color: ${adjustColor(primaryColor, -10)} !important;\n\t\t}\n\n\t\t.liveChat-compose-send:hover:not(:disabled) {\n\t\t\tbackground: ${primaryColor} !important;\n\t\t\tborder-color: ${primaryColor} !important;\n\t\t\tcolor: #FFFFFF !important;\n\t\t}\n\n\t\t.liveChat-nav-tab.active .liveChat-nav-icon,\n\t\t.liveChat-nav-tab.active .liveChat-nav-label {\n\t\t\tcolor: ${primaryColor} !important;\n\t\t}\n\n\t\t.liveChat-home-view::before {\n\t\t\tbackground: radial-gradient(circle, ${adjustColor(primaryColor, 0, 0.08)} 0%, transparent 70%) !important;\n\t\t}\n\n\t\t${\n\t\t\tbackgroundColor !== '#ffffff'\n\t\t\t\t? `\n\t\t.liveChat-panel-content {\n\t\t\tbackground: ${backgroundColor} !important;\n\t\t}\n\t\t`\n\t\t\t\t: ''\n\t\t}\n\n\t\t${\n\t\t\ttextColor !== '#1d1d1f'\n\t\t\t\t? `\n\t\t.liveChat-panel-content,\n\t\t.liveChat-view {\n\t\t\tcolor: ${textColor} !important;\n\t\t}\n\t\t`\n\t\t\t\t: ''\n\t\t}\n\n\t\t/* Dark theme is now handled by CSS custom properties in liveChat-core.js */\n\t`;\n\n\tconsole.log('✅ Custom web chat styles applied:', { primaryColor, theme });\n}\n\nexport function removeliveChatCustomStyles() {\n\tconst styleElement = document.getElementById(\n\t\t'product7-liveChat-custom-styles'\n\t);\n\tif (styleElement && styleElement.parentNode) {\n\t\tstyleElement.parentNode.removeChild(styleElement);\n\t}\n}\n","export default \"data:audio/mpeg;base64,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BeaJKOtqtegdfu08KKta9TmppaKVKbNRgAAdr/tXGB6CSCPl1Lelt7XW7T01ifVk2zjE1bLW839346gs//uAZPGAAtMh2Hn4GlhT52rfPeJdDAirVe28aaE2Dmr9tY0siLho4mUCDpWMFgQGgu42pLnLawWb/bpWNprQxluj9TNaXJSgOIMS1KzM0TRIAAAABFakEh3cgBQEGVwwSAstoCBiYpGhkVAplAwJmPAkYLCBkEDgYHpEhgdJRk+AeYkqaA6eReiyrxNIvmnxxStER14EjE2/9hljaO2siCoAhzKnpuRt269O0veD7Pq/uNbdzt6jfydzch/Kkpf1/dcqV6ta/y3Y1MWIft8iMqtZzUahrWPO71nqvG43fsROXu5Y3KZJGnRZbEH1clnOWX//OZ/+2WTnxeAH4ZfTSxQdl7ovLbXkoM0tW5UzXqqe3b9bPWP/+H7q59vrHa/P1WVuvIHDdeijc/LKqG114l3Joq5VSQSsRUcUBhEnmWs49v5f///////////////y/mff///////////////3Ad21LEZyZxNSU0SUaZb/+8Bk6AADBiBVfWGgCEbieq+nmAEjzhFJ+cyQBEdCKT85gkCgwCAAAAA6AP0AywXlGoy0hpYVBKCMGkNVAtKWyXWFQkQg10C3jJ4dCWsMS6ezji0j3yF6W6MVa5lLJbaXvIFSNMi8Vdp4aejr0kYgJ/IpLXJpq0lmN4S38scPty+3K4brc1En1pL+vzx/k/bwt3IYllNldscl0R/HlzH9/zJ2IEd+3kzt34vWlVWVWqbn5Z/njz8O/+aXAXCHDZovNNc0AZypebBMlXypavJwV2u4yFL1vG4qA//93+9d/ff/Fg5dCKWEFHZcd41TwOim499QNk7qNZnHhm2uvA4NA5XIelTssq//5////////////////KFL24Op////////////////I3ifN9VM55RBBXv+tQAA8aAYzpLaSOxTi1EgJ6SJFPyUphVqcwGS1LvW/Hx+27zX1/f7Y2w5rdPTwuJkLERYGnMZHg0LksCgqGoKvEWkqYTKtOnRLvoGgFPadXgqdiKxbu2ws92sNCIOHN0xkAtG+saAAuK4rNZxyl0v8x2rfuXaCm7ruwZLSEFAQkKru7B2WMZy0qeUZjNZr5eXDP+8VVSOR/5cly6S3120bi5SXY5P/1/U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\";\n","/**\n * NotificationSound — plays a soft ping when a new agent message arrives.\n *\n * Default: the bundled notification-sound.mp3 (inlined as base64 at build time).\n * Falls back to a Web Audio API synthetic chime if the file was not bundled.\n * Override: pass `soundUrl` (MP3/OGG/WAV URL or base64 data URI) to use a different file.\n */\nimport BUNDLED_SOUND from './notificationSoundData.js';\n\nexport class NotificationSound {\n\tconstructor({ soundUrl = BUNDLED_SOUND, volume = 0.4 } = {}) {\n\t\tthis._soundUrl = soundUrl;\n\t\tthis._volume = Math.min(1, Math.max(0, volume));\n\t\tthis._enabled = true;\n\t\tthis._audioCtx = null;\n\t\tthis._audioBuffer = null;\n\t\tthis._loadPromise = null;\n\n\t\tif (soundUrl) {\n\t\t\tthis._loadPromise = this._loadAudioFile(soundUrl);\n\t\t}\n\t}\n\n\tsetEnabled(enabled) {\n\t\tthis._enabled = Boolean(enabled);\n\t}\n\n\tsetVolume(volume) {\n\t\tthis._volume = Math.min(1, Math.max(0, volume));\n\t}\n\n\tasync play() {\n\t\tif (!this._enabled) return;\n\t\tif (typeof window === 'undefined') return;\n\n\t\ttry {\n\t\t\tif (this._soundUrl) {\n\t\t\t\tawait this._playFile();\n\t\t\t} else {\n\t\t\t\tawait this._playSynthetic();\n\t\t\t}\n\t\t} catch {\n\t\t\t/* autoplay policy or context suspended — silent fail */\n\t\t}\n\t}\n\n\t// ── Private ────────────────────────────────────────────────────────────────\n\n\t_getAudioContext() {\n\t\tif (!this._audioCtx || this._audioCtx.state === 'closed') {\n\t\t\tconst AudioContext = window.AudioContext || window.webkitAudioContext;\n\t\t\tif (!AudioContext) return null;\n\t\t\tthis._audioCtx = new AudioContext();\n\t\t}\n\t\treturn this._audioCtx;\n\t}\n\n\t/**\n\t * Synthetic two-tone chime via Web Audio API — no file required.\n\t * • First tone: 880 Hz, 0–80 ms\n\t * • Second tone: 1100 Hz, 60–160 ms\n\t * Sounds like a gentle message ping.\n\t */\n\tasync _playSynthetic() {\n\t\tconst ctx = this._getAudioContext();\n\t\tif (!ctx) return;\n\n\t\tif (ctx.state === 'suspended') {\n\t\t\tawait ctx.resume();\n\t\t}\n\n\t\tconst now = ctx.currentTime;\n\t\tconst vol = this._volume;\n\n\t\tconst tones = [\n\t\t\t{ freq: 880, start: 0, end: 0.08 },\n\t\t\t{ freq: 1100, start: 0.06, end: 0.16 },\n\t\t];\n\n\t\ttones.forEach(({ freq, start, end }) => {\n\t\t\tconst osc = ctx.createOscillator();\n\t\t\tconst gain = ctx.createGain();\n\n\t\t\tosc.type = 'sine';\n\t\t\tosc.frequency.value = freq;\n\n\t\t\tgain.gain.setValueAtTime(0, now + start);\n\t\t\tgain.gain.linearRampToValueAtTime(vol, now + start + 0.01);\n\t\t\tgain.gain.linearRampToValueAtTime(0, now + end);\n\n\t\t\tosc.connect(gain);\n\t\t\tgain.connect(ctx.destination);\n\n\t\t\tosc.start(now + start);\n\t\t\tosc.stop(now + end + 0.01);\n\t\t});\n\t}\n\n\tasync _loadAudioFile(url) {\n\t\ttry {\n\t\t\tconst ctx = this._getAudioContext();\n\t\t\tif (!ctx) return;\n\n\t\t\tconst response = await fetch(url);\n\t\t\tconst arrayBuffer = await response.arrayBuffer();\n\t\t\tthis._audioBuffer = await ctx.decodeAudioData(arrayBuffer);\n\t\t} catch {\n\t\t\t/* failed to load — fall back to synthetic */\n\t\t\tthis._soundUrl = null;\n\t\t}\n\t}\n\n\tasync _playFile() {\n\t\tif (this._loadPromise) {\n\t\t\tawait this._loadPromise;\n\t\t\tthis._loadPromise = null;\n\t\t}\n\n\t\tif (!this._audioBuffer) {\n\t\t\tthis._playSynthetic();\n\t\t\treturn;\n\t\t}\n\n\t\tconst ctx = this._getAudioContext();\n\t\tif (!ctx) return;\n\n\t\tif (ctx.state === 'suspended') {\n\t\t\tawait ctx.resume();\n\t\t}\n\n\t\tconst source = ctx.createBufferSource();\n\t\tconst gain = ctx.createGain();\n\n\t\tsource.buffer = this._audioBuffer;\n\t\tgain.gain.value = this._volume;\n\n\t\tsource.connect(gain);\n\t\tgain.connect(ctx.destination);\n\t\tsource.start();\n\t}\n}\n","export class LiveChatState {\n\tconstructor(options = {}) {\n\t\tthis.currentView = 'home';\n\t\tthis.isOpen = false;\n\t\tthis.unreadCount = 0;\n\t\tthis.activeConversationId = null;\n\n\t\tthis.conversations = [];\n\t\tthis.messages = {};\n\n\t\tthis.helpArticles = [];\n\t\tthis.helpSearchQuery = '';\n\n\t\tthis.homeChangelogItems = [];\n\t\tthis.changelogItems = [];\n\n\t\tthis.teamName = options.teamName || 'Support';\n\t\tthis.teamAvatars = options.teamAvatars || [];\n\t\tthis.greetingMessage = options.greetingMessage || 'Hi there 👋';\n\t\tthis.welcomeMessage = options.welcomeMessage || 'How can we help?';\n\t\tthis.startButtonText = options.startButtonText || 'Send us a message';\n\t\tthis.showAvatars = options.showAvatars !== false;\n\n\t\tthis.metadata = options.metadata || null;\n\t\tthis.isIdentified = false;\n\t\tthis.pendingMessage = null;\n\n\t\tthis.enableHelp = options.enableHelp !== false;\n\t\tthis.enableChangelog = options.enableChangelog !== false;\n\t\tthis.homeModuleEnabled = options.homeModuleEnabled !== false;\n\t\tthis.messagesModuleEnabled = options.messagesModuleEnabled !== false;\n\n\t\tthis.requireEmailBeforeChat = options.requireEmailBeforeChat || false;\n\t\tthis.allowAttachments = options.allowAttachments !== false;\n\t\tthis.allowEmoji = options.allowEmoji !== false;\n\t\tthis.showReplyTime = options.showReplyTime !== false;\n\n\t\tthis.agentsOnline = false;\n\t\tthis.onlineCount = 0;\n\t\tthis.onlineMessage = options.onlineMessage || \"We're online now\";\n\t\tthis.responseTime =\n\t\t\toptions.responseTime || 'We typically reply within a few minutes';\n\n\t\tthis.businessHoursState = options.businessHoursState || null;\n\t\tthis.nextOpenAt = options.nextOpenAt || null;\n\t\tthis.holidayName = options.holidayName || null;\n\n\t\tthis.typingUsers = {};\n\n\t\tthis.isLoading = false;\n\t\tthis.isLoadingMessages = false;\n\n\t\tthis.urls = options.urls || {\n\t\t\tfeedback: null,\n\t\t\tchangelog: null,\n\t\t\thelp: null,\n\t\t\troadmap: null,\n\t\t};\n\n\t\tthis._listeners = new Set();\n\t}\n\n\tsubscribe(callback) {\n\t\tthis._listeners.add(callback);\n\t\treturn () => this._listeners.delete(callback);\n\t}\n\n\t_notify(changeType, data) {\n\t\tthis._listeners.forEach((cb) => cb(changeType, data, this));\n\t}\n\n\tsetView(view) {\n\t\tconst previousView = this.currentView;\n\t\tthis.currentView = view;\n\t\tthis._notify('viewChange', { previousView, currentView: view });\n\t}\n\n\tsetOpen(isOpen) {\n\t\tthis.isOpen = isOpen;\n\t\tthis._notify('openChange', { isOpen });\n\t}\n\n\tsetActiveConversation(conversationId) {\n\t\tconst previousConversationId = this.activeConversationId;\n\t\tthis.activeConversationId = conversationId;\n\t\tthis._notify('conversationChange', {\n\t\t\tconversationId,\n\t\t\tpreviousConversationId,\n\t\t});\n\t}\n\n\tsetIdentified(isIdentified, metadata = null) {\n\t\tthis.isIdentified = isIdentified;\n\t\tif (metadata) {\n\t\t\tthis.metadata = { ...this.metadata, ...metadata };\n\t\t}\n\t\tthis._notify('identificationChange', { isIdentified, metadata });\n\t}\n\n\tsetConversations(conversations) {\n\t\tthis.conversations = conversations;\n\t\tthis._updateUnreadCount();\n\t\tthis._notify('conversationsUpdate', { conversations });\n\t}\n\n\taddConversation(conversation) {\n\t\tthis.conversations.unshift(conversation);\n\t\tthis._updateUnreadCount();\n\t\tthis._notify('conversationAdded', { conversation });\n\t}\n\n\tsetMessages(conversationId, messages) {\n\t\tthis.messages[conversationId] = messages;\n\t\tthis._notify('messagesUpdate', { conversationId, messages });\n\t}\n\n\t_getMessageAttachmentsSignature(message) {\n\t\tif (\n\t\t\t!Array.isArray(message?.attachments) ||\n\t\t\tmessage.attachments.length === 0\n\t\t) {\n\t\t\treturn '';\n\t\t}\n\n\t\treturn message.attachments\n\t\t\t.map((att) => `${att?.type || ''}:${att?.name || ''}`)\n\t\t\t.join('|');\n\t}\n\n\t_findOptimisticMatchIndex(conversationId, incomingMessage, matchWindowMs) {\n\t\tconst messages = this.messages[conversationId] || [];\n\t\tconst incomingTimestamp = Date.parse(incomingMessage.timestamp);\n\t\tconst incomingSignature =\n\t\t\tthis._getMessageAttachmentsSignature(incomingMessage);\n\n\t\tfor (let i = messages.length - 1; i >= 0; i--) {\n\t\t\tconst candidate = messages[i];\n\t\t\tif (!candidate?.isOptimistic || !candidate?.isOwn) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif ((candidate.content || '') !== (incomingMessage.content || '')) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tconst candidateSignature =\n\t\t\t\tthis._getMessageAttachmentsSignature(candidate);\n\t\t\tif (candidateSignature !== incomingSignature) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tconst candidateTimestamp = Date.parse(candidate.timestamp);\n\t\t\tif (\n\t\t\t\tNumber.isNaN(incomingTimestamp) ||\n\t\t\t\tNumber.isNaN(candidateTimestamp) ||\n\t\t\t\tMath.abs(incomingTimestamp - candidateTimestamp) <= matchWindowMs\n\t\t\t) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\n\t\treturn -1;\n\t}\n\n\t_updateConversationFromMessage(conversationId, message, countUnread) {\n\t\tconst conv = this.conversations.find((c) => c.id === conversationId);\n\t\tif (!conv) {\n\t\t\treturn;\n\t\t}\n\n\t\tconv.lastMessage = message.content;\n\t\tconv.lastMessageTime = message.timestamp;\n\n\t\tif (countUnread && !message.isOwn) {\n\t\t\tconv.unread = (conv.unread || 0) + 1;\n\t\t\tthis._updateUnreadCount();\n\t\t}\n\t}\n\n\tupsertMessage(conversationId, message, options = {}) {\n\t\tif (!this.messages[conversationId]) {\n\t\t\tthis.messages[conversationId] = [];\n\t\t}\n\n\t\tconst reconcileOwnOptimistic = options.reconcileOwnOptimistic === true;\n\t\tconst optimisticMatchWindowMs = options.optimisticMatchWindowMs || 30000;\n\t\tconst messages = this.messages[conversationId];\n\t\tconst existingIndex =\n\t\t\tmessage?.id != null\n\t\t\t\t? messages.findIndex((msg) => msg?.id === message.id)\n\t\t\t\t: -1;\n\n\t\tif (existingIndex !== -1) {\n\t\t\tmessages[existingIndex] = {\n\t\t\t\t...messages[existingIndex],\n\t\t\t\t...message,\n\t\t\t\tisOptimistic: false,\n\t\t\t};\n\t\t\tthis._updateConversationFromMessage(\n\t\t\t\tconversationId,\n\t\t\t\tmessages[existingIndex],\n\t\t\t\tfalse\n\t\t\t);\n\t\t\tthis._notify('messagesUpdate', {\n\t\t\t\tconversationId,\n\t\t\t\tmessages: [...messages],\n\t\t\t});\n\t\t\treturn messages[existingIndex];\n\t\t}\n\n\t\tif (reconcileOwnOptimistic && message?.isOwn) {\n\t\t\tconst optimisticIndex = this._findOptimisticMatchIndex(\n\t\t\t\tconversationId,\n\t\t\t\tmessage,\n\t\t\t\toptimisticMatchWindowMs\n\t\t\t);\n\t\t\tif (optimisticIndex !== -1) {\n\t\t\t\tmessages[optimisticIndex] = {\n\t\t\t\t\t...messages[optimisticIndex],\n\t\t\t\t\t...message,\n\t\t\t\t\tisOptimistic: false,\n\t\t\t\t};\n\t\t\t\tthis._updateConversationFromMessage(\n\t\t\t\t\tconversationId,\n\t\t\t\t\tmessages[optimisticIndex],\n\t\t\t\t\tfalse\n\t\t\t\t);\n\t\t\t\tthis._notify('messagesUpdate', {\n\t\t\t\t\tconversationId,\n\t\t\t\t\tmessages: [...messages],\n\t\t\t\t});\n\t\t\t\treturn messages[optimisticIndex];\n\t\t\t}\n\t\t}\n\n\t\tconst storedMessage = {\n\t\t\t...message,\n\t\t\tisOptimistic: Boolean(message?.isOptimistic),\n\t\t};\n\t\tmessages.push(storedMessage);\n\t\tthis._updateConversationFromMessage(conversationId, storedMessage, true);\n\t\tthis._notify('messageAdded', { conversationId, message: storedMessage });\n\t\treturn storedMessage;\n\t}\n\n\taddMessage(conversationId, message) {\n\t\treturn this.upsertMessage(conversationId, message);\n\t}\n\n\tupdateConversation(conversationId, updates) {\n\t\tconst conv = this.conversations.find((c) => c.id === conversationId);\n\t\tif (!conv) {\n\t\t\treturn null;\n\t\t}\n\n\t\tObject.assign(conv, updates);\n\t\tthis._notify('conversationUpdated', { conversationId, conversation: conv });\n\t\treturn conv;\n\t}\n\n\tmarkAsRead(conversationId) {\n\t\tconst conv = this.conversations.find((c) => c.id === conversationId);\n\t\tif (conv && conv.unread > 0) {\n\t\t\tconv.unread = 0;\n\t\t\tthis._updateUnreadCount();\n\t\t\tthis._notify('conversationRead', { conversationId });\n\t\t}\n\t}\n\n\t_updateUnreadCount() {\n\t\tthis.unreadCount = this.conversations.reduce(\n\t\t\t(sum, c) => sum + (c.unread || 0),\n\t\t\t0\n\t\t);\n\t\tthis._notify('unreadCountChange', { count: this.unreadCount });\n\t}\n\n\tsetHelpArticles(articles) {\n\t\tthis.helpArticles = articles;\n\t\tthis._notify('helpArticlesUpdate', { articles });\n\t}\n\n\tsetHelpSearchQuery(query) {\n\t\tthis.helpSearchQuery = query;\n\t\tthis._notify('helpSearchChange', { query });\n\t}\n\n\tsetHomeChangelogItems(items) {\n\t\tthis.homeChangelogItems = items;\n\t\tthis._notify('homeChangelogUpdate', { items });\n\t}\n\n\tsetChangelogItems(items) {\n\t\tthis.changelogItems = items;\n\t\tthis._notify('changelogUpdate', { items });\n\t}\n\n\tgetActiveConversation() {\n\t\treturn this.conversations.find((c) => c.id === this.activeConversationId);\n\t}\n\n\tgetActiveMessages() {\n\t\treturn this.messages[this.activeConversationId] || [];\n\t}\n\n\tsetTeamAvatarsFromAgents(agents) {\n\t\tif (!agents || agents.length === 0) return;\n\n\t\tthis.teamAvatars = agents.map((agent) => {\n\t\t\tif (agent.picture) return agent.picture;\n\t\t\treturn agent.full_name || '?';\n\t\t});\n\t\tthis._notify('teamAvatarsUpdate', { teamAvatars: this.teamAvatars });\n\t}\n\n\tgetFilteredHelpArticles() {\n\t\tif (!this.helpSearchQuery) {\n\t\t\treturn this.helpArticles;\n\t\t}\n\t\tconst query = this.helpSearchQuery.toLowerCase();\n\t\treturn this.helpArticles.filter(\n\t\t\t(article) =>\n\t\t\t\tarticle.title.toLowerCase().includes(query) ||\n\t\t\t\t(article.description &&\n\t\t\t\t\tarticle.description.toLowerCase().includes(query))\n\t\t);\n\t}\n\n\treset() {\n\t\tconst previousView = this.currentView;\n\t\tthis.currentView = 'home';\n\t\tthis.activeConversationId = null;\n\t\tthis.helpSearchQuery = '';\n\t\tif (previousView !== 'home') {\n\t\t\tthis._notify('viewChange', { previousView, currentView: 'home' });\n\t\t}\n\t\tthis._notify('reset', {});\n\t}\n}\n","export class LiveChatLauncher {\n\tconstructor(state, options = {}) {\n\t\tthis.state = state;\n\t\tthis.options = {\n\t\t\tposition: options.position || 'right',\n\t\t\tprimaryColor: options.primaryColor || '#155EEF',\n\t\t\t...options,\n\t\t};\n\t\tthis.element = null;\n\t\tthis._unsubscribe = null;\n\t}\n\n\trender() {\n\t\tthis.element = document.createElement('div');\n\t\tthis.element.className = `liveChat-launcher liveChat-launcher-${this.options.position}`;\n\n\t\tthis._updateContent();\n\t\tthis._attachEvents();\n\n\t\tthis._unsubscribe = this.state.subscribe((type, data) => {\n\t\t\tif (type === 'openChange') {\n\t\t\t\tthis._updateIcon();\n\t\t\t}\n\t\t\tif (type === 'unreadCountChange') {\n\t\t\t\tthis._updateBadge();\n\t\t\t}\n\t\t});\n\n\t\treturn this.element;\n\t}\n\n\t_updateContent() {\n\t\tconst badgeHtml =\n\t\t\tthis.state.unreadCount > 0\n\t\t\t\t? `<span class=\"liveChat-launcher-badge\">${this.state.unreadCount > 9 ? '9+' : this.state.unreadCount}</span>`\n\t\t\t\t: '';\n\n\t\tthis.element.innerHTML = `\n <button class=\"liveChat-launcher-btn\" aria-label=\"Open live chat\">\n <span class=\"liveChat-launcher-icon liveChat-launcher-icon-chat\">\n <iconify-icon icon=\"ph:chats-circle\" width=\"24\" height=\"24\"></iconify-icon>\n </span>\n <span class=\"liveChat-launcher-icon liveChat-launcher-icon-close\" style=\"display: none;\">\n <iconify-icon icon=\"ph:caret-down-bold\" width=\"22\" height=\"22\"></iconify-icon>\n </span>\n ${badgeHtml}\n </button>\n `;\n\n\t\tconst btn = this.element.querySelector('.liveChat-launcher-btn');\n\t\tif (btn && this.options.primaryColor) {\n\t\t\tbtn.style.setProperty(\n\t\t\t\t'background',\n\t\t\t\tthis.options.primaryColor,\n\t\t\t\t'important'\n\t\t\t);\n\t\t}\n\t}\n\n\t_attachEvents() {\n\t\tthis.element\n\t\t\t.querySelector('.liveChat-launcher-btn')\n\t\t\t.addEventListener('click', () => {\n\t\t\t\tthis.state.setOpen(!this.state.isOpen);\n\t\t\t});\n\t}\n\n\t_updateIcon() {\n\t\tconst chatIcon = this.element.querySelector('.liveChat-launcher-icon-chat');\n\t\tconst closeIcon = this.element.querySelector(\n\t\t\t'.liveChat-launcher-icon-close'\n\t\t);\n\n\t\tif (this.state.isOpen) {\n\t\t\tchatIcon.style.display = 'none';\n\t\t\tcloseIcon.style.display = 'flex';\n\t\t\tthis.element.classList.add('liveChat-launcher-open');\n\t\t} else {\n\t\t\tchatIcon.style.display = 'flex';\n\t\t\tcloseIcon.style.display = 'none';\n\t\t\tthis.element.classList.remove('liveChat-launcher-open');\n\t\t}\n\t}\n\n\t_updateBadge() {\n\t\tconst existingBadge = this.element.querySelector(\n\t\t\t'.liveChat-launcher-badge'\n\t\t);\n\t\tif (existingBadge) {\n\t\t\texistingBadge.remove();\n\t\t}\n\n\t\tif (this.state.unreadCount > 0 && !this.state.isOpen) {\n\t\t\tconst badge = document.createElement('span');\n\t\t\tbadge.className = 'liveChat-launcher-badge';\n\t\t\tbadge.textContent =\n\t\t\t\tthis.state.unreadCount > 9 ? '9+' : this.state.unreadCount;\n\t\t\tthis.element.querySelector('.liveChat-launcher-btn').appendChild(badge);\n\t\t}\n\t}\n\n\tshow() {\n\t\tif (this.element) {\n\t\t\tthis.element.style.display = 'block';\n\t\t}\n\t}\n\n\thide() {\n\t\tif (this.element) {\n\t\t\tthis.element.style.display = 'none';\n\t\t}\n\t}\n\n\tdestroy() {\n\t\tif (this._unsubscribe) {\n\t\t\tthis._unsubscribe();\n\t\t}\n\t\tif (this.element && this.element.parentNode) {\n\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t}\n\t}\n}\n","export class NavigationTabs {\n\tconstructor(state, options = {}) {\n\t\tthis.state = state;\n\t\tthis.options = options;\n\t\tthis.element = null;\n\t\tthis._unsubscribe = null;\n\t}\n\n\trender() {\n\t\tthis.element = document.createElement('div');\n\t\tthis.element.className = 'liveChat-panel-nav';\n\n\t\tthis._updateContent();\n\t\tthis._attachEvents();\n\n\t\tthis._unsubscribe = this.state.subscribe((type) => {\n\t\t\tif (type === 'viewChange' || type === 'unreadCountChange') {\n\t\t\t\tthis._updateActiveTab();\n\t\t\t} else if (type === 'settingsUpdate') {\n\t\t\t\tthis._updateContent();\n\t\t\t\tthis._updateActiveTab();\n\t\t\t}\n\t\t});\n\n\t\treturn this.element;\n\t}\n\n\t_getTabs() {\n\t\tconst tabs = [];\n\n\t\tif (this.state.homeModuleEnabled !== false) {\n\t\t\ttabs.push({ id: 'home', label: 'Home', icon: 'ph:house-simple' });\n\t\t}\n\n\t\tif (this.state.messagesModuleEnabled !== false) {\n\t\t\ttabs.push({\n\t\t\t\tid: 'messages',\n\t\t\t\tlabel: 'Messages',\n\t\t\t\ticon: 'ph:chats',\n\t\t\t\tbadge: this.state.unreadCount,\n\t\t\t});\n\t\t}\n\n\t\tif (this.state.enableHelp) {\n\t\t\ttabs.push({ id: 'help', label: 'Help', icon: 'ph:books' });\n\t\t}\n\n\t\tif (this.state.enableChangelog) {\n\t\t\ttabs.push({\n\t\t\t\tid: 'changelog',\n\t\t\t\tlabel: 'Updates',\n\t\t\t\ticon: 'ph:megaphone',\n\t\t\t});\n\t\t}\n\n\t\treturn tabs;\n\t}\n\n\t_updateContent() {\n\t\tconst tabs = this._getTabs();\n\t\tconst tabsHtml = tabs\n\t\t\t.map((tab) => {\n\t\t\t\tconst isActive = this.state.currentView === tab.id;\n\t\t\t\tconst badgeHtml =\n\t\t\t\t\ttab.badge && tab.badge > 0\n\t\t\t\t\t\t? `<span class=\"liveChat-nav-badge\">${tab.badge > 9 ? '9+' : tab.badge}</span>`\n\t\t\t\t\t\t: '';\n\n\t\t\t\treturn `\n\t\t\t\t\t<button class=\"liveChat-nav-tab ${isActive ? 'active' : ''}\" data-tab=\"${tab.id}\">\n\t\t\t\t\t\t<span class=\"liveChat-nav-icon\">\n\t\t\t\t\t\t\t<iconify-icon icon=\"${tab.icon}\" width=\"22\" height=\"22\"></iconify-icon>\n\t\t\t\t\t\t</span>\n\t\t\t\t\t\t<span class=\"liveChat-nav-label\">${tab.label}</span>\n\t\t\t\t\t\t${badgeHtml}\n\t\t\t\t\t</button>\n\t\t\t\t`;\n\t\t\t})\n\t\t\t.join('');\n\n\t\tthis.element.innerHTML = `\n\t\t\t<div class=\"liveChat-nav-tabs\">\n\t\t\t\t${tabsHtml}\n\t\t\t</div>\n\t\t\t<div class=\"liveChat-nav-footer\">\n\t\t\t\t<a href=\"https://product7.io\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"liveChat-powered-by\">\n\t\t\t\t\t<svg width=\"12\" height=\"14\" viewBox=\"0 0 28 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n\t\t\t\t\t\t<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M15.0615 5.28044C8.5161 4.42949 3.30825 11.1456 5.89967 17.6588C6.9321 20.2538 9.06268 22.2644 11.8777 23.1968C16.2682 24.6507 18.4038 22.3222 19.0483 23.9691C19.4055 24.8894 18.7282 25.3209 17.988 25.4938C10.9146 27.15 5.15304 22.7566 3.5869 17.5531C1.52205 10.6941 5.98684 4.6667 11.3483 3.41065C17.8801 1.88094 24.0325 6.19355 24.3926 12.7175C24.7448 19.0921 18.6217 24.5978 11.927 22.2036C10.8789 21.8285 8.8419 20.6682 8.46823 19.858C8.06026 18.9727 8.80261 18.1725 9.68285 18.3576C10.2223 18.4726 10.3116 18.8706 11.3161 19.5372C14.4549 21.6213 19.1276 20.6132 21.2046 17.0972C23.991 12.3817 21.0481 6.05351 15.06 5.27758L15.0615 5.28044Z\" fill=\"#21244A\"/>\n\t\t\t\t\t\t<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M15.2492 2.19833C11.944 1.71463 8.88819 3.07214 6.91479 4.49682C2.27067 7.85488 0.76169 14.5038 3.49672 19.8731C4.08535 21.0096 4.84379 22.0497 5.7459 22.9576L7.16343 24.2515C7.67214 24.9131 7.27203 25.7176 6.64115 25.9269C5.13502 26.4271 2.0499 21.8172 1.42044 20.5383C0.0872204 17.8297 -0.312889 14.9047 0.242977 11.503C1.66908 2.77063 11.221 -2.51652 19.7197 1.21021C27.7548 4.73331 30.2733 15.4555 23.9351 22.0773C23.3107 22.7296 21.6352 24.4823 20.6278 23.8907C20.0076 23.5263 19.8933 22.6446 20.5192 22.1238C21.0301 21.6986 21.4759 21.435 21.9896 20.9734C23.6665 19.4688 25.2562 16.8752 25.3477 13.5636C25.4427 10.2055 24.1266 7.5848 22.3904 5.74859C20.6392 3.89665 18.6751 2.69919 15.2456 2.19691L15.2492 2.19833Z\" fill=\"#F69F06\"/>\n\t\t\t\t\t\t<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M8.48332 27.2217C7.93817 26.265 8.89987 25.3776 10.1352 25.8641C15.5653 27.9926 18.3081 25.5269 19.0255 27.0823C19.2655 27.6039 19.0448 28.1619 18.7354 28.3863C17.9895 28.9257 14.82 28.9343 13.9262 28.8714C12.9071 28.8053 11.897 28.6377 10.9111 28.3713C10.0888 28.1348 8.88057 27.9247 8.48189 27.2281L8.48332 27.2217Z\" fill=\"#21244A\"/>\n\t\t\t\t\t\t<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M15.8722 31.0607C15.7765 32.1381 14.579 32.0331 13.5766 31.9545C12.5742 31.8759 11.5203 31.8502 11.601 30.7013C11.6789 29.5882 12.8035 29.7532 13.8274 29.8332C14.4425 29.8811 15.9951 29.681 15.8722 31.0607Z\" fill=\"#21244A\"/>\n\t\t\t\t\t</svg>\n\t\t\t\t\tPowered by <strong>Product7</strong>\n\t\t\t\t</a>\n\t\t\t</div>\n\t\t`;\n\t}\n\n\t_attachEvents() {\n\t\tthis.element.addEventListener('click', (e) => {\n\t\t\tconst tab = e.target.closest('.liveChat-nav-tab');\n\t\t\tif (tab) {\n\t\t\t\tconst tabId = tab.dataset.tab;\n\t\t\t\tthis.state.setView(tabId);\n\t\t\t}\n\t\t});\n\t}\n\n\t_updateActiveTab() {\n\t\tconst tabs = this.element.querySelectorAll('.liveChat-nav-tab');\n\t\ttabs.forEach((tab) => {\n\t\t\tconst isActive = tab.dataset.tab === this.state.currentView;\n\t\t\ttab.classList.toggle('active', isActive);\n\n\t\t\tif (tab.dataset.tab === 'messages') {\n\t\t\t\tconst existingBadge = tab.querySelector('.liveChat-nav-badge');\n\t\t\t\tif (existingBadge) existingBadge.remove();\n\n\t\t\t\tif (this.state.unreadCount > 0) {\n\t\t\t\t\tconst badge = document.createElement('span');\n\t\t\t\t\tbadge.className = 'liveChat-nav-badge';\n\t\t\t\t\tbadge.textContent =\n\t\t\t\t\t\tthis.state.unreadCount > 9 ? '9+' : this.state.unreadCount;\n\t\t\t\t\ttab.appendChild(badge);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\tdestroy() {\n\t\tif (this._unsubscribe) {\n\t\t\tthis._unsubscribe();\n\t\t}\n\t\tif (this.element && this.element.parentNode) {\n\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t}\n\t}\n}\n","import { NavigationTabs } from './NavigationTabs.js';\n\nexport class LiveChatPanel {\n\tconstructor(state, options = {}) {\n\t\tthis.state = state;\n\t\tthis.options = {\n\t\t\tposition: options.position || 'right',\n\t\t\t...options,\n\t\t};\n\t\tthis.element = null;\n\t\tthis.navigationTabs = null;\n\t\tthis.currentViewComponent = null;\n\t\tthis.viewRegistry = {};\n\t\tthis._unsubscribe = null;\n\t\tthis._expanded = false;\n\t}\n\n\tregisterView(name, ViewClass) {\n\t\tthis.viewRegistry[name] = ViewClass;\n\t}\n\n\trender() {\n\t\tthis.element = document.createElement('div');\n\t\tthis.element.className = `liveChat-panel liveChat-panel-${this.options.position}`;\n\n\t\tthis.element.innerHTML = `\n\t\t\t<div class=\"liveChat-panel-content\">\n\t\t\t\t<div class=\"liveChat-panel-views\"></div>\n\t\t\t\t<div class=\"liveChat-panel-nav\"></div>\n\t\t\t</div>\n\t\t`;\n\n\t\tthis.options.onToggleExpand = () => this._toggleExpand();\n\t\tthis.options.isExpanded = () => this._expanded;\n\n\t\tthis.navigationTabs = new NavigationTabs(this.state, this.options);\n\t\tconst navContainer = this.element.querySelector('.liveChat-panel-nav');\n\t\tnavContainer.appendChild(this.navigationTabs.render());\n\n\t\tthis._renderCurrentView();\n\n\t\tthis._unsubscribe = this.state.subscribe((type) => {\n\t\t\tif (type === 'viewChange') {\n\t\t\t\tthis._renderCurrentView();\n\t\t\t}\n\t\t});\n\n\t\treturn this.element;\n\t}\n\n\t_toggleExpand() {\n\t\tthis._expanded = !this._expanded;\n\t\tthis.element.classList.toggle('liveChat-panel-expanded', this._expanded);\n\n\t\tconst menuIcon = this.element.querySelector(\n\t\t\t'.liveChat-expand-window-btn iconify-icon'\n\t\t);\n\t\tconst menuLabel = this.element.querySelector(\n\t\t\t'.liveChat-expand-window-btn span'\n\t\t);\n\t\tif (menuIcon)\n\t\t\tmenuIcon.setAttribute(\n\t\t\t\t'icon',\n\t\t\t\tthis._expanded ? 'ph:arrows-in' : 'ph:arrows-out'\n\t\t\t);\n\t\tif (menuLabel)\n\t\t\tmenuLabel.textContent = this._expanded\n\t\t\t\t? 'Collapse window'\n\t\t\t\t: 'Expand window';\n\t}\n\n\t_renderCurrentView() {\n\t\tconst viewsContainer = this.element.querySelector('.liveChat-panel-views');\n\t\tconst navContainer = this.element.querySelector('.liveChat-panel-nav');\n\n\t\tif (this.currentViewComponent && this.currentViewComponent.destroy) {\n\t\t\tthis.currentViewComponent.destroy();\n\t\t}\n\n\t\tviewsContainer.innerHTML = '';\n\n\t\t// Collapse expanded state when leaving chat view\n\t\tif (this.state.currentView !== 'chat' && this._expanded) {\n\t\t\tthis._expanded = false;\n\t\t\tthis.element.classList.remove('liveChat-panel-expanded');\n\t\t}\n\n\t\tconst ViewClass = this.viewRegistry[this.state.currentView];\n\t\tif (ViewClass) {\n\t\t\tthis.currentViewComponent = new ViewClass(this.state, this.options);\n\t\t\tviewsContainer.appendChild(this.currentViewComponent.render());\n\t\t} else {\n\t\t\tviewsContainer.innerHTML = `<div class=\"liveChat-empty-state\">\n\t\t\t\t<p>View not found: ${this.state.currentView}</p>\n\t\t\t</div>`;\n\t\t}\n\n\t\t// Hide nav in chat and prechat views\n\t\tif (navContainer) {\n\t\t\tconst hideNav =\n\t\t\t\tthis.state.currentView === 'chat' ||\n\t\t\t\tthis.state.currentView === 'prechat';\n\t\t\tnavContainer.style.display = hideNav ? 'none' : '';\n\t\t}\n\t}\n\n\tshow() {\n\t\tif (this.element) {\n\t\t\trequestAnimationFrame(() => {\n\t\t\t\tthis.element.classList.add('open');\n\t\t\t});\n\t\t}\n\t}\n\n\thide() {\n\t\tif (this.element) {\n\t\t\tthis.element.classList.remove('open');\n\t\t}\n\t}\n\n\tsetHeader(headerContent) {\n\t\tconst header = this.element.querySelector('.liveChat-panel-header');\n\t\tif (header) {\n\t\t\theader.innerHTML = headerContent;\n\t\t}\n\t}\n\n\tdestroy() {\n\t\tif (this._unsubscribe) {\n\t\t\tthis._unsubscribe();\n\t\t}\n\t\tif (this.navigationTabs) {\n\t\t\tthis.navigationTabs.destroy();\n\t\t}\n\t\tif (this.currentViewComponent && this.currentViewComponent.destroy) {\n\t\t\tthis.currentViewComponent.destroy();\n\t\t}\n\t\tif (this.element && this.element.parentNode) {\n\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t}\n\t}\n}\n","export class ChangelogView {\n\tconstructor(state, options = {}) {\n\t\tthis.state = state;\n\t\tthis.options = options;\n\t\tthis.element = null;\n\t\tthis._unsubscribe = null;\n\n\t\t// Configurable header colour — defaults to Product7 blue\n\t\tthis._headerBg = `linear-gradient(180deg, #f0f4ff 0%, #ffffff 100%)`;\n\t}\n\n\trender() {\n\t\tthis.element = document.createElement('div');\n\t\tthis.element.className = 'liveChat-view liveChat-changelog-view';\n\n\t\tthis._updateContent();\n\n\t\tthis._unsubscribe = this.state.subscribe((type) => {\n\t\t\tif (type === 'changelogUpdate') {\n\t\t\t\tthis._updateChangelogList();\n\t\t\t}\n\t\t});\n\n\t\treturn this.element;\n\t}\n\n\t_updateContent() {\n\t\tthis.element.innerHTML = `\n\t\t\t<div class=\"liveChat-changelog-header\">\n\t\t\t\t<div class=\"liveChat-changelog-header-top\">\n\t\t\t\t\t<h2>Latest Updates</h2>\n\t\t\t\t\t<button class=\"sdk-close-btn liveChat-changelog-close-btn liveChat-mobile-close-btn\" aria-label=\"Close\">\n\t\t\t\t\t\t<iconify-icon icon=\"ph:x\" width=\"18\" height=\"18\"></iconify-icon>\n\t\t\t\t\t</button>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t<div class=\"liveChat-changelog-body\">\n\t\t\t\t<div class=\"liveChat-changelog-list\"></div>\n\t\t\t</div>\n\t\t`;\n\n\t\tthis._updateChangelogList();\n\t\tthis._attachEvents();\n\t}\n\n\t_updateChangelogList() {\n\t\tconst changelogContainer = this.element.querySelector(\n\t\t\t'.liveChat-changelog-list'\n\t\t);\n\t\tconst changelogItems = this.state.changelogItems;\n\n\t\tif (changelogItems.length === 0) {\n\t\t\tchangelogContainer.innerHTML = this._renderEmptyState();\n\t\t\treturn;\n\t\t}\n\n\t\tchangelogContainer.innerHTML = changelogItems\n\t\t\t.map((item) => this._renderChangelogCard(item))\n\t\t\t.join('');\n\n\t\tthis._attachChangelogEvents();\n\t}\n\n\t_stripHtml(html) {\n\t\tif (!html) return '';\n\t\tconst tmp = document.createElement('div');\n\t\ttmp.innerHTML = html;\n\t\treturn (tmp.textContent || tmp.innerText || '').trim();\n\t}\n\n\t_renderChangelogCard(item) {\n\t\treturn `\n\t\t\t<div class=\"liveChat-changelog-card\" data-changelog-id=\"${item.id}\">\n\t\t\t\t${item.coverImage ? `<div class=\"liveChat-changelog-thumb\"><img src=\"${item.coverImage}\" alt=\"${item.title}\" onerror=\"this.parentElement.style.display='none';\" /></div>` : ''}\n\t\t\t\t<div class=\"liveChat-changelog-content\">\n\t\t\t\t\t<h3 class=\"liveChat-changelog-title\">${item.title}</h3>\n\t\t\t\t\t${item.description ? `<p class=\"liveChat-changelog-description\">${this._stripHtml(item.description)}</p>` : ''}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t`;\n\t}\n\n\t_getContrastColor(hexColor) {\n\t\tconst hex = hexColor.replace('#', '');\n\t\tconst r = parseInt(hex.substring(0, 2), 16);\n\t\tconst g = parseInt(hex.substring(2, 4), 16);\n\t\tconst b = parseInt(hex.substring(4, 6), 16);\n\t\tconst luminance = (0.299 * r + 0.587 * g + 0.114 * b) / 255;\n\t\treturn luminance > 0.5 ? '#374151' : '#ffffff';\n\t}\n\n\t_renderEmptyState() {\n\t\treturn `\n\t\t\t<div class=\"liveChat-empty-state\">\n\t\t\t\t<div class=\"liveChat-empty-state-icon\">\n\t\t\t\t\t<iconify-icon icon=\"ph:megaphone\" width=\"48\" height=\"48\"></iconify-icon>\n\t\t\t\t</div>\n\t\t\t\t<h3>No changelog yet</h3>\n\t\t\t\t<p>Check back later for updates</p>\n\t\t\t</div>\n\t\t`;\n\t}\n\n\t_formatDate(dateString) {\n\t\tif (!dateString) return '';\n\t\tconst date = new Date(dateString);\n\t\treturn date.toLocaleDateString('en-US', {\n\t\t\tmonth: 'short',\n\t\t\tday: 'numeric',\n\t\t\tyear: 'numeric',\n\t\t});\n\t}\n\n\t_truncateText(text, maxLength) {\n\t\tif (!text) return '';\n\t\tif (text.length <= maxLength) return text;\n\t\treturn text.substring(0, maxLength).trim() + '...';\n\t}\n\n\t_attachEvents() {\n\t\tconst mobileCloseBtn = this.element.querySelector(\n\t\t\t'.liveChat-changelog-close-btn'\n\t\t);\n\t\tif (mobileCloseBtn) {\n\t\t\tmobileCloseBtn.addEventListener('click', () => {\n\t\t\t\tthis.state.setOpen(false);\n\t\t\t});\n\t\t}\n\n\t\tthis._attachChangelogEvents();\n\t}\n\n\t_attachChangelogEvents() {\n\t\tthis.element\n\t\t\t.querySelectorAll('.liveChat-changelog-card')\n\t\t\t.forEach((card) => {\n\t\t\t\tcard.addEventListener('click', () => {\n\t\t\t\t\tconst changelogId = card.dataset.changelogId;\n\t\t\t\t\tconst changelogItem = this.state.changelogItems.find(\n\t\t\t\t\t\t(n) => n.id === changelogId\n\t\t\t\t\t);\n\t\t\t\t\tif (changelogItem?.url) {\n\t\t\t\t\t\twindow.open(changelogItem.url, '_blank');\n\t\t\t\t\t} else if (this.options.onChangelogClick) {\n\t\t\t\t\t\tthis.options.onChangelogClick(changelogItem);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t}\n\n\tdestroy() {\n\t\tif (this._unsubscribe) {\n\t\t\tthis._unsubscribe();\n\t\t}\n\t\tif (this.element && this.element.parentNode) {\n\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t}\n\t}\n}\n","export class ChatView {\n\tconstructor(state, options = {}) {\n\t\tthis.state = state;\n\t\tthis.options = options;\n\t\tthis.element = null;\n\t\tthis._unsubscribe = null;\n\t\tthis._typingTimeout = null;\n\t\tthis._isTyping = false;\n\t\tthis._typingIndicator = null;\n\t\tthis._isConversationClosed = false;\n\t\tthis._pendingAttachments = [];\n\t\tthis._emojiPickerOpen = false;\n\t\tthis._emojiOutsideHandler = null;\n\t\tthis._menuOutsideHandler = null;\n\t}\n\n\trender() {\n\t\tthis.element = document.createElement('div');\n\t\tthis.element.className = 'liveChat-view liveChat-chat-view';\n\n\t\tthis._updateContent();\n\n\t\tthis._unsubscribe = this.state.subscribe((type, data) => {\n\t\t\tif (type === 'connectionChange') {\n\t\t\t\tconst banner = this.element?.querySelector(\n\t\t\t\t\t'.liveChat-connection-banner'\n\t\t\t\t);\n\t\t\t\tif (banner) {\n\t\t\t\t\tbanner.style.display = data.connected ? 'none' : 'flex';\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (\n\t\t\t\ttype === 'messageAdded' &&\n\t\t\t\tdata.conversationId === this.state.activeConversationId\n\t\t\t) {\n\t\t\t\tthis._hideTypingIndicator();\n\t\t\t\tthis._appendMessage(data.message);\n\t\t\t} else if (\n\t\t\t\ttype === 'typingStarted' &&\n\t\t\t\tdata.conversationId === this.state.activeConversationId\n\t\t\t) {\n\t\t\t\tthis._showTypingIndicator(data.userName);\n\t\t\t} else if (\n\t\t\t\ttype === 'typingStopped' &&\n\t\t\t\tdata.conversationId === this.state.activeConversationId\n\t\t\t) {\n\t\t\t\tthis._hideTypingIndicator();\n\t\t\t} else if (\n\t\t\t\ttype === 'conversationUpdated' &&\n\t\t\t\tdata.conversationId === this.state.activeConversationId\n\t\t\t) {\n\t\t\t\tthis._updateContent();\n\t\t\t} else if (\n\t\t\t\ttype === 'messagesUpdate' &&\n\t\t\t\tdata.conversationId === this.state.activeConversationId\n\t\t\t) {\n\t\t\t\tthis._updateContent();\n\t\t\t} else if (type === 'settingsUpdate') {\n\t\t\t\tthis._updateContent();\n\t\t\t}\n\t\t});\n\n\t\treturn this.element;\n\t}\n\n\t_updateContent() {\n\t\tconst conversation = this.state.getActiveConversation();\n\t\tconst messages = this.state.getActiveMessages();\n\t\tconst isNewConversation = !this.state.activeConversationId;\n\t\tconst isClosed = !isNewConversation && conversation?.status === 'closed';\n\t\tthis._isConversationClosed = isClosed;\n\n\t\tconst messagesHtml =\n\t\t\tmessages.length === 0\n\t\t\t\t? this._renderEmptyState(isNewConversation)\n\t\t\t\t: this._renderGroupedMessages(messages);\n\n\t\tconst defaultPlaceholder =\n\t\t\tthis.options.composePlaceholder || 'Write a message...';\n\t\tconst placeholder = isNewConversation\n\t\t\t? this.options.composePlaceholder || 'Start typing your message...'\n\t\t\t: isClosed\n\t\t\t\t? 'Conversation closed'\n\t\t\t\t: defaultPlaceholder;\n\n\t\tconst logoUrl = this.options.logoUrl;\n\t\tconst teamName = this.state.teamName || 'Support';\n\t\tconst headerAvatarHtml = logoUrl\n\t\t\t? `<img src=\"${this._escapeHtml(logoUrl)}\" alt=\"${this._escapeHtml(teamName)}\" />`\n\t\t\t: `<iconify-icon icon=\"ph:chats-circle\" width=\"20\" height=\"20\"></iconify-icon>`;\n\n\t\tconst isExpanded = this.options.isExpanded?.() ?? false;\n\t\tconst expandIcon = isExpanded ? 'ph:arrows-in' : 'ph:arrows-out';\n\t\tconst expandLabel = isExpanded ? 'Collapse window' : 'Expand window';\n\n\t\tthis.element.innerHTML = `\n\t\t\t<div class=\"liveChat-chat-header\">\n\t\t\t\t<button class=\"sdk-btn-icon liveChat-back-btn\" aria-label=\"Back\">\n\t\t\t\t\t<iconify-icon icon=\"ph:arrow-left\" width=\"20\" height=\"20\"></iconify-icon>\n\t\t\t\t</button>\n\t\t\t\t<div class=\"liveChat-chat-header-avatar\">\n\t\t\t\t\t${headerAvatarHtml}\n\t\t\t\t</div>\n\t\t\t\t<div class=\"liveChat-chat-header-info\">\n\t\t\t\t\t<span class=\"liveChat-chat-title\">${this._escapeHtml(teamName)}</span>\n\t\t\t\t\t${isClosed || this.state.showReplyTime !== false ? `<span class=\"liveChat-chat-subtitle\">${isClosed ? 'Conversation resolved' : this.state.responseTime || 'Typically replies within minutes'}</span>` : ''}\n\t\t\t\t</div>\n\t\t\t\t<div class=\"liveChat-chat-header-actions\">\n\t\t\t\t\t<div class=\"liveChat-chat-menu-wrapper\">\n\t\t\t\t\t\t<button class=\"sdk-btn-icon liveChat-chat-menu-btn\" aria-label=\"Options\">\n\t\t\t\t\t\t\t<iconify-icon icon=\"ph:dots-three\" width=\"20\" height=\"20\"></iconify-icon>\n\t\t\t\t\t\t</button>\n\t\t\t\t\t\t<div class=\"liveChat-chat-menu-dropdown\">\n\t\t\t\t\t\t\t<button class=\"liveChat-chat-menu-item liveChat-expand-window-btn\">\n\t\t\t\t\t\t\t\t<iconify-icon icon=\"${expandIcon}\" width=\"16\" height=\"16\"></iconify-icon>\n\t\t\t\t\t\t\t\t<span>${expandLabel}</span>\n\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<button class=\"sdk-btn-icon sdk-close-btn liveChat-mobile-close-btn\" aria-label=\"Close\">\n\t\t\t\t\t\t<iconify-icon icon=\"ph:x\" width=\"18\" height=\"18\"></iconify-icon>\n\t\t\t\t\t</button>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t<div class=\"liveChat-connection-banner\" style=\"display:none;\">\n\t\t\t\t<iconify-icon icon=\"ph:wifi-slash\" width=\"14\" height=\"14\"></iconify-icon>\n\t\t\t\t<span>Reconnecting…</span>\n\t\t\t</div>\n\n\t\t\t<div class=\"liveChat-chat-messages\">\n\t\t\t\t${messagesHtml}\n\t\t\t\t${\n\t\t\t\t\tisClosed\n\t\t\t\t\t\t? `\n\t\t\t\t<div class=\"liveChat-closed-banner\">\n\t\t\t\t\t<iconify-icon icon=\"ph:check-circle\" width=\"18\" height=\"18\"></iconify-icon>\n\t\t\t\t\t<span>This conversation has been resolved</span>\n\t\t\t\t</div>\n\t\t\t\t`\n\t\t\t\t\t\t: ''\n\t\t\t\t}\n\t\t\t\t<div class=\"liveChat-typing-indicator\">\n\t\t\t\t\t<div class=\"liveChat-typing-dots\">\n\t\t\t\t\t\t<span></span><span></span><span></span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<span class=\"liveChat-typing-text\"></span>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t<div class=\"liveChat-scroll-pill\" style=\"display:none;\">\n\t\t\t\t<iconify-icon icon=\"ph:arrow-down\" width=\"14\" height=\"14\"></iconify-icon>\n\t\t\t\t<span>New message</span>\n\t\t\t</div>\n\n\t\t\t${\n\t\t\t\tisClosed\n\t\t\t\t\t? ''\n\t\t\t\t\t: `\n\t\t\t<div class=\"liveChat-compose-attachments-preview\"></div>\n\n\t\t\t<div class=\"liveChat-chat-compose\">\n\t\t\t\t<div class=\"liveChat-compose-input-wrapper\">\n\t\t\t\t\t<textarea class=\"liveChat-compose-input\" placeholder=\"${placeholder}\" rows=\"1\"></textarea>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"liveChat-compose-bottom\">\n\t\t\t\t\t<div class=\"liveChat-compose-actions\">\n\t\t\t\t\t\t${this.state.allowAttachments !== false ? `<button class=\"sdk-btn-icon liveChat-compose-attach\" aria-label=\"Attach file\"><iconify-icon icon=\"ph:paperclip\" width=\"20\" height=\"20\"></iconify-icon></button>` : ''}\n\t\t\t\t\t\t${this.state.allowEmoji !== false ? `<button class=\"sdk-btn-icon liveChat-emoji-btn\" aria-label=\"Emoji\"><iconify-icon icon=\"ph:smiley\" width=\"20\" height=\"20\"></iconify-icon></button>` : ''}\n\t\t\t\t\t</div>\n\t\t\t\t\t<button class=\"liveChat-compose-send\" aria-label=\"Send\" disabled>\n\t\t\t\t\t\t<iconify-icon icon=\"ph:paper-plane-right\" width=\"20\" height=\"20\"></iconify-icon>\n\t\t\t\t\t</button>\n\t\t\t\t</div>\n\t\t\t\t${this.state.allowAttachments !== false ? `<input type=\"file\" class=\"liveChat-compose-file-input\" multiple accept=\"image/*,.pdf,.doc,.docx,.xls,.xlsx,.txt,.zip\" />` : ''}\n\t\t\t</div>\n\t\t\t`\n\t\t\t}\n\t\t`;\n\n\t\tthis._typingIndicator = this.element.querySelector(\n\t\t\t'.liveChat-typing-indicator'\n\t\t);\n\t\tthis._attachEvents();\n\t\tthis._scrollToBottom();\n\t\tthis._renderAttachmentPreviews();\n\t\tthis._setupScrollPill();\n\t}\n\n\t_renderEmptyState(isNewConversation = false) {\n\t\tconst logoUrl = this.options.logoUrl;\n\n\t\tconst logoHtml = logoUrl\n\t\t\t? `<div class=\"liveChat-chat-empty-logo\"><img src=\"${this._escapeHtml(logoUrl)}\" alt=\"${this._escapeHtml(this.state.teamName)}\" /></div>`\n\t\t\t: '';\n\n\t\treturn `\n\t\t\t<div class=\"liveChat-chat-empty\">\n\t\t\t\t${logoHtml}\n\t\t\t\t<h3>${isNewConversation ? 'Start a new conversation' : 'Start the conversation'}</h3>\n\t\t\t</div>\n\t\t`;\n\t}\n\n\t_renderMessageAttachments(attachments) {\n\t\tif (!attachments || attachments.length === 0) return '';\n\t\treturn attachments\n\t\t\t.map((att) => {\n\t\t\t\tif (att.type === 'image') {\n\t\t\t\t\treturn `<img class=\"liveChat-message-image\" src=\"${this._escapeHtml(att.url)}\" alt=\"${this._escapeHtml(att.name || 'image')}\" data-url=\"${this._escapeHtml(att.url)}\" />`;\n\t\t\t\t}\n\t\t\t\treturn `<a class=\"liveChat-message-file\" href=\"${this._escapeHtml(att.url)}\" data-url=\"${this._escapeHtml(att.url)}\" data-name=\"${this._escapeHtml(att.name || 'file')}\">\n\t\t\t\t<iconify-icon icon=\"ph:file\" width=\"18\" height=\"18\"></iconify-icon>\n\t\t\t\t<span>${this._escapeHtml(att.name || 'file')}</span>\n\t\t\t\t<iconify-icon icon=\"ph:download-simple\" width=\"16\" height=\"16\" class=\"liveChat-file-download-icon\"></iconify-icon>\n\t\t\t</a>`;\n\t\t\t})\n\t\t\t.join('');\n\t}\n\n\t_renderMessage(message, isLastInGroup = true) {\n\t\tif (message.isSystem) {\n\t\t\treturn this._renderSystemMessage(message);\n\t\t}\n\n\t\tconst isOwn = message.isOwn;\n\t\tconst messageClass = isOwn\n\t\t\t? 'liveChat-message-own'\n\t\t\t: 'liveChat-message-received';\n\t\tconst timeStr = isLastInGroup\n\t\t\t? this._formatMessageTime(message.timestamp)\n\t\t\t: '';\n\t\tconst attachmentsHtml = this._renderMessageAttachments(message.attachments);\n\t\tconst isOptimistic = message.isOptimistic;\n\n\t\tconst contentHtml = message.content\n\t\t\t? `<div class=\"liveChat-message-content\">${this._formatMessageContent(message.content)}</div>`\n\t\t\t: '';\n\t\tconst bubbleHtml = contentHtml\n\t\t\t? `<div class=\"liveChat-message-bubble\">${contentHtml}</div>`\n\t\t\t: '';\n\n\t\tif (isOwn) {\n\t\t\tconst sentIndicator = isLastInGroup\n\t\t\t\t? `<div class=\"liveChat-message-meta liveChat-message-meta-own\">\n\t\t\t\t\t\t${\n\t\t\t\t\t\t\tisOptimistic\n\t\t\t\t\t\t\t\t? `<span class=\"liveChat-message-sent-status\">Sending…</span>`\n\t\t\t\t\t\t\t\t: `<span class=\"liveChat-message-sent-status\">Sent</span>`\n\t\t\t\t\t\t}\n\t\t\t\t\t\t${timeStr ? `<span>·</span><span>${timeStr}</span>` : ''}\n\t\t\t\t\t</div>`\n\t\t\t\t: '';\n\t\t\treturn `\n\t\t\t\t<div class=\"liveChat-message ${messageClass}${isOptimistic ? ' liveChat-message-optimistic' : ''}\">\n\t\t\t\t\t${bubbleHtml}\n\t\t\t\t\t${attachmentsHtml}\n\t\t\t\t\t${sentIndicator}\n\t\t\t\t</div>\n\t\t\t`;\n\t\t}\n\n\t\tconst avatarHtml = this._renderSenderAvatar(message.sender);\n\t\treturn `\n\t\t\t<div class=\"liveChat-message ${messageClass}\">\n\t\t\t\t<div class=\"liveChat-message-row\">\n\t\t\t\t\t<div class=\"liveChat-message-avatar\">${avatarHtml}</div>\n\t\t\t\t\t<div class=\"liveChat-message-wrapper\">\n\t\t\t\t\t\t${bubbleHtml}\n\t\t\t\t\t\t${attachmentsHtml}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t${timeStr ? `<div class=\"liveChat-message-meta\"><span>${timeStr}</span></div>` : ''}\n\t\t\t</div>\n\t\t`;\n\t}\n\n\t_renderSystemMessage(message) {\n\t\tconst content = message.content || '';\n\t\tconst isJoinLeave =\n\t\t\tcontent.includes('joined the chat') ||\n\t\t\tcontent.includes('left the chat') ||\n\t\t\tcontent.includes('joined the conversation') ||\n\t\t\tcontent.includes('left the conversation');\n\n\t\tif (isJoinLeave && message.sender) {\n\t\t\tconst rawName = message.sender.name || '';\n\t\t\tconst name = rawName\n\t\t\t\t.split(' ')\n\t\t\t\t.map((w) => w.charAt(0).toUpperCase() + w.slice(1))\n\t\t\t\t.join(' ');\n\t\t\tconst logoUrl = this.options.logoUrl;\n\t\t\tconst logoHtml = logoUrl\n\t\t\t\t? `<img src=\"${this._escapeHtml(logoUrl)}\" alt=\"logo\" />`\n\t\t\t\t: name.charAt(0).toUpperCase();\n\t\t\tconst timeStr = this._formatMessageTime(message.timestamp);\n\n\t\t\tconst rawAction = content.replace(rawName, '').trim();\n\t\t\tconst action = rawAction.charAt(0).toUpperCase() + rawAction.slice(1);\n\n\t\t\treturn `\n\t\t\t\t<div class=\"liveChat-message-system-event\">\n\t\t\t\t\t<div class=\"liveChat-message-system-event-avatar\">${logoHtml}</div>\n\t\t\t\t\t<span class=\"liveChat-message-system-event-name\">${this._escapeHtml(name)}</span>\n\t\t\t\t\t<span class=\"liveChat-message-system-event-action\">${this._escapeHtml(action)}</span>\n\t\t\t\t\t${timeStr ? `<span class=\"liveChat-message-system-event-time\">${timeStr}</span>` : ''}\n\t\t\t\t</div>\n\t\t\t`;\n\t\t}\n\n\t\t// Render automated/bot messages as a proper received chat bubble\n\t\tconst teamName = this.state.teamName || 'Support';\n\t\tconst logoUrl = this.options.logoUrl;\n\t\tconst avatarHtml = logoUrl\n\t\t\t? `<div class=\"sdk-avatar sdk-avatar-sm\"><img src=\"${this._escapeHtml(logoUrl)}\" alt=\"${this._escapeHtml(teamName)}\" /></div>`\n\t\t\t: `<div class=\"sdk-avatar sdk-avatar-sm\">${teamName.charAt(0).toUpperCase()}</div>`;\n\t\tconst timeStr = this._formatMessageTime(message.timestamp);\n\n\t\treturn `\n\t\t\t<div class=\"liveChat-message liveChat-message-received\">\n\t\t\t\t<div class=\"liveChat-message-row\">\n\t\t\t\t\t<div class=\"liveChat-message-avatar\">${avatarHtml}</div>\n\t\t\t\t\t<div class=\"liveChat-message-wrapper\">\n\t\t\t\t\t\t<div class=\"liveChat-message-bubble\">\n\t\t\t\t\t\t\t<div class=\"liveChat-message-content\">${this._formatMessageContent(content)}</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t${timeStr ? `<div class=\"liveChat-message-meta\"><span>${timeStr}</span></div>` : ''}\n\t\t\t</div>\n\t\t`;\n\t}\n\n\t_renderSenderAvatar(sender) {\n\t\tif (sender?.avatarUrl) {\n\t\t\treturn `<div class=\"sdk-avatar sdk-avatar-sm\"><img src=\"${sender.avatarUrl}\" alt=\"${sender.name}\" /></div>`;\n\t\t}\n\t\tconst initial = (sender?.name || 'S').charAt(0).toUpperCase();\n\t\treturn `<div class=\"sdk-avatar sdk-avatar-sm\">${initial}</div>`;\n\t}\n\n\t_renderTeamAvatars() {\n\t\tconst avatars = this.state.teamAvatars;\n\t\tif (!avatars || avatars.length === 0) {\n\t\t\treturn '';\n\t\t}\n\n\t\tconst avatarItems = avatars\n\t\t\t.slice(0, 3)\n\t\t\t.map((avatar) => {\n\t\t\t\tif (typeof avatar === 'string' && avatar.startsWith('http')) {\n\t\t\t\t\treturn `<div class=\"sdk-avatar sdk-avatar-md\"><img src=\"${avatar}\" alt=\"Team member\" /></div>`;\n\t\t\t\t}\n\t\t\t\treturn `<div class=\"sdk-avatar sdk-avatar-md\">${avatar.charAt(0).toUpperCase()}</div>`;\n\t\t\t})\n\t\t\t.join('');\n\n\t\treturn `<div class=\"liveChat-avatar-stack\">${avatarItems}</div>`;\n\t}\n\n\t_formatMessageTime(timestamp) {\n\t\tif (!timestamp) return '';\n\t\tconst date = new Date(timestamp);\n\t\tconst datePart = date.toLocaleDateString('en-GB', {\n\t\t\tday: '2-digit',\n\t\t\tmonth: 'short',\n\t\t\tyear: 'numeric',\n\t\t});\n\t\tconst timePart = date.toLocaleTimeString('en-GB', {\n\t\t\thour: '2-digit',\n\t\t\tminute: '2-digit',\n\t\t\thour12: false,\n\t\t});\n\t\treturn `${datePart}, ${timePart}`;\n\t}\n\n\t_formatMessageContent(content) {\n\t\tif (!content) return '';\n\t\treturn content\n\t\t\t.replace(/&/g, '&amp;')\n\t\t\t.replace(/</g, '&lt;')\n\t\t\t.replace(/>/g, '&gt;')\n\t\t\t.replace(/\\n/g, '<br>');\n\t}\n\n\t_appendMessage(message) {\n\t\tconst messagesContainer = this.element.querySelector(\n\t\t\t'.liveChat-chat-messages'\n\t\t);\n\t\tconst emptyState = messagesContainer.querySelector('.liveChat-chat-empty');\n\t\tif (emptyState) {\n\t\t\temptyState.remove();\n\t\t}\n\n\t\tconst messageHtml = this._renderMessage(message);\n\t\tconst tempDiv = document.createElement('div');\n\t\ttempDiv.innerHTML = messageHtml;\n\t\tmessagesContainer.appendChild(tempDiv.firstElementChild);\n\n\t\t// Show scroll pill if user is scrolled up, otherwise scroll to bottom\n\t\tconst isNearBottom =\n\t\t\tmessagesContainer.scrollHeight -\n\t\t\t\tmessagesContainer.scrollTop -\n\t\t\t\tmessagesContainer.clientHeight <\n\t\t\t80;\n\n\t\tif (isNearBottom) {\n\t\t\tthis._scrollToBottom();\n\t\t} else if (!message.isOwn) {\n\t\t\tconst pill = this.element.querySelector('.liveChat-scroll-pill');\n\t\t\tif (pill) pill.style.display = 'flex';\n\t\t}\n\t}\n\n\t_scrollToBottom() {\n\t\tconst messagesContainer = this.element.querySelector(\n\t\t\t'.liveChat-chat-messages'\n\t\t);\n\t\tif (messagesContainer) {\n\t\t\tsetTimeout(() => {\n\t\t\t\tmessagesContainer.scrollTop = messagesContainer.scrollHeight;\n\t\t\t}, 50);\n\t\t}\n\t}\n\n\t_setupScrollPill() {\n\t\tconst messagesContainer = this.element.querySelector(\n\t\t\t'.liveChat-chat-messages'\n\t\t);\n\t\tconst pill = this.element.querySelector('.liveChat-scroll-pill');\n\t\tif (!messagesContainer || !pill) return;\n\n\t\tpill.addEventListener('click', () => {\n\t\t\tthis._scrollToBottom();\n\t\t\tpill.style.display = 'none';\n\t\t});\n\n\t\tmessagesContainer.addEventListener('scroll', () => {\n\t\t\tconst isNearBottom =\n\t\t\t\tmessagesContainer.scrollHeight -\n\t\t\t\t\tmessagesContainer.scrollTop -\n\t\t\t\t\tmessagesContainer.clientHeight <\n\t\t\t\t80;\n\t\t\tif (isNearBottom) {\n\t\t\t\tpill.style.display = 'none';\n\t\t\t}\n\t\t});\n\t}\n\n\t_renderGroupedMessages(messages) {\n\t\tconst GROUP_TIME_GAP = 5 * 60 * 1000; // 5 minutes\n\t\tlet html = '';\n\n\t\tmessages.forEach((msg, index) => {\n\t\t\tconst isLast = index === messages.length - 1;\n\t\t\tconst nextMsg = messages[index + 1];\n\t\t\tconst currentTime = msg.timestamp ? new Date(msg.timestamp).getTime() : 0;\n\t\t\tconst nextTime = nextMsg?.timestamp\n\t\t\t\t? new Date(nextMsg.timestamp).getTime()\n\t\t\t\t: null;\n\t\t\tconst senderKey = msg.isSystem\n\t\t\t\t? 'system'\n\t\t\t\t: msg.isOwn\n\t\t\t\t\t? 'own'\n\t\t\t\t\t: msg.sender?.name || 'agent';\n\t\t\tconst nextSenderKey = nextMsg\n\t\t\t\t? nextMsg.isSystem\n\t\t\t\t\t? 'system'\n\t\t\t\t\t: nextMsg.isOwn\n\t\t\t\t\t\t? 'own'\n\t\t\t\t\t\t: nextMsg.sender?.name || 'agent'\n\t\t\t\t: null;\n\n\t\t\tconst timeGapAfter = nextTime && nextTime - currentTime > GROUP_TIME_GAP;\n\t\t\tconst senderChanges = nextMsg && senderKey !== nextSenderKey;\n\t\t\tconst isLastInGroup = isLast || timeGapAfter || senderChanges;\n\n\t\t\thtml += this._renderMessage(msg, isLastInGroup);\n\t\t});\n\n\t\treturn html;\n\t}\n\n\t_updateSendButtonState() {\n\t\tconst input = this.element.querySelector('.liveChat-compose-input');\n\t\tconst sendBtn = this.element.querySelector('.liveChat-compose-send');\n\t\tif (input && sendBtn) {\n\t\t\tsendBtn.disabled =\n\t\t\t\t!input.value.trim() && this._pendingAttachments.length === 0;\n\t\t}\n\t}\n\n\t_renderAttachmentPreviews() {\n\t\tconst container = this.element.querySelector(\n\t\t\t'.liveChat-compose-attachments-preview'\n\t\t);\n\t\tif (!container) return;\n\n\t\tif (this._pendingAttachments.length === 0) {\n\t\t\tcontainer.innerHTML = '';\n\t\t\tcontainer.style.display = 'none';\n\t\t\treturn;\n\t\t}\n\n\t\tcontainer.style.display = 'flex';\n\t\tcontainer.innerHTML = this._pendingAttachments\n\t\t\t.map((att, i) => {\n\t\t\t\tconst isImage = att.type.startsWith('image');\n\t\t\t\tconst thumb = isImage\n\t\t\t\t\t? `<img class=\"liveChat-attachment-thumb\" src=\"${att.preview}\" alt=\"${this._escapeHtml(att.file.name)}\" />`\n\t\t\t\t\t: `<div class=\"liveChat-attachment-thumb liveChat-attachment-file-icon\"><iconify-icon icon=\"ph:file\" width=\"24\" height=\"24\"></iconify-icon></div>`;\n\t\t\t\treturn `\n\t\t\t\t<div class=\"liveChat-attachment-preview\" data-index=\"${i}\">\n\t\t\t\t\t${thumb}\n\t\t\t\t\t<button class=\"liveChat-attachment-remove\" data-index=\"${i}\" aria-label=\"Remove\">&times;</button>\n\t\t\t\t</div>\n\t\t\t`;\n\t\t\t})\n\t\t\t.join('');\n\n\t\tcontainer.querySelectorAll('.liveChat-attachment-remove').forEach((btn) => {\n\t\t\tbtn.addEventListener('click', (e) => {\n\t\t\t\tconst idx = parseInt(e.currentTarget.dataset.index, 10);\n\t\t\t\tthis._pendingAttachments.splice(idx, 1);\n\t\t\t\tthis._renderAttachmentPreviews();\n\t\t\t\tthis._updateSendButtonState();\n\t\t\t});\n\t\t});\n\t}\n\n\t_attachEvents() {\n\t\tthis.element\n\t\t\t.querySelector('.liveChat-back-btn')\n\t\t\t.addEventListener('click', () => {\n\t\t\t\tthis.state.setView('messages');\n\t\t\t});\n\n\t\tconst mobileCloseBtn = this.element.querySelector(\n\t\t\t'.liveChat-mobile-close-btn'\n\t\t);\n\t\tif (mobileCloseBtn) {\n\t\t\tmobileCloseBtn.addEventListener('click', () => {\n\t\t\t\tthis.state.setOpen(false);\n\t\t\t});\n\t\t}\n\n\t\tconst menuBtn = this.element.querySelector('.liveChat-chat-menu-btn');\n\t\tconst dropdown = this.element.querySelector('.liveChat-chat-menu-dropdown');\n\t\tif (menuBtn && dropdown) {\n\t\t\tmenuBtn.addEventListener('click', (e) => {\n\t\t\t\te.stopPropagation();\n\t\t\t\tdropdown.classList.toggle('open');\n\t\t\t\tif (\n\t\t\t\t\tdropdown.classList.contains('open') &&\n\t\t\t\t\tthis._menuOutsideHandler === null\n\t\t\t\t) {\n\t\t\t\t\tthis._menuOutsideHandler = (ev) => {\n\t\t\t\t\t\tif (!dropdown.contains(ev.target) && !menuBtn.contains(ev.target)) {\n\t\t\t\t\t\t\tdropdown.classList.remove('open');\n\t\t\t\t\t\t\tdocument.removeEventListener('click', this._menuOutsideHandler);\n\t\t\t\t\t\t\tthis._menuOutsideHandler = null;\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\tsetTimeout(\n\t\t\t\t\t\t() => document.addEventListener('click', this._menuOutsideHandler),\n\t\t\t\t\t\t0\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tconst expandWindowBtn = this.element.querySelector(\n\t\t\t'.liveChat-expand-window-btn'\n\t\t);\n\t\tif (expandWindowBtn && dropdown) {\n\t\t\texpandWindowBtn.addEventListener('click', () => {\n\t\t\t\tdropdown.classList.remove('open');\n\t\t\t\tif (this._menuOutsideHandler) {\n\t\t\t\t\tdocument.removeEventListener('click', this._menuOutsideHandler);\n\t\t\t\t\tthis._menuOutsideHandler = null;\n\t\t\t\t}\n\t\t\t\tthis.options.onToggleExpand?.();\n\t\t\t});\n\t\t}\n\n\t\tconst input = this.element.querySelector('.liveChat-compose-input');\n\t\tconst sendBtn = this.element.querySelector('.liveChat-compose-send');\n\n\t\tif (input && sendBtn) {\n\t\t\tinput.addEventListener('input', () => {\n\t\t\t\tinput.style.height = 'auto';\n\t\t\t\tinput.style.height = Math.min(input.scrollHeight, 120) + 'px';\n\t\t\t\tthis._updateSendButtonState();\n\n\t\t\t\tif (input.value.trim()) {\n\t\t\t\t\tthis._startTyping();\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tinput.addEventListener('keydown', (e) => {\n\t\t\t\tif (e.key === 'Enter' && !e.shiftKey) {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\tthis._sendMessage();\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tsendBtn.addEventListener('click', () => {\n\t\t\t\tthis._sendMessage();\n\t\t\t});\n\t\t}\n\n\t\tconst emojiBtn = this.element.querySelector('.liveChat-emoji-btn');\n\t\tif (emojiBtn) {\n\t\t\temojiBtn.addEventListener('click', (e) => {\n\t\t\t\te.stopPropagation();\n\t\t\t\tthis._toggleEmojiPicker();\n\t\t\t});\n\t\t}\n\n\t\tconst attachBtn = this.element.querySelector('.liveChat-compose-attach');\n\t\tconst fileInput = this.element.querySelector(\n\t\t\t'.liveChat-compose-file-input'\n\t\t);\n\n\t\tif (attachBtn && fileInput) {\n\t\t\tattachBtn.addEventListener('click', () => {\n\t\t\t\tfileInput.click();\n\t\t\t});\n\n\t\t\tfileInput.addEventListener('change', (e) => {\n\t\t\t\tconst files = e.target.files;\n\t\t\t\tif (!files) return;\n\t\t\t\tArray.from(files).forEach((file) => {\n\t\t\t\t\tconst reader = new FileReader();\n\t\t\t\t\treader.onload = (ev) => {\n\t\t\t\t\t\tthis._pendingAttachments.push({\n\t\t\t\t\t\t\tfile,\n\t\t\t\t\t\t\tpreview: ev.target.result,\n\t\t\t\t\t\t\ttype: file.type,\n\t\t\t\t\t\t});\n\t\t\t\t\t\tthis._renderAttachmentPreviews();\n\t\t\t\t\t\tthis._updateSendButtonState();\n\t\t\t\t\t};\n\t\t\t\t\treader.readAsDataURL(file);\n\t\t\t\t});\n\t\t\t\tfileInput.value = '';\n\t\t\t});\n\t\t}\n\n\t\tconst messagesContainer = this.element.querySelector(\n\t\t\t'.liveChat-chat-messages'\n\t\t);\n\t\tif (messagesContainer) {\n\t\t\tmessagesContainer.addEventListener('click', (e) => {\n\t\t\t\tconst fileLink = e.target.closest('.liveChat-message-file');\n\t\t\t\tif (fileLink) {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\tconst url = fileLink.dataset.url;\n\t\t\t\t\tconst name = fileLink.dataset.name;\n\t\t\t\t\tthis._downloadFile(url, name);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst img = e.target.closest('.liveChat-message-image');\n\t\t\t\tif (img) {\n\t\t\t\t\tconst url = img.dataset.url || img.src;\n\t\t\t\t\twindow.open(url, '_blank');\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\tasync _downloadFile(url, name) {\n\t\ttry {\n\t\t\tconst response = await fetch(url);\n\t\t\tconst blob = await response.blob();\n\t\t\tconst blobUrl = URL.createObjectURL(blob);\n\t\t\tconst a = document.createElement('a');\n\t\t\ta.href = blobUrl;\n\t\t\ta.download = name || 'download';\n\t\t\ta.style.display = 'none';\n\t\t\tdocument.body.appendChild(a);\n\t\t\ta.click();\n\t\t\tdocument.body.removeChild(a);\n\t\t\tURL.revokeObjectURL(blobUrl);\n\t\t} catch {\n\t\t\twindow.open(url, '_blank');\n\t\t}\n\t}\n\n\t_escapeHtml(text) {\n\t\tif (!text) return '';\n\t\treturn text\n\t\t\t.replace(/&/g, '&amp;')\n\t\t\t.replace(/</g, '&lt;')\n\t\t\t.replace(/>/g, '&gt;')\n\t\t\t.replace(/\"/g, '&quot;');\n\t}\n\n\tasync _sendMessage() {\n\t\tif (this._isConversationClosed) return;\n\n\t\tconst input = this.element.querySelector('.liveChat-compose-input');\n\t\tconst content = input.value.trim();\n\t\tconst hasAttachments = this._pendingAttachments.length > 0;\n\n\t\tif (!content && !hasAttachments) return;\n\n\t\tthis._stopTyping();\n\n\t\tconst attachmentsToSend = [...this._pendingAttachments];\n\t\tconst isNewConversation = !this.state.activeConversationId;\n\n\t\tif (isNewConversation) {\n\t\t\tif (this.options.onStartConversation) {\n\t\t\t\tthis.options.onStartConversation(content, attachmentsToSend);\n\t\t\t}\n\t\t} else {\n\t\t\tconst message = {\n\t\t\t\tid: 'msg_' + Date.now(),\n\t\t\t\tcontent: content,\n\t\t\t\tisOwn: true,\n\t\t\t\tisOptimistic: true,\n\t\t\t\ttimestamp: new Date().toISOString(),\n\t\t\t\tattachments: attachmentsToSend.map((a) => ({\n\t\t\t\t\turl: a.preview,\n\t\t\t\t\ttype: a.type.startsWith('image') ? 'image' : 'file',\n\t\t\t\t\tname: a.file.name,\n\t\t\t\t})),\n\t\t\t};\n\n\t\t\tthis.state.addMessage(this.state.activeConversationId, message);\n\n\t\t\tif (this.options.onSendMessage) {\n\t\t\t\tthis.options.onSendMessage(\n\t\t\t\t\tthis.state.activeConversationId,\n\t\t\t\t\tmessage,\n\t\t\t\t\tattachmentsToSend\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\tinput.value = '';\n\t\tinput.style.height = 'auto';\n\t\tthis._pendingAttachments = [];\n\t\tthis._renderAttachmentPreviews();\n\t\tthis._updateSendButtonState();\n\t}\n\n\t_loadEmojiPicker() {\n\t\tif (document.querySelector('#product7-emoji-picker-script')) {\n\t\t\treturn Promise.resolve();\n\t\t}\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tconst script = document.createElement('script');\n\t\t\tscript.id = 'product7-emoji-picker-script';\n\t\t\tscript.type = 'module';\n\t\t\tscript.src =\n\t\t\t\t'https://cdn.jsdelivr.net/npm/emoji-picker-element@1/index.js';\n\t\t\tscript.onload = resolve;\n\t\t\tscript.onerror = reject;\n\t\t\tdocument.head.appendChild(script);\n\t\t});\n\t}\n\n\tasync _toggleEmojiPicker() {\n\t\tconst existing = this.element.querySelector(\n\t\t\t'.liveChat-emoji-picker-container'\n\t\t);\n\t\tif (existing) {\n\t\t\texisting.remove();\n\t\t\tthis._emojiPickerOpen = false;\n\t\t\tif (this._emojiOutsideHandler) {\n\t\t\t\tdocument.removeEventListener('click', this._emojiOutsideHandler);\n\t\t\t\tthis._emojiOutsideHandler = null;\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\ttry {\n\t\t\tawait this._loadEmojiPicker();\n\t\t} catch {\n\t\t\treturn;\n\t\t}\n\n\t\tconst container = document.createElement('div');\n\t\tcontainer.className = 'liveChat-emoji-picker-container';\n\n\t\tconst picker = document.createElement('emoji-picker');\n\t\tcontainer.appendChild(picker);\n\n\t\tconst compose = this.element.querySelector('.liveChat-chat-compose');\n\t\tcompose.parentNode.insertBefore(container, compose);\n\t\tthis._emojiPickerOpen = true;\n\n\t\tpicker.addEventListener('emoji-click', (e) => {\n\t\t\tthis._insertEmoji(e.detail.unicode);\n\t\t\tcontainer.remove();\n\t\t\tthis._emojiPickerOpen = false;\n\t\t\tif (this._emojiOutsideHandler) {\n\t\t\t\tdocument.removeEventListener('click', this._emojiOutsideHandler);\n\t\t\t\tthis._emojiOutsideHandler = null;\n\t\t\t}\n\t\t});\n\n\t\tthis._emojiOutsideHandler = (e) => {\n\t\t\tif (\n\t\t\t\t!container.contains(e.target) &&\n\t\t\t\t!e.target.closest('.liveChat-emoji-btn')\n\t\t\t) {\n\t\t\t\tcontainer.remove();\n\t\t\t\tthis._emojiPickerOpen = false;\n\t\t\t\tdocument.removeEventListener('click', this._emojiOutsideHandler);\n\t\t\t\tthis._emojiOutsideHandler = null;\n\t\t\t}\n\t\t};\n\t\tsetTimeout(\n\t\t\t() => document.addEventListener('click', this._emojiOutsideHandler),\n\t\t\t0\n\t\t);\n\t}\n\n\t_insertEmoji(emoji) {\n\t\tconst input = this.element.querySelector('.liveChat-compose-input');\n\t\tif (!input) return;\n\t\tconst start = input.selectionStart;\n\t\tconst end = input.selectionEnd;\n\t\tinput.value = input.value.slice(0, start) + emoji + input.value.slice(end);\n\t\tinput.selectionStart = input.selectionEnd = start + emoji.length;\n\t\tinput.focus();\n\t\tinput.dispatchEvent(new Event('input'));\n\t}\n\n\t_startTyping() {\n\t\tif (this._isConversationClosed) return;\n\t\tif (!this._isTyping && this.state.activeConversationId) {\n\t\t\tthis._isTyping = true;\n\t\t\tif (this.options.onTyping) {\n\t\t\t\tthis.options.onTyping(this.state.activeConversationId, true);\n\t\t\t}\n\t\t}\n\n\t\tif (this._typingTimeout) {\n\t\t\tclearTimeout(this._typingTimeout);\n\t\t}\n\t\tthis._typingTimeout = setTimeout(() => {\n\t\t\tthis._stopTyping();\n\t\t}, 3000);\n\t}\n\n\t_stopTyping() {\n\t\tif (this._isTyping && this.state.activeConversationId) {\n\t\t\tthis._isTyping = false;\n\t\t\tif (this.options.onTyping) {\n\t\t\t\tthis.options.onTyping(this.state.activeConversationId, false);\n\t\t\t}\n\t\t}\n\t\tif (this._typingTimeout) {\n\t\t\tclearTimeout(this._typingTimeout);\n\t\t\tthis._typingTimeout = null;\n\t\t}\n\t}\n\n\t_showTypingIndicator(userName) {\n\t\tif (this._typingIndicator) {\n\t\t\tthis._typingIndicator.style.display = 'flex';\n\t\t\tconst textEl = this._typingIndicator.querySelector(\n\t\t\t\t'.liveChat-typing-text'\n\t\t\t);\n\t\t\tif (textEl) {\n\t\t\t\ttextEl.textContent = `${userName || 'Support'} is typing...`;\n\t\t\t}\n\t\t\tthis._scrollToBottom();\n\t\t}\n\t}\n\n\t_hideTypingIndicator() {\n\t\tif (this._typingIndicator) {\n\t\t\tthis._typingIndicator.style.display = 'none';\n\t\t}\n\t}\n\n\tdestroy() {\n\t\tif (this._unsubscribe) {\n\t\t\tthis._unsubscribe();\n\t\t}\n\t\tif (this._typingTimeout) {\n\t\t\tclearTimeout(this._typingTimeout);\n\t\t}\n\t\tthis._stopTyping();\n\t\tif (this._emojiOutsideHandler) {\n\t\t\tdocument.removeEventListener('click', this._emojiOutsideHandler);\n\t\t}\n\t\tif (this._menuOutsideHandler) {\n\t\t\tdocument.removeEventListener('click', this._menuOutsideHandler);\n\t\t}\n\t\tif (this.element && this.element.parentNode) {\n\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t}\n\t}\n}\n","export class ConversationsView {\n\tconstructor(state, options = {}) {\n\t\tthis.state = state;\n\t\tthis.options = options;\n\t\tthis.element = null;\n\t\tthis._unsubscribe = null;\n\t\tthis.avatarColors = [\n\t\t\t'#155EEF',\n\t\t\t'#8b5cf6',\n\t\t\t'#10b981',\n\t\t\t'#f59e0b',\n\t\t\t'#ef4444',\n\t\t\t'#ec4899',\n\t\t\t'#06b6d4',\n\t\t];\n\t}\n\n\trender() {\n\t\tthis.element = document.createElement('div');\n\t\tthis.element.className = 'liveChat-view liveChat-conversations-view';\n\n\t\tthis._updateContent();\n\t\tthis._attachEvents();\n\n\t\tthis._unsubscribe = this.state.subscribe((type) => {\n\t\t\tif (\n\t\t\t\ttype === 'conversationsUpdate' ||\n\t\t\t\ttype === 'conversationAdded' ||\n\t\t\t\ttype === 'conversationRead' ||\n\t\t\t\ttype === 'conversationUpdated'\n\t\t\t) {\n\t\t\t\tthis._updateContent();\n\t\t\t}\n\t\t});\n\n\t\treturn this.element;\n\t}\n\n\t_getAvatarColor(name) {\n\t\t// Generate consistent color based on name\n\t\tconst charCode = (name || 'S').charCodeAt(0);\n\t\treturn this.avatarColors[charCode % this.avatarColors.length];\n\t}\n\n\t_updateContent() {\n\t\tconst conversations = this.state.conversations;\n\n\t\tlet conversationsHtml;\n\t\tif (conversations.length === 0) {\n\t\t\tconversationsHtml = `\n <div class=\"liveChat-empty-state\">\n <div class=\"liveChat-empty-state-icon\">\n <iconify-icon icon=\"ph:chat-circle\" width=\"48\" height=\"48\"></iconify-icon>\n </div>\n <h3>No conversations yet</h3>\n <p>Start a new conversation with our team</p>\n </div>\n `;\n\t\t} else {\n\t\t\tconversationsHtml = `\n <div class=\"liveChat-conversations-list\">\n ${conversations.map((conv) => this._renderConversationItem(conv)).join('')}\n </div>\n `;\n\t\t}\n\n\t\tthis.element.innerHTML = `\n <div class=\"liveChat-conversations-header\">\n <h2>Messages</h2>\n <button class=\"sdk-close-btn liveChat-mobile-close-btn\" aria-label=\"Close\">\n <iconify-icon icon=\"ph:x\" width=\"18\" height=\"18\"></iconify-icon>\n</button>\n </div>\n\n <div class=\"liveChat-conversations-body\">\n ${conversationsHtml}\n </div>\n\n <div class=\"liveChat-conversations-footer\">\n <button class=\"liveChat-new-message-btn\">\n <iconify-icon icon=\"ph:pencil-simple\" width=\"16\" height=\"16\" style=\"flex-shrink: 0; color: var(--msg-text-secondary);\"></iconify-icon>\n <span style=\"flex: 1;\">New conversation</span>\n <iconify-icon icon=\"ph:caret-right\" width=\"16\" height=\"16\" style=\"flex-shrink: 0; color: var(--msg-text-tertiary);\"></iconify-icon>\n </button>\n </div>\n `;\n\n\t\tthis._attachEvents();\n\t}\n\n\t_renderConversationItem(conversation) {\n\t\tconst isClosed = conversation.status === 'closed';\n\t\tconst unreadClass = conversation.unread > 0 ? 'unread' : '';\n\t\tconst closedClass = isClosed ? 'closed' : '';\n\t\tconst timeAgo = this._formatTimeAgo(conversation.lastMessageTime);\n\t\tconst avatarsHtml = this._renderConversationAvatars(\n\t\t\tconversation.participants\n\t\t);\n\n\t\treturn `\n\t\t\t<div class=\"liveChat-conversation-item ${unreadClass} ${closedClass}\" data-conversation-id=\"${conversation.id}\">\n\t\t\t\t<div class=\"liveChat-conversation-avatars\">\n\t\t\t\t\t${avatarsHtml}\n\t\t\t\t</div>\n\t\t\t\t<div class=\"liveChat-conversation-content\">\n\t\t\t\t\t<div class=\"liveChat-conversation-header\">\n\t\t\t\t\t\t<span class=\"liveChat-conversation-title\">${conversation.title || 'Chat with team'}</span>\n\t\t\t\t\t\t<span class=\"liveChat-conversation-time\">${timeAgo}</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"liveChat-conversation-preview\">\n\t\t\t\t\t\t${conversation.unread > 0 ? '<span class=\"liveChat-unread-dot\"></span>' : ''}\n\t\t\t\t\t\t${isClosed ? '<span class=\"liveChat-conversation-resolved-badge\">Resolved</span>' : ''}\n\t\t\t\t\t\t<span class=\"liveChat-conversation-message\">${this._truncateMessage(conversation.lastMessage)}</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t`;\n\t}\n\n\t_renderConversationAvatars(participants) {\n\t\tif (!participants || participants.length === 0) {\n\t\t\tconst color = this._getAvatarColor('S');\n\t\t\treturn `<div class=\"sdk-avatar sdk-avatar-md\" style=\"background-color: ${color};\">S</div>`;\n\t\t}\n\n\t\tconst p = participants[0];\n\t\tif (p.avatarUrl) {\n\t\t\treturn `<div class=\"sdk-avatar sdk-avatar-md\"><img src=\"${p.avatarUrl}\" alt=\"${p.name}\" /></div>`;\n\t\t}\n\t\tconst initial = (p.name || 'S').charAt(0).toUpperCase();\n\t\tconst color = this._getAvatarColor(p.name);\n\t\treturn `<div class=\"sdk-avatar sdk-avatar-md\" style=\"background-color: ${color};\">${initial}</div>`;\n\t}\n\n\t_renderAvatarStack() {\n\t\tconst avatars = this.state.teamAvatars;\n\t\tif (!avatars || avatars.length === 0) {\n\t\t\tconst color1 = this._getAvatarColor('S');\n\t\t\tconst color2 = this._getAvatarColor('T');\n\t\t\treturn `\n\t\t\t\t<div class=\"liveChat-avatar-stack\">\n\t\t\t\t\t<div class=\"sdk-avatar sdk-avatar-sm\" style=\"background-color: ${color1};\">S</div>\n\t\t\t\t\t<div class=\"sdk-avatar sdk-avatar-sm\" style=\"background-color: ${color2};\">T</div>\n\t\t\t\t</div>\n\t\t\t`;\n\t\t}\n\n\t\tconst avatarItems = avatars\n\t\t\t.slice(0, 2)\n\t\t\t.map((avatar) => {\n\t\t\t\tif (typeof avatar === 'string' && avatar.startsWith('http')) {\n\t\t\t\t\treturn `<div class=\"sdk-avatar sdk-avatar-sm\"><img src=\"${avatar}\" alt=\"Team member\" /></div>`;\n\t\t\t\t}\n\t\t\t\tconst initial = avatar.charAt(0).toUpperCase();\n\t\t\t\tconst color = this._getAvatarColor(avatar);\n\t\t\t\treturn `<div class=\"sdk-avatar sdk-avatar-sm\" style=\"background-color: ${color};\">${initial}</div>`;\n\t\t\t})\n\t\t\t.join('');\n\n\t\treturn `<div class=\"liveChat-avatar-stack\">${avatarItems}</div>`;\n\t}\n\n\t_formatTimeAgo(timestamp) {\n\t\tif (!timestamp) return '';\n\t\tconst date = new Date(timestamp);\n\t\tconst now = new Date();\n\t\tconst diffMs = now - date;\n\t\tconst diffMins = Math.floor(diffMs / 60000);\n\t\tconst diffHours = Math.floor(diffMs / 3600000);\n\t\tconst diffDays = Math.floor(diffMs / 86400000);\n\n\t\tif (diffMins < 1) return 'now';\n\t\tif (diffMins < 60) return `${diffMins}m`;\n\t\tif (diffHours < 24) return `${diffHours}h`;\n\t\tif (diffDays < 7) return `${diffDays}d`;\n\t\treturn date.toLocaleDateString('en-US', { month: 'short', day: 'numeric' });\n\t}\n\n\t_truncateMessage(message) {\n\t\tif (!message) return 'No messages yet';\n\t\tconst maxLength = 50;\n\t\tif (message.length <= maxLength) return message;\n\t\treturn message.substring(0, maxLength) + '...';\n\t}\n\n\t_attachEvents() {\n\t\tconst closeBtn = this.element.querySelector('.sdk-close-btn');\n\t\tif (closeBtn) {\n\t\t\tcloseBtn.addEventListener('click', () => {\n\t\t\t\tthis.state.setOpen(false);\n\t\t\t});\n\t\t}\n\n\t\tthis.element\n\t\t\t.querySelectorAll('.liveChat-conversation-item')\n\t\t\t.forEach((item) => {\n\t\t\t\titem.addEventListener('click', () => {\n\t\t\t\t\tconst convId = item.dataset.conversationId;\n\t\t\t\t\tthis.state.setActiveConversation(convId);\n\t\t\t\t\tthis.state.markAsRead(convId);\n\t\t\t\t\tthis.state.setView('chat');\n\n\t\t\t\t\tif (this.options.onSelectConversation) {\n\t\t\t\t\t\tthis.options.onSelectConversation(convId);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\n\t\tconst newMsgBtn = this.element.querySelector('.liveChat-new-message-btn');\n\t\tif (newMsgBtn) {\n\t\t\tnewMsgBtn.addEventListener('click', () => {\n\t\t\t\tthis._startNewConversation();\n\t\t\t});\n\t\t}\n\t}\n\n\t_startNewConversation() {\n\t\t// If there's an open conversation, route to it instead of creating new\n\t\tconst openConversation = this.state.conversations.find(\n\t\t\t(c) => c.status === 'open'\n\t\t);\n\n\t\tif (openConversation) {\n\t\t\tthis.state.setActiveConversation(openConversation.id);\n\t\t\tthis.state.markAsRead(openConversation.id);\n\t\t\tthis.state.setView('chat');\n\t\t\tif (this.options.onSelectConversation) {\n\t\t\t\tthis.options.onSelectConversation(openConversation.id);\n\t\t\t}\n\t\t} else {\n\t\t\tthis.state.setActiveConversation(null);\n\t\t\tif (this.options.onStartNewConversation) {\n\t\t\t\tthis.options.onStartNewConversation();\n\t\t\t} else {\n\t\t\t\tthis.state.setView('chat');\n\t\t\t}\n\t\t}\n\t}\n\n\tdestroy() {\n\t\tif (this._unsubscribe) {\n\t\t\tthis._unsubscribe();\n\t\t}\n\t\tif (this.element && this.element.parentNode) {\n\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t}\n\t}\n}\n","export class HelpView {\n\tconstructor(state, options = {}) {\n\t\tthis.state = state;\n\t\tthis.options = options;\n\t\tthis.element = null;\n\t\tthis._unsubscribe = null;\n\t}\n\n\trender() {\n\t\tthis.element = document.createElement('div');\n\t\tthis.element.className = 'liveChat-view liveChat-help-view';\n\n\t\tthis._updateContent();\n\n\t\tthis._unsubscribe = this.state.subscribe((type) => {\n\t\t\tif (type === 'helpArticlesUpdate' || type === 'helpSearchChange') {\n\t\t\t\tthis._updateCollectionsList();\n\t\t\t}\n\t\t});\n\n\t\treturn this.element;\n\t}\n\n\t_updateContent() {\n\t\tconst searchQuery = this.state.helpSearchQuery || '';\n\n\t\tthis.element.innerHTML = `\n\t\t\t<div class=\"liveChat-help-header\">\n\t\t\t\t<div class=\"liveChat-help-header-top\">\n\t\t\t\t\t<h2>Help</h2>\n\t\t\t\t\t<button class=\"sdk-close-btn liveChat-help-close-btn liveChat-mobile-close-btn\" aria-label=\"Close\">\n\t\t\t\t\t\t<iconify-icon icon=\"ph:x\" width=\"18\" height=\"18\"></iconify-icon>\n\t\t\t\t\t</button>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"liveChat-help-search-wrap\">\n\t\t\t\t\t<span class=\"liveChat-help-search-icon\">\n\t\t\t\t\t\t<iconify-icon icon=\"ph:magnifying-glass\" width=\"16\" height=\"16\"></iconify-icon>\n\t\t\t\t\t</span>\n\t\t\t\t\t<input\n\t\t\t\t\t\ttype=\"text\"\n\t\t\t\t\t\tclass=\"liveChat-help-search-input\"\n\t\t\t\t\t\tplaceholder=\"Search for help...\"\n\t\t\t\t\t\tvalue=\"${searchQuery}\"\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class=\"liveChat-help-body\">\n\t\t\t\t<div class=\"liveChat-help-collections\"></div>\n\t\t\t</div>\n\t\t`;\n\n\t\tthis._updateCollectionsList();\n\t\tthis._attachEvents();\n\t}\n\n\t_updateCollectionsList() {\n\t\tconst container = this.element.querySelector('.liveChat-help-collections');\n\t\tconst collections = (this.state.helpArticles || []).filter(\n\t\t\t(c) => (c.articleCount || 0) > 0\n\t\t);\n\t\tconst searchQuery = (this.state.helpSearchQuery || '').toLowerCase();\n\n\t\tconst filtered = searchQuery\n\t\t\t? collections.filter(\n\t\t\t\t\t(c) =>\n\t\t\t\t\t\tc.title.toLowerCase().includes(searchQuery) ||\n\t\t\t\t\t\t(c.description && c.description.toLowerCase().includes(searchQuery))\n\t\t\t\t)\n\t\t\t: collections;\n\n\t\tif (filtered.length === 0) {\n\t\t\tcontainer.innerHTML = this._renderEmptyState();\n\t\t\treturn;\n\t\t}\n\n\t\tcontainer.innerHTML = filtered\n\t\t\t.map((c) => this._renderCollectionItem(c))\n\t\t\t.join('');\n\t\tthis._attachCollectionEvents();\n\t}\n\n\t_avatarColors = [\n\t\t{ bg: '#EF4444', text: '#FFFFFF' },\n\t\t{ bg: '#F97316', text: '#FFFFFF' },\n\t\t{ bg: '#F59E0B', text: '#FFFFFF' },\n\t\t{ bg: '#10B981', text: '#FFFFFF' },\n\t\t{ bg: '#06B6D4', text: '#FFFFFF' },\n\t\t{ bg: '#3B82F6', text: '#FFFFFF' },\n\t\t{ bg: '#8B5CF6', text: '#FFFFFF' },\n\t\t{ bg: '#EC4899', text: '#FFFFFF' },\n\t];\n\n\t_getAvatarColor(id) {\n\t\tconst hash = id\n\t\t\t.split('')\n\t\t\t.reduce((acc, char) => acc + char.charCodeAt(0), 0);\n\t\treturn this._avatarColors[hash % this._avatarColors.length];\n\t}\n\n\t_getInitials(name) {\n\t\tif (!name) return 'A';\n\t\treturn name\n\t\t\t.split(' ')\n\t\t\t.map((n) => n[0])\n\t\t\t.join('')\n\t\t\t.toUpperCase()\n\t\t\t.slice(0, 2);\n\t}\n\n\t_renderAuthorAvatar(collection) {\n\t\tif (collection.author?.picture) {\n\t\t\treturn `<img\n\t\t\t\tsrc=\"${collection.author.picture}\"\n\t\t\t\talt=\"${collection.author.name || ''}\"\n\t\t\t\tclass=\"liveChat-help-collection-avatar\"\n\t\t\t\ttitle=\"${collection.author.name || ''}\"\n\t\t\t/>`;\n\t\t}\n\n\t\tconst { bg, text } = this._getAvatarColor(collection.id);\n\t\tconst initials = collection.author?.name\n\t\t\t? this._getInitials(collection.author.name)\n\t\t\t: 'A';\n\n\t\treturn `<span\n\t\t\tclass=\"liveChat-help-collection-avatar liveChat-help-collection-avatar--initials\"\n\t\t\tstyle=\"background-color: ${bg}; color: ${text};\"\n\t\t\ttitle=\"${collection.author?.name || 'Author'}\"\n\t\t>${initials}</span>`;\n\t}\n\n\t_resolveCollectionIcon(icon) {\n\t\tif (!icon) return this._defaultCollectionIcon();\n\n\t\tif (icon.trimStart().startsWith('<')) {\n\t\t\treturn `<span class=\"liveChat-help-collection-icon\">${icon}</span>`;\n\t\t}\n\n\t\tif (icon.startsWith('ph:')) {\n\t\t\treturn `<span class=\"liveChat-help-collection-icon\">\n\t\t\t\t<iconify-icon icon=\"${icon}\"></iconify-icon>\n\t\t\t</span>`;\n\t\t}\n\n\t\treturn this._defaultCollectionIcon();\n\t}\n\n\t_defaultCollectionIcon() {\n\t\treturn `<span class=\"liveChat-help-collection-icon\">\n\t\t\t<iconify-icon icon=\"ph:book-open\"></iconify-icon>\n\t\t</span>`;\n\t}\n\n\t_renderCollectionItem(collection) {\n\t\tconst articleCount = collection.articleCount || 0;\n\n\t\treturn `\n\t\t\t<div class=\"liveChat-help-collection\" data-collection-id=\"${collection.id}\">\n\t\t\t\t${this._resolveCollectionIcon(collection.icon)}\n\t\t\t\t<div class=\"liveChat-help-collection-content\">\n\t\t\t\t\t<div class=\"liveChat-help-collection-title\">${collection.title}</div>\n\t\t\t\t\t${collection.description ? `<p class=\"liveChat-help-collection-desc\">${collection.description}</p>` : ''}\n\t\t\t\t\t<div class=\"liveChat-help-collection-meta\">\n\t\t\t\t\t\t${this._renderAuthorAvatar(collection)}\n\t\t\t\t\t\t<span class=\"liveChat-help-collection-count\">\n\t\t\t\t\t\t\t${articleCount} ${articleCount === 1 ? 'article' : 'articles'}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t`;\n\t}\n\n\t_renderEmptyState() {\n\t\tif (this.state.helpSearchQuery) {\n\t\t\treturn `\n\t\t\t\t<div class=\"liveChat-empty-state\">\n\t\t\t\t\t<div class=\"liveChat-empty-state-icon\">\n\t\t\t\t\t\t<iconify-icon icon=\"ph:magnifying-glass\" width=\"48\" height=\"48\"></iconify-icon>\n\t\t\t\t\t</div>\n\t\t\t\t\t<h3>No results found</h3>\n\t\t\t\t\t<p>Try a different search term</p>\n\t\t\t\t</div>\n\t\t\t`;\n\t\t}\n\n\t\treturn `\n\t\t\t<div class=\"liveChat-empty-state\">\n\t\t\t\t<div class=\"liveChat-empty-state-icon\">\n\t\t\t\t\t<iconify-icon icon=\"ph:books\" width=\"48\" height=\"48\"></iconify-icon>\n\t\t\t\t</div>\n\t\t\t\t<h3>Help collections</h3>\n\t\t\t\t<p>No collections available yet</p>\n\t\t\t</div>\n\t\t`;\n\t}\n\n\t_attachEvents() {\n\t\tconst mobileCloseBtn = this.element.querySelector(\n\t\t\t'.liveChat-help-close-btn'\n\t\t);\n\t\tif (mobileCloseBtn) {\n\t\t\tmobileCloseBtn.addEventListener('click', () => {\n\t\t\t\tthis.state.setOpen(false);\n\t\t\t});\n\t\t}\n\n\t\tconst searchInput = this.element.querySelector(\n\t\t\t'.liveChat-help-search-input'\n\t\t);\n\t\tlet searchTimeout;\n\t\tsearchInput.addEventListener('input', (e) => {\n\t\t\tclearTimeout(searchTimeout);\n\t\t\tsearchTimeout = setTimeout(() => {\n\t\t\t\tthis.state.setHelpSearchQuery(e.target.value);\n\t\t\t}, 300);\n\t\t});\n\n\t\tthis._attachCollectionEvents();\n\t}\n\n\t_attachCollectionEvents() {\n\t\tthis.element\n\t\t\t.querySelectorAll('.liveChat-help-collection')\n\t\t\t.forEach((item) => {\n\t\t\t\titem.addEventListener('click', () => {\n\t\t\t\t\tconst collection = this.state.helpArticles.find(\n\t\t\t\t\t\t(c) => c.id === item.dataset.collectionId\n\t\t\t\t\t);\n\t\t\t\t\tif (collection?.url) {\n\t\t\t\t\t\twindow.open(collection.url, '_blank');\n\t\t\t\t\t} else if (this.options.onArticleClick) {\n\t\t\t\t\t\tthis.options.onArticleClick(collection);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t}\n\n\tdestroy() {\n\t\tif (this._unsubscribe) this._unsubscribe();\n\t\tif (this.element?.parentNode)\n\t\t\tthis.element.parentNode.removeChild(this.element);\n\t}\n}\n","export class HomeView {\n\tconstructor(state, options = {}) {\n\t\tthis.state = state;\n\t\tthis.options = options;\n\t\tthis.element = null;\n\t\tthis._unsubscribe = null;\n\t}\n\n\trender() {\n\t\tthis.element = document.createElement('div');\n\t\tthis.element.className = 'liveChat-view liveChat-home-view';\n\n\t\tthis._updateContent();\n\n\t\tthis._unsubscribe = this.state.subscribe((type) => {\n\t\t\tif (\n\t\t\t\ttype === 'homeChangelogUpdate' ||\n\t\t\t\ttype === 'conversationsUpdate' ||\n\t\t\t\ttype === 'availabilityUpdate' ||\n\t\t\t\ttype === 'settingsUpdate'\n\t\t\t) {\n\t\t\t\tthis._updateContent();\n\t\t\t}\n\t\t});\n\n\t\treturn this.element;\n\t}\n\n\t_updateContent() {\n\t\tconst isUnavailable = this.state.businessHoursState === 'offline' || this.state.businessHoursState === 'away';\n\t\tconst avatarsHtml = (this.state.showAvatars && !isUnavailable) ? this._renderAvatarStack() : '';\n\t\tconst recentChangelogHtml = this._renderRecentChangelog();\n\t\tconst availabilityHtml = this._renderAvailabilityStatus();\n\n\t\tthis.element.innerHTML = `\n\t\t\t<div class=\"liveChat-home-scroll\">\n\t\t\t\t<div class=\"liveChat-home-header\">\n\t\t\t\t\t<div class=\"liveChat-home-header-top\">\n\t\t\t\t\t\t<div class=\"liveChat-home-logo\">\n\t\t\t\t\t\t\t${this.options.logoUrl ? `<img src=\"${this.options.logoUrl}\" alt=\"${this.state.teamName}\" />` : ''}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class=\"liveChat-home-avatars\">${avatarsHtml || availabilityHtml}</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"liveChat-home-welcome\">\n\t\t\t\t\t\t<span class=\"liveChat-home-greeting\">${this.state.greetingMessage}</span>\n\t\t\t\t\t\t<span class=\"liveChat-home-question\">${this.state.welcomeMessage}</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div class=\"liveChat-home-body\">\n\t\t\t\t\t${this._renderMessageButton()}\n\t\t\t\t\t${this._renderFeaturedCard()}\n\t\t\t\t\t${recentChangelogHtml}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t`;\n\n\t\tthis._attachEvents();\n\t}\n\n\t_renderAvatarStack() {\n\t\tconst avatars = this.state.teamAvatars;\n\t\tconst colors = ['#5856d6', '#007aff', '#34c759', '#ff9500'];\n\n\t\tif (!avatars || avatars.length === 0) {\n\t\t\treturn '';\n\t\t}\n\n\t\tconst avatarItems = avatars\n\t\t\t.slice(0, 4)\n\t\t\t.map((avatar, index) => {\n\t\t\t\tif (typeof avatar === 'string' && avatar.startsWith('http')) {\n\t\t\t\t\treturn `<div class=\"sdk-avatar sdk-avatar-lg\"><img src=\"${avatar}\" alt=\"Team member\" /></div>`;\n\t\t\t\t}\n\t\t\t\treturn `<div class=\"sdk-avatar sdk-avatar-lg\" style=\"background: ${colors[index % colors.length]};\">${avatar.charAt(0).toUpperCase()}</div>`;\n\t\t\t})\n\t\t\t.join('');\n\n\t\treturn `<div class=\"liveChat-avatar-stack\">${avatarItems}</div>`;\n\t}\n\n\t_renderAvailabilityStatus() {\n\t\tconst businessState = this.state.businessHoursState;\n\n\t\tif (businessState === 'offline') {\n\t\t\tlet offlineText = \"We're currently closed\";\n\t\t\tif (this.state.holidayName) {\n\t\t\t\tofflineText = `Closed for ${this.state.holidayName}`;\n\t\t\t} else if (this.state.nextOpenAt) {\n\t\t\t\tconst opens = new Date(this.state.nextOpenAt);\n\t\t\t\tconst now = new Date();\n\t\t\t\tconst diffHours = Math.round((opens - now) / 3600000);\n\t\t\t\tofflineText = diffHours < 24\n\t\t\t\t\t? `Opens in ${diffHours}h`\n\t\t\t\t\t: `Opens ${opens.toLocaleDateString('en-US', { weekday: 'short', hour: 'numeric', hour12: true })}`;\n\t\t\t}\n\t\t\treturn `\n\t\t\t\t<div class=\"liveChat-home-availability\">\n\t\t\t\t\t<span class=\"liveChat-availability-dot liveChat-availability-away\"></span>\n\t\t\t\t\t<span class=\"liveChat-availability-text\">${offlineText}</span>\n\t\t\t\t</div>\n\t\t\t`;\n\t\t}\n\n\t\tif (businessState === 'away') {\n\t\t\treturn `\n\t\t\t\t<div class=\"liveChat-home-availability\">\n\t\t\t\t\t<span class=\"liveChat-availability-dot liveChat-availability-away\"></span>\n\t\t\t\t\t<span class=\"liveChat-availability-text\">We're currently away</span>\n\t\t\t\t</div>\n\t\t\t`;\n\t\t}\n\n\t\tif (this.state.agentsOnline) {\n\t\t\treturn `\n\t\t\t\t<div class=\"liveChat-home-availability\">\n\t\t\t\t\t<span class=\"liveChat-availability-dot liveChat-availability-online\"></span>\n\t\t\t\t\t<span class=\"liveChat-availability-text\">${this.state.onlineMessage}</span>\n\t\t\t\t</div>\n\t\t\t`;\n\t\t}\n\n\t\treturn `\n\t\t\t<div class=\"liveChat-home-availability\">\n\t\t\t\t<span class=\"liveChat-availability-dot liveChat-availability-away\"></span>\n\t\t\t\t<span class=\"liveChat-availability-text\">${this.state.responseTime}</span>\n\t\t\t</div>\n\t\t`;\n\t}\n\n\t_renderMessageButton() {\n\t\tconst openConversation = this.state.conversations.find(\n\t\t\t(c) => c.status === 'open'\n\t\t);\n\n\t\tconst sendIcon = `<iconify-icon icon=\"ph:paper-plane-right\" width=\"20\" height=\"20\" style=\"flex-shrink: 0;\"></iconify-icon>`;\n\t\tconst caretIcon = `<iconify-icon icon=\"ph:caret-right\" width=\"20\" height=\"20\" style=\"flex-shrink: 0;\"></iconify-icon>`;\n\n\t\tconst responseTime =\n\t\t\tthis.state.responseTime || 'We typically reply within a few minutes';\n\n\t\tconst recentCardHtml = openConversation\n\t\t\t? this._renderRecentMessageCard(openConversation)\n\t\t\t: '';\n\n\t\treturn `\n\t\t\t${recentCardHtml}\n\t\t\t<button class=\"liveChat-home-message-btn\">\n\t\t\t\t<div class=\"liveChat-home-continue-info\">\n\t\t\t\t\t<span class=\"liveChat-home-continue-label\">${this.state.startButtonText}</span>\n\t\t\t\t\t<span class=\"liveChat-home-message-subtext\">${responseTime}</span>\n\t\t\t\t</div>\n\t\t\t\t${sendIcon}\n\t\t\t</button>\n\t\t\t<button class=\"liveChat-home-message-btn liveChat-feedback-btn\" data-action=\"feedback\">\n\t\t\t\t<span>Leave us feedback</span>\n\t\t\t\t${caretIcon}\n\t\t\t</button>\n\t\t`;\n\t}\n\n\t_renderRecentMessageCard(conversation) {\n\t\tconst logoUrl = this.options.logoUrl;\n\t\tconst teamName = this.state.teamName || 'Support';\n\t\tconst logoHtml = logoUrl\n\t\t\t? `<div class=\"liveChat-home-recent-avatar liveChat-home-recent-avatar-logo\"><img src=\"${logoUrl}\" alt=\"${teamName}\" /></div>`\n\t\t\t: `<div class=\"liveChat-home-recent-avatar\" style=\"background: var(--color-primary);\">${teamName.charAt(0).toUpperCase()}</div>`;\n\n\t\tconst title = conversation.title || teamName;\n\t\tconst timeAgo = this._formatTimeAgo(conversation.lastMessageTime);\n\t\tconst preview = conversation.lastMessage\n\t\t\t? conversation.lastMessage.substring(0, 48) +\n\t\t\t\t(conversation.lastMessage.length > 48 ? '...' : '')\n\t\t\t: '';\n\t\tconst hasUnread = conversation.unread > 0;\n\n\t\treturn `\n\t\t\t<div class=\"liveChat-home-recent-card\" data-conversation-id=\"${conversation.id}\">\n\t\t\t\t<div class=\"liveChat-home-recent-card-label\">Recent message</div>\n\t\t\t\t<div class=\"liveChat-home-recent-card-row\">\n\t\t\t\t\t${logoHtml}\n\t\t\t\t\t<div class=\"liveChat-home-recent-card-content\">\n\t\t\t\t\t\t<div class=\"liveChat-home-recent-card-header\">\n\t\t\t\t\t\t\t<span class=\"liveChat-home-recent-card-name\">${title}</span>\n\t\t\t\t\t\t\t<span class=\"liveChat-home-recent-card-time\">${timeAgo}</span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class=\"liveChat-home-recent-card-preview\">\n\t\t\t\t\t\t\t<span class=\"liveChat-home-recent-card-message\">${preview}</span>\n\t\t\t\t\t\t\t${hasUnread ? '<span class=\"liveChat-home-recent-unread-dot\"></span>' : ''}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t`;\n\t}\n\n\t_formatTimeAgo(timestamp) {\n\t\tif (!timestamp) return '';\n\t\tconst date = new Date(timestamp);\n\t\tconst now = new Date();\n\t\tconst diffMs = now - date;\n\t\tconst diffMins = Math.floor(diffMs / 60000);\n\t\tconst diffHours = Math.floor(diffMs / 3600000);\n\t\tconst diffDays = Math.floor(diffMs / 86400000);\n\t\tif (diffMins < 1) return 'now';\n\t\tif (diffMins < 60) return `${diffMins}m`;\n\t\tif (diffHours < 24) return `${diffHours}h`;\n\t\tif (diffDays < 7) return `${diffDays}d`;\n\t\treturn date.toLocaleDateString('en-US', { month: 'short', day: 'numeric' });\n\t}\n\n\t_renderFeaturedCard() {\n\t\tif (!this.options.featuredContent) {\n\t\t\treturn '';\n\t\t}\n\n\t\tconst { title, description, imageUrl, action } =\n\t\t\tthis.options.featuredContent;\n\n\t\treturn `\n\t\t\t<div class=\"liveChat-home-featured\">\n\t\t\t\t${imageUrl ? `<img src=\"${imageUrl}\" alt=\"${title}\" class=\"liveChat-home-featured-image\" onerror=\"this.style.display='none';\" />` : ''}\n\t\t\t\t<div class=\"liveChat-home-featured-divider\"></div>\n\t\t\t\t<div class=\"liveChat-home-featured-content\">\n\t\t\t\t\t<h3>${title}</h3>\n\t\t\t\t\t${description ? `<p>${description}</p>` : ''}\n\t\t\t\t\t${action ? `<button class=\"sdk-btn sdk-btn-primary liveChat-home-featured-btn\" data-action=\"${action.type}\" data-value=\"${action.value}\">${action.label}</button>` : ''}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t`;\n\t}\n\n\t_renderRecentChangelog() {\n\t\tconst changelogItems = this.state.homeChangelogItems;\n\t\tif (changelogItems.length === 0) {\n\t\t\treturn '';\n\t\t}\n\n\t\tconst changelogHtml = changelogItems\n\t\t\t.map(\n\t\t\t\t(item) => `\n\t\t\t<div class=\"liveChat-home-changelog-card\" data-changelog-id=\"${item.id}\">\n\t\t\t\t${\n\t\t\t\t\titem.coverImage\n\t\t\t\t\t\t? `\n\t\t\t\t\t<div class=\"liveChat-home-changelog-cover\">\n\t\t\t\t\t\t<img src=\"${item.coverImage}\" alt=\"${item.title}\" onerror=\"this.style.display='none';\" />\n\t\t\t\t\t\t${item.coverText ? `<span class=\"liveChat-home-changelog-cover-text\">${item.coverText}</span>` : ''}\n\t\t\t\t\t</div>\n\t\t\t\t`\n\t\t\t\t\t\t: ''\n\t\t\t\t}\n\t\t\t\t<div class=\"liveChat-home-changelog-card-content\">\n\t\t\t\t\t<h4 class=\"liveChat-home-changelog-card-title\">${item.title}</h4>\n\t\t\t\t\t<p class=\"liveChat-home-changelog-card-desc\">${this._stripHtml(item.description)}</p>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t`\n\t\t\t)\n\t\t\t.join('');\n\n\t\treturn `\n\t\t\t<div class=\"liveChat-home-changelog-section\">\n\t\t\t\t${changelogHtml}\n\t\t\t</div>\n\t\t`;\n\t}\n\n\t_stripHtml(html) {\n\t\tif (!html) return '';\n\t\tconst tmp = document.createElement('div');\n\t\ttmp.innerHTML = html;\n\t\treturn (tmp.textContent || tmp.innerText || '').trim();\n\t}\n\n\t_formatDate(dateString) {\n\t\tif (!dateString) return '';\n\t\tconst date = new Date(dateString);\n\t\tconst now = new Date();\n\t\tconst diffDays = Math.floor((now - date) / (1000 * 60 * 60 * 24));\n\n\t\tif (diffDays === 0) return 'Today';\n\t\tif (diffDays === 1) return 'Yesterday';\n\t\tif (diffDays < 7) return `${diffDays}d ago`;\n\t\treturn date.toLocaleDateString('en-US', { month: 'short', day: 'numeric' });\n\t}\n\n\t_attachEvents() {\n\t\tconst recentCard = this.element.querySelector('.liveChat-home-recent-card');\n\t\tif (recentCard) {\n\t\t\trecentCard.addEventListener('click', () => {\n\t\t\t\tconst convId = recentCard.dataset.conversationId;\n\t\t\t\tthis.state.setActiveConversation(convId);\n\t\t\t\tthis.state.markAsRead(convId);\n\t\t\t\tthis.state.setView('chat');\n\t\t\t\tif (this.options.onSelectConversation) {\n\t\t\t\t\tthis.options.onSelectConversation(convId);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tconst msgBtn = this.element.querySelector(\n\t\t\t'.liveChat-home-message-btn:not(.liveChat-feedback-btn)'\n\t\t);\n\t\tif (msgBtn) {\n\t\t\tmsgBtn.addEventListener('click', () => {\n\t\t\t\tthis.state.setActiveConversation(null);\n\t\t\t\tthis.state.setView('chat');\n\t\t\t});\n\t\t}\n\n\t\tconst feedbackBtn = this.element.querySelector('.liveChat-feedback-btn');\n\t\tif (feedbackBtn) {\n\t\t\tfeedbackBtn.addEventListener('click', () => {\n\t\t\t\tif (this.options.onFeedbackClick) {\n\t\t\t\t\tthis.state.setOpen(false);\n\t\t\t\t\tthis.options.onFeedbackClick();\n\t\t\t\t} else if (this.state.urls?.feedback) {\n\t\t\t\t\twindow.open(this.state.urls.feedback, '_blank');\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tthis.element\n\t\t\t.querySelectorAll('.liveChat-home-changelog-card')\n\t\t\t.forEach((card) => {\n\t\t\t\tcard.addEventListener('click', () => {\n\t\t\t\t\tconst item = this.state.homeChangelogItems.find(\n\t\t\t\t\t\t(i) => i.id === card.dataset.changelogId\n\t\t\t\t\t);\n\t\t\t\t\tif (item?.url) {\n\t\t\t\t\t\twindow.open(item.url, '_blank');\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.state.setView('changelog');\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\n\t\tconst seeAllBtn = this.element.querySelector(\n\t\t\t'.liveChat-home-changelog-all'\n\t\t);\n\t\tif (seeAllBtn) {\n\t\t\tseeAllBtn.addEventListener('click', () => {\n\t\t\t\tthis.state.setView('changelog');\n\t\t\t});\n\t\t}\n\n\t\tconst featuredBtn = this.element.querySelector(\n\t\t\t'.liveChat-home-featured-btn'\n\t\t);\n\t\tif (featuredBtn) {\n\t\t\tfeaturedBtn.addEventListener('click', () => {\n\t\t\t\tconst action = featuredBtn.dataset.action;\n\t\t\t\tconst value = featuredBtn.dataset.value;\n\t\t\t\tif (action === 'url') {\n\t\t\t\t\twindow.open(value, '_blank');\n\t\t\t\t} else if (action === 'view') {\n\t\t\t\t\tthis.state.setView(value);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\tdestroy() {\n\t\tif (this._unsubscribe) {\n\t\t\tthis._unsubscribe();\n\t\t}\n\t\tif (this.element && this.element.parentNode) {\n\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t}\n\t}\n}\n","export class PreChatFormView {\n\tconstructor(state, options = {}) {\n\t\tthis.state = state;\n\t\tthis.options = options;\n\t\tthis.element = null;\n\t\tthis._isSubmitting = false;\n\t}\n\n\trender() {\n\t\tthis.element = document.createElement('div');\n\t\tthis.element.className = 'liveChat-view liveChat-prechat-view';\n\t\tthis._updateContent();\n\t\treturn this.element;\n\t}\n\n\t_updateContent() {\n\t\tthis.element.innerHTML = `\n\t\t\t<div class=\"liveChat-prechat-overlay\">\n\t\t\t\t<div class=\"liveChat-prechat-card\">\n\t\t\t\t\t<h4 class=\"liveChat-prechat-title\">Before we continue</h4>\n\t\t\t\t\t<p class=\"liveChat-prechat-subtitle\">Enter your details so we can get back to you.</p>\n\t\t\t\t\t<form class=\"liveChat-prechat-form\" novalidate>\n\t\t\t\t\t\t<div class=\"liveChat-prechat-field\">\n\t\t\t\t\t\t\t<input\n\t\t\t\t\t\t\t\ttype=\"text\"\n\t\t\t\t\t\t\t\tname=\"name\"\n\t\t\t\t\t\t\t\tclass=\"liveChat-prechat-input\"\n\t\t\t\t\t\t\t\tplaceholder=\"Your name\"\n\t\t\t\t\t\t\t\tautocomplete=\"name\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class=\"liveChat-prechat-field\">\n\t\t\t\t\t\t\t<input\n\t\t\t\t\t\t\t\ttype=\"email\"\n\t\t\t\t\t\t\t\tname=\"email\"\n\t\t\t\t\t\t\t\tclass=\"liveChat-prechat-input\"\n\t\t\t\t\t\t\t\tplaceholder=\"Your email address\"\n\t\t\t\t\t\t\t\tautocomplete=\"email\"\n\t\t\t\t\t\t\t\trequired\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<span class=\"liveChat-prechat-error\" style=\"display:none;\"></span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<button type=\"submit\" class=\"liveChat-prechat-submit\">\n\t\t\t\t\t\t\tStart chat\n\t\t\t\t\t\t</button>\n\t\t\t\t\t</form>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t`;\n\n\t\tthis._attachEvents();\n\t}\n\n\t_attachEvents() {\n\t\tconst form = this.element.querySelector('.liveChat-prechat-form');\n\t\tform.addEventListener('submit', async (e) => {\n\t\t\te.preventDefault();\n\t\t\tawait this._handleSubmit();\n\t\t});\n\t}\n\n\tasync _handleSubmit() {\n\t\tif (this._isSubmitting) return;\n\n\t\tconst emailInput = this.element.querySelector('input[name=\"email\"]');\n\t\tconst nameInput = this.element.querySelector('input[name=\"name\"]');\n\t\tconst errorEl = this.element.querySelector('.liveChat-prechat-error');\n\t\tconst submitBtn = this.element.querySelector('.liveChat-prechat-submit');\n\n\t\tconst email = emailInput.value.trim();\n\t\tconst name = nameInput.value.trim();\n\n\t\tif (!email || !/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(email)) {\n\t\t\terrorEl.textContent = 'Please enter a valid email address.';\n\t\t\terrorEl.style.display = 'block';\n\t\t\temailInput.focus();\n\t\t\treturn;\n\t\t}\n\n\t\terrorEl.style.display = 'none';\n\t\tthis._isSubmitting = true;\n\t\tsubmitBtn.disabled = true;\n\t\tsubmitBtn.innerHTML = `\n\t\t\t<iconify-icon icon=\"ph:circle-notch\" width=\"16\" height=\"16\" style=\"animation: spin 0.8s linear infinite;\"></iconify-icon>\n\t\t\tJust a moment...\n\t\t`;\n\n\t\ttry {\n\t\t\tif (this.options.onIdentifyContact) {\n\t\t\t\tawait this.options.onIdentifyContact({\n\t\t\t\t\tname: name || undefined,\n\t\t\t\t\temail,\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tthis.state.setIdentified(true, { name, email });\n\n\t\t\tconst pendingMessage = this.state.pendingMessage;\n\t\t\tif (pendingMessage && this.options.onStartConversation) {\n\t\t\t\tthis.state.pendingMessage = null;\n\t\t\t\tthis.state.setView('chat');\n\t\t\t\tawait this.options.onStartConversation(\n\t\t\t\t\tpendingMessage.content,\n\t\t\t\t\tpendingMessage.attachments\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tthis.state.setView('chat');\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tconsole.error('[PreChatFormView] Error:', error);\n\t\t\terrorEl.textContent = 'Something went wrong. Please try again.';\n\t\t\terrorEl.style.display = 'block';\n\t\t\tthis._isSubmitting = false;\n\t\t\tsubmitBtn.disabled = false;\n\t\t\tsubmitBtn.textContent = 'Start chat';\n\t\t}\n\t}\n\n\tdestroy() {\n\t\tif (this.element && this.element.parentNode) {\n\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t}\n\t}\n}\n","import { WebSocketService } from '../core/WebSocketService.js';\nimport {\n\tapplyliveChatCustomStyles,\n\tremoveliveChatCustomStyles,\n} from '../styles/liveChatCustomStyles.js';\nimport { NotificationSound } from '../utils/NotificationSound.js';\nimport { BaseWidget } from './BaseWidget.js';\nimport { LiveChatState } from './liveChat/LiveChatState.js';\nimport { LiveChatLauncher } from './liveChat/components/LiveChatLauncher.js';\nimport { LiveChatPanel } from './liveChat/components/LiveChatPanel.js';\nimport { ChangelogView } from './liveChat/views/ChangelogView.js';\nimport { ChatView } from './liveChat/views/ChatView.js';\nimport { ConversationsView } from './liveChat/views/ConversationsView.js';\nimport { HelpView } from './liveChat/views/HelpView.js';\nimport { HomeView } from './liveChat/views/HomeView.js';\nimport { PreChatFormView } from './liveChat/views/PreChatFormView.js';\n\nexport class LiveChatWidget extends BaseWidget {\n\tconstructor(options) {\n\t\tsuper({ ...options, type: 'liveChat' });\n\t\tthis._explicitOptions = options || {};\n\t\tconst resolvedTheme = options.theme || 'light';\n\t\tconst hasExplicitTextColor = Object.prototype.hasOwnProperty.call(\n\t\t\toptions,\n\t\t\t'textColor'\n\t\t);\n\t\tconst hasExplicitBackgroundColor = Object.prototype.hasOwnProperty.call(\n\t\t\toptions,\n\t\t\t'backgroundColor'\n\t\t);\n\t\tconst defaultTextColor = resolvedTheme === 'dark' ? '#E2E8F0' : '#1d1d1f';\n\t\tconst defaultBackgroundColor =\n\t\t\tresolvedTheme === 'dark' ? '#0F172A' : '#ffffff';\n\n\t\tconst resolvedEnableChangelog =\n\t\t\ttypeof options.enableChangelog === 'boolean'\n\t\t\t\t? options.enableChangelog\n\t\t\t\t: options.enableNews !== false;\n\n\t\tthis.liveChatOptions = {\n\t\t\tposition: options.position || 'right',\n\t\t\ttheme: resolvedTheme,\n\t\t\tprimaryColor: options.primaryColor || '#155EEF',\n\t\t\ttextColor: hasExplicitTextColor ? options.textColor : defaultTextColor,\n\t\t\tbackgroundColor: hasExplicitBackgroundColor\n\t\t\t\t? options.backgroundColor\n\t\t\t\t: defaultBackgroundColor,\n\t\t\tlogoUrl: options.logoUrl || 'https://product7.io/p7logo.svg',\n\t\t\tteamName: options.teamName || 'Support',\n\t\t\tteamAvatars: options.teamAvatars || [],\n\t\t\tgreetingMessage: options.greetingMessage || 'Hi there 👋',\n\t\t\twelcomeMessage: options.welcomeMessage || 'How can we help?',\n\t\t\tonlineMessage: options.onlineMessage || \"We're online now\",\n\t\t\tresponseTime:\n\t\t\t\toptions.responseTime || 'We typically reply within a few minutes',\n\t\t\tenableHelp: options.enableHelp !== false,\n\t\t\tenableChangelog: resolvedEnableChangelog,\n\t\t\tautoLoadData: options.autoLoadData !== false,\n\t\t\tinitialView: options.initialView || 'home',\n\t\t\tpreviewData: options.previewData || null,\n\t\t\tfeaturedContent: options.featuredContent || null,\n\t\t\tfeedbackBoardName: options.feedbackBoardName || null,\n\t\t\tfeedbackUrl: options.feedbackUrl || null,\n\t\t\tchangelogUrl: options.changelogUrl || null,\n\t\t\thelpUrl: options.helpUrl || null,\n\t\t\troadmapUrl: options.roadmapUrl || null,\n\t\t\tcomposePlaceholder: options.composePlaceholder || null,\n\t\t\tonSendMessage: options.onSendMessage || null,\n\t\t\tonFeedbackClick: options.onFeedbackClick || null,\n\t\t\tonArticleClick: options.onArticleClick || null,\n\t\t\tonChangelogClick: options.onChangelogClick || null,\n\t\t};\n\n\t\tconst sdkMetadata = this.sdk?.apiService?.getMetadata() || null;\n\n\t\tthis.LiveChatState = new LiveChatState({\n\t\t\tteamName: this.liveChatOptions.teamName,\n\t\t\tteamAvatars: this.liveChatOptions.teamAvatars,\n\t\t\tgreetingMessage: this.liveChatOptions.greetingMessage,\n\t\t\twelcomeMessage: this.liveChatOptions.welcomeMessage,\n\t\t\tonlineMessage: this.liveChatOptions.onlineMessage,\n\t\t\tresponseTime: this.liveChatOptions.responseTime,\n\t\t\tenableHelp: this.liveChatOptions.enableHelp,\n\t\t\tenableChangelog: this.liveChatOptions.enableChangelog,\n\t\t\tmetadata: sdkMetadata,\n\t\t\turls: {\n\t\t\t\tfeedback: this.liveChatOptions.feedbackUrl,\n\t\t\t\tchangelog: this.liveChatOptions.changelogUrl,\n\t\t\t\thelp: this.liveChatOptions.helpUrl,\n\t\t\t\troadmap: this.liveChatOptions.roadmapUrl,\n\t\t\t},\n\t\t});\n\n\t\t// If identify() was called before this widget was created, pre-seed identity\n\t\tif (this.sdk?.identified && sdkMetadata) {\n\t\t\tthis.LiveChatState.isIdentified = true;\n\t\t}\n\n\t\tthis.launcher = null;\n\t\tthis.panel = null;\n\t\tthis.wsService = null;\n\t\tthis._wsUnsubscribers = [];\n\t\tthis._feedbackWidget = null;\n\n\t\tconst notificationSoundOption =\n\t\t\toptions.notificationSound !== undefined\n\t\t\t\t? options.notificationSound\n\t\t\t\t: true;\n\n\t\tthis._notificationSound = new NotificationSound({\n\t\t\tsoundUrl:\n\t\t\t\ttypeof notificationSoundOption === 'string'\n\t\t\t\t\t? notificationSoundOption\n\t\t\t\t\t: undefined,\n\t\t\tvolume: options.notificationVolume ?? 0.4,\n\t\t});\n\n\t\tif (notificationSoundOption === false) {\n\t\t\tthis._notificationSound.setEnabled(false);\n\t\t}\n\n\t\tthis._handleOpenChange = this._handleOpenChange.bind(this);\n\t\tthis._handleWebSocketMessage = this._handleWebSocketMessage.bind(this);\n\t\tthis._handleTypingStarted = this._handleTypingStarted.bind(this);\n\t\tthis._handleTypingStopped = this._handleTypingStopped.bind(this);\n\t\tthis._handleConversationClosed = this._handleConversationClosed.bind(this);\n\t}\n\n\t_hasTrigger() {\n\t\treturn this.options.trigger === true || this.options.trigger === undefined;\n\t}\n\n\t_createInternalFeedbackWidget() {\n\t\ttry {\n\t\t\tconst widget = this.sdk.createWidget('button', {\n\t\t\t\ttrigger: false,\n\t\t\t\tdisplayMode: 'modal',\n\t\t\t\tboardName:\n\t\t\t\t\tthis.liveChatOptions.feedbackBoardName || this.sdk.config.boardName,\n\t\t\t\tprimaryColor: this.liveChatOptions.primaryColor,\n\t\t\t\ttheme: this.liveChatOptions.theme,\n\t\t\t});\n\t\t\twidget.mount();\n\t\t\treturn widget;\n\t\t} catch (e) {\n\t\t\tconsole.warn('[LiveChat] Could not create internal feedback widget:', e);\n\t\t\treturn null;\n\t\t}\n\t}\n\n\t_render() {\n\t\tconst container = document.createElement('div');\n\t\tcontainer.className = `liveChat-widget theme-${this.liveChatOptions.theme}`;\n\t\tcontainer.style.zIndex = '999999';\n\t\tcontainer.style.setProperty(\n\t\t\t'--liveChat-h-padding',\n\t\t\t`${this.liveChatOptions.horizontalPadding ?? 20}px`\n\t\t);\n\t\tcontainer.style.setProperty(\n\t\t\t'--liveChat-v-padding',\n\t\t\t`${this.liveChatOptions.verticalPadding ?? 20}px`\n\t\t);\n\t\tthis._widgetContainer = container;\n\n\t\tapplyliveChatCustomStyles({\n\t\t\tprimaryColor: this.liveChatOptions.primaryColor,\n\t\t\ttextColor: this.liveChatOptions.textColor,\n\t\t\tbackgroundColor: this.liveChatOptions.backgroundColor,\n\t\t\ttheme: this.liveChatOptions.theme,\n\t\t});\n\n\t\t// Create internal feedback widget (no floating button) so the\n\t\t// \"Leave a feedback\" button in the home view can open it inline.\n\t\tif (!this.liveChatOptions.onFeedbackClick) {\n\t\t\tthis._feedbackWidget = this._createInternalFeedbackWidget();\n\t\t}\n\n\t\tif (this._hasTrigger()) {\n\t\t\tthis.launcher = new LiveChatLauncher(this.LiveChatState, {\n\t\t\t\tposition: this.liveChatOptions.position,\n\t\t\t\tprimaryColor: this.liveChatOptions.primaryColor,\n\t\t\t});\n\t\t\tcontainer.appendChild(this.launcher.render());\n\t\t}\n\n\t\tthis.panel = new LiveChatPanel(this.LiveChatState, {\n\t\t\tposition: this.liveChatOptions.position,\n\t\t\ttheme: this.liveChatOptions.theme,\n\t\t\tprimaryColor: this.liveChatOptions.primaryColor,\n\t\t\tlogoUrl: this.liveChatOptions.logoUrl,\n\t\t\tfeaturedContent: this.liveChatOptions.featuredContent,\n\t\t\tonSendMessage:\n\t\t\t\tthis.liveChatOptions.onSendMessage ||\n\t\t\t\tthis._handleSendMessage.bind(this),\n\t\t\tonStartConversation: this._handleStartConversation.bind(this),\n\t\t\tonTyping: this.sendTypingIndicator.bind(this),\n\t\t\tonSelectConversation: this._handleSelectConversation.bind(this),\n\t\t\tonStartNewConversation: this._handleNewConversationClick.bind(this),\n\t\t\tonIdentifyContact: this._handleIdentifyContact.bind(this),\n\t\t\tonFeedbackClick:\n\t\t\t\tthis.liveChatOptions.onFeedbackClick ||\n\t\t\t\t(this._feedbackWidget ? () => this._feedbackWidget.open() : null),\n\t\t\tonArticleClick: this.liveChatOptions.onArticleClick,\n\t\t\tonChangelogClick: this.liveChatOptions.onChangelogClick,\n\t\t});\n\n\t\tthis.panel.registerView('home', HomeView);\n\t\tthis.panel.registerView('messages', ConversationsView);\n\t\tthis.panel.registerView('chat', ChatView);\n\t\tthis.panel.registerView('prechat', PreChatFormView);\n\t\tthis.panel.registerView('help', HelpView);\n\t\tthis.panel.registerView('changelog', ChangelogView);\n\n\t\tcontainer.appendChild(this.panel.render());\n\t\tthis.panel.hide();\n\n\t\treturn container;\n\t}\n\n\t_attachEvents() {\n\t\tthis._stateUnsubscribe = this.LiveChatState.subscribe((type, data) => {\n\t\t\tif (type === 'openChange') {\n\t\t\t\tthis._handleOpenChange(data.isOpen);\n\t\t\t}\n\t\t\tif (type === 'conversationChange') {\n\t\t\t\tthis._handleActiveConversationChange(\n\t\t\t\t\tdata.conversationId,\n\t\t\t\t\tdata.previousConversationId\n\t\t\t\t);\n\t\t\t}\n\t\t});\n\t}\n\n\t_handleOpenChange(isOpen) {\n\t\tif (isOpen) {\n\t\t\tthis.panel.show();\n\t\t\tthis.sdk.eventBus.emit('liveChat:opened', { widget: this });\n\t\t} else {\n\t\t\tthis.panel.hide();\n\t\t\tthis.LiveChatState.reset();\n\t\t\tthis.sdk.eventBus.emit('liveChat:closed', { widget: this });\n\t\t}\n\t}\n\n\t_handleActiveConversationChange(conversationId, previousConversationId) {\n\t\tif (previousConversationId && this.wsService) {\n\t\t\tthis.wsService.send('conversation:unsubscribe', {\n\t\t\t\tconversation_id: previousConversationId,\n\t\t\t});\n\t\t}\n\t\tif (conversationId && this.wsService) {\n\t\t\tthis.wsService.send('conversation:subscribe', {\n\t\t\t\tconversation_id: conversationId,\n\t\t\t});\n\t\t}\n\t}\n\n\tasync _handleStartConversation(messageContent, pendingAttachments) {\n\t\ttry {\n\t\t\tif (\n\t\t\t\tthis.LiveChatState.requireEmailBeforeChat &&\n\t\t\t\t!this.LiveChatState.isIdentified\n\t\t\t) {\n\t\t\t\tthis.LiveChatState.pendingMessage = {\n\t\t\t\t\tcontent: messageContent,\n\t\t\t\t\tattachments: pendingAttachments,\n\t\t\t\t};\n\t\t\t\tthis.LiveChatState.setView('prechat');\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tconst openConversation = this.LiveChatState.conversations.find(\n\t\t\t\t(c) => c.status === 'open'\n\t\t\t);\n\n\t\t\tif (openConversation) {\n\t\t\t\tthis.LiveChatState.setActiveConversation(openConversation.id);\n\t\t\t\tawait this._handleSendMessage(\n\t\t\t\t\topenConversation.id,\n\t\t\t\t\t{ content: messageContent },\n\t\t\t\t\tpendingAttachments\n\t\t\t\t);\n\t\t\t\treturn openConversation;\n\t\t\t}\n\n\t\t\treturn await this.startNewConversation(\n\t\t\t\tmessageContent,\n\t\t\t\t'',\n\t\t\t\tpendingAttachments\n\t\t\t);\n\t\t} catch (error) {\n\t\t\tconsole.error('[LiveChatWidget] Failed to start conversation:', error);\n\t\t\treturn null;\n\t\t}\n\t}\n\n\tasync _handleSelectConversation(conversationId) {\n\t\ttry {\n\t\t\tawait this.fetchMessages(conversationId);\n\t\t} catch (error) {\n\t\t\tconsole.error('[LiveChatWidget] Failed to fetch messages:', error);\n\t\t}\n\t}\n\n\t_handleNewConversationClick() {\n\t\tconst openConversation = this.LiveChatState.conversations.find(\n\t\t\t(c) => c.status === 'open'\n\t\t);\n\n\t\tif (openConversation) {\n\t\t\tthis.LiveChatState.setActiveConversation(openConversation.id);\n\t\t\tthis.LiveChatState.setView('chat');\n\t\t\tthis._handleSelectConversation(openConversation.id);\n\t\t} else {\n\t\t\tthis.LiveChatState.setActiveConversation(null);\n\t\t\tthis.LiveChatState.setView('chat');\n\t\t}\n\t}\n\n\tasync _handleIdentifyContact(contactData) {\n\t\ttry {\n\t\t\t// Route through sdk.identify() so the SDK-level identity state is updated\n\t\t\t// and applyIdentity() handles the live chat state + WebSocket as a side effect.\n\t\t\tconst result = await this.sdk.identify({\n\t\t\t\temail: contactData.email,\n\t\t\t\tname: contactData.name,\n\t\t\t});\n\t\t\treturn result;\n\t\t} catch (error) {\n\t\t\tconsole.error('[LiveChatWidget] Failed to identify contact:', error);\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\tmarkAsIdentified(name, email) {\n\t\t// Called externally by the app when the user is already known.\n\t\t// No API call needed — identity was already established via sdk.identify().\n\t\tthis.applyIdentity({ name, email });\n\t}\n\n\tapplyIdentity(metadata = {}) {\n\t\tthis.LiveChatState.setIdentified(true, metadata);\n\n\t\tif (this.apiService?.sessionToken && !this.wsService?.isConnected) {\n\t\t\tthis._initWebSocket();\n\t\t}\n\t}\n\n\tasync _handleUploadFile(base64Data, filename) {\n\t\ttry {\n\t\t\tconst response = await this.apiService.uploadFile(base64Data, filename);\n\t\t\tif (response.status && response.url) {\n\t\t\t\treturn response.url;\n\t\t\t}\n\t\t\tthrow new Error('Upload failed');\n\t\t} catch (error) {\n\t\t\tconsole.error('[LiveChatWidget] Failed to upload file:', error);\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\tasync _uploadPendingAttachments(pendingAttachments) {\n\t\tif (!pendingAttachments || pendingAttachments.length === 0) return [];\n\n\t\tconst uploaded = [];\n\t\tfor (const att of pendingAttachments) {\n\t\t\ttry {\n\t\t\t\tconst cdnUrl = await this._handleUploadFile(att.preview, att.file.name);\n\t\t\t\tuploaded.push({\n\t\t\t\t\turl: cdnUrl,\n\t\t\t\t\ttype: att.type.startsWith('image') ? 'image' : 'file',\n\t\t\t\t\tname: att.file.name,\n\t\t\t\t});\n\t\t\t} catch (err) {\n\t\t\t\tconsole.error(\n\t\t\t\t\t'[LiveChatWidget] Skipping failed attachment upload:',\n\t\t\t\t\tatt.file.name,\n\t\t\t\t\terr\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t\treturn uploaded;\n\t}\n\n\tasync _handleSendMessage(conversationId, message, pendingAttachments) {\n\t\tthis.sdk.eventBus.emit('liveChat:messageSent', {\n\t\t\twidget: this,\n\t\t\tconversationId,\n\t\t\tmessage,\n\t\t});\n\n\t\ttry {\n\t\t\tconst uploadedAttachments =\n\t\t\t\tawait this._uploadPendingAttachments(pendingAttachments);\n\n\t\t\tconst response = await this.apiService.sendMessage(conversationId, {\n\t\t\t\tcontent: message.content,\n\t\t\t\tattachments: uploadedAttachments,\n\t\t\t});\n\n\t\t\tif (response.status && response.data) {\n\t\t\t\t// Reconcile the optimistic 'Sending…' message with the server's\n\t\t\t\t// confirmation as soon as the POST returns. Don't depend on the WS\n\t\t\t\t// echo alone — when the WebSocket frame is dropped (brief\n\t\t\t\t// disconnect, slow network, server send-buffer full), the\n\t\t\t\t// optimistic message stays stuck on 'Sending…' forever because\n\t\t\t\t// upsertMessage's match window is finite.\n\t\t\t\tconst serverData = response.data;\n\t\t\t\tlet attachments = [];\n\t\t\t\tif (serverData.attachments) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tattachments =\n\t\t\t\t\t\t\ttypeof serverData.attachments === 'string'\n\t\t\t\t\t\t\t\t? JSON.parse(serverData.attachments)\n\t\t\t\t\t\t\t\t: serverData.attachments;\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\tattachments = [];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.LiveChatState.upsertMessage(\n\t\t\t\t\tconversationId,\n\t\t\t\t\t{\n\t\t\t\t\t\tid: serverData.id,\n\t\t\t\t\t\tcontent: serverData.content,\n\t\t\t\t\t\tisOwn: true,\n\t\t\t\t\t\ttimestamp: serverData.created_at,\n\t\t\t\t\t\tattachments:\n\t\t\t\t\t\t\tArray.isArray(attachments) && attachments.length > 0\n\t\t\t\t\t\t\t\t? attachments\n\t\t\t\t\t\t\t\t: undefined,\n\t\t\t\t\t},\n\t\t\t\t\t{ reconcileOwnOptimistic: true, optimisticMatchWindowMs: 60000 }\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif (this.apiService?.mock) {\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tconst mockResponse = {\n\t\t\t\t\t\tid: 'msg_' + Date.now(),\n\t\t\t\t\t\tcontent: \"Thanks for your message! We'll get back to you soon.\",\n\t\t\t\t\t\tisOwn: false,\n\t\t\t\t\t\ttimestamp: new Date().toISOString(),\n\t\t\t\t\t\tsender: {\n\t\t\t\t\t\t\tname: 'Support Team',\n\t\t\t\t\t\t\tavatarUrl: null,\n\t\t\t\t\t\t},\n\t\t\t\t\t};\n\t\t\t\t\tthis.LiveChatState.addMessage(conversationId, mockResponse);\n\t\t\t\t}, 1500);\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tconsole.error('[LiveChatWidget] Failed to send message:', error);\n\t\t}\n\t}\n\n\t_handleWebSocketMessage(data) {\n\t\tconst { conversation_id, message } = data;\n\n\t\tlet attachments = [];\n\t\tif (message.attachments) {\n\t\t\ttry {\n\t\t\t\tattachments =\n\t\t\t\t\ttypeof message.attachments === 'string'\n\t\t\t\t\t\t? JSON.parse(message.attachments)\n\t\t\t\t\t\t: message.attachments;\n\t\t\t} catch (e) {\n\t\t\t\t// ignore\n\t\t\t}\n\t\t}\n\n\t\tconst localMessage = {\n\t\t\tid: message.id,\n\t\t\tcontent: message.content,\n\t\t\tisOwn: message.sender_type === 'customer',\n\t\t\tisSystem: message.sender_type === 'system',\n\t\t\ttimestamp: message.created_at,\n\t\t\tattachments: attachments.length > 0 ? attachments : undefined,\n\t\t\tsender: {\n\t\t\t\tname: message.sender_name || 'Support',\n\t\t\t\tavatarUrl: message.sender_avatar || null,\n\t\t\t},\n\t\t};\n\n\t\tthis.LiveChatState.upsertMessage(conversation_id, localMessage, {\n\t\t\treconcileOwnOptimistic: true,\n\t\t\toptimisticMatchWindowMs: 30000,\n\t\t});\n\n\t\tconst isOwnMessage = message.sender_type === 'customer';\n\n\t\tif (!isOwnMessage && this.LiveChatState.isIdentified) {\n\t\t\tthis._notificationSound.play();\n\t\t}\n\n\t\tif (\n\t\t\t!this.LiveChatState.isOpen ||\n\t\t\tthis.LiveChatState.activeConversationId !== conversation_id\n\t\t) {\n\t\t\tthis._updateUnreadCount();\n\t\t}\n\t}\n\n\t_handleTypingStarted(data) {\n\t\tif (data.is_agent) {\n\t\t\tthis.LiveChatState._notify('typingStarted', {\n\t\t\t\tconversationId: data.conversation_id,\n\t\t\t\tuserName: data.user_name,\n\t\t\t});\n\t\t}\n\t}\n\n\t_handleTypingStopped(data) {\n\t\tthis.LiveChatState._notify('typingStopped', {\n\t\t\tconversationId: data.conversation_id,\n\t\t});\n\t}\n\n\t_handleConversationClosed(data) {\n\t\tconst conversationId =\n\t\t\tdata?.conversation_id || data?.id || data?.conversation?.id;\n\t\tif (!conversationId) return;\n\n\t\tthis.LiveChatState.updateConversation(conversationId, {\n\t\t\tstatus: 'closed',\n\t\t});\n\t}\n\n\tasync _updateUnreadCount() {\n\t\ttry {\n\t\t\tconst response = await this.apiService.getUnreadCount();\n\t\t\tif (response.status && response.data) {\n\t\t\t\tthis.LiveChatState.unreadCount = response.data.unread_count || 0;\n\t\t\t\tthis.LiveChatState._notify('unreadCountChange', {\n\t\t\t\t\tcount: this.LiveChatState.unreadCount,\n\t\t\t\t});\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tconsole.error('[LiveChatWidget] Failed to get unread count:', error);\n\t\t}\n\t}\n\n\t_initWebSocket() {\n\t\tif (this.wsService) {\n\t\t\tthis.wsService.disconnect();\n\t\t}\n\n\t\tthis.wsService = new WebSocketService({\n\t\t\tbaseURL: this.apiService.baseURL,\n\t\t\tworkspace: this.apiService.workspace,\n\t\t\tsessionToken: this.apiService.sessionToken,\n\t\t\tmock: this.apiService.mock,\n\t\t});\n\n\t\tthis._wsUnsubscribers.push(\n\t\t\tthis.wsService.on('message', this._handleWebSocketMessage)\n\t\t);\n\t\tthis._wsUnsubscribers.push(\n\t\t\tthis.wsService.on('typing_started', this._handleTypingStarted)\n\t\t);\n\t\tthis._wsUnsubscribers.push(\n\t\t\tthis.wsService.on('typing_stopped', this._handleTypingStopped)\n\t\t);\n\t\tthis._wsUnsubscribers.push(\n\t\t\tthis.wsService.on('conversation_closed', this._handleConversationClosed)\n\t\t);\n\t\t// Track first vs reconnect locally so we only backfill on reconnects.\n\t\t// First connect is right after _initWebSocket() and the surrounding\n\t\t// flow has already loaded fresh data — re-fetching would be wasted.\n\t\tlet wsHasConnectedBefore = false;\n\t\tthis._wsUnsubscribers.push(\n\t\t\tthis.wsService.on('connected', () => {\n\t\t\t\tconsole.log('[LiveChatWidget] WebSocket connected');\n\t\t\t\tconst isReconnect = wsHasConnectedBefore;\n\t\t\t\twsHasConnectedBefore = true;\n\t\t\t\tif (this.LiveChatState.activeConversationId) {\n\t\t\t\t\tthis.wsService.send('conversation:subscribe', {\n\t\t\t\t\t\tconversation_id: this.LiveChatState.activeConversationId,\n\t\t\t\t\t});\n\t\t\t\t\t// On reconnect, refetch the active conversation's messages.\n\t\t\t\t\t// The server doesn't replay events that fired during the WS\n\t\t\t\t\t// disconnect, so anything broadcast in the gap is otherwise\n\t\t\t\t\t// permanently lost from the customer's view until they\n\t\t\t\t\t// refresh the page.\n\t\t\t\t\tif (isReconnect) {\n\t\t\t\t\t\tthis.fetchMessages(this.LiveChatState.activeConversationId).catch(\n\t\t\t\t\t\t\t(err) => {\n\t\t\t\t\t\t\t\tconsole.error(\n\t\t\t\t\t\t\t\t\t'[LiveChatWidget] Failed to backfill messages on reconnect:',\n\t\t\t\t\t\t\t\t\terr\n\t\t\t\t\t\t\t\t);\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}\n\t\t\t})\n\t\t);\n\t\tthis._wsUnsubscribers.push(\n\t\t\tthis.wsService.on('disconnected', () => {\n\t\t\t\tconsole.log('[LiveChatWidget] WebSocket disconnected');\n\t\t\t\tthis.LiveChatState._notify('connectionChange', { connected: false });\n\t\t\t})\n\t\t);\n\t\tthis._wsUnsubscribers.push(\n\t\t\tthis.wsService.on('connected', () => {\n\t\t\t\tthis.LiveChatState._notify('connectionChange', { connected: true });\n\t\t\t})\n\t\t);\n\n\t\tthis.wsService.connect();\n\t}\n\n\topen() {\n\t\tthis.LiveChatState.setOpen(true);\n\t}\n\n\tclose() {\n\t\tthis.LiveChatState.setOpen(false);\n\t}\n\n\ttoggle() {\n\t\tthis.LiveChatState.setOpen(!this.LiveChatState.isOpen);\n\t}\n\n\tnavigateTo(view) {\n\t\tthis.LiveChatState.setView(view);\n\t\tif (!this.LiveChatState.isOpen) {\n\t\t\tthis.open();\n\t\t}\n\t}\n\n\tsetConversations(conversations) {\n\t\tthis.LiveChatState.setConversations(conversations);\n\t}\n\n\taddMessage(conversationId, message) {\n\t\tthis.LiveChatState.addMessage(conversationId, message);\n\t}\n\n\tsetHelpArticles(articles) {\n\t\tthis.LiveChatState.setHelpArticles(articles);\n\t}\n\n\tsetHomeChangelogItems(items) {\n\t\tthis.LiveChatState.setHomeChangelogItems(items);\n\t}\n\n\tsetChangelogItems(items) {\n\t\tthis.LiveChatState.setChangelogItems(items);\n\t}\n\n\tsetUnreadCount(count) {\n\t\tthis.LiveChatState.unreadCount = count;\n\t\tthis.LiveChatState._notify('unreadCountChange', { count });\n\t}\n\n\tgetState() {\n\t\treturn {\n\t\t\tisOpen: this.LiveChatState.isOpen,\n\t\t\tcurrentView: this.LiveChatState.currentView,\n\t\t\tunreadCount: this.LiveChatState.unreadCount,\n\t\t\tconversations: this.LiveChatState.conversations,\n\t\t};\n\t}\n\n\t_applyPreviewData() {\n\t\tconst data = this.liveChatOptions.previewData;\n\t\tif (!data || typeof data !== 'object') {\n\t\t\treturn;\n\t\t}\n\n\t\tif (Array.isArray(data.conversations)) {\n\t\t\tthis.LiveChatState.setConversations(data.conversations);\n\t\t}\n\n\t\tif (Array.isArray(data.helpArticles)) {\n\t\t\tthis.LiveChatState.setHelpArticles(data.helpArticles);\n\t\t}\n\n\t\tif (Array.isArray(data.homeChangelogItems)) {\n\t\t\tthis.LiveChatState.setHomeChangelogItems(data.homeChangelogItems);\n\t\t}\n\n\t\tif (Array.isArray(data.changelogItems)) {\n\t\t\tthis.LiveChatState.setChangelogItems(data.changelogItems);\n\t\t}\n\n\t\tif (typeof data.unreadCount === 'number') {\n\t\t\tthis.setUnreadCount(data.unreadCount);\n\t\t}\n\n\t\tif (data.availability && typeof data.availability === 'object') {\n\t\t\tconst availability = data.availability;\n\t\t\tthis.LiveChatState.agentsOnline = Boolean(\n\t\t\t\tavailability.agentsOnline ??\n\t\t\t\t\tavailability.agents_online ??\n\t\t\t\t\tavailability.is_online\n\t\t\t);\n\t\t\tthis.LiveChatState.onlineCount =\n\t\t\t\tavailability.onlineCount ?? availability.online_count ?? 0;\n\t\t\tthis.LiveChatState.responseTime =\n\t\t\t\tavailability.responseTime ??\n\t\t\t\tavailability.response_time ??\n\t\t\t\tthis.LiveChatState.responseTime;\n\t\t\tthis.LiveChatState._notify('availabilityUpdate', availability);\n\t\t}\n\n\t\tif (typeof data.currentView === 'string') {\n\t\t\tthis.LiveChatState.setView(data.currentView);\n\t\t}\n\t}\n\n\tasync loadInitialData() {\n\t\ttry {\n\t\t\tconst conversations = await this._fetchConversations();\n\t\t\tthis.LiveChatState.setConversations(conversations);\n\t\t} catch (error) {\n\t\t\tconsole.error('[LiveChatWidget] Failed to load conversations:', error);\n\t\t}\n\n\t\tif (this.liveChatOptions.enableHelp) {\n\t\t\ttry {\n\t\t\t\tconst articles = await this._fetchHelpArticles();\n\t\t\t\tthis.LiveChatState.setHelpArticles(articles);\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('[LiveChatWidget] Failed to load help articles:', error);\n\t\t\t}\n\t\t}\n\n\t\tif (this.liveChatOptions.enableChangelog) {\n\t\t\ttry {\n\t\t\t\tconst { homeItems, changelogItems } = await this._fetchChangelog();\n\t\t\t\tthis.LiveChatState.setHomeChangelogItems(homeItems);\n\t\t\t\tthis.LiveChatState.setChangelogItems(changelogItems);\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('[LiveChatWidget] Failed to load changelog:', error);\n\t\t\t}\n\t\t}\n\t}\n\n\tasync _fetchConversations() {\n\t\ttry {\n\t\t\tconst response = await this.apiService.getConversations();\n\t\t\tif (response.status && response.data) {\n\t\t\t\treturn response.data.map((conv) => ({\n\t\t\t\t\tid: conv.id,\n\t\t\t\t\ttitle:\n\t\t\t\t\t\tconv.subject ||\n\t\t\t\t\t\t`Chat with ${conv.assigned_user?.name || 'Support'}`,\n\t\t\t\t\tparticipants: conv.assigned_user\n\t\t\t\t\t\t? [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tname: conv.assigned_user.name,\n\t\t\t\t\t\t\t\t\tavatarUrl: conv.assigned_user.avatar,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t: [{ name: 'Support', avatarUrl: null }],\n\t\t\t\t\tlastMessage: conv.preview || conv.snippet || '',\n\t\t\t\t\tlastMessageTime: conv.last_message_at,\n\t\t\t\t\tunread: conv.unread || 0,\n\t\t\t\t\tstatus: conv.status,\n\t\t\t\t}));\n\t\t\t}\n\t\t\treturn [];\n\t\t} catch (error) {\n\t\t\tconsole.error('[LiveChatWidget] Failed to fetch conversations:', error);\n\t\t\treturn [];\n\t\t}\n\t}\n\n\tasync _fetchHelpArticles() {\n\t\ttry {\n\t\t\tconst response = await this.apiService.getHelpCollections();\n\t\t\tif (response.success && response.data) {\n\t\t\t\tconst collections = response.data.collections || response.data;\n\t\t\t\tconst helpBase = (this.liveChatOptions.helpUrl || '').replace(\n\t\t\t\t\t/\\/$/,\n\t\t\t\t\t''\n\t\t\t\t);\n\n\t\t\t\tconst sorted = [...collections].sort(\n\t\t\t\t\t(a, b) => (a.order ?? 0) - (b.order ?? 0)\n\t\t\t\t);\n\n\t\t\t\treturn sorted.map((collection) => ({\n\t\t\t\t\tid: collection.id,\n\t\t\t\t\ttitle: collection.title,\n\t\t\t\t\tdescription: collection.description || '',\n\t\t\t\t\tarticleCount: collection.article_count || 0,\n\t\t\t\t\ticon: collection.icon || null,\n\t\t\t\t\tauthor: collection.author || null,\n\t\t\t\t\turl:\n\t\t\t\t\t\tcollection.url_slug && helpBase\n\t\t\t\t\t\t\t? `${helpBase}/collections/${collection.url_slug}`\n\t\t\t\t\t\t\t: helpBase || null,\n\t\t\t\t}));\n\t\t\t}\n\t\t\treturn [];\n\t\t} catch (error) {\n\t\t\tconsole.error('[LiveChatWidget] Failed to fetch help articles:', error);\n\t\t\treturn [];\n\t\t}\n\t}\n\n\tasync fetchMessages(conversationId) {\n\t\ttry {\n\t\t\tconst response = await this.apiService.getConversation(conversationId);\n\t\t\tif (response.status && response.data) {\n\t\t\t\tconst messages = (response.data.messages || []).map((msg) => {\n\t\t\t\t\tlet attachments;\n\t\t\t\t\tif (msg.attachments) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tattachments =\n\t\t\t\t\t\t\t\ttypeof msg.attachments === 'string'\n\t\t\t\t\t\t\t\t\t? JSON.parse(msg.attachments)\n\t\t\t\t\t\t\t\t\t: msg.attachments;\n\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\t// ignore\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn {\n\t\t\t\t\t\tid: msg.id,\n\t\t\t\t\t\tcontent: msg.content,\n\t\t\t\t\t\tisOwn: msg.sender_type === 'customer',\n\t\t\t\t\t\tisSystem: msg.sender_type === 'system',\n\t\t\t\t\t\ttimestamp: msg.created_at,\n\t\t\t\t\t\tattachments:\n\t\t\t\t\t\t\tattachments && attachments.length > 0 ? attachments : undefined,\n\t\t\t\t\t\tsender: {\n\t\t\t\t\t\t\tname:\n\t\t\t\t\t\t\t\tmsg.sender_name ||\n\t\t\t\t\t\t\t\t(msg.sender_type === 'customer' ? 'You' : 'Support'),\n\t\t\t\t\t\t\tavatarUrl: msg.sender_avatar || null,\n\t\t\t\t\t\t},\n\t\t\t\t\t};\n\t\t\t\t});\n\t\t\t\tthis.LiveChatState.setMessages(conversationId, messages);\n\n\t\t\t\tawait this.apiService.markConversationAsRead(conversationId);\n\t\t\t\tthis.LiveChatState.markAsRead(conversationId);\n\n\t\t\t\treturn messages;\n\t\t\t}\n\t\t\treturn [];\n\t\t} catch (error) {\n\t\t\tconsole.error('[LiveChatWidget] Failed to fetch messages:', error);\n\t\t\treturn [];\n\t\t}\n\t}\n\n\tasync startNewConversation(message, subject = '', pendingAttachments = []) {\n\t\ttry {\n\t\t\tconst uploadedAttachments =\n\t\t\t\tawait this._uploadPendingAttachments(pendingAttachments);\n\n\t\t\tconst response = await this.apiService.startConversation({\n\t\t\t\tmessage,\n\t\t\t\tsubject,\n\t\t\t\tattachments: uploadedAttachments,\n\t\t\t});\n\n\t\t\tif (response.status && response.data) {\n\t\t\t\tconst conv = response.data;\n\t\t\t\tconst newConversation = {\n\t\t\t\t\tid: conv.id,\n\t\t\t\t\ttitle: conv.subject || 'New conversation',\n\t\t\t\t\tparticipants: [{ name: 'Support', avatarUrl: null }],\n\t\t\t\t\tlastMessage: message,\n\t\t\t\t\tlastMessageTime: conv.created_at || new Date().toISOString(),\n\t\t\t\t\tunread: 0,\n\t\t\t\t\tstatus: 'open',\n\t\t\t\t};\n\n\t\t\t\tthis.LiveChatState.addConversation(newConversation);\n\n\t\t\t\tconst initialMessages = [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: 'msg_' + Date.now(),\n\t\t\t\t\t\tcontent: message,\n\t\t\t\t\t\tisOwn: true,\n\t\t\t\t\t\ttimestamp: new Date().toISOString(),\n\t\t\t\t\t},\n\t\t\t\t];\n\n\t\t\t\tinitialMessages.push({\n\t\t\t\t\tid: 'system_rt_' + Date.now(),\n\t\t\t\t\tcontent: this.LiveChatState.agentsOnline\n\t\t\t\t\t\t? 'One of our customer support agents will be with you shortly.'\n\t\t\t\t\t\t: this.LiveChatState.responseTime,\n\t\t\t\t\tisSystem: true,\n\t\t\t\t\ttimestamp: new Date().toISOString(),\n\t\t\t\t});\n\n\t\t\t\tthis.LiveChatState.setMessages(conv.id, initialMessages);\n\n\t\t\t\tthis.LiveChatState.setActiveConversation(conv.id);\n\t\t\t\tthis.LiveChatState.setView('chat');\n\n\t\t\t\treturn conv;\n\t\t\t}\n\t\t\treturn null;\n\t\t} catch (error) {\n\t\t\tconsole.error('[LiveChatWidget] Failed to start conversation:', error);\n\t\t\treturn null;\n\t\t}\n\t}\n\n\tasync sendTypingIndicator(conversationId, isTyping) {\n\t\ttry {\n\t\t\tawait this.apiService.sendTypingIndicator(conversationId, isTyping);\n\t\t} catch (error) {\n\t\t\t// silent fail\n\t\t}\n\t}\n\n\tasync _fetchAndApplySettings() {\n\t\ttry {\n\t\t\tconst response = await this.apiService.getLiveChatSettings();\n\t\t\tif (!response?.status || !response?.data) return;\n\n\t\t\tconst s = response.data;\n\t\t\tlet stylesChanged = false;\n\n\t\t\t// Team info\n\t\t\tif (s.team_name && !this._hasExplicitOption('teamName')) {\n\t\t\t\tthis.liveChatOptions.teamName = s.team_name;\n\t\t\t\tthis.LiveChatState.teamName = s.team_name;\n\t\t\t}\n\t\t\tif (s.logo_url && !this._hasExplicitOption('logoUrl')) {\n\t\t\t\tthis.liveChatOptions.logoUrl = s.logo_url;\n\t\t\t}\n\t\t\tif (s.greeting_message && !this._hasExplicitOption('greetingMessage')) {\n\t\t\t\tthis.LiveChatState.greetingMessage = s.greeting_message;\n\t\t\t}\n\t\t\tif (s.welcome_message && !this._hasExplicitOption('welcomeMessage')) {\n\t\t\t\tthis.LiveChatState.welcomeMessage = s.welcome_message;\n\t\t\t}\n\t\t\tif (s.response_time && !this._hasExplicitOption('responseTime')) {\n\t\t\t\tthis.LiveChatState.responseTime = s.response_time;\n\t\t\t}\n\t\t\tif (\n\t\t\t\tArray.isArray(s.team_avatars) &&\n\t\t\t\ts.team_avatars.length > 0 &&\n\t\t\t\t!this._hasExplicitOption('teamAvatars')\n\t\t\t) {\n\t\t\t\tthis.LiveChatState.teamAvatars = s.team_avatars;\n\t\t\t}\n\n\t\t\t// Colors / theme\n\t\t\tif (s.primary_color && !this._hasExplicitOption('primaryColor')) {\n\t\t\t\tthis.liveChatOptions.primaryColor = s.primary_color;\n\t\t\t\tstylesChanged = true;\n\t\t\t}\n\t\t\tif (s.background_color && !this._hasExplicitOption('backgroundColor')) {\n\t\t\t\tthis.liveChatOptions.backgroundColor = s.background_color;\n\t\t\t\tstylesChanged = true;\n\t\t\t}\n\t\t\tif (s.text_color && !this._hasExplicitOption('textColor')) {\n\t\t\t\tthis.liveChatOptions.textColor = s.text_color;\n\t\t\t\tstylesChanged = true;\n\t\t\t}\n\t\t\tif (s.theme && !this._hasExplicitOption('theme')) {\n\t\t\t\tthis.liveChatOptions.theme = s.theme;\n\t\t\t\tstylesChanged = true;\n\t\t\t}\n\t\t\tif (stylesChanged) {\n\t\t\t\tapplyliveChatCustomStyles({\n\t\t\t\t\tprimaryColor: this.liveChatOptions.primaryColor,\n\t\t\t\t\ttextColor: this.liveChatOptions.textColor,\n\t\t\t\t\tbackgroundColor: this.liveChatOptions.backgroundColor,\n\t\t\t\t\ttheme: this.liveChatOptions.theme,\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// Launcher position & padding\n\t\t\tif (s.launcher_position && !this._hasExplicitOption('position')) {\n\t\t\t\tconst parts = s.launcher_position.split('-');\n\t\t\t\tthis.liveChatOptions.position = parts[parts.length - 1] || 'right';\n\t\t\t}\n\t\t\tif (\n\t\t\t\ttypeof s.horizontal_padding === 'number' &&\n\t\t\t\t!this._hasExplicitOption('horizontalPadding')\n\t\t\t) {\n\t\t\t\tthis.liveChatOptions.horizontalPadding = s.horizontal_padding;\n\t\t\t}\n\t\t\tif (\n\t\t\t\ttypeof s.vertical_padding === 'number' &&\n\t\t\t\t!this._hasExplicitOption('verticalPadding')\n\t\t\t) {\n\t\t\t\tthis.liveChatOptions.verticalPadding = s.vertical_padding;\n\t\t\t}\n\t\t\tif (this._widgetContainer) {\n\t\t\t\tthis._widgetContainer.style.setProperty(\n\t\t\t\t\t'--liveChat-h-padding',\n\t\t\t\t\t`${this.liveChatOptions.horizontalPadding ?? 20}px`\n\t\t\t\t);\n\t\t\t\tthis._widgetContainer.style.setProperty(\n\t\t\t\t\t'--liveChat-v-padding',\n\t\t\t\t\t`${this.liveChatOptions.verticalPadding ?? 20}px`\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Module visibility\n\t\t\tif (\n\t\t\t\ttypeof s.home_module_enabled === 'boolean' &&\n\t\t\t\t!this._hasExplicitOption('homeModuleEnabled')\n\t\t\t) {\n\t\t\t\tthis.LiveChatState.homeModuleEnabled = s.home_module_enabled;\n\t\t\t\tif (\n\t\t\t\t\t!s.home_module_enabled &&\n\t\t\t\t\tthis.LiveChatState.currentView === 'home'\n\t\t\t\t) {\n\t\t\t\t\tthis.LiveChatState.currentView =\n\t\t\t\t\t\tthis.LiveChatState.messagesModuleEnabled !== false\n\t\t\t\t\t\t\t? 'messages'\n\t\t\t\t\t\t\t: 'help';\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (\n\t\t\t\ttypeof s.messages_module_enabled === 'boolean' &&\n\t\t\t\t!this._hasExplicitOption('messagesModuleEnabled')\n\t\t\t) {\n\t\t\t\tthis.LiveChatState.messagesModuleEnabled = s.messages_module_enabled;\n\t\t\t\tif (\n\t\t\t\t\t!s.messages_module_enabled &&\n\t\t\t\t\tthis.LiveChatState.currentView === 'messages'\n\t\t\t\t) {\n\t\t\t\t\tthis.LiveChatState.currentView =\n\t\t\t\t\t\tthis.LiveChatState.homeModuleEnabled !== false ? 'home' : 'help';\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Feature flags\n\t\t\tif (\n\t\t\t\ttypeof s.show_avatars === 'boolean' &&\n\t\t\t\t!this._hasExplicitOption('showAvatars')\n\t\t\t) {\n\t\t\t\tthis.LiveChatState.showAvatars = s.show_avatars;\n\t\t\t}\n\t\t\tif (s.start_button_text && !this._hasExplicitOption('startButtonText')) {\n\t\t\t\tthis.LiveChatState.startButtonText = s.start_button_text;\n\t\t\t}\n\t\t\tif (\n\t\t\t\ttypeof s.require_email_before_chat === 'boolean' &&\n\t\t\t\t!this._hasExplicitOption('requireEmailBeforeChat')\n\t\t\t) {\n\t\t\t\tthis.LiveChatState.requireEmailBeforeChat = s.require_email_before_chat;\n\t\t\t}\n\t\t\tif (\n\t\t\t\ttypeof s.allow_attachments === 'boolean' &&\n\t\t\t\t!this._hasExplicitOption('allowAttachments')\n\t\t\t) {\n\t\t\t\tthis.LiveChatState.allowAttachments = s.allow_attachments;\n\t\t\t}\n\t\t\tif (\n\t\t\t\ttypeof s.allow_emoji === 'boolean' &&\n\t\t\t\t!this._hasExplicitOption('allowEmoji')\n\t\t\t) {\n\t\t\t\tthis.LiveChatState.allowEmoji = s.allow_emoji;\n\t\t\t}\n\t\t\tif (\n\t\t\t\ttypeof s.show_reply_time === 'boolean' &&\n\t\t\t\t!this._hasExplicitOption('showReplyTime')\n\t\t\t) {\n\t\t\t\tthis.LiveChatState.showReplyTime = s.show_reply_time;\n\t\t\t}\n\n\t\t\t// URLs\n\t\t\tif (s.feedback_url && !this._hasExplicitOption('feedbackUrl')) {\n\t\t\t\tthis.liveChatOptions.feedbackUrl = s.feedback_url;\n\t\t\t\tthis.LiveChatState.urls.feedback = s.feedback_url;\n\t\t\t}\n\t\t\tif (s.help_url && !this._hasExplicitOption('helpUrl')) {\n\t\t\t\tthis.liveChatOptions.helpUrl = s.help_url;\n\t\t\t\tthis.LiveChatState.urls.help = s.help_url;\n\t\t\t}\n\t\t\tif (s.changelog_url && !this._hasExplicitOption('changelogUrl')) {\n\t\t\t\tthis.liveChatOptions.changelogUrl = s.changelog_url;\n\t\t\t\tthis.LiveChatState.urls.changelog = s.changelog_url;\n\t\t\t}\n\t\t\tif (s.roadmap_url && !this._hasExplicitOption('roadmapUrl')) {\n\t\t\t\tthis.liveChatOptions.roadmapUrl = s.roadmap_url;\n\t\t\t\tthis.LiveChatState.urls.roadmap = s.roadmap_url;\n\t\t\t}\n\n\t\t\t// Business hours availability\n\t\t\tif (s.availability && typeof s.availability === 'object') {\n\t\t\t\tthis.LiveChatState.businessHoursState = s.availability.state || null;\n\t\t\t\tthis.LiveChatState.nextOpenAt = s.availability.next_open_at || null;\n\t\t\t\tthis.LiveChatState.holidayName = s.availability.holiday_name || null;\n\t\t\t}\n\n\t\t\tthis.LiveChatState._notify('settingsUpdate', {});\n\t\t} catch (e) {\n\t\t\t// non-fatal\n\t\t}\n\t}\n\n\t_hasExplicitOption(key) {\n\t\treturn Object.prototype.hasOwnProperty.call(\n\t\t\tthis._explicitOptions || {},\n\t\t\tkey\n\t\t);\n\t}\n\n\tasync checkAgentAvailability() {\n\t\ttry {\n\t\t\tconst response = await this.apiService.checkAgentsOnline();\n\t\t\tif (response.status && response.data) {\n\t\t\t\tthis.LiveChatState.agentsOnline =\n\t\t\t\t\tresponse.data.agents_online ?? response.data.is_online ?? false;\n\t\t\t\tthis.LiveChatState.onlineCount = response.data.online_count || 0;\n\t\t\t\tthis.LiveChatState.responseTime = response.data.response_time || '';\n\n\t\t\t\tif (response.data.available_agents && this.LiveChatState.showAvatars !== false) {\n\t\t\t\t\tthis.LiveChatState.setTeamAvatarsFromAgents(\n\t\t\t\t\t\tresponse.data.available_agents\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tthis.LiveChatState._notify('availabilityUpdate', response.data);\n\t\t\t\treturn response.data;\n\t\t\t}\n\t\t\treturn { agents_online: false, online_count: 0 };\n\t\t} catch (error) {\n\t\t\tconsole.error('[LiveChatWidget] Failed to check availability:', error);\n\t\t\treturn { agents_online: false, online_count: 0 };\n\t\t}\n\t}\n\n\tasync _fetchChangelog() {\n\t\tif (this.apiService?.mock) {\n\t\t\treturn {\n\t\t\t\thomeItems: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: 'changelog_5',\n\t\t\t\t\t\ttitle: 'New integrations available',\n\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t'Connect with more tools you love and streamline your workflow.',\n\t\t\t\t\t\tlabels: [{ name: 'Integration', color: '#dbeafe' }],\n\t\t\t\t\t\tcoverImage:\n\t\t\t\t\t\t\t'https://images.unsplash.com/photo-1674027444485-cec3da58eef4?w=500&auto=format&fit=crop&q=60',\n\t\t\t\t\t\tpublishedAt: new Date(\n\t\t\t\t\t\t\tDate.now() - 14 * 24 * 60 * 60 * 1000\n\t\t\t\t\t\t).toISOString(),\n\t\t\t\t\t\turl: '#',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tid: 'changelog_2',\n\t\t\t\t\t\ttitle: 'A new era of Insights has arrived',\n\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t'We announced Fin Insights, a groundbreaking, AI-powered product that gives you complete visibility into every customer conversation.',\n\t\t\t\t\t\tlabels: [\n\t\t\t\t\t\t\t{ name: 'New feature', color: '#dcfce7' },\n\t\t\t\t\t\t\t{ name: 'AI', color: '#f3e8ff' },\n\t\t\t\t\t\t],\n\t\t\t\t\t\tcoverImage:\n\t\t\t\t\t\t\t'https://images.unsplash.com/photo-1666875753105-c63a6f3bdc86?w=500&auto=format&fit=crop&q=60',\n\t\t\t\t\t\tpublishedAt: new Date(\n\t\t\t\t\t\t\tDate.now() - 5 * 24 * 60 * 60 * 1000\n\t\t\t\t\t\t).toISOString(),\n\t\t\t\t\t\turl: '#',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tid: 'changelog_1',\n\t\t\t\t\t\ttitle: 'The 2025 Customer Service Transformation Report',\n\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t'Learn how AI has transformed customer service from the ground up—rewriting its economics and reshaping expectations.',\n\t\t\t\t\t\tlabels: [{ name: 'Report', color: '#fef9c3' }],\n\t\t\t\t\t\tcoverImage:\n\t\t\t\t\t\t\t'https://images.unsplash.com/photo-1762330467475-a565d04e1808?w=500&auto=format&fit=crop&q=60',\n\t\t\t\t\t\tpublishedAt: new Date(\n\t\t\t\t\t\t\tDate.now() - 2 * 24 * 60 * 60 * 1000\n\t\t\t\t\t\t).toISOString(),\n\t\t\t\t\t\turl: '#',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tchangelogItems: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: 'changelog_4',\n\t\t\t\t\t\ttitle: 'Enhanced conversation analytics',\n\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t'Get deeper insights into your customer conversations with our new analytics dashboard.',\n\t\t\t\t\t\tlabels: [{ name: 'Analytics', color: '#fce7f3' }],\n\t\t\t\t\t\tcoverImage:\n\t\t\t\t\t\t\t'https://images.unsplash.com/photo-1523961131990-5ea7c61b2107?w=500&auto=format&fit=crop&q=60',\n\t\t\t\t\t\tpublishedAt: new Date(\n\t\t\t\t\t\t\tDate.now() - 10 * 24 * 60 * 60 * 1000\n\t\t\t\t\t\t).toISOString(),\n\t\t\t\t\t\turl: '#',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tid: 'changelog_3',\n\t\t\t\t\t\ttitle: 'Escalation guidance for complex issues',\n\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t'New AI-powered escalation guidance helps your team handle complex customer issues more effectively.',\n\t\t\t\t\t\tlabels: [\n\t\t\t\t\t\t\t{ name: 'New feature', color: '#dcfce7' },\n\t\t\t\t\t\t\t{ name: 'AI', color: '#f3e8ff' },\n\t\t\t\t\t\t],\n\t\t\t\t\t\tcoverImage:\n\t\t\t\t\t\t\t'https://images.unsplash.com/photo-1764773516703-b246ac2ad5ef?w=500&auto=format&fit=crop&q=60',\n\t\t\t\t\t\tpublishedAt: new Date(\n\t\t\t\t\t\t\tDate.now() - 7 * 24 * 60 * 60 * 1000\n\t\t\t\t\t\t).toISOString(),\n\t\t\t\t\t\turl: '#',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\t\t}\n\n\t\ttry {\n\t\t\tconst response = await this.apiService.getChangelogs({ limit: 20 });\n\n\t\t\tif (response.success && response.data) {\n\t\t\t\tconst changelogs = Array.isArray(response.data) ? response.data : [];\n\t\t\t\tconst changelogBase = (this.liveChatOptions.changelogUrl || '').replace(\n\t\t\t\t\t/\\/$/,\n\t\t\t\t\t''\n\t\t\t\t);\n\n\t\t\t\tconst mappedItems = changelogs.map((item) => ({\n\t\t\t\t\tid: item.id,\n\t\t\t\t\ttitle: item.title,\n\t\t\t\t\tdescription: item.excerpt || item.description || '',\n\t\t\t\t\tlabels: item.labels || [],\n\t\t\t\t\tcoverImage: item.cover_image || null,\n\t\t\t\t\tpublishedAt: item.published_at,\n\t\t\t\t\turl:\n\t\t\t\t\t\titem.slug && changelogBase\n\t\t\t\t\t\t\t? `${changelogBase}/${item.slug}`\n\t\t\t\t\t\t\t: changelogBase || null,\n\t\t\t\t}));\n\n\t\t\t\treturn {\n\t\t\t\t\thomeItems: mappedItems.slice(0, 3),\n\t\t\t\t\tchangelogItems: mappedItems,\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn { homeItems: [], changelogItems: [] };\n\t\t} catch (error) {\n\t\t\tconsole.error('[LiveChatWidget] Failed to fetch changelog:', error);\n\t\t\treturn { homeItems: [], changelogItems: [] };\n\t\t}\n\t}\n\n\tasync onMount() {\n\t\tthis._applyPreviewData();\n\n\t\tif (this.liveChatOptions.autoLoadData) {\n\t\t\t// Fetch workspace settings and apply only if not explicitly configured\n\t\t\tthis._fetchAndApplySettings();\n\n\t\t\tthis.loadInitialData();\n\n\t\t\tif (this.apiService?.sessionToken) {\n\t\t\t\tthis._initWebSocket();\n\t\t\t}\n\n\t\t\tthis.checkAgentAvailability();\n\n\t\t\tthis._availabilityInterval = setInterval(() => {\n\t\t\t\tthis.checkAgentAvailability();\n\t\t\t}, 60000);\n\t\t}\n\n\t\tif (\n\t\t\tthis.liveChatOptions.initialView &&\n\t\t\tthis.liveChatOptions.initialView !== this.LiveChatState.currentView\n\t\t) {\n\t\t\tthis.LiveChatState.setView(this.liveChatOptions.initialView);\n\t\t}\n\t}\n\n\tonDestroy() {\n\t\tif (this._stateUnsubscribe) {\n\t\t\tthis._stateUnsubscribe();\n\t\t}\n\n\t\tif (this.wsService) {\n\t\t\tthis.wsService.disconnect();\n\t\t}\n\n\t\tthis._wsUnsubscribers.forEach((unsub) => unsub());\n\t\tthis._wsUnsubscribers = [];\n\n\t\tif (this._availabilityInterval) {\n\t\t\tclearInterval(this._availabilityInterval);\n\t\t}\n\t}\n\n\tdestroy() {\n\t\tremoveliveChatCustomStyles();\n\n\t\tif (this.launcher) {\n\t\t\tthis.launcher.destroy();\n\t\t}\n\t\tif (this.panel) {\n\t\t\tthis.panel.destroy();\n\t\t}\n\t\tthis.onDestroy();\n\t\tsuper.destroy();\n\t}\n}\n","import { BaseWidget } from './BaseWidget.js';\n\nexport class SurveyWidget extends BaseWidget {\n\tconstructor(options) {\n\t\tsuper({ ...options, type: 'survey' });\n\n\t\tthis.surveyOptions = {\n\t\t\tsurveyId: options.surveyId || null,\n\t\t\tsurveyType: options.surveyType || 'nps',\n\t\t\tposition: options.position || 'center',\n\t\t\ttheme: options.theme || 'light',\n\t\t\tenabled:\n\t\t\t\ttypeof options.enabled === 'boolean' ? options.enabled : undefined,\n\t\t\ttitle: options.title || null,\n\t\t\tdescription: options.description || null,\n\t\t\tlowLabel: options.lowLabel || null,\n\t\t\thighLabel: options.highLabel || null,\n\t\t\tratingScale: options.ratingScale || options.scale || null,\n\t\t\tshowFeedbackInput:\n\t\t\t\ttypeof options.showFeedbackInput === 'boolean'\n\t\t\t\t\t? options.showFeedbackInput\n\t\t\t\t\t: null,\n\t\t\tshowSubmitButton:\n\t\t\t\ttypeof options.showSubmitButton === 'boolean'\n\t\t\t\t\t? options.showSubmitButton\n\t\t\t\t\t: null,\n\t\t\tautoSubmitOnSelect:\n\t\t\t\ttypeof options.autoSubmitOnSelect === 'boolean'\n\t\t\t\t\t? options.autoSubmitOnSelect\n\t\t\t\t\t: null,\n\t\t\tshowTitle:\n\t\t\t\ttypeof options.showTitle === 'boolean' ? options.showTitle : null,\n\t\t\tshowDescription:\n\t\t\t\ttypeof options.showDescription === 'boolean'\n\t\t\t\t\t? options.showDescription\n\t\t\t\t\t: null,\n\t\t\tcustomQuestions: options.customQuestions || [],\n\t\t\tpages: Array.isArray(options.pages) ? options.pages : [],\n\t\t\tthankYouConfig:\n\t\t\t\toptions.thankYouConfig || options.thank_you_config || null,\n\t\t\trespondentId: options.respondentId || null,\n\t\t\temail: options.email || null,\n\t\t\tonSubmit: options.onSubmit || null,\n\t\t\tonDismiss: options.onDismiss || null,\n\t\t};\n\n\t\tthis.surveyState = {\n\t\t\tscore: null,\n\t\t\tfeedback: '',\n\t\t\tcustomAnswers: {},\n\t\t\tpageAnswers: {},\n\t\t\tcurrentPageIndex: 0,\n\t\t\tisSubmitting: false,\n\t\t\tisVisible: false,\n\t\t};\n\t}\n\n\tstatic removeDanglingElements() {\n\t\tif (typeof document === 'undefined') return;\n\n\t\tdocument\n\t\t\t.querySelectorAll(\n\t\t\t\t'.feedback-survey, .feedback-survey-backdrop, .feedback-survey-success, .product7-notification'\n\t\t\t)\n\t\t\t.forEach((el) => {\n\t\t\t\tif (el && el.parentNode) {\n\t\t\t\t\tel.parentNode.removeChild(el);\n\t\t\t\t}\n\t\t\t});\n\t}\n\n\t_render() {\n\t\tconst container = document.createElement('div');\n\t\tcontainer.className = 'feedback-survey-container';\n\t\treturn container;\n\t}\n\n\t_attachEvents() {\n\t\t// Events are attached when survey is shown\n\t}\n\n\tshow() {\n\t\tif (\n\t\t\tthis.options.enabled === false ||\n\t\t\tthis.surveyOptions.enabled === false\n\t\t) {\n\t\t\tthis.sdk.eventBus.emit('survey:suppressed', {\n\t\t\t\twidget: this,\n\t\t\t\tsurveyId: this.surveyOptions.surveyId,\n\t\t\t\treason: 'disabled',\n\t\t\t});\n\t\t\treturn this;\n\t\t}\n\n\t\tSurveyWidget.removeDanglingElements();\n\t\tthis._renderSurvey();\n\t\tthis.state.isOpen = true;\n\t\tthis.surveyState.isVisible = true;\n\t\tthis.sdk.eventBus.emit('survey:shown', {\n\t\t\twidget: this,\n\t\t\ttype: this.surveyOptions.surveyType,\n\t\t});\n\t\treturn this;\n\t}\n\n\thide() {\n\t\tthis.state.isOpen = false;\n\t\tthis._closeSurvey();\n\t\treturn this;\n\t}\n\n\t_renderSurvey() {\n\t\tthis._closeSurvey(false);\n\n\t\tconst config = this._getSurveyConfig();\n\t\tif (!config) return;\n\t\tconst isMultiPage = this._isMultiPageSurvey();\n\t\tconst isLastPage = this._isLastPage();\n\t\tconst showFeedbackInput = this._shouldShowFeedbackInput();\n\t\tconst showActions = this._shouldShowActions();\n\t\tconst showTitle = this._shouldShowTitle(config);\n\t\tconst showDescription = this._shouldShowDescription(config);\n\t\tconst progressPercent = isMultiPage\n\t\t\t? Math.round(\n\t\t\t\t\t((this.surveyState.currentPageIndex + 1) /\n\t\t\t\t\t\tthis.surveyOptions.pages.length) *\n\t\t\t\t\t\t100\n\t\t\t\t)\n\t\t\t: 0;\n\t\tconst submitLabel = isMultiPage && !isLastPage ? 'Next' : 'Submit';\n\t\tconst iconArrowRight = `<iconify-icon icon=\"ph:arrow-right\" width=\"16\" height=\"16\"></iconify-icon>`;\n\t\tconst iconCheck = `<iconify-icon icon=\"ph:arrow-right\" width=\"16\" height=\"16\"></iconify-icon>`;\n\t\tconst iconArrowLeft = `<iconify-icon icon=\"ph:arrow-left\" width=\"16\" height=\"16\"></iconify-icon>`;\n\t\tconst backButton =\n\t\t\tisMultiPage && this.surveyState.currentPageIndex > 0\n\t\t\t\t? `<button class=\"feedback-survey-back\">${iconArrowLeft} Back</button>`\n\t\t\t\t: '';\n\n\t\tif (this.surveyOptions.position === 'center') {\n\t\t\tthis.backdropElement = document.createElement('div');\n\t\t\tthis.backdropElement.className = `feedback-survey-backdrop feedback-survey-backdrop-${this.surveyOptions.theme}`;\n\t\t\tdocument.body.appendChild(this.backdropElement);\n\t\t\tthis.backdropElement.addEventListener('click', () =>\n\t\t\t\tthis._handleDismiss()\n\t\t\t);\n\t\t}\n\n\t\tthis.surveyElement = document.createElement('div');\n\t\tthis.surveyElement.className = `feedback-survey feedback-survey-${this.surveyOptions.position} feedback-survey-theme-${this.surveyOptions.theme}${\n\t\t\tshowDescription && !showTitle\n\t\t\t\t? ' feedback-survey-description-primary'\n\t\t\t\t: ''\n\t\t}`;\n\n\t\tthis.surveyElement.innerHTML = `\n\t\t\t<button class=\"feedback-survey-close\"><iconify-icon icon=\"ph:x\" width=\"16\" height=\"16\"></iconify-icon></button>\n\t\t\t${showTitle ? `<h3 class=\"feedback-survey-title\">${config.title}</h3>` : ''}\n\t\t\t${showDescription ? `<p class=\"feedback-survey-description\">${config.description}</p>` : ''}\n\t\t\t${isMultiPage && this.surveyOptions.pages.length > 1 ? `<div class=\"feedback-survey-progress\"><div class=\"feedback-survey-progress-track\"><div class=\"feedback-survey-progress-fill\" style=\"width:${progressPercent}%\"></div></div></div>` : ''}\n\t\t\t<div class=\"feedback-survey-content\">${config.html}</div>\n\t\t\t${\n\t\t\t\tshowFeedbackInput\n\t\t\t\t\t? `<div class=\"feedback-survey-feedback\">\n\t\t\t\t<textarea class=\"feedback-survey-textarea\" placeholder=\"Any additional feedback? (optional)\">${this.surveyState.feedback || ''}</textarea>\n\t\t\t</div>`\n\t\t\t\t\t: ''\n\t\t\t}\n\t\t\t${\n\t\t\t\tshowActions\n\t\t\t\t\t? `<div class=\"feedback-survey-actions\">\n\t\t\t\t${backButton}\n\t\t\t\t<button class=\"feedback-survey-submit\">${submitLabel} ${isLastPage ? iconCheck : iconArrowRight}</button>\n\t\t\t</div>`\n\t\t\t\t\t: ''\n\t\t\t}\n\t\t`;\n\n\t\tdocument.body.appendChild(this.surveyElement);\n\t\tthis._attachSurveyEvents();\n\n\t\trequestAnimationFrame(() => {\n\t\t\tif (!this.surveyElement) return;\n\t\t\tthis.surveyElement.style.opacity = '1';\n\t\t\tthis.surveyElement.style.transform =\n\t\t\t\tthis.surveyOptions.position === 'center'\n\t\t\t\t\t? 'translate(-50%, -50%) scale(1)'\n\t\t\t\t\t: 'translateY(0)';\n\t\t});\n\t}\n\n\t_getSurveyConfig() {\n\t\tif (this._isMultiPageSurvey()) {\n\t\t\treturn this._getCurrentPageConfig();\n\t\t}\n\n\t\tconst npsScale = this._getNPSScale();\n\t\tconst npsUsesSegmentedScale = npsScale.values.length <= 7;\n\t\tconst npsContainerClass = npsUsesSegmentedScale\n\t\t\t? 'feedback-survey-ces feedback-survey-rating-scale'\n\t\t\t: 'feedback-survey-nps';\n\t\tconst npsButtonClass = npsUsesSegmentedScale\n\t\t\t? 'feedback-survey-nps-btn feedback-survey-ces-btn feedback-survey-rating-scale-btn'\n\t\t\t: 'feedback-survey-nps-btn';\n\t\tconst npsLowLabel =\n\t\t\tthis.surveyOptions.lowLabel ||\n\t\t\t(npsScale.start === 0 ? 'Not likely' : 'Strongly Disagree');\n\t\tconst npsHighLabel =\n\t\t\tthis.surveyOptions.highLabel ||\n\t\t\t(npsScale.start === 0 ? 'Very likely' : 'Strongly Agree');\n\t\tconst npsPrompt =\n\t\t\tthis.surveyOptions.description ||\n\t\t\tthis.surveyOptions.title ||\n\t\t\t'How likely are you to recommend us?';\n\t\tconst csatPrompt =\n\t\t\tthis.surveyOptions.description ||\n\t\t\tthis.surveyOptions.title ||\n\t\t\t'How satisfied are you?';\n\t\tconst cesPrompt =\n\t\t\tthis.surveyOptions.description ||\n\t\t\tthis.surveyOptions.title ||\n\t\t\t'How easy was it?';\n\n\t\tconst configs = {\n\t\t\tnps: {\n\t\t\t\ttitle: this.surveyOptions.title || '',\n\t\t\t\tdescription: npsPrompt,\n\t\t\t\thtml: `\n\t\t\t\t\t<div class=\"${npsContainerClass}\">\n\t\t\t\t\t\t${npsScale.values\n\t\t\t\t\t\t\t.map(\n\t\t\t\t\t\t\t\t(n) => `\n\t\t\t\t\t\t\t<button class=\"${npsButtonClass}\" data-score=\"${n}\">${n}</button>\n\t\t\t\t\t\t`\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t.join('')}\n\t\t\t\t\t</div>\n\t\t\t\t\t${this._renderScaleLabels(npsLowLabel, npsHighLabel)}\n\t\t\t\t`,\n\t\t\t},\n\t\t\tcsat: {\n\t\t\t\ttitle: this.surveyOptions.title || '',\n\t\t\t\tdescription: csatPrompt,\n\t\t\t\thtml: `\n\t\t\t\t\t<div class=\"feedback-survey-csat\">\n\t\t\t\t\t\t${[\n\t\t\t\t\t\t\t'\\uD83D\\uDE1E',\n\t\t\t\t\t\t\t'\\uD83D\\uDE15',\n\t\t\t\t\t\t\t'\\uD83D\\uDE10',\n\t\t\t\t\t\t\t'\\uD83D\\uDE42',\n\t\t\t\t\t\t\t'\\uD83D\\uDE04',\n\t\t\t\t\t\t]\n\t\t\t\t\t\t\t.map(\n\t\t\t\t\t\t\t\t(emoji, i) => `\n\t\t\t\t\t\t\t<button class=\"feedback-survey-csat-btn\" data-score=\"${i + 1}\">${emoji}</button>\n\t\t\t\t\t\t`\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t.join('')}\n\t\t\t\t\t</div>\n\t\t\t\t\t${this._renderScaleLabels(\n\t\t\t\t\t\tthis.surveyOptions.lowLabel || 'Very dissatisfied',\n\t\t\t\t\t\tthis.surveyOptions.highLabel || 'Very satisfied'\n\t\t\t\t\t)}\n\t\t\t\t`,\n\t\t\t},\n\t\t\tces: {\n\t\t\t\ttitle: this.surveyOptions.title || '',\n\t\t\t\tdescription: cesPrompt,\n\t\t\t\thtml: `\n\t\t\t\t\t<div class=\"feedback-survey-ces-list\">\n\t\t\t\t\t\t${['Very Difficult', 'Difficult', 'Neutral', 'Easy', 'Very Easy']\n\t\t\t\t\t\t\t.map(\n\t\t\t\t\t\t\t\t(label, i) => `\n\t\t\t\t\t\t\t<button class=\"feedback-survey-ces-btn feedback-survey-ces-list-btn\" data-score=\"${i + 1}\">${label}</button>\n\t\t\t\t\t\t`\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t.join('')}\n\t\t\t\t\t</div>\n\t\t\t\t`,\n\t\t\t},\n\t\t\tcustom: {\n\t\t\t\ttitle: this.surveyOptions.title || 'Quick Feedback',\n\t\t\t\tdescription:\n\t\t\t\t\tthis.surveyOptions.description ||\n\t\t\t\t\t'Help us improve by answering a few questions.',\n\t\t\t\thtml: this._renderCustomQuestions(),\n\t\t\t},\n\t\t};\n\n\t\treturn configs[this.surveyOptions.surveyType] || null;\n\t}\n\n\t_getNPSScale() {\n\t\tconst rawScale = Number(this.surveyOptions.ratingScale);\n\t\tconst scale = Number.isFinite(rawScale) && rawScale >= 2 ? rawScale : 5;\n\t\tconst start = scale === 11 ? 0 : 1;\n\t\treturn {\n\t\t\tscale,\n\t\t\tstart,\n\t\t\tvalues: Array.from({ length: scale }, (_, index) => start + index),\n\t\t};\n\t}\n\n\t_renderScaleLabels(lowLabel, highLabel) {\n\t\tconst low = lowLabel || '';\n\t\tconst high = highLabel || '';\n\t\tif (!low && !high) {\n\t\t\treturn '';\n\t\t}\n\t\treturn `\n\t\t\t<div class=\"feedback-survey-labels\">\n\t\t\t\t<span>${low}</span>\n\t\t\t\t<span>${high}</span>\n\t\t\t</div>\n\t\t`;\n\t}\n\n\t_isRatingSurveyType(type = this.surveyOptions.surveyType) {\n\t\treturn type === 'nps' || type === 'csat' || type === 'ces';\n\t}\n\n\t_shouldShowTitle(config) {\n\t\tif (!config || !config.title) {\n\t\t\treturn false;\n\t\t}\n\t\tif (typeof this.surveyOptions.showTitle === 'boolean') {\n\t\t\treturn this.surveyOptions.showTitle;\n\t\t}\n\t\tif (!this._isMultiPageSurvey() && this._isRatingSurveyType()) {\n\t\t\treturn !config.description;\n\t\t}\n\t\treturn true;\n\t}\n\n\t_shouldShowDescription(config) {\n\t\tif (typeof this.surveyOptions.showDescription === 'boolean') {\n\t\t\treturn this.surveyOptions.showDescription;\n\t\t}\n\t\tif (!this._isMultiPageSurvey() && this._isRatingSurveyType()) {\n\t\t\treturn Boolean(config && (config.description || config.title));\n\t\t}\n\t\treturn Boolean(config && config.description);\n\t}\n\n\t_shouldShowFeedbackInput() {\n\t\tif (this._isMultiPageSurvey()) {\n\t\t\treturn false;\n\t\t}\n\t\tif (typeof this.surveyOptions.showFeedbackInput === 'boolean') {\n\t\t\treturn this.surveyOptions.showFeedbackInput;\n\t\t}\n\t\treturn false;\n\t}\n\n\t_shouldAutoSubmitOnSelect() {\n\t\tif (typeof this.surveyOptions.autoSubmitOnSelect === 'boolean') {\n\t\t\treturn this.surveyOptions.autoSubmitOnSelect;\n\t\t}\n\t\tif (this._isMultiPageSurvey()) {\n\t\t\treturn false;\n\t\t}\n\t\tif (this.surveyOptions.showSubmitButton === true) {\n\t\t\treturn false;\n\t\t}\n\t\treturn this._isRatingSurveyType() && !this._shouldShowFeedbackInput();\n\t}\n\n\t_shouldShowActions() {\n\t\tif (this._isMultiPageSurvey()) {\n\t\t\treturn true;\n\t\t}\n\t\tif (typeof this.surveyOptions.showSubmitButton === 'boolean') {\n\t\t\treturn this.surveyOptions.showSubmitButton;\n\t\t}\n\t\treturn !this._shouldAutoSubmitOnSelect();\n\t}\n\n\t_isMultiPageSurvey() {\n\t\treturn (\n\t\t\tArray.isArray(this.surveyOptions.pages) &&\n\t\t\tthis.surveyOptions.pages.length > 0\n\t\t);\n\t}\n\n\t_getCurrentPage() {\n\t\tif (!this._isMultiPageSurvey()) return null;\n\t\treturn this.surveyOptions.pages[this.surveyState.currentPageIndex] || null;\n\t}\n\n\t_isLastPage() {\n\t\tif (!this._isMultiPageSurvey()) return true;\n\t\treturn (\n\t\t\tthis.surveyState.currentPageIndex >= this.surveyOptions.pages.length - 1\n\t\t);\n\t}\n\n\t_getCurrentPageConfig() {\n\t\tconst page = this._getCurrentPage();\n\t\tif (!page) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn {\n\t\t\ttitle: page.title || '',\n\t\t\tdescription: page.description || '',\n\t\t\thtml: this._renderSurveyPage(page),\n\t\t};\n\t}\n\n\t_renderSurveyPage(page) {\n\t\tswitch (page.type) {\n\t\t\tcase 'rating':\n\t\t\t\treturn this._renderRatingPage(page);\n\t\t\tcase 'multiple_choice':\n\t\t\t\treturn this._renderMultipleChoicePage(page);\n\t\t\tcase 'text':\n\t\t\t\treturn this._renderTextPage(page);\n\t\t\tdefault:\n\t\t\t\treturn '';\n\t\t}\n\t}\n\n\t_renderRatingPage(page) {\n\t\tconst pageId = page.id || `page_${this.surveyState.currentPageIndex}`;\n\t\tconst config = page.rating_config || page.ratingConfig || {};\n\t\tconst scale = Number(config.scale) || 5;\n\t\tconst ratingType = config.survey_type || 'number';\n\t\tconst pageAnswer = this.surveyState.pageAnswers[pageId] || {};\n\t\tconst currentRating = pageAnswer.rating;\n\n\t\tconst labelDefaults = {\n\t\t\tnps:\n\t\t\t\tscale === 11\n\t\t\t\t\t? ['Not likely', 'Very likely']\n\t\t\t\t\t: ['Strongly Disagree', 'Strongly Agree'],\n\t\t\temoji: ['Very dissatisfied', 'Very satisfied'],\n\t\t\tnumber: ['Poor', 'Excellent'],\n\t\t\tstar: ['Poor', 'Excellent'],\n\t\t};\n\t\tconst [defaultLow, defaultHigh] = labelDefaults[ratingType] || ['', ''];\n\t\tconst lowLabel = config.low_label || defaultLow;\n\t\tconst highLabel = config.high_label || defaultHigh;\n\t\tconst labels = this._renderScaleLabels(lowLabel, highLabel);\n\n\t\tif (ratingType === 'nps') {\n\t\t\tconst npsScale = Number.isFinite(scale) && scale >= 2 ? scale : 11;\n\t\t\tconst start = npsScale === 11 ? 0 : 1;\n\t\t\tconst values = Array.from({ length: npsScale }, (_, i) => start + i);\n\t\t\treturn `\n\t\t\t\t<div class=\"feedback-survey-nps\" data-page-id=\"${pageId}\">\n\t\t\t\t\t${values\n\t\t\t\t\t\t.map((n) => {\n\t\t\t\t\t\t\tconst selected = currentRating === n ? ' selected' : '';\n\t\t\t\t\t\t\treturn `<button class=\"feedback-survey-page-rating-btn feedback-survey-nps-btn feedback-survey-nps-score-${n}${selected}\" data-page-id=\"${pageId}\" data-score=\"${n}\">${n}</button>`;\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.join('')}\n\t\t\t\t</div>\n\t\t\t\t${labels}\n\t\t\t`;\n\t\t}\n\n\t\tif (ratingType === 'emoji') {\n\t\t\tconst emojis = [\n\t\t\t\t'\\uD83D\\uDE1E',\n\t\t\t\t'\\uD83D\\uDE15',\n\t\t\t\t'\\uD83D\\uDE10',\n\t\t\t\t'\\uD83D\\uDE42',\n\t\t\t\t'\\uD83D\\uDE04',\n\t\t\t];\n\t\t\tconst emojiScale =\n\t\t\t\tNumber.isFinite(scale) && scale >= 2 ? Math.min(scale, 5) : 5;\n\t\t\treturn `\n\t\t\t\t<div class=\"feedback-survey-csat\" data-page-id=\"${pageId}\">\n\t\t\t\t\t${emojis\n\t\t\t\t\t\t.slice(0, emojiScale)\n\t\t\t\t\t\t.map((emoji, i) => {\n\t\t\t\t\t\t\tconst score = i + 1;\n\t\t\t\t\t\t\tconst selected = currentRating === score ? ' selected' : '';\n\t\t\t\t\t\t\treturn `<button class=\"feedback-survey-page-rating-btn feedback-survey-csat-btn${selected}\" data-page-id=\"${pageId}\" data-score=\"${score}\">${emoji}</button>`;\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.join('')}\n\t\t\t\t</div>\n\t\t\t\t${labels}\n\t\t\t`;\n\t\t}\n\n\t\tif (ratingType === 'star') {\n\t\t\tconst starScale = Number.isFinite(scale) && scale >= 2 ? scale : 5;\n\t\t\treturn `\n\t\t\t\t<div class=\"feedback-survey-stars\" data-page-id=\"${pageId}\">\n\t\t\t\t\t${Array.from({ length: starScale }, (_, i) => {\n\t\t\t\t\t\tconst score = i + 1;\n\t\t\t\t\t\tconst filled =\n\t\t\t\t\t\t\ttypeof currentRating === 'number' && currentRating >= score\n\t\t\t\t\t\t\t\t? ' filled'\n\t\t\t\t\t\t\t\t: '';\n\t\t\t\t\t\treturn `<button class=\"feedback-survey-page-rating-btn feedback-survey-star-btn${filled}\" data-page-id=\"${pageId}\" data-score=\"${score}\"><iconify-icon icon=\"ph:star\" width=\"32\" height=\"32\" style=\"pointer-events:none;\"></iconify-icon></button>`;\n\t\t\t\t\t}).join('')}\n\t\t\t\t</div>\n\t\t\t\t${labels}\n\t\t\t`;\n\t\t}\n\n\t\tconst numScale = Number.isFinite(scale) && scale >= 2 ? scale : 5;\n\t\treturn `\n\t\t\t<div class=\"feedback-survey-rating-scale\" data-page-id=\"${pageId}\">\n\t\t\t\t${Array.from({ length: numScale }, (_, i) => {\n\t\t\t\t\tconst score = i + 1;\n\t\t\t\t\tconst selected = currentRating === score ? ' selected' : '';\n\t\t\t\t\treturn `<button class=\"feedback-survey-page-rating-btn feedback-survey-rating-scale-btn${selected}\" data-page-id=\"${pageId}\" data-score=\"${score}\">${score}</button>`;\n\t\t\t\t}).join('')}\n\t\t\t</div>\n\t\t\t${labels}\n\t\t`;\n\t}\n\n\t_renderMultipleChoicePage(page) {\n\t\tconst pageId = page.id || `page_${this.surveyState.currentPageIndex}`;\n\t\tconst config =\n\t\t\tpage.multipleChoiceConfig || page.multiple_choice_config || {};\n\t\tconst options = Array.isArray(config.options) ? config.options : [];\n\t\tconst allowMultiple =\n\t\t\tconfig.allow_multiple === true ||\n\t\t\tconfig.multiple === true ||\n\t\t\tconfig.allow_multiple_selection === true;\n\t\tconst pageAnswer = this.surveyState.pageAnswers[pageId] || {};\n\t\tconst selectedValues = Array.isArray(pageAnswer.values)\n\t\t\t? pageAnswer.values\n\t\t\t: pageAnswer.value\n\t\t\t\t? [pageAnswer.value]\n\t\t\t\t: [];\n\n\t\treturn `\n\t\t\t<div class=\"feedback-survey-multiple-choice\" data-page-id=\"${pageId}\" data-multiple=\"${allowMultiple}\">\n\t\t\t\t${options\n\t\t\t\t\t.map((option, index) => {\n\t\t\t\t\t\tconst value =\n\t\t\t\t\t\t\toption.value || option.id || option.key || `option_${index}`;\n\t\t\t\t\t\tconst label = option.label || option.text || String(value);\n\t\t\t\t\t\tconst selected = selectedValues.includes(value) ? ' selected' : '';\n\t\t\t\t\t\treturn `<button class=\"feedback-survey-page-choice-btn${selected}\" data-page-id=\"${pageId}\" data-value=\"${value}\">${label}</button>`;\n\t\t\t\t\t})\n\t\t\t\t\t.join('')}\n\t\t\t</div>\n\t\t`;\n\t}\n\n\t_renderTextPage(page) {\n\t\tconst pageId = page.id || `page_${this.surveyState.currentPageIndex}`;\n\t\tconst pageAnswer = this.surveyState.pageAnswers[pageId] || {};\n\t\tconst value = pageAnswer.text || '';\n\t\tconst placeholder = page.placeholder || 'Type your answer...';\n\n\t\treturn `\n\t\t\t<div class=\"feedback-survey-text-page\" data-page-id=\"${pageId}\">\n\t\t\t\t<textarea class=\"feedback-survey-page-textarea\" data-page-id=\"${pageId}\" placeholder=\"${placeholder}\">${value}</textarea>\n\t\t\t</div>\n\t\t`;\n\t}\n\n\t_renderCustomQuestions() {\n\t\tif (\n\t\t\t!this.surveyOptions.customQuestions ||\n\t\t\tthis.surveyOptions.customQuestions.length === 0\n\t\t) {\n\t\t\treturn `\n\t\t\t\t<div class=\"sdk-form-group\">\n\t\t\t\t\t<label class=\"sdk-label\">What feature do you use most?</label>\n\t\t\t\t\t<select class=\"feedback-survey-select\" data-question=\"feature\">\n\t\t\t\t\t\t<option value=\"\">Select a feature</option>\n\t\t\t\t\t\t<option value=\"feedback\">Feedback Collection</option>\n\t\t\t\t\t\t<option value=\"surveys\">Surveys</option>\n\t\t\t\t\t\t<option value=\"analytics\">Analytics</option>\n\t\t\t\t\t\t<option value=\"integrations\">Integrations</option>\n\t\t\t\t\t</select>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"sdk-form-group\">\n\t\t\t\t\t<label class=\"sdk-label\">How often do you use it?</label>\n\t\t\t\t\t<div class=\"feedback-survey-frequency\">\n\t\t\t\t\t\t${['Daily', 'Weekly', 'Monthly', 'Rarely']\n\t\t\t\t\t\t\t.map(\n\t\t\t\t\t\t\t\t(freq) => `\n\t\t\t\t\t\t\t<button class=\"feedback-survey-freq-btn\" data-freq=\"${freq}\">${freq}</button>\n\t\t\t\t\t\t`\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t.join('')}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t`;\n\t\t}\n\n\t\treturn this.surveyOptions.customQuestions\n\t\t\t.map(\n\t\t\t\t(q, index) => `\n\t\t\t<div class=\"sdk-form-group\">\n\t\t\t\t<label class=\"sdk-label\">${q.label}</label>\n\t\t\t\t${this._renderQuestionInput(q, index)}\n\t\t\t</div>\n\t\t`\n\t\t\t)\n\t\t\t.join('');\n\t}\n\n\t_renderQuestionInput(question, index) {\n\t\tswitch (question.type) {\n\t\t\tcase 'select':\n\t\t\t\treturn `\n\t\t\t\t\t<select class=\"feedback-survey-select\" data-question=\"${question.id || index}\">\n\t\t\t\t\t\t<option value=\"\">${question.placeholder || 'Select an option'}</option>\n\t\t\t\t\t\t${question.options.map((opt) => `<option value=\"${opt.value}\">${opt.label}</option>`).join('')}\n\t\t\t\t\t</select>\n\t\t\t\t`;\n\t\t\tcase 'text':\n\t\t\t\treturn `\n\t\t\t\t\t<input type=\"text\" class=\"feedback-survey-input\" data-question=\"${question.id || index}\" placeholder=\"${question.placeholder || ''}\">\n\t\t\t\t`;\n\t\t\tdefault:\n\t\t\t\treturn '';\n\t\t}\n\t}\n\n\t_attachSurveyEvents() {\n\t\tif (!this.surveyElement) return;\n\n\t\tconst closeBtn = this.surveyElement.querySelector('.feedback-survey-close');\n\t\tcloseBtn.addEventListener('click', () => this._handleDismiss());\n\n\t\tconst submitBtn = this.surveyElement.querySelector(\n\t\t\t'.feedback-survey-submit'\n\t\t);\n\t\tif (submitBtn) {\n\t\t\tsubmitBtn.addEventListener('click', () => this._handleSubmit());\n\t\t}\n\n\t\tconst backBtn = this.surveyElement.querySelector('.feedback-survey-back');\n\t\tif (backBtn) {\n\t\t\tbackBtn.addEventListener('click', () => this._handleBack());\n\t\t}\n\n\t\tconst textarea = this.surveyElement.querySelector(\n\t\t\t'.feedback-survey-textarea'\n\t\t);\n\t\tif (textarea) {\n\t\t\ttextarea.addEventListener('input', (e) => {\n\t\t\t\tthis.surveyState.feedback = e.target.value;\n\t\t\t});\n\t\t}\n\n\t\tthis._attachTypeSpecificEvents();\n\n\t\tthis._escapeHandler = (e) => {\n\t\t\tif (e.key === 'Escape') {\n\t\t\t\tthis._handleDismiss();\n\t\t\t}\n\t\t};\n\t\tdocument.addEventListener('keydown', this._escapeHandler);\n\t}\n\n\t_attachTypeSpecificEvents() {\n\t\tif (this._isMultiPageSurvey()) {\n\t\t\tthis._attachCurrentPageEvents();\n\t\t\treturn;\n\t\t}\n\n\t\tconst type = this.surveyOptions.surveyType;\n\n\t\tif (type === 'nps') {\n\t\t\tthis.surveyElement\n\t\t\t\t.querySelectorAll('.feedback-survey-nps-btn')\n\t\t\t\t.forEach((btn) => {\n\t\t\t\t\tbtn.addEventListener('click', () =>\n\t\t\t\t\t\tthis._selectNPS(parseInt(btn.dataset.score))\n\t\t\t\t\t);\n\t\t\t\t});\n\t\t}\n\n\t\tif (type === 'csat') {\n\t\t\tthis.surveyElement\n\t\t\t\t.querySelectorAll('.feedback-survey-csat-btn')\n\t\t\t\t.forEach((btn) => {\n\t\t\t\t\tbtn.addEventListener('click', () =>\n\t\t\t\t\t\tthis._selectCSAT(parseInt(btn.dataset.score))\n\t\t\t\t\t);\n\t\t\t\t});\n\t\t}\n\n\t\tif (type === 'ces') {\n\t\t\tthis.surveyElement\n\t\t\t\t.querySelectorAll('.feedback-survey-ces-btn')\n\t\t\t\t.forEach((btn) => {\n\t\t\t\t\tbtn.addEventListener('click', () =>\n\t\t\t\t\t\tthis._selectCES(parseInt(btn.dataset.score))\n\t\t\t\t\t);\n\t\t\t\t});\n\t\t}\n\n\t\tif (type === 'custom') {\n\t\t\tthis.surveyElement\n\t\t\t\t.querySelectorAll('.feedback-survey-freq-btn')\n\t\t\t\t.forEach((btn) => {\n\t\t\t\t\tbtn.addEventListener('click', () =>\n\t\t\t\t\t\tthis._selectFrequency(btn.dataset.freq)\n\t\t\t\t\t);\n\t\t\t\t});\n\n\t\t\tthis.surveyElement\n\t\t\t\t.querySelectorAll('.feedback-survey-select')\n\t\t\t\t.forEach((select) => {\n\t\t\t\t\tselect.addEventListener('change', (e) => {\n\t\t\t\t\t\tthis.surveyState.customAnswers[select.dataset.question] =\n\t\t\t\t\t\t\te.target.value;\n\t\t\t\t\t});\n\t\t\t\t});\n\n\t\t\tthis.surveyElement\n\t\t\t\t.querySelectorAll('.feedback-survey-input')\n\t\t\t\t.forEach((input) => {\n\t\t\t\t\tinput.addEventListener('input', (e) => {\n\t\t\t\t\t\tthis.surveyState.customAnswers[input.dataset.question] =\n\t\t\t\t\t\t\te.target.value;\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t}\n\t}\n\n\t_attachCurrentPageEvents() {\n\t\tconst page = this._getCurrentPage();\n\t\tif (!page || !this.surveyElement) return;\n\t\tconst pageId = page.id || `page_${this.surveyState.currentPageIndex}`;\n\n\t\tif (page.type === 'rating') {\n\t\t\tconst isStarRating = !!this.surveyElement.querySelector(\n\t\t\t\t'.feedback-survey-star-btn'\n\t\t\t);\n\n\t\t\tthis.surveyElement\n\t\t\t\t.querySelectorAll('.feedback-survey-page-rating-btn')\n\t\t\t\t.forEach((btn) => {\n\t\t\t\t\tbtn.addEventListener('click', () => {\n\t\t\t\t\t\tconst score = parseInt(btn.dataset.score);\n\t\t\t\t\t\tif (Number.isNaN(score)) return;\n\t\t\t\t\t\tthis._setPageAnswer(pageId, { rating: score });\n\n\t\t\t\t\t\tif (isStarRating) {\n\t\t\t\t\t\t\tthis.surveyElement\n\t\t\t\t\t\t\t\t.querySelectorAll('.feedback-survey-star-btn')\n\t\t\t\t\t\t\t\t.forEach((star) => {\n\t\t\t\t\t\t\t\t\tconst starScore = parseInt(star.dataset.score);\n\t\t\t\t\t\t\t\t\tstar.classList.toggle('filled', starScore <= score);\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthis.surveyElement\n\t\t\t\t\t\t\t\t.querySelectorAll('.feedback-survey-page-rating-btn')\n\t\t\t\t\t\t\t\t.forEach((item) => item.classList.remove('selected'));\n\t\t\t\t\t\t\tbtn.classList.add('selected');\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\tif (isStarRating) {\n\t\t\t\t\t\tbtn.addEventListener('mouseenter', () => {\n\t\t\t\t\t\t\tconst hoverScore = parseInt(btn.dataset.score);\n\t\t\t\t\t\t\tthis.surveyElement\n\t\t\t\t\t\t\t\t.querySelectorAll('.feedback-survey-star-btn')\n\t\t\t\t\t\t\t\t.forEach((star) => {\n\t\t\t\t\t\t\t\t\tconst starScore = parseInt(star.dataset.score);\n\t\t\t\t\t\t\t\t\tstar.classList.toggle('hovered', starScore <= hoverScore);\n\t\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});\n\n\t\t\tif (isStarRating) {\n\t\t\t\tconst container = this.surveyElement.querySelector(\n\t\t\t\t\t'.feedback-survey-stars'\n\t\t\t\t);\n\t\t\t\tif (container) {\n\t\t\t\t\tcontainer.addEventListener('mouseleave', () => {\n\t\t\t\t\t\tthis.surveyElement\n\t\t\t\t\t\t\t.querySelectorAll('.feedback-survey-star-btn')\n\t\t\t\t\t\t\t.forEach((star) => star.classList.remove('hovered'));\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (page.type === 'multiple_choice') {\n\t\t\tconst container = this.surveyElement.querySelector(\n\t\t\t\t'.feedback-survey-multiple-choice'\n\t\t\t);\n\t\t\tconst allowMultiple = container\n\t\t\t\t? container.dataset.multiple === 'true'\n\t\t\t\t: false;\n\n\t\t\tthis.surveyElement\n\t\t\t\t.querySelectorAll('.feedback-survey-page-choice-btn')\n\t\t\t\t.forEach((btn) => {\n\t\t\t\t\tbtn.addEventListener('click', () => {\n\t\t\t\t\t\tconst value = btn.dataset.value;\n\t\t\t\t\t\tif (!value) return;\n\n\t\t\t\t\t\tconst existing = this.surveyState.pageAnswers[pageId] || {};\n\t\t\t\t\t\tconst existingValues = Array.isArray(existing.values)\n\t\t\t\t\t\t\t? existing.values\n\t\t\t\t\t\t\t: existing.value\n\t\t\t\t\t\t\t\t? [existing.value]\n\t\t\t\t\t\t\t\t: [];\n\n\t\t\t\t\t\tlet nextValues = [];\n\t\t\t\t\t\tif (allowMultiple) {\n\t\t\t\t\t\t\tconst hasValue = existingValues.includes(value);\n\t\t\t\t\t\t\tnextValues = hasValue\n\t\t\t\t\t\t\t\t? existingValues.filter((v) => v !== value)\n\t\t\t\t\t\t\t\t: [...existingValues, value];\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tnextValues = [value];\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tthis._setPageAnswer(pageId, {\n\t\t\t\t\t\t\tvalue: nextValues[0] || null,\n\t\t\t\t\t\t\tvalues: nextValues,\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tif (!allowMultiple) {\n\t\t\t\t\t\t\tthis.surveyElement\n\t\t\t\t\t\t\t\t.querySelectorAll('.feedback-survey-page-choice-btn')\n\t\t\t\t\t\t\t\t.forEach((item) => item.classList.remove('selected'));\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbtn.classList.toggle('selected', nextValues.includes(value));\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t}\n\n\t\tif (page.type === 'text') {\n\t\t\tconst textarea = this.surveyElement.querySelector(\n\t\t\t\t'.feedback-survey-page-textarea'\n\t\t\t);\n\t\t\tif (textarea) {\n\t\t\t\ttextarea.addEventListener('input', (e) => {\n\t\t\t\t\tthis._setPageAnswer(pageId, { text: e.target.value });\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\n\t_selectNPS(score) {\n\t\tthis.surveyState.score = score;\n\t\tthis.surveyElement\n\t\t\t.querySelectorAll('.feedback-survey-nps-btn')\n\t\t\t.forEach((btn) => {\n\t\t\t\tconst btnScore = parseInt(btn.dataset.score);\n\t\t\t\tbtn.classList.toggle('selected', btnScore === score);\n\t\t\t});\n\t\tthis._maybeAutoSubmit();\n\t}\n\n\t_selectCSAT(score) {\n\t\tthis.surveyState.score = score;\n\t\tthis.surveyElement\n\t\t\t.querySelectorAll('.feedback-survey-csat-btn')\n\t\t\t.forEach((btn) => {\n\t\t\t\tconst btnScore = parseInt(btn.dataset.score);\n\t\t\t\tbtn.classList.toggle('selected', btnScore === score);\n\t\t\t});\n\t\tthis._maybeAutoSubmit();\n\t}\n\n\t_maybeAutoSubmit() {\n\t\tif (!this._shouldAutoSubmitOnSelect()) return;\n\t\tthis._handleSubmit();\n\t}\n\n\t_setSubmitLoading(loading) {\n\t\tconst btn = this.surveyElement?.querySelector('.feedback-survey-submit');\n\t\tif (!btn) return;\n\t\tbtn.disabled = loading;\n\t\tbtn.innerHTML = loading\n\t\t\t? `<iconify-icon icon=\"ph:circle-notch\" width=\"16\" height=\"16\" style=\"animation: spin 0.8s linear infinite;\"></iconify-icon> Submitting...`\n\t\t\t: `Submit <iconify-icon icon=\"ph:arrow-right\" width=\"16\" height=\"16\"></iconify-icon>`;\n\t}\n\n\tasync _handleSubmit() {\n\t\tconst type = this.surveyOptions.surveyType;\n\t\tif (this.surveyState.isSubmitting) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (this._isMultiPageSurvey()) {\n\t\t\tif (!this._validateCurrentPage()) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst nextPageIndex = this._getNextPageIndex();\n\t\t\tif (\n\t\t\t\tnextPageIndex !== -1 &&\n\t\t\t\tnextPageIndex !== this.surveyState.currentPageIndex\n\t\t\t) {\n\t\t\t\tthis.surveyState.currentPageIndex = nextPageIndex;\n\t\t\t\tthis._renderSurvey();\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tif (\n\t\t\t!this._isMultiPageSurvey() &&\n\t\t\t(type === 'nps' || type === 'csat' || type === 'ces') &&\n\t\t\tthis.surveyState.score === null\n\t\t) {\n\t\t\tthis._showError('Please select a rating');\n\t\t\treturn;\n\t\t}\n\n\t\tthis.surveyState.isSubmitting = true;\n\t\tthis._setSubmitLoading(true);\n\n\t\tconst respondent = this._getRespondentContext();\n\n\t\tconst responseData = {\n\t\t\tanswers: this._normalizePageAnswersForSubmit(),\n\t\t\t...(this.surveyState.feedback && { feedback: this.surveyState.feedback }),\n\t\t\t...(respondent.respondentId && { respondentId: respondent.respondentId }),\n\t\t\t...(respondent.email && { email: respondent.email }),\n\t\t};\n\n\t\tconst response = {\n\t\t\ttype: type,\n\t\t\tanswers: responseData.answers,\n\t\t\tfeedback: this.surveyState.feedback,\n\t\t\ttimestamp: new Date().toISOString(),\n\t\t};\n\n\t\ttry {\n\t\t\tconst surveyId =\n\t\t\t\tthis.surveyOptions.surveyId || `local_${type}_${Date.now()}`;\n\t\t\tawait this.apiService.submitSurveyResponse(surveyId, responseData);\n\n\t\t\tthis.sdk.eventBus.emit('survey:submitted', { widget: this, response });\n\t\t\tthis._showThankYouScreen(() => {\n\t\t\t\tif (this.surveyOptions.onSubmit) {\n\t\t\t\t\tthis.surveyOptions.onSubmit(response);\n\t\t\t\t}\n\t\t\t});\n\t\t} catch (error) {\n\t\t\tconsole.error('[SurveyWidget] Failed to submit survey:', error);\n\t\t\tthis._showError('Something went wrong. Please try again.');\n\t\t} finally {\n\t\t\tthis.surveyState.isSubmitting = false;\n\t\t\tthis._setSubmitLoading(false);\n\t\t}\n\t}\n\n\t_handleBack() {\n\t\tif (!this._isMultiPageSurvey()) return;\n\t\tif (this.surveyState.currentPageIndex <= 0) return;\n\t\tthis.surveyState.currentPageIndex -= 1;\n\t\tthis._renderSurvey();\n\t}\n\n\t_setPageAnswer(pageId, data) {\n\t\tif (!pageId) return;\n\t\tthis.surveyState.pageAnswers[pageId] = {\n\t\t\t...(this.surveyState.pageAnswers[pageId] || {}),\n\t\t\t...data,\n\t\t};\n\n\t\t// Emit question answered event\n\t\tconst page = this._getCurrentPage();\n\t\tthis.sdk.eventBus.emit('survey:questionAnswered', {\n\t\t\twidget: this,\n\t\t\tpageId,\n\t\t\tpageType: page?.type,\n\t\t\tanswer: this.surveyState.pageAnswers[pageId],\n\t\t});\n\t}\n\n\t_validateCurrentPage() {\n\t\tconst page = this._getCurrentPage();\n\t\tif (!page || page.required !== true) return true;\n\t\tconst pageId = page.id || `page_${this.surveyState.currentPageIndex}`;\n\t\tconst answer = this.surveyState.pageAnswers[pageId] || {};\n\n\t\tif (page.type === 'rating') {\n\t\t\tif (typeof answer.rating !== 'number') {\n\t\t\t\tthis._showError('Please select a rating');\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tif (page.type === 'multiple_choice') {\n\t\t\tconst hasAnswer =\n\t\t\t\tBoolean(answer.value) ||\n\t\t\t\t(Array.isArray(answer.values) && answer.values.length > 0);\n\t\t\tif (!hasAnswer) {\n\t\t\t\tthis._showError('Please select an option');\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tif (page.type === 'text') {\n\t\t\tif (!answer.text || !String(answer.text).trim()) {\n\t\t\t\tthis._showError('Please enter an answer');\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t}\n\n\t_getNextPageIndex() {\n\t\tif (!this._isMultiPageSurvey()) return -1;\n\n\t\tconst page = this._getCurrentPage();\n\t\tconst total = this.surveyOptions.pages.length;\n\t\tconst currentIndex = this.surveyState.currentPageIndex;\n\t\tconst fallbackNext = currentIndex + 1 < total ? currentIndex + 1 : -1;\n\t\tconst navigation = page ? page.after_this_page || page.afterThisPage : null;\n\t\tif (!navigation) return fallbackNext;\n\n\t\tconst conditions = Array.isArray(navigation.conditions)\n\t\t\t? navigation.conditions\n\t\t\t: [];\n\t\tconst pageId = page.id || `page_${currentIndex}`;\n\t\tconst answer = this.surveyState.pageAnswers[pageId] || {};\n\n\t\tfor (const condition of conditions) {\n\t\t\tif (this._evaluateCondition(condition, page, answer)) {\n\t\t\t\treturn this._resolvePageTarget(condition.go_to, total, fallbackNext);\n\t\t\t}\n\t\t}\n\n\t\treturn this._resolvePageTarget(navigation.default, total, fallbackNext);\n\t}\n\n\t_evaluateCondition(condition, page, answer) {\n\t\tconst { operator, values } = condition;\n\t\tif (!operator || !Array.isArray(values)) return false;\n\n\t\tlet answerValue = null;\n\t\tif (page.type === 'rating') {\n\t\t\tanswerValue = typeof answer.rating === 'number' ? answer.rating : null;\n\t\t} else if (page.type === 'multiple_choice') {\n\t\t\tanswerValue =\n\t\t\t\tanswer.value ||\n\t\t\t\t(Array.isArray(answer.values) ? answer.values[0] : null);\n\t\t} else if (page.type === 'text') {\n\t\t\tanswerValue = answer.text || null;\n\t\t}\n\n\t\tif (operator === 'is_empty')\n\t\t\treturn answerValue === null || answerValue === '';\n\t\tif (operator === 'not_empty')\n\t\t\treturn answerValue !== null && answerValue !== '';\n\t\tif (answerValue === null) return false;\n\n\t\tconst [v1, v2] = values;\n\t\tswitch (operator) {\n\t\t\tcase 'equals':\n\t\t\t\treturn String(answerValue) === String(v1);\n\t\t\tcase 'greater_than':\n\t\t\t\treturn Number(answerValue) > Number(v1);\n\t\t\tcase 'less_than':\n\t\t\t\treturn Number(answerValue) < Number(v1);\n\t\t\tcase 'between':\n\t\t\t\treturn (\n\t\t\t\t\tNumber(answerValue) >= Number(v1) && Number(answerValue) <= Number(v2)\n\t\t\t\t);\n\t\t\tcase 'contains':\n\t\t\t\treturn String(answerValue).includes(String(v1));\n\t\t\tdefault:\n\t\t\t\treturn false;\n\t\t}\n\t}\n\n\t_resolvePageTarget(target, total, fallback) {\n\t\tif (!target) return fallback;\n\t\tif (target === 'end_survey') return -1;\n\t\tif (target === 'next_page' || target === 'next') return fallback;\n\t\tif (typeof target === 'number')\n\t\t\treturn target >= 0 && target < total ? target : fallback;\n\t\tif (typeof target === 'string') {\n\t\t\tconst normalizedId = target.replace(/^page:/, '');\n\t\t\tconst idx = this.surveyOptions.pages.findIndex(\n\t\t\t\t(p) => p.id === normalizedId\n\t\t\t);\n\t\t\treturn idx >= 0 ? idx : fallback;\n\t\t}\n\t\treturn fallback;\n\t}\n\n\t_getSubmissionRating() {\n\t\tif (typeof this.surveyState.score === 'number') {\n\t\t\treturn this.surveyState.score;\n\t\t}\n\n\t\tif (!this._isMultiPageSurvey()) {\n\t\t\treturn null;\n\t\t}\n\n\t\tfor (const page of this.surveyOptions.pages) {\n\t\t\tconst pageId =\n\t\t\t\tpage.id || `page_${this.surveyOptions.pages.indexOf(page)}`;\n\t\t\tconst answer = this.surveyState.pageAnswers[pageId];\n\t\t\tif (answer && typeof answer.rating === 'number') {\n\t\t\t\treturn answer.rating;\n\t\t\t}\n\t\t}\n\n\t\treturn null;\n\t}\n\n\t_normalizePageAnswersForSubmit() {\n\t\t// Single-rating surveys (NPS / CSAT / CES / star / emoji) have no pages\n\t\tif (!this._isMultiPageSurvey()) {\n\t\t\tif (typeof this.surveyState.score === 'number') {\n\t\t\t\treturn [{ page_id: 'p1', value: this.surveyState.score }];\n\t\t\t}\n\t\t\treturn [];\n\t\t}\n\n\t\tconst output = [];\n\n\t\tfor (const page of this.surveyOptions.pages) {\n\t\t\tconst pageId =\n\t\t\t\tpage.id || `page_${this.surveyOptions.pages.indexOf(page)}`;\n\t\t\tconst answer = this.surveyState.pageAnswers[pageId];\n\t\t\tif (answer == null) continue;\n\n\t\t\tlet value = null;\n\n\t\t\tif (page.type === 'rating' && typeof answer.rating === 'number') {\n\t\t\t\tvalue = answer.rating;\n\t\t\t} else if (page.type === 'multiple_choice') {\n\t\t\t\tconst config =\n\t\t\t\t\tpage.multipleChoiceConfig || page.multiple_choice_config || {};\n\t\t\t\tconst allowMultiple =\n\t\t\t\t\tconfig.allow_multiple === true ||\n\t\t\t\t\tconfig.multiple === true ||\n\t\t\t\t\tconfig.allow_multiple_selection === true;\n\n\t\t\t\tif (\n\t\t\t\t\tallowMultiple &&\n\t\t\t\t\tArray.isArray(answer.values) &&\n\t\t\t\t\tanswer.values.length > 0\n\t\t\t\t) {\n\t\t\t\t\tvalue = answer.values;\n\t\t\t\t} else if (answer.value != null && answer.value !== '') {\n\t\t\t\t\tvalue = answer.value;\n\t\t\t\t}\n\t\t\t} else if (\n\t\t\t\tpage.type === 'text' &&\n\t\t\t\ttypeof answer.text === 'string' &&\n\t\t\t\tanswer.text.trim()\n\t\t\t) {\n\t\t\t\tvalue = answer.text.trim();\n\t\t\t} else if (page.type === 'link' && typeof answer.clicked === 'boolean') {\n\t\t\t\tvalue = answer.clicked;\n\t\t\t}\n\n\t\t\tif (value !== null) {\n\t\t\t\toutput.push({ page_id: pageId, value });\n\t\t\t}\n\t\t}\n\n\t\treturn output;\n\t}\n\n\t_getRespondentContext() {\n\t\tconst sdkMetadata =\n\t\t\ttypeof this.sdk.getMetadata === 'function'\n\t\t\t\t? this.sdk.getMetadata() || {}\n\t\t\t\t: {};\n\t\tconst apiMetadata =\n\t\t\tthis.apiService && typeof this.apiService.getMetadata === 'function'\n\t\t\t\t? this.apiService.getMetadata() || {}\n\t\t\t\t: {};\n\t\tconst localMetadata = this.options.metadata || {};\n\n\t\treturn {\n\t\t\trespondentId:\n\t\t\t\tthis.surveyOptions.respondentId ||\n\t\t\t\tlocalMetadata.user_id ||\n\t\t\t\tsdkMetadata.user_id ||\n\t\t\t\tapiMetadata.user_id ||\n\t\t\t\tnull,\n\t\t\temail:\n\t\t\t\tthis.surveyOptions.email ||\n\t\t\t\tlocalMetadata.email ||\n\t\t\t\tsdkMetadata.email ||\n\t\t\t\tapiMetadata.email ||\n\t\t\t\tnull,\n\t\t};\n\t}\n\n\tasync _handleDismiss() {\n\t\tif (this.surveyOptions.surveyId) {\n\t\t\ttry {\n\t\t\t\tawait this.apiService.dismissSurvey(this.surveyOptions.surveyId);\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('[SurveyWidget] Failed to dismiss survey:', error);\n\t\t\t}\n\t\t}\n\n\t\tif (this.surveyOptions.onDismiss) {\n\t\t\tthis.surveyOptions.onDismiss();\n\t\t}\n\t\tthis.sdk.eventBus.emit('survey:dismissed', { widget: this });\n\t\tthis._closeSurvey();\n\t}\n\n\t_showError(message) {\n\t\tconst existing = this.surveyElement.querySelector('.feedback-survey-error');\n\t\tif (existing) existing.remove();\n\n\t\tconst error = document.createElement('div');\n\t\terror.className = 'feedback-survey-error';\n\t\terror.innerHTML = `<iconify-icon icon=\"ph:warning\" width=\"15\" height=\"15\"></iconify-icon><span>${message}</span>`;\n\n\t\tthis.surveyElement.prepend(error);\n\n\t\tsetTimeout(() => error.remove(), 3000);\n\t}\n\n\t_showThankYouScreen(onAfterClose) {\n\t\tif (!this.surveyElement) return;\n\n\t\tconst pages = this.surveyOptions.pages || [];\n\t\tconst currentPage =\n\t\t\tpages[this.surveyState.currentPageIndex] ||\n\t\t\tpages[pages.length - 1] ||\n\t\t\tnull;\n\t\tconst pageConfig = currentPage?.thankYouConfig || null;\n\t\tconst surveyConfig = this.surveyOptions.thankYouConfig || null;\n\t\tconst config =\n\t\t\t(pageConfig?.title ? pageConfig : null) ||\n\t\t\t(surveyConfig?.title ? surveyConfig : null) ||\n\t\t\t{};\n\t\tconst title = config.title || 'Thanks for your feedback!';\n\t\tconst buttonText = config.button_text || null;\n\t\tconst rawUrl = config.button_url || '';\n\t\tconst buttonUrl = rawUrl\n\t\t\t? /^https?:\\/\\//i.test(rawUrl)\n\t\t\t\t? rawUrl\n\t\t\t\t: `https://${rawUrl}`\n\t\t\t: '#';\n\n\t\tif (this._escapeHandler) {\n\t\t\tdocument.removeEventListener('keydown', this._escapeHandler);\n\t\t\tthis._escapeHandler = null;\n\t\t}\n\n\t\tthis.surveyElement.innerHTML = `\n\t\t\t<button class=\"feedback-survey-close\"><iconify-icon icon=\"ph:x\" width=\"16\" height=\"16\"></iconify-icon></button>\n\t\t\t<div class=\"feedback-survey-thankyou\">\n\t\t\t\t<iconify-icon icon=\"ph:check-circle\" width=\"48\" height=\"48\" class=\"feedback-survey-thankyou-icon\"></iconify-icon>\n\t\t\t\t<h3 class=\"feedback-survey-thankyou-title\">${title}</h3>\n\t\t\t\t${\n\t\t\t\t\tbuttonText\n\t\t\t\t\t\t? `\n\t\t\t\t\t<a class=\"feedback-survey-thankyou-btn\" href=\"${buttonUrl}\" target=\"_blank\" rel=\"noopener noreferrer\">\n\t\t\t\t\t\t${buttonText}\n\t\t\t\t\t\t<iconify-icon icon=\"ph:arrow-square-out\" width=\"15\" height=\"15\" style=\"pointer-events:none;\"></iconify-icon>\n\t\t\t\t\t</a>`\n\t\t\t\t\t\t: ''\n\t\t\t\t}\n\t\t\t</div>\n\t\t`;\n\n\t\tconst closeBtn = this.surveyElement.querySelector('.feedback-survey-close');\n\t\tif (closeBtn) closeBtn.addEventListener('click', () => this._closeSurvey());\n\n\t\tsetTimeout(\n\t\t\t() => {\n\t\t\t\tif (this.surveyElement) this._closeSurvey();\n\t\t\t\tif (onAfterClose) onAfterClose();\n\t\t\t},\n\t\t\tbuttonText ? 6000 : 3500\n\t\t);\n\t}\n\n\t_closeSurvey(resetState = true, immediate = false) {\n\t\tthis.state.isOpen = false;\n\t\tif (this._escapeHandler) {\n\t\t\tdocument.removeEventListener('keydown', this._escapeHandler);\n\t\t\tthis._escapeHandler = null;\n\t\t}\n\n\t\tconst surveyEl = this.surveyElement;\n\t\tconst backdropEl = this.backdropElement;\n\n\t\tif (surveyEl) {\n\t\t\tsurveyEl.style.opacity = '0';\n\t\t\tconst pos = this.surveyOptions.position;\n\t\t\tsurveyEl.style.transform =\n\t\t\t\tpos === 'center'\n\t\t\t\t\t? 'translate(-50%, -50%) scale(0.95)'\n\t\t\t\t\t: pos === 'bottom'\n\t\t\t\t\t\t? 'translateY(100%)'\n\t\t\t\t\t\t: 'translateY(10px)';\n\t\t\tif (immediate) {\n\t\t\t\tif (surveyEl.parentNode) {\n\t\t\t\t\tsurveyEl.parentNode.removeChild(surveyEl);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tif (surveyEl && surveyEl.parentNode) {\n\t\t\t\t\t\tsurveyEl.parentNode.removeChild(surveyEl);\n\t\t\t\t\t}\n\t\t\t\t}, 300);\n\t\t\t}\n\t\t\tthis.surveyElement = null;\n\t\t}\n\n\t\tif (backdropEl) {\n\t\t\tbackdropEl.style.opacity = '0';\n\t\t\tif (immediate) {\n\t\t\t\tif (backdropEl.parentNode) {\n\t\t\t\t\tbackdropEl.parentNode.removeChild(backdropEl);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tif (backdropEl && backdropEl.parentNode) {\n\t\t\t\t\t\tbackdropEl.parentNode.removeChild(backdropEl);\n\t\t\t\t\t}\n\t\t\t\t}, 300);\n\t\t\t}\n\t\t\tthis.backdropElement = null;\n\t\t}\n\n\t\tif (resetState) {\n\t\t\tthis.surveyState = {\n\t\t\t\tscore: null,\n\t\t\t\tfeedback: '',\n\t\t\t\tcustomAnswers: {},\n\t\t\t\tpageAnswers: {},\n\t\t\t\tcurrentPageIndex: 0,\n\t\t\t\tisSubmitting: false,\n\t\t\t\tisVisible: false,\n\t\t\t};\n\t\t}\n\n\t\tthis.sdk.eventBus.emit('survey:closed', { widget: this });\n\t}\n\n\topen() {\n\t\treturn this.show();\n\t}\n\n\tclose() {\n\t\treturn this.hide();\n\t}\n\n\ttoggle() {\n\t\tif (this.surveyState.isVisible) {\n\t\t\treturn this.hide();\n\t\t}\n\n\t\treturn this.show();\n\t}\n\n\tdestroy() {\n\t\tthis._closeSurvey(true, true);\n\t\tsuper.destroy();\n\t}\n}\n","import { BaseWidget } from './BaseWidget.js';\n\nexport class TabWidget extends BaseWidget {\n\tconstructor(options) {\n\t\tsuper({ ...options, type: 'tab' });\n\t}\n\n\t_render() {\n\t\tconst tab = document.createElement('div');\n\t\ttab.className = `feedback-widget feedback-widget-tab position-${this.options.position}`;\n\t\ttab.innerHTML = `\n <div class=\"feedback-tab-trigger\">\n <span class=\"feedback-tab-text\">Feedback</span>\n </div>\n `;\n\n\t\tif (this.options.customStyles) {\n\t\t\tObject.assign(tab.style, this.options.customStyles);\n\t\t}\n\n\t\treturn tab;\n\t}\n\n\t_attachEvents() {\n\t\tconst tab = this.element.querySelector('.feedback-tab-trigger');\n\t\ttab.addEventListener('click', this.openModal);\n\t}\n\n\tupdateText(text) {\n\t\tconst textElement = this.element?.querySelector('.feedback-tab-text');\n\t\tif (textElement) {\n\t\t\ttextElement.textContent = text;\n\t\t}\n\t}\n\n\tupdatePosition(position) {\n\t\tthis.options.position = position;\n\t\tif (this.element) {\n\t\t\tthis.element.className = this.element.className.replace(\n\t\t\t\t/position-\\w+/,\n\t\t\t\t`position-${position}`\n\t\t\t);\n\t\t}\n\t}\n}\n","import { SDKError } from '../utils/errors.js';\nimport { ButtonWidget } from './ButtonWidget.js';\nimport { ChangelogWidget } from './ChangelogWidget.js';\nimport { InlineWidget } from './InlineWidget.js';\nimport { LiveChatWidget } from './LiveChatWidget.js';\nimport { SurveyWidget } from './SurveyWidget.js';\nimport { TabWidget } from './TabWidget.js';\n\nexport class WidgetFactory {\n\tstatic widgets = new Map([\n\t\t['button', ButtonWidget],\n\t\t['tab', TabWidget],\n\t\t['inline', InlineWidget],\n\t\t['survey', SurveyWidget],\n\t\t['liveChat', LiveChatWidget],\n\t\t['changelog', ChangelogWidget],\n\t]);\n\n\tstatic register(type, WidgetClass) {\n\t\tif (typeof type !== 'string' || !type.trim()) {\n\t\t\tthrow new SDKError('Widget type must be a non-empty string');\n\t\t}\n\n\t\tif (typeof WidgetClass !== 'function') {\n\t\t\tthrow new SDKError('Widget class must be a constructor function');\n\t\t}\n\n\t\tthis.widgets.set(type, WidgetClass);\n\t}\n\n\tstatic create(type, options = {}) {\n\t\tconst WidgetClass = this.widgets.get(type);\n\n\t\tif (!WidgetClass) {\n\t\t\tconst availableTypes = Array.from(this.widgets.keys()).join(', ');\n\t\t\tthrow new SDKError(\n\t\t\t\t`Unknown widget type: ${type}. Available types: ${availableTypes}`\n\t\t\t);\n\t\t}\n\n\t\ttry {\n\t\t\treturn new WidgetClass(options);\n\t\t} catch (error) {\n\t\t\tthrow new SDKError(\n\t\t\t\t`Failed to create widget of type '${type}': ${error.message}`,\n\t\t\t\terror\n\t\t\t);\n\t\t}\n\t}\n\n\tstatic getAvailableTypes() {\n\t\treturn Array.from(this.widgets.keys());\n\t}\n\n\tstatic isTypeRegistered(type) {\n\t\treturn this.widgets.has(type);\n\t}\n\n\tstatic unregister(type) {\n\t\treturn this.widgets.delete(type);\n\t}\n\n\tstatic clear() {\n\t\tthis.widgets.clear();\n\t}\n\n\tstatic getWidgetClass(type) {\n\t\treturn this.widgets.get(type);\n\t}\n}\n","import { CSS_STYLES } from '../styles/styles.js';\nimport { ConfigError, SDKError } from '../utils/errors.js';\nimport { deepMerge, generateId } from '../utils/helpers.js';\nimport { WidgetFactory } from '../widgets/WidgetFactory.js';\nimport { APIService } from './APIService.js';\nimport { EventBus } from './EventBus.js';\n\nexport class Product7 {\n\tconstructor(config = {}) {\n\t\tthis.config = this._validateAndMergeConfig(config);\n\t\tthis.initialized = false;\n\t\tthis.identified = false;\n\t\tthis.widgets = new Map();\n\t\tthis.eventBus = new EventBus();\n\n\t\tthis.apiService = new APIService({\n\t\t\tapiUrl: this.config.apiUrl,\n\t\t\tworkspace: this.config.workspace,\n\t\t\tsiteId: this.config.siteId,\n\t\t\tsessionToken: this.config.sessionToken,\n\t\t\tmetadata: this.config.metadata,\n\t\t\tmock: this.config.mock,\n\t\t\tdebug: this.config.debug,\n\t\t\tenv: this.config.env,\n\t\t});\n\n\t\tthis._bindMethods();\n\t}\n\n\t_injectStyles() {\n\t\tif (typeof document === 'undefined') return;\n\t\tif (document.querySelector('#product7-styles')) return;\n\n\t\tconst style = document.createElement('style');\n\t\tstyle.id = 'product7-styles';\n\t\tstyle.textContent = CSS_STYLES;\n\t\tdocument.head.appendChild(style);\n\n\t\tif (!document.querySelector('#product7-iconify')) {\n\t\t\tconst script = document.createElement('script');\n\t\t\tscript.id = 'product7-iconify';\n\t\t\tscript.src =\n\t\t\t\t'https://cdn.jsdelivr.net/npm/iconify-icon@2/dist/iconify-icon.min.js';\n\t\t\tscript.async = true;\n\t\t\tdocument.head.appendChild(script);\n\t\t}\n\t}\n\n\tasync init() {\n\t\tif (this.initialized) {\n\t\t\treturn { alreadyInitialized: true };\n\t\t}\n\n\t\tthis._injectStyles();\n\n\t\ttry {\n\t\t\tconst initData = await this.apiService.init();\n\n\t\t\tconst serverConfig = initData.config ? { ...initData.config } : {};\n\t\t\tif (initData.widgets) {\n\t\t\t\tconst widgets = { ...initData.widgets };\n\t\t\t\tif (widgets.web_chat && !widgets.liveChat) {\n\t\t\t\t\twidgets.liveChat = widgets.web_chat;\n\t\t\t\t\tdelete widgets.web_chat;\n\t\t\t\t}\n\t\t\t\tserverConfig.widgets = widgets;\n\t\t\t}\n\t\t\tif (Object.keys(serverConfig).length > 0) {\n\t\t\t\tthis.config = deepMerge(serverConfig, this.config);\n\t\t\t}\n\n\t\t\tthis.initialized = true;\n\t\t\tconst identifyResult = await this._syncConfiguredMetadataAfterInit();\n\t\t\tthis.eventBus.emit('sdk:initialized', {\n\t\t\t\tconfig: this.config,\n\t\t\t\tsessionToken: initData.sessionToken,\n\t\t\t});\n\n\t\t\treturn {\n\t\t\t\tinitialized: true,\n\t\t\t\tconfig: initData.config || {},\n\t\t\t\tsessionToken: initData.sessionToken,\n\t\t\t\texpiresIn: initData.expiresIn,\n\t\t\t\tidentified: Boolean(identifyResult?.identified),\n\t\t\t};\n\t\t} catch (error) {\n\t\t\tthis.eventBus.emit('sdk:error', { error });\n\t\t\tthrow new SDKError(`Failed to initialize SDK: ${error.message}`, error);\n\t\t}\n\t}\n\n\tcreateWidget(type = 'button', options = {}) {\n\t\tif (!this.initialized) {\n\t\t\tthrow new SDKError(\n\t\t\t\t'SDK must be initialized before creating widgets. Call init() first.'\n\t\t\t);\n\t\t}\n\n\t\tconst requestedType = type || 'button';\n\t\tconst normalizedType = this._normalizeWidgetType(requestedType);\n\t\tconst widgetId = generateId('widget');\n\t\tconst widgetConfig = this._getWidgetTypeConfig(normalizedType);\n\t\tconst explicitOptions = this._omitUndefined(\n\t\t\tthis._normalizeWidgetOptions(normalizedType, options)\n\t\t);\n\t\tconst widgetEnabled = this._isWidgetEnabled(normalizedType, {\n\t\t\t...widgetConfig,\n\t\t\t...explicitOptions,\n\t\t});\n\t\tconst widgetOptions = {\n\t\t\tid: widgetId,\n\t\t\tsdk: this,\n\t\t\tapiService: this.apiService,\n\t\t\t...this.config,\n\t\t\t...widgetConfig,\n\t\t\t...explicitOptions,\n\t\t\tenabled: widgetEnabled,\n\t\t};\n\n\t\ttry {\n\t\t\tconst widget = WidgetFactory.create(normalizedType, widgetOptions);\n\t\t\tthis.widgets.set(widgetId, widget);\n\t\t\tthis.eventBus.emit('widget:created', {\n\t\t\t\twidget,\n\t\t\t\ttype: requestedType,\n\t\t\t\tinternalType: normalizedType,\n\t\t\t});\n\t\t\treturn widget;\n\t\t} catch (error) {\n\t\t\tthrow new SDKError(`Failed to create widget: ${error.message}`, error);\n\t\t}\n\t}\n\n\tcreateFeedbackWidget(options = {}) {\n\t\treturn this.createWidget('feedback', options);\n\t}\n\n\tcreateLiveChatWidget(options = {}) {\n\t\treturn this.createWidget('liveChat', options);\n\t}\n\n\tcreateChangelogWidget(options = {}) {\n\t\treturn this.createWidget('changelog', options);\n\t}\n\n\tcreateSurveyWidget(options = {}) {\n\t\treturn this.createWidget('survey', options);\n\t}\n\n\tgetWidget(id) {\n\t\treturn this.widgets.get(id);\n\t}\n\n\tasync getActiveSurveys(context = {}) {\n\t\tif (!this.initialized) {\n\t\t\tthrow new SDKError(\n\t\t\t\t'SDK must be initialized before fetching surveys. Call init() first.'\n\t\t\t);\n\t\t}\n\n\t\ttry {\n\t\t\tconst result = await this.apiService.getActiveSurveys(context);\n\t\t\tconst surveys = (result.data || []).map((survey) =>\n\t\t\t\tthis._normalizeSurveyConfig(survey)\n\t\t\t);\n\t\t\tif (context.includeIneligible) {\n\t\t\t\treturn surveys;\n\t\t\t}\n\t\t\treturn surveys.filter((survey) => this._isSurveyEligible(survey));\n\t\t} catch (error) {\n\t\t\tthis.eventBus.emit('sdk:error', { error });\n\t\t\tthrow new SDKError(\n\t\t\t\t`Failed to fetch active surveys: ${error.message}`,\n\t\t\t\terror\n\t\t\t);\n\t\t}\n\t}\n\n\tasync showSurveyById(surveyId, options = {}) {\n\t\tif (!this.initialized) {\n\t\t\tthrow new SDKError(\n\t\t\t\t'SDK must be initialized before showing surveys. Call init() first.'\n\t\t\t);\n\t\t}\n\n\t\tconst { context = {}, ...displayOptions } = options;\n\t\tconst surveys = await this.getActiveSurveys({\n\t\t\t...context,\n\t\t\tincludeEligibility: true,\n\t\t\tincludeIneligible: true,\n\t\t});\n\t\tconst surveyConfig = surveys.find(\n\t\t\t(s) => s.surveyId === surveyId || s.id === surveyId\n\t\t);\n\n\t\tif (!surveyConfig) {\n\t\t\tthrow new SDKError(\n\t\t\t\t`Survey with ID '${surveyId}' not found or not active`\n\t\t\t);\n\t\t}\n\n\t\tif (!this._isSurveyEligible(surveyConfig)) {\n\t\t\tthis.eventBus.emit('survey:suppressed', {\n\t\t\t\tsurveyId,\n\t\t\t\treason: this._getSurveyIneligibilityReason(surveyConfig),\n\t\t\t\tsurvey: surveyConfig,\n\t\t\t});\n\t\t\treturn null;\n\t\t}\n\n\t\treturn this.showSurvey({\n\t\t\tsurveyId: surveyConfig.id,\n\t\t\tsurveyType: surveyConfig.surveyType || surveyConfig.type,\n\t\t\ttitle: surveyConfig.title,\n\t\t\tdescription: surveyConfig.description,\n\t\t\tlowLabel: surveyConfig.lowLabel || surveyConfig.low_label,\n\t\t\thighLabel: surveyConfig.highLabel || surveyConfig.high_label,\n\t\t\tratingScale: surveyConfig.ratingScale ?? surveyConfig.rating_scale,\n\t\t\tshowFeedbackInput:\n\t\t\t\tsurveyConfig.showFeedbackInput ?? surveyConfig.show_feedback_input,\n\t\t\tshowSubmitButton:\n\t\t\t\tsurveyConfig.showSubmitButton ?? surveyConfig.show_submit_button,\n\t\t\tautoSubmitOnSelect:\n\t\t\t\tsurveyConfig.autoSubmitOnSelect ?? surveyConfig.auto_submit_on_select,\n\t\t\tshowTitle: surveyConfig.showTitle ?? surveyConfig.show_title,\n\t\t\tshowDescription:\n\t\t\t\tsurveyConfig.showDescription ?? surveyConfig.show_description,\n\t\t\tcustomQuestions: surveyConfig.customQuestions || surveyConfig.questions,\n\t\t\tpages: surveyConfig.pages,\n\t\t\tthankYouConfig:\n\t\t\t\tsurveyConfig.thankYouConfig || surveyConfig.thank_you_config || null,\n\t\t\tenabled: surveyConfig.enabled,\n\t\t\t...displayOptions,\n\t\t});\n\t}\n\n\tshowSurvey(options = {}) {\n\t\tif (!this.initialized) {\n\t\t\tthrow new SDKError(\n\t\t\t\t'SDK must be initialized before showing surveys. Call init() first.'\n\t\t\t);\n\t\t}\n\n\t\tif (!this._isSurveyEligible(options)) {\n\t\t\tthis.eventBus.emit('survey:suppressed', {\n\t\t\t\tsurveyId: options.surveyId || options.id || null,\n\t\t\t\treason: this._getSurveyIneligibilityReason(options),\n\t\t\t\tsurvey: options,\n\t\t\t});\n\t\t\treturn null;\n\t\t}\n\n\t\tconst normalizedOptions = this._normalizeSurveyConfig(options);\n\t\tconst surveyConfigDefaults = this._getWidgetTypeConfig('survey');\n\t\tconst surveyEnabled = this._isWidgetEnabled('survey', normalizedOptions);\n\n\t\tif (!surveyEnabled) {\n\t\t\tthis.eventBus.emit('survey:suppressed', {\n\t\t\t\tsurveyId:\n\t\t\t\t\tnormalizedOptions.surveyId ||\n\t\t\t\t\tnormalizedOptions.id ||\n\t\t\t\t\toptions.id ||\n\t\t\t\t\tnull,\n\t\t\t\treason: 'disabled',\n\t\t\t\tsurvey: normalizedOptions,\n\t\t\t});\n\t\t\treturn null;\n\t\t}\n\n\t\tconst surveyWidget = this.createSurveyWidget({\n\t\t\tsurveyId: normalizedOptions.surveyId,\n\t\t\tsurveyType:\n\t\t\t\tnormalizedOptions.surveyType || normalizedOptions.type || 'nps',\n\t\t\tposition:\n\t\t\t\tnormalizedOptions.position ??\n\t\t\t\tsurveyConfigDefaults.position ??\n\t\t\t\tthis.config.position ??\n\t\t\t\t'right',\n\t\t\ttheme:\n\t\t\t\tnormalizedOptions.theme ??\n\t\t\t\tsurveyConfigDefaults.theme ??\n\t\t\t\tthis.config.theme ??\n\t\t\t\t'light',\n\t\t\ttitle: normalizedOptions.title,\n\t\t\tdescription: normalizedOptions.description,\n\t\t\tlowLabel: normalizedOptions.lowLabel,\n\t\t\thighLabel: normalizedOptions.highLabel,\n\t\t\tratingScale: normalizedOptions.ratingScale ?? normalizedOptions.scale,\n\t\t\tshowFeedbackInput: normalizedOptions.showFeedbackInput,\n\t\t\tshowSubmitButton: normalizedOptions.showSubmitButton,\n\t\t\tautoSubmitOnSelect: normalizedOptions.autoSubmitOnSelect,\n\t\t\tshowTitle: normalizedOptions.showTitle,\n\t\t\tshowDescription: normalizedOptions.showDescription,\n\t\t\tcustomQuestions: normalizedOptions.customQuestions,\n\t\t\tpages: normalizedOptions.pages,\n\t\t\tthankYouConfig: normalizedOptions.thankYouConfig,\n\t\t\trespondentId: normalizedOptions.respondentId,\n\t\t\temail: normalizedOptions.email,\n\t\t\tonSubmit: normalizedOptions.onSubmit,\n\t\t\tonDismiss: normalizedOptions.onDismiss,\n\t\t\tenabled: surveyEnabled,\n\t\t});\n\n\t\tsurveyWidget.mount();\n\t\tsurveyWidget.show();\n\n\t\treturn surveyWidget;\n\t}\n\n\t_isSurveyEligible(survey = {}) {\n\t\tconst shouldShow = this._getSurveyField(survey, [\n\t\t\t'shouldShow',\n\t\t\t'should_show',\n\t\t]);\n\t\tif (typeof shouldShow === 'boolean') {\n\t\t\treturn shouldShow;\n\t\t}\n\n\t\tconst eligibilityShouldShow = this._getSurveyField(\n\t\t\tsurvey.eligibility || {},\n\t\t\t['shouldShow', 'should_show']\n\t\t);\n\t\tif (typeof eligibilityShouldShow === 'boolean') {\n\t\t\treturn eligibilityShouldShow;\n\t\t}\n\n\t\tconst eligible = this._getSurveyField(survey, [\n\t\t\t'eligible',\n\t\t\t'isEligible',\n\t\t\t'is_eligible',\n\t\t]);\n\t\tif (typeof eligible === 'boolean') {\n\t\t\treturn eligible;\n\t\t}\n\n\t\tconst isAnswered = this._getSurveyField(survey, [\n\t\t\t'isAnswered',\n\t\t\t'is_answered',\n\t\t]);\n\t\tif (typeof isAnswered === 'boolean') {\n\t\t\treturn !isAnswered;\n\t\t}\n\n\t\tconst eligibilityAnswered = this._getSurveyField(survey.eligibility || {}, [\n\t\t\t'isAnswered',\n\t\t\t'is_answered',\n\t\t]);\n\t\tif (typeof eligibilityAnswered === 'boolean') {\n\t\t\treturn !eligibilityAnswered;\n\t\t}\n\n\t\treturn true;\n\t}\n\n\t_getSurveyIneligibilityReason(survey = {}) {\n\t\tconst explicitReason = this._getSurveyField(survey, [\n\t\t\t'reason',\n\t\t\t'suppressionReason',\n\t\t\t'suppression_reason',\n\t\t]);\n\t\tif (explicitReason) {\n\t\t\treturn explicitReason;\n\t\t}\n\n\t\tconst eligibilityReason = this._getSurveyField(survey.eligibility || {}, [\n\t\t\t'reason',\n\t\t\t'suppressionReason',\n\t\t\t'suppression_reason',\n\t\t]);\n\t\tif (eligibilityReason) {\n\t\t\treturn eligibilityReason;\n\t\t}\n\n\t\tconst isAnswered = this._getSurveyField(survey, [\n\t\t\t'isAnswered',\n\t\t\t'is_answered',\n\t\t]);\n\t\tif (isAnswered === true) {\n\t\t\treturn 'already_answered';\n\t\t}\n\n\t\treturn 'ineligible';\n\t}\n\n\t_normalizeSurveyConfig(survey = {}) {\n\t\tconst firstPage =\n\t\t\tArray.isArray(survey.pages) && survey.pages.length > 0\n\t\t\t\t? survey.pages[0]\n\t\t\t\t: null;\n\t\tconst ratingConfig = firstPage\n\t\t\t? firstPage.rating_config || firstPage.ratingConfig || {}\n\t\t\t: {};\n\n\t\tconst inferredType =\n\t\t\tsurvey.surveyType ||\n\t\t\tsurvey.survey_type ||\n\t\t\tsurvey.type ||\n\t\t\tthis._inferSurveyTypeFromPage(firstPage) ||\n\t\t\t'nps';\n\n\t\treturn {\n\t\t\t...survey,\n\t\t\tsurveyId: survey.surveyId || survey.survey_id || survey.id || null,\n\t\t\tsurveyType: survey.surveyType || survey.survey_type || inferredType,\n\t\t\ttype: survey.type || survey.survey_type || inferredType,\n\t\t\tenabled: typeof survey.enabled === 'boolean' ? survey.enabled : undefined,\n\t\t\tshould_show:\n\t\t\t\tsurvey.should_show ??\n\t\t\t\t(survey.eligibility ? survey.eligibility.should_show : undefined),\n\t\t\treason:\n\t\t\t\tsurvey.reason ||\n\t\t\t\t(survey.eligibility ? survey.eligibility.reason : undefined),\n\t\t\ttitle:\n\t\t\t\tsurvey.title || survey.name || (firstPage ? firstPage.title : null),\n\t\t\tdescription:\n\t\t\t\tsurvey.description || (firstPage ? firstPage.description : null),\n\t\t\tlowLabel:\n\t\t\t\tsurvey.lowLabel || survey.low_label || ratingConfig.low_label || null,\n\t\t\thighLabel:\n\t\t\t\tsurvey.highLabel ||\n\t\t\t\tsurvey.high_label ||\n\t\t\t\tratingConfig.high_label ||\n\t\t\t\tnull,\n\t\t\tratingScale:\n\t\t\t\tsurvey.ratingScale ?? survey.rating_scale ?? ratingConfig.scale ?? null,\n\t\t\tshowFeedbackInput:\n\t\t\t\tsurvey.showFeedbackInput ?? survey.show_feedback_input ?? null,\n\t\t\tshowSubmitButton:\n\t\t\t\tsurvey.showSubmitButton ?? survey.show_submit_button ?? null,\n\t\t\tautoSubmitOnSelect:\n\t\t\t\tsurvey.autoSubmitOnSelect ?? survey.auto_submit_on_select ?? null,\n\t\t\tshowTitle: survey.showTitle ?? survey.show_title ?? null,\n\t\t\tshowDescription:\n\t\t\t\tsurvey.showDescription ?? survey.show_description ?? null,\n\t\t\tcustomQuestions:\n\t\t\t\tsurvey.customQuestions ||\n\t\t\t\tsurvey.custom_questions ||\n\t\t\t\tsurvey.questions ||\n\t\t\t\t[],\n\t\t\tthankYouConfig: survey.thankYouConfig || survey.thank_you_config || null,\n\t\t\tpages: this._normalizeSurveyPages(survey.pages || []),\n\t\t};\n\t}\n\n\t_normalizeSurveyPages(pages = []) {\n\t\tif (!Array.isArray(pages)) {\n\t\t\treturn [];\n\t\t}\n\n\t\treturn pages\n\t\t\t.map((page, index) => ({\n\t\t\t\tid: page.id || `page_${index}`,\n\t\t\t\ttype: page.type || 'rating',\n\t\t\t\ttitle: page.title || '',\n\t\t\t\tdescription: page.description || '',\n\t\t\t\tplaceholder: page.placeholder || '',\n\t\t\t\trequired: page.required === true,\n\t\t\t\tposition: page.position ?? index,\n\t\t\t\tratingConfig: page.ratingConfig || page.rating_config || null,\n\t\t\t\tmultipleChoiceConfig:\n\t\t\t\t\tpage.multipleChoiceConfig || page.multiple_choice_config || null,\n\t\t\t\tlinkConfig: page.linkConfig || page.link_config || null,\n\t\t\t\tafterThisPage: page.afterThisPage || page.after_this_page || null,\n\t\t\t\tthankYouConfig: page.thankYouConfig || page.thank_you_config || null,\n\t\t\t}))\n\t\t\t.sort((a, b) => a.position - b.position);\n\t}\n\n\t_inferSurveyTypeFromPage(page) {\n\t\tif (!page) return null;\n\t\tconst ratingConfig = page.rating_config || page.ratingConfig || {};\n\t\tconst scale = ratingConfig.scale;\n\t\tconst surveyType = ratingConfig.survey_type;\n\t\tconst title = (page.title || '').toLowerCase();\n\n\t\tif (scale === 11 || surveyType === 'nps') {\n\t\t\treturn 'nps';\n\t\t}\n\n\t\tconst lowLabel = (ratingConfig.low_label || '').toLowerCase();\n\t\tif (\n\t\t\tsurveyType === 'ces' ||\n\t\t\ttitle.includes('effort') ||\n\t\t\ttitle.includes('easy') ||\n\t\t\tlowLabel.includes('difficult')\n\t\t) {\n\t\t\treturn 'ces';\n\t\t}\n\n\t\treturn 'csat';\n\t}\n\n\t_getSurveyField(survey, fields) {\n\t\tfor (const field of fields) {\n\t\t\tif (survey[field] !== undefined && survey[field] !== null) {\n\t\t\t\treturn survey[field];\n\t\t\t}\n\t\t}\n\t\treturn null;\n\t}\n\n\t_getWidgetTypeConfig(type) {\n\t\tconst widgetsConfig = this._isPlainObject(this.config?.widgets)\n\t\t\t? this.config.widgets\n\t\t\t: {};\n\n\t\tconst mergedTypeConfig = this._getWidgetTypeAliases(type).reduce(\n\t\t\t(config, alias) => {\n\t\t\t\tconst legacyTypeConfig = this._isPlainObject(this.config?.[alias])\n\t\t\t\t\t? this.config[alias]\n\t\t\t\t\t: {};\n\n\t\t\t\tconst namespacedTypeConfig = this._isPlainObject(widgetsConfig?.[alias])\n\t\t\t\t\t? widgetsConfig[alias]\n\t\t\t\t\t: {};\n\n\t\t\t\treturn deepMerge(\n\t\t\t\t\tconfig,\n\t\t\t\t\tdeepMerge(legacyTypeConfig, namespacedTypeConfig)\n\t\t\t\t);\n\t\t\t},\n\t\t\t{}\n\t\t);\n\t\treturn this._toCamelCaseObject(mergedTypeConfig);\n\t}\n\n\t_getWidgetTypeAliases(type) {\n\t\tif (type === 'button') {\n\t\t\treturn ['button', 'feedback'];\n\t\t}\n\n\t\treturn [type];\n\t}\n\n\t_isWidgetEnabled(type, options = {}) {\n\t\tconst typeConfig = this._getWidgetTypeConfig(type);\n\t\tif (typeConfig.enabled === false) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (typeof options.enabled === 'boolean') {\n\t\t\treturn options.enabled;\n\t\t}\n\n\t\tif (typeof typeConfig.enabled === 'boolean') {\n\t\t\treturn typeConfig.enabled;\n\t\t}\n\n\t\treturn true;\n\t}\n\n\t_isPlainObject(value) {\n\t\treturn Object.prototype.toString.call(value) === '[object Object]';\n\t}\n\n\t_toCamelCaseKey(key) {\n\t\treturn key.replace(/_([a-z])/g, (_, char) => char.toUpperCase());\n\t}\n\n\t_toCamelCaseObject(value) {\n\t\tif (Array.isArray(value)) {\n\t\t\treturn value.map((item) => this._toCamelCaseObject(item));\n\t\t}\n\n\t\tif (!this._isPlainObject(value)) {\n\t\t\treturn value;\n\t\t}\n\n\t\tconst normalized = {};\n\t\tfor (const [key, nestedValue] of Object.entries(value)) {\n\t\t\tnormalized[this._toCamelCaseKey(key)] =\n\t\t\t\tthis._toCamelCaseObject(nestedValue);\n\t\t}\n\t\treturn normalized;\n\t}\n\n\t_normalizeWidgetType(type) {\n\t\tif (type === 'feedback') {\n\t\t\treturn 'button';\n\t\t}\n\n\t\treturn type;\n\t}\n\n\t_normalizeWidgetOptions(type, options = {}) {\n\t\tif (!this._isPlainObject(options)) {\n\t\t\treturn options;\n\t\t}\n\n\t\tconst normalizedOptions = { ...options };\n\t\tif (\n\t\t\tnormalizedOptions.headless === true &&\n\t\t\tnormalizedOptions.trigger === undefined &&\n\t\t\ttype !== 'survey'\n\t\t) {\n\t\t\tnormalizedOptions.trigger = false;\n\t\t}\n\n\t\treturn normalizedOptions;\n\t}\n\n\t_omitUndefined(value) {\n\t\tif (!this._isPlainObject(value)) {\n\t\t\treturn value;\n\t\t}\n\n\t\treturn Object.fromEntries(\n\t\t\tObject.entries(value).filter(\n\t\t\t\t([, nestedValue]) => nestedValue !== undefined\n\t\t\t)\n\t\t);\n\t}\n\n\tshowChangelog(options = {}) {\n\t\tif (!this.initialized) {\n\t\t\tthrow new SDKError(\n\t\t\t\t'SDK must be initialized before showing changelog. Call init() first.'\n\t\t\t);\n\t\t}\n\n\t\tconst defaults = {\n\t\t\tposition: this.config.position || 'right',\n\t\t\ttheme: this.config.theme || 'light',\n\t\t\ttitle: \"What's New\",\n\t\t\ttriggerText: \"What's New\",\n\t\t\tshowBadge: true,\n\t\t\tviewButtonText: 'View Update',\n\t\t\tshowBackdrop: true,\n\t\t};\n\n\t\tconst configDefaults = this._getWidgetTypeConfig('changelog');\n\t\tconst explicitOptions = this._omitUndefined(options);\n\t\tconst changelogEnabled = this._isWidgetEnabled(\n\t\t\t'changelog',\n\t\t\texplicitOptions\n\t\t);\n\n\t\tif (!changelogEnabled) {\n\t\t\tthis.eventBus.emit('widget:suppressed', {\n\t\t\t\ttype: 'changelog',\n\t\t\t\treason: 'disabled',\n\t\t\t});\n\t\t\treturn null;\n\t\t}\n\n\t\tconst changelogWidget = this.createChangelogWidget({\n\t\t\t...defaults,\n\t\t\t...configDefaults,\n\t\t\t...explicitOptions,\n\t\t\tenabled: changelogEnabled,\n\t\t});\n\n\t\tchangelogWidget.mount();\n\t\tchangelogWidget.show();\n\n\t\treturn changelogWidget;\n\t}\n\n\tasync getChangelogs(options = {}) {\n\t\tif (!this.initialized) {\n\t\t\tthrow new SDKError(\n\t\t\t\t'SDK must be initialized before fetching changelogs. Call init() first.'\n\t\t\t);\n\t\t}\n\n\t\ttry {\n\t\t\tconst result = await this.apiService.getChangelogs(options);\n\t\t\treturn result.data || [];\n\t\t} catch (error) {\n\t\t\tthis.eventBus.emit('sdk:error', { error });\n\t\t\tthrow new SDKError(`Failed to fetch changelogs: ${error.message}`, error);\n\t\t}\n\t}\n\n\tgetAllWidgets() {\n\t\treturn Array.from(this.widgets.values());\n\t}\n\n\tdestroyWidget(id) {\n\t\tconst widget = this.widgets.get(id);\n\t\tif (widget) {\n\t\t\twidget.destroy();\n\t\t\tthis.widgets.delete(id);\n\t\t\tthis.eventBus.emit('widget:removed', { widgetId: id });\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\tdestroyAllWidgets() {\n\t\tfor (const widget of this.widgets.values()) {\n\t\t\twidget.destroy();\n\t\t}\n\t\tthis.widgets.clear();\n\t\tthis.eventBus.emit('widgets:cleared');\n\t}\n\n\tupdateConfig(newConfig) {\n\t\tconst oldConfig = { ...this.config };\n\t\tthis.config = this._validateAndMergeConfig(newConfig, this.config);\n\n\t\tfor (const widget of this.widgets.values()) {\n\t\t\twidget.handleConfigUpdate(this.config);\n\t\t}\n\n\t\tthis.eventBus.emit('config:updated', {\n\t\t\toldConfig,\n\t\t\tnewConfig: this.config,\n\t\t});\n\t}\n\n\tsetMetadata(metadata) {\n\t\tif (metadata) {\n\t\t\tthis._validateMetadata(metadata);\n\t\t}\n\n\t\tthis.config.metadata = metadata;\n\t\tif (this.apiService) {\n\t\t\tthis.apiService.setMetadata(metadata);\n\t\t}\n\t\tthis.identified = false;\n\t\tthis.eventBus.emit('metadata:updated', { metadata });\n\t}\n\n\tgetMetadata() {\n\t\treturn (\n\t\t\tthis.config.metadata ||\n\t\t\t(this.apiService ? this.apiService.getMetadata() : null)\n\t\t);\n\t}\n\n\tasync identify(metadata = this.config.metadata) {\n\t\tif (!this.initialized) {\n\t\t\tthrow new SDKError(\n\t\t\t\t'SDK must be initialized before identifying users. Call init() first.'\n\t\t\t);\n\t\t}\n\n\t\tif (!metadata) {\n\t\t\tthrow new SDKError(\n\t\t\t\t'Identify requires metadata. Provide at least user_id or email.'\n\t\t\t);\n\t\t}\n\n\t\tthis._validateMetadata(metadata);\n\t\tthis.setMetadata(metadata);\n\n\t\ttry {\n\t\t\tconst response = await this.apiService.identify(metadata);\n\t\t\tconst configPatch = this._extractIdentifyConfig(response);\n\t\t\tif (Object.keys(configPatch).length > 0) {\n\t\t\t\tthis.updateConfig(configPatch);\n\t\t\t}\n\n\t\t\tthis.identified = true;\n\t\t\tthis._applyIdentityToWidgets(metadata);\n\n\t\t\tconst result = {\n\t\t\t\tidentified: true,\n\t\t\t\tmetadata: this.getMetadata(),\n\t\t\t\tresponse,\n\t\t\t};\n\n\t\t\tthis.eventBus.emit('sdk:identified', result);\n\t\t\treturn result;\n\t\t} catch (error) {\n\t\t\tthis.identified = false;\n\t\t\tthis.eventBus.emit('sdk:error', { error, phase: 'identify' });\n\t\t\tthrow new SDKError(`Failed to identify user: ${error.message}`, error);\n\t\t}\n\t}\n\n\tasync reinitialize(newMetadata = null) {\n\t\tthis.apiService.clearSession();\n\t\tthis.initialized = false;\n\t\tthis.identified = false;\n\n\t\tif (newMetadata !== null) {\n\t\t\tthis.setMetadata(newMetadata);\n\t\t}\n\n\t\treturn this.init();\n\t}\n\n\ton(event, callback) {\n\t\tthis.eventBus.on(event, callback);\n\t\treturn this;\n\t}\n\n\toff(event, callback) {\n\t\tthis.eventBus.off(event, callback);\n\t\treturn this;\n\t}\n\n\tonce(event, callback) {\n\t\tthis.eventBus.once(event, callback);\n\t\treturn this;\n\t}\n\n\temit(event, data) {\n\t\tthis.eventBus.emit(event, data);\n\t\treturn this;\n\t}\n\n\tdestroy() {\n\t\tthis.destroyAllWidgets();\n\t\tthis.eventBus.emit('sdk:destroyed');\n\t\tthis.eventBus.clear();\n\t\tthis.apiService.clearSession();\n\t\tthis.initialized = false;\n\t\tthis.identified = false;\n\t}\n\n\thasFeedbackBeenSubmitted(cooldownDays = 30) {\n\t\tconst cooldownMs = cooldownDays * 24 * 60 * 60 * 1000;\n\t\tconst now = Date.now();\n\n\t\tif (this.config.last_feedback_at) {\n\t\t\ttry {\n\t\t\t\tconst backendTimestamp = new Date(\n\t\t\t\t\tthis.config.last_feedback_at\n\t\t\t\t).getTime();\n\t\t\t\tif (now - backendTimestamp < cooldownMs) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\t// Invalid date format, continue to localStorage check\n\t\t\t}\n\t\t}\n\n\t\ttry {\n\t\t\tconst storageKey = `feedback_submitted_${this.config.workspace}`;\n\t\t\tconst stored = localStorage.getItem(storageKey);\n\t\t\tif (!stored) return false;\n\n\t\t\tconst data = JSON.parse(stored);\n\t\t\treturn now - data.submittedAt < cooldownMs;\n\t\t} catch (e) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tclearFeedbackSubmissionTracking() {\n\t\ttry {\n\t\t\tconst storageKey = `feedback_submitted_${this.config.workspace}`;\n\t\t\tlocalStorage.removeItem(storageKey);\n\t\t\tthis.eventBus.emit('feedback:trackingCleared');\n\t\t} catch (e) {\n\t\t\tconsole.warn('Failed to clear feedback tracking:', e);\n\t\t}\n\t}\n\n\t_detectEnvironment() {\n\t\tif (typeof window === 'undefined') {\n\t\t\treturn 'production';\n\t\t}\n\n\t\tconst hostname = window.location.hostname.toLowerCase();\n\t\tconst port = window.location.port;\n\n\t\tif (hostname.includes('staging')) {\n\t\t\treturn 'staging';\n\t\t}\n\n\t\tif (hostname === 'app.localhost' && port === '3005') {\n\t\t\treturn 'localstack';\n\t\t}\n\n\t\treturn 'production';\n\t}\n\n\t_validateAndMergeConfig(newConfig, existingConfig = {}) {\n\t\tconst defaultConfig = {\n\t\t\tapiUrl: null,\n\t\t\tworkspace: null,\n\t\t\tmetadata: null,\n\t\t\tposition: 'right',\n\t\t\ttheme: 'light',\n\t\t\tboardName: 'feature-requests',\n\t\t\tautoShow: true,\n\t\t\tdebug: false,\n\t\t\tmock: false,\n\t\t\tenv: this._detectEnvironment(),\n\t\t};\n\n\t\tconst mergedConfig = deepMerge(\n\t\t\tdeepMerge(defaultConfig, existingConfig),\n\t\t\tnewConfig\n\t\t);\n\n\t\tif (!newConfig.env && !existingConfig.env) {\n\t\t\tmergedConfig.env = this._detectEnvironment();\n\t\t}\n\n\t\tif (!mergedConfig.workspace) {\n\t\t\tthrow new ConfigError('Missing required configuration: workspace');\n\t\t}\n\n\t\tif (mergedConfig.metadata) {\n\t\t\tthis._validateMetadata(mergedConfig.metadata);\n\t\t}\n\n\t\treturn mergedConfig;\n\t}\n\n\t_validateMetadata(metadata) {\n\t\tif (!metadata.user_id && !metadata.email) {\n\t\t\tthrow new ConfigError('Metadata must include at least user_id or email');\n\t\t}\n\n\t\tconst validStructure = {\n\t\t\tuser_id: 'string',\n\t\t\temail: 'string',\n\t\t\tname: 'string',\n\t\t\tcustom_fields: 'object',\n\t\t\tcompany: 'object',\n\t\t};\n\n\t\tfor (const [key, expectedType] of Object.entries(validStructure)) {\n\t\t\tif (metadata[key] && typeof metadata[key] !== expectedType) {\n\t\t\t\tthrow new ConfigError(\n\t\t\t\t\t`Metadata field '${key}' must be of type '${expectedType}'`\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\t_bindMethods() {\n\t\tthis.createWidget = this.createWidget.bind(this);\n\t\tthis.createFeedbackWidget = this.createFeedbackWidget.bind(this);\n\t\tthis.createLiveChatWidget = this.createLiveChatWidget.bind(this);\n\t\tthis.createChangelogWidget = this.createChangelogWidget.bind(this);\n\t\tthis.createSurveyWidget = this.createSurveyWidget.bind(this);\n\t\tthis.destroyWidget = this.destroyWidget.bind(this);\n\t\tthis.identify = this.identify.bind(this);\n\t\tthis.updateConfig = this.updateConfig.bind(this);\n\t}\n\n\tstatic create(config) {\n\t\treturn new Product7(config);\n\t}\n\n\tstatic async createAndInit(config) {\n\t\tconst sdk = new Product7(config);\n\t\tawait sdk.init();\n\t\treturn sdk;\n\t}\n\n\tstatic extractMetadataFromAuth(authData) {\n\t\tif (!authData) return null;\n\n\t\treturn {\n\t\t\tuser_id: authData.sub || authData.id || authData.user_id,\n\t\t\temail: authData.email,\n\t\t\tname: authData.name || authData.display_name || authData.full_name,\n\t\t\tcustom_fields: {\n\t\t\t\trole: authData.role,\n\t\t\t\tplan: authData.plan || authData.subscription?.plan,\n\t\t\t\t...(authData.custom_fields || {}),\n\t\t\t},\n\t\t\tcompany:\n\t\t\t\tauthData.company || authData.organization\n\t\t\t\t\t? {\n\t\t\t\t\t\t\tid: authData.company?.id || authData.organization?.id,\n\t\t\t\t\t\t\tname: authData.company?.name || authData.organization?.name,\n\t\t\t\t\t\t\tmonthly_spend: authData.company?.monthly_spend,\n\t\t\t\t\t\t}\n\t\t\t\t\t: undefined,\n\t\t};\n\t}\n\n\tasync _syncConfiguredMetadataAfterInit() {\n\t\tif (\n\t\t\t!this.config.metadata ||\n\t\t\tthis.apiService.identitySyncedToken === this.apiService.sessionToken\n\t\t) {\n\t\t\treturn null;\n\t\t}\n\n\t\ttry {\n\t\t\treturn await this.identify(this.config.metadata);\n\t\t} catch (error) {\n\t\t\tif (this.config.debug) {\n\t\t\t\tconsole.warn('[Product7] Initial identify failed:', error);\n\t\t\t}\n\t\t\treturn null;\n\t\t}\n\t}\n\n\t_extractIdentifyConfig(response) {\n\t\tconst payload = this._isPlainObject(response?.data)\n\t\t\t? response.data\n\t\t\t: response || {};\n\t\tconst configPatch = this._isPlainObject(payload.config)\n\t\t\t? payload.config\n\t\t\t: {};\n\n\t\tif (payload.last_feedback_at !== undefined) {\n\t\t\tconfigPatch.last_feedback_at = payload.last_feedback_at;\n\t\t} else if (payload.lastFeedbackAt !== undefined) {\n\t\t\tconfigPatch.last_feedback_at = payload.lastFeedbackAt;\n\t\t}\n\n\t\treturn this._omitUndefined(configPatch);\n\t}\n\n\t_applyIdentityToWidgets(metadata) {\n\t\tfor (const widget of this.widgets.values()) {\n\t\t\tif (typeof widget.applyIdentity === 'function') {\n\t\t\t\twidget.applyIdentity(metadata);\n\t\t\t}\n\t\t}\n\t}\n}\n","import { APIService } from './core/APIService.js';\nimport { EventBus } from './core/EventBus.js';\nimport { Product7 as Product7SDK } from './core/Product7.js';\nimport {\n\tAPIError,\n\tConfigError,\n\tSDKError,\n\tValidationError,\n\tWidgetError,\n} from './utils/errors.js';\nimport * as helpers from './utils/helpers.js';\nimport { BaseWidget } from './widgets/BaseWidget.js';\nimport { ButtonWidget } from './widgets/ButtonWidget.js';\nimport { ChangelogWidget } from './widgets/ChangelogWidget.js';\nimport { InlineWidget } from './widgets/InlineWidget.js';\nimport { LiveChatWidget } from './widgets/LiveChatWidget.js';\nimport { SurveyWidget } from './widgets/SurveyWidget.js';\nimport { TabWidget } from './widgets/TabWidget.js';\nimport { WidgetFactory } from './widgets/WidgetFactory.js';\n\n// --- Identify: transform flat user data into internal format ---\n\nfunction transformIdentifyData(data) {\n\tconst {\n\t\torganization,\n\t\temail,\n\t\tname,\n\t\tuserId,\n\t\tprofilePicture,\n\t\tlocale,\n\t\tcompanies,\n\t\t...customAttrs\n\t} = data;\n\n\tconst metadata = {\n\t\tuser_id: userId,\n\t\temail,\n\t\tname,\n\t\tprofile_picture: profilePicture,\n\t};\n\n\t// Flat custom attributes → custom_fields\n\tconst knownKeys = [\n\t\t'organization',\n\t\t'email',\n\t\t'name',\n\t\t'userId',\n\t\t'profilePicture',\n\t\t'locale',\n\t\t'companies',\n\t\t'debug',\n\t\t'mock',\n\t\t'env',\n\t\t'apiUrl',\n\t];\n\tconst customFields = {};\n\tfor (const [key, value] of Object.entries(customAttrs)) {\n\t\tif (!knownKeys.includes(key)) {\n\t\t\tcustomFields[key] = value;\n\t\t}\n\t}\n\tif (Object.keys(customFields).length > 0) {\n\t\tmetadata.custom_fields = customFields;\n\t}\n\n\t// Companies array → company (use first for now, backend supports single)\n\tif (Array.isArray(companies) && companies.length > 0) {\n\t\tconst c = companies[0];\n\t\tmetadata.company = {\n\t\t\tid: c.id,\n\t\t\tname: c.name,\n\t\t\tmonthly_spend: c.monthlySpend,\n\t\t\tcustom_fields: {},\n\t\t};\n\t\tconst companyKnownKeys = ['id', 'name', 'monthlySpend', 'createdAt'];\n\t\tfor (const [key, value] of Object.entries(c)) {\n\t\t\tif (!companyKnownKeys.includes(key)) {\n\t\t\t\tmetadata.company.custom_fields[key] = value;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn {\n\t\tworkspace: organization,\n\t\tmetadata,\n\t\tlocale,\n\t\tdebug: data.debug,\n\t\tmock: data.mock,\n\t\tenv: data.env,\n\t\tapiUrl: data.apiUrl,\n\t};\n}\n\nfunction cleanUndefined(obj) {\n\tObject.keys(obj).forEach((key) => {\n\t\tif (obj[key] === undefined) delete obj[key];\n\t});\n\treturn obj;\n}\n\nfunction hasIdentifyMetadata(metadata = {}) {\n\treturn Object.values(metadata).some((value) => value !== undefined);\n}\n\n// --- Ensure SDK is initialized (shared by widget inits) ---\n\nasync function ensureSDK(options) {\n\tif (\n\t\tProduct7._sdk &&\n\t\toptions.organization &&\n\t\tProduct7._sdk.config.workspace !== options.organization\n\t) {\n\t\tProduct7.destroy();\n\t}\n\n\tif (Product7._sdk) return Product7._sdk;\n\n\tif (options.organization) {\n\t\tconst config = cleanUndefined({\n\t\t\tworkspace: options.organization,\n\t\t\tdebug: options.debug,\n\t\t\tmock: options.mock,\n\t\t\tenv: options.env,\n\t\t\tapiUrl: options.apiUrl,\n\t\t});\n\n\t\tconst sdk = new Product7SDK(config);\n\t\tawait sdk.init();\n\t\tProduct7._sdk = sdk;\n\t\tProduct7._organization = options.organization;\n\t\treturn sdk;\n\t}\n\n\treturn null;\n}\n\n// --- Public API ---\n\nconst Product7 = {\n\t// Internal state\n\t_sdk: null,\n\t_identified: false,\n\t_organization: null,\n\t_q: [],\n\t_feedbackWidget: null,\n\t_LiveChatWidget: null,\n\t_surveyWidget: null,\n\n\tversion: '1.0.0',\n\n\t// ==================\n\t// Identify\n\t// ==================\n\n\tasync identify(data = {}, callback) {\n\t\ttry {\n\t\t\tconst transformed = transformIdentifyData(data);\n\t\t\tProduct7._organization =\n\t\t\t\ttransformed.workspace || Product7._organization || null;\n\n\t\t\tconst config = cleanUndefined({\n\t\t\t\tworkspace: Product7._organization,\n\t\t\t\tdebug: transformed.debug,\n\t\t\t\tmock: transformed.mock,\n\t\t\t\tenv: transformed.env,\n\t\t\t\tapiUrl: transformed.apiUrl,\n\t\t\t});\n\n\t\t\tlet sdk = Product7._sdk;\n\t\t\tconst requiresNewSDK =\n\t\t\t\t!sdk || (config.workspace && sdk.config.workspace !== config.workspace);\n\n\t\t\tif (requiresNewSDK) {\n\t\t\t\tif (Product7._sdk) {\n\t\t\t\t\tProduct7.destroy();\n\t\t\t\t\tProduct7._organization = config.workspace || null;\n\t\t\t\t}\n\t\t\t\tsdk = new Product7SDK(config);\n\t\t\t\tProduct7._sdk = sdk;\n\t\t\t}\n\n\t\t\tconst initData = sdk.initialized\n\t\t\t\t? {\n\t\t\t\t\t\talreadyInitialized: true,\n\t\t\t\t\t\tsessionToken: sdk.apiService?.sessionToken,\n\t\t\t\t\t}\n\t\t\t\t: await sdk.init();\n\n\t\t\tconst identifyData = hasIdentifyMetadata(transformed.metadata)\n\t\t\t\t? await sdk.identify(transformed.metadata)\n\t\t\t\t: null;\n\t\t\tProduct7._identified = Boolean(identifyData?.identified);\n\n\t\t\tProduct7._flushQueue();\n\n\t\t\tif (typeof window !== 'undefined' && typeof CustomEvent !== 'undefined') {\n\t\t\t\twindow.dispatchEvent(\n\t\t\t\t\tnew CustomEvent('Product7Ready', {\n\t\t\t\t\t\tdetail: { sdk, config: sdk.config, initData, identifyData },\n\t\t\t\t\t})\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif (typeof callback === 'function') callback(null);\n\t\t\treturn {\n\t\t\t\t...initData,\n\t\t\t\tidentified: Product7._identified,\n\t\t\t\tidentify: identifyData,\n\t\t\t};\n\t\t} catch (error) {\n\t\t\tconsole.error('[Product7] Identify failed:', error);\n\n\t\t\tif (typeof window !== 'undefined' && typeof CustomEvent !== 'undefined') {\n\t\t\t\twindow.dispatchEvent(\n\t\t\t\t\tnew CustomEvent('Product7Error', {\n\t\t\t\t\t\tdetail: { error, phase: 'identify' },\n\t\t\t\t\t})\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif (typeof callback === 'function') callback(error);\n\t\t\tthrow error;\n\t\t}\n\t},\n\n\t// ==================\n\t// Feedback\n\t// ==================\n\n\tasync feedback(options = {}, callback) {\n\t\tconst sdk = await ensureSDK(options);\n\t\tif (!sdk) {\n\t\t\tProduct7._q.push(['feedback', options, callback]);\n\t\t\treturn null;\n\t\t}\n\n\t\tconst widgetOptions = cleanUndefined({\n\t\t\tdisplayMode: options.displayMode || 'panel',\n\t\t\ttheme: options.theme || sdk.config.theme || 'light',\n\t\t\tsize: options.size || 'medium',\n\t\t\tprimaryColor: options.primaryColor,\n\t\t\tbackgroundColor: options.backgroundColor,\n\t\t\ttextColor: options.textColor,\n\t\t\tsuppressAfterSubmission: options.suppressAfterSubmission,\n\t\t\tsuppressionDays: options.suppressionDays,\n\t\t\tshowBackdrop: options.showBackdrop !== false,\n\t\t\tmetadata: options.metadata,\n\t\t});\n\n\t\t// placement → position\n\t\tif (options.placement === 'right') {\n\t\t\twidgetOptions.position = 'right';\n\t\t} else if (options.placement === 'left') {\n\t\t\twidgetOptions.position = 'left';\n\t\t} else if (options.placement) {\n\t\t\twidgetOptions.position = options.placement;\n\t\t}\n\n\t\t// defaultBoard → boardName\n\t\tif (options.defaultBoard) {\n\t\t\twidgetOptions.boardName = options.defaultBoard;\n\t\t}\n\n\t\t// No placement = modal mode, no floating button\n\t\tif (!options.placement) {\n\t\t\twidgetOptions.autoShow = false;\n\t\t\twidgetOptions.displayMode = 'modal';\n\t\t\twidgetOptions.headless = true;\n\t\t} else {\n\t\t\t// Trigger button is always visible when placement is set\n\t\t\twidgetOptions.suppressAfterSubmission = false;\n\t\t\twidgetOptions.enabled = true;\n\t\t}\n\n\t\ttry {\n\t\t\tconst widget = sdk.createFeedbackWidget(widgetOptions);\n\t\t\twidget.mount();\n\n\t\t\tif (options.placement) {\n\t\t\t\twidget.show();\n\t\t\t} else {\n\t\t\t\twidget.hide();\n\t\t\t}\n\n\t\t\tProduct7._feedbackWidget = widget;\n\n\t\t\tif (typeof callback === 'function') {\n\t\t\t\tcallback({ action: 'widgetReady' });\n\n\t\t\t\tsdk.eventBus.on('feedback:submitted', (data) => {\n\t\t\t\t\tcallback({ action: 'feedbackSubmitted', post: data.feedback });\n\t\t\t\t});\n\n\t\t\t\tsdk.eventBus.on('feedback:error', (data) => {\n\t\t\t\t\tcallback({ action: 'feedbackError', error: data.error });\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tProduct7._setupAttributeTriggers();\n\t\t\tProduct7._setupPostMessageListener();\n\n\t\t\treturn widget;\n\t\t} catch (error) {\n\t\t\tconsole.error('[Product7] Failed to initialize feedback widget:', error);\n\t\t\tif (typeof callback === 'function') callback({ action: 'error', error });\n\t\t\treturn null;\n\t\t}\n\t},\n\n\topenFeedback(options = {}) {\n\t\tif (Product7._feedbackWidget) {\n\t\t\tif (options.setBoard) {\n\t\t\t\tProduct7._feedbackWidget.options.boardName = options.setBoard;\n\t\t\t}\n\t\t\tProduct7._feedbackWidget.open();\n\t\t}\n\t},\n\n\tcloseFeedback() {\n\t\tif (Product7._feedbackWidget) {\n\t\t\tProduct7._feedbackWidget.close();\n\t\t}\n\t},\n\n\tdestroyFeedback() {\n\t\tif (Product7._feedbackWidget) {\n\t\t\tProduct7._feedbackWidget.destroy();\n\t\t\tProduct7._feedbackWidget = null;\n\t\t}\n\t},\n\n\t// ==================\n\t// Web Chat\n\t// ==================\n\n\tasync liveChat(options = {}, callback) {\n\t\tconst sdk = await ensureSDK(options);\n\t\tif (!sdk) {\n\t\t\tProduct7._q.push(['liveChat', options, callback]);\n\t\t\treturn null;\n\t\t}\n\n\t\tconst widgetOptions = cleanUndefined({\n\t\t\ttheme: options.theme || sdk.config.theme || 'light',\n\t\t\tprimaryColor: options.primaryColor,\n\t\t\tbackgroundColor: options.backgroundColor,\n\t\t\ttextColor: options.textColor,\n\t\t\tlogoUrl: options.logoUrl,\n\t\t\tteamName: options.teamName,\n\t\t\tteamAvatars: options.teamAvatars,\n\t\t\tgreetingMessage: options.greetingMessage,\n\t\t\twelcomeMessage: options.welcomeMessage,\n\t\t\tenableHelp: options.enableHelp,\n\t\t\tenableChangelog: options.enableChangelog,\n\t\t\tenableNews: options.enableNews,\n\t\t\tautoLoadData: options.autoLoadData,\n\t\t\tinitialView: options.initialView,\n\t\t\tfeaturedContent: options.featuredContent,\n\t\t\tfeedbackUrl: options.feedbackUrl,\n\t\t\tchangelogUrl: options.changelogUrl,\n\t\t\thelpUrl: options.helpUrl,\n\t\t\troadmapUrl: options.roadmapUrl,\n\t\t\tpreviewData: options.previewData,\n\t\t});\n\n\t\t// placement → position\n\t\tif (options.placement === 'right') {\n\t\t\twidgetOptions.position = 'right';\n\t\t} else if (options.placement === 'left') {\n\t\t\twidgetOptions.position = 'left';\n\t\t} else if (options.placement) {\n\t\t\twidgetOptions.position = options.placement;\n\t\t}\n\n\t\t// Web Chat is always explicitly shown — never suppress based on feedback submission history\n\t\twidgetOptions.suppressAfterSubmission = false;\n\t\twidgetOptions.enabled = true;\n\n\t\ttry {\n\t\t\tconst widget = sdk.createLiveChatWidget(widgetOptions);\n\t\t\twidget.mount();\n\t\t\twidget.show();\n\n\t\t\tProduct7._LiveChatWidget = widget;\n\n\t\t\tif (typeof callback === 'function') {\n\t\t\t\tcallback({ action: 'widgetReady' });\n\n\t\t\t\tsdk.eventBus.on('liveChat:messageSent', (data) => {\n\t\t\t\t\tcallback({ action: 'messageSent', message: data });\n\t\t\t\t});\n\n\t\t\t\tsdk.eventBus.on('liveChat:opened', () => {\n\t\t\t\t\tcallback({ action: 'liveChatOpened' });\n\t\t\t\t});\n\n\t\t\t\tsdk.eventBus.on('liveChat:closed', () => {\n\t\t\t\t\tcallback({ action: 'liveChatClosed' });\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// Listen for data-product7-liveChat clicks\n\t\t\tProduct7._setupLiveChatAttributeTriggers();\n\t\t\tProduct7._setupPostMessageListener();\n\n\t\t\treturn widget;\n\t\t} catch (error) {\n\t\t\tconsole.error('[Product7] Failed to initialize web chat widget:', error);\n\t\t\tif (typeof callback === 'function') callback({ action: 'error', error });\n\t\t\treturn null;\n\t\t}\n\t},\n\n\topenLiveChat() {\n\t\tif (Product7._LiveChatWidget) {\n\t\t\tProduct7._LiveChatWidget.open?.() ||\n\t\t\t\tProduct7._LiveChatWidget.openPanel?.();\n\t\t}\n\t},\n\n\tcloseLiveChat() {\n\t\tif (Product7._LiveChatWidget) {\n\t\t\tProduct7._LiveChatWidget.close?.() ||\n\t\t\t\tProduct7._LiveChatWidget.closePanel?.();\n\t\t}\n\t},\n\n\tdestroyLiveChat() {\n\t\tif (Product7._LiveChatWidget) {\n\t\t\tProduct7._LiveChatWidget.destroy();\n\t\t\tProduct7._LiveChatWidget = null;\n\t\t}\n\t},\n\n\t// ==================\n\t// Survey\n\t// ==================\n\n\tasync survey(options = {}, callback) {\n\t\tconst sdk = await ensureSDK(options);\n\t\tif (!sdk) {\n\t\t\tProduct7._q.push(['survey', options, callback]);\n\t\t\treturn null;\n\t\t}\n\n\t\t// placement → position\n\t\tlet position = 'right';\n\t\tif (options.placement === 'right') {\n\t\t\tposition = 'right';\n\t\t} else if (options.placement === 'left') {\n\t\t\tposition = 'left';\n\t\t} else if (options.placement === 'center') {\n\t\t\tposition = 'center';\n\t\t} else if (options.placement === 'bottom') {\n\t\t\tposition = 'bottom';\n\t\t} else if (options.placement) {\n\t\t\tposition = options.placement;\n\t\t}\n\n\t\t// displayMode: \"popover\" (default), \"modal\", \"fullscreen\"\n\t\tconst displayMode = options.displayMode || 'popover';\n\t\tif (displayMode === 'modal' || displayMode === 'fullscreen') {\n\t\t\tposition = 'center';\n\t\t}\n\n\t\t// Wire up all lifecycle callbacks\n\t\tconst surveyCallbacks = {\n\t\t\tonSubmit: (response) => {\n\t\t\t\tif (typeof callback === 'function') {\n\t\t\t\t\tcallback({ action: 'surveySubmitted', response });\n\t\t\t\t}\n\t\t\t},\n\t\t\tonDismiss: () => {\n\t\t\t\tif (typeof callback === 'function') {\n\t\t\t\t\tcallback({ action: 'surveyDismissed' });\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\n\t\t// Register event bus listeners for additional callbacks\n\t\tif (typeof callback === 'function') {\n\t\t\tsdk.eventBus.on('survey:shown', (data) => {\n\t\t\t\tcallback({ action: 'surveyShown', survey: data });\n\t\t\t});\n\n\t\t\tsdk.eventBus.on('survey:questionAnswered', (data) => {\n\t\t\t\tcallback({\n\t\t\t\t\taction: 'questionAnswered',\n\t\t\t\t\tpageId: data.pageId,\n\t\t\t\t\tpageType: data.pageType,\n\t\t\t\t\tanswer: data.answer,\n\t\t\t\t});\n\t\t\t});\n\n\t\t\tsdk.eventBus.on('survey:closed', () => {\n\t\t\t\tcallback({ action: 'surveyClosed' });\n\t\t\t});\n\t\t}\n\n\t\t// Display method: delayed, exitIntent, or immediate (default)\n\t\tconst displayMethod = options.displayMethod || 'immediate';\n\t\tconst showSurvey = async () => {\n\t\t\ttry {\n\t\t\t\tlet widget;\n\n\t\t\t\tif (options.surveyId) {\n\t\t\t\t\t// Show specific survey by ID\n\t\t\t\t\tconst showOpts = {\n\t\t\t\t\t\tposition,\n\t\t\t\t\t\tdisplayMode,\n\t\t\t\t\t\ttheme: options.theme || sdk.config.theme || 'light',\n\t\t\t\t\t\tshowBackdrop:\n\t\t\t\t\t\t\tdisplayMode === 'modal' || displayMode === 'fullscreen',\n\t\t\t\t\t\t...surveyCallbacks,\n\t\t\t\t\t};\n\n\t\t\t\t\t// force flag: bypass eligibility checks\n\t\t\t\t\tif (options.force) {\n\t\t\t\t\t\tshowOpts.context = { includeIneligible: true };\n\t\t\t\t\t}\n\n\t\t\t\t\twidget = await sdk.showSurveyById(options.surveyId, showOpts);\n\t\t\t\t} else {\n\t\t\t\t\t// Auto-fetch and show first eligible survey\n\t\t\t\t\tconst fetchOpts = options.force ? { includeIneligible: true } : {};\n\t\t\t\t\tconst surveys = await sdk.getActiveSurveys(fetchOpts);\n\n\t\t\t\t\tif (surveys.length === 0) {\n\t\t\t\t\t\tif (typeof callback === 'function') {\n\t\t\t\t\t\t\tcallback({ action: 'noSurveys' });\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst surveyConfig = surveys[0];\n\t\t\t\t\twidget = sdk.showSurvey({\n\t\t\t\t\t\tsurveyId: surveyConfig.surveyId || surveyConfig.id,\n\t\t\t\t\t\tsurveyType: surveyConfig.surveyType || surveyConfig.type || 'nps',\n\t\t\t\t\t\tposition,\n\t\t\t\t\t\tdisplayMode,\n\t\t\t\t\t\ttheme: options.theme || sdk.config.theme || 'light',\n\t\t\t\t\t\tshowBackdrop:\n\t\t\t\t\t\t\tdisplayMode === 'modal' || displayMode === 'fullscreen',\n\t\t\t\t\t\ttitle: surveyConfig.title,\n\t\t\t\t\t\tdescription: surveyConfig.description,\n\t\t\t\t\t\tlowLabel: surveyConfig.lowLabel,\n\t\t\t\t\t\thighLabel: surveyConfig.highLabel,\n\t\t\t\t\t\tratingScale: surveyConfig.ratingScale,\n\t\t\t\t\t\tshowFeedbackInput: surveyConfig.showFeedbackInput,\n\t\t\t\t\t\tshowSubmitButton: surveyConfig.showSubmitButton,\n\t\t\t\t\t\tautoSubmitOnSelect: surveyConfig.autoSubmitOnSelect,\n\t\t\t\t\t\tshowTitle: surveyConfig.showTitle,\n\t\t\t\t\t\tshowDescription: surveyConfig.showDescription,\n\t\t\t\t\t\tcustomQuestions: surveyConfig.customQuestions,\n\t\t\t\t\t\tpages: surveyConfig.pages,\n\t\t\t\t\t\tenabled: options.force ? true : surveyConfig.enabled,\n\t\t\t\t\t\t...surveyCallbacks,\n\t\t\t\t\t});\n\n\t\t\t\t\tif (typeof callback === 'function') {\n\t\t\t\t\t\tcallback({ action: 'surveyReady', survey: surveyConfig });\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tProduct7._surveyWidget = widget;\n\t\t\t\treturn widget;\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('[Product7] Failed to show survey:', error);\n\t\t\t\tif (typeof callback === 'function')\n\t\t\t\t\tcallback({ action: 'error', error });\n\t\t\t\treturn null;\n\t\t\t}\n\t\t};\n\n\t\t// Handle display methods\n\t\tif (displayMethod === 'delayed') {\n\t\t\tconst delay = options.displayDelay || 5000;\n\t\t\tProduct7._surveyTimer = setTimeout(showSurvey, delay);\n\t\t\tif (typeof callback === 'function') {\n\t\t\t\tcallback({ action: 'surveyScheduled', delay });\n\t\t\t}\n\t\t\treturn null;\n\t\t}\n\n\t\tif (displayMethod === 'exitIntent') {\n\t\t\tconst handler = (e) => {\n\t\t\t\tif (e.clientY <= 0) {\n\t\t\t\t\tdocument.removeEventListener('mouseout', handler);\n\t\t\t\t\tProduct7._exitIntentHandler = null;\n\t\t\t\t\tshowSurvey();\n\t\t\t\t}\n\t\t\t};\n\t\t\tProduct7._exitIntentHandler = handler;\n\t\t\tdocument.addEventListener('mouseout', handler);\n\t\t\tif (typeof callback === 'function') {\n\t\t\t\tcallback({ action: 'surveyScheduled', trigger: 'exitIntent' });\n\t\t\t}\n\t\t\treturn null;\n\t\t}\n\n\t\tif (displayMethod === 'onScroll') {\n\t\t\tconst scrollPercent = options.scrollPercentage || 50;\n\t\t\tconst handler = () => {\n\t\t\t\tconst scrolled =\n\t\t\t\t\t(window.scrollY / (document.body.scrollHeight - window.innerHeight)) *\n\t\t\t\t\t100;\n\t\t\t\tif (scrolled >= scrollPercent) {\n\t\t\t\t\twindow.removeEventListener('scroll', handler);\n\t\t\t\t\tProduct7._scrollHandler = null;\n\t\t\t\t\tshowSurvey();\n\t\t\t\t}\n\t\t\t};\n\t\t\tProduct7._scrollHandler = handler;\n\t\t\twindow.addEventListener('scroll', handler, { passive: true });\n\t\t\tif (typeof callback === 'function') {\n\t\t\t\tcallback({\n\t\t\t\t\taction: 'surveyScheduled',\n\t\t\t\t\ttrigger: 'onScroll',\n\t\t\t\t\tscrollPercentage: scrollPercent,\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn null;\n\t\t}\n\n\t\t// Default: immediate\n\t\treturn showSurvey();\n\t},\n\n\tcloseSurvey() {\n\t\tif (Product7._surveyWidget) {\n\t\t\tProduct7._surveyWidget.hide?.() || Product7._surveyWidget.closePanel?.();\n\t\t}\n\t},\n\n\tdestroySurvey() {\n\t\t// Clean up scheduled triggers\n\t\tif (Product7._surveyTimer) {\n\t\t\tclearTimeout(Product7._surveyTimer);\n\t\t\tProduct7._surveyTimer = null;\n\t\t}\n\t\tif (Product7._exitIntentHandler) {\n\t\t\tdocument.removeEventListener('mouseout', Product7._exitIntentHandler);\n\t\t\tProduct7._exitIntentHandler = null;\n\t\t}\n\t\tif (Product7._scrollHandler) {\n\t\t\twindow.removeEventListener('scroll', Product7._scrollHandler);\n\t\t\tProduct7._scrollHandler = null;\n\t\t}\n\t\tif (Product7._surveyWidget) {\n\t\t\tProduct7._surveyWidget.destroy();\n\t\t\tProduct7._surveyWidget = null;\n\t\t}\n\t},\n\n\t// ==================\n\t// Event Tracking\n\t// ==================\n\n\tasync track(eventName, properties = {}) {\n\t\tif (!Product7._sdk) {\n\t\t\tProduct7._q.push(['track', eventName, properties]);\n\t\t\treturn null;\n\t\t}\n\n\t\tconst sdk = Product7._sdk;\n\t\tif (!sdk.apiService?.sessionToken) return null;\n\n\t\ttry {\n\t\t\tconst result = await sdk.apiService._makeRequest('/widget/track', {\n\t\t\t\tmethod: 'POST',\n\t\t\t\tbody: JSON.stringify({\n\t\t\t\t\tevent: eventName,\n\t\t\t\t\tproperties,\n\t\t\t\t\ttimestamp: new Date().toISOString(),\n\t\t\t\t}),\n\t\t\t\theaders: {\n\t\t\t\t\t'Content-Type': 'application/json',\n\t\t\t\t\tAuthorization: `Bearer ${sdk.apiService.sessionToken}`,\n\t\t\t\t},\n\t\t\t});\n\n\t\t\t// If server returns a survey to show, show it\n\t\t\tif (result?.survey) {\n\t\t\t\tProduct7.survey({\n\t\t\t\t\tsurveyId: result.survey.id || result.survey.survey_id,\n\t\t\t\t\tforce: true,\n\t\t\t\t});\n\t\t\t}\n\n\t\t\treturn result;\n\t\t} catch (error) {\n\t\t\tif (sdk.config.debug) {\n\t\t\t\tconsole.warn('[Product7] Track failed:', error);\n\t\t\t}\n\t\t\treturn null;\n\t\t}\n\t},\n\n\t// ==================\n\t// General\n\t// ==================\n\n\tgetInstance() {\n\t\treturn Product7._sdk;\n\t},\n\n\tisReady() {\n\t\treturn Boolean(Product7._sdk?.initialized);\n\t},\n\n\tonReady(callback) {\n\t\tif (typeof window === 'undefined') return;\n\n\t\tif (Product7.isReady()) {\n\t\t\tcallback(Product7._sdk);\n\t\t} else {\n\t\t\twindow.addEventListener(\n\t\t\t\t'Product7Ready',\n\t\t\t\t(event) => callback(event.detail.sdk, event.detail),\n\t\t\t\t{ once: true }\n\t\t\t);\n\t\t}\n\t},\n\n\tonError(callback) {\n\t\tif (typeof window === 'undefined') return;\n\n\t\twindow.addEventListener('Product7Error', (event) => {\n\t\t\tcallback(event.detail.error, event.detail);\n\t\t});\n\t},\n\n\tdestroy() {\n\t\tProduct7.destroyFeedback();\n\t\tProduct7.destroyLiveChat();\n\t\tProduct7.destroySurvey();\n\t\tif (Product7._sdk) {\n\t\t\tProduct7._sdk.destroy();\n\t\t\tProduct7._sdk = null;\n\t\t}\n\t\tProduct7._identified = false;\n\t\tProduct7._organization = null;\n\t\tProduct7._q = [];\n\t\tProduct7._feedbackListenerAttached = false;\n\t\tProduct7._liveChatListenerAttached = false;\n\t\tProduct7._postMessageListenerAttached = false;\n\t},\n\n\t// ==================\n\t// Internal\n\t// ==================\n\n\t_flushQueue() {\n\t\tconst queue = Product7._q.splice(0);\n\t\tfor (const [method, ...args] of queue) {\n\t\t\tif (typeof Product7[method] === 'function') {\n\t\t\t\tProduct7[method](...args);\n\t\t\t}\n\t\t}\n\t},\n\n\t_setupAttributeTriggers() {\n\t\tif (typeof document === 'undefined') return;\n\t\tif (Product7._feedbackListenerAttached) return;\n\t\tProduct7._feedbackListenerAttached = true;\n\n\t\tdocument.addEventListener('click', (e) => {\n\t\t\tconst trigger = e.target.closest('[data-product7-feedback]');\n\t\t\tif (trigger) {\n\t\t\t\te.preventDefault();\n\t\t\t\tProduct7.openFeedback();\n\t\t\t}\n\t\t});\n\t},\n\n\t_setupLiveChatAttributeTriggers() {\n\t\tif (typeof document === 'undefined') return;\n\t\tif (Product7._liveChatListenerAttached) return;\n\t\tProduct7._liveChatListenerAttached = true;\n\n\t\tdocument.addEventListener('click', (e) => {\n\t\t\tconst trigger = e.target.closest('[data-product7-liveChat]');\n\t\t\tif (trigger) {\n\t\t\t\te.preventDefault();\n\t\t\t\tProduct7.openLiveChat();\n\t\t\t}\n\t\t});\n\t},\n\n\t_setupPostMessageListener() {\n\t\tif (typeof window === 'undefined') return;\n\t\tif (Product7._postMessageListenerAttached) return;\n\t\tProduct7._postMessageListenerAttached = true;\n\n\t\twindow.addEventListener('message', (event) => {\n\t\t\tif (event.data?.target !== 'Product7Widget') return;\n\n\t\t\tconst { action, setBoard } = event.data.data || {};\n\t\t\tswitch (action) {\n\t\t\t\tcase 'openFeedback':\n\t\t\t\t\tProduct7.openFeedback({ setBoard });\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'closeFeedback':\n\t\t\t\t\tProduct7.closeFeedback();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'openLiveChat':\n\t\t\t\t\tProduct7.openLiveChat();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'closeLiveChat':\n\t\t\t\t\tProduct7.closeLiveChat();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'closeSurvey':\n\t\t\t\t\tProduct7.closeSurvey();\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t});\n\t},\n\n\t// Expose internals for advanced/npm usage\n\tProduct7SDK,\n\tBaseWidget,\n\tButtonWidget,\n\tChangelogWidget,\n\tTabWidget,\n\tInlineWidget,\n\tSurveyWidget,\n\tLiveChatWidget,\n\tWidgetFactory,\n\tEventBus,\n\tAPIService,\n\tSDKError,\n\tAPIError,\n\tWidgetError,\n\tConfigError,\n\tValidationError,\n\thelpers,\n};\n\n// --- Pre-load queue support ---\nif (typeof window !== 'undefined') {\n\tconst existingQueue = window.Product7?._q || [];\n\twindow.Product7 = Product7;\n\n\tfor (const [method, ...args] of existingQueue) {\n\t\tif (typeof Product7[method] === 'function') {\n\t\t\tProduct7[method](...args);\n\t\t}\n\t}\n}\n\nexport default Product7;\n\nexport {\n\tAPIError,\n\tAPIService,\n\tBaseWidget,\n\tButtonWidget,\n\tChangelogWidget,\n\tConfigError,\n\tEventBus,\n\thelpers,\n\tInlineWidget,\n\tLiveChatWidget,\n\tProduct7SDK as Product7,\n\tSDKError,\n\tSurveyWidget,\n\tTabWidget,\n\tValidationError,\n\tWidgetError,\n\tWidgetFactory,\n};\n"],"names":["delay","Product7SDK"],"mappings":"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K,CAAC,kCAAkC,EAAE,KAAK,CAAC;CAC7D,IAAI;CACJ,GAAG,CAAC,CAAC;CACL,EAAE;CACF,CAAC;;CAED,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE;CACvB,EAAE,MAAM,WAAW,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,IAAI,KAAK;CAC/C,GAAG,QAAQ,CAAC,IAAI,CAAC;CACjB,GAAG,WAAW,EAAE;CAChB,EAAE,CAAC,CAAC;CACJ,EAAE,OAAO,WAAW;CACpB,CAAC;;CAED,CAAC,KAAK,GAAG;CACT,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;CACrB,CAAC;;CAED,CAAC,gBAAgB,CAAC,KAAK,EAAE;CACzB,EAAE,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;CAC1C,EAAE,OAAO,SAAS,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC;CACzC,CAAC;CACD;;CCrDO,MAAM,UAAU,GAAG;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;CClEM,MAAM,eAAe,GAAG;AAC/B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAC;;CC5pBM,MAAM,gBAAgB,GAAG;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;CC7iBM,MAAM,YAAY,GAAG;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;CC3HM,MAAM,cAAc,GAAG;AAC9B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;;CCpUM,MAAM,wBAAwB,GAAG;;AAExC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;;CCz0BM,MAAM,kBAAkB,GAAG;;AAElC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;CCjTM,MAAM,sBAAsB,GAAG;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;CCxKM,MAAM,mBAAmB,GAAG;AACnC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;CC1+BM,MAAM,cAAc;CAC3B,CAAC,kBAAkB;CACnB,CAAC,mBAAmB;CACpB,CAAC,wBAAwB;CACzB,CAAC,sBAAsB;;CCThB,MAAM,YAAY,GAAG;AAC5B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;;CCjvBM,MAAM,UAAU;CACvB,CAAC,YAAY;CACb,CAAC,UAAU;CACX,CAAC,gBAAgB;CACjB,CAAC,cAAc;CACf,CAAC,eAAe;CAChB,CAAC,YAAY;CACb,CAAC,cAAc;;CCfR,SAAS,UAAU,CAAC,MAAM,GAAG,UAAU,EAAE;CAChD,CAAC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE;CAC7B,CAAC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,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"}