@crestapps/ai-chat-ui 2.0.0-preview.215 → 2.0.0-preview.224

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/dist/ai-chat-widget.js +762 -964
  2. package/dist/ai-chat-widget.js.map +1 -1
  3. package/dist/ai-chat-widget.min.js +1 -1
  4. package/dist/ai-chat-widget.min.js.map +1 -1
  5. package/dist/ai-chat.css +0 -2
  6. package/dist/ai-chat.js +2379 -3698
  7. package/dist/ai-chat.js.map +1 -1
  8. package/dist/ai-chat.min.css +1 -1
  9. package/dist/ai-chat.min.js +78 -1
  10. package/dist/ai-chat.min.js.map +1 -1
  11. package/dist/chat-image-carousel.css +0 -2
  12. package/dist/chat-image-carousel.js +306 -482
  13. package/dist/chat-image-carousel.js.map +1 -1
  14. package/dist/chat-image-carousel.min.css +1 -1
  15. package/dist/chat-image-carousel.min.js +1 -1
  16. package/dist/chat-image-carousel.min.js.map +1 -1
  17. package/dist/chat-interaction-settings.js +221 -293
  18. package/dist/chat-interaction-settings.js.map +1 -1
  19. package/dist/chat-interaction-settings.min.js +1 -1
  20. package/dist/chat-interaction-settings.min.js.map +1 -1
  21. package/dist/chat-interaction.js +2337 -3557
  22. package/dist/chat-interaction.js.map +1 -1
  23. package/dist/chat-interaction.min.js +62 -1
  24. package/dist/chat-interaction.min.js.map +1 -1
  25. package/dist/chat-markers.js +193 -485
  26. package/dist/chat-markers.js.map +1 -1
  27. package/dist/chat-markers.min.js +2 -1
  28. package/dist/chat-markers.min.js.map +1 -1
  29. package/dist/chat-widget.css +0 -2
  30. package/dist/chat-widget.min.css +1 -1
  31. package/dist/document-drop-zone.css +0 -2
  32. package/dist/document-drop-zone.js +127 -153
  33. package/dist/document-drop-zone.js.map +1 -1
  34. package/dist/document-drop-zone.min.css +1 -1
  35. package/dist/document-drop-zone.min.js +1 -1
  36. package/dist/document-drop-zone.min.js.map +1 -1
  37. package/dist/realtime-audio.js +1641 -2504
  38. package/dist/realtime-audio.js.map +1 -1
  39. package/dist/realtime-audio.min.js +3 -1
  40. package/dist/realtime-audio.min.js.map +1 -1
  41. package/dist/technical-name-generator.js +58 -80
  42. package/dist/technical-name-generator.js.map +1 -1
  43. package/dist/technical-name-generator.min.js +1 -1
  44. package/dist/technical-name-generator.min.js.map +1 -1
  45. package/package.json +1 -5
  46. package/dist/ai-chat.css.map +0 -1
  47. package/dist/chat-image-carousel.css.map +0 -1
  48. package/dist/chat-widget.css.map +0 -1
  49. package/dist/document-drop-zone.css.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["ai-chat-widget.js"],"names":["clampWidgetValue","value","min","max","Math","window","coreAIChatWidgetBehavior","parsePixelValue","Number","isFinite","parsed","parseFloat","attach","app","config","__aiChatWidgetAttached","chatWidgetStateName","chatWidgetStateSession","chatWidgetStateDocuments","chatWidgetLayoutKey","chatHistorySection","widgetContainerElement","widgetToggleButtonElement","widgetResetSizeButtonElement","widgetResizeObserver","widgetViewportResizeHandler","widgetDefaultWidth","widgetDefaultHeight","widgetIsInitialized","getStoredWidgetLayout","widget","persistLayout","storedLayout","localStorage","getItem","JSON","parse","error","console","warn","saveStoredWidgetLayout","partialLayout","currentLayout","nextLayout","Object","assign","panel","undefined","position","setItem","stringify","getElementSize","element","fallbackWidth","fallbackHeight","width","height","rect","getBoundingClientRect","computed","getComputedStyle","round","getElementPosition","left","top","inlineLeft","style","inlineTop","computedLeft","computedTop","isHidden","display","getAvailableWidgetPositionRange","viewportPadding","padding","maxLeft","innerWidth","maxTop","innerHeight","createStoredPosition","range","leftSpan","topSpan","leftRatio","topRatio","resolveStoredPosition","storedPosition","clampWidgetPosition","getStoredWidgetDocuments","clearStoredWidgetDocuments","saveStoredWidgetDocuments","removeItem","applyAbsolutePosition","right","bottom","getWidgetDefaultSize","defaultWidth","defaultHeight","getWidgetToggleGap","isWidgetPanelVisible","classList","contains","persistWidgetPanelPosition","panelDefaultSize","panelPosition","panelSize","toggleSize","linkedPosition","persistWidgetTogglePosition","togglePosition","persistWidgetPanelSize","enableResizing","defaultSize","currentSize","abs","syncTogglePositionToPanel","syncPanelPositionToToggle","updateWidgetResetSizeButtonVisibility","add","isResized","toggle","resetWidgetSize","removeProperty","constrainWidgetElementsToViewport","restoreWidgetLayout","storedTogglePosition","enableDragging","attachDraggableWidgetElement","handle","layoutKey","suppressClickOnDrag","activePointerId","startX","startY","startLeft","startTop","dragged","dragThreshold","interactiveSelector","self","stopDragging","event","pointerId","document","removeEventListener","onPointerMove","remove","dataset","dragSuppressClick","setTimeout","deltaX","clientX","deltaY","clientY","hypot","nextPosition","addEventListener","button","target","closest","setPointerCapture","preventDefault","clampedPanel","clampedToggle","showChatScreen","initialize","chatWidgetContainer","querySelector","toggleButtonSelector","resetSizeButtonSelector","documents","minWidth","minHeight","ResizeObserver","observe","dragHandleSelector","dragHandle","reloadCurrentSession","showHistoryButton","closeHistoryButton","newChatButton","resetSession","resolveSessionId","onSessionInitialized","sessionId","onSessionReset","onDocumentsChanged","handleReceiveError","isSessionStarted","_attemptedSessionRecovery","startNewSession","dispose","disconnect","onMounted","onBeforeUnmount","coreAIChatWidgetManager","getAttributeValue","attributeName","getAttribute","parseBooleanAttributeValue","normalized","String","trim","toLowerCase","parseJsonAttribute","description","rawValue","buildOptionsFromDataAttributes","widgetContainerSelector","chatConfig","coreAIChatManager","buildConfigFromElement","allowWidgetHost","profileId","profileName","profileDisplayText","profileWelcomeMessage","profileInitialPrompt","profileChatMode","profileTtsVoiceName","profileRealtimeVoiceName","profileMetricsEnabled","profileSessionDocuments","profile","id","name","displayText","welcomeMessage","initialPrompt","chatMode","ttsVoiceName","realtimeVoiceName","enableSessionMetrics","allowSessionDocuments","shellSelector","closeButtonSelector","inputSelector","messageTemplateSelector","indicatorTemplateSelector","widgetStateName","openStateValue","closedStateValue","openIconHtml","closedIconHtml","options","configElementSelector","configElement","messageTemplate","innerHTML","indicatorTemplate","shell","widgetContainer","toggleButton","closeButton","profileInput","widgetOpenStateKey","widgetLayoutKey","setAttribute","layout","panelLayout","toggleLeft","toggleTop","isOpen","deferReveal","initialOpen","panelWidth","panelHeight","toggleGap","visibility","widgetApp","applySessionProfilePatch","crestAppsAIChat","patchSessionProfileSync","revealShell","syncOpenPanelPosition","updateTtsPlaybackButtons","buttons","querySelectorAll","forEach","buttonIndex","isPlaying","ttsPlayingMessageIndex","queueTtsPlaybackButtonUpdate","requestAnimationFrame","revealShellWhenStable","hasRevealed","resizeObserver","finalizeReveal","lastWidth","lastHeight","stablePasses","entries","entry","contentRect","setWidgetOpen","isCurrentlyOpen","renderPendingCharts","$watch","initializeFromElement","coreAiChatWidgetInitialized","__coreAIChatWidgetApp","jsonOptions","attributeOptions","scanForAutoInitialization","root","matches","startAutoInitialization","MutationObserver","observer","mutations","mutation","addedNodes","node","nodeType","body","childList","subtree","readyState","once"],"mappings":"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","file":"ai-chat-widget.js","sourcesContent":["function clampWidgetValue(value, min, max) {\n return Math.min(Math.max(value, min), max);\n}\n\nwindow.coreAIChatWidgetBehavior = window.coreAIChatWidgetBehavior || function () {\n function parsePixelValue(value) {\n if (typeof value === 'number' && Number.isFinite(value)) {\n return value;\n }\n\n if (typeof value !== 'string') {\n return null;\n }\n\n var parsed = parseFloat(value);\n return Number.isFinite(parsed) ? parsed : null;\n }\n\n function attach(app, config) {\n if (!app || app.__aiChatWidgetAttached) {\n return;\n }\n\n app.__aiChatWidgetAttached = true;\n app.chatWidgetStateName = null;\n app.chatWidgetStateSession = null;\n app.chatWidgetStateDocuments = null;\n app.chatWidgetLayoutKey = null;\n app.chatHistorySection = null;\n app.widgetContainerElement = null;\n app.widgetToggleButtonElement = null;\n app.widgetResetSizeButtonElement = null;\n app.widgetResizeObserver = null;\n app.widgetViewportResizeHandler = null;\n app.widgetDefaultWidth = null;\n app.widgetDefaultHeight = null;\n app.widgetIsInitialized = false;\n\n app.getStoredWidgetLayout = function () {\n if (!this.chatWidgetLayoutKey || !config.widget.persistLayout) {\n return {};\n }\n\n try {\n var storedLayout = localStorage.getItem(this.chatWidgetLayoutKey);\n return storedLayout ? JSON.parse(storedLayout) || {} : {};\n }\n catch (error) {\n console.warn('Failed to read widget layout state.', error);\n return {};\n }\n };\n\n app.saveStoredWidgetLayout = function (partialLayout) {\n if (!this.chatWidgetLayoutKey || !config.widget.persistLayout) {\n return;\n }\n\n var currentLayout = this.getStoredWidgetLayout();\n var nextLayout = Object.assign({}, currentLayout);\n\n if (partialLayout.panel !== undefined) {\n nextLayout.panel = Object.assign({}, currentLayout.panel || {}, partialLayout.panel || {});\n }\n\n if (partialLayout.position !== undefined) {\n nextLayout.position = Object.assign({}, currentLayout.position || {}, partialLayout.position || {});\n }\n\n localStorage.setItem(this.chatWidgetLayoutKey, JSON.stringify(nextLayout));\n };\n\n app.getElementSize = function (element, fallbackWidth, fallbackHeight) {\n if (!element) {\n return {\n width: fallbackWidth || 0,\n height: fallbackHeight || 0\n };\n }\n\n var rect = element.getBoundingClientRect();\n var computed = window.getComputedStyle(element);\n\n return {\n width: Math.round(rect.width || parsePixelValue(computed.width) || fallbackWidth || 0),\n height: Math.round(rect.height || parsePixelValue(computed.height) || fallbackHeight || 0)\n };\n };\n\n app.getElementPosition = function (element) {\n if (!element) {\n return {\n left: 0,\n top: 0\n };\n }\n\n var rect = element.getBoundingClientRect();\n var computed = window.getComputedStyle(element);\n var inlineLeft = parsePixelValue(element.style.left);\n var inlineTop = parsePixelValue(element.style.top);\n var computedLeft = parsePixelValue(computed.left);\n var computedTop = parsePixelValue(computed.top);\n var isHidden = computed.display === 'none';\n\n return {\n left: Math.round(isHidden && Number.isFinite(inlineLeft) ? inlineLeft : rect.left || inlineLeft || computedLeft || 0),\n top: Math.round(isHidden && Number.isFinite(inlineTop) ? inlineTop : rect.top || inlineTop || computedTop || 0)\n };\n };\n\n app.getAvailableWidgetPositionRange = function (width, height) {\n var viewportPadding = 8;\n return {\n padding: viewportPadding,\n maxLeft: Math.max(viewportPadding, window.innerWidth - width - viewportPadding),\n maxTop: Math.max(viewportPadding, window.innerHeight - height - viewportPadding)\n };\n };\n\n app.createStoredPosition = function (left, top, width, height) {\n var range = this.getAvailableWidgetPositionRange(width, height);\n var leftSpan = Math.max(0, range.maxLeft - range.padding);\n var topSpan = Math.max(0, range.maxTop - range.padding);\n\n return {\n left: Math.round(left),\n top: Math.round(top),\n leftRatio: leftSpan === 0 ? 0 : (left - range.padding) / leftSpan,\n topRatio: topSpan === 0 ? 0 : (top - range.padding) / topSpan\n };\n };\n\n app.resolveStoredPosition = function (storedPosition, width, height) {\n if (!storedPosition) {\n return null;\n }\n\n var range = this.getAvailableWidgetPositionRange(width, height);\n var left = Number(storedPosition.left);\n var top = Number(storedPosition.top);\n var leftRatio = Number(storedPosition.leftRatio);\n var topRatio = Number(storedPosition.topRatio);\n\n if (Number.isFinite(leftRatio)) {\n left = range.padding + Math.max(0, range.maxLeft - range.padding) * leftRatio;\n }\n\n if (Number.isFinite(topRatio)) {\n top = range.padding + Math.max(0, range.maxTop - range.padding) * topRatio;\n }\n\n if (!Number.isFinite(left) || !Number.isFinite(top)) {\n return null;\n }\n\n return this.clampWidgetPosition(left, top, width, height);\n };\n\n app.clampWidgetPosition = function (left, top, width, height) {\n var range = this.getAvailableWidgetPositionRange(width, height);\n\n return {\n left: Math.round(clampWidgetValue(left, range.padding, range.maxLeft)),\n top: Math.round(clampWidgetValue(top, range.padding, range.maxTop))\n };\n };\n\n app.getStoredWidgetDocuments = function () {\n this.clearStoredWidgetDocuments();\n return [];\n };\n\n app.saveStoredWidgetDocuments = function () {\n this.clearStoredWidgetDocuments();\n };\n\n app.clearStoredWidgetDocuments = function () {\n if (!this.chatWidgetStateDocuments) {\n return;\n }\n\n localStorage.removeItem(this.chatWidgetStateDocuments);\n };\n\n app.applyAbsolutePosition = function (element, left, top) {\n if (!element) {\n return;\n }\n\n element.style.left = left + 'px';\n element.style.top = top + 'px';\n element.style.right = 'auto';\n element.style.bottom = 'auto';\n };\n\n app.getWidgetDefaultSize = function () {\n return {\n width: this.widgetDefaultWidth || parsePixelValue(config.widget.defaultWidth) || 380,\n height: this.widgetDefaultHeight || parsePixelValue(config.widget.defaultHeight) || 520\n };\n };\n\n app.getWidgetToggleGap = function () {\n return 8;\n };\n\n app.isWidgetPanelVisible = function () {\n if (!this.widgetContainerElement) {\n return false;\n }\n\n var computed = window.getComputedStyle(this.widgetContainerElement);\n return this.widgetContainerElement.classList.contains('open') && computed.display !== 'none';\n };\n\n app.persistWidgetPanelPosition = function () {\n if (!this.widgetContainerElement || !config.widget.persistLayout) {\n return;\n }\n\n var panelDefaultSize = this.getWidgetDefaultSize();\n var panelPosition = this.getElementPosition(this.widgetContainerElement);\n var panelSize = this.getElementSize(this.widgetContainerElement, panelDefaultSize.width, panelDefaultSize.height);\n var toggleSize = this.getElementSize(this.widgetToggleButtonElement, 52, 52);\n var linkedPosition = this.clampWidgetPosition(\n panelPosition.left + panelSize.width - toggleSize.width,\n panelPosition.top + panelSize.height + this.getWidgetToggleGap(),\n toggleSize.width,\n toggleSize.height);\n\n this.saveStoredWidgetLayout({ position: this.createStoredPosition(linkedPosition.left, linkedPosition.top, toggleSize.width, toggleSize.height) });\n };\n\n app.persistWidgetTogglePosition = function () {\n if (!this.widgetToggleButtonElement || !config.widget.persistLayout) {\n return;\n }\n\n var togglePosition = this.getElementPosition(this.widgetToggleButtonElement);\n var toggleSize = this.getElementSize(this.widgetToggleButtonElement, 52, 52);\n this.saveStoredWidgetLayout({ position: this.createStoredPosition(togglePosition.left, togglePosition.top, toggleSize.width, toggleSize.height) });\n };\n\n app.persistWidgetPanelSize = function () {\n if (!this.widgetContainerElement || !config.widget.enableResizing || !config.widget.persistLayout) {\n return;\n }\n\n var defaultSize = this.getWidgetDefaultSize();\n var currentSize = this.getElementSize(this.widgetContainerElement, defaultSize.width, defaultSize.height);\n\n this.saveStoredWidgetLayout({\n panel: {\n width: Math.abs(currentSize.width - defaultSize.width) <= 1 ? null : currentSize.width,\n height: Math.abs(currentSize.height - defaultSize.height) <= 1 ? null : currentSize.height\n }\n });\n };\n\n app.syncTogglePositionToPanel = function (persistLayout) {\n if (persistLayout === undefined) {\n persistLayout = true;\n }\n\n if (!this.widgetContainerElement || !this.widgetToggleButtonElement) {\n return;\n }\n\n var panelDefaultSize = this.getWidgetDefaultSize();\n var panelSize = this.getElementSize(this.widgetContainerElement, panelDefaultSize.width, panelDefaultSize.height);\n var toggleSize = this.getElementSize(this.widgetToggleButtonElement, 52, 52);\n var panelPosition = this.getElementPosition(this.widgetContainerElement);\n var linkedPosition = this.clampWidgetPosition(\n panelPosition.left + panelSize.width - toggleSize.width,\n panelPosition.top + panelSize.height + this.getWidgetToggleGap(),\n toggleSize.width,\n toggleSize.height);\n\n this.applyAbsolutePosition(this.widgetToggleButtonElement, linkedPosition.left, linkedPosition.top);\n\n if (persistLayout && config.widget.persistLayout) {\n this.persistWidgetTogglePosition();\n }\n };\n\n app.syncPanelPositionToToggle = function (persistLayout) {\n if (persistLayout === undefined) {\n persistLayout = true;\n }\n\n if (!this.widgetContainerElement || !this.widgetToggleButtonElement) {\n return;\n }\n\n var panelDefaultSize = this.getWidgetDefaultSize();\n var panelSize = this.getElementSize(this.widgetContainerElement, panelDefaultSize.width, panelDefaultSize.height);\n var toggleSize = this.getElementSize(this.widgetToggleButtonElement, 52, 52);\n var togglePosition = this.getElementPosition(this.widgetToggleButtonElement);\n var linkedPosition = this.clampWidgetPosition(\n togglePosition.left + toggleSize.width - panelSize.width,\n togglePosition.top - panelSize.height - this.getWidgetToggleGap(),\n panelSize.width,\n panelSize.height);\n\n this.applyAbsolutePosition(this.widgetContainerElement, linkedPosition.left, linkedPosition.top);\n\n if (persistLayout && config.widget.persistLayout) {\n this.persistWidgetPanelPosition();\n }\n };\n\n app.updateWidgetResetSizeButtonVisibility = function () {\n if (!this.widgetResetSizeButtonElement) {\n return;\n }\n\n if (!config.widget.enableResizing || !this.widgetContainerElement) {\n this.widgetResetSizeButtonElement.classList.add('d-none');\n return;\n }\n\n var defaultSize = this.getWidgetDefaultSize();\n var currentSize = this.getElementSize(this.widgetContainerElement, defaultSize.width, defaultSize.height);\n var isResized =\n Math.abs(currentSize.width - defaultSize.width) > 1 ||\n Math.abs(currentSize.height - defaultSize.height) > 1 ||\n !!this.widgetContainerElement.style.width ||\n !!this.widgetContainerElement.style.height;\n\n this.widgetResetSizeButtonElement.classList.toggle('d-none', !isResized);\n };\n\n app.resetWidgetSize = function () {\n if (!this.widgetContainerElement || !config.widget.enableResizing) {\n return;\n }\n\n this.widgetContainerElement.style.removeProperty('width');\n this.widgetContainerElement.style.removeProperty('height');\n this.persistWidgetPanelSize();\n this.constrainWidgetElementsToViewport();\n this.updateWidgetResetSizeButtonVisibility();\n };\n\n app.restoreWidgetLayout = function () {\n var storedLayout = this.getStoredWidgetLayout();\n\n if (this.widgetContainerElement && config.widget.enableResizing) {\n if (Number.isFinite(storedLayout.panel && storedLayout.panel.width)) {\n this.widgetContainerElement.style.width = storedLayout.panel.width + 'px';\n }\n else {\n this.widgetContainerElement.style.removeProperty('width');\n }\n\n if (Number.isFinite(storedLayout.panel && storedLayout.panel.height)) {\n this.widgetContainerElement.style.height = storedLayout.panel.height + 'px';\n }\n else {\n this.widgetContainerElement.style.removeProperty('height');\n }\n }\n\n var toggleSize = this.getElementSize(this.widgetToggleButtonElement, 52, 52);\n var storedTogglePosition = this.resolveStoredPosition(storedLayout.position, toggleSize.width, toggleSize.height);\n if (this.widgetToggleButtonElement && config.widget.enableDragging && storedTogglePosition) {\n this.applyAbsolutePosition(this.widgetToggleButtonElement, storedTogglePosition.left, storedTogglePosition.top);\n this.syncPanelPositionToToggle(false);\n }\n else if (this.widgetToggleButtonElement && config.widget.enableDragging &&\n Number.isFinite(storedLayout.toggle && storedLayout.toggle.left) &&\n Number.isFinite(storedLayout.toggle && storedLayout.toggle.top)) {\n this.applyAbsolutePosition(this.widgetToggleButtonElement, storedLayout.toggle.left, storedLayout.toggle.top);\n this.syncPanelPositionToToggle(false);\n }\n else if (this.widgetContainerElement && config.widget.enableDragging &&\n Number.isFinite(storedLayout.panel && storedLayout.panel.left) &&\n Number.isFinite(storedLayout.panel && storedLayout.panel.top)) {\n this.applyAbsolutePosition(this.widgetContainerElement, storedLayout.panel.left, storedLayout.panel.top);\n this.syncTogglePositionToPanel(false);\n }\n\n this.constrainWidgetElementsToViewport();\n this.updateWidgetResetSizeButtonVisibility();\n };\n\n app.attachDraggableWidgetElement = function (element, handle, layoutKey, suppressClickOnDrag) {\n if (!element || !handle || !config.widget.enableDragging) {\n return;\n }\n\n var activePointerId = null;\n var startX = 0;\n var startY = 0;\n var startLeft = 0;\n var startTop = 0;\n var dragged = false;\n var dragThreshold = 4;\n var interactiveSelector = 'button, a, input, textarea, select, option, label';\n var self = this;\n\n function stopDragging(event) {\n if (activePointerId === null) {\n return;\n }\n\n if (event && event.pointerId !== undefined && event.pointerId !== activePointerId) {\n return;\n }\n\n document.removeEventListener('pointermove', onPointerMove);\n document.removeEventListener('pointerup', stopDragging);\n document.removeEventListener('pointercancel', stopDragging);\n element.classList.remove('ai-chat-widget-dragging');\n activePointerId = null;\n\n if (!dragged) {\n return;\n }\n\n if (layoutKey === 'panel') {\n self.syncTogglePositionToPanel(false);\n self.persistWidgetPanelPosition();\n }\n else if (layoutKey === 'toggle') {\n self.syncPanelPositionToToggle(false);\n self.persistWidgetTogglePosition();\n }\n\n if (config.widget.persistLayout) {\n self.persistWidgetPanelPosition();\n self.persistWidgetTogglePosition();\n }\n\n if (suppressClickOnDrag) {\n element.dataset.dragSuppressClick = 'true';\n window.setTimeout(function () {\n if (element.dataset.dragSuppressClick === 'true') {\n element.dataset.dragSuppressClick = 'false';\n }\n }, 0);\n }\n }\n\n function onPointerMove(event) {\n if (activePointerId === null || event.pointerId !== activePointerId) {\n return;\n }\n\n var deltaX = event.clientX - startX;\n var deltaY = event.clientY - startY;\n\n if (!dragged && Math.hypot(deltaX, deltaY) < dragThreshold) {\n return;\n }\n\n dragged = true;\n\n var defaultSize = self.getWidgetDefaultSize();\n var currentSize = self.getElementSize(\n element,\n layoutKey === 'panel' ? defaultSize.width : 52,\n layoutKey === 'panel' ? defaultSize.height : 52);\n var nextPosition = self.clampWidgetPosition(startLeft + deltaX, startTop + deltaY, currentSize.width, currentSize.height);\n\n self.applyAbsolutePosition(element, nextPosition.left, nextPosition.top);\n\n if (layoutKey === 'panel') {\n self.syncTogglePositionToPanel(false);\n }\n else if (layoutKey === 'toggle') {\n self.syncPanelPositionToToggle(false);\n }\n }\n\n handle.addEventListener('pointerdown', function (event) {\n if (event.button !== 0) {\n return;\n }\n\n if (layoutKey === 'panel' && event.target.closest(interactiveSelector)) {\n return;\n }\n\n var rect = element.getBoundingClientRect();\n startX = event.clientX;\n startY = event.clientY;\n startLeft = rect.left;\n startTop = rect.top;\n dragged = false;\n activePointerId = event.pointerId;\n element.classList.add('ai-chat-widget-dragging');\n\n if (handle.setPointerCapture) {\n handle.setPointerCapture(event.pointerId);\n }\n\n document.addEventListener('pointermove', onPointerMove);\n document.addEventListener('pointerup', stopDragging);\n document.addEventListener('pointercancel', stopDragging);\n event.preventDefault();\n });\n };\n\n app.constrainWidgetElementsToViewport = function () {\n if (this.widgetContainerElement && this.widgetContainerElement.style.left && this.isWidgetPanelVisible()) {\n var panelDefaultSize = this.getWidgetDefaultSize();\n var panelSize = this.getElementSize(this.widgetContainerElement, panelDefaultSize.width, panelDefaultSize.height);\n var panelPosition = this.getElementPosition(this.widgetContainerElement);\n var clampedPanel = this.clampWidgetPosition(panelPosition.left, panelPosition.top, panelSize.width, panelSize.height);\n\n this.applyAbsolutePosition(this.widgetContainerElement, clampedPanel.left, clampedPanel.top);\n this.syncTogglePositionToPanel(false);\n\n if (config.widget.persistLayout) {\n this.persistWidgetPanelPosition();\n this.persistWidgetTogglePosition();\n }\n }\n else if (this.widgetToggleButtonElement && this.widgetToggleButtonElement.style.left) {\n var toggleSize = this.getElementSize(this.widgetToggleButtonElement, 52, 52);\n var togglePosition = this.getElementPosition(this.widgetToggleButtonElement);\n var clampedToggle = this.clampWidgetPosition(togglePosition.left, togglePosition.top, toggleSize.width, toggleSize.height);\n\n this.applyAbsolutePosition(this.widgetToggleButtonElement, clampedToggle.left, clampedToggle.top);\n this.syncPanelPositionToToggle(false);\n\n if (config.widget.persistLayout) {\n this.persistWidgetTogglePosition();\n this.persistWidgetPanelPosition();\n }\n }\n };\n\n app.showChatScreen = function () {\n if (!this.chatHistorySection) {\n return;\n }\n\n this.chatHistorySection.classList.remove('show');\n };\n }\n\n function initialize(app, config) {\n if (!app || app.widgetIsInitialized) {\n return;\n }\n\n if (!config.widget.chatWidgetContainer) {\n console.error('The widget chatWidgetContainer is required.');\n return;\n }\n\n if (!config.widget.chatWidgetStateName) {\n console.error('The widget chatWidgetStateName is required.');\n return;\n }\n\n var chatWidgetContainer = document.querySelector(config.widget.chatWidgetContainer);\n if (!chatWidgetContainer) {\n return;\n }\n\n if (config.widget.chatHistorySection) {\n app.chatHistorySection = document.querySelector(config.widget.chatHistorySection);\n }\n\n app.chatWidgetStateName = config.widget.chatWidgetStateName;\n app.chatWidgetStateSession = config.widget.chatWidgetStateName + 'Session';\n app.chatWidgetStateDocuments = config.widget.chatWidgetStateName + 'Documents';\n app.chatWidgetLayoutKey = config.widget.chatWidgetStateName + 'Layout';\n app.widgetContainerElement = chatWidgetContainer;\n app.widgetToggleButtonElement = config.widget.toggleButtonSelector ? document.querySelector(config.widget.toggleButtonSelector) : null;\n app.widgetResetSizeButtonElement = config.widget.resetSizeButtonSelector ? document.querySelector(config.widget.resetSizeButtonSelector) : null;\n app.widgetDefaultWidth = parsePixelValue(config.widget.defaultWidth) || parsePixelValue(window.getComputedStyle(chatWidgetContainer).width) || 380;\n app.widgetDefaultHeight = parsePixelValue(config.widget.defaultHeight) || parsePixelValue(window.getComputedStyle(chatWidgetContainer).height) || 520;\n app.widgetIsInitialized = true;\n app.clearStoredWidgetDocuments();\n app.documents = [];\n\n if (config.widget.enableResizing) {\n chatWidgetContainer.classList.add('ai-chat-widget-resizable');\n chatWidgetContainer.style.minWidth = (parsePixelValue(config.widget.minWidth) || 320) + 'px';\n chatWidgetContainer.style.minHeight = (parsePixelValue(config.widget.minHeight) || 420) + 'px';\n\n if (typeof ResizeObserver !== 'undefined') {\n app.widgetResizeObserver = new ResizeObserver(function () {\n app.persistWidgetPanelSize();\n app.constrainWidgetElementsToViewport();\n app.updateWidgetResetSizeButtonVisibility();\n });\n\n app.widgetResizeObserver.observe(chatWidgetContainer);\n }\n }\n\n var dragHandleSelector = config.widget.dragHandleSelector || '.ai-chat-widget-header';\n var dragHandle = chatWidgetContainer.querySelector(dragHandleSelector);\n\n if (config.widget.enableDragging && dragHandle) {\n dragHandle.classList.add('ai-chat-widget-drag-handle');\n chatWidgetContainer.classList.add('ai-chat-widget-draggable');\n app.attachDraggableWidgetElement(chatWidgetContainer, dragHandle, 'panel', false);\n }\n\n if (config.widget.enableDragging && app.widgetToggleButtonElement) {\n app.widgetToggleButtonElement.classList.add('ai-chat-widget-draggable');\n app.attachDraggableWidgetElement(app.widgetToggleButtonElement, app.widgetToggleButtonElement, 'toggle', true);\n }\n\n if (app.widgetResetSizeButtonElement) {\n app.widgetResetSizeButtonElement.addEventListener('click', function (event) {\n event.preventDefault();\n app.resetWidgetSize();\n });\n }\n\n app.restoreWidgetLayout();\n\n if (!app.widgetViewportResizeHandler) {\n app.widgetViewportResizeHandler = function () {\n if (config.widget.persistLayout) {\n app.restoreWidgetLayout();\n } else {\n app.constrainWidgetElementsToViewport();\n }\n\n app.updateWidgetResetSizeButtonVisibility();\n };\n\n window.addEventListener('resize', app.widgetViewportResizeHandler);\n }\n\n app.reloadCurrentSession();\n\n if (config.widget.showHistoryButton && app.chatHistorySection) {\n var showHistoryButton = document.querySelector(config.widget.showHistoryButton);\n if (showHistoryButton) {\n showHistoryButton.addEventListener('click', function () {\n app.chatHistorySection.classList.toggle('show');\n });\n }\n\n if (config.widget.closeHistoryButton) {\n var closeHistoryButton = document.querySelector(config.widget.closeHistoryButton);\n if (closeHistoryButton) {\n closeHistoryButton.addEventListener('click', function () {\n app.showChatScreen();\n });\n }\n }\n }\n\n if (config.widget.newChatButton) {\n var newChatButton = document.querySelector(config.widget.newChatButton);\n if (newChatButton) {\n newChatButton.addEventListener('click', function () {\n app.resetSession();\n app.showChatScreen();\n });\n }\n }\n }\n\n function resolveSessionId(app) {\n if (!app || !app.widgetIsInitialized) {\n return null;\n }\n\n return localStorage.getItem(app.chatWidgetStateSession);\n }\n\n function onSessionInitialized(app, sessionId) {\n if (app && app.widgetIsInitialized) {\n localStorage.setItem(app.chatWidgetStateSession, sessionId);\n }\n }\n\n function onSessionReset(app) {\n if (app && app.widgetIsInitialized) {\n localStorage.removeItem(app.chatWidgetStateSession);\n app.clearStoredWidgetDocuments();\n }\n }\n\n function onDocumentsChanged(app, documents) {\n if (app && app.widgetIsInitialized) {\n app.saveStoredWidgetDocuments(documents);\n }\n }\n\n function handleReceiveError(app) {\n if (app && app.widgetIsInitialized && !app.isSessionStarted && !app._attemptedSessionRecovery) {\n app._attemptedSessionRecovery = true;\n localStorage.removeItem(app.chatWidgetStateSession);\n app.clearStoredWidgetDocuments();\n app.startNewSession();\n }\n }\n\n function dispose(app) {\n if (!app) {\n return;\n }\n\n if (app.widgetResizeObserver) {\n app.widgetResizeObserver.disconnect();\n app.widgetResizeObserver = null;\n }\n\n if (app.widgetViewportResizeHandler) {\n window.removeEventListener('resize', app.widgetViewportResizeHandler);\n app.widgetViewportResizeHandler = null;\n }\n }\n\n return {\n attach: attach,\n initialize: initialize,\n onMounted: initialize,\n resolveSessionId: resolveSessionId,\n onSessionInitialized: onSessionInitialized,\n onSessionReset: onSessionReset,\n onDocumentsChanged: onDocumentsChanged,\n handleReceiveError: handleReceiveError,\n dispose: dispose,\n onBeforeUnmount: dispose\n };\n}();\n\nwindow.coreAIChatWidgetManager = window.coreAIChatWidgetManager || function () {\n function getAttributeValue(element, attributeName) {\n var value = element.getAttribute(attributeName);\n return value === null || value === '' ? null : value;\n }\n\n function parseBooleanAttributeValue(value) {\n if (value === null || value === undefined) {\n return null;\n }\n\n if (typeof value === 'boolean') {\n return value;\n }\n\n var normalized = String(value).trim().toLowerCase();\n if (normalized === 'true') {\n return true;\n }\n\n if (normalized === 'false') {\n return false;\n }\n\n return null;\n }\n\n function parseJsonAttribute(element, attributeName, description) {\n var rawValue = getAttributeValue(element, attributeName);\n if (!rawValue) {\n return null;\n }\n\n try {\n return JSON.parse(rawValue);\n }\n catch (error) {\n console.error('Failed to parse ' + description + ' JSON.', error);\n return null;\n }\n }\n\n function buildOptionsFromDataAttributes(element) {\n var widgetContainerSelector = getAttributeValue(element, 'data-coreai-chat-widget-container-selector');\n if (!widgetContainerSelector) {\n return null;\n }\n\n var chatConfig = null;\n if (window.coreAIChatManager && typeof window.coreAIChatManager.buildConfigFromElement === 'function') {\n chatConfig = window.coreAIChatManager.buildConfigFromElement(element, { allowWidgetHost: true });\n }\n\n var profileId = getAttributeValue(element, 'data-coreai-chat-widget-profile-id');\n var profileName = getAttributeValue(element, 'data-coreai-chat-widget-profile-name');\n var profileDisplayText = getAttributeValue(element, 'data-coreai-chat-widget-profile-display-text');\n var profileWelcomeMessage = getAttributeValue(element, 'data-coreai-chat-widget-profile-welcome-message');\n var profileInitialPrompt = getAttributeValue(element, 'data-coreai-chat-widget-profile-initial-prompt');\n var profileChatMode = getAttributeValue(element, 'data-coreai-chat-widget-profile-chat-mode');\n var profileTtsVoiceName = getAttributeValue(element, 'data-coreai-chat-widget-profile-tts-voice-name');\n var profileRealtimeVoiceName = getAttributeValue(element, 'data-coreai-chat-widget-profile-realtime-voice-name');\n var profileMetricsEnabled = parseBooleanAttributeValue(getAttributeValue(element, 'data-coreai-chat-widget-profile-enable-session-metrics'));\n var profileSessionDocuments = parseBooleanAttributeValue(getAttributeValue(element, 'data-coreai-chat-widget-profile-allow-session-documents'));\n var profile = null;\n\n if (profileId || profileName || profileDisplayText || profileWelcomeMessage || profileChatMode || profileTtsVoiceName || profileRealtimeVoiceName || profileMetricsEnabled !== null || profileSessionDocuments !== null) {\n profile = {\n id: profileId,\n name: profileName,\n displayText: profileDisplayText,\n welcomeMessage: profileWelcomeMessage,\n initialPrompt: profileInitialPrompt,\n chatMode: profileChatMode,\n ttsVoiceName: profileTtsVoiceName,\n realtimeVoiceName: profileRealtimeVoiceName,\n enableSessionMetrics: profileMetricsEnabled === true,\n allowSessionDocuments: profileSessionDocuments === true\n };\n }\n\n var enableDragging = parseBooleanAttributeValue(getAttributeValue(element, 'data-coreai-chat-widget-enable-dragging'));\n var enableResizing = parseBooleanAttributeValue(getAttributeValue(element, 'data-coreai-chat-widget-enable-resizing'));\n var persistLayout = parseBooleanAttributeValue(getAttributeValue(element, 'data-coreai-chat-widget-persist-layout'));\n\n return {\n shellSelector: getAttributeValue(element, 'data-coreai-chat-widget-shell-selector'),\n widgetContainerSelector: widgetContainerSelector,\n toggleButtonSelector: getAttributeValue(element, 'data-coreai-chat-widget-toggle-button-selector'),\n closeButtonSelector: getAttributeValue(element, 'data-coreai-chat-widget-close-button-selector'),\n inputSelector: getAttributeValue(element, 'data-coreai-chat-widget-input-selector'),\n messageTemplateSelector: getAttributeValue(element, 'data-coreai-chat-widget-message-template-selector'),\n indicatorTemplateSelector: getAttributeValue(element, 'data-coreai-chat-widget-indicator-template-selector'),\n profile: profile,\n widgetStateName: getAttributeValue(element, 'data-coreai-chat-widget-state-name'),\n openStateValue: getAttributeValue(element, 'data-coreai-chat-widget-open-state-value'),\n closedStateValue: getAttributeValue(element, 'data-coreai-chat-widget-closed-state-value'),\n openIconHtml: getAttributeValue(element, 'data-coreai-chat-widget-open-icon-html'),\n closedIconHtml: getAttributeValue(element, 'data-coreai-chat-widget-closed-icon-html'),\n chatConfig: chatConfig ? Object.assign({}, chatConfig, {\n initialPrompt: profileInitialPrompt || chatConfig.initialPrompt,\n realtimeVoiceName: profileRealtimeVoiceName || chatConfig.realtimeVoiceName,\n widget: Object.assign({}, chatConfig.widget || {}, {\n chatWidgetContainer: widgetContainerSelector,\n chatWidgetStateName: getAttributeValue(element, 'data-coreai-chat-widget-state-name'),\n newChatButton: getAttributeValue(element, 'data-coreai-chat-widget-new-chat-button-selector'),\n toggleButtonSelector: getAttributeValue(element, 'data-coreai-chat-widget-toggle-button-selector'),\n resetSizeButtonSelector: getAttributeValue(element, 'data-coreai-chat-widget-reset-size-button-selector'),\n dragHandleSelector: getAttributeValue(element, 'data-coreai-chat-widget-drag-handle-selector'),\n enableDragging: enableDragging === null ? undefined : enableDragging,\n enableResizing: enableResizing === null ? undefined : enableResizing,\n persistLayout: persistLayout === null ? undefined : persistLayout,\n })\n }) : null\n };\n }\n\n function initialize(options) {\n if (!options) {\n return null;\n }\n\n var chatConfig = options.chatConfig;\n if (!chatConfig && options.configElementSelector) {\n var configElement = document.querySelector(options.configElementSelector);\n chatConfig = configElement ? parseJsonAttribute(configElement, 'data-config', 'AI chat widget config') : null;\n }\n\n if (!chatConfig) {\n return null;\n }\n\n if (options.messageTemplateSelector) {\n var messageTemplate = document.querySelector(options.messageTemplateSelector);\n if (messageTemplate) {\n chatConfig.messageTemplate = messageTemplate.innerHTML;\n }\n }\n\n if (options.indicatorTemplateSelector) {\n var indicatorTemplate = document.querySelector(options.indicatorTemplateSelector);\n if (indicatorTemplate) {\n chatConfig.indicatorTemplate = indicatorTemplate.innerHTML;\n }\n }\n\n var shell = document.querySelector(options.shellSelector);\n var widgetContainer = document.querySelector(options.widgetContainerSelector);\n var toggleButton = document.querySelector(options.toggleButtonSelector);\n var closeButton = document.querySelector(options.closeButtonSelector);\n var profileInput = options.inputSelector ? document.querySelector(options.inputSelector) : null;\n var widgetStateName = options.widgetStateName || chatConfig.widget.chatWidgetStateName;\n var widgetOpenStateKey = options.widgetOpenStateKey || (widgetStateName + 'Open');\n var widgetLayoutKey = widgetStateName + 'Layout';\n var openStateValue = options.openStateValue || 'open';\n var closedStateValue = options.closedStateValue || 'closed';\n\n if (profileInput && options.profile && options.profile.id) {\n profileInput.setAttribute('data-profile-id', options.profile.id);\n }\n\n try {\n var storedLayout = localStorage.getItem(widgetLayoutKey);\n var layout = storedLayout ? JSON.parse(storedLayout) || {} : {};\n var position = layout.position || {};\n var panelLayout = layout.panel || {};\n var toggleLeft = Number(position.left);\n var toggleTop = Number(position.top);\n var isOpen = localStorage.getItem(widgetOpenStateKey) === openStateValue;\n var viewportPadding = 8;\n\n if (shell) {\n shell.dataset.deferReveal = isOpen ? 'true' : 'false';\n shell.dataset.initialOpen = isOpen ? 'true' : 'false';\n }\n\n if (widgetContainer && toggleButton) {\n var toggleSize = 52;\n var panelWidth = Number.isFinite(Number(panelLayout.width))\n ? Number(panelLayout.width)\n : Math.round(parseFloat(window.getComputedStyle(widgetContainer).width) || 380);\n var panelHeight = Number.isFinite(Number(panelLayout.height))\n ? Number(panelLayout.height)\n : Math.round(parseFloat(window.getComputedStyle(widgetContainer).height) || 520);\n var maxLeft = Math.max(viewportPadding, window.innerWidth - toggleSize - viewportPadding);\n var maxTop = Math.max(viewportPadding, window.innerHeight - toggleSize - viewportPadding);\n if (Number.isFinite(Number(position.leftRatio))) {\n toggleLeft = viewportPadding + Math.max(0, maxLeft - viewportPadding) * Number(position.leftRatio);\n }\n if (Number.isFinite(Number(position.topRatio))) {\n toggleTop = viewportPadding + Math.max(0, maxTop - viewportPadding) * Number(position.topRatio);\n }\n if (Number.isFinite(toggleLeft) && Number.isFinite(toggleTop)) {\n toggleLeft = Math.round(clampWidgetValue(toggleLeft, viewportPadding, maxLeft));\n toggleTop = Math.round(clampWidgetValue(toggleTop, viewportPadding, maxTop));\n }\n\n if (Number.isFinite(toggleLeft) && Number.isFinite(toggleTop)) {\n toggleButton.style.left = toggleLeft + 'px';\n toggleButton.style.top = toggleTop + 'px';\n toggleButton.style.right = 'auto';\n toggleButton.style.bottom = 'auto';\n\n var toggleGap = 8;\n widgetContainer.style.left = (toggleLeft + toggleSize - panelWidth) + 'px';\n widgetContainer.style.top = (toggleTop - panelHeight - toggleGap) + 'px';\n widgetContainer.style.right = 'auto';\n widgetContainer.style.bottom = 'auto';\n }\n }\n\n if (widgetContainer) {\n widgetContainer.classList.remove('open');\n widgetContainer.style.display = 'none';\n widgetContainer.setAttribute('aria-hidden', 'true');\n }\n\n if (toggleButton) {\n toggleButton.innerHTML = isOpen ? options.openIconHtml : options.closedIconHtml;\n }\n }\n catch (error) {\n console.warn('Failed to restore widget layout before initialization.', error);\n }\n finally {\n if (shell && shell.dataset.deferReveal !== 'true') {\n shell.style.visibility = '';\n }\n }\n\n var widgetApp = window.coreAIChatManager.initialize(chatConfig);\n if (options.applySessionProfilePatch !== false && window.crestAppsAIChat && window.crestAppsAIChat.patchSessionProfileSync) {\n window.crestAppsAIChat.patchSessionProfileSync(widgetApp);\n }\n\n function revealShell() {\n if (!shell) {\n return;\n }\n\n shell.style.visibility = '';\n shell.dataset.deferReveal = 'false';\n }\n\n function syncOpenPanelPosition() {\n if (!widgetApp || typeof widgetApp.syncPanelPositionToToggle !== 'function') {\n return;\n }\n\n widgetApp.syncPanelPositionToToggle(false);\n }\n\n function updateTtsPlaybackButtons() {\n if (!widgetContainer) {\n return;\n }\n\n var buttons = widgetContainer.querySelectorAll('[data-tts-message-index]');\n buttons.forEach(function (button) {\n var buttonIndex = Number(button.getAttribute('data-tts-message-index'));\n var isPlaying = buttonIndex === widgetApp.ttsPlayingMessageIndex;\n button.classList.toggle('tts-playing', isPlaying);\n button.setAttribute('title', isPlaying ? 'Pause audio' : 'Read aloud');\n });\n }\n\n function queueTtsPlaybackButtonUpdate() {\n requestAnimationFrame(updateTtsPlaybackButtons);\n }\n\n function revealShellWhenStable(initialOpen) {\n if (!shell || shell.dataset.deferReveal !== 'true' || !initialOpen) {\n revealShell();\n return;\n }\n\n var hasRevealed = false;\n var resizeObserver = null;\n\n function finalizeReveal() {\n if (hasRevealed) {\n return;\n }\n\n hasRevealed = true;\n\n if (resizeObserver) {\n resizeObserver.disconnect();\n }\n\n requestAnimationFrame(function () {\n syncOpenPanelPosition();\n requestAnimationFrame(function () {\n revealShell();\n });\n });\n }\n\n if (typeof ResizeObserver === 'undefined') {\n window.setTimeout(finalizeReveal, 0);\n return;\n }\n\n var lastWidth = 0;\n var lastHeight = 0;\n var stablePasses = 0;\n\n resizeObserver = new ResizeObserver(function (entries) {\n var entry = entries && entries[0];\n if (!entry) {\n return;\n }\n\n var width = Math.round(entry.contentRect.width);\n var height = Math.round(entry.contentRect.height);\n if (!width || !height) {\n return;\n }\n\n syncOpenPanelPosition();\n\n if (width === lastWidth && height === lastHeight) {\n stablePasses++;\n }\n else {\n lastWidth = width;\n lastHeight = height;\n stablePasses = 0;\n }\n\n if (stablePasses >= 1) {\n finalizeReveal();\n }\n });\n\n resizeObserver.observe(widgetContainer);\n window.setTimeout(finalizeReveal, 150);\n }\n\n function setWidgetOpen(isOpen) {\n if (widgetApp) {\n var isCurrentlyOpen = widgetContainer.classList.contains('open');\n if (isOpen && !isCurrentlyOpen && typeof widgetApp.syncPanelPositionToToggle === 'function') {\n widgetApp.syncPanelPositionToToggle();\n }\n else if (!isOpen && isCurrentlyOpen && typeof widgetApp.syncTogglePositionToPanel === 'function') {\n widgetApp.syncTogglePositionToPanel();\n }\n }\n\n widgetContainer.classList.toggle('open', isOpen);\n widgetContainer.style.display = isOpen ? 'flex' : 'none';\n widgetContainer.setAttribute('aria-hidden', isOpen ? 'false' : 'true');\n toggleButton.innerHTML = isOpen ? options.openIconHtml : options.closedIconHtml;\n localStorage.setItem(widgetOpenStateKey, isOpen ? openStateValue : closedStateValue);\n\n if (isOpen && typeof window.renderPendingCharts === 'function') {\n setTimeout(function () { window.renderPendingCharts(); }, 100);\n }\n }\n\n var initialOpen = shell && shell.dataset.initialOpen === 'true';\n setWidgetOpen(initialOpen);\n revealShellWhenStable(initialOpen);\n\n if (widgetApp && typeof widgetApp.$watch === 'function') {\n widgetApp.$watch('ttsPlayingMessageIndex', function () {\n queueTtsPlaybackButtonUpdate();\n });\n }\n\n queueTtsPlaybackButtonUpdate();\n\n if (toggleButton) {\n toggleButton.addEventListener('click', function () {\n if (toggleButton.dataset.dragSuppressClick === 'true') {\n toggleButton.dataset.dragSuppressClick = 'false';\n return;\n }\n\n setWidgetOpen(!widgetContainer.classList.contains('open'));\n });\n }\n\n if (closeButton) {\n closeButton.addEventListener('click', function () {\n setWidgetOpen(false);\n });\n }\n\n return widgetApp;\n }\n\n function initializeFromElement(element) {\n if (!element || element.dataset.coreAiChatWidgetInitialized === 'true') {\n return element ? element.__coreAIChatWidgetApp || null : null;\n }\n\n var jsonOptions = parseJsonAttribute(element, 'data-coreai-chat-widget-config', 'CoreAI chat widget config');\n var attributeOptions = buildOptionsFromDataAttributes(element);\n if (!jsonOptions && !attributeOptions) {\n return null;\n }\n\n var options = Object.assign({}, jsonOptions || {}, attributeOptions || {});\n\n var widgetApp = initialize(options);\n if (!widgetApp) {\n return null;\n }\n\n element.dataset.coreAiChatWidgetInitialized = 'true';\n element.__coreAIChatWidgetApp = widgetApp;\n\n return widgetApp;\n }\n\n function scanForAutoInitialization(root) {\n if (!root || typeof root.querySelectorAll !== 'function') {\n return;\n }\n\n if (typeof root.matches === 'function' && root.matches('[data-coreai-chat-widget-config],[data-coreai-chat-widget-container-selector]')) {\n initializeFromElement(root);\n }\n\n root.querySelectorAll('[data-coreai-chat-widget-config],[data-coreai-chat-widget-container-selector]').forEach(initializeFromElement);\n }\n\n function startAutoInitialization() {\n scanForAutoInitialization(document);\n\n if (typeof MutationObserver === 'undefined') {\n return;\n }\n\n var observer = new MutationObserver(function (mutations) {\n mutations.forEach(function (mutation) {\n mutation.addedNodes.forEach(function (node) {\n if (node && node.nodeType === 1) {\n scanForAutoInitialization(node);\n }\n });\n });\n });\n\n observer.observe(document.body, {\n childList: true,\n subtree: true,\n });\n }\n\n if (document.readyState === 'loading') {\n document.addEventListener('DOMContentLoaded', startAutoInitialization, { once: true });\n } else {\n startAutoInitialization();\n }\n\n return {\n initialize: initialize,\n initializeFromElement: initializeFromElement,\n };\n}();\n"]}
1
+ {"version":3,"file":"ai-chat-widget.js","sources":["../../Assets/js/ai-chat-widget.js"],"sourcesContent":["function clampWidgetValue(value, min, max) {\n return Math.min(Math.max(value, min), max);\n}\n\nwindow.coreAIChatWidgetBehavior = window.coreAIChatWidgetBehavior || function () {\n function parsePixelValue(value) {\n if (typeof value === 'number' && Number.isFinite(value)) {\n return value;\n }\n\n if (typeof value !== 'string') {\n return null;\n }\n\n var parsed = parseFloat(value);\n return Number.isFinite(parsed) ? parsed : null;\n }\n\n function attach(app, config) {\n if (!app || app.__aiChatWidgetAttached) {\n return;\n }\n\n app.__aiChatWidgetAttached = true;\n app.chatWidgetStateName = null;\n app.chatWidgetStateSession = null;\n app.chatWidgetStateDocuments = null;\n app.chatWidgetLayoutKey = null;\n app.chatHistorySection = null;\n app.widgetContainerElement = null;\n app.widgetToggleButtonElement = null;\n app.widgetResetSizeButtonElement = null;\n app.widgetResizeObserver = null;\n app.widgetViewportResizeHandler = null;\n app.widgetDefaultWidth = null;\n app.widgetDefaultHeight = null;\n app.widgetIsInitialized = false;\n\n app.getStoredWidgetLayout = function () {\n if (!this.chatWidgetLayoutKey || !config.widget.persistLayout) {\n return {};\n }\n\n try {\n var storedLayout = localStorage.getItem(this.chatWidgetLayoutKey);\n return storedLayout ? JSON.parse(storedLayout) || {} : {};\n }\n catch (error) {\n console.warn('Failed to read widget layout state.', error);\n return {};\n }\n };\n\n app.saveStoredWidgetLayout = function (partialLayout) {\n if (!this.chatWidgetLayoutKey || !config.widget.persistLayout) {\n return;\n }\n\n var currentLayout = this.getStoredWidgetLayout();\n var nextLayout = Object.assign({}, currentLayout);\n\n if (partialLayout.panel !== undefined) {\n nextLayout.panel = Object.assign({}, currentLayout.panel || {}, partialLayout.panel || {});\n }\n\n if (partialLayout.position !== undefined) {\n nextLayout.position = Object.assign({}, currentLayout.position || {}, partialLayout.position || {});\n }\n\n localStorage.setItem(this.chatWidgetLayoutKey, JSON.stringify(nextLayout));\n };\n\n app.getElementSize = function (element, fallbackWidth, fallbackHeight) {\n if (!element) {\n return {\n width: fallbackWidth || 0,\n height: fallbackHeight || 0\n };\n }\n\n var rect = element.getBoundingClientRect();\n var computed = window.getComputedStyle(element);\n\n return {\n width: Math.round(rect.width || parsePixelValue(computed.width) || fallbackWidth || 0),\n height: Math.round(rect.height || parsePixelValue(computed.height) || fallbackHeight || 0)\n };\n };\n\n app.getElementPosition = function (element) {\n if (!element) {\n return {\n left: 0,\n top: 0\n };\n }\n\n var rect = element.getBoundingClientRect();\n var computed = window.getComputedStyle(element);\n var inlineLeft = parsePixelValue(element.style.left);\n var inlineTop = parsePixelValue(element.style.top);\n var computedLeft = parsePixelValue(computed.left);\n var computedTop = parsePixelValue(computed.top);\n var isHidden = computed.display === 'none';\n\n return {\n left: Math.round(isHidden && Number.isFinite(inlineLeft) ? inlineLeft : rect.left || inlineLeft || computedLeft || 0),\n top: Math.round(isHidden && Number.isFinite(inlineTop) ? inlineTop : rect.top || inlineTop || computedTop || 0)\n };\n };\n\n app.getAvailableWidgetPositionRange = function (width, height) {\n var viewportPadding = 8;\n return {\n padding: viewportPadding,\n maxLeft: Math.max(viewportPadding, window.innerWidth - width - viewportPadding),\n maxTop: Math.max(viewportPadding, window.innerHeight - height - viewportPadding)\n };\n };\n\n app.createStoredPosition = function (left, top, width, height) {\n var range = this.getAvailableWidgetPositionRange(width, height);\n var leftSpan = Math.max(0, range.maxLeft - range.padding);\n var topSpan = Math.max(0, range.maxTop - range.padding);\n\n return {\n left: Math.round(left),\n top: Math.round(top),\n leftRatio: leftSpan === 0 ? 0 : (left - range.padding) / leftSpan,\n topRatio: topSpan === 0 ? 0 : (top - range.padding) / topSpan\n };\n };\n\n app.resolveStoredPosition = function (storedPosition, width, height) {\n if (!storedPosition) {\n return null;\n }\n\n var range = this.getAvailableWidgetPositionRange(width, height);\n var left = Number(storedPosition.left);\n var top = Number(storedPosition.top);\n var leftRatio = Number(storedPosition.leftRatio);\n var topRatio = Number(storedPosition.topRatio);\n\n if (Number.isFinite(leftRatio)) {\n left = range.padding + Math.max(0, range.maxLeft - range.padding) * leftRatio;\n }\n\n if (Number.isFinite(topRatio)) {\n top = range.padding + Math.max(0, range.maxTop - range.padding) * topRatio;\n }\n\n if (!Number.isFinite(left) || !Number.isFinite(top)) {\n return null;\n }\n\n return this.clampWidgetPosition(left, top, width, height);\n };\n\n app.clampWidgetPosition = function (left, top, width, height) {\n var range = this.getAvailableWidgetPositionRange(width, height);\n\n return {\n left: Math.round(clampWidgetValue(left, range.padding, range.maxLeft)),\n top: Math.round(clampWidgetValue(top, range.padding, range.maxTop))\n };\n };\n\n app.getStoredWidgetDocuments = function () {\n this.clearStoredWidgetDocuments();\n return [];\n };\n\n app.saveStoredWidgetDocuments = function () {\n this.clearStoredWidgetDocuments();\n };\n\n app.clearStoredWidgetDocuments = function () {\n if (!this.chatWidgetStateDocuments) {\n return;\n }\n\n localStorage.removeItem(this.chatWidgetStateDocuments);\n };\n\n app.applyAbsolutePosition = function (element, left, top) {\n if (!element) {\n return;\n }\n\n element.style.left = left + 'px';\n element.style.top = top + 'px';\n element.style.right = 'auto';\n element.style.bottom = 'auto';\n };\n\n app.getWidgetDefaultSize = function () {\n return {\n width: this.widgetDefaultWidth || parsePixelValue(config.widget.defaultWidth) || 380,\n height: this.widgetDefaultHeight || parsePixelValue(config.widget.defaultHeight) || 520\n };\n };\n\n app.getWidgetToggleGap = function () {\n return 8;\n };\n\n app.isWidgetPanelVisible = function () {\n if (!this.widgetContainerElement) {\n return false;\n }\n\n var computed = window.getComputedStyle(this.widgetContainerElement);\n return this.widgetContainerElement.classList.contains('open') && computed.display !== 'none';\n };\n\n app.persistWidgetPanelPosition = function () {\n if (!this.widgetContainerElement || !config.widget.persistLayout) {\n return;\n }\n\n var panelDefaultSize = this.getWidgetDefaultSize();\n var panelPosition = this.getElementPosition(this.widgetContainerElement);\n var panelSize = this.getElementSize(this.widgetContainerElement, panelDefaultSize.width, panelDefaultSize.height);\n var toggleSize = this.getElementSize(this.widgetToggleButtonElement, 52, 52);\n var linkedPosition = this.clampWidgetPosition(\n panelPosition.left + panelSize.width - toggleSize.width,\n panelPosition.top + panelSize.height + this.getWidgetToggleGap(),\n toggleSize.width,\n toggleSize.height);\n\n this.saveStoredWidgetLayout({ position: this.createStoredPosition(linkedPosition.left, linkedPosition.top, toggleSize.width, toggleSize.height) });\n };\n\n app.persistWidgetTogglePosition = function () {\n if (!this.widgetToggleButtonElement || !config.widget.persistLayout) {\n return;\n }\n\n var togglePosition = this.getElementPosition(this.widgetToggleButtonElement);\n var toggleSize = this.getElementSize(this.widgetToggleButtonElement, 52, 52);\n this.saveStoredWidgetLayout({ position: this.createStoredPosition(togglePosition.left, togglePosition.top, toggleSize.width, toggleSize.height) });\n };\n\n app.persistWidgetPanelSize = function () {\n if (!this.widgetContainerElement || !config.widget.enableResizing || !config.widget.persistLayout) {\n return;\n }\n\n var defaultSize = this.getWidgetDefaultSize();\n var currentSize = this.getElementSize(this.widgetContainerElement, defaultSize.width, defaultSize.height);\n\n this.saveStoredWidgetLayout({\n panel: {\n width: Math.abs(currentSize.width - defaultSize.width) <= 1 ? null : currentSize.width,\n height: Math.abs(currentSize.height - defaultSize.height) <= 1 ? null : currentSize.height\n }\n });\n };\n\n app.syncTogglePositionToPanel = function (persistLayout) {\n if (persistLayout === undefined) {\n persistLayout = true;\n }\n\n if (!this.widgetContainerElement || !this.widgetToggleButtonElement) {\n return;\n }\n\n var panelDefaultSize = this.getWidgetDefaultSize();\n var panelSize = this.getElementSize(this.widgetContainerElement, panelDefaultSize.width, panelDefaultSize.height);\n var toggleSize = this.getElementSize(this.widgetToggleButtonElement, 52, 52);\n var panelPosition = this.getElementPosition(this.widgetContainerElement);\n var linkedPosition = this.clampWidgetPosition(\n panelPosition.left + panelSize.width - toggleSize.width,\n panelPosition.top + panelSize.height + this.getWidgetToggleGap(),\n toggleSize.width,\n toggleSize.height);\n\n this.applyAbsolutePosition(this.widgetToggleButtonElement, linkedPosition.left, linkedPosition.top);\n\n if (persistLayout && config.widget.persistLayout) {\n this.persistWidgetTogglePosition();\n }\n };\n\n app.syncPanelPositionToToggle = function (persistLayout) {\n if (persistLayout === undefined) {\n persistLayout = true;\n }\n\n if (!this.widgetContainerElement || !this.widgetToggleButtonElement) {\n return;\n }\n\n var panelDefaultSize = this.getWidgetDefaultSize();\n var panelSize = this.getElementSize(this.widgetContainerElement, panelDefaultSize.width, panelDefaultSize.height);\n var toggleSize = this.getElementSize(this.widgetToggleButtonElement, 52, 52);\n var togglePosition = this.getElementPosition(this.widgetToggleButtonElement);\n var linkedPosition = this.clampWidgetPosition(\n togglePosition.left + toggleSize.width - panelSize.width,\n togglePosition.top - panelSize.height - this.getWidgetToggleGap(),\n panelSize.width,\n panelSize.height);\n\n this.applyAbsolutePosition(this.widgetContainerElement, linkedPosition.left, linkedPosition.top);\n\n if (persistLayout && config.widget.persistLayout) {\n this.persistWidgetPanelPosition();\n }\n };\n\n app.updateWidgetResetSizeButtonVisibility = function () {\n if (!this.widgetResetSizeButtonElement) {\n return;\n }\n\n if (!config.widget.enableResizing || !this.widgetContainerElement) {\n this.widgetResetSizeButtonElement.classList.add('d-none');\n return;\n }\n\n var defaultSize = this.getWidgetDefaultSize();\n var currentSize = this.getElementSize(this.widgetContainerElement, defaultSize.width, defaultSize.height);\n var isResized =\n Math.abs(currentSize.width - defaultSize.width) > 1 ||\n Math.abs(currentSize.height - defaultSize.height) > 1 ||\n !!this.widgetContainerElement.style.width ||\n !!this.widgetContainerElement.style.height;\n\n this.widgetResetSizeButtonElement.classList.toggle('d-none', !isResized);\n };\n\n app.resetWidgetSize = function () {\n if (!this.widgetContainerElement || !config.widget.enableResizing) {\n return;\n }\n\n this.widgetContainerElement.style.removeProperty('width');\n this.widgetContainerElement.style.removeProperty('height');\n this.persistWidgetPanelSize();\n this.constrainWidgetElementsToViewport();\n this.updateWidgetResetSizeButtonVisibility();\n };\n\n app.restoreWidgetLayout = function () {\n var storedLayout = this.getStoredWidgetLayout();\n\n if (this.widgetContainerElement && config.widget.enableResizing) {\n if (Number.isFinite(storedLayout.panel && storedLayout.panel.width)) {\n this.widgetContainerElement.style.width = storedLayout.panel.width + 'px';\n }\n else {\n this.widgetContainerElement.style.removeProperty('width');\n }\n\n if (Number.isFinite(storedLayout.panel && storedLayout.panel.height)) {\n this.widgetContainerElement.style.height = storedLayout.panel.height + 'px';\n }\n else {\n this.widgetContainerElement.style.removeProperty('height');\n }\n }\n\n var toggleSize = this.getElementSize(this.widgetToggleButtonElement, 52, 52);\n var storedTogglePosition = this.resolveStoredPosition(storedLayout.position, toggleSize.width, toggleSize.height);\n if (this.widgetToggleButtonElement && config.widget.enableDragging && storedTogglePosition) {\n this.applyAbsolutePosition(this.widgetToggleButtonElement, storedTogglePosition.left, storedTogglePosition.top);\n this.syncPanelPositionToToggle(false);\n }\n else if (this.widgetToggleButtonElement && config.widget.enableDragging &&\n Number.isFinite(storedLayout.toggle && storedLayout.toggle.left) &&\n Number.isFinite(storedLayout.toggle && storedLayout.toggle.top)) {\n this.applyAbsolutePosition(this.widgetToggleButtonElement, storedLayout.toggle.left, storedLayout.toggle.top);\n this.syncPanelPositionToToggle(false);\n }\n else if (this.widgetContainerElement && config.widget.enableDragging &&\n Number.isFinite(storedLayout.panel && storedLayout.panel.left) &&\n Number.isFinite(storedLayout.panel && storedLayout.panel.top)) {\n this.applyAbsolutePosition(this.widgetContainerElement, storedLayout.panel.left, storedLayout.panel.top);\n this.syncTogglePositionToPanel(false);\n }\n\n this.constrainWidgetElementsToViewport();\n this.updateWidgetResetSizeButtonVisibility();\n };\n\n app.attachDraggableWidgetElement = function (element, handle, layoutKey, suppressClickOnDrag) {\n if (!element || !handle || !config.widget.enableDragging) {\n return;\n }\n\n var activePointerId = null;\n var startX = 0;\n var startY = 0;\n var startLeft = 0;\n var startTop = 0;\n var dragged = false;\n var dragThreshold = 4;\n var interactiveSelector = 'button, a, input, textarea, select, option, label';\n var self = this;\n\n function stopDragging(event) {\n if (activePointerId === null) {\n return;\n }\n\n if (event && event.pointerId !== undefined && event.pointerId !== activePointerId) {\n return;\n }\n\n document.removeEventListener('pointermove', onPointerMove);\n document.removeEventListener('pointerup', stopDragging);\n document.removeEventListener('pointercancel', stopDragging);\n element.classList.remove('ai-chat-widget-dragging');\n activePointerId = null;\n\n if (!dragged) {\n return;\n }\n\n if (layoutKey === 'panel') {\n self.syncTogglePositionToPanel(false);\n self.persistWidgetPanelPosition();\n }\n else if (layoutKey === 'toggle') {\n self.syncPanelPositionToToggle(false);\n self.persistWidgetTogglePosition();\n }\n\n if (config.widget.persistLayout) {\n self.persistWidgetPanelPosition();\n self.persistWidgetTogglePosition();\n }\n\n if (suppressClickOnDrag) {\n element.dataset.dragSuppressClick = 'true';\n window.setTimeout(function () {\n if (element.dataset.dragSuppressClick === 'true') {\n element.dataset.dragSuppressClick = 'false';\n }\n }, 0);\n }\n }\n\n function onPointerMove(event) {\n if (activePointerId === null || event.pointerId !== activePointerId) {\n return;\n }\n\n var deltaX = event.clientX - startX;\n var deltaY = event.clientY - startY;\n\n if (!dragged && Math.hypot(deltaX, deltaY) < dragThreshold) {\n return;\n }\n\n dragged = true;\n\n var defaultSize = self.getWidgetDefaultSize();\n var currentSize = self.getElementSize(\n element,\n layoutKey === 'panel' ? defaultSize.width : 52,\n layoutKey === 'panel' ? defaultSize.height : 52);\n var nextPosition = self.clampWidgetPosition(startLeft + deltaX, startTop + deltaY, currentSize.width, currentSize.height);\n\n self.applyAbsolutePosition(element, nextPosition.left, nextPosition.top);\n\n if (layoutKey === 'panel') {\n self.syncTogglePositionToPanel(false);\n }\n else if (layoutKey === 'toggle') {\n self.syncPanelPositionToToggle(false);\n }\n }\n\n handle.addEventListener('pointerdown', function (event) {\n if (event.button !== 0) {\n return;\n }\n\n if (layoutKey === 'panel' && event.target.closest(interactiveSelector)) {\n return;\n }\n\n var rect = element.getBoundingClientRect();\n startX = event.clientX;\n startY = event.clientY;\n startLeft = rect.left;\n startTop = rect.top;\n dragged = false;\n activePointerId = event.pointerId;\n element.classList.add('ai-chat-widget-dragging');\n\n if (handle.setPointerCapture) {\n handle.setPointerCapture(event.pointerId);\n }\n\n document.addEventListener('pointermove', onPointerMove);\n document.addEventListener('pointerup', stopDragging);\n document.addEventListener('pointercancel', stopDragging);\n event.preventDefault();\n });\n };\n\n app.constrainWidgetElementsToViewport = function () {\n if (this.widgetContainerElement && this.widgetContainerElement.style.left && this.isWidgetPanelVisible()) {\n var panelDefaultSize = this.getWidgetDefaultSize();\n var panelSize = this.getElementSize(this.widgetContainerElement, panelDefaultSize.width, panelDefaultSize.height);\n var panelPosition = this.getElementPosition(this.widgetContainerElement);\n var clampedPanel = this.clampWidgetPosition(panelPosition.left, panelPosition.top, panelSize.width, panelSize.height);\n\n this.applyAbsolutePosition(this.widgetContainerElement, clampedPanel.left, clampedPanel.top);\n this.syncTogglePositionToPanel(false);\n\n if (config.widget.persistLayout) {\n this.persistWidgetPanelPosition();\n this.persistWidgetTogglePosition();\n }\n }\n else if (this.widgetToggleButtonElement && this.widgetToggleButtonElement.style.left) {\n var toggleSize = this.getElementSize(this.widgetToggleButtonElement, 52, 52);\n var togglePosition = this.getElementPosition(this.widgetToggleButtonElement);\n var clampedToggle = this.clampWidgetPosition(togglePosition.left, togglePosition.top, toggleSize.width, toggleSize.height);\n\n this.applyAbsolutePosition(this.widgetToggleButtonElement, clampedToggle.left, clampedToggle.top);\n this.syncPanelPositionToToggle(false);\n\n if (config.widget.persistLayout) {\n this.persistWidgetTogglePosition();\n this.persistWidgetPanelPosition();\n }\n }\n };\n\n app.showChatScreen = function () {\n if (!this.chatHistorySection) {\n return;\n }\n\n this.chatHistorySection.classList.remove('show');\n };\n }\n\n function initialize(app, config) {\n if (!app || app.widgetIsInitialized) {\n return;\n }\n\n if (!config.widget.chatWidgetContainer) {\n console.error('The widget chatWidgetContainer is required.');\n return;\n }\n\n if (!config.widget.chatWidgetStateName) {\n console.error('The widget chatWidgetStateName is required.');\n return;\n }\n\n var chatWidgetContainer = document.querySelector(config.widget.chatWidgetContainer);\n if (!chatWidgetContainer) {\n return;\n }\n\n if (config.widget.chatHistorySection) {\n app.chatHistorySection = document.querySelector(config.widget.chatHistorySection);\n }\n\n app.chatWidgetStateName = config.widget.chatWidgetStateName;\n app.chatWidgetStateSession = config.widget.chatWidgetStateName + 'Session';\n app.chatWidgetStateDocuments = config.widget.chatWidgetStateName + 'Documents';\n app.chatWidgetLayoutKey = config.widget.chatWidgetStateName + 'Layout';\n app.widgetContainerElement = chatWidgetContainer;\n app.widgetToggleButtonElement = config.widget.toggleButtonSelector ? document.querySelector(config.widget.toggleButtonSelector) : null;\n app.widgetResetSizeButtonElement = config.widget.resetSizeButtonSelector ? document.querySelector(config.widget.resetSizeButtonSelector) : null;\n app.widgetDefaultWidth = parsePixelValue(config.widget.defaultWidth) || parsePixelValue(window.getComputedStyle(chatWidgetContainer).width) || 380;\n app.widgetDefaultHeight = parsePixelValue(config.widget.defaultHeight) || parsePixelValue(window.getComputedStyle(chatWidgetContainer).height) || 520;\n app.widgetIsInitialized = true;\n app.clearStoredWidgetDocuments();\n app.documents = [];\n\n if (config.widget.enableResizing) {\n chatWidgetContainer.classList.add('ai-chat-widget-resizable');\n chatWidgetContainer.style.minWidth = (parsePixelValue(config.widget.minWidth) || 320) + 'px';\n chatWidgetContainer.style.minHeight = (parsePixelValue(config.widget.minHeight) || 420) + 'px';\n\n if (typeof ResizeObserver !== 'undefined') {\n app.widgetResizeObserver = new ResizeObserver(function () {\n app.persistWidgetPanelSize();\n app.constrainWidgetElementsToViewport();\n app.updateWidgetResetSizeButtonVisibility();\n });\n\n app.widgetResizeObserver.observe(chatWidgetContainer);\n }\n }\n\n var dragHandleSelector = config.widget.dragHandleSelector || '.ai-chat-widget-header';\n var dragHandle = chatWidgetContainer.querySelector(dragHandleSelector);\n\n if (config.widget.enableDragging && dragHandle) {\n dragHandle.classList.add('ai-chat-widget-drag-handle');\n chatWidgetContainer.classList.add('ai-chat-widget-draggable');\n app.attachDraggableWidgetElement(chatWidgetContainer, dragHandle, 'panel', false);\n }\n\n if (config.widget.enableDragging && app.widgetToggleButtonElement) {\n app.widgetToggleButtonElement.classList.add('ai-chat-widget-draggable');\n app.attachDraggableWidgetElement(app.widgetToggleButtonElement, app.widgetToggleButtonElement, 'toggle', true);\n }\n\n if (app.widgetResetSizeButtonElement) {\n app.widgetResetSizeButtonElement.addEventListener('click', function (event) {\n event.preventDefault();\n app.resetWidgetSize();\n });\n }\n\n app.restoreWidgetLayout();\n\n if (!app.widgetViewportResizeHandler) {\n app.widgetViewportResizeHandler = function () {\n if (config.widget.persistLayout) {\n app.restoreWidgetLayout();\n } else {\n app.constrainWidgetElementsToViewport();\n }\n\n app.updateWidgetResetSizeButtonVisibility();\n };\n\n window.addEventListener('resize', app.widgetViewportResizeHandler);\n }\n\n app.reloadCurrentSession();\n\n if (config.widget.showHistoryButton && app.chatHistorySection) {\n var showHistoryButton = document.querySelector(config.widget.showHistoryButton);\n if (showHistoryButton) {\n showHistoryButton.addEventListener('click', function () {\n app.chatHistorySection.classList.toggle('show');\n });\n }\n\n if (config.widget.closeHistoryButton) {\n var closeHistoryButton = document.querySelector(config.widget.closeHistoryButton);\n if (closeHistoryButton) {\n closeHistoryButton.addEventListener('click', function () {\n app.showChatScreen();\n });\n }\n }\n }\n\n if (config.widget.newChatButton) {\n var newChatButton = document.querySelector(config.widget.newChatButton);\n if (newChatButton) {\n newChatButton.addEventListener('click', function () {\n app.resetSession();\n app.showChatScreen();\n });\n }\n }\n }\n\n function resolveSessionId(app) {\n if (!app || !app.widgetIsInitialized) {\n return null;\n }\n\n return localStorage.getItem(app.chatWidgetStateSession);\n }\n\n function onSessionInitialized(app, sessionId) {\n if (app && app.widgetIsInitialized) {\n localStorage.setItem(app.chatWidgetStateSession, sessionId);\n }\n }\n\n function onSessionReset(app) {\n if (app && app.widgetIsInitialized) {\n localStorage.removeItem(app.chatWidgetStateSession);\n app.clearStoredWidgetDocuments();\n }\n }\n\n function onDocumentsChanged(app, documents) {\n if (app && app.widgetIsInitialized) {\n app.saveStoredWidgetDocuments(documents);\n }\n }\n\n function handleReceiveError(app) {\n if (app && app.widgetIsInitialized && !app.isSessionStarted && !app._attemptedSessionRecovery) {\n app._attemptedSessionRecovery = true;\n localStorage.removeItem(app.chatWidgetStateSession);\n app.clearStoredWidgetDocuments();\n app.startNewSession();\n }\n }\n\n function dispose(app) {\n if (!app) {\n return;\n }\n\n if (app.widgetResizeObserver) {\n app.widgetResizeObserver.disconnect();\n app.widgetResizeObserver = null;\n }\n\n if (app.widgetViewportResizeHandler) {\n window.removeEventListener('resize', app.widgetViewportResizeHandler);\n app.widgetViewportResizeHandler = null;\n }\n }\n\n return {\n attach: attach,\n initialize: initialize,\n onMounted: initialize,\n resolveSessionId: resolveSessionId,\n onSessionInitialized: onSessionInitialized,\n onSessionReset: onSessionReset,\n onDocumentsChanged: onDocumentsChanged,\n handleReceiveError: handleReceiveError,\n dispose: dispose,\n onBeforeUnmount: dispose\n };\n}();\n\nwindow.coreAIChatWidgetManager = window.coreAIChatWidgetManager || function () {\n function getAttributeValue(element, attributeName) {\n var value = element.getAttribute(attributeName);\n return value === null || value === '' ? null : value;\n }\n\n function parseBooleanAttributeValue(value) {\n if (value === null || value === undefined) {\n return null;\n }\n\n if (typeof value === 'boolean') {\n return value;\n }\n\n var normalized = String(value).trim().toLowerCase();\n if (normalized === 'true') {\n return true;\n }\n\n if (normalized === 'false') {\n return false;\n }\n\n return null;\n }\n\n function parseJsonAttribute(element, attributeName, description) {\n var rawValue = getAttributeValue(element, attributeName);\n if (!rawValue) {\n return null;\n }\n\n try {\n return JSON.parse(rawValue);\n }\n catch (error) {\n console.error('Failed to parse ' + description + ' JSON.', error);\n return null;\n }\n }\n\n function buildOptionsFromDataAttributes(element) {\n var widgetContainerSelector = getAttributeValue(element, 'data-coreai-chat-widget-container-selector');\n if (!widgetContainerSelector) {\n return null;\n }\n\n var chatConfig = null;\n if (window.coreAIChatManager && typeof window.coreAIChatManager.buildConfigFromElement === 'function') {\n chatConfig = window.coreAIChatManager.buildConfigFromElement(element, { allowWidgetHost: true });\n }\n\n var profileId = getAttributeValue(element, 'data-coreai-chat-widget-profile-id');\n var profileName = getAttributeValue(element, 'data-coreai-chat-widget-profile-name');\n var profileDisplayText = getAttributeValue(element, 'data-coreai-chat-widget-profile-display-text');\n var profileWelcomeMessage = getAttributeValue(element, 'data-coreai-chat-widget-profile-welcome-message');\n var profileInitialPrompt = getAttributeValue(element, 'data-coreai-chat-widget-profile-initial-prompt');\n var profileChatMode = getAttributeValue(element, 'data-coreai-chat-widget-profile-chat-mode');\n var profileTtsVoiceName = getAttributeValue(element, 'data-coreai-chat-widget-profile-tts-voice-name');\n var profileRealtimeVoiceName = getAttributeValue(element, 'data-coreai-chat-widget-profile-realtime-voice-name');\n var profileMetricsEnabled = parseBooleanAttributeValue(getAttributeValue(element, 'data-coreai-chat-widget-profile-enable-session-metrics'));\n var profileSessionDocuments = parseBooleanAttributeValue(getAttributeValue(element, 'data-coreai-chat-widget-profile-allow-session-documents'));\n var profile = null;\n\n if (profileId || profileName || profileDisplayText || profileWelcomeMessage || profileChatMode || profileTtsVoiceName || profileRealtimeVoiceName || profileMetricsEnabled !== null || profileSessionDocuments !== null) {\n profile = {\n id: profileId,\n name: profileName,\n displayText: profileDisplayText,\n welcomeMessage: profileWelcomeMessage,\n initialPrompt: profileInitialPrompt,\n chatMode: profileChatMode,\n ttsVoiceName: profileTtsVoiceName,\n realtimeVoiceName: profileRealtimeVoiceName,\n enableSessionMetrics: profileMetricsEnabled === true,\n allowSessionDocuments: profileSessionDocuments === true\n };\n }\n\n var enableDragging = parseBooleanAttributeValue(getAttributeValue(element, 'data-coreai-chat-widget-enable-dragging'));\n var enableResizing = parseBooleanAttributeValue(getAttributeValue(element, 'data-coreai-chat-widget-enable-resizing'));\n var persistLayout = parseBooleanAttributeValue(getAttributeValue(element, 'data-coreai-chat-widget-persist-layout'));\n\n return {\n shellSelector: getAttributeValue(element, 'data-coreai-chat-widget-shell-selector'),\n widgetContainerSelector: widgetContainerSelector,\n toggleButtonSelector: getAttributeValue(element, 'data-coreai-chat-widget-toggle-button-selector'),\n closeButtonSelector: getAttributeValue(element, 'data-coreai-chat-widget-close-button-selector'),\n inputSelector: getAttributeValue(element, 'data-coreai-chat-widget-input-selector'),\n messageTemplateSelector: getAttributeValue(element, 'data-coreai-chat-widget-message-template-selector'),\n indicatorTemplateSelector: getAttributeValue(element, 'data-coreai-chat-widget-indicator-template-selector'),\n profile: profile,\n widgetStateName: getAttributeValue(element, 'data-coreai-chat-widget-state-name'),\n openStateValue: getAttributeValue(element, 'data-coreai-chat-widget-open-state-value'),\n closedStateValue: getAttributeValue(element, 'data-coreai-chat-widget-closed-state-value'),\n openIconHtml: getAttributeValue(element, 'data-coreai-chat-widget-open-icon-html'),\n closedIconHtml: getAttributeValue(element, 'data-coreai-chat-widget-closed-icon-html'),\n chatConfig: chatConfig ? Object.assign({}, chatConfig, {\n initialPrompt: profileInitialPrompt || chatConfig.initialPrompt,\n realtimeVoiceName: profileRealtimeVoiceName || chatConfig.realtimeVoiceName,\n widget: Object.assign({}, chatConfig.widget || {}, {\n chatWidgetContainer: widgetContainerSelector,\n chatWidgetStateName: getAttributeValue(element, 'data-coreai-chat-widget-state-name'),\n newChatButton: getAttributeValue(element, 'data-coreai-chat-widget-new-chat-button-selector'),\n toggleButtonSelector: getAttributeValue(element, 'data-coreai-chat-widget-toggle-button-selector'),\n resetSizeButtonSelector: getAttributeValue(element, 'data-coreai-chat-widget-reset-size-button-selector'),\n dragHandleSelector: getAttributeValue(element, 'data-coreai-chat-widget-drag-handle-selector'),\n enableDragging: enableDragging === null ? undefined : enableDragging,\n enableResizing: enableResizing === null ? undefined : enableResizing,\n persistLayout: persistLayout === null ? undefined : persistLayout,\n })\n }) : null\n };\n }\n\n function initialize(options) {\n if (!options) {\n return null;\n }\n\n var chatConfig = options.chatConfig;\n if (!chatConfig && options.configElementSelector) {\n var configElement = document.querySelector(options.configElementSelector);\n chatConfig = configElement ? parseJsonAttribute(configElement, 'data-config', 'AI chat widget config') : null;\n }\n\n if (!chatConfig) {\n return null;\n }\n\n if (options.messageTemplateSelector) {\n var messageTemplate = document.querySelector(options.messageTemplateSelector);\n if (messageTemplate) {\n chatConfig.messageTemplate = messageTemplate.innerHTML;\n }\n }\n\n if (options.indicatorTemplateSelector) {\n var indicatorTemplate = document.querySelector(options.indicatorTemplateSelector);\n if (indicatorTemplate) {\n chatConfig.indicatorTemplate = indicatorTemplate.innerHTML;\n }\n }\n\n var shell = document.querySelector(options.shellSelector);\n var widgetContainer = document.querySelector(options.widgetContainerSelector);\n var toggleButton = document.querySelector(options.toggleButtonSelector);\n var closeButton = document.querySelector(options.closeButtonSelector);\n var profileInput = options.inputSelector ? document.querySelector(options.inputSelector) : null;\n var widgetStateName = options.widgetStateName || chatConfig.widget.chatWidgetStateName;\n var widgetOpenStateKey = options.widgetOpenStateKey || (widgetStateName + 'Open');\n var widgetLayoutKey = widgetStateName + 'Layout';\n var openStateValue = options.openStateValue || 'open';\n var closedStateValue = options.closedStateValue || 'closed';\n\n if (profileInput && options.profile && options.profile.id) {\n profileInput.setAttribute('data-profile-id', options.profile.id);\n }\n\n try {\n var storedLayout = localStorage.getItem(widgetLayoutKey);\n var layout = storedLayout ? JSON.parse(storedLayout) || {} : {};\n var position = layout.position || {};\n var panelLayout = layout.panel || {};\n var toggleLeft = Number(position.left);\n var toggleTop = Number(position.top);\n var isOpen = localStorage.getItem(widgetOpenStateKey) === openStateValue;\n var viewportPadding = 8;\n\n if (shell) {\n shell.dataset.deferReveal = isOpen ? 'true' : 'false';\n shell.dataset.initialOpen = isOpen ? 'true' : 'false';\n }\n\n if (widgetContainer && toggleButton) {\n var toggleSize = 52;\n var panelWidth = Number.isFinite(Number(panelLayout.width))\n ? Number(panelLayout.width)\n : Math.round(parseFloat(window.getComputedStyle(widgetContainer).width) || 380);\n var panelHeight = Number.isFinite(Number(panelLayout.height))\n ? Number(panelLayout.height)\n : Math.round(parseFloat(window.getComputedStyle(widgetContainer).height) || 520);\n var maxLeft = Math.max(viewportPadding, window.innerWidth - toggleSize - viewportPadding);\n var maxTop = Math.max(viewportPadding, window.innerHeight - toggleSize - viewportPadding);\n if (Number.isFinite(Number(position.leftRatio))) {\n toggleLeft = viewportPadding + Math.max(0, maxLeft - viewportPadding) * Number(position.leftRatio);\n }\n if (Number.isFinite(Number(position.topRatio))) {\n toggleTop = viewportPadding + Math.max(0, maxTop - viewportPadding) * Number(position.topRatio);\n }\n if (Number.isFinite(toggleLeft) && Number.isFinite(toggleTop)) {\n toggleLeft = Math.round(clampWidgetValue(toggleLeft, viewportPadding, maxLeft));\n toggleTop = Math.round(clampWidgetValue(toggleTop, viewportPadding, maxTop));\n }\n\n if (Number.isFinite(toggleLeft) && Number.isFinite(toggleTop)) {\n toggleButton.style.left = toggleLeft + 'px';\n toggleButton.style.top = toggleTop + 'px';\n toggleButton.style.right = 'auto';\n toggleButton.style.bottom = 'auto';\n\n var toggleGap = 8;\n widgetContainer.style.left = (toggleLeft + toggleSize - panelWidth) + 'px';\n widgetContainer.style.top = (toggleTop - panelHeight - toggleGap) + 'px';\n widgetContainer.style.right = 'auto';\n widgetContainer.style.bottom = 'auto';\n }\n }\n\n if (widgetContainer) {\n widgetContainer.classList.remove('open');\n widgetContainer.style.display = 'none';\n widgetContainer.setAttribute('aria-hidden', 'true');\n }\n\n if (toggleButton) {\n toggleButton.innerHTML = isOpen ? options.openIconHtml : options.closedIconHtml;\n }\n }\n catch (error) {\n console.warn('Failed to restore widget layout before initialization.', error);\n }\n finally {\n if (shell && shell.dataset.deferReveal !== 'true') {\n shell.style.visibility = '';\n }\n }\n\n var widgetApp = window.coreAIChatManager.initialize(chatConfig);\n if (options.applySessionProfilePatch !== false && window.crestAppsAIChat && window.crestAppsAIChat.patchSessionProfileSync) {\n window.crestAppsAIChat.patchSessionProfileSync(widgetApp);\n }\n\n function revealShell() {\n if (!shell) {\n return;\n }\n\n shell.style.visibility = '';\n shell.dataset.deferReveal = 'false';\n }\n\n function syncOpenPanelPosition() {\n if (!widgetApp || typeof widgetApp.syncPanelPositionToToggle !== 'function') {\n return;\n }\n\n widgetApp.syncPanelPositionToToggle(false);\n }\n\n function updateTtsPlaybackButtons() {\n if (!widgetContainer) {\n return;\n }\n\n var buttons = widgetContainer.querySelectorAll('[data-tts-message-index]');\n buttons.forEach(function (button) {\n var buttonIndex = Number(button.getAttribute('data-tts-message-index'));\n var isPlaying = buttonIndex === widgetApp.ttsPlayingMessageIndex;\n button.classList.toggle('tts-playing', isPlaying);\n button.setAttribute('title', isPlaying ? 'Pause audio' : 'Read aloud');\n });\n }\n\n function queueTtsPlaybackButtonUpdate() {\n requestAnimationFrame(updateTtsPlaybackButtons);\n }\n\n function revealShellWhenStable(initialOpen) {\n if (!shell || shell.dataset.deferReveal !== 'true' || !initialOpen) {\n revealShell();\n return;\n }\n\n var hasRevealed = false;\n var resizeObserver = null;\n\n function finalizeReveal() {\n if (hasRevealed) {\n return;\n }\n\n hasRevealed = true;\n\n if (resizeObserver) {\n resizeObserver.disconnect();\n }\n\n requestAnimationFrame(function () {\n syncOpenPanelPosition();\n requestAnimationFrame(function () {\n revealShell();\n });\n });\n }\n\n if (typeof ResizeObserver === 'undefined') {\n window.setTimeout(finalizeReveal, 0);\n return;\n }\n\n var lastWidth = 0;\n var lastHeight = 0;\n var stablePasses = 0;\n\n resizeObserver = new ResizeObserver(function (entries) {\n var entry = entries && entries[0];\n if (!entry) {\n return;\n }\n\n var width = Math.round(entry.contentRect.width);\n var height = Math.round(entry.contentRect.height);\n if (!width || !height) {\n return;\n }\n\n syncOpenPanelPosition();\n\n if (width === lastWidth && height === lastHeight) {\n stablePasses++;\n }\n else {\n lastWidth = width;\n lastHeight = height;\n stablePasses = 0;\n }\n\n if (stablePasses >= 1) {\n finalizeReveal();\n }\n });\n\n resizeObserver.observe(widgetContainer);\n window.setTimeout(finalizeReveal, 150);\n }\n\n function setWidgetOpen(isOpen) {\n if (widgetApp) {\n var isCurrentlyOpen = widgetContainer.classList.contains('open');\n if (isOpen && !isCurrentlyOpen && typeof widgetApp.syncPanelPositionToToggle === 'function') {\n widgetApp.syncPanelPositionToToggle();\n }\n else if (!isOpen && isCurrentlyOpen && typeof widgetApp.syncTogglePositionToPanel === 'function') {\n widgetApp.syncTogglePositionToPanel();\n }\n }\n\n widgetContainer.classList.toggle('open', isOpen);\n widgetContainer.style.display = isOpen ? 'flex' : 'none';\n widgetContainer.setAttribute('aria-hidden', isOpen ? 'false' : 'true');\n toggleButton.innerHTML = isOpen ? options.openIconHtml : options.closedIconHtml;\n localStorage.setItem(widgetOpenStateKey, isOpen ? openStateValue : closedStateValue);\n\n if (isOpen && typeof window.renderPendingCharts === 'function') {\n setTimeout(function () { window.renderPendingCharts(); }, 100);\n }\n }\n\n var initialOpen = shell && shell.dataset.initialOpen === 'true';\n setWidgetOpen(initialOpen);\n revealShellWhenStable(initialOpen);\n\n if (widgetApp && typeof widgetApp.$watch === 'function') {\n widgetApp.$watch('ttsPlayingMessageIndex', function () {\n queueTtsPlaybackButtonUpdate();\n });\n }\n\n queueTtsPlaybackButtonUpdate();\n\n if (toggleButton) {\n toggleButton.addEventListener('click', function () {\n if (toggleButton.dataset.dragSuppressClick === 'true') {\n toggleButton.dataset.dragSuppressClick = 'false';\n return;\n }\n\n setWidgetOpen(!widgetContainer.classList.contains('open'));\n });\n }\n\n if (closeButton) {\n closeButton.addEventListener('click', function () {\n setWidgetOpen(false);\n });\n }\n\n return widgetApp;\n }\n\n function initializeFromElement(element) {\n if (!element || element.dataset.coreAiChatWidgetInitialized === 'true') {\n return element ? element.__coreAIChatWidgetApp || null : null;\n }\n\n var jsonOptions = parseJsonAttribute(element, 'data-coreai-chat-widget-config', 'CoreAI chat widget config');\n var attributeOptions = buildOptionsFromDataAttributes(element);\n if (!jsonOptions && !attributeOptions) {\n return null;\n }\n\n var options = Object.assign({}, jsonOptions || {}, attributeOptions || {});\n\n var widgetApp = initialize(options);\n if (!widgetApp) {\n return null;\n }\n\n element.dataset.coreAiChatWidgetInitialized = 'true';\n element.__coreAIChatWidgetApp = widgetApp;\n\n return widgetApp;\n }\n\n function scanForAutoInitialization(root) {\n if (!root || typeof root.querySelectorAll !== 'function') {\n return;\n }\n\n if (typeof root.matches === 'function' && root.matches('[data-coreai-chat-widget-config],[data-coreai-chat-widget-container-selector]')) {\n initializeFromElement(root);\n }\n\n root.querySelectorAll('[data-coreai-chat-widget-config],[data-coreai-chat-widget-container-selector]').forEach(initializeFromElement);\n }\n\n function startAutoInitialization() {\n scanForAutoInitialization(document);\n\n if (typeof MutationObserver === 'undefined') {\n return;\n }\n\n var observer = new MutationObserver(function (mutations) {\n mutations.forEach(function (mutation) {\n mutation.addedNodes.forEach(function (node) {\n if (node && node.nodeType === 1) {\n scanForAutoInitialization(node);\n }\n });\n });\n });\n\n observer.observe(document.body, {\n childList: true,\n subtree: true,\n });\n }\n\n if (document.readyState === 'loading') {\n document.addEventListener('DOMContentLoaded', startAutoInitialization, { once: true });\n } else {\n startAutoInitialization();\n }\n\n return {\n initialize: initialize,\n initializeFromElement: initializeFromElement,\n };\n}();\n"],"names":[],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- function clampWidgetValue(e,t,i){return Math.min(Math.max(e,t),i)}window.coreAIChatWidgetBehavior=window.coreAIChatWidgetBehavior||function(){function e(e){if("number"==typeof e&&Number.isFinite(e))return e;if("string"!=typeof e)return null;var t=parseFloat(e);return Number.isFinite(t)?t:null}function t(t,i){if(t&&!t.widgetIsInitialized)if(i.widget.chatWidgetContainer)if(i.widget.chatWidgetStateName){var n=document.querySelector(i.widget.chatWidgetContainer);if(n){i.widget.chatHistorySection&&(t.chatHistorySection=document.querySelector(i.widget.chatHistorySection)),t.chatWidgetStateName=i.widget.chatWidgetStateName,t.chatWidgetStateSession=i.widget.chatWidgetStateName+"Session",t.chatWidgetStateDocuments=i.widget.chatWidgetStateName+"Documents",t.chatWidgetLayoutKey=i.widget.chatWidgetStateName+"Layout",t.widgetContainerElement=n,t.widgetToggleButtonElement=i.widget.toggleButtonSelector?document.querySelector(i.widget.toggleButtonSelector):null,t.widgetResetSizeButtonElement=i.widget.resetSizeButtonSelector?document.querySelector(i.widget.resetSizeButtonSelector):null,t.widgetDefaultWidth=e(i.widget.defaultWidth)||e(window.getComputedStyle(n).width)||380,t.widgetDefaultHeight=e(i.widget.defaultHeight)||e(window.getComputedStyle(n).height)||520,t.widgetIsInitialized=!0,t.clearStoredWidgetDocuments(),t.documents=[],i.widget.enableResizing&&(n.classList.add("ai-chat-widget-resizable"),n.style.minWidth=(e(i.widget.minWidth)||320)+"px",n.style.minHeight=(e(i.widget.minHeight)||420)+"px","undefined"!=typeof ResizeObserver&&(t.widgetResizeObserver=new ResizeObserver(function(){t.persistWidgetPanelSize(),t.constrainWidgetElementsToViewport(),t.updateWidgetResetSizeButtonVisibility()}),t.widgetResizeObserver.observe(n)));var o=i.widget.dragHandleSelector||".ai-chat-widget-header",a=n.querySelector(o);if(i.widget.enableDragging&&a&&(a.classList.add("ai-chat-widget-drag-handle"),n.classList.add("ai-chat-widget-draggable"),t.attachDraggableWidgetElement(n,a,"panel",!1)),i.widget.enableDragging&&t.widgetToggleButtonElement&&(t.widgetToggleButtonElement.classList.add("ai-chat-widget-draggable"),t.attachDraggableWidgetElement(t.widgetToggleButtonElement,t.widgetToggleButtonElement,"toggle",!0)),t.widgetResetSizeButtonElement&&t.widgetResetSizeButtonElement.addEventListener("click",function(e){e.preventDefault(),t.resetWidgetSize()}),t.restoreWidgetLayout(),t.widgetViewportResizeHandler||(t.widgetViewportResizeHandler=function(){i.widget.persistLayout?t.restoreWidgetLayout():t.constrainWidgetElementsToViewport(),t.updateWidgetResetSizeButtonVisibility()},window.addEventListener("resize",t.widgetViewportResizeHandler)),t.reloadCurrentSession(),i.widget.showHistoryButton&&t.chatHistorySection){var l=document.querySelector(i.widget.showHistoryButton);if(l&&l.addEventListener("click",function(){t.chatHistorySection.classList.toggle("show")}),i.widget.closeHistoryButton){var s=document.querySelector(i.widget.closeHistoryButton);s&&s.addEventListener("click",function(){t.showChatScreen()})}}if(i.widget.newChatButton){var r=document.querySelector(i.widget.newChatButton);r&&r.addEventListener("click",function(){t.resetSession(),t.showChatScreen()})}}}else console.error("The widget chatWidgetStateName is required.");else console.error("The widget chatWidgetContainer is required.")}function i(e){e&&(e.widgetResizeObserver&&(e.widgetResizeObserver.disconnect(),e.widgetResizeObserver=null),e.widgetViewportResizeHandler&&(window.removeEventListener("resize",e.widgetViewportResizeHandler),e.widgetViewportResizeHandler=null))}return{attach:function(t,i){t&&!t.__aiChatWidgetAttached&&(t.__aiChatWidgetAttached=!0,t.chatWidgetStateName=null,t.chatWidgetStateSession=null,t.chatWidgetStateDocuments=null,t.chatWidgetLayoutKey=null,t.chatHistorySection=null,t.widgetContainerElement=null,t.widgetToggleButtonElement=null,t.widgetResetSizeButtonElement=null,t.widgetResizeObserver=null,t.widgetViewportResizeHandler=null,t.widgetDefaultWidth=null,t.widgetDefaultHeight=null,t.widgetIsInitialized=!1,t.getStoredWidgetLayout=function(){if(!this.chatWidgetLayoutKey||!i.widget.persistLayout)return{};try{var e=localStorage.getItem(this.chatWidgetLayoutKey);return e&&JSON.parse(e)||{}}catch(e){return console.warn("Failed to read widget layout state.",e),{}}},t.saveStoredWidgetLayout=function(e){if(this.chatWidgetLayoutKey&&i.widget.persistLayout){var t=this.getStoredWidgetLayout(),n=Object.assign({},t);void 0!==e.panel&&(n.panel=Object.assign({},t.panel||{},e.panel||{})),void 0!==e.position&&(n.position=Object.assign({},t.position||{},e.position||{})),localStorage.setItem(this.chatWidgetLayoutKey,JSON.stringify(n))}},t.getElementSize=function(t,i,n){if(!t)return{width:i||0,height:n||0};var o=t.getBoundingClientRect(),a=window.getComputedStyle(t);return{width:Math.round(o.width||e(a.width)||i||0),height:Math.round(o.height||e(a.height)||n||0)}},t.getElementPosition=function(t){if(!t)return{left:0,top:0};var i=t.getBoundingClientRect(),n=window.getComputedStyle(t),o=e(t.style.left),a=e(t.style.top),l=e(n.left),s=e(n.top),r="none"===n.display;return{left:Math.round(r&&Number.isFinite(o)?o:i.left||o||l||0),top:Math.round(r&&Number.isFinite(a)?a:i.top||a||s||0)}},t.getAvailableWidgetPositionRange=function(e,t){return{padding:8,maxLeft:Math.max(8,window.innerWidth-e-8),maxTop:Math.max(8,window.innerHeight-t-8)}},t.createStoredPosition=function(e,t,i,n){var o=this.getAvailableWidgetPositionRange(i,n),a=Math.max(0,o.maxLeft-o.padding),l=Math.max(0,o.maxTop-o.padding);return{left:Math.round(e),top:Math.round(t),leftRatio:0===a?0:(e-o.padding)/a,topRatio:0===l?0:(t-o.padding)/l}},t.resolveStoredPosition=function(e,t,i){if(!e)return null;var n=this.getAvailableWidgetPositionRange(t,i),o=Number(e.left),a=Number(e.top),l=Number(e.leftRatio),s=Number(e.topRatio);return Number.isFinite(l)&&(o=n.padding+Math.max(0,n.maxLeft-n.padding)*l),Number.isFinite(s)&&(a=n.padding+Math.max(0,n.maxTop-n.padding)*s),Number.isFinite(o)&&Number.isFinite(a)?this.clampWidgetPosition(o,a,t,i):null},t.clampWidgetPosition=function(e,t,i,n){var o=this.getAvailableWidgetPositionRange(i,n);return{left:Math.round(clampWidgetValue(e,o.padding,o.maxLeft)),top:Math.round(clampWidgetValue(t,o.padding,o.maxTop))}},t.getStoredWidgetDocuments=function(){return this.clearStoredWidgetDocuments(),[]},t.saveStoredWidgetDocuments=function(){this.clearStoredWidgetDocuments()},t.clearStoredWidgetDocuments=function(){this.chatWidgetStateDocuments&&localStorage.removeItem(this.chatWidgetStateDocuments)},t.applyAbsolutePosition=function(e,t,i){e&&(e.style.left=t+"px",e.style.top=i+"px",e.style.right="auto",e.style.bottom="auto")},t.getWidgetDefaultSize=function(){return{width:this.widgetDefaultWidth||e(i.widget.defaultWidth)||380,height:this.widgetDefaultHeight||e(i.widget.defaultHeight)||520}},t.getWidgetToggleGap=function(){return 8},t.isWidgetPanelVisible=function(){if(!this.widgetContainerElement)return!1;var e=window.getComputedStyle(this.widgetContainerElement);return this.widgetContainerElement.classList.contains("open")&&"none"!==e.display},t.persistWidgetPanelPosition=function(){if(this.widgetContainerElement&&i.widget.persistLayout){var e=this.getWidgetDefaultSize(),t=this.getElementPosition(this.widgetContainerElement),n=this.getElementSize(this.widgetContainerElement,e.width,e.height),o=this.getElementSize(this.widgetToggleButtonElement,52,52),a=this.clampWidgetPosition(t.left+n.width-o.width,t.top+n.height+this.getWidgetToggleGap(),o.width,o.height);this.saveStoredWidgetLayout({position:this.createStoredPosition(a.left,a.top,o.width,o.height)})}},t.persistWidgetTogglePosition=function(){if(this.widgetToggleButtonElement&&i.widget.persistLayout){var e=this.getElementPosition(this.widgetToggleButtonElement),t=this.getElementSize(this.widgetToggleButtonElement,52,52);this.saveStoredWidgetLayout({position:this.createStoredPosition(e.left,e.top,t.width,t.height)})}},t.persistWidgetPanelSize=function(){if(this.widgetContainerElement&&i.widget.enableResizing&&i.widget.persistLayout){var e=this.getWidgetDefaultSize(),t=this.getElementSize(this.widgetContainerElement,e.width,e.height);this.saveStoredWidgetLayout({panel:{width:Math.abs(t.width-e.width)<=1?null:t.width,height:Math.abs(t.height-e.height)<=1?null:t.height}})}},t.syncTogglePositionToPanel=function(e){if(void 0===e&&(e=!0),this.widgetContainerElement&&this.widgetToggleButtonElement){var t=this.getWidgetDefaultSize(),n=this.getElementSize(this.widgetContainerElement,t.width,t.height),o=this.getElementSize(this.widgetToggleButtonElement,52,52),a=this.getElementPosition(this.widgetContainerElement),l=this.clampWidgetPosition(a.left+n.width-o.width,a.top+n.height+this.getWidgetToggleGap(),o.width,o.height);this.applyAbsolutePosition(this.widgetToggleButtonElement,l.left,l.top),e&&i.widget.persistLayout&&this.persistWidgetTogglePosition()}},t.syncPanelPositionToToggle=function(e){if(void 0===e&&(e=!0),this.widgetContainerElement&&this.widgetToggleButtonElement){var t=this.getWidgetDefaultSize(),n=this.getElementSize(this.widgetContainerElement,t.width,t.height),o=this.getElementSize(this.widgetToggleButtonElement,52,52),a=this.getElementPosition(this.widgetToggleButtonElement),l=this.clampWidgetPosition(a.left+o.width-n.width,a.top-n.height-this.getWidgetToggleGap(),n.width,n.height);this.applyAbsolutePosition(this.widgetContainerElement,l.left,l.top),e&&i.widget.persistLayout&&this.persistWidgetPanelPosition()}},t.updateWidgetResetSizeButtonVisibility=function(){if(this.widgetResetSizeButtonElement)if(i.widget.enableResizing&&this.widgetContainerElement){var e=this.getWidgetDefaultSize(),t=this.getElementSize(this.widgetContainerElement,e.width,e.height),n=Math.abs(t.width-e.width)>1||Math.abs(t.height-e.height)>1||!!this.widgetContainerElement.style.width||!!this.widgetContainerElement.style.height;this.widgetResetSizeButtonElement.classList.toggle("d-none",!n)}else this.widgetResetSizeButtonElement.classList.add("d-none")},t.resetWidgetSize=function(){this.widgetContainerElement&&i.widget.enableResizing&&(this.widgetContainerElement.style.removeProperty("width"),this.widgetContainerElement.style.removeProperty("height"),this.persistWidgetPanelSize(),this.constrainWidgetElementsToViewport(),this.updateWidgetResetSizeButtonVisibility())},t.restoreWidgetLayout=function(){var e=this.getStoredWidgetLayout();this.widgetContainerElement&&i.widget.enableResizing&&(Number.isFinite(e.panel&&e.panel.width)?this.widgetContainerElement.style.width=e.panel.width+"px":this.widgetContainerElement.style.removeProperty("width"),Number.isFinite(e.panel&&e.panel.height)?this.widgetContainerElement.style.height=e.panel.height+"px":this.widgetContainerElement.style.removeProperty("height"));var t=this.getElementSize(this.widgetToggleButtonElement,52,52),n=this.resolveStoredPosition(e.position,t.width,t.height);this.widgetToggleButtonElement&&i.widget.enableDragging&&n?(this.applyAbsolutePosition(this.widgetToggleButtonElement,n.left,n.top),this.syncPanelPositionToToggle(!1)):this.widgetToggleButtonElement&&i.widget.enableDragging&&Number.isFinite(e.toggle&&e.toggle.left)&&Number.isFinite(e.toggle&&e.toggle.top)?(this.applyAbsolutePosition(this.widgetToggleButtonElement,e.toggle.left,e.toggle.top),this.syncPanelPositionToToggle(!1)):this.widgetContainerElement&&i.widget.enableDragging&&Number.isFinite(e.panel&&e.panel.left)&&Number.isFinite(e.panel&&e.panel.top)&&(this.applyAbsolutePosition(this.widgetContainerElement,e.panel.left,e.panel.top),this.syncTogglePositionToPanel(!1)),this.constrainWidgetElementsToViewport(),this.updateWidgetResetSizeButtonVisibility()},t.attachDraggableWidgetElement=function(e,t,n,o){if(e&&t&&i.widget.enableDragging){var a=null,l=0,s=0,r=0,d=0,g=!1,c=this;t.addEventListener("pointerdown",function(i){if(0===i.button&&("panel"!==n||!i.target.closest("button, a, input, textarea, select, option, label"))){var o=e.getBoundingClientRect();l=i.clientX,s=i.clientY,r=o.left,d=o.top,g=!1,a=i.pointerId,e.classList.add("ai-chat-widget-dragging"),t.setPointerCapture&&t.setPointerCapture(i.pointerId),document.addEventListener("pointermove",h),document.addEventListener("pointerup",u),document.addEventListener("pointercancel",u),i.preventDefault()}})}function u(t){null!==a&&(t&&void 0!==t.pointerId&&t.pointerId!==a||(document.removeEventListener("pointermove",h),document.removeEventListener("pointerup",u),document.removeEventListener("pointercancel",u),e.classList.remove("ai-chat-widget-dragging"),a=null,g&&("panel"===n?(c.syncTogglePositionToPanel(!1),c.persistWidgetPanelPosition()):"toggle"===n&&(c.syncPanelPositionToToggle(!1),c.persistWidgetTogglePosition()),i.widget.persistLayout&&(c.persistWidgetPanelPosition(),c.persistWidgetTogglePosition()),o&&(e.dataset.dragSuppressClick="true",window.setTimeout(function(){"true"===e.dataset.dragSuppressClick&&(e.dataset.dragSuppressClick="false")},0)))))}function h(t){if(null!==a&&t.pointerId===a){var i=t.clientX-l,o=t.clientY-s;if(g||!(Math.hypot(i,o)<4)){g=!0;var u=c.getWidgetDefaultSize(),h=c.getElementSize(e,"panel"===n?u.width:52,"panel"===n?u.height:52),w=c.clampWidgetPosition(r+i,d+o,h.width,h.height);c.applyAbsolutePosition(e,w.left,w.top),"panel"===n?c.syncTogglePositionToPanel(!1):"toggle"===n&&c.syncPanelPositionToToggle(!1)}}}},t.constrainWidgetElementsToViewport=function(){if(this.widgetContainerElement&&this.widgetContainerElement.style.left&&this.isWidgetPanelVisible()){var e=this.getWidgetDefaultSize(),t=this.getElementSize(this.widgetContainerElement,e.width,e.height),n=this.getElementPosition(this.widgetContainerElement),o=this.clampWidgetPosition(n.left,n.top,t.width,t.height);this.applyAbsolutePosition(this.widgetContainerElement,o.left,o.top),this.syncTogglePositionToPanel(!1),i.widget.persistLayout&&(this.persistWidgetPanelPosition(),this.persistWidgetTogglePosition())}else if(this.widgetToggleButtonElement&&this.widgetToggleButtonElement.style.left){var a=this.getElementSize(this.widgetToggleButtonElement,52,52),l=this.getElementPosition(this.widgetToggleButtonElement),s=this.clampWidgetPosition(l.left,l.top,a.width,a.height);this.applyAbsolutePosition(this.widgetToggleButtonElement,s.left,s.top),this.syncPanelPositionToToggle(!1),i.widget.persistLayout&&(this.persistWidgetTogglePosition(),this.persistWidgetPanelPosition())}},t.showChatScreen=function(){this.chatHistorySection&&this.chatHistorySection.classList.remove("show")})},initialize:t,onMounted:t,resolveSessionId:function(e){return e&&e.widgetIsInitialized?localStorage.getItem(e.chatWidgetStateSession):null},onSessionInitialized:function(e,t){e&&e.widgetIsInitialized&&localStorage.setItem(e.chatWidgetStateSession,t)},onSessionReset:function(e){e&&e.widgetIsInitialized&&(localStorage.removeItem(e.chatWidgetStateSession),e.clearStoredWidgetDocuments())},onDocumentsChanged:function(e,t){e&&e.widgetIsInitialized&&e.saveStoredWidgetDocuments(t)},handleReceiveError:function(e){e&&e.widgetIsInitialized&&!e.isSessionStarted&&!e._attemptedSessionRecovery&&(e._attemptedSessionRecovery=!0,localStorage.removeItem(e.chatWidgetStateSession),e.clearStoredWidgetDocuments(),e.startNewSession())},dispose:i,onBeforeUnmount:i}}(),window.coreAIChatWidgetManager=window.coreAIChatWidgetManager||function(){function e(e,t){var i=e.getAttribute(t);return null===i||""===i?null:i}function t(e){if(null==e)return null;if("boolean"==typeof e)return e;var t=String(e).trim().toLowerCase();return"true"===t||"false"!==t&&null}function i(t,i,n){var o=e(t,i);if(!o)return null;try{return JSON.parse(o)}catch(e){return console.error("Failed to parse "+n+" JSON.",e),null}}function n(e){if(!e)return null;var t=e.chatConfig;if(!t&&e.configElementSelector){var n=document.querySelector(e.configElementSelector);t=n?i(n,"data-config","AI chat widget config"):null}if(!t)return null;if(e.messageTemplateSelector){var o=document.querySelector(e.messageTemplateSelector);o&&(t.messageTemplate=o.innerHTML)}if(e.indicatorTemplateSelector){var a=document.querySelector(e.indicatorTemplateSelector);a&&(t.indicatorTemplate=a.innerHTML)}var l=document.querySelector(e.shellSelector),s=document.querySelector(e.widgetContainerSelector),r=document.querySelector(e.toggleButtonSelector),d=document.querySelector(e.closeButtonSelector),g=e.inputSelector?document.querySelector(e.inputSelector):null,c=e.widgetStateName||t.widget.chatWidgetStateName,u=e.widgetOpenStateKey||c+"Open",h=c+"Layout",w=e.openStateValue||"open",m=e.closedStateValue||"closed";g&&e.profile&&e.profile.id&&g.setAttribute("data-profile-id",e.profile.id);try{var p=localStorage.getItem(h),f=p&&JSON.parse(p)||{},S=f.position||{},y=f.panel||{},v=Number(S.left),b=Number(S.top),W=localStorage.getItem(u)===w;if(l&&(l.dataset.deferReveal=W?"true":"false",l.dataset.initialOpen=W?"true":"false"),s&&r){var E=Number.isFinite(Number(y.width))?Number(y.width):Math.round(parseFloat(window.getComputedStyle(s).width)||380),P=Number.isFinite(Number(y.height))?Number(y.height):Math.round(parseFloat(window.getComputedStyle(s).height)||520),T=Math.max(8,window.innerWidth-52-8),C=Math.max(8,window.innerHeight-52-8);if(Number.isFinite(Number(S.leftRatio))&&(v=8+Math.max(0,T-8)*Number(S.leftRatio)),Number.isFinite(Number(S.topRatio))&&(b=8+Math.max(0,C-8)*Number(S.topRatio)),Number.isFinite(v)&&Number.isFinite(b)&&(v=Math.round(clampWidgetValue(v,8,T)),b=Math.round(clampWidgetValue(b,8,C))),Number.isFinite(v)&&Number.isFinite(b)){r.style.left=v+"px",r.style.top=b+"px",r.style.right="auto",r.style.bottom="auto";s.style.left=v+52-E+"px",s.style.top=b-P-8+"px",s.style.right="auto",s.style.bottom="auto"}}s&&(s.classList.remove("open"),s.style.display="none",s.setAttribute("aria-hidden","true")),r&&(r.innerHTML=W?e.openIconHtml:e.closedIconHtml)}catch(e){console.warn("Failed to restore widget layout before initialization.",e)}finally{l&&"true"!==l.dataset.deferReveal&&(l.style.visibility="")}var z=window.coreAIChatManager.initialize(t);function L(){l&&(l.style.visibility="",l.dataset.deferReveal="false")}function B(){z&&"function"==typeof z.syncPanelPositionToToggle&&z.syncPanelPositionToToggle(!1)}function R(){s&&s.querySelectorAll("[data-tts-message-index]").forEach(function(e){var t=Number(e.getAttribute("data-tts-message-index"))===z.ttsPlayingMessageIndex;e.classList.toggle("tts-playing",t),e.setAttribute("title",t?"Pause audio":"Read aloud")})}function N(){requestAnimationFrame(R)}function I(t){if(z){var i=s.classList.contains("open");t&&!i&&"function"==typeof z.syncPanelPositionToToggle?z.syncPanelPositionToToggle():!t&&i&&"function"==typeof z.syncTogglePositionToPanel&&z.syncTogglePositionToPanel()}s.classList.toggle("open",t),s.style.display=t?"flex":"none",s.setAttribute("aria-hidden",t?"false":"true"),r.innerHTML=t?e.openIconHtml:e.closedIconHtml,localStorage.setItem(u,t?w:m),t&&"function"==typeof window.renderPendingCharts&&setTimeout(function(){window.renderPendingCharts()},100)}!1!==e.applySessionProfilePatch&&window.crestAppsAIChat&&window.crestAppsAIChat.patchSessionProfileSync&&window.crestAppsAIChat.patchSessionProfileSync(z);var M=l&&"true"===l.dataset.initialOpen;return I(M),function(e){if(l&&"true"===l.dataset.deferReveal&&e){var t=!1,i=null;if("undefined"!=typeof ResizeObserver){var n=0,o=0,a=0;(i=new ResizeObserver(function(e){var t=e&&e[0];if(t){var i=Math.round(t.contentRect.width),l=Math.round(t.contentRect.height);i&&l&&(B(),i===n&&l===o?a++:(n=i,o=l,a=0),a>=1&&r())}})).observe(s),window.setTimeout(r,150)}else window.setTimeout(r,0)}else L();function r(){t||(t=!0,i&&i.disconnect(),requestAnimationFrame(function(){B(),requestAnimationFrame(function(){L()})}))}}(M),z&&"function"==typeof z.$watch&&z.$watch("ttsPlayingMessageIndex",function(){N()}),N(),r&&r.addEventListener("click",function(){"true"!==r.dataset.dragSuppressClick?I(!s.classList.contains("open")):r.dataset.dragSuppressClick="false"}),d&&d.addEventListener("click",function(){I(!1)}),z}function o(o){if(!o||"true"===o.dataset.coreAiChatWidgetInitialized)return o&&o.__coreAIChatWidgetApp||null;var a=i(o,"data-coreai-chat-widget-config","CoreAI chat widget config"),l=function(i){var n=e(i,"data-coreai-chat-widget-container-selector");if(!n)return null;var o=null;window.coreAIChatManager&&"function"==typeof window.coreAIChatManager.buildConfigFromElement&&(o=window.coreAIChatManager.buildConfigFromElement(i,{allowWidgetHost:!0}));var a=e(i,"data-coreai-chat-widget-profile-id"),l=e(i,"data-coreai-chat-widget-profile-name"),s=e(i,"data-coreai-chat-widget-profile-display-text"),r=e(i,"data-coreai-chat-widget-profile-welcome-message"),d=e(i,"data-coreai-chat-widget-profile-initial-prompt"),g=e(i,"data-coreai-chat-widget-profile-chat-mode"),c=e(i,"data-coreai-chat-widget-profile-tts-voice-name"),u=e(i,"data-coreai-chat-widget-profile-realtime-voice-name"),h=t(e(i,"data-coreai-chat-widget-profile-enable-session-metrics")),w=t(e(i,"data-coreai-chat-widget-profile-allow-session-documents")),m=null;(a||l||s||r||g||c||u||null!==h||null!==w)&&(m={id:a,name:l,displayText:s,welcomeMessage:r,initialPrompt:d,chatMode:g,ttsVoiceName:c,realtimeVoiceName:u,enableSessionMetrics:!0===h,allowSessionDocuments:!0===w});var p=t(e(i,"data-coreai-chat-widget-enable-dragging")),f=t(e(i,"data-coreai-chat-widget-enable-resizing")),S=t(e(i,"data-coreai-chat-widget-persist-layout"));return{shellSelector:e(i,"data-coreai-chat-widget-shell-selector"),widgetContainerSelector:n,toggleButtonSelector:e(i,"data-coreai-chat-widget-toggle-button-selector"),closeButtonSelector:e(i,"data-coreai-chat-widget-close-button-selector"),inputSelector:e(i,"data-coreai-chat-widget-input-selector"),messageTemplateSelector:e(i,"data-coreai-chat-widget-message-template-selector"),indicatorTemplateSelector:e(i,"data-coreai-chat-widget-indicator-template-selector"),profile:m,widgetStateName:e(i,"data-coreai-chat-widget-state-name"),openStateValue:e(i,"data-coreai-chat-widget-open-state-value"),closedStateValue:e(i,"data-coreai-chat-widget-closed-state-value"),openIconHtml:e(i,"data-coreai-chat-widget-open-icon-html"),closedIconHtml:e(i,"data-coreai-chat-widget-closed-icon-html"),chatConfig:o?Object.assign({},o,{initialPrompt:d||o.initialPrompt,realtimeVoiceName:u||o.realtimeVoiceName,widget:Object.assign({},o.widget||{},{chatWidgetContainer:n,chatWidgetStateName:e(i,"data-coreai-chat-widget-state-name"),newChatButton:e(i,"data-coreai-chat-widget-new-chat-button-selector"),toggleButtonSelector:e(i,"data-coreai-chat-widget-toggle-button-selector"),resetSizeButtonSelector:e(i,"data-coreai-chat-widget-reset-size-button-selector"),dragHandleSelector:e(i,"data-coreai-chat-widget-drag-handle-selector"),enableDragging:null===p?void 0:p,enableResizing:null===f?void 0:f,persistLayout:null===S?void 0:S})}):null}}(o);if(!a&&!l)return null;var s=n(Object.assign({},a||{},l||{}));return s?(o.dataset.coreAiChatWidgetInitialized="true",o.__coreAIChatWidgetApp=s,s):null}function a(e){e&&"function"==typeof e.querySelectorAll&&("function"==typeof e.matches&&e.matches("[data-coreai-chat-widget-config],[data-coreai-chat-widget-container-selector]")&&o(e),e.querySelectorAll("[data-coreai-chat-widget-config],[data-coreai-chat-widget-container-selector]").forEach(o))}function l(){(a(document),"undefined"!=typeof MutationObserver)&&new MutationObserver(function(e){e.forEach(function(e){e.addedNodes.forEach(function(e){e&&1===e.nodeType&&a(e)})})}).observe(document.body,{childList:!0,subtree:!0})}return"loading"===document.readyState?document.addEventListener("DOMContentLoaded",l,{once:!0}):l(),{initialize:n,initializeFromElement:o}}();
1
+ (function(){function e(e,t,n){return Math.min(Math.max(e,t),n)}window.coreAIChatWidgetBehavior=window.coreAIChatWidgetBehavior||function(){function t(e){if(typeof e==`number`&&Number.isFinite(e))return e;if(typeof e!=`string`)return null;var t=parseFloat(e);return Number.isFinite(t)?t:null}function n(n,r){n&&!n.__aiChatWidgetAttached&&(n.__aiChatWidgetAttached=!0,n.chatWidgetStateName=null,n.chatWidgetStateSession=null,n.chatWidgetStateDocuments=null,n.chatWidgetLayoutKey=null,n.chatHistorySection=null,n.widgetContainerElement=null,n.widgetToggleButtonElement=null,n.widgetResetSizeButtonElement=null,n.widgetResizeObserver=null,n.widgetViewportResizeHandler=null,n.widgetDefaultWidth=null,n.widgetDefaultHeight=null,n.widgetIsInitialized=!1,n.getStoredWidgetLayout=function(){if(!this.chatWidgetLayoutKey||!r.widget.persistLayout)return{};try{var e=localStorage.getItem(this.chatWidgetLayoutKey);return e&&JSON.parse(e)||{}}catch(e){return console.warn(`Failed to read widget layout state.`,e),{}}},n.saveStoredWidgetLayout=function(e){if(this.chatWidgetLayoutKey&&r.widget.persistLayout){var t=this.getStoredWidgetLayout(),n=Object.assign({},t);e.panel!==void 0&&(n.panel=Object.assign({},t.panel||{},e.panel||{})),e.position!==void 0&&(n.position=Object.assign({},t.position||{},e.position||{})),localStorage.setItem(this.chatWidgetLayoutKey,JSON.stringify(n))}},n.getElementSize=function(e,n,r){if(!e)return{width:n||0,height:r||0};var i=e.getBoundingClientRect(),a=window.getComputedStyle(e);return{width:Math.round(i.width||t(a.width)||n||0),height:Math.round(i.height||t(a.height)||r||0)}},n.getElementPosition=function(e){if(!e)return{left:0,top:0};var n=e.getBoundingClientRect(),r=window.getComputedStyle(e),i=t(e.style.left),a=t(e.style.top),o=t(r.left),s=t(r.top),c=r.display===`none`;return{left:Math.round(c&&Number.isFinite(i)?i:n.left||i||o||0),top:Math.round(c&&Number.isFinite(a)?a:n.top||a||s||0)}},n.getAvailableWidgetPositionRange=function(e,t){var n=8;return{padding:n,maxLeft:Math.max(n,window.innerWidth-e-n),maxTop:Math.max(n,window.innerHeight-t-n)}},n.createStoredPosition=function(e,t,n,r){var i=this.getAvailableWidgetPositionRange(n,r),a=Math.max(0,i.maxLeft-i.padding),o=Math.max(0,i.maxTop-i.padding);return{left:Math.round(e),top:Math.round(t),leftRatio:a===0?0:(e-i.padding)/a,topRatio:o===0?0:(t-i.padding)/o}},n.resolveStoredPosition=function(e,t,n){if(!e)return null;var r=this.getAvailableWidgetPositionRange(t,n),i=Number(e.left),a=Number(e.top),o=Number(e.leftRatio),s=Number(e.topRatio);return Number.isFinite(o)&&(i=r.padding+Math.max(0,r.maxLeft-r.padding)*o),Number.isFinite(s)&&(a=r.padding+Math.max(0,r.maxTop-r.padding)*s),!Number.isFinite(i)||!Number.isFinite(a)?null:this.clampWidgetPosition(i,a,t,n)},n.clampWidgetPosition=function(t,n,r,i){var a=this.getAvailableWidgetPositionRange(r,i);return{left:Math.round(e(t,a.padding,a.maxLeft)),top:Math.round(e(n,a.padding,a.maxTop))}},n.getStoredWidgetDocuments=function(){return this.clearStoredWidgetDocuments(),[]},n.saveStoredWidgetDocuments=function(){this.clearStoredWidgetDocuments()},n.clearStoredWidgetDocuments=function(){this.chatWidgetStateDocuments&&localStorage.removeItem(this.chatWidgetStateDocuments)},n.applyAbsolutePosition=function(e,t,n){e&&(e.style.left=t+`px`,e.style.top=n+`px`,e.style.right=`auto`,e.style.bottom=`auto`)},n.getWidgetDefaultSize=function(){return{width:this.widgetDefaultWidth||t(r.widget.defaultWidth)||380,height:this.widgetDefaultHeight||t(r.widget.defaultHeight)||520}},n.getWidgetToggleGap=function(){return 8},n.isWidgetPanelVisible=function(){if(!this.widgetContainerElement)return!1;var e=window.getComputedStyle(this.widgetContainerElement);return this.widgetContainerElement.classList.contains(`open`)&&e.display!==`none`},n.persistWidgetPanelPosition=function(){if(this.widgetContainerElement&&r.widget.persistLayout){var e=this.getWidgetDefaultSize(),t=this.getElementPosition(this.widgetContainerElement),n=this.getElementSize(this.widgetContainerElement,e.width,e.height),i=this.getElementSize(this.widgetToggleButtonElement,52,52),a=this.clampWidgetPosition(t.left+n.width-i.width,t.top+n.height+this.getWidgetToggleGap(),i.width,i.height);this.saveStoredWidgetLayout({position:this.createStoredPosition(a.left,a.top,i.width,i.height)})}},n.persistWidgetTogglePosition=function(){if(this.widgetToggleButtonElement&&r.widget.persistLayout){var e=this.getElementPosition(this.widgetToggleButtonElement),t=this.getElementSize(this.widgetToggleButtonElement,52,52);this.saveStoredWidgetLayout({position:this.createStoredPosition(e.left,e.top,t.width,t.height)})}},n.persistWidgetPanelSize=function(){if(this.widgetContainerElement&&r.widget.enableResizing&&r.widget.persistLayout){var e=this.getWidgetDefaultSize(),t=this.getElementSize(this.widgetContainerElement,e.width,e.height);this.saveStoredWidgetLayout({panel:{width:Math.abs(t.width-e.width)<=1?null:t.width,height:Math.abs(t.height-e.height)<=1?null:t.height}})}},n.syncTogglePositionToPanel=function(e){if(e===void 0&&(e=!0),this.widgetContainerElement&&this.widgetToggleButtonElement){var t=this.getWidgetDefaultSize(),n=this.getElementSize(this.widgetContainerElement,t.width,t.height),i=this.getElementSize(this.widgetToggleButtonElement,52,52),a=this.getElementPosition(this.widgetContainerElement),o=this.clampWidgetPosition(a.left+n.width-i.width,a.top+n.height+this.getWidgetToggleGap(),i.width,i.height);this.applyAbsolutePosition(this.widgetToggleButtonElement,o.left,o.top),e&&r.widget.persistLayout&&this.persistWidgetTogglePosition()}},n.syncPanelPositionToToggle=function(e){if(e===void 0&&(e=!0),this.widgetContainerElement&&this.widgetToggleButtonElement){var t=this.getWidgetDefaultSize(),n=this.getElementSize(this.widgetContainerElement,t.width,t.height),i=this.getElementSize(this.widgetToggleButtonElement,52,52),a=this.getElementPosition(this.widgetToggleButtonElement),o=this.clampWidgetPosition(a.left+i.width-n.width,a.top-n.height-this.getWidgetToggleGap(),n.width,n.height);this.applyAbsolutePosition(this.widgetContainerElement,o.left,o.top),e&&r.widget.persistLayout&&this.persistWidgetPanelPosition()}},n.updateWidgetResetSizeButtonVisibility=function(){if(this.widgetResetSizeButtonElement){if(!r.widget.enableResizing||!this.widgetContainerElement)this.widgetResetSizeButtonElement.classList.add(`d-none`);else{var e=this.getWidgetDefaultSize(),t=this.getElementSize(this.widgetContainerElement,e.width,e.height),n=Math.abs(t.width-e.width)>1||Math.abs(t.height-e.height)>1||!!this.widgetContainerElement.style.width||!!this.widgetContainerElement.style.height;this.widgetResetSizeButtonElement.classList.toggle(`d-none`,!n)}}},n.resetWidgetSize=function(){this.widgetContainerElement&&r.widget.enableResizing&&(this.widgetContainerElement.style.removeProperty(`width`),this.widgetContainerElement.style.removeProperty(`height`),this.persistWidgetPanelSize(),this.constrainWidgetElementsToViewport(),this.updateWidgetResetSizeButtonVisibility())},n.restoreWidgetLayout=function(){var e=this.getStoredWidgetLayout();this.widgetContainerElement&&r.widget.enableResizing&&(Number.isFinite(e.panel&&e.panel.width)?this.widgetContainerElement.style.width=e.panel.width+`px`:this.widgetContainerElement.style.removeProperty(`width`),Number.isFinite(e.panel&&e.panel.height)?this.widgetContainerElement.style.height=e.panel.height+`px`:this.widgetContainerElement.style.removeProperty(`height`));var t=this.getElementSize(this.widgetToggleButtonElement,52,52),n=this.resolveStoredPosition(e.position,t.width,t.height);this.widgetToggleButtonElement&&r.widget.enableDragging&&n?(this.applyAbsolutePosition(this.widgetToggleButtonElement,n.left,n.top),this.syncPanelPositionToToggle(!1)):this.widgetToggleButtonElement&&r.widget.enableDragging&&Number.isFinite(e.toggle&&e.toggle.left)&&Number.isFinite(e.toggle&&e.toggle.top)?(this.applyAbsolutePosition(this.widgetToggleButtonElement,e.toggle.left,e.toggle.top),this.syncPanelPositionToToggle(!1)):this.widgetContainerElement&&r.widget.enableDragging&&Number.isFinite(e.panel&&e.panel.left)&&Number.isFinite(e.panel&&e.panel.top)&&(this.applyAbsolutePosition(this.widgetContainerElement,e.panel.left,e.panel.top),this.syncTogglePositionToPanel(!1)),this.constrainWidgetElementsToViewport(),this.updateWidgetResetSizeButtonVisibility()},n.attachDraggableWidgetElement=function(e,t,n,i){if(!e||!t||!r.widget.enableDragging)return;var a=null,o=0,s=0,c=0,l=0,u=!1,d=4,f=`button, a, input, textarea, select, option, label`,p=this;function m(t){a!==null&&(t&&t.pointerId!==void 0&&t.pointerId!==a||(document.removeEventListener(`pointermove`,h),document.removeEventListener(`pointerup`,m),document.removeEventListener(`pointercancel`,m),e.classList.remove(`ai-chat-widget-dragging`),a=null,u&&(n===`panel`?(p.syncTogglePositionToPanel(!1),p.persistWidgetPanelPosition()):n===`toggle`&&(p.syncPanelPositionToToggle(!1),p.persistWidgetTogglePosition()),r.widget.persistLayout&&(p.persistWidgetPanelPosition(),p.persistWidgetTogglePosition()),i&&(e.dataset.dragSuppressClick=`true`,window.setTimeout(function(){e.dataset.dragSuppressClick===`true`&&(e.dataset.dragSuppressClick=`false`)},0)))))}function h(t){if(a!==null&&t.pointerId===a){var r=t.clientX-o,i=t.clientY-s;if(!(!u&&Math.hypot(r,i)<d)){u=!0;var f=p.getWidgetDefaultSize(),m=p.getElementSize(e,n===`panel`?f.width:52,n===`panel`?f.height:52),h=p.clampWidgetPosition(c+r,l+i,m.width,m.height);p.applyAbsolutePosition(e,h.left,h.top),n===`panel`?p.syncTogglePositionToPanel(!1):n===`toggle`&&p.syncPanelPositionToToggle(!1)}}}t.addEventListener(`pointerdown`,function(r){if(r.button===0&&!(n===`panel`&&r.target.closest(f))){var i=e.getBoundingClientRect();o=r.clientX,s=r.clientY,c=i.left,l=i.top,u=!1,a=r.pointerId,e.classList.add(`ai-chat-widget-dragging`),t.setPointerCapture&&t.setPointerCapture(r.pointerId),document.addEventListener(`pointermove`,h),document.addEventListener(`pointerup`,m),document.addEventListener(`pointercancel`,m),r.preventDefault()}})},n.constrainWidgetElementsToViewport=function(){if(this.widgetContainerElement&&this.widgetContainerElement.style.left&&this.isWidgetPanelVisible()){var e=this.getWidgetDefaultSize(),t=this.getElementSize(this.widgetContainerElement,e.width,e.height),n=this.getElementPosition(this.widgetContainerElement),i=this.clampWidgetPosition(n.left,n.top,t.width,t.height);this.applyAbsolutePosition(this.widgetContainerElement,i.left,i.top),this.syncTogglePositionToPanel(!1),r.widget.persistLayout&&(this.persistWidgetPanelPosition(),this.persistWidgetTogglePosition())}else if(this.widgetToggleButtonElement&&this.widgetToggleButtonElement.style.left){var a=this.getElementSize(this.widgetToggleButtonElement,52,52),o=this.getElementPosition(this.widgetToggleButtonElement),s=this.clampWidgetPosition(o.left,o.top,a.width,a.height);this.applyAbsolutePosition(this.widgetToggleButtonElement,s.left,s.top),this.syncPanelPositionToToggle(!1),r.widget.persistLayout&&(this.persistWidgetTogglePosition(),this.persistWidgetPanelPosition())}},n.showChatScreen=function(){this.chatHistorySection&&this.chatHistorySection.classList.remove(`show`)})}function r(e,n){if(e&&!e.widgetIsInitialized){if(!n.widget.chatWidgetContainer)console.error(`The widget chatWidgetContainer is required.`);else if(!n.widget.chatWidgetStateName)console.error(`The widget chatWidgetStateName is required.`);else{var r=document.querySelector(n.widget.chatWidgetContainer);if(r){n.widget.chatHistorySection&&(e.chatHistorySection=document.querySelector(n.widget.chatHistorySection)),e.chatWidgetStateName=n.widget.chatWidgetStateName,e.chatWidgetStateSession=n.widget.chatWidgetStateName+`Session`,e.chatWidgetStateDocuments=n.widget.chatWidgetStateName+`Documents`,e.chatWidgetLayoutKey=n.widget.chatWidgetStateName+`Layout`,e.widgetContainerElement=r,e.widgetToggleButtonElement=n.widget.toggleButtonSelector?document.querySelector(n.widget.toggleButtonSelector):null,e.widgetResetSizeButtonElement=n.widget.resetSizeButtonSelector?document.querySelector(n.widget.resetSizeButtonSelector):null,e.widgetDefaultWidth=t(n.widget.defaultWidth)||t(window.getComputedStyle(r).width)||380,e.widgetDefaultHeight=t(n.widget.defaultHeight)||t(window.getComputedStyle(r).height)||520,e.widgetIsInitialized=!0,e.clearStoredWidgetDocuments(),e.documents=[],n.widget.enableResizing&&(r.classList.add(`ai-chat-widget-resizable`),r.style.minWidth=(t(n.widget.minWidth)||320)+`px`,r.style.minHeight=(t(n.widget.minHeight)||420)+`px`,typeof ResizeObserver<`u`&&(e.widgetResizeObserver=new ResizeObserver(function(){e.persistWidgetPanelSize(),e.constrainWidgetElementsToViewport(),e.updateWidgetResetSizeButtonVisibility()}),e.widgetResizeObserver.observe(r)));var i=n.widget.dragHandleSelector||`.ai-chat-widget-header`,a=r.querySelector(i);if(n.widget.enableDragging&&a&&(a.classList.add(`ai-chat-widget-drag-handle`),r.classList.add(`ai-chat-widget-draggable`),e.attachDraggableWidgetElement(r,a,`panel`,!1)),n.widget.enableDragging&&e.widgetToggleButtonElement&&(e.widgetToggleButtonElement.classList.add(`ai-chat-widget-draggable`),e.attachDraggableWidgetElement(e.widgetToggleButtonElement,e.widgetToggleButtonElement,`toggle`,!0)),e.widgetResetSizeButtonElement&&e.widgetResetSizeButtonElement.addEventListener(`click`,function(t){t.preventDefault(),e.resetWidgetSize()}),e.restoreWidgetLayout(),e.widgetViewportResizeHandler||(e.widgetViewportResizeHandler=function(){n.widget.persistLayout?e.restoreWidgetLayout():e.constrainWidgetElementsToViewport(),e.updateWidgetResetSizeButtonVisibility()},window.addEventListener(`resize`,e.widgetViewportResizeHandler)),e.reloadCurrentSession(),n.widget.showHistoryButton&&e.chatHistorySection){var o=document.querySelector(n.widget.showHistoryButton);if(o&&o.addEventListener(`click`,function(){e.chatHistorySection.classList.toggle(`show`)}),n.widget.closeHistoryButton){var s=document.querySelector(n.widget.closeHistoryButton);s&&s.addEventListener(`click`,function(){e.showChatScreen()})}}if(n.widget.newChatButton){var c=document.querySelector(n.widget.newChatButton);c&&c.addEventListener(`click`,function(){e.resetSession(),e.showChatScreen()})}}}}}function i(e){return!e||!e.widgetIsInitialized?null:localStorage.getItem(e.chatWidgetStateSession)}function a(e,t){e&&e.widgetIsInitialized&&localStorage.setItem(e.chatWidgetStateSession,t)}function o(e){e&&e.widgetIsInitialized&&(localStorage.removeItem(e.chatWidgetStateSession),e.clearStoredWidgetDocuments())}function s(e,t){e&&e.widgetIsInitialized&&e.saveStoredWidgetDocuments(t)}function c(e){e&&e.widgetIsInitialized&&!e.isSessionStarted&&!e._attemptedSessionRecovery&&(e._attemptedSessionRecovery=!0,localStorage.removeItem(e.chatWidgetStateSession),e.clearStoredWidgetDocuments(),e.startNewSession())}function l(e){e&&(e.widgetResizeObserver&&=(e.widgetResizeObserver.disconnect(),null),e.widgetViewportResizeHandler&&=(window.removeEventListener(`resize`,e.widgetViewportResizeHandler),null))}return{attach:n,initialize:r,onMounted:r,resolveSessionId:i,onSessionInitialized:a,onSessionReset:o,onDocumentsChanged:s,handleReceiveError:c,dispose:l,onBeforeUnmount:l}}(),window.coreAIChatWidgetManager=window.coreAIChatWidgetManager||function(){function t(e,t){var n=e.getAttribute(t);return n===null||n===``?null:n}function n(e){if(e==null)return null;if(typeof e==`boolean`)return e;var t=String(e).trim().toLowerCase();return t===`true`||t!==`false`&&null}function r(e,n,r){var i=t(e,n);if(!i)return null;try{return JSON.parse(i)}catch(e){return console.error(`Failed to parse `+r+` JSON.`,e),null}}function i(e){var r=t(e,`data-coreai-chat-widget-container-selector`);if(!r)return null;var i=null;window.coreAIChatManager&&typeof window.coreAIChatManager.buildConfigFromElement==`function`&&(i=window.coreAIChatManager.buildConfigFromElement(e,{allowWidgetHost:!0}));var a=t(e,`data-coreai-chat-widget-profile-id`),o=t(e,`data-coreai-chat-widget-profile-name`),s=t(e,`data-coreai-chat-widget-profile-display-text`),c=t(e,`data-coreai-chat-widget-profile-welcome-message`),l=t(e,`data-coreai-chat-widget-profile-initial-prompt`),u=t(e,`data-coreai-chat-widget-profile-chat-mode`),d=t(e,`data-coreai-chat-widget-profile-tts-voice-name`),f=t(e,`data-coreai-chat-widget-profile-realtime-voice-name`),p=n(t(e,`data-coreai-chat-widget-profile-enable-session-metrics`)),m=n(t(e,`data-coreai-chat-widget-profile-allow-session-documents`)),h=null;(a||o||s||c||u||d||f||p!==null||m!==null)&&(h={id:a,name:o,displayText:s,welcomeMessage:c,initialPrompt:l,chatMode:u,ttsVoiceName:d,realtimeVoiceName:f,enableSessionMetrics:p===!0,allowSessionDocuments:m===!0});var g=n(t(e,`data-coreai-chat-widget-enable-dragging`)),_=n(t(e,`data-coreai-chat-widget-enable-resizing`)),v=n(t(e,`data-coreai-chat-widget-persist-layout`));return{shellSelector:t(e,`data-coreai-chat-widget-shell-selector`),widgetContainerSelector:r,toggleButtonSelector:t(e,`data-coreai-chat-widget-toggle-button-selector`),closeButtonSelector:t(e,`data-coreai-chat-widget-close-button-selector`),inputSelector:t(e,`data-coreai-chat-widget-input-selector`),messageTemplateSelector:t(e,`data-coreai-chat-widget-message-template-selector`),indicatorTemplateSelector:t(e,`data-coreai-chat-widget-indicator-template-selector`),profile:h,widgetStateName:t(e,`data-coreai-chat-widget-state-name`),openStateValue:t(e,`data-coreai-chat-widget-open-state-value`),closedStateValue:t(e,`data-coreai-chat-widget-closed-state-value`),openIconHtml:t(e,`data-coreai-chat-widget-open-icon-html`),closedIconHtml:t(e,`data-coreai-chat-widget-closed-icon-html`),chatConfig:i?Object.assign({},i,{initialPrompt:l||i.initialPrompt,realtimeVoiceName:f||i.realtimeVoiceName,widget:Object.assign({},i.widget||{},{chatWidgetContainer:r,chatWidgetStateName:t(e,`data-coreai-chat-widget-state-name`),newChatButton:t(e,`data-coreai-chat-widget-new-chat-button-selector`),toggleButtonSelector:t(e,`data-coreai-chat-widget-toggle-button-selector`),resetSizeButtonSelector:t(e,`data-coreai-chat-widget-reset-size-button-selector`),dragHandleSelector:t(e,`data-coreai-chat-widget-drag-handle-selector`),enableDragging:g===null?void 0:g,enableResizing:_===null?void 0:_,persistLayout:v===null?void 0:v})}):null}}function a(t){if(!t)return null;var n=t.chatConfig;if(!n&&t.configElementSelector){var i=document.querySelector(t.configElementSelector);n=i?r(i,`data-config`,`AI chat widget config`):null}if(!n)return null;if(t.messageTemplateSelector){var a=document.querySelector(t.messageTemplateSelector);a&&(n.messageTemplate=a.innerHTML)}if(t.indicatorTemplateSelector){var o=document.querySelector(t.indicatorTemplateSelector);o&&(n.indicatorTemplate=o.innerHTML)}var s=document.querySelector(t.shellSelector),c=document.querySelector(t.widgetContainerSelector),l=document.querySelector(t.toggleButtonSelector),u=document.querySelector(t.closeButtonSelector),d=t.inputSelector?document.querySelector(t.inputSelector):null,f=t.widgetStateName||n.widget.chatWidgetStateName,p=t.widgetOpenStateKey||f+`Open`,m=f+`Layout`,h=t.openStateValue||`open`,g=t.closedStateValue||`closed`;d&&t.profile&&t.profile.id&&d.setAttribute(`data-profile-id`,t.profile.id);try{var _=localStorage.getItem(m),v=_&&JSON.parse(_)||{},y=v.position||{},b=v.panel||{},x=Number(y.left),S=Number(y.top),C=localStorage.getItem(p)===h,w=8;if(s&&(s.dataset.deferReveal=C?`true`:`false`,s.dataset.initialOpen=C?`true`:`false`),c&&l){var T=52,E=Number.isFinite(Number(b.width))?Number(b.width):Math.round(parseFloat(window.getComputedStyle(c).width)||380),D=Number.isFinite(Number(b.height))?Number(b.height):Math.round(parseFloat(window.getComputedStyle(c).height)||520),O=Math.max(w,window.innerWidth-T-w),k=Math.max(w,window.innerHeight-T-w);if(Number.isFinite(Number(y.leftRatio))&&(x=w+Math.max(0,O-w)*Number(y.leftRatio)),Number.isFinite(Number(y.topRatio))&&(S=w+Math.max(0,k-w)*Number(y.topRatio)),Number.isFinite(x)&&Number.isFinite(S)&&(x=Math.round(e(x,w,O)),S=Math.round(e(S,w,k))),Number.isFinite(x)&&Number.isFinite(S)){l.style.left=x+`px`,l.style.top=S+`px`,l.style.right=`auto`,l.style.bottom=`auto`;var A=8;c.style.left=x+T-E+`px`,c.style.top=S-D-A+`px`,c.style.right=`auto`,c.style.bottom=`auto`}}c&&(c.classList.remove(`open`),c.style.display=`none`,c.setAttribute(`aria-hidden`,`true`)),l&&(l.innerHTML=C?t.openIconHtml:t.closedIconHtml)}catch(e){console.warn(`Failed to restore widget layout before initialization.`,e)}finally{s&&s.dataset.deferReveal!==`true`&&(s.style.visibility=``)}var j=window.coreAIChatManager.initialize(n);t.applySessionProfilePatch!==!1&&window.crestAppsAIChat&&window.crestAppsAIChat.patchSessionProfileSync&&window.crestAppsAIChat.patchSessionProfileSync(j);function M(){s&&(s.style.visibility=``,s.dataset.deferReveal=`false`)}function N(){j&&typeof j.syncPanelPositionToToggle==`function`&&j.syncPanelPositionToToggle(!1)}function P(){c&&c.querySelectorAll(`[data-tts-message-index]`).forEach(function(e){var t=Number(e.getAttribute(`data-tts-message-index`))===j.ttsPlayingMessageIndex;e.classList.toggle(`tts-playing`,t),e.setAttribute(`title`,t?`Pause audio`:`Read aloud`)})}function F(){requestAnimationFrame(P)}function I(e){if(!s||s.dataset.deferReveal!==`true`||!e){M();return}var t=!1,n=null;function r(){t||(t=!0,n&&n.disconnect(),requestAnimationFrame(function(){N(),requestAnimationFrame(function(){M()})}))}if(typeof ResizeObserver>`u`)window.setTimeout(r,0);else{var i=0,a=0,o=0;n=new ResizeObserver(function(e){var t=e&&e[0];if(t){var n=Math.round(t.contentRect.width),s=Math.round(t.contentRect.height);n&&s&&(N(),n===i&&s===a?o++:(i=n,a=s,o=0),o>=1&&r())}}),n.observe(c),window.setTimeout(r,150)}}function L(e){if(j){var n=c.classList.contains(`open`);e&&!n&&typeof j.syncPanelPositionToToggle==`function`?j.syncPanelPositionToToggle():!e&&n&&typeof j.syncTogglePositionToPanel==`function`&&j.syncTogglePositionToPanel()}c.classList.toggle(`open`,e),c.style.display=e?`flex`:`none`,c.setAttribute(`aria-hidden`,e?`false`:`true`),l.innerHTML=e?t.openIconHtml:t.closedIconHtml,localStorage.setItem(p,e?h:g),e&&typeof window.renderPendingCharts==`function`&&setTimeout(function(){window.renderPendingCharts()},100)}var R=s&&s.dataset.initialOpen===`true`;return L(R),I(R),j&&typeof j.$watch==`function`&&j.$watch(`ttsPlayingMessageIndex`,function(){F()}),F(),l&&l.addEventListener(`click`,function(){l.dataset.dragSuppressClick===`true`?l.dataset.dragSuppressClick=`false`:L(!c.classList.contains(`open`))}),u&&u.addEventListener(`click`,function(){L(!1)}),j}function o(e){if(!e||e.dataset.coreAiChatWidgetInitialized===`true`)return e&&e.__coreAIChatWidgetApp||null;var t=r(e,`data-coreai-chat-widget-config`,`CoreAI chat widget config`),n=i(e);if(!t&&!n)return null;var o=a(Object.assign({},t||{},n||{}));return o?(e.dataset.coreAiChatWidgetInitialized=`true`,e.__coreAIChatWidgetApp=o,o):null}function s(e){e&&typeof e.querySelectorAll==`function`&&(typeof e.matches==`function`&&e.matches(`[data-coreai-chat-widget-config],[data-coreai-chat-widget-container-selector]`)&&o(e),e.querySelectorAll(`[data-coreai-chat-widget-config],[data-coreai-chat-widget-container-selector]`).forEach(o))}function c(){s(document),typeof MutationObserver<`u`&&new MutationObserver(function(e){e.forEach(function(e){e.addedNodes.forEach(function(e){e&&e.nodeType===1&&s(e)})})}).observe(document.body,{childList:!0,subtree:!0})}return document.readyState===`loading`?document.addEventListener(`DOMContentLoaded`,c,{once:!0}):c(),{initialize:a,initializeFromElement:o}}()})();
2
2
  //# sourceMappingURL=ai-chat-widget.min.js.map