@ihoomanai/chat-widget 2.2.0 → 2.2.2

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,5 +1,5 @@
1
1
  /**
2
- * @ihoomanai/chat-widget v2.0.2
2
+ * @ihoomanai/chat-widget v2.2.1
3
3
  * Universal chat support widget for any website - secure Widget ID based initialization
4
4
  *
5
5
  * @license MIT
@@ -69,6 +69,8 @@
69
69
  minimize: `<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><line x1="5" y1="12" x2="19" y2="12"></line></svg>`,
70
70
  refresh: `<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="23 4 23 10 17 10"></polyline><polyline points="1 20 1 14 7 14"></polyline><path d="M3.51 9a9 9 0 0 1 14.85-3.36L23 10M1 14l4.64 4.36A9 9 0 0 0 20.49 15"></path></svg>`,
71
71
  bot: `<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="3" y="11" width="18" height="10" rx="2"></rect><circle cx="12" cy="5" r="2"></circle><path d="M12 7v4"></path></svg>`,
72
+ agent: `<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"></path><circle cx="12" cy="7" r="4"></circle></svg>`,
73
+ ticket: `<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><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"></path><polyline points="14 2 14 8 20 8"></polyline><line x1="16" y1="13" x2="8" y2="13"></line><line x1="16" y1="17" x2="8" y2="17"></line><line x1="10" y1="9" x2="8" y2="9"></line></svg>`,
72
74
  };
73
75
  /**
74
76
  * Internal widget state
@@ -82,6 +84,7 @@
82
84
  visitorId: null,
83
85
  unreadCount: 0,
84
86
  };
87
+ let isLiveAgentMode = false;
85
88
  let elements = {};
86
89
  const eventListeners = {};
87
90
  /**
@@ -260,6 +263,41 @@
260
263
  .ihooman-powered { text-align: center; padding: 8px; font-size: 11px; color: ${mutedColor}; background: ${bgColor}; }
261
264
  .ihooman-powered a { color: ${primaryColor}; text-decoration: none; }
262
265
  .ihooman-error { padding: 16px; text-align: center; color: #ef4444; background: ${bgColor}; }
266
+ .ihooman-escalation-actions { display: flex; gap: 8px; margin-top: 12px; flex-wrap: wrap; }
267
+ .ihooman-escalation-btn { display: inline-flex; align-items: center; gap: 6px; padding: 10px 16px; border-radius: 8px; border: none; cursor: pointer; font-family: inherit; font-size: 13px; font-weight: 500; transition: all 0.2s ease; }
268
+ .ihooman-escalation-btn svg { width: 16px; height: 16px; }
269
+ .ihooman-escalation-btn.primary { background: linear-gradient(135deg, ${gradientFrom}, ${gradientTo}); color: white; }
270
+ .ihooman-escalation-btn.primary:hover { transform: translateY(-1px); box-shadow: 0 4px 12px rgba(0, 174, 255, 0.3); }
271
+ .ihooman-escalation-btn.secondary { background: ${isDark ? 'rgba(255,255,255,0.1)' : 'rgba(0,0,0,0.05)'}; color: ${textColor}; border: 1px solid ${borderColor}; }
272
+ .ihooman-escalation-btn.secondary:hover { background: ${isDark ? 'rgba(255,255,255,0.15)' : 'rgba(0,0,0,0.08)'}; }
273
+ .ihooman-escalation-btn:disabled { opacity: 0.5; cursor: not-allowed; transform: none; }
274
+ .ihooman-status-bar { padding: 10px 16px; text-align: center; font-size: 13px; display: none; }
275
+ .ihooman-status-bar.show { display: block; }
276
+ .ihooman-status-bar.waiting { background: #fef3c7; color: #92400e; }
277
+ .ihooman-status-bar.connected { background: #dcfce7; color: #166534; }
278
+ .ihooman-chat-view { display: flex; flex-direction: column; flex: 1; overflow: hidden; }
279
+ .ihooman-chat-view.hidden { display: none; }
280
+ .ihooman-ticket-view { display: none; flex-direction: column; padding: 20px; gap: 16px; background: ${bgColor}; flex: 1; overflow-y: auto; }
281
+ .ihooman-ticket-view.show { display: flex; }
282
+ .ihooman-ticket-title { font-size: 18px; font-weight: 600; color: ${textColor}; margin: 0; display: flex; align-items: center; gap: 8px; }
283
+ .ihooman-ticket-subtitle { font-size: 13px; color: ${mutedColor}; margin: 0; }
284
+ .ihooman-ticket-input { padding: 12px 14px; border: 1px solid ${borderColor}; border-radius: 10px; font-size: 14px; font-family: inherit; background: ${inputBg}; color: ${textColor}; outline: none; transition: border-color 0.2s; }
285
+ .ihooman-ticket-input:focus { border-color: ${primaryColor}; }
286
+ .ihooman-ticket-input::placeholder { color: ${mutedColor}; }
287
+ .ihooman-ticket-textarea { min-height: 100px; resize: vertical; }
288
+ .ihooman-ticket-submit { padding: 14px; background: linear-gradient(135deg, ${gradientFrom}, ${gradientTo}); color: white; border: none; border-radius: 10px; font-size: 14px; font-weight: 500; cursor: pointer; transition: all 0.2s; }
289
+ .ihooman-ticket-submit:hover { transform: translateY(-1px); box-shadow: 0 4px 12px rgba(0, 174, 255, 0.3); }
290
+ .ihooman-ticket-submit:disabled { opacity: 0.5; cursor: not-allowed; transform: none; }
291
+ .ihooman-ticket-back { padding: 10px; background: transparent; color: ${mutedColor}; border: 1px solid ${borderColor}; border-radius: 10px; font-size: 13px; cursor: pointer; transition: all 0.2s; }
292
+ .ihooman-ticket-back:hover { background: ${isDark ? 'rgba(255,255,255,0.05)' : 'rgba(0,0,0,0.03)'}; }
293
+ .ihooman-action-buttons { display: flex; gap: 8px; padding: 0 16px 12px; }
294
+ .ihooman-action-btn { flex: 1; padding: 10px; border: none; border-radius: 8px; font-size: 13px; font-weight: 500; cursor: pointer; display: flex; align-items: center; justify-content: center; gap: 6px; transition: all 0.2s; }
295
+ .ihooman-action-btn svg { width: 16px; height: 16px; }
296
+ .ihooman-action-btn.ticket { background: #6366f1; color: white; }
297
+ .ihooman-action-btn.ticket:hover { background: #4f46e5; }
298
+ .ihooman-action-btn.live { background: #10b981; color: white; }
299
+ .ihooman-action-btn.live:hover { background: #059669; }
300
+ .ihooman-action-btn:disabled { opacity: 0.5; cursor: not-allowed; }
263
301
  @media (max-width: 480px) { .ihooman-window { width: calc(100vw - 20px); height: calc(100vh - 100px); left: 10px; right: 10px; bottom: 80px; max-height: none; } .ihooman-toggle { ${positionRight ? 'right: 16px' : 'left: 16px'}; bottom: 16px; } }
264
302
  `;
265
303
  }
@@ -298,14 +336,41 @@
298
336
  <button class="ihooman-header-btn" data-action="minimize" title="Minimize">${icons.minimize}</button>
299
337
  </div>
300
338
  </div>
301
- <div class="ihooman-messages" role="log" aria-live="polite"></div>
302
- <div class="ihooman-input-area">
303
- <div class="ihooman-input-wrapper">
304
- ${config.enableFileUpload ? `<button class="ihooman-input-btn attach" title="Attach file">${icons.attach}</button><input type="file" class="ihooman-file-input">` : ''}
305
- <textarea class="ihooman-input" placeholder="${escapeHtml(config.placeholder || 'Type a message...')}" rows="1" aria-label="Message input"></textarea>
306
- <button class="ihooman-input-btn send" title="Send message" disabled>${icons.send}</button>
339
+
340
+ <!-- Chat View -->
341
+ <div class="ihooman-chat-view">
342
+ <div class="ihooman-status-bar"></div>
343
+ <div class="ihooman-messages" role="log" aria-live="polite"></div>
344
+ <div class="ihooman-action-buttons">
345
+ <button class="ihooman-action-btn ticket" data-action="show-ticket">
346
+ <svg viewBox="0 0 24 24" fill="currentColor"><path d="M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-5 14H7v-2h7v2zm3-4H7v-2h10v2zm0-4H7V7h10v2z"/></svg>
347
+ Submit Ticket
348
+ </button>
349
+ <button class="ihooman-action-btn live" data-action="live-agent">
350
+ <svg viewBox="0 0 24 24" fill="currentColor"><path d="M12 12c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm0 2c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66-5.33-4-8-4z"/></svg>
351
+ Live Agent
352
+ </button>
307
353
  </div>
354
+ <div class="ihooman-input-area">
355
+ <div class="ihooman-input-wrapper">
356
+ ${config.enableFileUpload ? `<button class="ihooman-input-btn attach" title="Attach file">${icons.attach}</button><input type="file" class="ihooman-file-input">` : ''}
357
+ <textarea class="ihooman-input" placeholder="${escapeHtml(config.placeholder || 'Type a message...')}" rows="1" aria-label="Message input"></textarea>
358
+ <button class="ihooman-input-btn send" title="Send message" disabled>${icons.send}</button>
359
+ </div>
360
+ </div>
361
+ </div>
362
+
363
+ <!-- Ticket Form View -->
364
+ <div class="ihooman-ticket-view">
365
+ <h4 class="ihooman-ticket-title">📝 Submit a Ticket</h4>
366
+ <p class="ihooman-ticket-subtitle">We'll get back to you via email</p>
367
+ <input class="ihooman-ticket-input" id="ihooman-ticket-name" placeholder="Your name" required>
368
+ <input class="ihooman-ticket-input" id="ihooman-ticket-email" type="email" placeholder="Your email" required>
369
+ <textarea class="ihooman-ticket-input ihooman-ticket-textarea" id="ihooman-ticket-issue" placeholder="Describe your issue..."></textarea>
370
+ <button class="ihooman-ticket-submit" id="ihooman-ticket-submit">Submit Ticket</button>
371
+ <button class="ihooman-ticket-back" id="ihooman-ticket-back">← Back to Chat</button>
308
372
  </div>
373
+
309
374
  ${config.poweredBy ? `<div class="ihooman-powered">Powered by <a href="https://ihooman.ai" target="_blank" rel="noopener">Ihooman AI</a></div>` : ''}
310
375
  </div>
311
376
  </div>
@@ -317,6 +382,8 @@
317
382
  toggle: widget.querySelector('.ihooman-toggle'),
318
383
  badge: widget.querySelector('.ihooman-badge'),
319
384
  window: widget.querySelector('.ihooman-window'),
385
+ chatView: widget.querySelector('.ihooman-chat-view'),
386
+ ticketView: widget.querySelector('.ihooman-ticket-view'),
320
387
  messages: widget.querySelector('.ihooman-messages'),
321
388
  input: widget.querySelector('.ihooman-input'),
322
389
  sendBtn: widget.querySelector('.ihooman-input-btn.send'),
@@ -324,6 +391,12 @@
324
391
  fileInput: widget.querySelector('.ihooman-file-input'),
325
392
  statusDot: widget.querySelector('.ihooman-status-dot'),
326
393
  statusText: widget.querySelector('.ihooman-status-text'),
394
+ statusBar: widget.querySelector('.ihooman-status-bar'),
395
+ ticketName: widget.querySelector('#ihooman-ticket-name'),
396
+ ticketEmail: widget.querySelector('#ihooman-ticket-email'),
397
+ ticketIssue: widget.querySelector('#ihooman-ticket-issue'),
398
+ ticketSubmitBtn: widget.querySelector('#ihooman-ticket-submit'),
399
+ ticketBackBtn: widget.querySelector('#ihooman-ticket-back'),
327
400
  };
328
401
  // Set up event listeners
329
402
  setupEventListeners();
@@ -358,6 +431,16 @@
358
431
  }
359
432
  elements.widget?.querySelector('[data-action="refresh"]')?.addEventListener('click', startNewConversation);
360
433
  elements.widget?.querySelector('[data-action="minimize"]')?.addEventListener('click', close);
434
+ // Action buttons - Submit Ticket and Live Agent
435
+ elements.widget?.querySelector('[data-action="show-ticket"]')?.addEventListener('click', handleShowTicketForm);
436
+ elements.widget?.querySelector('[data-action="live-agent"]')?.addEventListener('click', handleRequestLiveAgent);
437
+ // Ticket form buttons
438
+ if (elements.ticketSubmitBtn) {
439
+ elements.ticketSubmitBtn.addEventListener('click', handleSubmitTicket);
440
+ }
441
+ if (elements.ticketBackBtn) {
442
+ elements.ticketBackBtn.addEventListener('click', () => showView('chat'));
443
+ }
361
444
  }
362
445
  // ============================================================================
363
446
  // MESSAGING
@@ -378,10 +461,39 @@
378
461
  return message;
379
462
  const el = document.createElement('div');
380
463
  el.className = `ihooman-message ${sender}`;
464
+ // Check if this message should show escalation buttons
465
+ const showEscalationButtons = sender === 'bot' && metadata?.escalation_offered === true;
466
+ let escalationButtonsHtml = '';
467
+ if (showEscalationButtons) {
468
+ escalationButtonsHtml = `
469
+ <div class="ihooman-escalation-actions">
470
+ <button class="ihooman-escalation-btn primary" data-action="live-agent">
471
+ ${icons.agent}
472
+ <span>Talk to Agent</span>
473
+ </button>
474
+ <button class="ihooman-escalation-btn secondary" data-action="create-ticket">
475
+ ${icons.ticket}
476
+ <span>Create Ticket</span>
477
+ </button>
478
+ </div>
479
+ `;
480
+ }
381
481
  el.innerHTML = `
382
482
  <div class="ihooman-message-content">${parseMarkdown(content)}</div>
483
+ ${escalationButtonsHtml}
383
484
  ${config.showTimestamps ? `<div class="ihooman-message-time">${formatTime(message.timestamp)}</div>` : ''}
384
485
  `;
486
+ // Add event listeners for escalation buttons
487
+ if (showEscalationButtons) {
488
+ const liveAgentBtn = el.querySelector('[data-action="live-agent"]');
489
+ const ticketBtn = el.querySelector('[data-action="create-ticket"]');
490
+ if (liveAgentBtn) {
491
+ liveAgentBtn.addEventListener('click', () => handleEscalationAction('live-agent'));
492
+ }
493
+ if (ticketBtn) {
494
+ ticketBtn.addEventListener('click', () => handleEscalationAction('create-ticket'));
495
+ }
496
+ }
385
497
  // Remove typing indicator if present
386
498
  const typing = elements.messages.querySelector('.ihooman-typing');
387
499
  if (typing)
@@ -400,6 +512,250 @@
400
512
  emit('message', message);
401
513
  return message;
402
514
  }
515
+ /**
516
+ * Handle escalation action button clicks
517
+ */
518
+ function handleEscalationAction(action) {
519
+ // Disable all escalation buttons to prevent double-clicks
520
+ const buttons = document.querySelectorAll('.ihooman-escalation-btn');
521
+ buttons.forEach(btn => btn.disabled = true);
522
+ if (action === 'live-agent') {
523
+ handleRequestLiveAgent();
524
+ }
525
+ else if (action === 'create-ticket') {
526
+ handleShowTicketForm();
527
+ }
528
+ }
529
+ /**
530
+ * Switch between chat and ticket views
531
+ */
532
+ function showView(view) {
533
+ if (elements.chatView) {
534
+ elements.chatView.classList.toggle('hidden', view !== 'chat');
535
+ }
536
+ if (elements.ticketView) {
537
+ elements.ticketView.classList.toggle('show', view === 'ticket');
538
+ }
539
+ }
540
+ /**
541
+ * Show the ticket form
542
+ */
543
+ function handleShowTicketForm() {
544
+ showView('ticket');
545
+ // Focus on name input
546
+ setTimeout(() => elements.ticketName?.focus(), 100);
547
+ }
548
+ /**
549
+ * Update the status bar display
550
+ */
551
+ function updateStatusBar(status, message) {
552
+ if (!elements.statusBar)
553
+ return;
554
+ if (status === 'hidden') {
555
+ elements.statusBar.classList.remove('show');
556
+ return;
557
+ }
558
+ elements.statusBar.classList.add('show');
559
+ elements.statusBar.classList.remove('waiting', 'connected');
560
+ elements.statusBar.classList.add(status);
561
+ if (message) {
562
+ elements.statusBar.textContent = message;
563
+ }
564
+ }
565
+ /**
566
+ * Submit a ticket via the API
567
+ */
568
+ async function handleSubmitTicket() {
569
+ const name = elements.ticketName?.value.trim();
570
+ const email = elements.ticketEmail?.value.trim();
571
+ const issue = elements.ticketIssue?.value.trim();
572
+ if (!name || !email) {
573
+ alert('Please fill in your name and email');
574
+ return;
575
+ }
576
+ if (elements.ticketSubmitBtn) {
577
+ elements.ticketSubmitBtn.disabled = true;
578
+ elements.ticketSubmitBtn.textContent = 'Submitting...';
579
+ }
580
+ try {
581
+ const response = await fetch(`${config.serverUrl}/api/v1/public/submit-ticket`, {
582
+ method: 'POST',
583
+ headers: { 'Content-Type': 'application/json' },
584
+ body: JSON.stringify({
585
+ session_id: state.sessionId,
586
+ user_name: name,
587
+ user_email: email,
588
+ issue: issue || 'No description provided',
589
+ escalation_type: 'ticket',
590
+ widget_id: config.widgetId,
591
+ }),
592
+ });
593
+ const data = await response.json();
594
+ // Clear form
595
+ if (elements.ticketName)
596
+ elements.ticketName.value = '';
597
+ if (elements.ticketEmail)
598
+ elements.ticketEmail.value = '';
599
+ if (elements.ticketIssue)
600
+ elements.ticketIssue.value = '';
601
+ // Switch back to chat view
602
+ showView('chat');
603
+ // Show success message
604
+ const ticketRef = data.ticket_id ? data.ticket_id.slice(0, 8) : 'submitted';
605
+ addMessage(`✅ Ticket submitted! We'll contact you at ${email}. Reference: #${ticketRef}`, 'bot', { is_system_message: true });
606
+ }
607
+ catch (error) {
608
+ console.error('Error submitting ticket:', error);
609
+ addMessage('❌ Error submitting ticket. Please try again.', 'bot', { is_system_message: true });
610
+ }
611
+ if (elements.ticketSubmitBtn) {
612
+ elements.ticketSubmitBtn.disabled = false;
613
+ elements.ticketSubmitBtn.textContent = 'Submit Ticket';
614
+ }
615
+ }
616
+ /**
617
+ * Request a live agent via the API
618
+ */
619
+ async function handleRequestLiveAgent() {
620
+ if (!state.sessionId) {
621
+ addMessage('Please send a message first to start a conversation.', 'bot', { is_system_message: true });
622
+ return;
623
+ }
624
+ // Disable live agent button
625
+ const liveBtn = elements.widget?.querySelector('[data-action="live-agent"]');
626
+ if (liveBtn) {
627
+ liveBtn.disabled = true;
628
+ liveBtn.innerHTML = '<svg viewBox="0 0 24 24" fill="currentColor"><path d="M12 12c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm0 2c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66-5.33-4-8-4z"/></svg> Connecting...';
629
+ }
630
+ try {
631
+ const response = await fetch(`${config.serverUrl}/api/v1/public/live-agent`, {
632
+ method: 'POST',
633
+ headers: { 'Content-Type': 'application/json' },
634
+ body: JSON.stringify({
635
+ session_id: state.sessionId,
636
+ visitor_id: state.visitorId,
637
+ widget_id: config.widgetId,
638
+ }),
639
+ });
640
+ const data = await response.json();
641
+ isLiveAgentMode = true;
642
+ // Show status bar - always start with waiting since agent hasn't accepted yet
643
+ if (data.position_in_queue && data.position_in_queue > 1) {
644
+ updateStatusBar('waiting', `⏳ Waiting for agent (Position: #${data.position_in_queue})`);
645
+ }
646
+ else {
647
+ updateStatusBar('waiting', '⏳ Connecting to live support...');
648
+ }
649
+ // Hide action buttons when in live agent mode
650
+ const actionsDiv = elements.widget?.querySelector('.ihooman-action-buttons');
651
+ if (actionsDiv) {
652
+ actionsDiv.style.display = 'none';
653
+ }
654
+ // Start polling for agent messages
655
+ startLiveAgentPolling();
656
+ }
657
+ catch (error) {
658
+ console.error('Error requesting live agent:', error);
659
+ addMessage('❌ Unable to connect to live support. Please try again.', 'bot', { is_system_message: true });
660
+ }
661
+ // Re-enable button
662
+ if (liveBtn) {
663
+ liveBtn.disabled = false;
664
+ liveBtn.innerHTML = '<svg viewBox="0 0 24 24" fill="currentColor"><path d="M12 12c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm0 2c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66-5.33-4-8-4z"/></svg> Live Agent';
665
+ }
666
+ }
667
+ /**
668
+ * Live agent polling interval
669
+ */
670
+ let liveAgentPollInterval = null;
671
+ let lastMessageCount = 0;
672
+ /**
673
+ * Start polling for live agent messages
674
+ */
675
+ function startLiveAgentPolling() {
676
+ if (liveAgentPollInterval)
677
+ return;
678
+ liveAgentPollInterval = setInterval(async () => {
679
+ if (!state.sessionId || !isLiveAgentMode) {
680
+ stopLiveAgentPolling();
681
+ return;
682
+ }
683
+ try {
684
+ const response = await fetch(`${config.serverUrl}/api/v1/public/transcript/${state.sessionId}`, {
685
+ headers: { 'Content-Type': 'application/json' },
686
+ });
687
+ if (!response.ok)
688
+ return;
689
+ const data = await response.json();
690
+ const msgCount = data.messages?.length || 0;
691
+ // Check for new messages
692
+ if (msgCount > lastMessageCount) {
693
+ // Get only new messages
694
+ const newMessages = data.messages.slice(lastMessageCount);
695
+ newMessages.forEach((msg) => {
696
+ // Only add agent messages (user messages are already shown)
697
+ if (msg.sender_type === 'agent') {
698
+ addMessage(msg.content, 'bot', { agent_name: 'Agent' });
699
+ }
700
+ else if (msg.sender_type === 'ai' && msg.content.includes('connected to live support')) {
701
+ // System message about connection
702
+ addMessage(msg.content, 'bot', { is_system_message: true });
703
+ }
704
+ });
705
+ lastMessageCount = msgCount;
706
+ }
707
+ // Check if conversation was closed
708
+ if (data.status === 'closed') {
709
+ isLiveAgentMode = false;
710
+ stopLiveAgentPolling();
711
+ updateStatusBar('hidden');
712
+ addMessage('This conversation has been closed. Thank you for contacting us!', 'bot', { is_system_message: true });
713
+ // Show action buttons again
714
+ const actionsDiv = elements.widget?.querySelector('.ihooman-action-buttons');
715
+ if (actionsDiv) {
716
+ actionsDiv.style.display = 'flex';
717
+ }
718
+ }
719
+ // Update queue position and connection status
720
+ try {
721
+ const escResponse = await fetch(`${config.serverUrl}/api/v1/public/escalation-status/${state.sessionId}`);
722
+ if (escResponse.ok) {
723
+ const escData = await escResponse.json();
724
+ if (escData.escalated) {
725
+ if (escData.ticket_status === 'in_progress') {
726
+ // Agent has accepted - show connected status
727
+ updateStatusBar('connected', '🟢 Connected to live agent');
728
+ }
729
+ else if (escData.ticket_status === 'open') {
730
+ // Still waiting in queue
731
+ if (escData.position_in_queue && escData.position_in_queue > 1) {
732
+ updateStatusBar('waiting', `⏳ Waiting for agent (Position: #${escData.position_in_queue})`);
733
+ }
734
+ else {
735
+ updateStatusBar('waiting', '⏳ Waiting for agent...');
736
+ }
737
+ }
738
+ }
739
+ }
740
+ }
741
+ catch {
742
+ // Ignore escalation status errors
743
+ }
744
+ }
745
+ catch (error) {
746
+ console.error('Error polling for messages:', error);
747
+ }
748
+ }, 3000);
749
+ }
750
+ /**
751
+ * Stop live agent polling
752
+ */
753
+ function stopLiveAgentPolling() {
754
+ if (liveAgentPollInterval) {
755
+ clearInterval(liveAgentPollInterval);
756
+ liveAgentPollInterval = null;
757
+ }
758
+ }
403
759
  /**
404
760
  * Show typing indicator
405
761
  */
@@ -610,6 +966,8 @@
610
966
  addMessage(data.content, sender, {
611
967
  confidence: data.confidence,
612
968
  agent_name: data.agent_name,
969
+ escalation_offered: data.escalation_offered,
970
+ escalated: data.escalated,
613
971
  });
614
972
  }
615
973
  else if (data.type === 'typing') {
@@ -761,6 +1119,8 @@
761
1119
  function destroy() {
762
1120
  // Stop heartbeat
763
1121
  stopHeartbeat();
1122
+ // Stop live agent polling
1123
+ stopLiveAgentPolling();
764
1124
  // Close WebSocket
765
1125
  if (ws) {
766
1126
  ws.close();
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.umd.js","sources":["../src/widget.ts","../src/index.ts"],"sourcesContent":[null,null],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).IhoomanChat={})}(this,function(e){"use strict";const t={serverUrl:"https://api.ihooman.ai",theme:"light",position:"bottom-right",title:"Chat Support",subtitle:"We typically reply within minutes",welcomeMessage:"Hi there! 👋 How can we help you today?",placeholder:"Type a message...",primaryColor:"#00aeff",gradientFrom:"#00aeff",gradientTo:"#0066ff",showTimestamps:!0,showTypingIndicator:!0,enableSounds:!0,enableFileUpload:!0,startOpen:!1,persistSession:!0,zIndex:9999,width:380,height:560,buttonSize:60,borderRadius:16,fontFamily:'-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif',avatarUrl:"",poweredBy:!0},n='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"></path></svg>',o='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line></svg>',i='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><line x1="22" y1="2" x2="11" y2="13"></line><polygon points="22 2 15 22 11 13 2 9 22 2"></polygon></svg>',a='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M21.44 11.05l-9.19 9.19a6 6 0 0 1-8.49-8.49l9.19-9.19a4 4 0 0 1 5.66 5.66l-9.2 9.19a2 2 0 0 1-2.83-2.83l8.49-8.48"></path></svg>',s='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><line x1="5" y1="12" x2="19" y2="12"></line></svg>',r='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="23 4 23 10 17 10"></polyline><polyline points="1 20 1 14 7 14"></polyline><path d="M3.51 9a9 9 0 0 1 14.85-3.36L23 10M1 14l4.64 4.36A9 9 0 0 0 20.49 15"></path></svg>',c='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="3" y="11" width="18" height="10" rx="2"></rect><circle cx="12" cy="5" r="2"></circle><path d="M12 7v4"></path></svg>',l='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"></path><circle cx="12" cy="7" r="4"></circle></svg>',d='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><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"></path><polyline points="14 2 14 8 20 8"></polyline><line x1="16" y1="13" x2="8" y2="13"></line><line x1="16" y1="17" x2="8" y2="17"></line><line x1="10" y1="9" x2="8" y2="9"></line></svg>';let p={widgetId:"",...t},u={isOpen:!1,isConnected:!1,messages:[],sessionId:null,visitorId:null,unreadCount:0},h=!1,m={};const g={};let b=null,f=null,x=0;function v(e=""){return e+Math.random().toString(36).slice(2,14)+Date.now().toString(36)}function y(e){const t=document.createElement("div");return t.textContent=e,t.innerHTML}function w(e,t){const n="ihooman_chat_"+e;try{if(void 0===t){const e=localStorage.getItem(n);return e?JSON.parse(e):null}return null===t?(localStorage.removeItem(n),null):(localStorage.setItem(n,JSON.stringify(t)),t)}catch{return null}}function V(e,t){(g[e]||[]).forEach(n=>{try{n(t)}catch(t){console.error(`Error in ${e} event handler:`,t)}});const n=`on${e.charAt(0).toUpperCase()}${e.slice(1)}`,o=p[n];if("function"==typeof o)try{o(t)}catch(e){console.error(`Error in ${n} callback:`,e)}}function k(){const e=document.createElement("style");e.id="ihooman-widget-styles",e.textContent=function(){const{primaryColor:e,gradientFrom:t,gradientTo:n,fontFamily:o,borderRadius:i,zIndex:a,width:s,height:r,buttonSize:c}=p,l="dark"===p.theme,d=l?"#1a1a2e":"#ffffff",u=l?"#e4e4e7":"#1f2937",h=l?"#71717a":"#6b7280",m=l?"rgba(255,255,255,0.1)":"rgba(0,0,0,0.08)",g=l?"#16162a":"#f9fafb",b=`linear-gradient(135deg, ${t}, ${n})`,f=l?"#252542":"#f1f5f9",x=p.position?.includes("right")??!0,v=p.position?.includes("bottom")??!0;return`\n .ihooman-widget * { box-sizing: border-box; margin: 0; padding: 0; }\n .ihooman-widget { font-family: ${o}; font-size: 14px; line-height: 1.5; color: ${u}; -webkit-font-smoothing: antialiased; }\n .ihooman-toggle { position: fixed; ${x?"right: 20px":"left: 20px"}; ${v?"bottom: 20px":"top: 20px"}; width: ${c}px; height: ${c}px; border-radius: 50%; background: linear-gradient(135deg, ${t}, ${n}); border: none; cursor: pointer; z-index: ${a}; display: flex; align-items: center; justify-content: center; box-shadow: 0 4px 20px rgba(0, 174, 255, 0.35); transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); overflow: hidden; }\n .ihooman-toggle:hover { transform: scale(1.08); box-shadow: 0 6px 28px rgba(0, 174, 255, 0.45); }\n .ihooman-toggle:active { transform: scale(0.95); }\n .ihooman-toggle::before { content: ''; position: absolute; inset: 0; background: linear-gradient(to bottom, rgba(255,255,255,0.2), transparent); border-radius: 50%; }\n .ihooman-toggle svg { width: 26px; height: 26px; color: white; transition: transform 0.3s ease, opacity 0.2s ease; position: relative; z-index: 1; }\n .ihooman-toggle.open svg.chat-icon { transform: rotate(90deg) scale(0); opacity: 0; }\n .ihooman-toggle.open svg.close-icon { transform: rotate(0) scale(1); opacity: 1; }\n .ihooman-toggle svg.close-icon { position: absolute; transform: rotate(-90deg) scale(0); opacity: 0; }\n .ihooman-pulse { position: absolute; inset: 0; border-radius: 50%; background: ${e}; animation: ihooman-pulse 2s ease-out infinite; }\n @keyframes ihooman-pulse { 0% { transform: scale(1); opacity: 0.5; } 100% { transform: scale(1.6); opacity: 0; } }\n .ihooman-toggle.open .ihooman-pulse { display: none; }\n .ihooman-badge { position: absolute; top: -4px; right: -4px; min-width: 20px; height: 20px; padding: 0 6px; background: #ef4444; color: white; font-size: 11px; font-weight: 600; border-radius: 10px; display: flex; align-items: center; justify-content: center; z-index: 2; }\n .ihooman-badge:empty { display: none; }\n .ihooman-window { position: fixed; ${x?"right: 20px":"left: 20px"}; ${v?"bottom: 90px":"top: 90px"}; width: ${s}px; height: ${r}px; max-height: calc(100vh - 120px); z-index: ${(a??9999)-1}; display: flex; flex-direction: column; opacity: 0; visibility: hidden; transform: translateY(20px) scale(0.95); transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); }\n .ihooman-window.open { opacity: 1; visibility: visible; transform: translateY(0) scale(1); }\n .ihooman-container { position: relative; width: 100%; height: 100%; display: flex; flex-direction: column; border-radius: ${i}px; overflow: hidden; }\n .ihooman-container::before { content: ''; position: absolute; inset: 0; background: ${d}; opacity: 0.97; backdrop-filter: blur(20px); -webkit-backdrop-filter: blur(20px); border-radius: ${i}px; border: 1px solid ${m}; box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25); }\n .ihooman-container > * { position: relative; z-index: 1; }\n .ihooman-header { padding: 16px 20px; background: linear-gradient(135deg, ${t}, ${n}); color: white; display: flex; align-items: center; gap: 12px; flex-shrink: 0; }\n .ihooman-header-avatar { width: 42px; height: 42px; border-radius: 50%; background: rgba(255,255,255,0.2); display: flex; align-items: center; justify-content: center; flex-shrink: 0; }\n .ihooman-header-avatar img { width: 100%; height: 100%; border-radius: 50%; object-fit: cover; }\n .ihooman-header-avatar svg { width: 22px; height: 22px; }\n .ihooman-header-info { flex: 1; min-width: 0; }\n .ihooman-header-title { font-size: 16px; font-weight: 600; margin-bottom: 2px; }\n .ihooman-header-status { display: flex; align-items: center; gap: 6px; font-size: 12px; opacity: 0.9; }\n .ihooman-status-dot { width: 8px; height: 8px; border-radius: 50%; background: #22c55e; }\n .ihooman-status-dot.offline { background: #f59e0b; }\n .ihooman-header-actions { display: flex; gap: 8px; }\n .ihooman-header-btn { width: 32px; height: 32px; border-radius: 8px; background: rgba(255,255,255,0.15); border: none; cursor: pointer; display: flex; align-items: center; justify-content: center; color: white; transition: background 0.2s; }\n .ihooman-header-btn:hover { background: rgba(255,255,255,0.25); }\n .ihooman-header-btn svg { width: 16px; height: 16px; }\n .ihooman-messages { flex: 1; overflow-y: auto; padding: 16px; display: flex; flex-direction: column; gap: 12px; background: ${d}; }\n .ihooman-messages::-webkit-scrollbar { width: 6px; }\n .ihooman-messages::-webkit-scrollbar-track { background: transparent; }\n .ihooman-messages::-webkit-scrollbar-thumb { background: ${m}; border-radius: 3px; }\n .ihooman-message { display: flex; flex-direction: column; max-width: 85%; animation: ihooman-fadeIn 0.3s ease; }\n @keyframes ihooman-fadeIn { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: translateY(0); } }\n .ihooman-message.user { align-self: flex-end; align-items: flex-end; }\n .ihooman-message.bot { align-self: flex-start; align-items: flex-start; }\n .ihooman-message-content { padding: 12px 16px; border-radius: 16px; word-wrap: break-word; }\n .ihooman-message.user .ihooman-message-content { background: ${b}; color: white; border-bottom-right-radius: 4px; }\n .ihooman-message.bot .ihooman-message-content { background: ${f}; color: ${u}; border-bottom-left-radius: 4px; }\n .ihooman-message-content code { background: rgba(0,0,0,0.1); padding: 2px 6px; border-radius: 4px; font-family: monospace; font-size: 13px; }\n .ihooman-message-time { font-size: 11px; color: ${h}; margin-top: 4px; padding: 0 4px; }\n .ihooman-typing { display: flex; align-items: center; gap: 8px; padding: 12px 16px; background: ${f}; border-radius: 16px; border-bottom-left-radius: 4px; max-width: 80px; align-self: flex-start; }\n .ihooman-typing-dots { display: flex; gap: 4px; }\n .ihooman-typing-dot { width: 8px; height: 8px; background: ${h}; border-radius: 50%; animation: ihooman-typing 1.4s infinite; }\n .ihooman-typing-dot:nth-child(2) { animation-delay: 0.2s; }\n .ihooman-typing-dot:nth-child(3) { animation-delay: 0.4s; }\n @keyframes ihooman-typing { 0%, 60%, 100% { transform: translateY(0); opacity: 0.4; } 30% { transform: translateY(-4px); opacity: 1; } }\n .ihooman-input-area { padding: 12px 16px; background: ${d}; border-top: 1px solid ${m}; flex-shrink: 0; }\n .ihooman-input-wrapper { display: flex; align-items: flex-end; gap: 8px; background: ${g}; border: 1px solid ${m}; border-radius: 12px; padding: 8px 12px; transition: border-color 0.2s, box-shadow 0.2s; }\n .ihooman-input-wrapper:focus-within { border-color: ${e}; box-shadow: 0 0 0 3px rgba(0, 174, 255, 0.1); }\n .ihooman-input { flex: 1; border: none; background: transparent; font-family: inherit; font-size: 14px; color: ${u}; resize: none; max-height: 100px; outline: none; line-height: 1.4; }\n .ihooman-input::placeholder { color: ${h}; }\n .ihooman-input-btn { width: 36px; height: 36px; border-radius: 10px; border: none; cursor: pointer; display: flex; align-items: center; justify-content: center; transition: all 0.2s; background: transparent; color: ${h}; }\n .ihooman-input-btn:hover { background: ${m}; color: ${u}; }\n .ihooman-input-btn.send { background: linear-gradient(135deg, ${t}, ${n}); color: white; }\n .ihooman-input-btn.send:hover { transform: scale(1.05); box-shadow: 0 4px 12px rgba(0, 174, 255, 0.3); }\n .ihooman-input-btn.send:disabled { opacity: 0.5; cursor: not-allowed; transform: none; }\n .ihooman-input-btn svg { width: 18px; height: 18px; }\n .ihooman-file-input { display: none; }\n .ihooman-powered { text-align: center; padding: 8px; font-size: 11px; color: ${h}; background: ${d}; }\n .ihooman-powered a { color: ${e}; text-decoration: none; }\n .ihooman-error { padding: 16px; text-align: center; color: #ef4444; background: ${d}; }\n .ihooman-escalation-actions { display: flex; gap: 8px; margin-top: 12px; flex-wrap: wrap; }\n .ihooman-escalation-btn { display: inline-flex; align-items: center; gap: 6px; padding: 10px 16px; border-radius: 8px; border: none; cursor: pointer; font-family: inherit; font-size: 13px; font-weight: 500; transition: all 0.2s ease; }\n .ihooman-escalation-btn svg { width: 16px; height: 16px; }\n .ihooman-escalation-btn.primary { background: linear-gradient(135deg, ${t}, ${n}); color: white; }\n .ihooman-escalation-btn.primary:hover { transform: translateY(-1px); box-shadow: 0 4px 12px rgba(0, 174, 255, 0.3); }\n .ihooman-escalation-btn.secondary { background: ${l?"rgba(255,255,255,0.1)":"rgba(0,0,0,0.05)"}; color: ${u}; border: 1px solid ${m}; }\n .ihooman-escalation-btn.secondary:hover { background: ${l?"rgba(255,255,255,0.15)":"rgba(0,0,0,0.08)"}; }\n .ihooman-escalation-btn:disabled { opacity: 0.5; cursor: not-allowed; transform: none; }\n .ihooman-status-bar { padding: 10px 16px; text-align: center; font-size: 13px; display: none; }\n .ihooman-status-bar.show { display: block; }\n .ihooman-status-bar.waiting { background: #fef3c7; color: #92400e; }\n .ihooman-status-bar.connected { background: #dcfce7; color: #166534; }\n .ihooman-chat-view { display: flex; flex-direction: column; flex: 1; overflow: hidden; }\n .ihooman-chat-view.hidden { display: none; }\n .ihooman-ticket-view { display: none; flex-direction: column; padding: 20px; gap: 16px; background: ${d}; flex: 1; overflow-y: auto; }\n .ihooman-ticket-view.show { display: flex; }\n .ihooman-ticket-title { font-size: 18px; font-weight: 600; color: ${u}; margin: 0; display: flex; align-items: center; gap: 8px; }\n .ihooman-ticket-subtitle { font-size: 13px; color: ${h}; margin: 0; }\n .ihooman-ticket-input { padding: 12px 14px; border: 1px solid ${m}; border-radius: 10px; font-size: 14px; font-family: inherit; background: ${g}; color: ${u}; outline: none; transition: border-color 0.2s; }\n .ihooman-ticket-input:focus { border-color: ${e}; }\n .ihooman-ticket-input::placeholder { color: ${h}; }\n .ihooman-ticket-textarea { min-height: 100px; resize: vertical; }\n .ihooman-ticket-submit { padding: 14px; background: linear-gradient(135deg, ${t}, ${n}); color: white; border: none; border-radius: 10px; font-size: 14px; font-weight: 500; cursor: pointer; transition: all 0.2s; }\n .ihooman-ticket-submit:hover { transform: translateY(-1px); box-shadow: 0 4px 12px rgba(0, 174, 255, 0.3); }\n .ihooman-ticket-submit:disabled { opacity: 0.5; cursor: not-allowed; transform: none; }\n .ihooman-ticket-back { padding: 10px; background: transparent; color: ${h}; border: 1px solid ${m}; border-radius: 10px; font-size: 13px; cursor: pointer; transition: all 0.2s; }\n .ihooman-ticket-back:hover { background: ${l?"rgba(255,255,255,0.05)":"rgba(0,0,0,0.03)"}; }\n .ihooman-action-buttons { display: flex; gap: 8px; padding: 0 16px 12px; }\n .ihooman-action-btn { flex: 1; padding: 10px; border: none; border-radius: 8px; font-size: 13px; font-weight: 500; cursor: pointer; display: flex; align-items: center; justify-content: center; gap: 6px; transition: all 0.2s; }\n .ihooman-action-btn svg { width: 16px; height: 16px; }\n .ihooman-action-btn.ticket { background: #6366f1; color: white; }\n .ihooman-action-btn.ticket:hover { background: #4f46e5; }\n .ihooman-action-btn.live { background: #10b981; color: white; }\n .ihooman-action-btn.live:hover { background: #059669; }\n .ihooman-action-btn:disabled { opacity: 0.5; cursor: not-allowed; }\n @media (max-width: 480px) { .ihooman-window { width: calc(100vw - 20px); height: calc(100vh - 100px); left: 10px; right: 10px; bottom: 80px; max-height: none; } .ihooman-toggle { ${x?"right: 16px":"left: 16px"}; bottom: 16px; } }\n `}(),document.head.appendChild(e);const t=document.createElement("div");t.className="ihooman-widget",t.innerHTML=`\n <button class="ihooman-toggle" aria-label="Open chat">\n <span class="ihooman-pulse"></span>\n <span class="ihooman-badge"></span>\n <span class="chat-icon">${n}</span>\n <span class="close-icon">${o}</span>\n </button>\n <div class="ihooman-window" role="dialog" aria-label="Chat window">\n <div class="ihooman-container">\n <div class="ihooman-header">\n <div class="ihooman-header-avatar">${p.avatarUrl?`<img src="${y(p.avatarUrl)}" alt="Support">`:c}</div>\n <div class="ihooman-header-info">\n <div class="ihooman-header-title">${y(p.title||"Chat Support")}</div>\n <div class="ihooman-header-status"><span class="ihooman-status-dot"></span><span class="ihooman-status-text">Online</span></div>\n </div>\n <div class="ihooman-header-actions">\n <button class="ihooman-header-btn" data-action="refresh" title="New conversation">${r}</button>\n <button class="ihooman-header-btn" data-action="minimize" title="Minimize">${s}</button>\n </div>\n </div>\n \n \x3c!-- Chat View --\x3e\n <div class="ihooman-chat-view">\n <div class="ihooman-status-bar"></div>\n <div class="ihooman-messages" role="log" aria-live="polite"></div>\n <div class="ihooman-action-buttons">\n <button class="ihooman-action-btn ticket" data-action="show-ticket">\n <svg viewBox="0 0 24 24" fill="currentColor"><path d="M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-5 14H7v-2h7v2zm3-4H7v-2h10v2zm0-4H7V7h10v2z"/></svg>\n Submit Ticket\n </button>\n <button class="ihooman-action-btn live" data-action="live-agent">\n <svg viewBox="0 0 24 24" fill="currentColor"><path d="M12 12c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm0 2c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66-5.33-4-8-4z"/></svg>\n Live Agent\n </button>\n </div>\n <div class="ihooman-input-area">\n <div class="ihooman-input-wrapper">\n ${p.enableFileUpload?`<button class="ihooman-input-btn attach" title="Attach file">${a}</button><input type="file" class="ihooman-file-input">`:""}\n <textarea class="ihooman-input" placeholder="${y(p.placeholder||"Type a message...")}" rows="1" aria-label="Message input"></textarea>\n <button class="ihooman-input-btn send" title="Send message" disabled>${i}</button>\n </div>\n </div>\n </div>\n \n \x3c!-- Ticket Form View --\x3e\n <div class="ihooman-ticket-view">\n <h4 class="ihooman-ticket-title">📝 Submit a Ticket</h4>\n <p class="ihooman-ticket-subtitle">We'll get back to you via email</p>\n <input class="ihooman-ticket-input" id="ihooman-ticket-name" placeholder="Your name" required>\n <input class="ihooman-ticket-input" id="ihooman-ticket-email" type="email" placeholder="Your email" required>\n <textarea class="ihooman-ticket-input ihooman-ticket-textarea" id="ihooman-ticket-issue" placeholder="Describe your issue..."></textarea>\n <button class="ihooman-ticket-submit" id="ihooman-ticket-submit">Submit Ticket</button>\n <button class="ihooman-ticket-back" id="ihooman-ticket-back">← Back to Chat</button>\n </div>\n \n ${p.poweredBy?'<div class="ihooman-powered">Powered by <a href="https://ihooman.ai" target="_blank" rel="noopener">Ihooman AI</a></div>':""}\n </div>\n </div>\n `,document.body.appendChild(t),m={widget:t,toggle:t.querySelector(".ihooman-toggle"),badge:t.querySelector(".ihooman-badge"),window:t.querySelector(".ihooman-window"),chatView:t.querySelector(".ihooman-chat-view"),ticketView:t.querySelector(".ihooman-ticket-view"),messages:t.querySelector(".ihooman-messages"),input:t.querySelector(".ihooman-input"),sendBtn:t.querySelector(".ihooman-input-btn.send"),attachBtn:t.querySelector(".ihooman-input-btn.attach"),fileInput:t.querySelector(".ihooman-file-input"),statusDot:t.querySelector(".ihooman-status-dot"),statusText:t.querySelector(".ihooman-status-text"),statusBar:t.querySelector(".ihooman-status-bar"),ticketName:t.querySelector("#ihooman-ticket-name"),ticketEmail:t.querySelector("#ihooman-ticket-email"),ticketIssue:t.querySelector("#ihooman-ticket-issue"),ticketSubmitBtn:t.querySelector("#ihooman-ticket-submit"),ticketBackBtn:t.querySelector("#ihooman-ticket-back")},function(){if(!m.toggle||!m.sendBtn||!m.input)return;m.toggle.addEventListener("click",W),m.sendBtn.addEventListener("click",U),m.input.addEventListener("input",()=>{m.sendBtn&&(m.sendBtn.disabled=!m.input?.value.trim()),m.input&&(m.input.style.height="auto",m.input.style.height=Math.min(m.input.scrollHeight,100)+"px")}),m.input.addEventListener("keydown",e=>{"Enter"!==e.key||e.shiftKey||(e.preventDefault(),m.sendBtn?.disabled||U())}),m.attachBtn&&m.fileInput&&(m.attachBtn.addEventListener("click",()=>m.fileInput?.click()),m.fileInput.addEventListener("change",M));m.widget?.querySelector('[data-action="refresh"]')?.addEventListener("click",D),m.widget?.querySelector('[data-action="minimize"]')?.addEventListener("click",H),m.widget?.querySelector('[data-action="show-ticket"]')?.addEventListener("click",_),m.widget?.querySelector('[data-action="live-agent"]')?.addEventListener("click",B),m.ticketSubmitBtn&&m.ticketSubmitBtn.addEventListener("click",C);m.ticketBackBtn&&m.ticketBackBtn.addEventListener("click",()=>S("chat"))}()}function A(e,t="bot",n={}){const o={id:v("msg_"),content:e,sender:t,timestamp:new Date,metadata:n};if(u.messages.push(o),!m.messages)return o;const i=document.createElement("div");i.className=`ihooman-message ${t}`;const a="bot"===t&&!0===n?.escalation_offered;let s="";var r,c;if(a&&(s=`\n <div class="ihooman-escalation-actions">\n <button class="ihooman-escalation-btn primary" data-action="live-agent">\n ${l}\n <span>Talk to Agent</span>\n </button>\n <button class="ihooman-escalation-btn secondary" data-action="create-ticket">\n ${d}\n <span>Create Ticket</span>\n </button>\n </div>\n `),i.innerHTML=`\n <div class="ihooman-message-content">${c=e,c?y(c).replace(/\*\*(.*?)\*\*/g,"<strong>$1</strong>").replace(/\*(.*?)\*/g,"<em>$1</em>").replace(/`(.*?)`/g,"<code>$1</code>").replace(/\n/g,"<br>"):""}</div>\n ${s}\n ${p.showTimestamps?`<div class="ihooman-message-time">${r=o.timestamp,new Date(r).toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"})}</div>`:""}\n `,a){const e=i.querySelector('[data-action="live-agent"]'),t=i.querySelector('[data-action="create-ticket"]');e&&e.addEventListener("click",()=>$("live-agent")),t&&t.addEventListener("click",()=>$("create-ticket"))}const h=m.messages.querySelector(".ihooman-typing");return h&&h.remove(),m.messages.appendChild(i),m.messages.scrollTop=m.messages.scrollHeight,"bot"!==t||u.isOpen||(u.unreadCount++,m.badge&&(m.badge.textContent=String(u.unreadCount)),p.enableSounds&&function(){try{const e=new Audio("data:audio/mp3;base64,SUQzBAAAAAAAI1RTU0UAAAAPAAADTGF2ZjU4Ljc2LjEwMAAAAAAAAAAAAAAA//tQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWGluZwAAAA8AAAACAAABhgC7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7//////////////////////////////////////////////////////////////////8AAAAATGF2YzU4LjEzAAAAAAAAAAAAAAAAJAAAAAAAAAAAAYYNBrP/AAAAAAAAAAAAAAAAAAAAAP/7UMQAA8AAAaQAAAAgAAA0gAAABExBTUUzLjEwMFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//tQxBKDwAABpAAAACAAADSAAAAEVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVU=");e.volume=.3,e.play().catch(()=>{})}catch{}}()),V("message",o),o}function $(e){document.querySelectorAll(".ihooman-escalation-btn").forEach(e=>e.disabled=!0),"live-agent"===e?B():"create-ticket"===e&&_()}function S(e){m.chatView&&m.chatView.classList.toggle("hidden","chat"!==e),m.ticketView&&m.ticketView.classList.toggle("show","ticket"===e)}function _(){S("ticket"),setTimeout(()=>m.ticketName?.focus(),100)}function I(e,t){m.statusBar&&("hidden"!==e?(m.statusBar.classList.add("show"),m.statusBar.classList.remove("waiting","connected"),m.statusBar.classList.add(e),t&&(m.statusBar.textContent=t)):m.statusBar.classList.remove("show"))}async function C(){const e=m.ticketName?.value.trim(),t=m.ticketEmail?.value.trim(),n=m.ticketIssue?.value.trim();if(e&&t){m.ticketSubmitBtn&&(m.ticketSubmitBtn.disabled=!0,m.ticketSubmitBtn.textContent="Submitting...");try{const o=await fetch(`${p.serverUrl}/api/v1/public/submit-ticket`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({session_id:u.sessionId,user_name:e,user_email:t,issue:n||"No description provided",escalation_type:"ticket",widget_id:p.widgetId})}),i=await o.json();m.ticketName&&(m.ticketName.value=""),m.ticketEmail&&(m.ticketEmail.value=""),m.ticketIssue&&(m.ticketIssue.value=""),S("chat");A(`✅ Ticket submitted! We'll contact you at ${t}. Reference: #${i.ticket_id?i.ticket_id.slice(0,8):"submitted"}`,"bot",{is_system_message:!0})}catch(e){console.error("Error submitting ticket:",e),A("❌ Error submitting ticket. Please try again.","bot",{is_system_message:!0})}m.ticketSubmitBtn&&(m.ticketSubmitBtn.disabled=!1,m.ticketSubmitBtn.textContent="Submit Ticket")}else alert("Please fill in your name and email")}async function B(){if(!u.sessionId)return void A("Please send a message first to start a conversation.","bot",{is_system_message:!0});const e=m.widget?.querySelector('[data-action="live-agent"]');e&&(e.disabled=!0,e.innerHTML='<svg viewBox="0 0 24 24" fill="currentColor"><path d="M12 12c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm0 2c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66-5.33-4-8-4z"/></svg> Connecting...');try{const e=await fetch(`${p.serverUrl}/api/v1/public/live-agent`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({session_id:u.sessionId,visitor_id:u.visitorId,widget_id:p.widgetId})}),t=await e.json();h=!0,t.position_in_queue&&t.position_in_queue>1?I("waiting",`⏳ Waiting for agent (Position: #${t.position_in_queue})`):I("waiting","⏳ Connecting to live support...");const n=m.widget?.querySelector(".ihooman-action-buttons");n&&(n.style.display="none"),function(){if(T)return;T=setInterval(async()=>{if(u.sessionId&&h)try{const e=await fetch(`${p.serverUrl}/api/v1/public/transcript/${u.sessionId}`,{headers:{"Content-Type":"application/json"}});if(!e.ok)return;const t=await e.json(),n=t.messages?.length||0;if(n>z){t.messages.slice(z).forEach(e=>{"agent"===e.sender_type?A(e.content,"bot",{agent_name:"Agent"}):"ai"===e.sender_type&&e.content.includes("connected to live support")&&A(e.content,"bot",{is_system_message:!0})}),z=n}if("closed"===t.status){h=!1,E(),I("hidden"),A("This conversation has been closed. Thank you for contacting us!","bot",{is_system_message:!0});const e=m.widget?.querySelector(".ihooman-action-buttons");e&&(e.style.display="flex")}try{const e=await fetch(`${p.serverUrl}/api/v1/public/escalation-status/${u.sessionId}`);if(e.ok){const t=await e.json();t.escalated&&("in_progress"===t.ticket_status?I("connected","🟢 Connected to live agent"):"open"===t.ticket_status&&(t.position_in_queue&&t.position_in_queue>1?I("waiting",`⏳ Waiting for agent (Position: #${t.position_in_queue})`):I("waiting","⏳ Waiting for agent...")))}}catch{}}catch(e){console.error("Error polling for messages:",e)}else E()},3e3)}()}catch(e){console.error("Error requesting live agent:",e),A("❌ Unable to connect to live support. Please try again.","bot",{is_system_message:!0})}e&&(e.disabled=!1,e.innerHTML='<svg viewBox="0 0 24 24" fill="currentColor"><path d="M12 12c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm0 2c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66-5.33-4-8-4z"/></svg> Live Agent')}let T=null,z=0;function E(){T&&(clearInterval(T),T=null)}function L(){if(!p.showTypingIndicator||!m.messages)return;if(m.messages.querySelector(".ihooman-typing"))return;const e=document.createElement("div");e.className="ihooman-typing",e.innerHTML='<div class="ihooman-typing-dots"><span class="ihooman-typing-dot"></span><span class="ihooman-typing-dot"></span><span class="ihooman-typing-dot"></span></div>',m.messages.appendChild(e),m.messages.scrollTop=m.messages.scrollHeight}function q(){const e=m.messages?.querySelector(".ihooman-typing");e&&e.remove()}function U(){const e=m.input?.value.trim();e&&(m.input&&(m.input.value="",m.input.style.height="auto"),m.sendBtn&&(m.sendBtn.disabled=!0),A(e,"user"),L(),async function(e){if(b&&b.readyState===WebSocket.OPEN)return void b.send(JSON.stringify({type:"message",content:e}));try{const t=await fetch(`${p.serverUrl}/api/v1/public/chat`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({message:e,session_id:u.sessionId,visitor_id:u.visitorId,widget_id:p.widgetId})}),n=await t.json();q(),n.session_id&&(u.sessionId=n.session_id,p.persistSession&&w("session_id",u.sessionId)),n.response&&A(n.response,"bot",{sources:n.sources,confidence:n.confidence})}catch(e){q(),A("Sorry, something went wrong. Please try again.","bot"),V("error",e)}}(e))}function M(e){const t=e.target,n=t.files?.[0];if(!n)return;A(`📎 Uploading: ${n.name}...`,"user"),L();const o=new FormData;o.append("file",n),o.append("session_id",u.sessionId||""),o.append("visitor_id",u.visitorId||""),o.append("widget_id",p.widgetId),fetch(`${p.serverUrl}/api/upload`,{method:"POST",body:o}).then(e=>e.json()).then(e=>{q(),e.message&&A(e.message,"bot")}).catch(()=>{q(),A("Failed to upload file.","bot")}),t.value=""}function O(e){if(!p.serverUrl&&!e)return;let t;if(p.widgetId){const e=p.serverUrl?.replace(/^http/,"ws"),n=new URLSearchParams({widget_id:p.widgetId});u.visitorId&&n.append("visitor_id",u.visitorId),u.sessionId&&n.append("session_id",u.sessionId),t=`${e}/public/ws?${n.toString()}`}else t=e||p.serverUrl?.replace(/^http/,"ws")+"/ws";try{b=new WebSocket(t),b.onopen=()=>{u.isConnected=!0,x=0,N(!0),V("connected")},b.onclose=()=>{if(u.isConnected=!1,N(!1),V("disconnected"),x<5){x++;const t=Math.min(1e3*Math.pow(2,x),3e4);setTimeout(()=>O(e),t)}else console.warn("WebSocket reconnection failed, falling back to polling"),F()},b.onerror=e=>{console.error("WebSocket error:",e)},b.onmessage=e=>{try{const t=JSON.parse(e.data);if("connected"===t.type)t.session_id&&(u.sessionId=t.session_id,p.persistSession&&w("session_id",u.sessionId)),t.visitor_id&&(u.visitorId=t.visitor_id,p.persistSession&&w("visitor_id",u.visitorId)),t.welcome_message&&0===u.messages.length&&A(t.welcome_message,"bot");else if("message"===t.type){q();const e="user"===t.sender?"user":"bot";A(t.content,e,{confidence:t.confidence,agent_name:t.agent_name,escalation_offered:t.escalation_offered,escalated:t.escalated})}else"typing"===t.type?t.is_typing?L():q():"pong"===t.type||"error"===t.type&&(console.error("WebSocket server error:",t.message),V("error",{message:t.message}))}catch{}},function(){if(j)return;j=setInterval(()=>{b&&b.readyState===WebSocket.OPEN&&b.send(JSON.stringify({type:"ping"}))},3e4)}()}catch{console.warn("WebSocket not supported, using polling"),F()}}let j=null;function F(){f||(f=setInterval(async()=>{if(u.sessionId)try{const e=await fetch(`${p.serverUrl}/api/messages?session_id=${u.sessionId}&since=${Date.now()-5e3}&widget_id=${p.widgetId}`),t=await e.json();t.messages&&t.messages.forEach(e=>{u.messages.find(t=>t.id===e.id)||A(e.content,e.sender_type,e.metadata)})}catch{}},5e3))}function N(e){m.statusDot&&m.statusDot.classList.toggle("offline",!e),m.statusText&&(m.statusText.textContent=e?"Online":"Offline")}function P(){u.isOpen||(u.isOpen=!0,u.unreadCount=0,m.badge&&(m.badge.textContent=""),m.toggle&&m.toggle.classList.add("open"),m.window&&m.window.classList.add("open"),setTimeout(()=>m.input?.focus(),300),V("open"))}function H(){u.isOpen&&(u.isOpen=!1,m.toggle&&m.toggle.classList.remove("open"),m.window&&m.window.classList.remove("open"),V("close"))}function W(){u.isOpen?H():P()}function D(){u.sessionId=null,u.messages=[],w("session_id",null),m.messages&&(m.messages.innerHTML=""),p.welcomeMessage&&A(p.welcomeMessage,"bot")}async function Y(e){if(!e.widgetId)return console.error("IhoomanChat: widgetId is required"),null;p={...t,...e},u.visitorId=w("visitor_id")||v("v_"),w("visitor_id",u.visitorId),p.persistSession&&(u.sessionId=w("session_id"));const n=p.serverUrl||"https://api.ihooman.ai",o=await async function(e,t){try{const n=await fetch(`${t}/api/widget/config?widget_id=${encodeURIComponent(e)}`);return n.ok?await n.json():{success:!1,error:(await n.json().catch(()=>({}))).error||`HTTP ${n.status}`}}catch(e){return{success:!1,error:"Unable to connect. Please check your internet connection."}}}(p.widgetId,n);let i;var a;return o.success&&o.config?(a=o.config,p.title=a.title||p.title,p.subtitle=a.subtitle||p.subtitle,p.welcomeMessage=a.welcomeMessage||p.welcomeMessage,p.placeholder=a.placeholder||p.placeholder,p.position=a.position||p.position,a.theme&&(p.primaryColor=a.theme.primaryColor||p.primaryColor,p.gradientFrom=a.theme.gradientFrom||p.gradientFrom,p.gradientTo=a.theme.gradientTo||p.gradientTo,p.fontFamily=a.theme.fontFamily||p.fontFamily,a.theme.borderRadius&&(p.borderRadius=parseInt(a.theme.borderRadius,10)||p.borderRadius)),a.behavior&&(p.startOpen=a.behavior.startOpen??p.startOpen,p.showTypingIndicator=a.behavior.showTypingIndicator??p.showTypingIndicator,p.showTimestamps=a.behavior.showTimestamps??p.showTimestamps,p.enableSounds=a.behavior.enableSounds??p.enableSounds,p.enableFileUpload=a.behavior.enableFileUpload??p.enableFileUpload,p.persistSession=a.behavior.persistSession??p.persistSession),a.branding&&(p.avatarUrl=a.branding.avatarUrl||p.avatarUrl,p.poweredBy=a.branding.poweredBy??p.poweredBy),i=o.chatEndpoint):o.error&&(console.warn("IhoomanChat: Could not fetch server config:",o.error),"Widget not authorized for this domain"===o.error&&console.error("IhoomanChat: Widget configuration error. Please contact support.")),k(),u.messages.forEach(e=>A(e.content,e.sender,e.metadata)),0===u.messages.length&&p.welcomeMessage&&A(p.welcomeMessage,"bot"),O(i),p.startOpen&&setTimeout(P,500),V("ready"),R}const R={init:Y,open:P,close:H,toggle:W,destroy:function(){j&&(clearInterval(j),j=null),E(),b&&(b.close(),b=null),f&&(clearInterval(f),f=null),m.widget&&m.widget.remove();const e=document.getElementById("ihooman-widget-styles");e&&e.remove(),u={isOpen:!1,isConnected:!1,messages:[],sessionId:null,visitorId:null,unreadCount:0},m={},x=0},sendMessage:function(e){e.trim()&&(m.input&&(m.input.value=e),U())},setUser:function(e){e.name&&w("user_name",e.name),e.email&&w("user_email",e.email),e.metadata&&w("user_metadata",e.metadata)},clearHistory:function(){D()},on:function(e,t){g[e]||(g[e]=[]),g[e].push(t)},off:function(e,t){g[e]&&(g[e]=g[e].filter(e=>e!==t))},getState:function(){return{...u}},version:"2.0.0"},J=R;!function(){if("undefined"==typeof document)return;let e=document.currentScript;if(!e){const t=document.getElementsByTagName("script");for(let n=0;n<t.length;n++)if(t[n].src&&t[n].src.includes("ihooman")){e=t[n];break}}if(!e)return;const t=e.getAttribute("data-widget-id");if(t){const n={widgetId:t},o=e.getAttribute("data-server-url");o&&(n.serverUrl=o);const i=e.getAttribute("data-theme");"light"!==i&&"dark"!==i||(n.theme=i);const a=e.getAttribute("data-position");a&&(n.position=a);"true"===e.getAttribute("data-start-open")&&(n.startOpen=!0),"loading"===document.readyState?document.addEventListener("DOMContentLoaded",()=>Y(n)):Y(n)}}(),"undefined"!=typeof window&&(window.IhoomanChat=J),e.IhoomanChat=J,e.createWidgetInstance=function(){return{...R}},e.default=J,Object.defineProperty(e,"__esModule",{value:!0})});
2
+ //# sourceMappingURL=index.umd.min.js.map