jibtalk-core 0.1.0 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export declare const STYLES_CSS = "\n#jibtalk-sdk-root {\n position: fixed;\n z-index: 9999;\n font-family: 'Outfit', 'Vazirmatn', -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif;\n direction: ltr;\n \n /* Brand colors */\n --primary: #00AC78;\n --secondary: #FF6FA8;\n \n /* Default Dark Mode variables */\n --theme-white: 255, 255, 255;\n --theme-bg: 16, 18, 17;\n --theme-placeholder: 107, 124, 118;\n --theme-hint: 158, 180, 173;\n --theme-surface-elevated: 25, 29, 27;\n --theme-surface-soft: 34, 39, 37;\n --theme-border-soft: 107, 124, 118;\n --theme-backdrop: 0, 0, 0;\n \n --color-white: rgb(var(--theme-white));\n --color-bg: rgb(var(--theme-bg));\n --color-placeholder: rgb(var(--theme-placeholder));\n --color-hint: rgb(var(--theme-hint));\n --color-surface: rgb(var(--theme-surface-elevated));\n --color-surface-soft: rgb(var(--theme-surface-soft));\n --color-border-soft: rgb(var(--theme-border-soft));\n \n --rounded-md: 6px;\n --rounded-lg: 8px;\n --rounded-xl: 12px;\n --rounded-2xl: 16px;\n}\n\n/* Position options */\n#jibtalk-sdk-root.position-bottom-right { bottom: 20px; right: 20px; }\n#jibtalk-sdk-root.position-bottom-left { bottom: 20px; left: 20px; }\n#jibtalk-sdk-root.position-top-right { top: 20px; right: 20px; }\n#jibtalk-sdk-root.position-top-left { top: 20px; left: 20px; }\n\n/* Light theme overrides */\n#jibtalk-sdk-root[data-theme='light'] {\n --theme-white: 27, 36, 32; /* Dark slate text */\n --theme-bg: 242, 247, 245; /* Soft Teal-Gray */\n --theme-placeholder: 122, 141, 133;\n --theme-hint: 83, 100, 92;\n --theme-surface-elevated: 251, 253, 252;\n --theme-surface-soft: 231, 239, 235;\n --theme-border-soft: 180, 197, 190;\n --theme-backdrop: 16, 18, 17;\n}\n\n.jibtalk-sdk-btn {\n background: linear-gradient(135deg, var(--primary), var(--secondary));\n color: white;\n border: none;\n border-radius: 50%;\n width: 60px;\n height: 60px;\n cursor: pointer;\n box-shadow: 0 4px 15px rgba(0, 0, 0, 0.2);\n display: flex;\n align-items: center;\n justify-content: center;\n transition: transform 0.3s ease-in-out, box-shadow 0.3s ease-in-out, opacity 0.3s ease-in-out;\n position: relative;\n}\n\n.jibtalk-sdk-btn:hover {\n transform: scale(1.02);\n opacity: 0.9;\n box-shadow: inset 0 0 12px rgba(0, 0, 0, 0.2), 0 6px 20px rgba(0, 0, 0, 0.25);\n}\n\n.jibtalk-sdk-unread-badge {\n position: absolute;\n top: -2px;\n right: -2px;\n background-color: var(--secondary);\n color: white;\n border-radius: 50%;\n width: 20px;\n height: 20px;\n font-size: 11px;\n font-weight: 700;\n display: flex;\n align-items: center;\n justify-content: center;\n border: 2px solid var(--color-surface);\n animation: pulse 1.5s infinite;\n}\n\n@keyframes pulse {\n 0% { transform: scale(1); }\n 50% { transform: scale(1.15); }\n 100% { transform: scale(1); }\n}\n\n.jibtalk-sdk-window {\n width: 350px;\n height: 500px;\n background: rgba(var(--theme-surface-elevated), 0.85);\n backdrop-filter: blur(16px);\n -webkit-backdrop-filter: blur(16px);\n border-radius: var(--rounded-2xl);\n box-shadow: inset 0 2px 4px 0 rgba(0, 0, 0, 0.06), 0 10px 40px rgba(0, 0, 0, 0.15);\n display: flex;\n flex-direction: column;\n overflow: hidden;\n border: 1px solid rgba(var(--theme-border-soft), 0.4);\n animation: jibtalkSlideUp 0.3s cubic-bezier(0.16, 1, 0.3, 1);\n color: var(--color-white);\n}\n\n@keyframes jibtalkSlideUp {\n from { opacity: 0; transform: translateY(20px); }\n to { opacity: 1; transform: translateY(0); }\n}\n\n.jibtalk-sdk-header {\n background: linear-gradient(135deg, var(--primary), var(--secondary));\n color: white;\n padding: 16px;\n display: flex;\n justify-content: space-between;\n align-items: center;\n border-bottom: 1px solid rgba(var(--theme-border-soft), 0.3);\n}\n\n.jibtalk-sdk-header h4 {\n margin: 0;\n font-size: 16px;\n font-weight: 600;\n}\n\n.jibtalk-sdk-close-btn {\n background: none;\n border: none;\n color: white;\n font-size: 24px;\n cursor: pointer;\n line-height: 1;\n opacity: 0.8;\n transition: opacity 0.3s ease-in-out;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n}\n\n.jibtalk-sdk-close-btn:hover {\n opacity: 1;\n}\n\n.jibtalk-sdk-messages {\n flex: 1;\n padding: 16px;\n overflow-y: auto;\n display: flex;\n flex-direction: column;\n gap: 12px;\n background-color: rgba(var(--theme-bg), 0.8);\n scrollbar-width: thin;\n scrollbar-color: var(--primary) transparent;\n}\n\n/* Custom Scrollbar */\n@supports not (scrollbar-color: auto) {\n .jibtalk-sdk-messages::-webkit-scrollbar {\n width: 6px;\n height: 6px;\n }\n .jibtalk-sdk-messages::-webkit-scrollbar-thumb {\n background: var(--primary);\n border-radius: 3px;\n }\n .jibtalk-sdk-messages::-webkit-scrollbar-track {\n background: transparent;\n }\n}\n\n.jibtalk-sdk-message {\n max-width: 80%;\n padding: 10px 14px;\n border-radius: var(--rounded-xl);\n font-size: 14px;\n line-height: 1.4;\n word-wrap: break-word;\n}\n\n.jibtalk-sdk-message-self {\n align-self: flex-end;\n background: linear-gradient(135deg, var(--primary), var(--secondary));\n color: white;\n border-bottom-right-radius: 4px;\n}\n\n.jibtalk-sdk-message-other {\n align-self: flex-start;\n background: var(--color-surface);\n color: var(--color-white);\n border: 1px solid rgba(var(--theme-border-soft), 0.3);\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05);\n border-bottom-left-radius: 4px;\n}\n\n.jibtalk-sdk-input-area {\n padding: 12px;\n background: rgba(var(--theme-surface-elevated), 0.95);\n display: flex;\n gap: 8px;\n border-top: 1px solid rgba(var(--theme-border-soft), 0.3);\n}\n\n.jibtalk-sdk-input {\n flex: 1;\n padding: 10px 14px;\n border: 1px solid rgba(var(--theme-placeholder), 0.5);\n border-radius: 20px;\n outline: none;\n font-size: 14px;\n background: transparent;\n color: var(--color-white);\n transition: border-color 0.3s ease-in-out;\n}\n\n.jibtalk-sdk-input::placeholder {\n color: rgba(var(--theme-placeholder), 0.8);\n}\n\n.jibtalk-sdk-input:focus {\n border-color: var(--primary);\n}\n\n.jibtalk-sdk-send-btn {\n background: linear-gradient(135deg, var(--primary), var(--secondary));\n color: white;\n border: none;\n border-radius: 20px;\n padding: 0 16px;\n font-weight: 500;\n cursor: pointer;\n transition: opacity 0.3s ease-in-out, transform 0.3s ease-in-out;\n}\n\n.jibtalk-sdk-send-btn:hover {\n opacity: 0.9;\n transform: scale(1.02);\n}\n";
1
+ export declare const STYLES_CSS = "\n#jibtalk-sdk-root {\n position: fixed;\n z-index: 9999;\n font-family: 'Outfit', 'Vazirmatn', -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif;\n direction: rtl;\n \n /* Brand colors */\n --primary: #26A17B;\n --secondary: #FAAF40;\n \n /* Default mode (Default Dark Mode) variables */\n --theme-white: 255, 255, 255;\n --theme-bg: 16, 18, 17;\n --theme-placeholder: 107, 124, 118;\n --theme-hint: 158, 180, 173;\n --theme-surface-elevated: 25, 29, 27;\n --theme-surface-soft: 34, 39, 37;\n --theme-border-soft: 107, 124, 118;\n --theme-backdrop: 0, 0, 0;\n \n --color-white: rgb(var(--theme-white));\n --color-bg: rgb(var(--theme-bg));\n --color-placeholder: rgb(var(--theme-placeholder));\n --color-hint: rgb(var(--theme-hint));\n --color-surface: rgb(var(--theme-surface-elevated));\n --color-surface-soft: rgb(var(--theme-surface-soft));\n --color-border-soft: rgb(var(--theme-border-soft));\n \n --rounded-md: 6px;\n --rounded-lg: 8px;\n --rounded-xl: 12px;\n --rounded-2xl: 16px;\n}\n\n/* System preferences override (if no theme is forced by host app) */\n@media (prefers-color-scheme: light) {\n #jibtalk-sdk-root:not([data-theme='dark']) {\n --theme-white: 27, 36, 32; /* Dark slate text */\n --theme-bg: 242, 247, 245; /* Soft Teal-Gray */\n --theme-placeholder: 122, 141, 133;\n --theme-hint: 83, 100, 92;\n --theme-surface-elevated: 251, 253, 252;\n --theme-surface-soft: 231, 239, 235;\n --theme-border-soft: 180, 197, 190;\n --theme-backdrop: 16, 18, 17;\n }\n}\n\n/* Strict Light theme override */\n#jibtalk-sdk-root[data-theme='light'] {\n --theme-white: 27, 36, 32; /* Dark slate text */\n --theme-bg: 242, 247, 245; /* Soft Teal-Gray */\n --theme-placeholder: 122, 141, 133;\n --theme-hint: 83, 100, 92;\n --theme-surface-elevated: 251, 253, 252;\n --theme-surface-soft: 231, 239, 235;\n --theme-border-soft: 180, 197, 190;\n --theme-backdrop: 16, 18, 17;\n}\n\n/* Strict Dark theme override */\n#jibtalk-sdk-root[data-theme='dark'] {\n --theme-white: 255, 255, 255;\n --theme-bg: 16, 18, 17;\n --theme-placeholder: 107, 124, 118;\n --theme-hint: 158, 180, 173;\n --theme-surface-elevated: 25, 29, 27;\n --theme-surface-soft: 34, 39, 37;\n --theme-border-soft: 107, 124, 118;\n --theme-backdrop: 0, 0, 0;\n}\n\n/* Position options */\n#jibtalk-sdk-root.position-bottom-right { bottom: 20px; right: 20px; }\n#jibtalk-sdk-root.position-bottom-left { bottom: 20px; left: 20px; }\n#jibtalk-sdk-root.position-top-right { top: 20px; right: 20px; }\n#jibtalk-sdk-root.position-top-left { top: 20px; left: 20px; }\n\n.jibtalk-sdk-btn {\n background: linear-gradient(135deg, var(--primary), var(--secondary));\n color: white;\n border: none;\n border-radius: 50%;\n width: 60px;\n height: 60px;\n cursor: pointer;\n box-shadow: 0 4px 15px rgba(0, 0, 0, 0.2);\n display: flex;\n align-items: center;\n justify-content: center;\n transition: transform 0.3s ease-in-out, box-shadow 0.3s ease-in-out, opacity 0.3s ease-in-out;\n position: relative;\n}\n\n.jibtalk-sdk-btn:hover {\n transform: scale(1.02);\n opacity: 0.9;\n box-shadow: inset 0 0 12px rgba(0, 0, 0, 0.2), 0 6px 20px rgba(0, 0, 0, 0.25);\n}\n\n.jibtalk-sdk-unread-badge {\n position: absolute;\n top: -2px;\n left: -2px;\n background-color: var(--secondary);\n color: white;\n border-radius: 50%;\n width: 20px;\n height: 20px;\n font-size: 11px;\n font-weight: 700;\n display: flex;\n align-items: center;\n justify-content: center;\n border: 2px solid var(--color-surface);\n animation: pulse 1.5s infinite;\n}\n\n@keyframes pulse {\n 0% { transform: scale(1); }\n 50% { transform: scale(1.15); }\n 100% { transform: scale(1); }\n}\n\n.jibtalk-sdk-window {\n width: 400px;\n height: 600px;\n background: rgba(var(--theme-surface-elevated), 0.85);\n backdrop-filter: blur(16px);\n -webkit-backdrop-filter: blur(16px);\n border-radius: var(--rounded-2xl);\n box-shadow: inset 0 2px 4px 0 rgba(0, 0, 0, 0.06), 0 10px 40px rgba(0, 0, 0, 0.15);\n display: flex;\n flex-direction: column;\n overflow: hidden;\n border: 1px solid rgba(var(--theme-border-soft), 0.4);\n animation: jibtalkSlideUp 0.3s cubic-bezier(0.16, 1, 0.3, 1);\n color: var(--color-white);\n}\n\n@keyframes jibtalkSlideUp {\n from { opacity: 0; transform: translateY(20px); }\n to { opacity: 1; transform: translateY(0); }\n}\n\n.jibtalk-sdk-header {\n background: linear-gradient(135deg, var(--primary), var(--secondary));\n color: white;\n padding: 16px;\n display: flex;\n justify-content: space-between;\n align-items: center;\n border-bottom: 1px solid rgba(var(--theme-border-soft), 0.3);\n}\n\n.jibtalk-sdk-header h4 {\n margin: 0;\n font-size: 16px;\n font-weight: 600;\n}\n\n.jibtalk-sdk-close-btn {\n background: none;\n border: none;\n color: white;\n font-size: 24px;\n cursor: pointer;\n line-height: 1;\n opacity: 0.8;\n transition: opacity 0.3s ease-in-out;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n}\n\n.jibtalk-sdk-close-btn:hover {\n opacity: 1;\n}\n\n.jibtalk-sdk-messages {\n flex: 1;\n padding: 16px;\n overflow-y: auto;\n display: flex;\n flex-direction: column;\n gap: 12px;\n background-color: rgba(var(--theme-bg), 0.8);\n scrollbar-width: thin;\n scrollbar-color: var(--primary) transparent;\n}\n\n/* Custom Scrollbar */\n@supports not (scrollbar-color: auto) {\n .jibtalk-sdk-messages::-webkit-scrollbar {\n width: 6px;\n height: 6px;\n }\n .jibtalk-sdk-messages::-webkit-scrollbar-thumb {\n background: var(--primary);\n border-radius: 3px;\n }\n .jibtalk-sdk-messages::-webkit-scrollbar-track {\n background: transparent;\n }\n}\n\n.jibtalk-sdk-message {\n max-width: 80%;\n padding: 10px 14px;\n border-radius: var(--rounded-xl);\n font-size: 14px;\n line-height: 1.4;\n word-wrap: break-word;\n}\n\n.jibtalk-sdk-message-self {\n align-self: flex-end;\n background: linear-gradient(135deg, var(--primary), var(--secondary));\n color: white;\n border-bottom-left-radius: 4px; /* Modified for RTL flow alignment */\n}\n\n.jibtalk-sdk-message-other {\n align-self: flex-start;\n background: var(--color-surface);\n color: var(--color-white);\n border: 1px solid rgba(var(--theme-border-soft), 0.3);\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05);\n border-bottom-right-radius: 4px; /* Modified for RTL flow alignment */\n}\n\n.jibtalk-sdk-input-area {\n padding: 12px;\n background: rgba(var(--theme-surface-elevated), 0.95);\n display: flex;\n gap: 8px;\n border-top: 1px solid rgba(var(--theme-border-soft), 0.3);\n}\n\n.jibtalk-sdk-input {\n flex: 1;\n padding: 10px 14px;\n border: 1px solid rgba(var(--theme-placeholder), 0.5);\n border-radius: 20px;\n outline: none;\n font-size: 14px;\n background: transparent;\n color: var(--color-white);\n transition: border-color 0.3s ease-in-out;\n}\n\n.jibtalk-sdk-input::placeholder {\n color: rgba(var(--theme-placeholder), 0.8);\n}\n\n.jibtalk-sdk-input:focus {\n border-color: var(--primary);\n}\n\n.jibtalk-sdk-send-btn {\n background: linear-gradient(135deg, var(--primary), var(--secondary));\n color: white;\n border: none;\n border-radius: 20px;\n padding: 0 16px;\n font-weight: 500;\n cursor: pointer;\n transition: opacity 0.3s ease-in-out, transform 0.3s ease-in-out;\n}\n\n.jibtalk-sdk-send-btn:hover {\n opacity: 0.9;\n transform: scale(1.02);\n}\n\n/* JibTalk Phase 2 Styles */\n.jibtalk-sdk-welcome-card {\n padding: 24px;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n text-align: center;\n height: 100%;\n box-sizing: border-box;\n background: rgba(var(--theme-bg), 0.8);\n}\n.jibtalk-sdk-avatars {\n display: flex;\n justify-content: center;\n margin-bottom: 16px;\n position: relative;\n height: 48px;\n width: 100px;\n}\n.jibtalk-sdk-avatar {\n width: 44px;\n height: 44px;\n border-radius: 50%;\n border: 2px solid var(--color-surface);\n background-color: var(--color-surface-soft);\n position: absolute;\n box-shadow: 0 4px 10px rgba(0, 0, 0, 0.15);\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 18px;\n}\n.jibtalk-sdk-avatar:nth-child(1) { right: 0; z-index: 3; }\n.jibtalk-sdk-avatar:nth-child(2) { right: 24px; z-index: 2; }\n.jibtalk-sdk-avatar:nth-child(3) { right: 48px; z-index: 1; }\n.jibtalk-sdk-status-row {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-bottom: 12px;\n font-size: 13px;\n color: var(--color-hint);\n}\n.jibtalk-sdk-status-dot {\n width: 8px;\n height: 8px;\n border-radius: 50%;\n background-color: #26A17B;\n box-shadow: 0 0 8px #26A17B;\n animation: statusPulse 2s infinite;\n}\n@keyframes statusPulse {\n 0% { transform: scale(1); opacity: 1; }\n 50% { transform: scale(1.2); opacity: 0.6; }\n 100% { transform: scale(1); opacity: 1; }\n}\n.jibtalk-sdk-welcome-title {\n font-size: 18px;\n font-weight: 700;\n margin: 0 0 8px 0;\n color: var(--color-white);\n}\n.jibtalk-sdk-welcome-text {\n font-size: 14px;\n line-height: 1.5;\n color: var(--color-hint);\n margin: 0 0 24px 0;\n}\n.jibtalk-sdk-start-btn {\n background: linear-gradient(135deg, var(--primary), var(--secondary));\n color: white;\n border: none;\n border-radius: var(--rounded-2xl);\n padding: 12px 32px;\n font-weight: 600;\n font-size: 14px;\n cursor: pointer;\n box-shadow: 0 4px 15px rgba(0, 0, 0, 0.2);\n transition: transform 0.3s, opacity 0.3s;\n}\n.jibtalk-sdk-start-btn:hover {\n transform: scale(1.03);\n opacity: 0.95;\n}\n.jibtalk-sdk-footer {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 6px;\n padding: 2px;\n font-size: 10px;\n color: var(--color-hint);\n opacity: 0.6;\n border-top: 1px solid rgba(var(--theme-border-soft), 0.2);\n background: rgba(var(--theme-surface-elevated), 0.5);\n text-decoration: none;\n}\n.jibtalk-sdk-footer:hover {\n opacity: 0.8;\n}\n.jibtalk-sdk-footer svg {\n color: var(--primary);\n}\n.jibtalk-sdk-message-container {\n position: relative;\n display: flex;\n align-items: center;\n max-width: 100%;\n gap: 8px;\n}\n.jibtalk-sdk-message-container.self {\n margin-left: auto;\n margin-right: 0;\n}\n.jibtalk-sdk-message-container.other {\n margin-right: auto;\n margin-left: 0;\n flex-direction: row-reverse;\n}\n.jibtalk-sdk-reply-action-btn {\n background: transparent;\n border: none;\n cursor: pointer;\n color: var(--color-hint);\n opacity: 0;\n transition: opacity 0.2s;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 4px;\n border-radius: 50%;\n}\n.jibtalk-sdk-reply-action-btn:hover {\n background-color: var(--color-surface-soft);\n color: var(--primary);\n}\n.jibtalk-sdk-message-container:hover .jibtalk-sdk-reply-action-btn {\n opacity: 1;\n}\n.jibtalk-sdk-reply-thread-preview {\n font-size: 12px;\n background: rgba(0, 0, 0, 0.15);\n border-inline-start: 3px solid var(--primary);\n padding: 6px 8px;\n border-radius: 4px;\n margin-bottom: 6px;\n color: rgba(var(--theme-white), 0.8);\n max-width: 100%;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n.jibtalk-sdk-reply-wrapper {\n padding: 8px 12px;\n background: rgba(var(--theme-surface-soft), 0.95);\n border-top: 1.5px solid var(--primary);\n display: flex;\n justify-content: space-between;\n align-items: center;\n font-size: 13px;\n animation: jibtalkSlideUp 0.2s;\n}\n.jibtalk-sdk-reply-content {\n display: flex;\n flex-direction: column;\n gap: 2px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n flex: 1;\n margin-inline-end: 12px;\n}\n.jibtalk-sdk-reply-title {\n font-weight: 600;\n font-size: 11px;\n color: var(--primary);\n}\n.jibtalk-sdk-reply-text {\n color: var(--color-hint);\n font-size: 12px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.jibtalk-sdk-reply-close {\n background: none;\n border: none;\n cursor: pointer;\n color: var(--color-hint);\n font-size: 16px;\n padding: 0 4px;\n display: flex;\n align-items: center;\n}\n.jibtalk-sdk-reply-close:hover {\n color: var(--color-white);\n}\n.jibtalk-sdk-emoji-trigger {\n background: none;\n border: none;\n color: var(--color-hint);\n cursor: pointer;\n padding: 4px 8px;\n display: flex;\n align-items: center;\n transition: color 0.2s;\n}\n.jibtalk-sdk-emoji-trigger:hover {\n color: var(--primary);\n}\n.jibtalk-sdk-emoji-popover {\n position: absolute;\n bottom: 60px;\n right: 12px;\n width: 250px;\n height: 180px;\n background: var(--color-surface);\n border: 1px solid rgba(var(--theme-border-soft), 0.4);\n border-radius: var(--rounded-lg);\n box-shadow: 0 8px 30px rgba(0,0,0,0.3);\n z-index: 1000;\n display: grid;\n grid-template-columns: repeat(6, 1fr);\n gap: 6px;\n padding: 10px;\n overflow-y: auto;\n animation: jibtalkSlideUp 0.15s cubic-bezier(0.16, 1, 0.3, 1);\n}\n.jibtalk-sdk-emoji-btn {\n background: none;\n border: none;\n font-size: 18px;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 4px;\n border-radius: 4px;\n transition: background-color 0.2s;\n}\n.jibtalk-sdk-emoji-btn:hover {\n background-color: var(--color-surface-soft);\n}\n.jibtalk-sdk-file-trigger {\n background: none;\n border: none;\n color: var(--color-hint);\n cursor: pointer;\n padding: 4px 8px;\n display: flex;\n align-items: center;\n transition: color 0.2s;\n}\n.jibtalk-sdk-file-trigger:hover {\n color: var(--primary);\n}\n.jibtalk-sdk-attachment-img {\n max-width: 100%;\n max-height: 180px;\n border-radius: var(--rounded-md);\n margin-top: 4px;\n display: block;\n cursor: pointer;\n}\n.jibtalk-sdk-attachment-video {\n max-width: 100%;\n max-height: 180px;\n border-radius: var(--rounded-md);\n margin-top: 4px;\n display: block;\n outline: none;\n}\n.jibtalk-sdk-attachment-doc {\n display: flex;\n align-items: center;\n gap: 8px;\n background: rgba(0, 0, 0, 0.1);\n padding: 8px 12px;\n border-radius: var(--rounded-md);\n margin-top: 4px;\n text-decoration: none;\n color: inherit;\n font-size: 13px;\n border: 1px solid rgba(var(--theme-border-soft), 0.2);\n}\n.jibtalk-sdk-attachment-doc:hover {\n background: rgba(0, 0, 0, 0.2);\n}\n.jibtalk-sdk-attachment-doc svg {\n color: #e53e3e;\n flex-shrink: 0;\n}\n.jibtalk-sdk-attachment-doc-info {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n";
2
2
  export declare const injectStyles: () => void;
3
3
  export interface JibTalkUser {
4
4
  id: string;
@@ -7,10 +7,11 @@ export interface JibTalkUser {
7
7
  avatar?: string;
8
8
  metadata?: Record<string, unknown>;
9
9
  }
10
+ export type ThemeTypes = 'light' | 'dark';
10
11
  export interface JibTalkOptions {
11
12
  apiKey: string;
12
13
  locale?: string;
13
- theme?: 'light' | 'dark';
14
+ theme?: ThemeTypes;
14
15
  position?: 'bottom-right' | 'bottom-left' | 'top-right' | 'top-left';
15
16
  primaryColor?: string;
16
17
  customer?: JibTalkUser;
@@ -30,7 +31,9 @@ export declare class JibTalkCore {
30
31
  unreadCount: number;
31
32
  currentConversation: any;
32
33
  messages: any[];
33
- theme: 'light' | 'dark';
34
+ workspaceName: string;
35
+ workspaceSlug: string;
36
+ theme: ThemeTypes;
34
37
  position: string;
35
38
  primaryColor: string;
36
39
  locale: string;
@@ -50,7 +53,13 @@ export declare class JibTalkCore {
50
53
  identify(user: JibTalkUser, timestamp?: number, signature?: string): void;
51
54
  setUser(user: JibTalkUser, timestamp?: number, signature?: string): void;
52
55
  logout(): void;
53
- sendMessage(content: string): void;
56
+ sendMessage(content: string, parentMessageId?: string, file?: {
57
+ url: string;
58
+ name: string;
59
+ type: string;
60
+ size: number;
61
+ }): void;
62
+ startConversation(): void;
54
63
  startTyping(): void;
55
64
  stopTyping(): void;
56
65
  on(event: JibTalkEvent, callback: Function): void;
@@ -788,12 +788,12 @@ var je = class extends F {
788
788
  }
789
789
  }, I = class extends je {
790
790
  constructor(e, t = {}) {
791
- let n = typeof e == "object", r = n ? { ...e } : { ...t };
792
- (!r.transports || r.transports && typeof r.transports[0] == "string") && (r.transports = (r.transports || [
791
+ let n = typeof e == "object" ? e : t;
792
+ (!n.transports || n.transports && typeof n.transports[0] == "string") && (n.transports = (n.transports || [
793
793
  "polling",
794
794
  "websocket",
795
795
  "webtransport"
796
- ]).map((e) => Ee[e]).filter((e) => !!e)), super(n ? r : e, r);
796
+ ]).map((e) => Ee[e]).filter((e) => !!e)), super(e, n);
797
797
  }
798
798
  };
799
799
  I.protocol;
@@ -1428,7 +1428,7 @@ Object.assign(Z, {
1428
1428
  });
1429
1429
  //#endregion
1430
1430
  //#region src/index.ts
1431
- var Q = "\n#jibtalk-sdk-root {\n position: fixed;\n z-index: 9999;\n font-family: 'Outfit', 'Vazirmatn', -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif;\n direction: ltr;\n \n /* Brand colors */\n --primary: #00AC78;\n --secondary: #FF6FA8;\n \n /* Default Dark Mode variables */\n --theme-white: 255, 255, 255;\n --theme-bg: 16, 18, 17;\n --theme-placeholder: 107, 124, 118;\n --theme-hint: 158, 180, 173;\n --theme-surface-elevated: 25, 29, 27;\n --theme-surface-soft: 34, 39, 37;\n --theme-border-soft: 107, 124, 118;\n --theme-backdrop: 0, 0, 0;\n \n --color-white: rgb(var(--theme-white));\n --color-bg: rgb(var(--theme-bg));\n --color-placeholder: rgb(var(--theme-placeholder));\n --color-hint: rgb(var(--theme-hint));\n --color-surface: rgb(var(--theme-surface-elevated));\n --color-surface-soft: rgb(var(--theme-surface-soft));\n --color-border-soft: rgb(var(--theme-border-soft));\n \n --rounded-md: 6px;\n --rounded-lg: 8px;\n --rounded-xl: 12px;\n --rounded-2xl: 16px;\n}\n\n/* Position options */\n#jibtalk-sdk-root.position-bottom-right { bottom: 20px; right: 20px; }\n#jibtalk-sdk-root.position-bottom-left { bottom: 20px; left: 20px; }\n#jibtalk-sdk-root.position-top-right { top: 20px; right: 20px; }\n#jibtalk-sdk-root.position-top-left { top: 20px; left: 20px; }\n\n/* Light theme overrides */\n#jibtalk-sdk-root[data-theme='light'] {\n --theme-white: 27, 36, 32; /* Dark slate text */\n --theme-bg: 242, 247, 245; /* Soft Teal-Gray */\n --theme-placeholder: 122, 141, 133;\n --theme-hint: 83, 100, 92;\n --theme-surface-elevated: 251, 253, 252;\n --theme-surface-soft: 231, 239, 235;\n --theme-border-soft: 180, 197, 190;\n --theme-backdrop: 16, 18, 17;\n}\n\n.jibtalk-sdk-btn {\n background: linear-gradient(135deg, var(--primary), var(--secondary));\n color: white;\n border: none;\n border-radius: 50%;\n width: 60px;\n height: 60px;\n cursor: pointer;\n box-shadow: 0 4px 15px rgba(0, 0, 0, 0.2);\n display: flex;\n align-items: center;\n justify-content: center;\n transition: transform 0.3s ease-in-out, box-shadow 0.3s ease-in-out, opacity 0.3s ease-in-out;\n position: relative;\n}\n\n.jibtalk-sdk-btn:hover {\n transform: scale(1.02);\n opacity: 0.9;\n box-shadow: inset 0 0 12px rgba(0, 0, 0, 0.2), 0 6px 20px rgba(0, 0, 0, 0.25);\n}\n\n.jibtalk-sdk-unread-badge {\n position: absolute;\n top: -2px;\n right: -2px;\n background-color: var(--secondary);\n color: white;\n border-radius: 50%;\n width: 20px;\n height: 20px;\n font-size: 11px;\n font-weight: 700;\n display: flex;\n align-items: center;\n justify-content: center;\n border: 2px solid var(--color-surface);\n animation: pulse 1.5s infinite;\n}\n\n@keyframes pulse {\n 0% { transform: scale(1); }\n 50% { transform: scale(1.15); }\n 100% { transform: scale(1); }\n}\n\n.jibtalk-sdk-window {\n width: 350px;\n height: 500px;\n background: rgba(var(--theme-surface-elevated), 0.85);\n backdrop-filter: blur(16px);\n -webkit-backdrop-filter: blur(16px);\n border-radius: var(--rounded-2xl);\n box-shadow: inset 0 2px 4px 0 rgba(0, 0, 0, 0.06), 0 10px 40px rgba(0, 0, 0, 0.15);\n display: flex;\n flex-direction: column;\n overflow: hidden;\n border: 1px solid rgba(var(--theme-border-soft), 0.4);\n animation: jibtalkSlideUp 0.3s cubic-bezier(0.16, 1, 0.3, 1);\n color: var(--color-white);\n}\n\n@keyframes jibtalkSlideUp {\n from { opacity: 0; transform: translateY(20px); }\n to { opacity: 1; transform: translateY(0); }\n}\n\n.jibtalk-sdk-header {\n background: linear-gradient(135deg, var(--primary), var(--secondary));\n color: white;\n padding: 16px;\n display: flex;\n justify-content: space-between;\n align-items: center;\n border-bottom: 1px solid rgba(var(--theme-border-soft), 0.3);\n}\n\n.jibtalk-sdk-header h4 {\n margin: 0;\n font-size: 16px;\n font-weight: 600;\n}\n\n.jibtalk-sdk-close-btn {\n background: none;\n border: none;\n color: white;\n font-size: 24px;\n cursor: pointer;\n line-height: 1;\n opacity: 0.8;\n transition: opacity 0.3s ease-in-out;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n}\n\n.jibtalk-sdk-close-btn:hover {\n opacity: 1;\n}\n\n.jibtalk-sdk-messages {\n flex: 1;\n padding: 16px;\n overflow-y: auto;\n display: flex;\n flex-direction: column;\n gap: 12px;\n background-color: rgba(var(--theme-bg), 0.8);\n scrollbar-width: thin;\n scrollbar-color: var(--primary) transparent;\n}\n\n/* Custom Scrollbar */\n@supports not (scrollbar-color: auto) {\n .jibtalk-sdk-messages::-webkit-scrollbar {\n width: 6px;\n height: 6px;\n }\n .jibtalk-sdk-messages::-webkit-scrollbar-thumb {\n background: var(--primary);\n border-radius: 3px;\n }\n .jibtalk-sdk-messages::-webkit-scrollbar-track {\n background: transparent;\n }\n}\n\n.jibtalk-sdk-message {\n max-width: 80%;\n padding: 10px 14px;\n border-radius: var(--rounded-xl);\n font-size: 14px;\n line-height: 1.4;\n word-wrap: break-word;\n}\n\n.jibtalk-sdk-message-self {\n align-self: flex-end;\n background: linear-gradient(135deg, var(--primary), var(--secondary));\n color: white;\n border-bottom-right-radius: 4px;\n}\n\n.jibtalk-sdk-message-other {\n align-self: flex-start;\n background: var(--color-surface);\n color: var(--color-white);\n border: 1px solid rgba(var(--theme-border-soft), 0.3);\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05);\n border-bottom-left-radius: 4px;\n}\n\n.jibtalk-sdk-input-area {\n padding: 12px;\n background: rgba(var(--theme-surface-elevated), 0.95);\n display: flex;\n gap: 8px;\n border-top: 1px solid rgba(var(--theme-border-soft), 0.3);\n}\n\n.jibtalk-sdk-input {\n flex: 1;\n padding: 10px 14px;\n border: 1px solid rgba(var(--theme-placeholder), 0.5);\n border-radius: 20px;\n outline: none;\n font-size: 14px;\n background: transparent;\n color: var(--color-white);\n transition: border-color 0.3s ease-in-out;\n}\n\n.jibtalk-sdk-input::placeholder {\n color: rgba(var(--theme-placeholder), 0.8);\n}\n\n.jibtalk-sdk-input:focus {\n border-color: var(--primary);\n}\n\n.jibtalk-sdk-send-btn {\n background: linear-gradient(135deg, var(--primary), var(--secondary));\n color: white;\n border: none;\n border-radius: 20px;\n padding: 0 16px;\n font-weight: 500;\n cursor: pointer;\n transition: opacity 0.3s ease-in-out, transform 0.3s ease-in-out;\n}\n\n.jibtalk-sdk-send-btn:hover {\n opacity: 0.9;\n transform: scale(1.02);\n}\n", Je = () => {
1431
+ var Q = "\n#jibtalk-sdk-root {\n position: fixed;\n z-index: 9999;\n font-family: 'Outfit', 'Vazirmatn', -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif;\n direction: rtl;\n \n /* Brand colors */\n --primary: #26A17B;\n --secondary: #FAAF40;\n \n /* Default mode (Default Dark Mode) variables */\n --theme-white: 255, 255, 255;\n --theme-bg: 16, 18, 17;\n --theme-placeholder: 107, 124, 118;\n --theme-hint: 158, 180, 173;\n --theme-surface-elevated: 25, 29, 27;\n --theme-surface-soft: 34, 39, 37;\n --theme-border-soft: 107, 124, 118;\n --theme-backdrop: 0, 0, 0;\n \n --color-white: rgb(var(--theme-white));\n --color-bg: rgb(var(--theme-bg));\n --color-placeholder: rgb(var(--theme-placeholder));\n --color-hint: rgb(var(--theme-hint));\n --color-surface: rgb(var(--theme-surface-elevated));\n --color-surface-soft: rgb(var(--theme-surface-soft));\n --color-border-soft: rgb(var(--theme-border-soft));\n \n --rounded-md: 6px;\n --rounded-lg: 8px;\n --rounded-xl: 12px;\n --rounded-2xl: 16px;\n}\n\n/* System preferences override (if no theme is forced by host app) */\n@media (prefers-color-scheme: light) {\n #jibtalk-sdk-root:not([data-theme='dark']) {\n --theme-white: 27, 36, 32; /* Dark slate text */\n --theme-bg: 242, 247, 245; /* Soft Teal-Gray */\n --theme-placeholder: 122, 141, 133;\n --theme-hint: 83, 100, 92;\n --theme-surface-elevated: 251, 253, 252;\n --theme-surface-soft: 231, 239, 235;\n --theme-border-soft: 180, 197, 190;\n --theme-backdrop: 16, 18, 17;\n }\n}\n\n/* Strict Light theme override */\n#jibtalk-sdk-root[data-theme='light'] {\n --theme-white: 27, 36, 32; /* Dark slate text */\n --theme-bg: 242, 247, 245; /* Soft Teal-Gray */\n --theme-placeholder: 122, 141, 133;\n --theme-hint: 83, 100, 92;\n --theme-surface-elevated: 251, 253, 252;\n --theme-surface-soft: 231, 239, 235;\n --theme-border-soft: 180, 197, 190;\n --theme-backdrop: 16, 18, 17;\n}\n\n/* Strict Dark theme override */\n#jibtalk-sdk-root[data-theme='dark'] {\n --theme-white: 255, 255, 255;\n --theme-bg: 16, 18, 17;\n --theme-placeholder: 107, 124, 118;\n --theme-hint: 158, 180, 173;\n --theme-surface-elevated: 25, 29, 27;\n --theme-surface-soft: 34, 39, 37;\n --theme-border-soft: 107, 124, 118;\n --theme-backdrop: 0, 0, 0;\n}\n\n/* Position options */\n#jibtalk-sdk-root.position-bottom-right { bottom: 20px; right: 20px; }\n#jibtalk-sdk-root.position-bottom-left { bottom: 20px; left: 20px; }\n#jibtalk-sdk-root.position-top-right { top: 20px; right: 20px; }\n#jibtalk-sdk-root.position-top-left { top: 20px; left: 20px; }\n\n.jibtalk-sdk-btn {\n background: linear-gradient(135deg, var(--primary), var(--secondary));\n color: white;\n border: none;\n border-radius: 50%;\n width: 60px;\n height: 60px;\n cursor: pointer;\n box-shadow: 0 4px 15px rgba(0, 0, 0, 0.2);\n display: flex;\n align-items: center;\n justify-content: center;\n transition: transform 0.3s ease-in-out, box-shadow 0.3s ease-in-out, opacity 0.3s ease-in-out;\n position: relative;\n}\n\n.jibtalk-sdk-btn:hover {\n transform: scale(1.02);\n opacity: 0.9;\n box-shadow: inset 0 0 12px rgba(0, 0, 0, 0.2), 0 6px 20px rgba(0, 0, 0, 0.25);\n}\n\n.jibtalk-sdk-unread-badge {\n position: absolute;\n top: -2px;\n left: -2px;\n background-color: var(--secondary);\n color: white;\n border-radius: 50%;\n width: 20px;\n height: 20px;\n font-size: 11px;\n font-weight: 700;\n display: flex;\n align-items: center;\n justify-content: center;\n border: 2px solid var(--color-surface);\n animation: pulse 1.5s infinite;\n}\n\n@keyframes pulse {\n 0% { transform: scale(1); }\n 50% { transform: scale(1.15); }\n 100% { transform: scale(1); }\n}\n\n.jibtalk-sdk-window {\n width: 400px;\n height: 600px;\n background: rgba(var(--theme-surface-elevated), 0.85);\n backdrop-filter: blur(16px);\n -webkit-backdrop-filter: blur(16px);\n border-radius: var(--rounded-2xl);\n box-shadow: inset 0 2px 4px 0 rgba(0, 0, 0, 0.06), 0 10px 40px rgba(0, 0, 0, 0.15);\n display: flex;\n flex-direction: column;\n overflow: hidden;\n border: 1px solid rgba(var(--theme-border-soft), 0.4);\n animation: jibtalkSlideUp 0.3s cubic-bezier(0.16, 1, 0.3, 1);\n color: var(--color-white);\n}\n\n@keyframes jibtalkSlideUp {\n from { opacity: 0; transform: translateY(20px); }\n to { opacity: 1; transform: translateY(0); }\n}\n\n.jibtalk-sdk-header {\n background: linear-gradient(135deg, var(--primary), var(--secondary));\n color: white;\n padding: 16px;\n display: flex;\n justify-content: space-between;\n align-items: center;\n border-bottom: 1px solid rgba(var(--theme-border-soft), 0.3);\n}\n\n.jibtalk-sdk-header h4 {\n margin: 0;\n font-size: 16px;\n font-weight: 600;\n}\n\n.jibtalk-sdk-close-btn {\n background: none;\n border: none;\n color: white;\n font-size: 24px;\n cursor: pointer;\n line-height: 1;\n opacity: 0.8;\n transition: opacity 0.3s ease-in-out;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n}\n\n.jibtalk-sdk-close-btn:hover {\n opacity: 1;\n}\n\n.jibtalk-sdk-messages {\n flex: 1;\n padding: 16px;\n overflow-y: auto;\n display: flex;\n flex-direction: column;\n gap: 12px;\n background-color: rgba(var(--theme-bg), 0.8);\n scrollbar-width: thin;\n scrollbar-color: var(--primary) transparent;\n}\n\n/* Custom Scrollbar */\n@supports not (scrollbar-color: auto) {\n .jibtalk-sdk-messages::-webkit-scrollbar {\n width: 6px;\n height: 6px;\n }\n .jibtalk-sdk-messages::-webkit-scrollbar-thumb {\n background: var(--primary);\n border-radius: 3px;\n }\n .jibtalk-sdk-messages::-webkit-scrollbar-track {\n background: transparent;\n }\n}\n\n.jibtalk-sdk-message {\n max-width: 80%;\n padding: 10px 14px;\n border-radius: var(--rounded-xl);\n font-size: 14px;\n line-height: 1.4;\n word-wrap: break-word;\n}\n\n.jibtalk-sdk-message-self {\n align-self: flex-end;\n background: linear-gradient(135deg, var(--primary), var(--secondary));\n color: white;\n border-bottom-left-radius: 4px; /* Modified for RTL flow alignment */\n}\n\n.jibtalk-sdk-message-other {\n align-self: flex-start;\n background: var(--color-surface);\n color: var(--color-white);\n border: 1px solid rgba(var(--theme-border-soft), 0.3);\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05);\n border-bottom-right-radius: 4px; /* Modified for RTL flow alignment */\n}\n\n.jibtalk-sdk-input-area {\n padding: 12px;\n background: rgba(var(--theme-surface-elevated), 0.95);\n display: flex;\n gap: 8px;\n border-top: 1px solid rgba(var(--theme-border-soft), 0.3);\n}\n\n.jibtalk-sdk-input {\n flex: 1;\n padding: 10px 14px;\n border: 1px solid rgba(var(--theme-placeholder), 0.5);\n border-radius: 20px;\n outline: none;\n font-size: 14px;\n background: transparent;\n color: var(--color-white);\n transition: border-color 0.3s ease-in-out;\n}\n\n.jibtalk-sdk-input::placeholder {\n color: rgba(var(--theme-placeholder), 0.8);\n}\n\n.jibtalk-sdk-input:focus {\n border-color: var(--primary);\n}\n\n.jibtalk-sdk-send-btn {\n background: linear-gradient(135deg, var(--primary), var(--secondary));\n color: white;\n border: none;\n border-radius: 20px;\n padding: 0 16px;\n font-weight: 500;\n cursor: pointer;\n transition: opacity 0.3s ease-in-out, transform 0.3s ease-in-out;\n}\n\n.jibtalk-sdk-send-btn:hover {\n opacity: 0.9;\n transform: scale(1.02);\n}\n\n/* JibTalk Phase 2 Styles */\n.jibtalk-sdk-welcome-card {\n padding: 24px;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n text-align: center;\n height: 100%;\n box-sizing: border-box;\n background: rgba(var(--theme-bg), 0.8);\n}\n.jibtalk-sdk-avatars {\n display: flex;\n justify-content: center;\n margin-bottom: 16px;\n position: relative;\n height: 48px;\n width: 100px;\n}\n.jibtalk-sdk-avatar {\n width: 44px;\n height: 44px;\n border-radius: 50%;\n border: 2px solid var(--color-surface);\n background-color: var(--color-surface-soft);\n position: absolute;\n box-shadow: 0 4px 10px rgba(0, 0, 0, 0.15);\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 18px;\n}\n.jibtalk-sdk-avatar:nth-child(1) { right: 0; z-index: 3; }\n.jibtalk-sdk-avatar:nth-child(2) { right: 24px; z-index: 2; }\n.jibtalk-sdk-avatar:nth-child(3) { right: 48px; z-index: 1; }\n.jibtalk-sdk-status-row {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-bottom: 12px;\n font-size: 13px;\n color: var(--color-hint);\n}\n.jibtalk-sdk-status-dot {\n width: 8px;\n height: 8px;\n border-radius: 50%;\n background-color: #26A17B;\n box-shadow: 0 0 8px #26A17B;\n animation: statusPulse 2s infinite;\n}\n@keyframes statusPulse {\n 0% { transform: scale(1); opacity: 1; }\n 50% { transform: scale(1.2); opacity: 0.6; }\n 100% { transform: scale(1); opacity: 1; }\n}\n.jibtalk-sdk-welcome-title {\n font-size: 18px;\n font-weight: 700;\n margin: 0 0 8px 0;\n color: var(--color-white);\n}\n.jibtalk-sdk-welcome-text {\n font-size: 14px;\n line-height: 1.5;\n color: var(--color-hint);\n margin: 0 0 24px 0;\n}\n.jibtalk-sdk-start-btn {\n background: linear-gradient(135deg, var(--primary), var(--secondary));\n color: white;\n border: none;\n border-radius: var(--rounded-2xl);\n padding: 12px 32px;\n font-weight: 600;\n font-size: 14px;\n cursor: pointer;\n box-shadow: 0 4px 15px rgba(0, 0, 0, 0.2);\n transition: transform 0.3s, opacity 0.3s;\n}\n.jibtalk-sdk-start-btn:hover {\n transform: scale(1.03);\n opacity: 0.95;\n}\n.jibtalk-sdk-footer {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 6px;\n padding: 2px;\n font-size: 10px;\n color: var(--color-hint);\n opacity: 0.6;\n border-top: 1px solid rgba(var(--theme-border-soft), 0.2);\n background: rgba(var(--theme-surface-elevated), 0.5);\n text-decoration: none;\n}\n.jibtalk-sdk-footer:hover {\n opacity: 0.8;\n}\n.jibtalk-sdk-footer svg {\n color: var(--primary);\n}\n.jibtalk-sdk-message-container {\n position: relative;\n display: flex;\n align-items: center;\n max-width: 100%;\n gap: 8px;\n}\n.jibtalk-sdk-message-container.self {\n margin-left: auto;\n margin-right: 0;\n}\n.jibtalk-sdk-message-container.other {\n margin-right: auto;\n margin-left: 0;\n flex-direction: row-reverse;\n}\n.jibtalk-sdk-reply-action-btn {\n background: transparent;\n border: none;\n cursor: pointer;\n color: var(--color-hint);\n opacity: 0;\n transition: opacity 0.2s;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 4px;\n border-radius: 50%;\n}\n.jibtalk-sdk-reply-action-btn:hover {\n background-color: var(--color-surface-soft);\n color: var(--primary);\n}\n.jibtalk-sdk-message-container:hover .jibtalk-sdk-reply-action-btn {\n opacity: 1;\n}\n.jibtalk-sdk-reply-thread-preview {\n font-size: 12px;\n background: rgba(0, 0, 0, 0.15);\n border-inline-start: 3px solid var(--primary);\n padding: 6px 8px;\n border-radius: 4px;\n margin-bottom: 6px;\n color: rgba(var(--theme-white), 0.8);\n max-width: 100%;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n.jibtalk-sdk-reply-wrapper {\n padding: 8px 12px;\n background: rgba(var(--theme-surface-soft), 0.95);\n border-top: 1.5px solid var(--primary);\n display: flex;\n justify-content: space-between;\n align-items: center;\n font-size: 13px;\n animation: jibtalkSlideUp 0.2s;\n}\n.jibtalk-sdk-reply-content {\n display: flex;\n flex-direction: column;\n gap: 2px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n flex: 1;\n margin-inline-end: 12px;\n}\n.jibtalk-sdk-reply-title {\n font-weight: 600;\n font-size: 11px;\n color: var(--primary);\n}\n.jibtalk-sdk-reply-text {\n color: var(--color-hint);\n font-size: 12px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.jibtalk-sdk-reply-close {\n background: none;\n border: none;\n cursor: pointer;\n color: var(--color-hint);\n font-size: 16px;\n padding: 0 4px;\n display: flex;\n align-items: center;\n}\n.jibtalk-sdk-reply-close:hover {\n color: var(--color-white);\n}\n.jibtalk-sdk-emoji-trigger {\n background: none;\n border: none;\n color: var(--color-hint);\n cursor: pointer;\n padding: 4px 8px;\n display: flex;\n align-items: center;\n transition: color 0.2s;\n}\n.jibtalk-sdk-emoji-trigger:hover {\n color: var(--primary);\n}\n.jibtalk-sdk-emoji-popover {\n position: absolute;\n bottom: 60px;\n right: 12px;\n width: 250px;\n height: 180px;\n background: var(--color-surface);\n border: 1px solid rgba(var(--theme-border-soft), 0.4);\n border-radius: var(--rounded-lg);\n box-shadow: 0 8px 30px rgba(0,0,0,0.3);\n z-index: 1000;\n display: grid;\n grid-template-columns: repeat(6, 1fr);\n gap: 6px;\n padding: 10px;\n overflow-y: auto;\n animation: jibtalkSlideUp 0.15s cubic-bezier(0.16, 1, 0.3, 1);\n}\n.jibtalk-sdk-emoji-btn {\n background: none;\n border: none;\n font-size: 18px;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 4px;\n border-radius: 4px;\n transition: background-color 0.2s;\n}\n.jibtalk-sdk-emoji-btn:hover {\n background-color: var(--color-surface-soft);\n}\n.jibtalk-sdk-file-trigger {\n background: none;\n border: none;\n color: var(--color-hint);\n cursor: pointer;\n padding: 4px 8px;\n display: flex;\n align-items: center;\n transition: color 0.2s;\n}\n.jibtalk-sdk-file-trigger:hover {\n color: var(--primary);\n}\n.jibtalk-sdk-attachment-img {\n max-width: 100%;\n max-height: 180px;\n border-radius: var(--rounded-md);\n margin-top: 4px;\n display: block;\n cursor: pointer;\n}\n.jibtalk-sdk-attachment-video {\n max-width: 100%;\n max-height: 180px;\n border-radius: var(--rounded-md);\n margin-top: 4px;\n display: block;\n outline: none;\n}\n.jibtalk-sdk-attachment-doc {\n display: flex;\n align-items: center;\n gap: 8px;\n background: rgba(0, 0, 0, 0.1);\n padding: 8px 12px;\n border-radius: var(--rounded-md);\n margin-top: 4px;\n text-decoration: none;\n color: inherit;\n font-size: 13px;\n border: 1px solid rgba(var(--theme-border-soft), 0.2);\n}\n.jibtalk-sdk-attachment-doc:hover {\n background: rgba(0, 0, 0, 0.2);\n}\n.jibtalk-sdk-attachment-doc svg {\n color: #e53e3e;\n flex-shrink: 0;\n}\n.jibtalk-sdk-attachment-doc-info {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n", Je = () => {
1432
1432
  if (typeof document > "u") return;
1433
1433
  let e = "jibtalk-sdk-styles";
1434
1434
  if (!document.getElementById(e)) {
@@ -1446,12 +1446,14 @@ var Q = "\n#jibtalk-sdk-root {\n position: fixed;\n z-index: 9999;\n font-fam
1446
1446
  unreadCount = 0;
1447
1447
  currentConversation = null;
1448
1448
  messages = [];
1449
+ workspaceName = "";
1450
+ workspaceSlug = "";
1449
1451
  theme = "dark";
1450
1452
  position = "bottom-right";
1451
- primaryColor = "#00AC78";
1453
+ primaryColor = "#26A17B";
1452
1454
  locale = "en";
1453
1455
  constructor(e) {
1454
- this.apiKey = e.apiKey, this.backendUrl = typeof globalThis < "u" && globalThis.process?.env?.NEXT_PUBLIC_JIBTALK_BACKEND_URL || typeof window < "u" && window.JIBTALK_BACKEND_URL || "http://localhost:5000", this.theme = e.theme || "dark", this.position = e.position || "bottom-right", this.primaryColor = e.primaryColor || "#00AC78", this.locale = e.locale || "en", this.optionsCustomer = e.customer, this.optionsConvId = e.conversationId, this.optionsTimestamp = e.timestamp, this.optionsSignature = e.signature;
1456
+ this.apiKey = e.apiKey, this.backendUrl = typeof globalThis < "u" && globalThis.process?.env?.NEXT_PUBLIC_JIBTALK_BACKEND_URL || typeof window < "u" && window.JIBTALK_BACKEND_URL || "http://localhost:7000", this.theme = e.theme || "dark", this.position = e.position || "bottom-right", this.primaryColor = e.primaryColor || "#26A17B", this.locale = e.locale || "en", this.optionsCustomer = e.customer, this.optionsConvId = e.conversationId, this.optionsTimestamp = e.timestamp, this.optionsSignature = e.signature;
1455
1457
  let t = typeof window < "u" ? localStorage.getItem("jibtalk_conversation_id") : null;
1456
1458
  this.currentConversation = t ? { id: t } : null, this.visitorId = e.customer?.id || this.getVisitorId(), this.connect();
1457
1459
  }
@@ -1468,7 +1470,9 @@ var Q = "\n#jibtalk-sdk-root {\n position: fixed;\n z-index: 9999;\n font-fam
1468
1470
  }), this.socket.on("disconnect", () => {
1469
1471
  this.isConnected = !1, this.emit("disconnected"), this.emitStateChange();
1470
1472
  }), this.socket.on("session_ready", (e) => {
1471
- this.currentConversation = e, this.messages = e.messages || [], typeof window < "u" && (e.id && localStorage.setItem("jibtalk_conversation_id", e.id), e.sessionToken && localStorage.setItem("jibtalk_session_token", e.sessionToken)), this.emit("conversationOpened", e), this.emitStateChange();
1473
+ this.currentConversation = e, this.messages = e.messages || [], this.workspaceName = e.workspaceName || "", this.workspaceSlug = e.workspaceSlug || "", typeof window < "u" && (e.id && localStorage.setItem("jibtalk_conversation_id", e.id), e.sessionToken && localStorage.setItem("jibtalk_session_token", e.sessionToken)), this.emit("conversationOpened", e), this.emitStateChange();
1474
+ }), this.socket.on("widget_ready", (e) => {
1475
+ this.workspaceName = e.workspaceName || "", this.workspaceSlug = e.workspaceSlug || "", this.currentConversation = null, this.messages = [], e.sessionExpired && typeof window < "u" && (localStorage.removeItem("jibtalk_conversation_id"), localStorage.removeItem("jibtalk_session_token")), this.emitStateChange();
1472
1476
  }), this.socket.on("receive_message", (e) => {
1473
1477
  this.messages.push(e), e.sender === "visitor" ? this.emit("messageSent", e) : (this.isOpen || this.unreadCount++, this.emit("messageReceived", e)), this.emitStateChange();
1474
1478
  }), this.socket.on("typing_started", (e) => {
@@ -1515,14 +1519,19 @@ var Q = "\n#jibtalk-sdk-root {\n position: fixed;\n z-index: 9999;\n font-fam
1515
1519
  logout() {
1516
1520
  typeof window > "u" || (this.close(), localStorage.removeItem("jibtalk_visitor_id"), localStorage.removeItem("vyou_visitor_id"), localStorage.removeItem("jibtalk_conversation_id"), localStorage.removeItem("jibtalk_session_token"), this.optionsCustomer = void 0, this.optionsConvId = void 0, this.optionsTimestamp = void 0, this.optionsSignature = void 0, this.visitorId = this.getVisitorId(), this.currentConversation = null, this.messages = [], this.unreadCount = 0, this.connect());
1517
1521
  }
1518
- sendMessage(e) {
1519
- !e.trim() || !this.currentConversation || !this.socket || this.socket.emit("send_message", {
1522
+ sendMessage(e, t, n) {
1523
+ !e.trim() && !n || !this.currentConversation || !this.socket || this.socket.emit("send_message", {
1520
1524
  sessionId: this.currentConversation.id,
1521
1525
  content: e,
1522
1526
  sender: "visitor",
1523
- visitorId: this.visitorId
1527
+ visitorId: this.visitorId,
1528
+ parentMessageId: t,
1529
+ file: n
1524
1530
  });
1525
1531
  }
1532
+ startConversation() {
1533
+ this.socket && this.socket.emit("start_conversation");
1534
+ }
1526
1535
  startTyping() {
1527
1536
  !this.socket || !this.currentConversation || this.socket.emit("typing_started", {
1528
1537
  sessionId: this.currentConversation.id,
@@ -1562,7 +1571,9 @@ var Q = "\n#jibtalk-sdk-root {\n position: fixed;\n z-index: 9999;\n font-fam
1562
1571
  theme: this.theme,
1563
1572
  position: this.position,
1564
1573
  primaryColor: this.primaryColor,
1565
- locale: this.locale
1574
+ locale: this.locale,
1575
+ workspaceName: this.workspaceName,
1576
+ workspaceSlug: this.workspaceSlug
1566
1577
  });
1567
1578
  }
1568
1579
  updateOptions(e) {
@@ -1,15 +1,15 @@
1
- (function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports):typeof define==`function`&&define.amd?define([`exports`],t):(e=typeof globalThis<`u`?globalThis:e||self,t(e.JibTalkCore={}))})(this,function(e){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=Object.defineProperty,n=(e,n)=>{let r={};for(var i in e)t(r,i,{get:e[i],enumerable:!0});return n||t(r,Symbol.toStringTag,{value:`Module`}),r},r=Object.create(null);r.open=`0`,r.close=`1`,r.ping=`2`,r.pong=`3`,r.message=`4`,r.upgrade=`5`,r.noop=`6`;var i=Object.create(null);Object.keys(r).forEach(e=>{i[r[e]]=e});var a={type:`error`,data:`parser error`},o=typeof Blob==`function`||typeof Blob<`u`&&Object.prototype.toString.call(Blob)===`[object BlobConstructor]`,s=typeof ArrayBuffer==`function`,c=e=>typeof ArrayBuffer.isView==`function`?ArrayBuffer.isView(e):e&&e.buffer instanceof ArrayBuffer,l=({type:e,data:t},n,i)=>o&&t instanceof Blob?n?i(t):u(t,i):s&&(t instanceof ArrayBuffer||c(t))?n?i(t):u(new Blob([t]),i):i(r[e]+(t||``)),u=(e,t)=>{let n=new FileReader;return n.onload=function(){let e=n.result.split(`,`)[1];t(`b`+(e||``))},n.readAsDataURL(e)};function d(e){return e instanceof Uint8Array?e:e instanceof ArrayBuffer?new Uint8Array(e):new Uint8Array(e.buffer,e.byteOffset,e.byteLength)}var f;function ee(e,t){if(o&&e.data instanceof Blob)return e.data.arrayBuffer().then(d).then(t);if(s&&(e.data instanceof ArrayBuffer||c(e.data)))return t(d(e.data));l(e,!1,e=>{f||=new TextEncoder,t(f.encode(e))})}var te=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/`,p=typeof Uint8Array>`u`?[]:new Uint8Array(256);for(let e=0;e<64;e++)p[te.charCodeAt(e)]=e;var ne=e=>{let t=e.length*.75,n=e.length,r,i=0,a,o,s,c;e[e.length-1]===`=`&&(t--,e[e.length-2]===`=`&&t--);let l=new ArrayBuffer(t),u=new Uint8Array(l);for(r=0;r<n;r+=4)a=p[e.charCodeAt(r)],o=p[e.charCodeAt(r+1)],s=p[e.charCodeAt(r+2)],c=p[e.charCodeAt(r+3)],u[i++]=a<<2|o>>4,u[i++]=(o&15)<<4|s>>2,u[i++]=(s&3)<<6|c&63;return l},re=typeof ArrayBuffer==`function`,m=(e,t)=>{if(typeof e!=`string`)return{type:`message`,data:h(e,t)};let n=e.charAt(0);return n===`b`?{type:`message`,data:ie(e.substring(1),t)}:i[n]?e.length>1?{type:i[n],data:e.substring(1)}:{type:i[n]}:a},ie=(e,t)=>re?h(ne(e),t):{base64:!0,data:e},h=(e,t)=>{switch(t){case`blob`:return e instanceof Blob?e:new Blob([e]);default:return e instanceof ArrayBuffer?e:e.buffer}},g=``,ae=(e,t)=>{let n=e.length,r=Array(n),i=0;e.forEach((e,a)=>{l(e,!1,e=>{r[a]=e,++i===n&&t(r.join(g))})})},oe=(e,t)=>{let n=e.split(g),r=[];for(let e=0;e<n.length;e++){let i=m(n[e],t);if(r.push(i),i.type===`error`)break}return r};function se(){return new TransformStream({transform(e,t){ee(e,n=>{let r=n.length,i;if(r<126)i=new Uint8Array(1),new DataView(i.buffer).setUint8(0,r);else if(r<65536){i=new Uint8Array(3);let e=new DataView(i.buffer);e.setUint8(0,126),e.setUint16(1,r)}else{i=new Uint8Array(9);let e=new DataView(i.buffer);e.setUint8(0,127),e.setBigUint64(1,BigInt(r))}e.data&&typeof e.data!=`string`&&(i[0]|=128),t.enqueue(i),t.enqueue(n)})}})}var _;function v(e){return e.reduce((e,t)=>e+t.length,0)}function y(e,t){if(e[0].length===t)return e.shift();let n=new Uint8Array(t),r=0;for(let i=0;i<t;i++)n[i]=e[0][r++],r===e[0].length&&(e.shift(),r=0);return e.length&&r<e[0].length&&(e[0]=e[0].slice(r)),n}function ce(e,t){_||=new TextDecoder;let n=[],r=0,i=-1,o=!1;return new TransformStream({transform(s,c){for(n.push(s);;){if(r===0){if(v(n)<1)break;let e=y(n,1);o=(e[0]&128)==128,i=e[0]&127,r=i<126?3:i===126?1:2}else if(r===1){if(v(n)<2)break;let e=y(n,2);i=new DataView(e.buffer,e.byteOffset,e.length).getUint16(0),r=3}else if(r===2){if(v(n)<8)break;let e=y(n,8),t=new DataView(e.buffer,e.byteOffset,e.length),o=t.getUint32(0);if(o>2**21-1){c.enqueue(a);break}i=o*2**32+t.getUint32(4),r=3}else{if(v(n)<i)break;let e=y(n,i);c.enqueue(m(o?e:_.decode(e),t)),r=0}if(i===0||i>e){c.enqueue(a);break}}}})}function b(e){if(e)return le(e)}function le(e){for(var t in b.prototype)e[t]=b.prototype[t];return e}b.prototype.on=b.prototype.addEventListener=function(e,t){return this._callbacks=this._callbacks||{},(this._callbacks[`$`+e]=this._callbacks[`$`+e]||[]).push(t),this},b.prototype.once=function(e,t){function n(){this.off(e,n),t.apply(this,arguments)}return n.fn=t,this.on(e,n),this},b.prototype.off=b.prototype.removeListener=b.prototype.removeAllListeners=b.prototype.removeEventListener=function(e,t){if(this._callbacks=this._callbacks||{},arguments.length==0)return this._callbacks={},this;var n=this._callbacks[`$`+e];if(!n)return this;if(arguments.length==1)return delete this._callbacks[`$`+e],this;for(var r,i=0;i<n.length;i++)if(r=n[i],r===t||r.fn===t){n.splice(i,1);break}return n.length===0&&delete this._callbacks[`$`+e],this},b.prototype.emit=function(e){this._callbacks=this._callbacks||{};for(var t=Array(arguments.length-1),n=this._callbacks[`$`+e],r=1;r<arguments.length;r++)t[r-1]=arguments[r];if(n){n=n.slice(0);for(var r=0,i=n.length;r<i;++r)n[r].apply(this,t)}return this},b.prototype.emitReserved=b.prototype.emit,b.prototype.listeners=function(e){return this._callbacks=this._callbacks||{},this._callbacks[`$`+e]||[]},b.prototype.hasListeners=function(e){return!!this.listeners(e).length};var x=typeof Promise==`function`&&typeof Promise.resolve==`function`?e=>Promise.resolve().then(e):(e,t)=>t(e,0),S=typeof self<`u`?self:typeof window<`u`?window:Function(`return this`)(),ue=`arraybuffer`;function C(e,...t){return t.reduce((t,n)=>(e.hasOwnProperty(n)&&(t[n]=e[n]),t),{})}var de=S.setTimeout,fe=S.clearTimeout;function w(e,t){t.useNativeTimers?(e.setTimeoutFn=de.bind(S),e.clearTimeoutFn=fe.bind(S)):(e.setTimeoutFn=S.setTimeout.bind(S),e.clearTimeoutFn=S.clearTimeout.bind(S))}var pe=1.33;function me(e){return typeof e==`string`?he(e):Math.ceil((e.byteLength||e.size)*pe)}function he(e){let t=0,n=0;for(let r=0,i=e.length;r<i;r++)t=e.charCodeAt(r),t<128?n+=1:t<2048?n+=2:t<55296||t>=57344?n+=3:(r++,n+=4);return n}function T(){return Date.now().toString(36).substring(3)+Math.random().toString(36).substring(2,5)}function ge(e){let t=``;for(let n in e)e.hasOwnProperty(n)&&(t.length&&(t+=`&`),t+=encodeURIComponent(n)+`=`+encodeURIComponent(e[n]));return t}function _e(e){let t={},n=e.split(`&`);for(let e=0,r=n.length;e<r;e++){let r=n[e].split(`=`);t[decodeURIComponent(r[0])]=decodeURIComponent(r[1])}return t}var ve=class extends Error{constructor(e,t,n){super(e),this.description=t,this.context=n,this.type=`TransportError`}},E=class extends b{constructor(e){super(),this.writable=!1,w(this,e),this.opts=e,this.query=e.query,this.socket=e.socket,this.supportsBinary=!e.forceBase64}onError(e,t,n){return super.emitReserved(`error`,new ve(e,t,n)),this}open(){return this.readyState=`opening`,this.doOpen(),this}close(){return(this.readyState===`opening`||this.readyState===`open`)&&(this.doClose(),this.onClose()),this}send(e){this.readyState===`open`&&this.write(e)}onOpen(){this.readyState=`open`,this.writable=!0,super.emitReserved(`open`)}onData(e){let t=m(e,this.socket.binaryType);this.onPacket(t)}onPacket(e){super.emitReserved(`packet`,e)}onClose(e){this.readyState=`closed`,super.emitReserved(`close`,e)}pause(e){}createUri(e,t={}){return e+`://`+this._hostname()+this._port()+this.opts.path+this._query(t)}_hostname(){let e=this.opts.hostname;return e.indexOf(`:`)===-1?e:`[`+e+`]`}_port(){return this.opts.port&&(this.opts.secure&&Number(this.opts.port)!==443||!this.opts.secure&&Number(this.opts.port)!==80)?`:`+this.opts.port:``}_query(e){let t=ge(e);return t.length?`?`+t:``}},ye=class extends E{constructor(){super(...arguments),this._polling=!1}get name(){return`polling`}doOpen(){this._poll()}pause(e){this.readyState=`pausing`;let t=()=>{this.readyState=`paused`,e()};if(this._polling||!this.writable){let e=0;this._polling&&(e++,this.once(`pollComplete`,function(){--e||t()})),this.writable||(e++,this.once(`drain`,function(){--e||t()}))}else t()}_poll(){this._polling=!0,this.doPoll(),this.emitReserved(`poll`)}onData(e){oe(e,this.socket.binaryType).forEach(e=>{if(this.readyState===`opening`&&e.type===`open`&&this.onOpen(),e.type===`close`)return this.onClose({description:`transport closed by the server`}),!1;this.onPacket(e)}),this.readyState!==`closed`&&(this._polling=!1,this.emitReserved(`pollComplete`),this.readyState===`open`&&this._poll())}doClose(){let e=()=>{this.write([{type:`close`}])};this.readyState===`open`?e():this.once(`open`,e)}write(e){this.writable=!1,ae(e,e=>{this.doWrite(e,()=>{this.writable=!0,this.emitReserved(`drain`)})})}uri(){let e=this.opts.secure?`https`:`http`,t=this.query||{};return!1!==this.opts.timestampRequests&&(t[this.opts.timestampParam]=T()),!this.supportsBinary&&!t.sid&&(t.b64=1),this.createUri(e,t)}},D=!1;try{D=typeof XMLHttpRequest<`u`&&`withCredentials`in new XMLHttpRequest}catch{}var be=D;function xe(){}var Se=class extends ye{constructor(e){if(super(e),typeof location<`u`){let t=location.protocol===`https:`,n=location.port;n||=t?`443`:`80`,this.xd=typeof location<`u`&&e.hostname!==location.hostname||n!==e.port}}doWrite(e,t){let n=this.request({method:`POST`,data:e});n.on(`success`,t),n.on(`error`,(e,t)=>{this.onError(`xhr post error`,e,t)})}doPoll(){let e=this.request();e.on(`data`,this.onData.bind(this)),e.on(`error`,(e,t)=>{this.onError(`xhr poll error`,e,t)}),this.pollXhr=e}},O=class e extends b{constructor(e,t,n){super(),this.createRequest=e,w(this,n),this._opts=n,this._method=n.method||`GET`,this._uri=t,this._data=n.data===void 0?null:n.data,this._create()}_create(){var t;let n=C(this._opts,`agent`,`pfx`,`key`,`passphrase`,`cert`,`ca`,`ciphers`,`rejectUnauthorized`,`autoUnref`);n.xdomain=!!this._opts.xd;let r=this._xhr=this.createRequest(n);try{r.open(this._method,this._uri,!0);try{if(this._opts.extraHeaders){r.setDisableHeaderCheck&&r.setDisableHeaderCheck(!0);for(let e in this._opts.extraHeaders)this._opts.extraHeaders.hasOwnProperty(e)&&r.setRequestHeader(e,this._opts.extraHeaders[e])}}catch{}if(this._method===`POST`)try{r.setRequestHeader(`Content-type`,`text/plain;charset=UTF-8`)}catch{}try{r.setRequestHeader(`Accept`,`*/*`)}catch{}(t=this._opts.cookieJar)==null||t.addCookies(r),`withCredentials`in r&&(r.withCredentials=this._opts.withCredentials),this._opts.requestTimeout&&(r.timeout=this._opts.requestTimeout),r.onreadystatechange=()=>{var e;r.readyState===3&&((e=this._opts.cookieJar)==null||e.parseCookies(r.getResponseHeader(`set-cookie`))),r.readyState===4&&(r.status===200||r.status===1223?this._onLoad():this.setTimeoutFn(()=>{this._onError(typeof r.status==`number`?r.status:0)},0))},r.send(this._data)}catch(e){this.setTimeoutFn(()=>{this._onError(e)},0);return}typeof document<`u`&&(this._index=e.requestsCount++,e.requests[this._index]=this)}_onError(e){this.emitReserved(`error`,e,this._xhr),this._cleanup(!0)}_cleanup(t){if(!(this._xhr===void 0||this._xhr===null)){if(this._xhr.onreadystatechange=xe,t)try{this._xhr.abort()}catch{}typeof document<`u`&&delete e.requests[this._index],this._xhr=null}}_onLoad(){let e=this._xhr.responseText;e!==null&&(this.emitReserved(`data`,e),this.emitReserved(`success`),this._cleanup())}abort(){this._cleanup()}};if(O.requestsCount=0,O.requests={},typeof document<`u`){if(typeof attachEvent==`function`)attachEvent(`onunload`,k);else if(typeof addEventListener==`function`){let e=`onpagehide`in S?`pagehide`:`unload`;addEventListener(e,k,!1)}}function k(){for(let e in O.requests)O.requests.hasOwnProperty(e)&&O.requests[e].abort()}var Ce=(function(){let e=A({xdomain:!1});return e&&e.responseType!==null})(),we=class extends Se{constructor(e){super(e);let t=e&&e.forceBase64;this.supportsBinary=Ce&&!t}request(e={}){return Object.assign(e,{xd:this.xd},this.opts),new O(A,this.uri(),e)}};function A(e){let t=e.xdomain;try{if(typeof XMLHttpRequest<`u`&&(!t||be))return new XMLHttpRequest}catch{}if(!t)try{return new S[[`Active`,`Object`].join(`X`)](`Microsoft.XMLHTTP`)}catch{}}var j=typeof navigator<`u`&&typeof navigator.product==`string`&&navigator.product.toLowerCase()===`reactnative`,Te=class extends E{get name(){return`websocket`}doOpen(){let e=this.uri(),t=this.opts.protocols,n=j?{}:C(this.opts,`agent`,`perMessageDeflate`,`pfx`,`key`,`passphrase`,`cert`,`ca`,`ciphers`,`rejectUnauthorized`,`localAddress`,`protocolVersion`,`origin`,`maxPayload`,`family`,`checkServerIdentity`);this.opts.extraHeaders&&(n.headers=this.opts.extraHeaders);try{this.ws=this.createSocket(e,t,n)}catch(e){return this.emitReserved(`error`,e)}this.ws.binaryType=this.socket.binaryType,this.addEventListeners()}addEventListeners(){this.ws.onopen=()=>{this.opts.autoUnref&&this.ws._socket.unref(),this.onOpen()},this.ws.onclose=e=>this.onClose({description:`websocket connection closed`,context:e}),this.ws.onmessage=e=>this.onData(e.data),this.ws.onerror=e=>this.onError(`websocket error`,e)}write(e){this.writable=!1;for(let t=0;t<e.length;t++){let n=e[t],r=t===e.length-1;l(n,this.supportsBinary,e=>{try{this.doWrite(n,e)}catch{}r&&x(()=>{this.writable=!0,this.emitReserved(`drain`)},this.setTimeoutFn)})}}doClose(){this.ws!==void 0&&(this.ws.onerror=()=>{},this.ws.close(),this.ws=null)}uri(){let e=this.opts.secure?`wss`:`ws`,t=this.query||{};return this.opts.timestampRequests&&(t[this.opts.timestampParam]=T()),this.supportsBinary||(t.b64=1),this.createUri(e,t)}},M=S.WebSocket||S.MozWebSocket,Ee={websocket:class extends Te{createSocket(e,t,n){return j?new M(e,t,n):t?new M(e,t):new M(e)}doWrite(e,t){this.ws.send(t)}},webtransport:class extends E{get name(){return`webtransport`}doOpen(){try{this._transport=new WebTransport(this.createUri(`https`),this.opts.transportOptions[this.name])}catch(e){return this.emitReserved(`error`,e)}this._transport.closed.then(()=>{this.onClose()}).catch(e=>{this.onError(`webtransport error`,e)}),this._transport.ready.then(()=>{this._transport.createBidirectionalStream().then(e=>{let t=ce(2**53-1,this.socket.binaryType),n=e.readable.pipeThrough(t).getReader(),r=se();r.readable.pipeTo(e.writable),this._writer=r.writable.getWriter();let i=()=>{n.read().then(({done:e,value:t})=>{e||(this.onPacket(t),i())}).catch(e=>{})};i();let a={type:`open`};this.query.sid&&(a.data=`{"sid":"${this.query.sid}"}`),this._writer.write(a).then(()=>this.onOpen())})})}write(e){this.writable=!1;for(let t=0;t<e.length;t++){let n=e[t],r=t===e.length-1;this._writer.write(n).then(()=>{r&&x(()=>{this.writable=!0,this.emitReserved(`drain`)},this.setTimeoutFn)})}}doClose(){var e;(e=this._transport)==null||e.close()}},polling:we},De=/^(?:(?![^:@\/?#]+:[^:@\/]*@)(http|https|ws|wss):\/\/)?((?:(([^:@\/?#]*)(?::([^:@\/?#]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/,Oe=[`source`,`protocol`,`authority`,`userInfo`,`user`,`password`,`host`,`port`,`relative`,`path`,`directory`,`file`,`query`,`anchor`];function N(e){if(e.length>8e3)throw`URI too long`;let t=e,n=e.indexOf(`[`),r=e.indexOf(`]`);n!=-1&&r!=-1&&(e=e.substring(0,n)+e.substring(n,r).replace(/:/g,`;`)+e.substring(r,e.length));let i=De.exec(e||``),a={},o=14;for(;o--;)a[Oe[o]]=i[o]||``;return n!=-1&&r!=-1&&(a.source=t,a.host=a.host.substring(1,a.host.length-1).replace(/;/g,`:`),a.authority=a.authority.replace(`[`,``).replace(`]`,``).replace(/;/g,`:`),a.ipv6uri=!0),a.pathNames=ke(a,a.path),a.queryKey=Ae(a,a.query),a}function ke(e,t){let n=t.replace(/\/{2,9}/g,`/`).split(`/`);return(t.slice(0,1)==`/`||t.length===0)&&n.splice(0,1),t.slice(-1)==`/`&&n.splice(n.length-1,1),n}function Ae(e,t){let n={};return t.replace(/(?:^|&)([^&=]*)=?([^&]*)/g,function(e,t,r){t&&(n[t]=r)}),n}var P=typeof addEventListener==`function`&&typeof removeEventListener==`function`,F=[];P&&addEventListener(`offline`,()=>{F.forEach(e=>e())},!1);var I=class e extends b{constructor(e,t){if(super(),this.binaryType=ue,this.writeBuffer=[],this._prevBufferLen=0,this._pingInterval=-1,this._pingTimeout=-1,this._maxPayload=-1,this._pingTimeoutTime=1/0,e&&typeof e==`object`&&(t=e,e=null),e){let n=N(e);t.hostname=n.host,t.secure=n.protocol===`https`||n.protocol===`wss`,t.port=n.port,n.query&&(t.query=n.query)}else t.host&&(t.hostname=N(t.host).host);w(this,t),this.secure=t.secure==null?typeof location<`u`&&location.protocol===`https:`:t.secure,t.hostname&&!t.port&&(t.port=this.secure?`443`:`80`),this.hostname=t.hostname||(typeof location<`u`?location.hostname:`localhost`),this.port=t.port||(typeof location<`u`&&location.port?location.port:this.secure?`443`:`80`),this.transports=[],this._transportsByName={},t.transports.forEach(e=>{let t=e.prototype.name;this.transports.push(t),this._transportsByName[t]=e}),this.opts=Object.assign({path:`/engine.io`,agent:!1,withCredentials:!1,upgrade:!0,timestampParam:`t`,rememberUpgrade:!1,addTrailingSlash:!0,rejectUnauthorized:!0,perMessageDeflate:{threshold:1024},transportOptions:{},closeOnBeforeunload:!1},t),this.opts.path=this.opts.path.replace(/\/$/,``)+(this.opts.addTrailingSlash?`/`:``),typeof this.opts.query==`string`&&(this.opts.query=_e(this.opts.query)),P&&(this.opts.closeOnBeforeunload&&(this._beforeunloadEventListener=()=>{this.transport&&(this.transport.removeAllListeners(),this.transport.close())},addEventListener(`beforeunload`,this._beforeunloadEventListener,!1)),this.hostname!==`localhost`&&(this._offlineEventListener=()=>{this._onClose(`transport close`,{description:`network connection lost`})},F.push(this._offlineEventListener))),this.opts.withCredentials&&(this._cookieJar=void 0),this._open()}createTransport(e){let t=Object.assign({},this.opts.query);t.EIO=4,t.transport=e,this.id&&(t.sid=this.id);let n=Object.assign({},this.opts,{query:t,socket:this,hostname:this.hostname,secure:this.secure,port:this.port},this.opts.transportOptions[e]);return new this._transportsByName[e](n)}_open(){if(this.transports.length===0){this.setTimeoutFn(()=>{this.emitReserved(`error`,`No transports available`)},0);return}let t=this.opts.rememberUpgrade&&e.priorWebsocketSuccess&&this.transports.indexOf(`websocket`)!==-1?`websocket`:this.transports[0];this.readyState=`opening`;let n=this.createTransport(t);n.open(),this.setTransport(n)}setTransport(e){this.transport&&this.transport.removeAllListeners(),this.transport=e,e.on(`drain`,this._onDrain.bind(this)).on(`packet`,this._onPacket.bind(this)).on(`error`,this._onError.bind(this)).on(`close`,e=>this._onClose(`transport close`,e))}onOpen(){this.readyState=`open`,e.priorWebsocketSuccess=this.transport.name===`websocket`,this.emitReserved(`open`),this.flush()}_onPacket(e){if(this.readyState===`opening`||this.readyState===`open`||this.readyState===`closing`)switch(this.emitReserved(`packet`,e),this.emitReserved(`heartbeat`),e.type){case`open`:this.onHandshake(JSON.parse(e.data));break;case`ping`:this._sendPacket(`pong`),this.emitReserved(`ping`),this.emitReserved(`pong`),this._resetPingTimeout();break;case`error`:let t=Error(`server error`);t.code=e.data,this._onError(t);break;case`message`:this.emitReserved(`data`,e.data),this.emitReserved(`message`,e.data);break}}onHandshake(e){this.emitReserved(`handshake`,e),this.id=e.sid,this.transport.query.sid=e.sid,this._pingInterval=e.pingInterval,this._pingTimeout=e.pingTimeout,this._maxPayload=e.maxPayload,this.onOpen(),this.readyState!==`closed`&&this._resetPingTimeout()}_resetPingTimeout(){this.clearTimeoutFn(this._pingTimeoutTimer);let e=this._pingInterval+this._pingTimeout;this._pingTimeoutTime=Date.now()+e,this._pingTimeoutTimer=this.setTimeoutFn(()=>{this._onClose(`ping timeout`)},e),this.opts.autoUnref&&this._pingTimeoutTimer.unref()}_onDrain(){this.writeBuffer.splice(0,this._prevBufferLen),this._prevBufferLen=0,this.writeBuffer.length===0?this.emitReserved(`drain`):this.flush()}flush(){if(this.readyState!==`closed`&&this.transport.writable&&!this.upgrading&&this.writeBuffer.length){let e=this._getWritablePackets();this.transport.send(e),this._prevBufferLen=e.length,this.emitReserved(`flush`)}}_getWritablePackets(){if(!(this._maxPayload&&this.transport.name===`polling`&&this.writeBuffer.length>1))return this.writeBuffer;let e=1;for(let t=0;t<this.writeBuffer.length;t++){let n=this.writeBuffer[t].data;if(n&&(e+=me(n)),t>0&&e>this._maxPayload)return this.writeBuffer.slice(0,t);e+=2}return this.writeBuffer}_hasPingExpired(){if(!this._pingTimeoutTime)return!0;let e=Date.now()>this._pingTimeoutTime;return e&&(this._pingTimeoutTime=0,x(()=>{this._onClose(`ping timeout`)},this.setTimeoutFn)),e}write(e,t,n){return this._sendPacket(`message`,e,t,n),this}send(e,t,n){return this._sendPacket(`message`,e,t,n),this}_sendPacket(e,t,n,r){if(typeof t==`function`&&(r=t,t=void 0),typeof n==`function`&&(r=n,n=null),this.readyState===`closing`||this.readyState===`closed`)return;n||={},n.compress=!1!==n.compress;let i={type:e,data:t,options:n};this.emitReserved(`packetCreate`,i),this.writeBuffer.push(i),r&&this.once(`flush`,r),this.flush()}close(){let e=()=>{this._onClose(`forced close`),this.transport.close()},t=()=>{this.off(`upgrade`,t),this.off(`upgradeError`,t),e()},n=()=>{this.once(`upgrade`,t),this.once(`upgradeError`,t)};return(this.readyState===`opening`||this.readyState===`open`)&&(this.readyState=`closing`,this.writeBuffer.length?this.once(`drain`,()=>{this.upgrading?n():e()}):this.upgrading?n():e()),this}_onError(t){if(e.priorWebsocketSuccess=!1,this.opts.tryAllTransports&&this.transports.length>1&&this.readyState===`opening`)return this.transports.shift(),this._open();this.emitReserved(`error`,t),this._onClose(`transport error`,t)}_onClose(e,t){if(this.readyState===`opening`||this.readyState===`open`||this.readyState===`closing`){if(this.clearTimeoutFn(this._pingTimeoutTimer),this.transport.removeAllListeners(`close`),this.transport.close(),this.transport.removeAllListeners(),P&&(this._beforeunloadEventListener&&removeEventListener(`beforeunload`,this._beforeunloadEventListener,!1),this._offlineEventListener)){let e=F.indexOf(this._offlineEventListener);e!==-1&&F.splice(e,1)}this.readyState=`closed`,this.id=null,this.emitReserved(`close`,e,t),this.writeBuffer=[],this._prevBufferLen=0}}};I.protocol=4;var je=class extends I{constructor(){super(...arguments),this._upgrades=[]}onOpen(){if(super.onOpen(),this.readyState===`open`&&this.opts.upgrade)for(let e=0;e<this._upgrades.length;e++)this._probe(this._upgrades[e])}_probe(e){let t=this.createTransport(e),n=!1;I.priorWebsocketSuccess=!1;let r=()=>{n||(t.send([{type:`ping`,data:`probe`}]),t.once(`packet`,e=>{if(!n)if(e.type===`pong`&&e.data===`probe`){if(this.upgrading=!0,this.emitReserved(`upgrading`,t),!t)return;I.priorWebsocketSuccess=t.name===`websocket`,this.transport.pause(()=>{n||this.readyState!==`closed`&&(l(),this.setTransport(t),t.send([{type:`upgrade`}]),this.emitReserved(`upgrade`,t),t=null,this.upgrading=!1,this.flush())})}else{let e=Error(`probe error`);e.transport=t.name,this.emitReserved(`upgradeError`,e)}}))};function i(){n||(n=!0,l(),t.close(),t=null)}let a=e=>{let n=Error(`probe error: `+e);n.transport=t.name,i(),this.emitReserved(`upgradeError`,n)};function o(){a(`transport closed`)}function s(){a(`socket closed`)}function c(e){t&&e.name!==t.name&&i()}let l=()=>{t.removeListener(`open`,r),t.removeListener(`error`,a),t.removeListener(`close`,o),this.off(`close`,s),this.off(`upgrading`,c)};t.once(`open`,r),t.once(`error`,a),t.once(`close`,o),this.once(`close`,s),this.once(`upgrading`,c),this._upgrades.indexOf(`webtransport`)!==-1&&e!==`webtransport`?this.setTimeoutFn(()=>{n||t.open()},200):t.open()}onHandshake(e){this._upgrades=this._filterUpgrades(e.upgrades),super.onHandshake(e)}_filterUpgrades(e){let t=[];for(let n=0;n<e.length;n++)~this.transports.indexOf(e[n])&&t.push(e[n]);return t}},L=class extends je{constructor(e,t={}){let n=typeof e==`object`,r=n?{...e}:{...t};(!r.transports||r.transports&&typeof r.transports[0]==`string`)&&(r.transports=(r.transports||[`polling`,`websocket`,`webtransport`]).map(e=>Ee[e]).filter(e=>!!e)),super(n?r:e,r)}};L.protocol;function Me(e,t=``,n){let r=e;n||=typeof location<`u`&&location,e??=n.protocol+`//`+n.host,typeof e==`string`&&(e.charAt(0)===`/`&&(e=e.charAt(1)===`/`?n.protocol+e:n.host+e),/^(https?|wss?):\/\//.test(e)||(e=n===void 0?`https://`+e:n.protocol+`//`+e),r=N(e)),r.port||(/^(http|ws)$/.test(r.protocol)?r.port=`80`:/^(http|ws)s$/.test(r.protocol)&&(r.port=`443`)),r.path=r.path||`/`;let i=r.host.indexOf(`:`)===-1?r.host:`[`+r.host+`]`;return r.id=r.protocol+`://`+i+`:`+r.port+t,r.href=r.protocol+`://`+i+(n&&n.port===r.port?``:`:`+r.port),r}var Ne=typeof ArrayBuffer==`function`,Pe=e=>typeof ArrayBuffer.isView==`function`?ArrayBuffer.isView(e):e.buffer instanceof ArrayBuffer,R=Object.prototype.toString,Fe=typeof Blob==`function`||typeof Blob<`u`&&R.call(Blob)===`[object BlobConstructor]`,Ie=typeof File==`function`||typeof File<`u`&&R.call(File)===`[object FileConstructor]`;function z(e){return Ne&&(e instanceof ArrayBuffer||Pe(e))||Fe&&e instanceof Blob||Ie&&e instanceof File}function B(e,t){if(!e||typeof e!=`object`)return!1;if(Array.isArray(e)){for(let t=0,n=e.length;t<n;t++)if(B(e[t]))return!0;return!1}if(z(e))return!0;if(e.toJSON&&typeof e.toJSON==`function`&&arguments.length===1)return B(e.toJSON(),!0);for(let t in e)if(Object.prototype.hasOwnProperty.call(e,t)&&B(e[t]))return!0;return!1}function Le(e){let t=[],n=e.data,r=e;return r.data=V(n,t),r.attachments=t.length,{packet:r,buffers:t}}function V(e,t){if(!e)return e;if(z(e)){let n={_placeholder:!0,num:t.length};return t.push(e),n}else if(Array.isArray(e)){let n=Array(e.length);for(let r=0;r<e.length;r++)n[r]=V(e[r],t);return n}else if(typeof e==`object`&&!(e instanceof Date)){let n={};for(let r in e)Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=V(e[r],t));return n}return e}function Re(e,t){return e.data=H(e.data,t),delete e.attachments,e}function H(e,t){if(!e)return e;if(e&&e._placeholder===!0){if(typeof e.num==`number`&&e.num>=0&&e.num<t.length)return t[e.num];throw Error(`illegal attachments`)}else if(Array.isArray(e))for(let n=0;n<e.length;n++)e[n]=H(e[n],t);else if(typeof e==`object`)for(let n in e)Object.prototype.hasOwnProperty.call(e,n)&&(e[n]=H(e[n],t));return e}var ze=n({Decoder:()=>Ve,Encoder:()=>Be,PacketType:()=>W,isPacketValid:()=>Ke,protocol:()=>5}),U=[`connect`,`connect_error`,`disconnect`,`disconnecting`,`newListener`,`removeListener`],W;(function(e){e[e.CONNECT=0]=`CONNECT`,e[e.DISCONNECT=1]=`DISCONNECT`,e[e.EVENT=2]=`EVENT`,e[e.ACK=3]=`ACK`,e[e.CONNECT_ERROR=4]=`CONNECT_ERROR`,e[e.BINARY_EVENT=5]=`BINARY_EVENT`,e[e.BINARY_ACK=6]=`BINARY_ACK`})(W||={});var Be=class{constructor(e){this.replacer=e}encode(e){return(e.type===W.EVENT||e.type===W.ACK)&&B(e)?this.encodeAsBinary({type:e.type===W.EVENT?W.BINARY_EVENT:W.BINARY_ACK,nsp:e.nsp,data:e.data,id:e.id}):[this.encodeAsString(e)]}encodeAsString(e){let t=``+e.type;return(e.type===W.BINARY_EVENT||e.type===W.BINARY_ACK)&&(t+=e.attachments+`-`),e.nsp&&e.nsp!==`/`&&(t+=e.nsp+`,`),e.id!=null&&(t+=e.id),e.data!=null&&(t+=JSON.stringify(e.data,this.replacer)),t}encodeAsBinary(e){let t=Le(e),n=this.encodeAsString(t.packet),r=t.buffers;return r.unshift(n),r}},Ve=class e extends b{constructor(e){super(),this.opts=Object.assign({reviver:void 0,maxAttachments:10},typeof e==`function`?{reviver:e}:e)}add(e){let t;if(typeof e==`string`){if(this.reconstructor)throw Error(`got plaintext data when reconstructing a packet`);t=this.decodeString(e);let n=t.type===W.BINARY_EVENT;n||t.type===W.BINARY_ACK?(t.type=n?W.EVENT:W.ACK,this.reconstructor=new He(t),t.attachments===0&&super.emitReserved(`decoded`,t)):super.emitReserved(`decoded`,t)}else if(z(e)||e.base64)if(this.reconstructor)t=this.reconstructor.takeBinaryData(e),t&&(this.reconstructor=null,super.emitReserved(`decoded`,t));else throw Error(`got binary data when not reconstructing a packet`);else throw Error(`Unknown type: `+e)}decodeString(t){let n=0,r={type:Number(t.charAt(0))};if(W[r.type]===void 0)throw Error(`unknown packet type `+r.type);if(r.type===W.BINARY_EVENT||r.type===W.BINARY_ACK){let e=n+1;for(;t.charAt(++n)!==`-`&&n!=t.length;);let i=t.substring(e,n);if(i!=Number(i)||t.charAt(n)!==`-`)throw Error(`Illegal attachments`);let a=Number(i);if(!G(a)||a<0)throw Error(`Illegal attachments`);if(a>this.opts.maxAttachments)throw Error(`too many attachments`);r.attachments=a}if(t.charAt(n+1)===`/`){let e=n+1;for(;++n&&!(t.charAt(n)===`,`||n===t.length););r.nsp=t.substring(e,n)}else r.nsp=`/`;let i=t.charAt(n+1);if(i!==``&&Number(i)==i){let e=n+1;for(;++n;){let e=t.charAt(n);if(e==null||Number(e)!=e){--n;break}if(n===t.length)break}r.id=Number(t.substring(e,n+1))}if(t.charAt(++n)){let i=this.tryParse(t.substr(n));if(e.isPayloadValid(r.type,i))r.data=i;else throw Error(`invalid payload`)}return r}tryParse(e){try{return JSON.parse(e,this.opts.reviver)}catch{return!1}}static isPayloadValid(e,t){switch(e){case W.CONNECT:return K(t);case W.DISCONNECT:return t===void 0;case W.CONNECT_ERROR:return typeof t==`string`||K(t);case W.EVENT:case W.BINARY_EVENT:return Array.isArray(t)&&(typeof t[0]==`number`||typeof t[0]==`string`&&U.indexOf(t[0])===-1);case W.ACK:case W.BINARY_ACK:return Array.isArray(t)}}destroy(){this.reconstructor&&=(this.reconstructor.finishedReconstruction(),null)}},He=class{constructor(e){this.packet=e,this.buffers=[],this.reconPack=e}takeBinaryData(e){if(this.buffers.push(e),this.buffers.length===this.reconPack.attachments){let e=Re(this.reconPack,this.buffers);return this.finishedReconstruction(),e}return null}finishedReconstruction(){this.reconPack=null,this.buffers=[]}};function Ue(e){return typeof e==`string`}var G=Number.isInteger||function(e){return typeof e==`number`&&isFinite(e)&&Math.floor(e)===e};function We(e){return e===void 0||G(e)}function K(e){return Object.prototype.toString.call(e)===`[object Object]`}function Ge(e,t){switch(e){case W.CONNECT:return t===void 0||K(t);case W.DISCONNECT:return t===void 0;case W.EVENT:return Array.isArray(t)&&(typeof t[0]==`number`||typeof t[0]==`string`&&U.indexOf(t[0])===-1);case W.ACK:return Array.isArray(t);case W.CONNECT_ERROR:return typeof t==`string`||K(t);default:return!1}}function Ke(e){return Ue(e.nsp)&&We(e.id)&&Ge(e.type,e.data)}function q(e,t,n){return e.on(t,n),function(){e.off(t,n)}}var qe=Object.freeze({connect:1,connect_error:1,disconnect:1,disconnecting:1,newListener:1,removeListener:1}),J=class extends b{constructor(e,t,n){super(),this.connected=!1,this.recovered=!1,this.receiveBuffer=[],this.sendBuffer=[],this._queue=[],this._queueSeq=0,this.ids=0,this.acks={},this.flags={},this.io=e,this.nsp=t,n&&n.auth&&(this.auth=n.auth),this._opts=Object.assign({},n),this.io._autoConnect&&this.open()}get disconnected(){return!this.connected}subEvents(){if(this.subs)return;let e=this.io;this.subs=[q(e,`open`,this.onopen.bind(this)),q(e,`packet`,this.onpacket.bind(this)),q(e,`error`,this.onerror.bind(this)),q(e,`close`,this.onclose.bind(this))]}get active(){return!!this.subs}connect(){return this.connected?this:(this.subEvents(),this.io._reconnecting||this.io.open(),this.io._readyState===`open`&&this.onopen(),this)}open(){return this.connect()}send(...e){return e.unshift(`message`),this.emit.apply(this,e),this}emit(e,...t){if(qe.hasOwnProperty(e))throw Error(`"`+e.toString()+`" is a reserved event name`);if(t.unshift(e),this._opts.retries&&!this.flags.fromQueue&&!this.flags.volatile)return this._addToQueue(t),this;let n={type:W.EVENT,data:t};if(n.options={},n.options.compress=this.flags.compress!==!1,typeof t[t.length-1]==`function`){let e=this.ids++,r=t.pop();this._registerAckCallback(e,r),n.id=e}let r=this.io.engine?.transport?.writable,i=this.connected&&!this.io.engine?._hasPingExpired();return this.flags.volatile&&!r||(i?(this.notifyOutgoingListeners(n),this.packet(n)):this.sendBuffer.push(n)),this.flags={},this}_registerAckCallback(e,t){let n=this.flags.timeout??this._opts.ackTimeout;if(n===void 0){this.acks[e]=t;return}let r=this.io.setTimeoutFn(()=>{delete this.acks[e];for(let t=0;t<this.sendBuffer.length;t++)this.sendBuffer[t].id===e&&this.sendBuffer.splice(t,1);t.call(this,Error(`operation has timed out`))},n),i=(...e)=>{this.io.clearTimeoutFn(r),t.apply(this,e)};i.withError=!0,this.acks[e]=i}emitWithAck(e,...t){return new Promise((n,r)=>{let i=(e,t)=>e?r(e):n(t);i.withError=!0,t.push(i),this.emit(e,...t)})}_addToQueue(e){let t;typeof e[e.length-1]==`function`&&(t=e.pop());let n={id:this._queueSeq++,tryCount:0,pending:!1,args:e,flags:Object.assign({fromQueue:!0},this.flags)};e.push((e,...r)=>(this._queue[0],e===null?(this._queue.shift(),t&&t(null,...r)):n.tryCount>this._opts.retries&&(this._queue.shift(),t&&t(e)),n.pending=!1,this._drainQueue())),this._queue.push(n),this._drainQueue()}_drainQueue(e=!1){if(!this.connected||this._queue.length===0)return;let t=this._queue[0];t.pending&&!e||(t.pending=!0,t.tryCount++,this.flags=t.flags,this.emit.apply(this,t.args))}packet(e){e.nsp=this.nsp,this.io._packet(e)}onopen(){typeof this.auth==`function`?this.auth(e=>{this._sendConnectPacket(e)}):this._sendConnectPacket(this.auth)}_sendConnectPacket(e){this.packet({type:W.CONNECT,data:this._pid?Object.assign({pid:this._pid,offset:this._lastOffset},e):e})}onerror(e){this.connected||this.emitReserved(`connect_error`,e)}onclose(e,t){this.connected=!1,delete this.id,this.emitReserved(`disconnect`,e,t),this._clearAcks()}_clearAcks(){Object.keys(this.acks).forEach(e=>{if(!this.sendBuffer.some(t=>String(t.id)===e)){let t=this.acks[e];delete this.acks[e],t.withError&&t.call(this,Error(`socket has been disconnected`))}})}onpacket(e){if(e.nsp===this.nsp)switch(e.type){case W.CONNECT:e.data&&e.data.sid?this.onconnect(e.data.sid,e.data.pid):this.emitReserved(`connect_error`,Error(`It seems you are trying to reach a Socket.IO server in v2.x with a v3.x client, but they are not compatible (more information here: https://socket.io/docs/v3/migrating-from-2-x-to-3-0/)`));break;case W.EVENT:case W.BINARY_EVENT:this.onevent(e);break;case W.ACK:case W.BINARY_ACK:this.onack(e);break;case W.DISCONNECT:this.ondisconnect();break;case W.CONNECT_ERROR:this.destroy();let t=Error(e.data.message);t.data=e.data.data,this.emitReserved(`connect_error`,t);break}}onevent(e){let t=e.data||[];e.id!=null&&t.push(this.ack(e.id)),this.connected?this.emitEvent(t):this.receiveBuffer.push(Object.freeze(t))}emitEvent(e){if(this._anyListeners&&this._anyListeners.length){let t=this._anyListeners.slice();for(let n of t)n.apply(this,e)}super.emit.apply(this,e),this._pid&&e.length&&typeof e[e.length-1]==`string`&&(this._lastOffset=e[e.length-1])}ack(e){let t=this,n=!1;return function(...r){n||(n=!0,t.packet({type:W.ACK,id:e,data:r}))}}onack(e){let t=this.acks[e.id];typeof t==`function`&&(delete this.acks[e.id],t.withError&&e.data.unshift(null),t.apply(this,e.data))}onconnect(e,t){this.id=e,this.recovered=t&&this._pid===t,this._pid=t,this.connected=!0,this.emitBuffered(),this._drainQueue(!0),this.emitReserved(`connect`)}emitBuffered(){this.receiveBuffer.forEach(e=>this.emitEvent(e)),this.receiveBuffer=[],this.sendBuffer.forEach(e=>{this.notifyOutgoingListeners(e),this.packet(e)}),this.sendBuffer=[]}ondisconnect(){this.destroy(),this.onclose(`io server disconnect`)}destroy(){this.subs&&=(this.subs.forEach(e=>e()),void 0),this.io._destroy(this)}disconnect(){return this.connected&&this.packet({type:W.DISCONNECT}),this.destroy(),this.connected&&this.onclose(`io client disconnect`),this}close(){return this.disconnect()}compress(e){return this.flags.compress=e,this}get volatile(){return this.flags.volatile=!0,this}timeout(e){return this.flags.timeout=e,this}onAny(e){return this._anyListeners=this._anyListeners||[],this._anyListeners.push(e),this}prependAny(e){return this._anyListeners=this._anyListeners||[],this._anyListeners.unshift(e),this}offAny(e){if(!this._anyListeners)return this;if(e){let t=this._anyListeners;for(let n=0;n<t.length;n++)if(e===t[n])return t.splice(n,1),this}else this._anyListeners=[];return this}listenersAny(){return this._anyListeners||[]}onAnyOutgoing(e){return this._anyOutgoingListeners=this._anyOutgoingListeners||[],this._anyOutgoingListeners.push(e),this}prependAnyOutgoing(e){return this._anyOutgoingListeners=this._anyOutgoingListeners||[],this._anyOutgoingListeners.unshift(e),this}offAnyOutgoing(e){if(!this._anyOutgoingListeners)return this;if(e){let t=this._anyOutgoingListeners;for(let n=0;n<t.length;n++)if(e===t[n])return t.splice(n,1),this}else this._anyOutgoingListeners=[];return this}listenersAnyOutgoing(){return this._anyOutgoingListeners||[]}notifyOutgoingListeners(e){if(this._anyOutgoingListeners&&this._anyOutgoingListeners.length){let t=this._anyOutgoingListeners.slice();for(let n of t)n.apply(this,e.data)}}};function Y(e){e||={},this.ms=e.min||100,this.max=e.max||1e4,this.factor=e.factor||2,this.jitter=e.jitter>0&&e.jitter<=1?e.jitter:0,this.attempts=0}Y.prototype.duration=function(){var e=this.ms*this.factor**+ this.attempts++;if(this.jitter){var t=Math.random(),n=Math.floor(t*this.jitter*e);e=Math.floor(t*10)&1?e+n:e-n}return Math.min(e,this.max)|0},Y.prototype.reset=function(){this.attempts=0},Y.prototype.setMin=function(e){this.ms=e},Y.prototype.setMax=function(e){this.max=e},Y.prototype.setJitter=function(e){this.jitter=e};var X=class extends b{constructor(e,t){super(),this.nsps={},this.subs=[],e&&typeof e==`object`&&(t=e,e=void 0),t||={},t.path=t.path||`/socket.io`,this.opts=t,w(this,t),this.reconnection(t.reconnection!==!1),this.reconnectionAttempts(t.reconnectionAttempts||1/0),this.reconnectionDelay(t.reconnectionDelay||1e3),this.reconnectionDelayMax(t.reconnectionDelayMax||5e3),this.randomizationFactor(t.randomizationFactor??.5),this.backoff=new Y({min:this.reconnectionDelay(),max:this.reconnectionDelayMax(),jitter:this.randomizationFactor()}),this.timeout(t.timeout==null?2e4:t.timeout),this._readyState=`closed`,this.uri=e;let n=t.parser||ze;this.encoder=new n.Encoder,this.decoder=new n.Decoder,this._autoConnect=t.autoConnect!==!1,this._autoConnect&&this.open()}reconnection(e){return arguments.length?(this._reconnection=!!e,e||(this.skipReconnect=!0),this):this._reconnection}reconnectionAttempts(e){return e===void 0?this._reconnectionAttempts:(this._reconnectionAttempts=e,this)}reconnectionDelay(e){var t;return e===void 0?this._reconnectionDelay:(this._reconnectionDelay=e,(t=this.backoff)==null||t.setMin(e),this)}randomizationFactor(e){var t;return e===void 0?this._randomizationFactor:(this._randomizationFactor=e,(t=this.backoff)==null||t.setJitter(e),this)}reconnectionDelayMax(e){var t;return e===void 0?this._reconnectionDelayMax:(this._reconnectionDelayMax=e,(t=this.backoff)==null||t.setMax(e),this)}timeout(e){return arguments.length?(this._timeout=e,this):this._timeout}maybeReconnectOnOpen(){!this._reconnecting&&this._reconnection&&this.backoff.attempts===0&&this.reconnect()}open(e){if(~this._readyState.indexOf(`open`))return this;this.engine=new L(this.uri,this.opts);let t=this.engine,n=this;this._readyState=`opening`,this.skipReconnect=!1;let r=q(t,`open`,function(){n.onopen(),e&&e()}),i=t=>{this.cleanup(),this._readyState=`closed`,this.emitReserved(`error`,t),e?e(t):this.maybeReconnectOnOpen()},a=q(t,`error`,i);if(!1!==this._timeout){let e=this._timeout,n=this.setTimeoutFn(()=>{r(),i(Error(`timeout`)),t.close()},e);this.opts.autoUnref&&n.unref(),this.subs.push(()=>{this.clearTimeoutFn(n)})}return this.subs.push(r),this.subs.push(a),this}connect(e){return this.open(e)}onopen(){this.cleanup(),this._readyState=`open`,this.emitReserved(`open`);let e=this.engine;this.subs.push(q(e,`ping`,this.onping.bind(this)),q(e,`data`,this.ondata.bind(this)),q(e,`error`,this.onerror.bind(this)),q(e,`close`,this.onclose.bind(this)),q(this.decoder,`decoded`,this.ondecoded.bind(this)))}onping(){this.emitReserved(`ping`)}ondata(e){try{this.decoder.add(e)}catch(e){this.onclose(`parse error`,e)}}ondecoded(e){x(()=>{this.emitReserved(`packet`,e)},this.setTimeoutFn)}onerror(e){this.emitReserved(`error`,e)}socket(e,t){let n=this.nsps[e];return n?this._autoConnect&&!n.active&&n.connect():(n=new J(this,e,t),this.nsps[e]=n),n}_destroy(e){let t=Object.keys(this.nsps);for(let e of t)if(this.nsps[e].active)return;this._close()}_packet(e){let t=this.encoder.encode(e);for(let n=0;n<t.length;n++)this.engine.write(t[n],e.options)}cleanup(){this.subs.forEach(e=>e()),this.subs.length=0,this.decoder.destroy()}_close(){this.skipReconnect=!0,this._reconnecting=!1,this.onclose(`forced close`)}disconnect(){return this._close()}onclose(e,t){var n;this.cleanup(),(n=this.engine)==null||n.close(),this.backoff.reset(),this._readyState=`closed`,this.emitReserved(`close`,e,t),this._reconnection&&!this.skipReconnect&&this.reconnect()}reconnect(){if(this._reconnecting||this.skipReconnect)return this;let e=this;if(this.backoff.attempts>=this._reconnectionAttempts)this.backoff.reset(),this.emitReserved(`reconnect_failed`),this._reconnecting=!1;else{let t=this.backoff.duration();this._reconnecting=!0;let n=this.setTimeoutFn(()=>{e.skipReconnect||(this.emitReserved(`reconnect_attempt`,e.backoff.attempts),!e.skipReconnect&&e.open(t=>{t?(e._reconnecting=!1,e.reconnect(),this.emitReserved(`reconnect_error`,t)):e.onreconnect()}))},t);this.opts.autoUnref&&n.unref(),this.subs.push(()=>{this.clearTimeoutFn(n)})}}onreconnect(){let e=this.backoff.attempts;this._reconnecting=!1,this.backoff.reset(),this.emitReserved(`reconnect`,e)}},Z={};function Q(e,t){typeof e==`object`&&(t=e,e=void 0),t||={};let n=Me(e,t.path||`/socket.io`),r=n.source,i=n.id,a=n.path,o=Z[i]&&a in Z[i].nsps,s=t.forceNew||t[`force new connection`]||!1===t.multiplex||o,c;return s?c=new X(r,t):(Z[i]||(Z[i]=new X(r,t)),c=Z[i]),n.query&&!t.query&&(t.query=n.queryKey),c.socket(n.path,t)}Object.assign(Q,{Manager:X,Socket:J,io:Q,connect:Q});var Je=`
1
+ (function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports):typeof define==`function`&&define.amd?define([`exports`],t):(e=typeof globalThis<`u`?globalThis:e||self,t(e.JibTalkCore={}))})(this,function(e){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=Object.defineProperty,n=(e,n)=>{let r={};for(var i in e)t(r,i,{get:e[i],enumerable:!0});return n||t(r,Symbol.toStringTag,{value:`Module`}),r},r=Object.create(null);r.open=`0`,r.close=`1`,r.ping=`2`,r.pong=`3`,r.message=`4`,r.upgrade=`5`,r.noop=`6`;var i=Object.create(null);Object.keys(r).forEach(e=>{i[r[e]]=e});var a={type:`error`,data:`parser error`},o=typeof Blob==`function`||typeof Blob<`u`&&Object.prototype.toString.call(Blob)===`[object BlobConstructor]`,s=typeof ArrayBuffer==`function`,c=e=>typeof ArrayBuffer.isView==`function`?ArrayBuffer.isView(e):e&&e.buffer instanceof ArrayBuffer,l=({type:e,data:t},n,i)=>o&&t instanceof Blob?n?i(t):u(t,i):s&&(t instanceof ArrayBuffer||c(t))?n?i(t):u(new Blob([t]),i):i(r[e]+(t||``)),u=(e,t)=>{let n=new FileReader;return n.onload=function(){let e=n.result.split(`,`)[1];t(`b`+(e||``))},n.readAsDataURL(e)};function d(e){return e instanceof Uint8Array?e:e instanceof ArrayBuffer?new Uint8Array(e):new Uint8Array(e.buffer,e.byteOffset,e.byteLength)}var f;function ee(e,t){if(o&&e.data instanceof Blob)return e.data.arrayBuffer().then(d).then(t);if(s&&(e.data instanceof ArrayBuffer||c(e.data)))return t(d(e.data));l(e,!1,e=>{f||=new TextEncoder,t(f.encode(e))})}var te=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/`,p=typeof Uint8Array>`u`?[]:new Uint8Array(256);for(let e=0;e<64;e++)p[te.charCodeAt(e)]=e;var ne=e=>{let t=e.length*.75,n=e.length,r,i=0,a,o,s,c;e[e.length-1]===`=`&&(t--,e[e.length-2]===`=`&&t--);let l=new ArrayBuffer(t),u=new Uint8Array(l);for(r=0;r<n;r+=4)a=p[e.charCodeAt(r)],o=p[e.charCodeAt(r+1)],s=p[e.charCodeAt(r+2)],c=p[e.charCodeAt(r+3)],u[i++]=a<<2|o>>4,u[i++]=(o&15)<<4|s>>2,u[i++]=(s&3)<<6|c&63;return l},re=typeof ArrayBuffer==`function`,m=(e,t)=>{if(typeof e!=`string`)return{type:`message`,data:h(e,t)};let n=e.charAt(0);return n===`b`?{type:`message`,data:ie(e.substring(1),t)}:i[n]?e.length>1?{type:i[n],data:e.substring(1)}:{type:i[n]}:a},ie=(e,t)=>re?h(ne(e),t):{base64:!0,data:e},h=(e,t)=>{switch(t){case`blob`:return e instanceof Blob?e:new Blob([e]);default:return e instanceof ArrayBuffer?e:e.buffer}},g=``,ae=(e,t)=>{let n=e.length,r=Array(n),i=0;e.forEach((e,a)=>{l(e,!1,e=>{r[a]=e,++i===n&&t(r.join(g))})})},oe=(e,t)=>{let n=e.split(g),r=[];for(let e=0;e<n.length;e++){let i=m(n[e],t);if(r.push(i),i.type===`error`)break}return r};function se(){return new TransformStream({transform(e,t){ee(e,n=>{let r=n.length,i;if(r<126)i=new Uint8Array(1),new DataView(i.buffer).setUint8(0,r);else if(r<65536){i=new Uint8Array(3);let e=new DataView(i.buffer);e.setUint8(0,126),e.setUint16(1,r)}else{i=new Uint8Array(9);let e=new DataView(i.buffer);e.setUint8(0,127),e.setBigUint64(1,BigInt(r))}e.data&&typeof e.data!=`string`&&(i[0]|=128),t.enqueue(i),t.enqueue(n)})}})}var _;function v(e){return e.reduce((e,t)=>e+t.length,0)}function y(e,t){if(e[0].length===t)return e.shift();let n=new Uint8Array(t),r=0;for(let i=0;i<t;i++)n[i]=e[0][r++],r===e[0].length&&(e.shift(),r=0);return e.length&&r<e[0].length&&(e[0]=e[0].slice(r)),n}function ce(e,t){_||=new TextDecoder;let n=[],r=0,i=-1,o=!1;return new TransformStream({transform(s,c){for(n.push(s);;){if(r===0){if(v(n)<1)break;let e=y(n,1);o=(e[0]&128)==128,i=e[0]&127,r=i<126?3:i===126?1:2}else if(r===1){if(v(n)<2)break;let e=y(n,2);i=new DataView(e.buffer,e.byteOffset,e.length).getUint16(0),r=3}else if(r===2){if(v(n)<8)break;let e=y(n,8),t=new DataView(e.buffer,e.byteOffset,e.length),o=t.getUint32(0);if(o>2**21-1){c.enqueue(a);break}i=o*2**32+t.getUint32(4),r=3}else{if(v(n)<i)break;let e=y(n,i);c.enqueue(m(o?e:_.decode(e),t)),r=0}if(i===0||i>e){c.enqueue(a);break}}}})}function b(e){if(e)return le(e)}function le(e){for(var t in b.prototype)e[t]=b.prototype[t];return e}b.prototype.on=b.prototype.addEventListener=function(e,t){return this._callbacks=this._callbacks||{},(this._callbacks[`$`+e]=this._callbacks[`$`+e]||[]).push(t),this},b.prototype.once=function(e,t){function n(){this.off(e,n),t.apply(this,arguments)}return n.fn=t,this.on(e,n),this},b.prototype.off=b.prototype.removeListener=b.prototype.removeAllListeners=b.prototype.removeEventListener=function(e,t){if(this._callbacks=this._callbacks||{},arguments.length==0)return this._callbacks={},this;var n=this._callbacks[`$`+e];if(!n)return this;if(arguments.length==1)return delete this._callbacks[`$`+e],this;for(var r,i=0;i<n.length;i++)if(r=n[i],r===t||r.fn===t){n.splice(i,1);break}return n.length===0&&delete this._callbacks[`$`+e],this},b.prototype.emit=function(e){this._callbacks=this._callbacks||{};for(var t=Array(arguments.length-1),n=this._callbacks[`$`+e],r=1;r<arguments.length;r++)t[r-1]=arguments[r];if(n){n=n.slice(0);for(var r=0,i=n.length;r<i;++r)n[r].apply(this,t)}return this},b.prototype.emitReserved=b.prototype.emit,b.prototype.listeners=function(e){return this._callbacks=this._callbacks||{},this._callbacks[`$`+e]||[]},b.prototype.hasListeners=function(e){return!!this.listeners(e).length};var x=typeof Promise==`function`&&typeof Promise.resolve==`function`?e=>Promise.resolve().then(e):(e,t)=>t(e,0),S=typeof self<`u`?self:typeof window<`u`?window:Function(`return this`)(),ue=`arraybuffer`;function C(e,...t){return t.reduce((t,n)=>(e.hasOwnProperty(n)&&(t[n]=e[n]),t),{})}var de=S.setTimeout,fe=S.clearTimeout;function w(e,t){t.useNativeTimers?(e.setTimeoutFn=de.bind(S),e.clearTimeoutFn=fe.bind(S)):(e.setTimeoutFn=S.setTimeout.bind(S),e.clearTimeoutFn=S.clearTimeout.bind(S))}var pe=1.33;function me(e){return typeof e==`string`?he(e):Math.ceil((e.byteLength||e.size)*pe)}function he(e){let t=0,n=0;for(let r=0,i=e.length;r<i;r++)t=e.charCodeAt(r),t<128?n+=1:t<2048?n+=2:t<55296||t>=57344?n+=3:(r++,n+=4);return n}function T(){return Date.now().toString(36).substring(3)+Math.random().toString(36).substring(2,5)}function ge(e){let t=``;for(let n in e)e.hasOwnProperty(n)&&(t.length&&(t+=`&`),t+=encodeURIComponent(n)+`=`+encodeURIComponent(e[n]));return t}function _e(e){let t={},n=e.split(`&`);for(let e=0,r=n.length;e<r;e++){let r=n[e].split(`=`);t[decodeURIComponent(r[0])]=decodeURIComponent(r[1])}return t}var ve=class extends Error{constructor(e,t,n){super(e),this.description=t,this.context=n,this.type=`TransportError`}},E=class extends b{constructor(e){super(),this.writable=!1,w(this,e),this.opts=e,this.query=e.query,this.socket=e.socket,this.supportsBinary=!e.forceBase64}onError(e,t,n){return super.emitReserved(`error`,new ve(e,t,n)),this}open(){return this.readyState=`opening`,this.doOpen(),this}close(){return(this.readyState===`opening`||this.readyState===`open`)&&(this.doClose(),this.onClose()),this}send(e){this.readyState===`open`&&this.write(e)}onOpen(){this.readyState=`open`,this.writable=!0,super.emitReserved(`open`)}onData(e){let t=m(e,this.socket.binaryType);this.onPacket(t)}onPacket(e){super.emitReserved(`packet`,e)}onClose(e){this.readyState=`closed`,super.emitReserved(`close`,e)}pause(e){}createUri(e,t={}){return e+`://`+this._hostname()+this._port()+this.opts.path+this._query(t)}_hostname(){let e=this.opts.hostname;return e.indexOf(`:`)===-1?e:`[`+e+`]`}_port(){return this.opts.port&&(this.opts.secure&&Number(this.opts.port)!==443||!this.opts.secure&&Number(this.opts.port)!==80)?`:`+this.opts.port:``}_query(e){let t=ge(e);return t.length?`?`+t:``}},ye=class extends E{constructor(){super(...arguments),this._polling=!1}get name(){return`polling`}doOpen(){this._poll()}pause(e){this.readyState=`pausing`;let t=()=>{this.readyState=`paused`,e()};if(this._polling||!this.writable){let e=0;this._polling&&(e++,this.once(`pollComplete`,function(){--e||t()})),this.writable||(e++,this.once(`drain`,function(){--e||t()}))}else t()}_poll(){this._polling=!0,this.doPoll(),this.emitReserved(`poll`)}onData(e){oe(e,this.socket.binaryType).forEach(e=>{if(this.readyState===`opening`&&e.type===`open`&&this.onOpen(),e.type===`close`)return this.onClose({description:`transport closed by the server`}),!1;this.onPacket(e)}),this.readyState!==`closed`&&(this._polling=!1,this.emitReserved(`pollComplete`),this.readyState===`open`&&this._poll())}doClose(){let e=()=>{this.write([{type:`close`}])};this.readyState===`open`?e():this.once(`open`,e)}write(e){this.writable=!1,ae(e,e=>{this.doWrite(e,()=>{this.writable=!0,this.emitReserved(`drain`)})})}uri(){let e=this.opts.secure?`https`:`http`,t=this.query||{};return!1!==this.opts.timestampRequests&&(t[this.opts.timestampParam]=T()),!this.supportsBinary&&!t.sid&&(t.b64=1),this.createUri(e,t)}},D=!1;try{D=typeof XMLHttpRequest<`u`&&`withCredentials`in new XMLHttpRequest}catch{}var be=D;function xe(){}var Se=class extends ye{constructor(e){if(super(e),typeof location<`u`){let t=location.protocol===`https:`,n=location.port;n||=t?`443`:`80`,this.xd=typeof location<`u`&&e.hostname!==location.hostname||n!==e.port}}doWrite(e,t){let n=this.request({method:`POST`,data:e});n.on(`success`,t),n.on(`error`,(e,t)=>{this.onError(`xhr post error`,e,t)})}doPoll(){let e=this.request();e.on(`data`,this.onData.bind(this)),e.on(`error`,(e,t)=>{this.onError(`xhr poll error`,e,t)}),this.pollXhr=e}},O=class e extends b{constructor(e,t,n){super(),this.createRequest=e,w(this,n),this._opts=n,this._method=n.method||`GET`,this._uri=t,this._data=n.data===void 0?null:n.data,this._create()}_create(){var t;let n=C(this._opts,`agent`,`pfx`,`key`,`passphrase`,`cert`,`ca`,`ciphers`,`rejectUnauthorized`,`autoUnref`);n.xdomain=!!this._opts.xd;let r=this._xhr=this.createRequest(n);try{r.open(this._method,this._uri,!0);try{if(this._opts.extraHeaders){r.setDisableHeaderCheck&&r.setDisableHeaderCheck(!0);for(let e in this._opts.extraHeaders)this._opts.extraHeaders.hasOwnProperty(e)&&r.setRequestHeader(e,this._opts.extraHeaders[e])}}catch{}if(this._method===`POST`)try{r.setRequestHeader(`Content-type`,`text/plain;charset=UTF-8`)}catch{}try{r.setRequestHeader(`Accept`,`*/*`)}catch{}(t=this._opts.cookieJar)==null||t.addCookies(r),`withCredentials`in r&&(r.withCredentials=this._opts.withCredentials),this._opts.requestTimeout&&(r.timeout=this._opts.requestTimeout),r.onreadystatechange=()=>{var e;r.readyState===3&&((e=this._opts.cookieJar)==null||e.parseCookies(r.getResponseHeader(`set-cookie`))),r.readyState===4&&(r.status===200||r.status===1223?this._onLoad():this.setTimeoutFn(()=>{this._onError(typeof r.status==`number`?r.status:0)},0))},r.send(this._data)}catch(e){this.setTimeoutFn(()=>{this._onError(e)},0);return}typeof document<`u`&&(this._index=e.requestsCount++,e.requests[this._index]=this)}_onError(e){this.emitReserved(`error`,e,this._xhr),this._cleanup(!0)}_cleanup(t){if(!(this._xhr===void 0||this._xhr===null)){if(this._xhr.onreadystatechange=xe,t)try{this._xhr.abort()}catch{}typeof document<`u`&&delete e.requests[this._index],this._xhr=null}}_onLoad(){let e=this._xhr.responseText;e!==null&&(this.emitReserved(`data`,e),this.emitReserved(`success`),this._cleanup())}abort(){this._cleanup()}};if(O.requestsCount=0,O.requests={},typeof document<`u`){if(typeof attachEvent==`function`)attachEvent(`onunload`,k);else if(typeof addEventListener==`function`){let e=`onpagehide`in S?`pagehide`:`unload`;addEventListener(e,k,!1)}}function k(){for(let e in O.requests)O.requests.hasOwnProperty(e)&&O.requests[e].abort()}var Ce=(function(){let e=A({xdomain:!1});return e&&e.responseType!==null})(),we=class extends Se{constructor(e){super(e);let t=e&&e.forceBase64;this.supportsBinary=Ce&&!t}request(e={}){return Object.assign(e,{xd:this.xd},this.opts),new O(A,this.uri(),e)}};function A(e){let t=e.xdomain;try{if(typeof XMLHttpRequest<`u`&&(!t||be))return new XMLHttpRequest}catch{}if(!t)try{return new S[[`Active`,`Object`].join(`X`)](`Microsoft.XMLHTTP`)}catch{}}var j=typeof navigator<`u`&&typeof navigator.product==`string`&&navigator.product.toLowerCase()===`reactnative`,Te=class extends E{get name(){return`websocket`}doOpen(){let e=this.uri(),t=this.opts.protocols,n=j?{}:C(this.opts,`agent`,`perMessageDeflate`,`pfx`,`key`,`passphrase`,`cert`,`ca`,`ciphers`,`rejectUnauthorized`,`localAddress`,`protocolVersion`,`origin`,`maxPayload`,`family`,`checkServerIdentity`);this.opts.extraHeaders&&(n.headers=this.opts.extraHeaders);try{this.ws=this.createSocket(e,t,n)}catch(e){return this.emitReserved(`error`,e)}this.ws.binaryType=this.socket.binaryType,this.addEventListeners()}addEventListeners(){this.ws.onopen=()=>{this.opts.autoUnref&&this.ws._socket.unref(),this.onOpen()},this.ws.onclose=e=>this.onClose({description:`websocket connection closed`,context:e}),this.ws.onmessage=e=>this.onData(e.data),this.ws.onerror=e=>this.onError(`websocket error`,e)}write(e){this.writable=!1;for(let t=0;t<e.length;t++){let n=e[t],r=t===e.length-1;l(n,this.supportsBinary,e=>{try{this.doWrite(n,e)}catch{}r&&x(()=>{this.writable=!0,this.emitReserved(`drain`)},this.setTimeoutFn)})}}doClose(){this.ws!==void 0&&(this.ws.onerror=()=>{},this.ws.close(),this.ws=null)}uri(){let e=this.opts.secure?`wss`:`ws`,t=this.query||{};return this.opts.timestampRequests&&(t[this.opts.timestampParam]=T()),this.supportsBinary||(t.b64=1),this.createUri(e,t)}},M=S.WebSocket||S.MozWebSocket,Ee={websocket:class extends Te{createSocket(e,t,n){return j?new M(e,t,n):t?new M(e,t):new M(e)}doWrite(e,t){this.ws.send(t)}},webtransport:class extends E{get name(){return`webtransport`}doOpen(){try{this._transport=new WebTransport(this.createUri(`https`),this.opts.transportOptions[this.name])}catch(e){return this.emitReserved(`error`,e)}this._transport.closed.then(()=>{this.onClose()}).catch(e=>{this.onError(`webtransport error`,e)}),this._transport.ready.then(()=>{this._transport.createBidirectionalStream().then(e=>{let t=ce(2**53-1,this.socket.binaryType),n=e.readable.pipeThrough(t).getReader(),r=se();r.readable.pipeTo(e.writable),this._writer=r.writable.getWriter();let i=()=>{n.read().then(({done:e,value:t})=>{e||(this.onPacket(t),i())}).catch(e=>{})};i();let a={type:`open`};this.query.sid&&(a.data=`{"sid":"${this.query.sid}"}`),this._writer.write(a).then(()=>this.onOpen())})})}write(e){this.writable=!1;for(let t=0;t<e.length;t++){let n=e[t],r=t===e.length-1;this._writer.write(n).then(()=>{r&&x(()=>{this.writable=!0,this.emitReserved(`drain`)},this.setTimeoutFn)})}}doClose(){var e;(e=this._transport)==null||e.close()}},polling:we},De=/^(?:(?![^:@\/?#]+:[^:@\/]*@)(http|https|ws|wss):\/\/)?((?:(([^:@\/?#]*)(?::([^:@\/?#]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/,Oe=[`source`,`protocol`,`authority`,`userInfo`,`user`,`password`,`host`,`port`,`relative`,`path`,`directory`,`file`,`query`,`anchor`];function N(e){if(e.length>8e3)throw`URI too long`;let t=e,n=e.indexOf(`[`),r=e.indexOf(`]`);n!=-1&&r!=-1&&(e=e.substring(0,n)+e.substring(n,r).replace(/:/g,`;`)+e.substring(r,e.length));let i=De.exec(e||``),a={},o=14;for(;o--;)a[Oe[o]]=i[o]||``;return n!=-1&&r!=-1&&(a.source=t,a.host=a.host.substring(1,a.host.length-1).replace(/;/g,`:`),a.authority=a.authority.replace(`[`,``).replace(`]`,``).replace(/;/g,`:`),a.ipv6uri=!0),a.pathNames=ke(a,a.path),a.queryKey=Ae(a,a.query),a}function ke(e,t){let n=t.replace(/\/{2,9}/g,`/`).split(`/`);return(t.slice(0,1)==`/`||t.length===0)&&n.splice(0,1),t.slice(-1)==`/`&&n.splice(n.length-1,1),n}function Ae(e,t){let n={};return t.replace(/(?:^|&)([^&=]*)=?([^&]*)/g,function(e,t,r){t&&(n[t]=r)}),n}var P=typeof addEventListener==`function`&&typeof removeEventListener==`function`,F=[];P&&addEventListener(`offline`,()=>{F.forEach(e=>e())},!1);var I=class e extends b{constructor(e,t){if(super(),this.binaryType=ue,this.writeBuffer=[],this._prevBufferLen=0,this._pingInterval=-1,this._pingTimeout=-1,this._maxPayload=-1,this._pingTimeoutTime=1/0,e&&typeof e==`object`&&(t=e,e=null),e){let n=N(e);t.hostname=n.host,t.secure=n.protocol===`https`||n.protocol===`wss`,t.port=n.port,n.query&&(t.query=n.query)}else t.host&&(t.hostname=N(t.host).host);w(this,t),this.secure=t.secure==null?typeof location<`u`&&location.protocol===`https:`:t.secure,t.hostname&&!t.port&&(t.port=this.secure?`443`:`80`),this.hostname=t.hostname||(typeof location<`u`?location.hostname:`localhost`),this.port=t.port||(typeof location<`u`&&location.port?location.port:this.secure?`443`:`80`),this.transports=[],this._transportsByName={},t.transports.forEach(e=>{let t=e.prototype.name;this.transports.push(t),this._transportsByName[t]=e}),this.opts=Object.assign({path:`/engine.io`,agent:!1,withCredentials:!1,upgrade:!0,timestampParam:`t`,rememberUpgrade:!1,addTrailingSlash:!0,rejectUnauthorized:!0,perMessageDeflate:{threshold:1024},transportOptions:{},closeOnBeforeunload:!1},t),this.opts.path=this.opts.path.replace(/\/$/,``)+(this.opts.addTrailingSlash?`/`:``),typeof this.opts.query==`string`&&(this.opts.query=_e(this.opts.query)),P&&(this.opts.closeOnBeforeunload&&(this._beforeunloadEventListener=()=>{this.transport&&(this.transport.removeAllListeners(),this.transport.close())},addEventListener(`beforeunload`,this._beforeunloadEventListener,!1)),this.hostname!==`localhost`&&(this._offlineEventListener=()=>{this._onClose(`transport close`,{description:`network connection lost`})},F.push(this._offlineEventListener))),this.opts.withCredentials&&(this._cookieJar=void 0),this._open()}createTransport(e){let t=Object.assign({},this.opts.query);t.EIO=4,t.transport=e,this.id&&(t.sid=this.id);let n=Object.assign({},this.opts,{query:t,socket:this,hostname:this.hostname,secure:this.secure,port:this.port},this.opts.transportOptions[e]);return new this._transportsByName[e](n)}_open(){if(this.transports.length===0){this.setTimeoutFn(()=>{this.emitReserved(`error`,`No transports available`)},0);return}let t=this.opts.rememberUpgrade&&e.priorWebsocketSuccess&&this.transports.indexOf(`websocket`)!==-1?`websocket`:this.transports[0];this.readyState=`opening`;let n=this.createTransport(t);n.open(),this.setTransport(n)}setTransport(e){this.transport&&this.transport.removeAllListeners(),this.transport=e,e.on(`drain`,this._onDrain.bind(this)).on(`packet`,this._onPacket.bind(this)).on(`error`,this._onError.bind(this)).on(`close`,e=>this._onClose(`transport close`,e))}onOpen(){this.readyState=`open`,e.priorWebsocketSuccess=this.transport.name===`websocket`,this.emitReserved(`open`),this.flush()}_onPacket(e){if(this.readyState===`opening`||this.readyState===`open`||this.readyState===`closing`)switch(this.emitReserved(`packet`,e),this.emitReserved(`heartbeat`),e.type){case`open`:this.onHandshake(JSON.parse(e.data));break;case`ping`:this._sendPacket(`pong`),this.emitReserved(`ping`),this.emitReserved(`pong`),this._resetPingTimeout();break;case`error`:let t=Error(`server error`);t.code=e.data,this._onError(t);break;case`message`:this.emitReserved(`data`,e.data),this.emitReserved(`message`,e.data);break}}onHandshake(e){this.emitReserved(`handshake`,e),this.id=e.sid,this.transport.query.sid=e.sid,this._pingInterval=e.pingInterval,this._pingTimeout=e.pingTimeout,this._maxPayload=e.maxPayload,this.onOpen(),this.readyState!==`closed`&&this._resetPingTimeout()}_resetPingTimeout(){this.clearTimeoutFn(this._pingTimeoutTimer);let e=this._pingInterval+this._pingTimeout;this._pingTimeoutTime=Date.now()+e,this._pingTimeoutTimer=this.setTimeoutFn(()=>{this._onClose(`ping timeout`)},e),this.opts.autoUnref&&this._pingTimeoutTimer.unref()}_onDrain(){this.writeBuffer.splice(0,this._prevBufferLen),this._prevBufferLen=0,this.writeBuffer.length===0?this.emitReserved(`drain`):this.flush()}flush(){if(this.readyState!==`closed`&&this.transport.writable&&!this.upgrading&&this.writeBuffer.length){let e=this._getWritablePackets();this.transport.send(e),this._prevBufferLen=e.length,this.emitReserved(`flush`)}}_getWritablePackets(){if(!(this._maxPayload&&this.transport.name===`polling`&&this.writeBuffer.length>1))return this.writeBuffer;let e=1;for(let t=0;t<this.writeBuffer.length;t++){let n=this.writeBuffer[t].data;if(n&&(e+=me(n)),t>0&&e>this._maxPayload)return this.writeBuffer.slice(0,t);e+=2}return this.writeBuffer}_hasPingExpired(){if(!this._pingTimeoutTime)return!0;let e=Date.now()>this._pingTimeoutTime;return e&&(this._pingTimeoutTime=0,x(()=>{this._onClose(`ping timeout`)},this.setTimeoutFn)),e}write(e,t,n){return this._sendPacket(`message`,e,t,n),this}send(e,t,n){return this._sendPacket(`message`,e,t,n),this}_sendPacket(e,t,n,r){if(typeof t==`function`&&(r=t,t=void 0),typeof n==`function`&&(r=n,n=null),this.readyState===`closing`||this.readyState===`closed`)return;n||={},n.compress=!1!==n.compress;let i={type:e,data:t,options:n};this.emitReserved(`packetCreate`,i),this.writeBuffer.push(i),r&&this.once(`flush`,r),this.flush()}close(){let e=()=>{this._onClose(`forced close`),this.transport.close()},t=()=>{this.off(`upgrade`,t),this.off(`upgradeError`,t),e()},n=()=>{this.once(`upgrade`,t),this.once(`upgradeError`,t)};return(this.readyState===`opening`||this.readyState===`open`)&&(this.readyState=`closing`,this.writeBuffer.length?this.once(`drain`,()=>{this.upgrading?n():e()}):this.upgrading?n():e()),this}_onError(t){if(e.priorWebsocketSuccess=!1,this.opts.tryAllTransports&&this.transports.length>1&&this.readyState===`opening`)return this.transports.shift(),this._open();this.emitReserved(`error`,t),this._onClose(`transport error`,t)}_onClose(e,t){if(this.readyState===`opening`||this.readyState===`open`||this.readyState===`closing`){if(this.clearTimeoutFn(this._pingTimeoutTimer),this.transport.removeAllListeners(`close`),this.transport.close(),this.transport.removeAllListeners(),P&&(this._beforeunloadEventListener&&removeEventListener(`beforeunload`,this._beforeunloadEventListener,!1),this._offlineEventListener)){let e=F.indexOf(this._offlineEventListener);e!==-1&&F.splice(e,1)}this.readyState=`closed`,this.id=null,this.emitReserved(`close`,e,t),this.writeBuffer=[],this._prevBufferLen=0}}};I.protocol=4;var je=class extends I{constructor(){super(...arguments),this._upgrades=[]}onOpen(){if(super.onOpen(),this.readyState===`open`&&this.opts.upgrade)for(let e=0;e<this._upgrades.length;e++)this._probe(this._upgrades[e])}_probe(e){let t=this.createTransport(e),n=!1;I.priorWebsocketSuccess=!1;let r=()=>{n||(t.send([{type:`ping`,data:`probe`}]),t.once(`packet`,e=>{if(!n)if(e.type===`pong`&&e.data===`probe`){if(this.upgrading=!0,this.emitReserved(`upgrading`,t),!t)return;I.priorWebsocketSuccess=t.name===`websocket`,this.transport.pause(()=>{n||this.readyState!==`closed`&&(l(),this.setTransport(t),t.send([{type:`upgrade`}]),this.emitReserved(`upgrade`,t),t=null,this.upgrading=!1,this.flush())})}else{let e=Error(`probe error`);e.transport=t.name,this.emitReserved(`upgradeError`,e)}}))};function i(){n||(n=!0,l(),t.close(),t=null)}let a=e=>{let n=Error(`probe error: `+e);n.transport=t.name,i(),this.emitReserved(`upgradeError`,n)};function o(){a(`transport closed`)}function s(){a(`socket closed`)}function c(e){t&&e.name!==t.name&&i()}let l=()=>{t.removeListener(`open`,r),t.removeListener(`error`,a),t.removeListener(`close`,o),this.off(`close`,s),this.off(`upgrading`,c)};t.once(`open`,r),t.once(`error`,a),t.once(`close`,o),this.once(`close`,s),this.once(`upgrading`,c),this._upgrades.indexOf(`webtransport`)!==-1&&e!==`webtransport`?this.setTimeoutFn(()=>{n||t.open()},200):t.open()}onHandshake(e){this._upgrades=this._filterUpgrades(e.upgrades),super.onHandshake(e)}_filterUpgrades(e){let t=[];for(let n=0;n<e.length;n++)~this.transports.indexOf(e[n])&&t.push(e[n]);return t}},L=class extends je{constructor(e,t={}){let n=typeof e==`object`?e:t;(!n.transports||n.transports&&typeof n.transports[0]==`string`)&&(n.transports=(n.transports||[`polling`,`websocket`,`webtransport`]).map(e=>Ee[e]).filter(e=>!!e)),super(e,n)}};L.protocol;function Me(e,t=``,n){let r=e;n||=typeof location<`u`&&location,e??=n.protocol+`//`+n.host,typeof e==`string`&&(e.charAt(0)===`/`&&(e=e.charAt(1)===`/`?n.protocol+e:n.host+e),/^(https?|wss?):\/\//.test(e)||(e=n===void 0?`https://`+e:n.protocol+`//`+e),r=N(e)),r.port||(/^(http|ws)$/.test(r.protocol)?r.port=`80`:/^(http|ws)s$/.test(r.protocol)&&(r.port=`443`)),r.path=r.path||`/`;let i=r.host.indexOf(`:`)===-1?r.host:`[`+r.host+`]`;return r.id=r.protocol+`://`+i+`:`+r.port+t,r.href=r.protocol+`://`+i+(n&&n.port===r.port?``:`:`+r.port),r}var Ne=typeof ArrayBuffer==`function`,Pe=e=>typeof ArrayBuffer.isView==`function`?ArrayBuffer.isView(e):e.buffer instanceof ArrayBuffer,R=Object.prototype.toString,Fe=typeof Blob==`function`||typeof Blob<`u`&&R.call(Blob)===`[object BlobConstructor]`,Ie=typeof File==`function`||typeof File<`u`&&R.call(File)===`[object FileConstructor]`;function z(e){return Ne&&(e instanceof ArrayBuffer||Pe(e))||Fe&&e instanceof Blob||Ie&&e instanceof File}function B(e,t){if(!e||typeof e!=`object`)return!1;if(Array.isArray(e)){for(let t=0,n=e.length;t<n;t++)if(B(e[t]))return!0;return!1}if(z(e))return!0;if(e.toJSON&&typeof e.toJSON==`function`&&arguments.length===1)return B(e.toJSON(),!0);for(let t in e)if(Object.prototype.hasOwnProperty.call(e,t)&&B(e[t]))return!0;return!1}function Le(e){let t=[],n=e.data,r=e;return r.data=V(n,t),r.attachments=t.length,{packet:r,buffers:t}}function V(e,t){if(!e)return e;if(z(e)){let n={_placeholder:!0,num:t.length};return t.push(e),n}else if(Array.isArray(e)){let n=Array(e.length);for(let r=0;r<e.length;r++)n[r]=V(e[r],t);return n}else if(typeof e==`object`&&!(e instanceof Date)){let n={};for(let r in e)Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=V(e[r],t));return n}return e}function Re(e,t){return e.data=H(e.data,t),delete e.attachments,e}function H(e,t){if(!e)return e;if(e&&e._placeholder===!0){if(typeof e.num==`number`&&e.num>=0&&e.num<t.length)return t[e.num];throw Error(`illegal attachments`)}else if(Array.isArray(e))for(let n=0;n<e.length;n++)e[n]=H(e[n],t);else if(typeof e==`object`)for(let n in e)Object.prototype.hasOwnProperty.call(e,n)&&(e[n]=H(e[n],t));return e}var ze=n({Decoder:()=>Ve,Encoder:()=>Be,PacketType:()=>W,isPacketValid:()=>Ke,protocol:()=>5}),U=[`connect`,`connect_error`,`disconnect`,`disconnecting`,`newListener`,`removeListener`],W;(function(e){e[e.CONNECT=0]=`CONNECT`,e[e.DISCONNECT=1]=`DISCONNECT`,e[e.EVENT=2]=`EVENT`,e[e.ACK=3]=`ACK`,e[e.CONNECT_ERROR=4]=`CONNECT_ERROR`,e[e.BINARY_EVENT=5]=`BINARY_EVENT`,e[e.BINARY_ACK=6]=`BINARY_ACK`})(W||={});var Be=class{constructor(e){this.replacer=e}encode(e){return(e.type===W.EVENT||e.type===W.ACK)&&B(e)?this.encodeAsBinary({type:e.type===W.EVENT?W.BINARY_EVENT:W.BINARY_ACK,nsp:e.nsp,data:e.data,id:e.id}):[this.encodeAsString(e)]}encodeAsString(e){let t=``+e.type;return(e.type===W.BINARY_EVENT||e.type===W.BINARY_ACK)&&(t+=e.attachments+`-`),e.nsp&&e.nsp!==`/`&&(t+=e.nsp+`,`),e.id!=null&&(t+=e.id),e.data!=null&&(t+=JSON.stringify(e.data,this.replacer)),t}encodeAsBinary(e){let t=Le(e),n=this.encodeAsString(t.packet),r=t.buffers;return r.unshift(n),r}},Ve=class e extends b{constructor(e){super(),this.opts=Object.assign({reviver:void 0,maxAttachments:10},typeof e==`function`?{reviver:e}:e)}add(e){let t;if(typeof e==`string`){if(this.reconstructor)throw Error(`got plaintext data when reconstructing a packet`);t=this.decodeString(e);let n=t.type===W.BINARY_EVENT;n||t.type===W.BINARY_ACK?(t.type=n?W.EVENT:W.ACK,this.reconstructor=new He(t),t.attachments===0&&super.emitReserved(`decoded`,t)):super.emitReserved(`decoded`,t)}else if(z(e)||e.base64)if(this.reconstructor)t=this.reconstructor.takeBinaryData(e),t&&(this.reconstructor=null,super.emitReserved(`decoded`,t));else throw Error(`got binary data when not reconstructing a packet`);else throw Error(`Unknown type: `+e)}decodeString(t){let n=0,r={type:Number(t.charAt(0))};if(W[r.type]===void 0)throw Error(`unknown packet type `+r.type);if(r.type===W.BINARY_EVENT||r.type===W.BINARY_ACK){let e=n+1;for(;t.charAt(++n)!==`-`&&n!=t.length;);let i=t.substring(e,n);if(i!=Number(i)||t.charAt(n)!==`-`)throw Error(`Illegal attachments`);let a=Number(i);if(!G(a)||a<0)throw Error(`Illegal attachments`);if(a>this.opts.maxAttachments)throw Error(`too many attachments`);r.attachments=a}if(t.charAt(n+1)===`/`){let e=n+1;for(;++n&&!(t.charAt(n)===`,`||n===t.length););r.nsp=t.substring(e,n)}else r.nsp=`/`;let i=t.charAt(n+1);if(i!==``&&Number(i)==i){let e=n+1;for(;++n;){let e=t.charAt(n);if(e==null||Number(e)!=e){--n;break}if(n===t.length)break}r.id=Number(t.substring(e,n+1))}if(t.charAt(++n)){let i=this.tryParse(t.substr(n));if(e.isPayloadValid(r.type,i))r.data=i;else throw Error(`invalid payload`)}return r}tryParse(e){try{return JSON.parse(e,this.opts.reviver)}catch{return!1}}static isPayloadValid(e,t){switch(e){case W.CONNECT:return K(t);case W.DISCONNECT:return t===void 0;case W.CONNECT_ERROR:return typeof t==`string`||K(t);case W.EVENT:case W.BINARY_EVENT:return Array.isArray(t)&&(typeof t[0]==`number`||typeof t[0]==`string`&&U.indexOf(t[0])===-1);case W.ACK:case W.BINARY_ACK:return Array.isArray(t)}}destroy(){this.reconstructor&&=(this.reconstructor.finishedReconstruction(),null)}},He=class{constructor(e){this.packet=e,this.buffers=[],this.reconPack=e}takeBinaryData(e){if(this.buffers.push(e),this.buffers.length===this.reconPack.attachments){let e=Re(this.reconPack,this.buffers);return this.finishedReconstruction(),e}return null}finishedReconstruction(){this.reconPack=null,this.buffers=[]}};function Ue(e){return typeof e==`string`}var G=Number.isInteger||function(e){return typeof e==`number`&&isFinite(e)&&Math.floor(e)===e};function We(e){return e===void 0||G(e)}function K(e){return Object.prototype.toString.call(e)===`[object Object]`}function Ge(e,t){switch(e){case W.CONNECT:return t===void 0||K(t);case W.DISCONNECT:return t===void 0;case W.EVENT:return Array.isArray(t)&&(typeof t[0]==`number`||typeof t[0]==`string`&&U.indexOf(t[0])===-1);case W.ACK:return Array.isArray(t);case W.CONNECT_ERROR:return typeof t==`string`||K(t);default:return!1}}function Ke(e){return Ue(e.nsp)&&We(e.id)&&Ge(e.type,e.data)}function q(e,t,n){return e.on(t,n),function(){e.off(t,n)}}var qe=Object.freeze({connect:1,connect_error:1,disconnect:1,disconnecting:1,newListener:1,removeListener:1}),J=class extends b{constructor(e,t,n){super(),this.connected=!1,this.recovered=!1,this.receiveBuffer=[],this.sendBuffer=[],this._queue=[],this._queueSeq=0,this.ids=0,this.acks={},this.flags={},this.io=e,this.nsp=t,n&&n.auth&&(this.auth=n.auth),this._opts=Object.assign({},n),this.io._autoConnect&&this.open()}get disconnected(){return!this.connected}subEvents(){if(this.subs)return;let e=this.io;this.subs=[q(e,`open`,this.onopen.bind(this)),q(e,`packet`,this.onpacket.bind(this)),q(e,`error`,this.onerror.bind(this)),q(e,`close`,this.onclose.bind(this))]}get active(){return!!this.subs}connect(){return this.connected?this:(this.subEvents(),this.io._reconnecting||this.io.open(),this.io._readyState===`open`&&this.onopen(),this)}open(){return this.connect()}send(...e){return e.unshift(`message`),this.emit.apply(this,e),this}emit(e,...t){if(qe.hasOwnProperty(e))throw Error(`"`+e.toString()+`" is a reserved event name`);if(t.unshift(e),this._opts.retries&&!this.flags.fromQueue&&!this.flags.volatile)return this._addToQueue(t),this;let n={type:W.EVENT,data:t};if(n.options={},n.options.compress=this.flags.compress!==!1,typeof t[t.length-1]==`function`){let e=this.ids++,r=t.pop();this._registerAckCallback(e,r),n.id=e}let r=this.io.engine?.transport?.writable,i=this.connected&&!this.io.engine?._hasPingExpired();return this.flags.volatile&&!r||(i?(this.notifyOutgoingListeners(n),this.packet(n)):this.sendBuffer.push(n)),this.flags={},this}_registerAckCallback(e,t){let n=this.flags.timeout??this._opts.ackTimeout;if(n===void 0){this.acks[e]=t;return}let r=this.io.setTimeoutFn(()=>{delete this.acks[e];for(let t=0;t<this.sendBuffer.length;t++)this.sendBuffer[t].id===e&&this.sendBuffer.splice(t,1);t.call(this,Error(`operation has timed out`))},n),i=(...e)=>{this.io.clearTimeoutFn(r),t.apply(this,e)};i.withError=!0,this.acks[e]=i}emitWithAck(e,...t){return new Promise((n,r)=>{let i=(e,t)=>e?r(e):n(t);i.withError=!0,t.push(i),this.emit(e,...t)})}_addToQueue(e){let t;typeof e[e.length-1]==`function`&&(t=e.pop());let n={id:this._queueSeq++,tryCount:0,pending:!1,args:e,flags:Object.assign({fromQueue:!0},this.flags)};e.push((e,...r)=>(this._queue[0],e===null?(this._queue.shift(),t&&t(null,...r)):n.tryCount>this._opts.retries&&(this._queue.shift(),t&&t(e)),n.pending=!1,this._drainQueue())),this._queue.push(n),this._drainQueue()}_drainQueue(e=!1){if(!this.connected||this._queue.length===0)return;let t=this._queue[0];t.pending&&!e||(t.pending=!0,t.tryCount++,this.flags=t.flags,this.emit.apply(this,t.args))}packet(e){e.nsp=this.nsp,this.io._packet(e)}onopen(){typeof this.auth==`function`?this.auth(e=>{this._sendConnectPacket(e)}):this._sendConnectPacket(this.auth)}_sendConnectPacket(e){this.packet({type:W.CONNECT,data:this._pid?Object.assign({pid:this._pid,offset:this._lastOffset},e):e})}onerror(e){this.connected||this.emitReserved(`connect_error`,e)}onclose(e,t){this.connected=!1,delete this.id,this.emitReserved(`disconnect`,e,t),this._clearAcks()}_clearAcks(){Object.keys(this.acks).forEach(e=>{if(!this.sendBuffer.some(t=>String(t.id)===e)){let t=this.acks[e];delete this.acks[e],t.withError&&t.call(this,Error(`socket has been disconnected`))}})}onpacket(e){if(e.nsp===this.nsp)switch(e.type){case W.CONNECT:e.data&&e.data.sid?this.onconnect(e.data.sid,e.data.pid):this.emitReserved(`connect_error`,Error(`It seems you are trying to reach a Socket.IO server in v2.x with a v3.x client, but they are not compatible (more information here: https://socket.io/docs/v3/migrating-from-2-x-to-3-0/)`));break;case W.EVENT:case W.BINARY_EVENT:this.onevent(e);break;case W.ACK:case W.BINARY_ACK:this.onack(e);break;case W.DISCONNECT:this.ondisconnect();break;case W.CONNECT_ERROR:this.destroy();let t=Error(e.data.message);t.data=e.data.data,this.emitReserved(`connect_error`,t);break}}onevent(e){let t=e.data||[];e.id!=null&&t.push(this.ack(e.id)),this.connected?this.emitEvent(t):this.receiveBuffer.push(Object.freeze(t))}emitEvent(e){if(this._anyListeners&&this._anyListeners.length){let t=this._anyListeners.slice();for(let n of t)n.apply(this,e)}super.emit.apply(this,e),this._pid&&e.length&&typeof e[e.length-1]==`string`&&(this._lastOffset=e[e.length-1])}ack(e){let t=this,n=!1;return function(...r){n||(n=!0,t.packet({type:W.ACK,id:e,data:r}))}}onack(e){let t=this.acks[e.id];typeof t==`function`&&(delete this.acks[e.id],t.withError&&e.data.unshift(null),t.apply(this,e.data))}onconnect(e,t){this.id=e,this.recovered=t&&this._pid===t,this._pid=t,this.connected=!0,this.emitBuffered(),this._drainQueue(!0),this.emitReserved(`connect`)}emitBuffered(){this.receiveBuffer.forEach(e=>this.emitEvent(e)),this.receiveBuffer=[],this.sendBuffer.forEach(e=>{this.notifyOutgoingListeners(e),this.packet(e)}),this.sendBuffer=[]}ondisconnect(){this.destroy(),this.onclose(`io server disconnect`)}destroy(){this.subs&&=(this.subs.forEach(e=>e()),void 0),this.io._destroy(this)}disconnect(){return this.connected&&this.packet({type:W.DISCONNECT}),this.destroy(),this.connected&&this.onclose(`io client disconnect`),this}close(){return this.disconnect()}compress(e){return this.flags.compress=e,this}get volatile(){return this.flags.volatile=!0,this}timeout(e){return this.flags.timeout=e,this}onAny(e){return this._anyListeners=this._anyListeners||[],this._anyListeners.push(e),this}prependAny(e){return this._anyListeners=this._anyListeners||[],this._anyListeners.unshift(e),this}offAny(e){if(!this._anyListeners)return this;if(e){let t=this._anyListeners;for(let n=0;n<t.length;n++)if(e===t[n])return t.splice(n,1),this}else this._anyListeners=[];return this}listenersAny(){return this._anyListeners||[]}onAnyOutgoing(e){return this._anyOutgoingListeners=this._anyOutgoingListeners||[],this._anyOutgoingListeners.push(e),this}prependAnyOutgoing(e){return this._anyOutgoingListeners=this._anyOutgoingListeners||[],this._anyOutgoingListeners.unshift(e),this}offAnyOutgoing(e){if(!this._anyOutgoingListeners)return this;if(e){let t=this._anyOutgoingListeners;for(let n=0;n<t.length;n++)if(e===t[n])return t.splice(n,1),this}else this._anyOutgoingListeners=[];return this}listenersAnyOutgoing(){return this._anyOutgoingListeners||[]}notifyOutgoingListeners(e){if(this._anyOutgoingListeners&&this._anyOutgoingListeners.length){let t=this._anyOutgoingListeners.slice();for(let n of t)n.apply(this,e.data)}}};function Y(e){e||={},this.ms=e.min||100,this.max=e.max||1e4,this.factor=e.factor||2,this.jitter=e.jitter>0&&e.jitter<=1?e.jitter:0,this.attempts=0}Y.prototype.duration=function(){var e=this.ms*this.factor**+ this.attempts++;if(this.jitter){var t=Math.random(),n=Math.floor(t*this.jitter*e);e=Math.floor(t*10)&1?e+n:e-n}return Math.min(e,this.max)|0},Y.prototype.reset=function(){this.attempts=0},Y.prototype.setMin=function(e){this.ms=e},Y.prototype.setMax=function(e){this.max=e},Y.prototype.setJitter=function(e){this.jitter=e};var X=class extends b{constructor(e,t){super(),this.nsps={},this.subs=[],e&&typeof e==`object`&&(t=e,e=void 0),t||={},t.path=t.path||`/socket.io`,this.opts=t,w(this,t),this.reconnection(t.reconnection!==!1),this.reconnectionAttempts(t.reconnectionAttempts||1/0),this.reconnectionDelay(t.reconnectionDelay||1e3),this.reconnectionDelayMax(t.reconnectionDelayMax||5e3),this.randomizationFactor(t.randomizationFactor??.5),this.backoff=new Y({min:this.reconnectionDelay(),max:this.reconnectionDelayMax(),jitter:this.randomizationFactor()}),this.timeout(t.timeout==null?2e4:t.timeout),this._readyState=`closed`,this.uri=e;let n=t.parser||ze;this.encoder=new n.Encoder,this.decoder=new n.Decoder,this._autoConnect=t.autoConnect!==!1,this._autoConnect&&this.open()}reconnection(e){return arguments.length?(this._reconnection=!!e,e||(this.skipReconnect=!0),this):this._reconnection}reconnectionAttempts(e){return e===void 0?this._reconnectionAttempts:(this._reconnectionAttempts=e,this)}reconnectionDelay(e){var t;return e===void 0?this._reconnectionDelay:(this._reconnectionDelay=e,(t=this.backoff)==null||t.setMin(e),this)}randomizationFactor(e){var t;return e===void 0?this._randomizationFactor:(this._randomizationFactor=e,(t=this.backoff)==null||t.setJitter(e),this)}reconnectionDelayMax(e){var t;return e===void 0?this._reconnectionDelayMax:(this._reconnectionDelayMax=e,(t=this.backoff)==null||t.setMax(e),this)}timeout(e){return arguments.length?(this._timeout=e,this):this._timeout}maybeReconnectOnOpen(){!this._reconnecting&&this._reconnection&&this.backoff.attempts===0&&this.reconnect()}open(e){if(~this._readyState.indexOf(`open`))return this;this.engine=new L(this.uri,this.opts);let t=this.engine,n=this;this._readyState=`opening`,this.skipReconnect=!1;let r=q(t,`open`,function(){n.onopen(),e&&e()}),i=t=>{this.cleanup(),this._readyState=`closed`,this.emitReserved(`error`,t),e?e(t):this.maybeReconnectOnOpen()},a=q(t,`error`,i);if(!1!==this._timeout){let e=this._timeout,n=this.setTimeoutFn(()=>{r(),i(Error(`timeout`)),t.close()},e);this.opts.autoUnref&&n.unref(),this.subs.push(()=>{this.clearTimeoutFn(n)})}return this.subs.push(r),this.subs.push(a),this}connect(e){return this.open(e)}onopen(){this.cleanup(),this._readyState=`open`,this.emitReserved(`open`);let e=this.engine;this.subs.push(q(e,`ping`,this.onping.bind(this)),q(e,`data`,this.ondata.bind(this)),q(e,`error`,this.onerror.bind(this)),q(e,`close`,this.onclose.bind(this)),q(this.decoder,`decoded`,this.ondecoded.bind(this)))}onping(){this.emitReserved(`ping`)}ondata(e){try{this.decoder.add(e)}catch(e){this.onclose(`parse error`,e)}}ondecoded(e){x(()=>{this.emitReserved(`packet`,e)},this.setTimeoutFn)}onerror(e){this.emitReserved(`error`,e)}socket(e,t){let n=this.nsps[e];return n?this._autoConnect&&!n.active&&n.connect():(n=new J(this,e,t),this.nsps[e]=n),n}_destroy(e){let t=Object.keys(this.nsps);for(let e of t)if(this.nsps[e].active)return;this._close()}_packet(e){let t=this.encoder.encode(e);for(let n=0;n<t.length;n++)this.engine.write(t[n],e.options)}cleanup(){this.subs.forEach(e=>e()),this.subs.length=0,this.decoder.destroy()}_close(){this.skipReconnect=!0,this._reconnecting=!1,this.onclose(`forced close`)}disconnect(){return this._close()}onclose(e,t){var n;this.cleanup(),(n=this.engine)==null||n.close(),this.backoff.reset(),this._readyState=`closed`,this.emitReserved(`close`,e,t),this._reconnection&&!this.skipReconnect&&this.reconnect()}reconnect(){if(this._reconnecting||this.skipReconnect)return this;let e=this;if(this.backoff.attempts>=this._reconnectionAttempts)this.backoff.reset(),this.emitReserved(`reconnect_failed`),this._reconnecting=!1;else{let t=this.backoff.duration();this._reconnecting=!0;let n=this.setTimeoutFn(()=>{e.skipReconnect||(this.emitReserved(`reconnect_attempt`,e.backoff.attempts),!e.skipReconnect&&e.open(t=>{t?(e._reconnecting=!1,e.reconnect(),this.emitReserved(`reconnect_error`,t)):e.onreconnect()}))},t);this.opts.autoUnref&&n.unref(),this.subs.push(()=>{this.clearTimeoutFn(n)})}}onreconnect(){let e=this.backoff.attempts;this._reconnecting=!1,this.backoff.reset(),this.emitReserved(`reconnect`,e)}},Z={};function Q(e,t){typeof e==`object`&&(t=e,e=void 0),t||={};let n=Me(e,t.path||`/socket.io`),r=n.source,i=n.id,a=n.path,o=Z[i]&&a in Z[i].nsps,s=t.forceNew||t[`force new connection`]||!1===t.multiplex||o,c;return s?c=new X(r,t):(Z[i]||(Z[i]=new X(r,t)),c=Z[i]),n.query&&!t.query&&(t.query=n.queryKey),c.socket(n.path,t)}Object.assign(Q,{Manager:X,Socket:J,io:Q,connect:Q});var Je=`
2
2
  #jibtalk-sdk-root {
3
3
  position: fixed;
4
4
  z-index: 9999;
5
5
  font-family: 'Outfit', 'Vazirmatn', -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
6
- direction: ltr;
6
+ direction: rtl;
7
7
 
8
8
  /* Brand colors */
9
- --primary: #00AC78;
10
- --secondary: #FF6FA8;
9
+ --primary: #26A17B;
10
+ --secondary: #FAAF40;
11
11
 
12
- /* Default Dark Mode variables */
12
+ /* Default mode (Default Dark Mode) variables */
13
13
  --theme-white: 255, 255, 255;
14
14
  --theme-bg: 16, 18, 17;
15
15
  --theme-placeholder: 107, 124, 118;
@@ -33,13 +33,21 @@
33
33
  --rounded-2xl: 16px;
34
34
  }
35
35
 
36
- /* Position options */
37
- #jibtalk-sdk-root.position-bottom-right { bottom: 20px; right: 20px; }
38
- #jibtalk-sdk-root.position-bottom-left { bottom: 20px; left: 20px; }
39
- #jibtalk-sdk-root.position-top-right { top: 20px; right: 20px; }
40
- #jibtalk-sdk-root.position-top-left { top: 20px; left: 20px; }
36
+ /* System preferences override (if no theme is forced by host app) */
37
+ @media (prefers-color-scheme: light) {
38
+ #jibtalk-sdk-root:not([data-theme='dark']) {
39
+ --theme-white: 27, 36, 32; /* Dark slate text */
40
+ --theme-bg: 242, 247, 245; /* Soft Teal-Gray */
41
+ --theme-placeholder: 122, 141, 133;
42
+ --theme-hint: 83, 100, 92;
43
+ --theme-surface-elevated: 251, 253, 252;
44
+ --theme-surface-soft: 231, 239, 235;
45
+ --theme-border-soft: 180, 197, 190;
46
+ --theme-backdrop: 16, 18, 17;
47
+ }
48
+ }
41
49
 
42
- /* Light theme overrides */
50
+ /* Strict Light theme override */
43
51
  #jibtalk-sdk-root[data-theme='light'] {
44
52
  --theme-white: 27, 36, 32; /* Dark slate text */
45
53
  --theme-bg: 242, 247, 245; /* Soft Teal-Gray */
@@ -51,6 +59,24 @@
51
59
  --theme-backdrop: 16, 18, 17;
52
60
  }
53
61
 
62
+ /* Strict Dark theme override */
63
+ #jibtalk-sdk-root[data-theme='dark'] {
64
+ --theme-white: 255, 255, 255;
65
+ --theme-bg: 16, 18, 17;
66
+ --theme-placeholder: 107, 124, 118;
67
+ --theme-hint: 158, 180, 173;
68
+ --theme-surface-elevated: 25, 29, 27;
69
+ --theme-surface-soft: 34, 39, 37;
70
+ --theme-border-soft: 107, 124, 118;
71
+ --theme-backdrop: 0, 0, 0;
72
+ }
73
+
74
+ /* Position options */
75
+ #jibtalk-sdk-root.position-bottom-right { bottom: 20px; right: 20px; }
76
+ #jibtalk-sdk-root.position-bottom-left { bottom: 20px; left: 20px; }
77
+ #jibtalk-sdk-root.position-top-right { top: 20px; right: 20px; }
78
+ #jibtalk-sdk-root.position-top-left { top: 20px; left: 20px; }
79
+
54
80
  .jibtalk-sdk-btn {
55
81
  background: linear-gradient(135deg, var(--primary), var(--secondary));
56
82
  color: white;
@@ -76,7 +102,7 @@
76
102
  .jibtalk-sdk-unread-badge {
77
103
  position: absolute;
78
104
  top: -2px;
79
- right: -2px;
105
+ left: -2px;
80
106
  background-color: var(--secondary);
81
107
  color: white;
82
108
  border-radius: 50%;
@@ -98,8 +124,8 @@
98
124
  }
99
125
 
100
126
  .jibtalk-sdk-window {
101
- width: 350px;
102
- height: 500px;
127
+ width: 400px;
128
+ height: 600px;
103
129
  background: rgba(var(--theme-surface-elevated), 0.85);
104
130
  backdrop-filter: blur(16px);
105
131
  -webkit-backdrop-filter: blur(16px);
@@ -194,7 +220,7 @@
194
220
  align-self: flex-end;
195
221
  background: linear-gradient(135deg, var(--primary), var(--secondary));
196
222
  color: white;
197
- border-bottom-right-radius: 4px;
223
+ border-bottom-left-radius: 4px; /* Modified for RTL flow alignment */
198
224
  }
199
225
 
200
226
  .jibtalk-sdk-message-other {
@@ -203,7 +229,7 @@
203
229
  color: var(--color-white);
204
230
  border: 1px solid rgba(var(--theme-border-soft), 0.3);
205
231
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05);
206
- border-bottom-left-radius: 4px;
232
+ border-bottom-right-radius: 4px; /* Modified for RTL flow alignment */
207
233
  }
208
234
 
209
235
  .jibtalk-sdk-input-area {
@@ -249,4 +275,303 @@
249
275
  opacity: 0.9;
250
276
  transform: scale(1.02);
251
277
  }
252
- `,Ye=()=>{if(typeof document>`u`)return;let e=`jibtalk-sdk-styles`;if(!document.getElementById(e)){let t=document.createElement(`style`);t.id=e,t.textContent=Je,document.head.appendChild(t)}},Xe=class{socket=null;apiKey;backendUrl;visitorId;listeners=new Map;isOpen=!1;isConnected=!1;unreadCount=0;currentConversation=null;messages=[];theme=`dark`;position=`bottom-right`;primaryColor=`#00AC78`;locale=`en`;constructor(e){this.apiKey=e.apiKey,this.backendUrl=typeof globalThis<`u`&&globalThis.process?.env?.NEXT_PUBLIC_JIBTALK_BACKEND_URL||typeof window<`u`&&window.JIBTALK_BACKEND_URL||`http://localhost:5000`,this.theme=e.theme||`dark`,this.position=e.position||`bottom-right`,this.primaryColor=e.primaryColor||`#00AC78`,this.locale=e.locale||`en`,this.optionsCustomer=e.customer,this.optionsConvId=e.conversationId,this.optionsTimestamp=e.timestamp,this.optionsSignature=e.signature;let t=typeof window<`u`?localStorage.getItem(`jibtalk_conversation_id`):null;this.currentConversation=t?{id:t}:null,this.visitorId=e.customer?.id||this.getVisitorId(),this.connect()}getVisitorId(){if(typeof window>`u`)return``;let e=localStorage.getItem(`jibtalk_visitor_id`);return e||=localStorage.getItem(`vyou_visitor_id`),e||(e=`v_`+Math.random().toString(36).substring(2,11),localStorage.setItem(`jibtalk_visitor_id`,e)),e}connect(){typeof window>`u`||(this.socket&&this.socket.disconnect(),this.socket=Q(this.backendUrl),this.socket.on(`connect`,()=>{this.isConnected=!0,this.emit(`connected`),this.emitStateChange();let e=this.optionsCustomer,t=this.optionsConvId;this.initWidget(e,t)}),this.socket.on(`disconnect`,()=>{this.isConnected=!1,this.emit(`disconnected`),this.emitStateChange()}),this.socket.on(`session_ready`,e=>{this.currentConversation=e,this.messages=e.messages||[],typeof window<`u`&&(e.id&&localStorage.setItem(`jibtalk_conversation_id`,e.id),e.sessionToken&&localStorage.setItem(`jibtalk_session_token`,e.sessionToken)),this.emit(`conversationOpened`,e),this.emitStateChange()}),this.socket.on(`receive_message`,e=>{this.messages.push(e),e.sender===`visitor`?this.emit(`messageSent`,e):(this.isOpen||this.unreadCount++,this.emit(`messageReceived`,e)),this.emitStateChange()}),this.socket.on(`typing_started`,e=>{this.emit(`typingStarted`,e)}),this.socket.on(`typing_stopped`,e=>{this.emit(`typingStopped`,e)}),this.socket.on(`error`,e=>{console.error(`JibTalk Socket error:`,e.message||e)}))}initWidget(e,t){if(!this.socket)return;let n={apiKey:this.apiKey},r=t||this.currentConversation?.id;if(r&&(n.conversationId=r,typeof window<`u`&&!e)){let e=localStorage.getItem(`jibtalk_session_token`);e&&(n.sessionToken=e)}e?(n.customer={id:e.id,name:e.name,email:e.email,avatar:e.avatar,metadata:e.metadata},this.optionsTimestamp&&(n.timestamp=this.optionsTimestamp),this.optionsSignature&&(n.signature=this.optionsSignature)):n.visitorId=this.visitorId,this.socket.emit(`init_widget`,n)}open(e){this.isOpen||(this.isOpen=!0,this.unreadCount=0,e&&(e.customer&&(this.visitorId=e.customer.id||this.visitorId,this.optionsCustomer=e.customer),e.conversationId&&(this.optionsConvId=e.conversationId),e.timestamp&&(this.optionsTimestamp=e.timestamp),e.signature&&(this.optionsSignature=e.signature),this.initWidget(e.customer,e.conversationId)),this.emitStateChange())}close(){this.isOpen&&(this.isOpen=!1,this.emitStateChange(),this.emit(`conversationClosed`,this.currentConversation))}toggle(){this.isOpen?this.close():this.open()}destroy(){this.close(),this.socket&&=(this.socket.disconnect(),null),this.listeners.clear(),this.isConnected=!1,this.emitStateChange(),$===this&&($=null)}identify(e,t,n){typeof window>`u`||(this.visitorId=e.id||this.visitorId,this.optionsCustomer=e,t&&(this.optionsTimestamp=t),n&&(this.optionsSignature=n),this.initWidget(e))}setUser(e,t,n){this.identify(e,t,n)}logout(){typeof window>`u`||(this.close(),localStorage.removeItem(`jibtalk_visitor_id`),localStorage.removeItem(`vyou_visitor_id`),localStorage.removeItem(`jibtalk_conversation_id`),localStorage.removeItem(`jibtalk_session_token`),this.optionsCustomer=void 0,this.optionsConvId=void 0,this.optionsTimestamp=void 0,this.optionsSignature=void 0,this.visitorId=this.getVisitorId(),this.currentConversation=null,this.messages=[],this.unreadCount=0,this.connect())}sendMessage(e){!e.trim()||!this.currentConversation||!this.socket||this.socket.emit(`send_message`,{sessionId:this.currentConversation.id,content:e,sender:`visitor`,visitorId:this.visitorId})}startTyping(){!this.socket||!this.currentConversation||this.socket.emit(`typing_started`,{sessionId:this.currentConversation.id,sender:`visitor`,visitorId:this.visitorId})}stopTyping(){!this.socket||!this.currentConversation||this.socket.emit(`typing_stopped`,{sessionId:this.currentConversation.id,sender:`visitor`,visitorId:this.visitorId})}on(e,t){this.listeners.has(e)||this.listeners.set(e,new Set),this.listeners.get(e).add(t)}off(e,t){this.listeners.has(e)&&this.listeners.get(e).delete(t)}emit(e,...t){this.listeners.has(e)&&this.listeners.get(e).forEach(n=>{try{n(...t)}catch(t){console.error(`Error in event listener for ${e}:`,t)}})}emitStateChange(){this.emit(`stateChange`,{isOpen:this.isOpen,isConnected:this.isConnected,unreadCount:this.unreadCount,currentConversation:this.currentConversation,messages:this.messages,theme:this.theme,position:this.position,primaryColor:this.primaryColor,locale:this.locale})}updateOptions(e){e.theme&&(this.theme=e.theme),e.position&&(this.position=e.position),e.primaryColor&&(this.primaryColor=e.primaryColor),e.locale&&(this.locale=e.locale),e.customer&&(this.visitorId=e.customer.id||this.visitorId,this.optionsCustomer=e.customer),e.conversationId&&(this.optionsConvId=e.conversationId),e.timestamp&&(this.optionsTimestamp=e.timestamp),e.signature&&(this.optionsSignature=e.signature),this.emitStateChange()}},$=null;e.JibTalkCore=Xe,e.STYLES_CSS=Je,e.getJibTalkInstance=e=>typeof window>`u`?null:(!$&&e?$=new Xe(e):$&&e&&$.updateOptions(e),$),e.injectStyles=Ye});
278
+
279
+ /* JibTalk Phase 2 Styles */
280
+ .jibtalk-sdk-welcome-card {
281
+ padding: 24px;
282
+ display: flex;
283
+ flex-direction: column;
284
+ align-items: center;
285
+ justify-content: center;
286
+ text-align: center;
287
+ height: 100%;
288
+ box-sizing: border-box;
289
+ background: rgba(var(--theme-bg), 0.8);
290
+ }
291
+ .jibtalk-sdk-avatars {
292
+ display: flex;
293
+ justify-content: center;
294
+ margin-bottom: 16px;
295
+ position: relative;
296
+ height: 48px;
297
+ width: 100px;
298
+ }
299
+ .jibtalk-sdk-avatar {
300
+ width: 44px;
301
+ height: 44px;
302
+ border-radius: 50%;
303
+ border: 2px solid var(--color-surface);
304
+ background-color: var(--color-surface-soft);
305
+ position: absolute;
306
+ box-shadow: 0 4px 10px rgba(0, 0, 0, 0.15);
307
+ display: flex;
308
+ align-items: center;
309
+ justify-content: center;
310
+ font-size: 18px;
311
+ }
312
+ .jibtalk-sdk-avatar:nth-child(1) { right: 0; z-index: 3; }
313
+ .jibtalk-sdk-avatar:nth-child(2) { right: 24px; z-index: 2; }
314
+ .jibtalk-sdk-avatar:nth-child(3) { right: 48px; z-index: 1; }
315
+ .jibtalk-sdk-status-row {
316
+ display: flex;
317
+ align-items: center;
318
+ gap: 8px;
319
+ margin-bottom: 12px;
320
+ font-size: 13px;
321
+ color: var(--color-hint);
322
+ }
323
+ .jibtalk-sdk-status-dot {
324
+ width: 8px;
325
+ height: 8px;
326
+ border-radius: 50%;
327
+ background-color: #26A17B;
328
+ box-shadow: 0 0 8px #26A17B;
329
+ animation: statusPulse 2s infinite;
330
+ }
331
+ @keyframes statusPulse {
332
+ 0% { transform: scale(1); opacity: 1; }
333
+ 50% { transform: scale(1.2); opacity: 0.6; }
334
+ 100% { transform: scale(1); opacity: 1; }
335
+ }
336
+ .jibtalk-sdk-welcome-title {
337
+ font-size: 18px;
338
+ font-weight: 700;
339
+ margin: 0 0 8px 0;
340
+ color: var(--color-white);
341
+ }
342
+ .jibtalk-sdk-welcome-text {
343
+ font-size: 14px;
344
+ line-height: 1.5;
345
+ color: var(--color-hint);
346
+ margin: 0 0 24px 0;
347
+ }
348
+ .jibtalk-sdk-start-btn {
349
+ background: linear-gradient(135deg, var(--primary), var(--secondary));
350
+ color: white;
351
+ border: none;
352
+ border-radius: var(--rounded-2xl);
353
+ padding: 12px 32px;
354
+ font-weight: 600;
355
+ font-size: 14px;
356
+ cursor: pointer;
357
+ box-shadow: 0 4px 15px rgba(0, 0, 0, 0.2);
358
+ transition: transform 0.3s, opacity 0.3s;
359
+ }
360
+ .jibtalk-sdk-start-btn:hover {
361
+ transform: scale(1.03);
362
+ opacity: 0.95;
363
+ }
364
+ .jibtalk-sdk-footer {
365
+ display: flex;
366
+ align-items: center;
367
+ justify-content: center;
368
+ gap: 6px;
369
+ padding: 2px;
370
+ font-size: 10px;
371
+ color: var(--color-hint);
372
+ opacity: 0.6;
373
+ border-top: 1px solid rgba(var(--theme-border-soft), 0.2);
374
+ background: rgba(var(--theme-surface-elevated), 0.5);
375
+ text-decoration: none;
376
+ }
377
+ .jibtalk-sdk-footer:hover {
378
+ opacity: 0.8;
379
+ }
380
+ .jibtalk-sdk-footer svg {
381
+ color: var(--primary);
382
+ }
383
+ .jibtalk-sdk-message-container {
384
+ position: relative;
385
+ display: flex;
386
+ align-items: center;
387
+ max-width: 100%;
388
+ gap: 8px;
389
+ }
390
+ .jibtalk-sdk-message-container.self {
391
+ margin-left: auto;
392
+ margin-right: 0;
393
+ }
394
+ .jibtalk-sdk-message-container.other {
395
+ margin-right: auto;
396
+ margin-left: 0;
397
+ flex-direction: row-reverse;
398
+ }
399
+ .jibtalk-sdk-reply-action-btn {
400
+ background: transparent;
401
+ border: none;
402
+ cursor: pointer;
403
+ color: var(--color-hint);
404
+ opacity: 0;
405
+ transition: opacity 0.2s;
406
+ display: flex;
407
+ align-items: center;
408
+ justify-content: center;
409
+ padding: 4px;
410
+ border-radius: 50%;
411
+ }
412
+ .jibtalk-sdk-reply-action-btn:hover {
413
+ background-color: var(--color-surface-soft);
414
+ color: var(--primary);
415
+ }
416
+ .jibtalk-sdk-message-container:hover .jibtalk-sdk-reply-action-btn {
417
+ opacity: 1;
418
+ }
419
+ .jibtalk-sdk-reply-thread-preview {
420
+ font-size: 12px;
421
+ background: rgba(0, 0, 0, 0.15);
422
+ border-inline-start: 3px solid var(--primary);
423
+ padding: 6px 8px;
424
+ border-radius: 4px;
425
+ margin-bottom: 6px;
426
+ color: rgba(var(--theme-white), 0.8);
427
+ max-width: 100%;
428
+ white-space: nowrap;
429
+ overflow: hidden;
430
+ text-overflow: ellipsis;
431
+ }
432
+ .jibtalk-sdk-reply-wrapper {
433
+ padding: 8px 12px;
434
+ background: rgba(var(--theme-surface-soft), 0.95);
435
+ border-top: 1.5px solid var(--primary);
436
+ display: flex;
437
+ justify-content: space-between;
438
+ align-items: center;
439
+ font-size: 13px;
440
+ animation: jibtalkSlideUp 0.2s;
441
+ }
442
+ .jibtalk-sdk-reply-content {
443
+ display: flex;
444
+ flex-direction: column;
445
+ gap: 2px;
446
+ overflow: hidden;
447
+ text-overflow: ellipsis;
448
+ white-space: nowrap;
449
+ flex: 1;
450
+ margin-inline-end: 12px;
451
+ }
452
+ .jibtalk-sdk-reply-title {
453
+ font-weight: 600;
454
+ font-size: 11px;
455
+ color: var(--primary);
456
+ }
457
+ .jibtalk-sdk-reply-text {
458
+ color: var(--color-hint);
459
+ font-size: 12px;
460
+ overflow: hidden;
461
+ text-overflow: ellipsis;
462
+ white-space: nowrap;
463
+ }
464
+ .jibtalk-sdk-reply-close {
465
+ background: none;
466
+ border: none;
467
+ cursor: pointer;
468
+ color: var(--color-hint);
469
+ font-size: 16px;
470
+ padding: 0 4px;
471
+ display: flex;
472
+ align-items: center;
473
+ }
474
+ .jibtalk-sdk-reply-close:hover {
475
+ color: var(--color-white);
476
+ }
477
+ .jibtalk-sdk-emoji-trigger {
478
+ background: none;
479
+ border: none;
480
+ color: var(--color-hint);
481
+ cursor: pointer;
482
+ padding: 4px 8px;
483
+ display: flex;
484
+ align-items: center;
485
+ transition: color 0.2s;
486
+ }
487
+ .jibtalk-sdk-emoji-trigger:hover {
488
+ color: var(--primary);
489
+ }
490
+ .jibtalk-sdk-emoji-popover {
491
+ position: absolute;
492
+ bottom: 60px;
493
+ right: 12px;
494
+ width: 250px;
495
+ height: 180px;
496
+ background: var(--color-surface);
497
+ border: 1px solid rgba(var(--theme-border-soft), 0.4);
498
+ border-radius: var(--rounded-lg);
499
+ box-shadow: 0 8px 30px rgba(0,0,0,0.3);
500
+ z-index: 1000;
501
+ display: grid;
502
+ grid-template-columns: repeat(6, 1fr);
503
+ gap: 6px;
504
+ padding: 10px;
505
+ overflow-y: auto;
506
+ animation: jibtalkSlideUp 0.15s cubic-bezier(0.16, 1, 0.3, 1);
507
+ }
508
+ .jibtalk-sdk-emoji-btn {
509
+ background: none;
510
+ border: none;
511
+ font-size: 18px;
512
+ cursor: pointer;
513
+ display: flex;
514
+ align-items: center;
515
+ justify-content: center;
516
+ padding: 4px;
517
+ border-radius: 4px;
518
+ transition: background-color 0.2s;
519
+ }
520
+ .jibtalk-sdk-emoji-btn:hover {
521
+ background-color: var(--color-surface-soft);
522
+ }
523
+ .jibtalk-sdk-file-trigger {
524
+ background: none;
525
+ border: none;
526
+ color: var(--color-hint);
527
+ cursor: pointer;
528
+ padding: 4px 8px;
529
+ display: flex;
530
+ align-items: center;
531
+ transition: color 0.2s;
532
+ }
533
+ .jibtalk-sdk-file-trigger:hover {
534
+ color: var(--primary);
535
+ }
536
+ .jibtalk-sdk-attachment-img {
537
+ max-width: 100%;
538
+ max-height: 180px;
539
+ border-radius: var(--rounded-md);
540
+ margin-top: 4px;
541
+ display: block;
542
+ cursor: pointer;
543
+ }
544
+ .jibtalk-sdk-attachment-video {
545
+ max-width: 100%;
546
+ max-height: 180px;
547
+ border-radius: var(--rounded-md);
548
+ margin-top: 4px;
549
+ display: block;
550
+ outline: none;
551
+ }
552
+ .jibtalk-sdk-attachment-doc {
553
+ display: flex;
554
+ align-items: center;
555
+ gap: 8px;
556
+ background: rgba(0, 0, 0, 0.1);
557
+ padding: 8px 12px;
558
+ border-radius: var(--rounded-md);
559
+ margin-top: 4px;
560
+ text-decoration: none;
561
+ color: inherit;
562
+ font-size: 13px;
563
+ border: 1px solid rgba(var(--theme-border-soft), 0.2);
564
+ }
565
+ .jibtalk-sdk-attachment-doc:hover {
566
+ background: rgba(0, 0, 0, 0.2);
567
+ }
568
+ .jibtalk-sdk-attachment-doc svg {
569
+ color: #e53e3e;
570
+ flex-shrink: 0;
571
+ }
572
+ .jibtalk-sdk-attachment-doc-info {
573
+ overflow: hidden;
574
+ text-overflow: ellipsis;
575
+ white-space: nowrap;
576
+ }
577
+ `,Ye=()=>{if(typeof document>`u`)return;let e=`jibtalk-sdk-styles`;if(!document.getElementById(e)){let t=document.createElement(`style`);t.id=e,t.textContent=Je,document.head.appendChild(t)}},Xe=class{socket=null;apiKey;backendUrl;visitorId;listeners=new Map;isOpen=!1;isConnected=!1;unreadCount=0;currentConversation=null;messages=[];workspaceName=``;workspaceSlug=``;theme=`dark`;position=`bottom-right`;primaryColor=`#26A17B`;locale=`en`;constructor(e){this.apiKey=e.apiKey,this.backendUrl=typeof globalThis<`u`&&globalThis.process?.env?.NEXT_PUBLIC_JIBTALK_BACKEND_URL||typeof window<`u`&&window.JIBTALK_BACKEND_URL||`http://localhost:7000`,this.theme=e.theme||`dark`,this.position=e.position||`bottom-right`,this.primaryColor=e.primaryColor||`#26A17B`,this.locale=e.locale||`en`,this.optionsCustomer=e.customer,this.optionsConvId=e.conversationId,this.optionsTimestamp=e.timestamp,this.optionsSignature=e.signature;let t=typeof window<`u`?localStorage.getItem(`jibtalk_conversation_id`):null;this.currentConversation=t?{id:t}:null,this.visitorId=e.customer?.id||this.getVisitorId(),this.connect()}getVisitorId(){if(typeof window>`u`)return``;let e=localStorage.getItem(`jibtalk_visitor_id`);return e||=localStorage.getItem(`vyou_visitor_id`),e||(e=`v_`+Math.random().toString(36).substring(2,11),localStorage.setItem(`jibtalk_visitor_id`,e)),e}connect(){typeof window>`u`||(this.socket&&this.socket.disconnect(),this.socket=Q(this.backendUrl),this.socket.on(`connect`,()=>{this.isConnected=!0,this.emit(`connected`),this.emitStateChange();let e=this.optionsCustomer,t=this.optionsConvId;this.initWidget(e,t)}),this.socket.on(`disconnect`,()=>{this.isConnected=!1,this.emit(`disconnected`),this.emitStateChange()}),this.socket.on(`session_ready`,e=>{this.currentConversation=e,this.messages=e.messages||[],this.workspaceName=e.workspaceName||``,this.workspaceSlug=e.workspaceSlug||``,typeof window<`u`&&(e.id&&localStorage.setItem(`jibtalk_conversation_id`,e.id),e.sessionToken&&localStorage.setItem(`jibtalk_session_token`,e.sessionToken)),this.emit(`conversationOpened`,e),this.emitStateChange()}),this.socket.on(`widget_ready`,e=>{this.workspaceName=e.workspaceName||``,this.workspaceSlug=e.workspaceSlug||``,this.currentConversation=null,this.messages=[],e.sessionExpired&&typeof window<`u`&&(localStorage.removeItem(`jibtalk_conversation_id`),localStorage.removeItem(`jibtalk_session_token`)),this.emitStateChange()}),this.socket.on(`receive_message`,e=>{this.messages.push(e),e.sender===`visitor`?this.emit(`messageSent`,e):(this.isOpen||this.unreadCount++,this.emit(`messageReceived`,e)),this.emitStateChange()}),this.socket.on(`typing_started`,e=>{this.emit(`typingStarted`,e)}),this.socket.on(`typing_stopped`,e=>{this.emit(`typingStopped`,e)}),this.socket.on(`error`,e=>{console.error(`JibTalk Socket error:`,e.message||e)}))}initWidget(e,t){if(!this.socket)return;let n={apiKey:this.apiKey},r=t||this.currentConversation?.id;if(r&&(n.conversationId=r,typeof window<`u`&&!e)){let e=localStorage.getItem(`jibtalk_session_token`);e&&(n.sessionToken=e)}e?(n.customer={id:e.id,name:e.name,email:e.email,avatar:e.avatar,metadata:e.metadata},this.optionsTimestamp&&(n.timestamp=this.optionsTimestamp),this.optionsSignature&&(n.signature=this.optionsSignature)):n.visitorId=this.visitorId,this.socket.emit(`init_widget`,n)}open(e){this.isOpen||(this.isOpen=!0,this.unreadCount=0,e&&(e.customer&&(this.visitorId=e.customer.id||this.visitorId,this.optionsCustomer=e.customer),e.conversationId&&(this.optionsConvId=e.conversationId),e.timestamp&&(this.optionsTimestamp=e.timestamp),e.signature&&(this.optionsSignature=e.signature),this.initWidget(e.customer,e.conversationId)),this.emitStateChange())}close(){this.isOpen&&(this.isOpen=!1,this.emitStateChange(),this.emit(`conversationClosed`,this.currentConversation))}toggle(){this.isOpen?this.close():this.open()}destroy(){this.close(),this.socket&&=(this.socket.disconnect(),null),this.listeners.clear(),this.isConnected=!1,this.emitStateChange(),$===this&&($=null)}identify(e,t,n){typeof window>`u`||(this.visitorId=e.id||this.visitorId,this.optionsCustomer=e,t&&(this.optionsTimestamp=t),n&&(this.optionsSignature=n),this.initWidget(e))}setUser(e,t,n){this.identify(e,t,n)}logout(){typeof window>`u`||(this.close(),localStorage.removeItem(`jibtalk_visitor_id`),localStorage.removeItem(`vyou_visitor_id`),localStorage.removeItem(`jibtalk_conversation_id`),localStorage.removeItem(`jibtalk_session_token`),this.optionsCustomer=void 0,this.optionsConvId=void 0,this.optionsTimestamp=void 0,this.optionsSignature=void 0,this.visitorId=this.getVisitorId(),this.currentConversation=null,this.messages=[],this.unreadCount=0,this.connect())}sendMessage(e,t,n){!e.trim()&&!n||!this.currentConversation||!this.socket||this.socket.emit(`send_message`,{sessionId:this.currentConversation.id,content:e,sender:`visitor`,visitorId:this.visitorId,parentMessageId:t,file:n})}startConversation(){this.socket&&this.socket.emit(`start_conversation`)}startTyping(){!this.socket||!this.currentConversation||this.socket.emit(`typing_started`,{sessionId:this.currentConversation.id,sender:`visitor`,visitorId:this.visitorId})}stopTyping(){!this.socket||!this.currentConversation||this.socket.emit(`typing_stopped`,{sessionId:this.currentConversation.id,sender:`visitor`,visitorId:this.visitorId})}on(e,t){this.listeners.has(e)||this.listeners.set(e,new Set),this.listeners.get(e).add(t)}off(e,t){this.listeners.has(e)&&this.listeners.get(e).delete(t)}emit(e,...t){this.listeners.has(e)&&this.listeners.get(e).forEach(n=>{try{n(...t)}catch(t){console.error(`Error in event listener for ${e}:`,t)}})}emitStateChange(){this.emit(`stateChange`,{isOpen:this.isOpen,isConnected:this.isConnected,unreadCount:this.unreadCount,currentConversation:this.currentConversation,messages:this.messages,theme:this.theme,position:this.position,primaryColor:this.primaryColor,locale:this.locale,workspaceName:this.workspaceName,workspaceSlug:this.workspaceSlug})}updateOptions(e){e.theme&&(this.theme=e.theme),e.position&&(this.position=e.position),e.primaryColor&&(this.primaryColor=e.primaryColor),e.locale&&(this.locale=e.locale),e.customer&&(this.visitorId=e.customer.id||this.visitorId,this.optionsCustomer=e.customer),e.conversationId&&(this.optionsConvId=e.conversationId),e.timestamp&&(this.optionsTimestamp=e.timestamp),e.signature&&(this.optionsSignature=e.signature),this.emitStateChange()}},$=null;e.JibTalkCore=Xe,e.STYLES_CSS=Je,e.getJibTalkInstance=e=>typeof window>`u`?null:(!$&&e?$=new Xe(e):$&&e&&$.updateOptions(e),$),e.injectStyles=Ye});
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "jibtalk-core",
3
- "version": "0.1.0",
3
+ "version": "1.0.1",
4
4
  "sideEffects": false,
5
5
  "files": [
6
6
  "dist"