@buni.ai/chatbot-core 1.0.2 → 1.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.esm.js CHANGED
@@ -39,6 +39,8 @@ class BuniChatWidget {
39
39
  const config = this.options.config || {};
40
40
  container.style.cssText = `
41
41
  position: fixed;
42
+ width: 0;
43
+ height: 0;
42
44
  pointer-events: none;
43
45
  z-index: 999999;
44
46
  ${this.getPositionStyles(config.position || "bottom-right")}
@@ -209,7 +211,8 @@ class BuniChatWidget {
209
211
  var _a;
210
212
  this.postMessageToWidget("hide");
211
213
  // If hideDefaultTrigger is enabled, completely hide the iframe
212
- if (((_a = this.options.config) === null || _a === void 0 ? void 0 : _a.hideDefaultTrigger) && this.widgetElement instanceof HTMLIFrameElement) {
214
+ if (((_a = this.options.config) === null || _a === void 0 ? void 0 : _a.hideDefaultTrigger) &&
215
+ this.widgetElement instanceof HTMLIFrameElement) {
213
216
  this.widgetElement.style.display = "none";
214
217
  }
215
218
  this.state.isOpen = false;
@@ -1 +1 @@
1
- {"version":3,"file":"index.esm.js","sources":["../src/widget.ts","../src/index.ts"],"sourcesContent":["import {\n BuniChatAPI,\n BuniChatOptions,\n BuniChatState,\n CustomerData,\n SessionVariables,\n} from \"./types\";\n\n// Core widget loader class\nexport class BuniChatWidget implements BuniChatAPI {\n private options!: BuniChatOptions;\n private state: BuniChatState;\n private eventListeners: Map<string, Function[]>;\n private widgetElement: HTMLElement | null;\n private customerData: CustomerData | null;\n private sessionVariables: SessionVariables | null;\n\n constructor() {\n this.state = {\n isOpen: false,\n isLoaded: false,\n isMinimized: false,\n unreadCount: 0,\n };\n this.eventListeners = new Map();\n this.widgetElement = null;\n this.customerData = null;\n this.sessionVariables = null;\n }\n\n async initialize(options: BuniChatOptions): Promise<void> {\n this.options = options;\n\n try {\n await this.loadWidget();\n this.state.isLoaded = true;\n this.emit(\"ready\", { timestamp: Date.now() });\n\n if (options.onReady) {\n options.onReady({ timestamp: Date.now() });\n }\n } catch (error) {\n const errorObj =\n error instanceof Error ? error : new Error(String(error));\n this.emit(\"error\", { error: errorObj, context: \"initialization\" });\n\n if (options.onError) {\n options.onError(errorObj);\n }\n throw errorObj;\n }\n }\n\n private async loadWidget(): Promise<void> {\n return new Promise((resolve, reject) => {\n // Create container div for proper positioning\n const container = document.createElement(\"div\");\n container.id = \"buni-chat-widget-container\";\n const config = this.options.config || {};\n \n container.style.cssText = `\n position: fixed;\n pointer-events: none;\n z-index: 999999;\n ${this.getPositionStyles(config.position || \"bottom-right\")}\n display: ${config.hideDefaultTrigger ? \"none\" : \"block\"};\n `;\n\n // Create iframe for secure embedding\n const iframe = document.createElement(\"iframe\");\n\n // Build URL with configuration parameters\n const params = new URLSearchParams({\n token: this.options.token,\n embedded: \"true\",\n theme: config.theme || \"light\",\n width: String(config.width || \"350px\"),\n height: String(config.height || \"650px\"),\n primaryColor: config.primaryColor || \"#795548\",\n secondaryColor: config.secondaryColor || \"#A67D67\",\n position: config.position || \"bottom-right\",\n showBranding: String(config.showBranding !== false),\n autoOpen: String(config.autoOpen === true),\n minimized: String(config.minimized === true),\n allowMinimize: String(config.allowMinimize !== false),\n showMinimize: String(config.showMinimize !== false),\n enableFileUpload: String(config.enableFileUpload === true),\n });\n\n // Add optional parameters\n if (config.customAvatar) params.set(\"customAvatar\", config.customAvatar);\n if (config.companyName) params.set(\"companyName\", config.companyName);\n if (config.welcomeMessage)\n params.set(\"welcomeMessage\", config.welcomeMessage);\n if (config.triggerText) params.set(\"triggerText\", config.triggerText);\n if (config.borderRadius) params.set(\"borderRadius\", config.borderRadius);\n\n iframe.src = `${this.getBaseUrl()}/embed/chat?${params.toString()}`;\n iframe.style.cssText = `\n position: relative;\n border: none;\n width: ${config.width || \"350px\"};\n height: ${config.height || \"650px\"};\n border-radius: 12px;\n transition: all 0.3s ease;\n pointer-events: auto;\n box-shadow: 0 4px 12px rgba(0,0,0,0.15);\n `;\n iframe.setAttribute(\"allow\", \"clipboard-write\");\n iframe.setAttribute(\"title\", \"BuniAI Chat Widget\");\n\n iframe.onload = () => {\n this.widgetElement = container;\n this.setupPostMessageAPI(iframe);\n resolve();\n };\n\n iframe.onerror = () => {\n reject(new Error(\"Failed to load BuniAI widget iframe\"));\n };\n\n container.appendChild(iframe);\n document.body.appendChild(container);\n });\n }\n\n private getPositionStyles(position: string): string {\n switch (position) {\n case \"bottom-right\":\n return \"bottom: 20px; right: 20px;\";\n case \"bottom-left\":\n return \"bottom: 20px; left: 20px;\";\n case \"top-right\":\n return \"top: 20px; right: 20px;\";\n case \"top-left\":\n return \"top: 20px; left: 20px;\";\n default:\n return \"bottom: 20px; right: 20px;\";\n }\n }\n\n private setupPostMessageAPI(iframe: HTMLIFrameElement): void {\n // Listen for messages from the iframe\n window.addEventListener(\"message\", (event) => {\n // Verify origin for security\n if (event.origin !== this.getBaseUrl()) {\n return;\n }\n\n const { type, data } = event.data;\n\n switch (type) {\n case \"ready\":\n this.state.isLoaded = true;\n this.emit(\"ready\", data);\n if (this.options.onReady) {\n this.options.onReady(data);\n }\n break;\n\n case \"visibility_changed\":\n this.state.isOpen = data.visibility === \"visible\";\n this.emit(\"visibility_changed\", data);\n if (this.options.onVisibilityChanged) {\n this.options.onVisibilityChanged(data);\n }\n break;\n\n case \"new_message\":\n if (data.isFromBot) {\n this.state.unreadCount++;\n }\n this.emit(\"new_message\", data);\n if (this.options.onNewMessage) {\n this.options.onNewMessage(data);\n }\n break;\n\n case \"minimized\":\n this.state.isMinimized = true;\n this.emit(\"minimized\", data);\n break;\n\n case \"maximized\":\n this.state.isMinimized = false;\n this.emit(\"maximized\", data);\n break;\n\n case \"customer_data_updated\":\n this.customerData = data;\n this.emit(\"customer_data_updated\", data);\n break;\n\n case \"session_updated\":\n this.sessionVariables = data.variables;\n this.emit(\"session_updated\", data);\n break;\n\n case \"error\":\n this.emit(\"error\", data);\n if (this.options.onError) {\n this.options.onError(data.error);\n }\n break;\n }\n });\n }\n\n private postMessageToWidget(type: string, data?: any): void {\n if (this.widgetElement && this.widgetElement instanceof HTMLIFrameElement) {\n this.widgetElement.contentWindow?.postMessage(\n { type, data },\n this.getBaseUrl()\n );\n }\n }\n\n private initializeWidgetAPI(): void {\n // Widget API is now handled via postMessage in setupPostMessageAPI\n // This method is kept for backward compatibility but no longer needed\n }\n\n private getBaseUrl(): string {\n // Return the base URL for the BuniAI platform\n return (globalThis as any).BUNI_API_URL || window.location.origin;\n }\n\n destroy(): void {\n this.postMessageToWidget(\"destroy\");\n\n if (this.widgetElement) {\n this.widgetElement.remove();\n this.widgetElement = null;\n }\n\n this.eventListeners.clear();\n this.state.isLoaded = false;\n this.customerData = null;\n this.sessionVariables = null;\n }\n\n show(): void {\n // Show the iframe if it was hidden (hideDefaultTrigger mode)\n if (this.widgetElement instanceof HTMLIFrameElement) {\n this.widgetElement.style.display = \"block\";\n }\n this.postMessageToWidget(\"show\");\n this.state.isOpen = true;\n this.state.unreadCount = 0;\n this.emit(\"visibility_changed\", { visibility: \"visible\" });\n }\n\n hide(): void {\n this.postMessageToWidget(\"hide\");\n // If hideDefaultTrigger is enabled, completely hide the iframe\n if (this.options.config?.hideDefaultTrigger && this.widgetElement instanceof HTMLIFrameElement) {\n this.widgetElement.style.display = \"none\";\n }\n this.state.isOpen = false;\n this.emit(\"visibility_changed\", { visibility: \"hidden\" });\n }\n\n toggle(): void {\n this.state.isOpen ? this.hide() : this.show();\n }\n\n minimize(): void {\n this.postMessageToWidget(\"minimize\");\n this.state.isMinimized = true;\n this.emit(\"minimized\", { timestamp: Date.now() });\n }\n\n maximize(): void {\n this.postMessageToWidget(\"maximize\");\n this.state.isMinimized = false;\n this.emit(\"maximized\", { timestamp: Date.now() });\n }\n\n setCustomerData(data: CustomerData): void {\n this.customerData = { ...this.customerData, ...data };\n this.postMessageToWidget(\"setCustomerData\", this.customerData);\n this.emit(\"customer_data_updated\", { data: this.customerData });\n }\n\n getCustomerData(): CustomerData | null {\n return this.customerData ? { ...this.customerData } : null;\n }\n\n setSessionVariables(variables: SessionVariables): void {\n this.sessionVariables = { ...this.sessionVariables, ...variables };\n this.postMessageToWidget(\"setSessionVariables\", this.sessionVariables);\n this.emit(\"session_updated\", { variables: this.sessionVariables });\n }\n\n getSessionVariables(): SessionVariables | null {\n return this.sessionVariables ? { ...this.sessionVariables } : null;\n }\n\n sendMessage(message: string): void {\n this.postMessageToWidget(\"sendMessage\", { message });\n\n const messageData = {\n message,\n isFromBot: false,\n timestamp: Date.now(),\n messageId: `msg_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`,\n };\n\n this.emit(\"new_message\", messageData);\n }\n\n clearChat(): void {\n this.postMessageToWidget(\"clearChat\");\n this.state.unreadCount = 0;\n }\n\n on(event: string, callback: Function): void {\n if (!this.eventListeners.has(event)) {\n this.eventListeners.set(event, []);\n }\n this.eventListeners.get(event)!.push(callback);\n }\n\n off(event: string, callback?: Function): void {\n const listeners = this.eventListeners.get(event);\n if (!listeners) return;\n\n if (callback) {\n const index = listeners.indexOf(callback);\n if (index > -1) {\n listeners.splice(index, 1);\n }\n } else {\n this.eventListeners.set(event, []);\n }\n }\n\n emit(event: string, data?: any): void {\n const listeners = this.eventListeners.get(event);\n if (listeners) {\n listeners.forEach((callback) => {\n try {\n callback(data);\n } catch (error) {\n console.error(`Error in event listener for ${event}:`, error);\n }\n });\n }\n }\n\n getState(): BuniChatState {\n return { ...this.state };\n }\n\n isReady(): boolean {\n return this.state.isLoaded;\n }\n}\n\n// Utility function - named export\nexport function createBuniChatWidget(options: BuniChatOptions): BuniChatWidget {\n const widget = new BuniChatWidget();\n widget.initialize(options);\n return widget;\n}\n\n// Default export - the main widget class\nexport default BuniChatWidget;\n\n// Global type declaration for the widget API\ndeclare global {\n interface Window {\n BuniChat?: {\n configure: (config: any) => void;\n show: () => void;\n hide: () => void;\n minimize: () => void;\n maximize: () => void;\n destroy: () => void;\n setCustomerData: (data: CustomerData) => void;\n setSessionVariables: (variables: SessionVariables) => void;\n sendMessage: (message: string) => void;\n clearChat: () => void;\n on: (event: string, callback: Function) => void;\n off: (event: string, callback?: Function) => void;\n };\n }\n}\n","// Main exports for @buni.ai/chatbot-core\n\n// Export all types\nexport * from \"./types\";\n\n// Export everything from widget\nexport * from \"./widget\";\n\n// Make BuniChatWidget the default export as well\nimport { BuniChatWidget } from \"./widget\";\nexport default BuniChatWidget;\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.esm.js","sources":["../src/widget.ts","../src/index.ts"],"sourcesContent":["import {\n BuniChatAPI,\n BuniChatOptions,\n BuniChatState,\n CustomerData,\n SessionVariables,\n} from \"./types\";\n\n// Core widget loader class\nexport class BuniChatWidget implements BuniChatAPI {\n private options!: BuniChatOptions;\n private state: BuniChatState;\n private eventListeners: Map<string, Function[]>;\n private widgetElement: HTMLElement | null;\n private customerData: CustomerData | null;\n private sessionVariables: SessionVariables | null;\n\n constructor() {\n this.state = {\n isOpen: false,\n isLoaded: false,\n isMinimized: false,\n unreadCount: 0,\n };\n this.eventListeners = new Map();\n this.widgetElement = null;\n this.customerData = null;\n this.sessionVariables = null;\n }\n\n async initialize(options: BuniChatOptions): Promise<void> {\n this.options = options;\n\n try {\n await this.loadWidget();\n this.state.isLoaded = true;\n this.emit(\"ready\", { timestamp: Date.now() });\n\n if (options.onReady) {\n options.onReady({ timestamp: Date.now() });\n }\n } catch (error) {\n const errorObj =\n error instanceof Error ? error : new Error(String(error));\n this.emit(\"error\", { error: errorObj, context: \"initialization\" });\n\n if (options.onError) {\n options.onError(errorObj);\n }\n throw errorObj;\n }\n }\n\n private async loadWidget(): Promise<void> {\n return new Promise((resolve, reject) => {\n // Create container div for proper positioning\n const container = document.createElement(\"div\");\n container.id = \"buni-chat-widget-container\";\n const config = this.options.config || {};\n\n container.style.cssText = `\n position: fixed;\n width: 0;\n height: 0;\n pointer-events: none;\n z-index: 999999;\n ${this.getPositionStyles(config.position || \"bottom-right\")}\n display: ${config.hideDefaultTrigger ? \"none\" : \"block\"};\n `;\n\n // Create iframe for secure embedding\n const iframe = document.createElement(\"iframe\");\n\n // Build URL with configuration parameters\n const params = new URLSearchParams({\n token: this.options.token,\n embedded: \"true\",\n theme: config.theme || \"light\",\n width: String(config.width || \"350px\"),\n height: String(config.height || \"650px\"),\n primaryColor: config.primaryColor || \"#795548\",\n secondaryColor: config.secondaryColor || \"#A67D67\",\n position: config.position || \"bottom-right\",\n showBranding: String(config.showBranding !== false),\n autoOpen: String(config.autoOpen === true),\n minimized: String(config.minimized === true),\n allowMinimize: String(config.allowMinimize !== false),\n showMinimize: String(config.showMinimize !== false),\n enableFileUpload: String(config.enableFileUpload === true),\n });\n\n // Add optional parameters\n if (config.customAvatar) params.set(\"customAvatar\", config.customAvatar);\n if (config.companyName) params.set(\"companyName\", config.companyName);\n if (config.welcomeMessage)\n params.set(\"welcomeMessage\", config.welcomeMessage);\n if (config.triggerText) params.set(\"triggerText\", config.triggerText);\n if (config.borderRadius) params.set(\"borderRadius\", config.borderRadius);\n\n iframe.src = `${this.getBaseUrl()}/embed/chat?${params.toString()}`;\n iframe.style.cssText = `\n position: relative;\n border: none;\n width: ${config.width || \"350px\"};\n height: ${config.height || \"650px\"};\n border-radius: 12px;\n transition: all 0.3s ease;\n pointer-events: auto;\n box-shadow: 0 4px 12px rgba(0,0,0,0.15);\n `;\n iframe.setAttribute(\"allow\", \"clipboard-write\");\n iframe.setAttribute(\"title\", \"BuniAI Chat Widget\");\n\n iframe.onload = () => {\n this.widgetElement = container;\n this.setupPostMessageAPI(iframe);\n resolve();\n };\n\n iframe.onerror = () => {\n reject(new Error(\"Failed to load BuniAI widget iframe\"));\n };\n\n container.appendChild(iframe);\n document.body.appendChild(container);\n });\n }\n\n private getPositionStyles(position: string): string {\n switch (position) {\n case \"bottom-right\":\n return \"bottom: 20px; right: 20px;\";\n case \"bottom-left\":\n return \"bottom: 20px; left: 20px;\";\n case \"top-right\":\n return \"top: 20px; right: 20px;\";\n case \"top-left\":\n return \"top: 20px; left: 20px;\";\n default:\n return \"bottom: 20px; right: 20px;\";\n }\n }\n\n private setupPostMessageAPI(iframe: HTMLIFrameElement): void {\n // Listen for messages from the iframe\n window.addEventListener(\"message\", (event) => {\n // Verify origin for security\n if (event.origin !== this.getBaseUrl()) {\n return;\n }\n\n const { type, data } = event.data;\n\n switch (type) {\n case \"ready\":\n this.state.isLoaded = true;\n this.emit(\"ready\", data);\n if (this.options.onReady) {\n this.options.onReady(data);\n }\n break;\n\n case \"visibility_changed\":\n this.state.isOpen = data.visibility === \"visible\";\n this.emit(\"visibility_changed\", data);\n if (this.options.onVisibilityChanged) {\n this.options.onVisibilityChanged(data);\n }\n break;\n\n case \"new_message\":\n if (data.isFromBot) {\n this.state.unreadCount++;\n }\n this.emit(\"new_message\", data);\n if (this.options.onNewMessage) {\n this.options.onNewMessage(data);\n }\n break;\n\n case \"minimized\":\n this.state.isMinimized = true;\n this.emit(\"minimized\", data);\n break;\n\n case \"maximized\":\n this.state.isMinimized = false;\n this.emit(\"maximized\", data);\n break;\n\n case \"customer_data_updated\":\n this.customerData = data;\n this.emit(\"customer_data_updated\", data);\n break;\n\n case \"session_updated\":\n this.sessionVariables = data.variables;\n this.emit(\"session_updated\", data);\n break;\n\n case \"error\":\n this.emit(\"error\", data);\n if (this.options.onError) {\n this.options.onError(data.error);\n }\n break;\n }\n });\n }\n\n private postMessageToWidget(type: string, data?: any): void {\n if (this.widgetElement && this.widgetElement instanceof HTMLIFrameElement) {\n this.widgetElement.contentWindow?.postMessage(\n { type, data },\n this.getBaseUrl()\n );\n }\n }\n\n private initializeWidgetAPI(): void {\n // Widget API is now handled via postMessage in setupPostMessageAPI\n // This method is kept for backward compatibility but no longer needed\n }\n\n private getBaseUrl(): string {\n // Return the base URL for the BuniAI platform\n return (globalThis as any).BUNI_API_URL || window.location.origin;\n }\n\n destroy(): void {\n this.postMessageToWidget(\"destroy\");\n\n if (this.widgetElement) {\n this.widgetElement.remove();\n this.widgetElement = null;\n }\n\n this.eventListeners.clear();\n this.state.isLoaded = false;\n this.customerData = null;\n this.sessionVariables = null;\n }\n\n show(): void {\n // Show the iframe if it was hidden (hideDefaultTrigger mode)\n if (this.widgetElement instanceof HTMLIFrameElement) {\n this.widgetElement.style.display = \"block\";\n }\n this.postMessageToWidget(\"show\");\n this.state.isOpen = true;\n this.state.unreadCount = 0;\n this.emit(\"visibility_changed\", { visibility: \"visible\" });\n }\n\n hide(): void {\n this.postMessageToWidget(\"hide\");\n // If hideDefaultTrigger is enabled, completely hide the iframe\n if (\n this.options.config?.hideDefaultTrigger &&\n this.widgetElement instanceof HTMLIFrameElement\n ) {\n this.widgetElement.style.display = \"none\";\n }\n this.state.isOpen = false;\n this.emit(\"visibility_changed\", { visibility: \"hidden\" });\n }\n\n toggle(): void {\n this.state.isOpen ? this.hide() : this.show();\n }\n\n minimize(): void {\n this.postMessageToWidget(\"minimize\");\n this.state.isMinimized = true;\n this.emit(\"minimized\", { timestamp: Date.now() });\n }\n\n maximize(): void {\n this.postMessageToWidget(\"maximize\");\n this.state.isMinimized = false;\n this.emit(\"maximized\", { timestamp: Date.now() });\n }\n\n setCustomerData(data: CustomerData): void {\n this.customerData = { ...this.customerData, ...data };\n this.postMessageToWidget(\"setCustomerData\", this.customerData);\n this.emit(\"customer_data_updated\", { data: this.customerData });\n }\n\n getCustomerData(): CustomerData | null {\n return this.customerData ? { ...this.customerData } : null;\n }\n\n setSessionVariables(variables: SessionVariables): void {\n this.sessionVariables = { ...this.sessionVariables, ...variables };\n this.postMessageToWidget(\"setSessionVariables\", this.sessionVariables);\n this.emit(\"session_updated\", { variables: this.sessionVariables });\n }\n\n getSessionVariables(): SessionVariables | null {\n return this.sessionVariables ? { ...this.sessionVariables } : null;\n }\n\n sendMessage(message: string): void {\n this.postMessageToWidget(\"sendMessage\", { message });\n\n const messageData = {\n message,\n isFromBot: false,\n timestamp: Date.now(),\n messageId: `msg_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`,\n };\n\n this.emit(\"new_message\", messageData);\n }\n\n clearChat(): void {\n this.postMessageToWidget(\"clearChat\");\n this.state.unreadCount = 0;\n }\n\n on(event: string, callback: Function): void {\n if (!this.eventListeners.has(event)) {\n this.eventListeners.set(event, []);\n }\n this.eventListeners.get(event)!.push(callback);\n }\n\n off(event: string, callback?: Function): void {\n const listeners = this.eventListeners.get(event);\n if (!listeners) return;\n\n if (callback) {\n const index = listeners.indexOf(callback);\n if (index > -1) {\n listeners.splice(index, 1);\n }\n } else {\n this.eventListeners.set(event, []);\n }\n }\n\n emit(event: string, data?: any): void {\n const listeners = this.eventListeners.get(event);\n if (listeners) {\n listeners.forEach((callback) => {\n try {\n callback(data);\n } catch (error) {\n console.error(`Error in event listener for ${event}:`, error);\n }\n });\n }\n }\n\n getState(): BuniChatState {\n return { ...this.state };\n }\n\n isReady(): boolean {\n return this.state.isLoaded;\n }\n}\n\n// Utility function - named export\nexport function createBuniChatWidget(options: BuniChatOptions): BuniChatWidget {\n const widget = new BuniChatWidget();\n widget.initialize(options);\n return widget;\n}\n\n// Default export - the main widget class\nexport default BuniChatWidget;\n\n// Global type declaration for the widget API\ndeclare global {\n interface Window {\n BuniChat?: {\n configure: (config: any) => void;\n show: () => void;\n hide: () => void;\n minimize: () => void;\n maximize: () => void;\n destroy: () => void;\n setCustomerData: (data: CustomerData) => void;\n setSessionVariables: (variables: SessionVariables) => void;\n sendMessage: (message: string) => void;\n clearChat: () => void;\n on: (event: string, callback: Function) => void;\n off: (event: string, callback?: Function) => void;\n };\n }\n}\n","// Main exports for @buni.ai/chatbot-core\n\n// Export all types\nexport * from \"./types\";\n\n// Export everything from widget\nexport * from \"./widget\";\n\n// Make BuniChatWidget the default export as well\nimport { BuniChatWidget } from \"./widget\";\nexport default BuniChatWidget;\n"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -43,6 +43,8 @@ class BuniChatWidget {
43
43
  const config = this.options.config || {};
44
44
  container.style.cssText = `
45
45
  position: fixed;
46
+ width: 0;
47
+ height: 0;
46
48
  pointer-events: none;
47
49
  z-index: 999999;
48
50
  ${this.getPositionStyles(config.position || "bottom-right")}
@@ -213,7 +215,8 @@ class BuniChatWidget {
213
215
  var _a;
214
216
  this.postMessageToWidget("hide");
215
217
  // If hideDefaultTrigger is enabled, completely hide the iframe
216
- if (((_a = this.options.config) === null || _a === void 0 ? void 0 : _a.hideDefaultTrigger) && this.widgetElement instanceof HTMLIFrameElement) {
218
+ if (((_a = this.options.config) === null || _a === void 0 ? void 0 : _a.hideDefaultTrigger) &&
219
+ this.widgetElement instanceof HTMLIFrameElement) {
217
220
  this.widgetElement.style.display = "none";
218
221
  }
219
222
  this.state.isOpen = false;
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/widget.ts","../src/index.ts"],"sourcesContent":["import {\n BuniChatAPI,\n BuniChatOptions,\n BuniChatState,\n CustomerData,\n SessionVariables,\n} from \"./types\";\n\n// Core widget loader class\nexport class BuniChatWidget implements BuniChatAPI {\n private options!: BuniChatOptions;\n private state: BuniChatState;\n private eventListeners: Map<string, Function[]>;\n private widgetElement: HTMLElement | null;\n private customerData: CustomerData | null;\n private sessionVariables: SessionVariables | null;\n\n constructor() {\n this.state = {\n isOpen: false,\n isLoaded: false,\n isMinimized: false,\n unreadCount: 0,\n };\n this.eventListeners = new Map();\n this.widgetElement = null;\n this.customerData = null;\n this.sessionVariables = null;\n }\n\n async initialize(options: BuniChatOptions): Promise<void> {\n this.options = options;\n\n try {\n await this.loadWidget();\n this.state.isLoaded = true;\n this.emit(\"ready\", { timestamp: Date.now() });\n\n if (options.onReady) {\n options.onReady({ timestamp: Date.now() });\n }\n } catch (error) {\n const errorObj =\n error instanceof Error ? error : new Error(String(error));\n this.emit(\"error\", { error: errorObj, context: \"initialization\" });\n\n if (options.onError) {\n options.onError(errorObj);\n }\n throw errorObj;\n }\n }\n\n private async loadWidget(): Promise<void> {\n return new Promise((resolve, reject) => {\n // Create container div for proper positioning\n const container = document.createElement(\"div\");\n container.id = \"buni-chat-widget-container\";\n const config = this.options.config || {};\n \n container.style.cssText = `\n position: fixed;\n pointer-events: none;\n z-index: 999999;\n ${this.getPositionStyles(config.position || \"bottom-right\")}\n display: ${config.hideDefaultTrigger ? \"none\" : \"block\"};\n `;\n\n // Create iframe for secure embedding\n const iframe = document.createElement(\"iframe\");\n\n // Build URL with configuration parameters\n const params = new URLSearchParams({\n token: this.options.token,\n embedded: \"true\",\n theme: config.theme || \"light\",\n width: String(config.width || \"350px\"),\n height: String(config.height || \"650px\"),\n primaryColor: config.primaryColor || \"#795548\",\n secondaryColor: config.secondaryColor || \"#A67D67\",\n position: config.position || \"bottom-right\",\n showBranding: String(config.showBranding !== false),\n autoOpen: String(config.autoOpen === true),\n minimized: String(config.minimized === true),\n allowMinimize: String(config.allowMinimize !== false),\n showMinimize: String(config.showMinimize !== false),\n enableFileUpload: String(config.enableFileUpload === true),\n });\n\n // Add optional parameters\n if (config.customAvatar) params.set(\"customAvatar\", config.customAvatar);\n if (config.companyName) params.set(\"companyName\", config.companyName);\n if (config.welcomeMessage)\n params.set(\"welcomeMessage\", config.welcomeMessage);\n if (config.triggerText) params.set(\"triggerText\", config.triggerText);\n if (config.borderRadius) params.set(\"borderRadius\", config.borderRadius);\n\n iframe.src = `${this.getBaseUrl()}/embed/chat?${params.toString()}`;\n iframe.style.cssText = `\n position: relative;\n border: none;\n width: ${config.width || \"350px\"};\n height: ${config.height || \"650px\"};\n border-radius: 12px;\n transition: all 0.3s ease;\n pointer-events: auto;\n box-shadow: 0 4px 12px rgba(0,0,0,0.15);\n `;\n iframe.setAttribute(\"allow\", \"clipboard-write\");\n iframe.setAttribute(\"title\", \"BuniAI Chat Widget\");\n\n iframe.onload = () => {\n this.widgetElement = container;\n this.setupPostMessageAPI(iframe);\n resolve();\n };\n\n iframe.onerror = () => {\n reject(new Error(\"Failed to load BuniAI widget iframe\"));\n };\n\n container.appendChild(iframe);\n document.body.appendChild(container);\n });\n }\n\n private getPositionStyles(position: string): string {\n switch (position) {\n case \"bottom-right\":\n return \"bottom: 20px; right: 20px;\";\n case \"bottom-left\":\n return \"bottom: 20px; left: 20px;\";\n case \"top-right\":\n return \"top: 20px; right: 20px;\";\n case \"top-left\":\n return \"top: 20px; left: 20px;\";\n default:\n return \"bottom: 20px; right: 20px;\";\n }\n }\n\n private setupPostMessageAPI(iframe: HTMLIFrameElement): void {\n // Listen for messages from the iframe\n window.addEventListener(\"message\", (event) => {\n // Verify origin for security\n if (event.origin !== this.getBaseUrl()) {\n return;\n }\n\n const { type, data } = event.data;\n\n switch (type) {\n case \"ready\":\n this.state.isLoaded = true;\n this.emit(\"ready\", data);\n if (this.options.onReady) {\n this.options.onReady(data);\n }\n break;\n\n case \"visibility_changed\":\n this.state.isOpen = data.visibility === \"visible\";\n this.emit(\"visibility_changed\", data);\n if (this.options.onVisibilityChanged) {\n this.options.onVisibilityChanged(data);\n }\n break;\n\n case \"new_message\":\n if (data.isFromBot) {\n this.state.unreadCount++;\n }\n this.emit(\"new_message\", data);\n if (this.options.onNewMessage) {\n this.options.onNewMessage(data);\n }\n break;\n\n case \"minimized\":\n this.state.isMinimized = true;\n this.emit(\"minimized\", data);\n break;\n\n case \"maximized\":\n this.state.isMinimized = false;\n this.emit(\"maximized\", data);\n break;\n\n case \"customer_data_updated\":\n this.customerData = data;\n this.emit(\"customer_data_updated\", data);\n break;\n\n case \"session_updated\":\n this.sessionVariables = data.variables;\n this.emit(\"session_updated\", data);\n break;\n\n case \"error\":\n this.emit(\"error\", data);\n if (this.options.onError) {\n this.options.onError(data.error);\n }\n break;\n }\n });\n }\n\n private postMessageToWidget(type: string, data?: any): void {\n if (this.widgetElement && this.widgetElement instanceof HTMLIFrameElement) {\n this.widgetElement.contentWindow?.postMessage(\n { type, data },\n this.getBaseUrl()\n );\n }\n }\n\n private initializeWidgetAPI(): void {\n // Widget API is now handled via postMessage in setupPostMessageAPI\n // This method is kept for backward compatibility but no longer needed\n }\n\n private getBaseUrl(): string {\n // Return the base URL for the BuniAI platform\n return (globalThis as any).BUNI_API_URL || window.location.origin;\n }\n\n destroy(): void {\n this.postMessageToWidget(\"destroy\");\n\n if (this.widgetElement) {\n this.widgetElement.remove();\n this.widgetElement = null;\n }\n\n this.eventListeners.clear();\n this.state.isLoaded = false;\n this.customerData = null;\n this.sessionVariables = null;\n }\n\n show(): void {\n // Show the iframe if it was hidden (hideDefaultTrigger mode)\n if (this.widgetElement instanceof HTMLIFrameElement) {\n this.widgetElement.style.display = \"block\";\n }\n this.postMessageToWidget(\"show\");\n this.state.isOpen = true;\n this.state.unreadCount = 0;\n this.emit(\"visibility_changed\", { visibility: \"visible\" });\n }\n\n hide(): void {\n this.postMessageToWidget(\"hide\");\n // If hideDefaultTrigger is enabled, completely hide the iframe\n if (this.options.config?.hideDefaultTrigger && this.widgetElement instanceof HTMLIFrameElement) {\n this.widgetElement.style.display = \"none\";\n }\n this.state.isOpen = false;\n this.emit(\"visibility_changed\", { visibility: \"hidden\" });\n }\n\n toggle(): void {\n this.state.isOpen ? this.hide() : this.show();\n }\n\n minimize(): void {\n this.postMessageToWidget(\"minimize\");\n this.state.isMinimized = true;\n this.emit(\"minimized\", { timestamp: Date.now() });\n }\n\n maximize(): void {\n this.postMessageToWidget(\"maximize\");\n this.state.isMinimized = false;\n this.emit(\"maximized\", { timestamp: Date.now() });\n }\n\n setCustomerData(data: CustomerData): void {\n this.customerData = { ...this.customerData, ...data };\n this.postMessageToWidget(\"setCustomerData\", this.customerData);\n this.emit(\"customer_data_updated\", { data: this.customerData });\n }\n\n getCustomerData(): CustomerData | null {\n return this.customerData ? { ...this.customerData } : null;\n }\n\n setSessionVariables(variables: SessionVariables): void {\n this.sessionVariables = { ...this.sessionVariables, ...variables };\n this.postMessageToWidget(\"setSessionVariables\", this.sessionVariables);\n this.emit(\"session_updated\", { variables: this.sessionVariables });\n }\n\n getSessionVariables(): SessionVariables | null {\n return this.sessionVariables ? { ...this.sessionVariables } : null;\n }\n\n sendMessage(message: string): void {\n this.postMessageToWidget(\"sendMessage\", { message });\n\n const messageData = {\n message,\n isFromBot: false,\n timestamp: Date.now(),\n messageId: `msg_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`,\n };\n\n this.emit(\"new_message\", messageData);\n }\n\n clearChat(): void {\n this.postMessageToWidget(\"clearChat\");\n this.state.unreadCount = 0;\n }\n\n on(event: string, callback: Function): void {\n if (!this.eventListeners.has(event)) {\n this.eventListeners.set(event, []);\n }\n this.eventListeners.get(event)!.push(callback);\n }\n\n off(event: string, callback?: Function): void {\n const listeners = this.eventListeners.get(event);\n if (!listeners) return;\n\n if (callback) {\n const index = listeners.indexOf(callback);\n if (index > -1) {\n listeners.splice(index, 1);\n }\n } else {\n this.eventListeners.set(event, []);\n }\n }\n\n emit(event: string, data?: any): void {\n const listeners = this.eventListeners.get(event);\n if (listeners) {\n listeners.forEach((callback) => {\n try {\n callback(data);\n } catch (error) {\n console.error(`Error in event listener for ${event}:`, error);\n }\n });\n }\n }\n\n getState(): BuniChatState {\n return { ...this.state };\n }\n\n isReady(): boolean {\n return this.state.isLoaded;\n }\n}\n\n// Utility function - named export\nexport function createBuniChatWidget(options: BuniChatOptions): BuniChatWidget {\n const widget = new BuniChatWidget();\n widget.initialize(options);\n return widget;\n}\n\n// Default export - the main widget class\nexport default BuniChatWidget;\n\n// Global type declaration for the widget API\ndeclare global {\n interface Window {\n BuniChat?: {\n configure: (config: any) => void;\n show: () => void;\n hide: () => void;\n minimize: () => void;\n maximize: () => void;\n destroy: () => void;\n setCustomerData: (data: CustomerData) => void;\n setSessionVariables: (variables: SessionVariables) => void;\n sendMessage: (message: string) => void;\n clearChat: () => void;\n on: (event: string, callback: Function) => void;\n off: (event: string, callback?: Function) => void;\n };\n }\n}\n","// Main exports for @buni.ai/chatbot-core\n\n// Export all types\nexport * from \"./types\";\n\n// Export everything from widget\nexport * from \"./widget\";\n\n// Make BuniChatWidget the default export as well\nimport { BuniChatWidget } from \"./widget\";\nexport default BuniChatWidget;\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../src/widget.ts","../src/index.ts"],"sourcesContent":["import {\n BuniChatAPI,\n BuniChatOptions,\n BuniChatState,\n CustomerData,\n SessionVariables,\n} from \"./types\";\n\n// Core widget loader class\nexport class BuniChatWidget implements BuniChatAPI {\n private options!: BuniChatOptions;\n private state: BuniChatState;\n private eventListeners: Map<string, Function[]>;\n private widgetElement: HTMLElement | null;\n private customerData: CustomerData | null;\n private sessionVariables: SessionVariables | null;\n\n constructor() {\n this.state = {\n isOpen: false,\n isLoaded: false,\n isMinimized: false,\n unreadCount: 0,\n };\n this.eventListeners = new Map();\n this.widgetElement = null;\n this.customerData = null;\n this.sessionVariables = null;\n }\n\n async initialize(options: BuniChatOptions): Promise<void> {\n this.options = options;\n\n try {\n await this.loadWidget();\n this.state.isLoaded = true;\n this.emit(\"ready\", { timestamp: Date.now() });\n\n if (options.onReady) {\n options.onReady({ timestamp: Date.now() });\n }\n } catch (error) {\n const errorObj =\n error instanceof Error ? error : new Error(String(error));\n this.emit(\"error\", { error: errorObj, context: \"initialization\" });\n\n if (options.onError) {\n options.onError(errorObj);\n }\n throw errorObj;\n }\n }\n\n private async loadWidget(): Promise<void> {\n return new Promise((resolve, reject) => {\n // Create container div for proper positioning\n const container = document.createElement(\"div\");\n container.id = \"buni-chat-widget-container\";\n const config = this.options.config || {};\n\n container.style.cssText = `\n position: fixed;\n width: 0;\n height: 0;\n pointer-events: none;\n z-index: 999999;\n ${this.getPositionStyles(config.position || \"bottom-right\")}\n display: ${config.hideDefaultTrigger ? \"none\" : \"block\"};\n `;\n\n // Create iframe for secure embedding\n const iframe = document.createElement(\"iframe\");\n\n // Build URL with configuration parameters\n const params = new URLSearchParams({\n token: this.options.token,\n embedded: \"true\",\n theme: config.theme || \"light\",\n width: String(config.width || \"350px\"),\n height: String(config.height || \"650px\"),\n primaryColor: config.primaryColor || \"#795548\",\n secondaryColor: config.secondaryColor || \"#A67D67\",\n position: config.position || \"bottom-right\",\n showBranding: String(config.showBranding !== false),\n autoOpen: String(config.autoOpen === true),\n minimized: String(config.minimized === true),\n allowMinimize: String(config.allowMinimize !== false),\n showMinimize: String(config.showMinimize !== false),\n enableFileUpload: String(config.enableFileUpload === true),\n });\n\n // Add optional parameters\n if (config.customAvatar) params.set(\"customAvatar\", config.customAvatar);\n if (config.companyName) params.set(\"companyName\", config.companyName);\n if (config.welcomeMessage)\n params.set(\"welcomeMessage\", config.welcomeMessage);\n if (config.triggerText) params.set(\"triggerText\", config.triggerText);\n if (config.borderRadius) params.set(\"borderRadius\", config.borderRadius);\n\n iframe.src = `${this.getBaseUrl()}/embed/chat?${params.toString()}`;\n iframe.style.cssText = `\n position: relative;\n border: none;\n width: ${config.width || \"350px\"};\n height: ${config.height || \"650px\"};\n border-radius: 12px;\n transition: all 0.3s ease;\n pointer-events: auto;\n box-shadow: 0 4px 12px rgba(0,0,0,0.15);\n `;\n iframe.setAttribute(\"allow\", \"clipboard-write\");\n iframe.setAttribute(\"title\", \"BuniAI Chat Widget\");\n\n iframe.onload = () => {\n this.widgetElement = container;\n this.setupPostMessageAPI(iframe);\n resolve();\n };\n\n iframe.onerror = () => {\n reject(new Error(\"Failed to load BuniAI widget iframe\"));\n };\n\n container.appendChild(iframe);\n document.body.appendChild(container);\n });\n }\n\n private getPositionStyles(position: string): string {\n switch (position) {\n case \"bottom-right\":\n return \"bottom: 20px; right: 20px;\";\n case \"bottom-left\":\n return \"bottom: 20px; left: 20px;\";\n case \"top-right\":\n return \"top: 20px; right: 20px;\";\n case \"top-left\":\n return \"top: 20px; left: 20px;\";\n default:\n return \"bottom: 20px; right: 20px;\";\n }\n }\n\n private setupPostMessageAPI(iframe: HTMLIFrameElement): void {\n // Listen for messages from the iframe\n window.addEventListener(\"message\", (event) => {\n // Verify origin for security\n if (event.origin !== this.getBaseUrl()) {\n return;\n }\n\n const { type, data } = event.data;\n\n switch (type) {\n case \"ready\":\n this.state.isLoaded = true;\n this.emit(\"ready\", data);\n if (this.options.onReady) {\n this.options.onReady(data);\n }\n break;\n\n case \"visibility_changed\":\n this.state.isOpen = data.visibility === \"visible\";\n this.emit(\"visibility_changed\", data);\n if (this.options.onVisibilityChanged) {\n this.options.onVisibilityChanged(data);\n }\n break;\n\n case \"new_message\":\n if (data.isFromBot) {\n this.state.unreadCount++;\n }\n this.emit(\"new_message\", data);\n if (this.options.onNewMessage) {\n this.options.onNewMessage(data);\n }\n break;\n\n case \"minimized\":\n this.state.isMinimized = true;\n this.emit(\"minimized\", data);\n break;\n\n case \"maximized\":\n this.state.isMinimized = false;\n this.emit(\"maximized\", data);\n break;\n\n case \"customer_data_updated\":\n this.customerData = data;\n this.emit(\"customer_data_updated\", data);\n break;\n\n case \"session_updated\":\n this.sessionVariables = data.variables;\n this.emit(\"session_updated\", data);\n break;\n\n case \"error\":\n this.emit(\"error\", data);\n if (this.options.onError) {\n this.options.onError(data.error);\n }\n break;\n }\n });\n }\n\n private postMessageToWidget(type: string, data?: any): void {\n if (this.widgetElement && this.widgetElement instanceof HTMLIFrameElement) {\n this.widgetElement.contentWindow?.postMessage(\n { type, data },\n this.getBaseUrl()\n );\n }\n }\n\n private initializeWidgetAPI(): void {\n // Widget API is now handled via postMessage in setupPostMessageAPI\n // This method is kept for backward compatibility but no longer needed\n }\n\n private getBaseUrl(): string {\n // Return the base URL for the BuniAI platform\n return (globalThis as any).BUNI_API_URL || window.location.origin;\n }\n\n destroy(): void {\n this.postMessageToWidget(\"destroy\");\n\n if (this.widgetElement) {\n this.widgetElement.remove();\n this.widgetElement = null;\n }\n\n this.eventListeners.clear();\n this.state.isLoaded = false;\n this.customerData = null;\n this.sessionVariables = null;\n }\n\n show(): void {\n // Show the iframe if it was hidden (hideDefaultTrigger mode)\n if (this.widgetElement instanceof HTMLIFrameElement) {\n this.widgetElement.style.display = \"block\";\n }\n this.postMessageToWidget(\"show\");\n this.state.isOpen = true;\n this.state.unreadCount = 0;\n this.emit(\"visibility_changed\", { visibility: \"visible\" });\n }\n\n hide(): void {\n this.postMessageToWidget(\"hide\");\n // If hideDefaultTrigger is enabled, completely hide the iframe\n if (\n this.options.config?.hideDefaultTrigger &&\n this.widgetElement instanceof HTMLIFrameElement\n ) {\n this.widgetElement.style.display = \"none\";\n }\n this.state.isOpen = false;\n this.emit(\"visibility_changed\", { visibility: \"hidden\" });\n }\n\n toggle(): void {\n this.state.isOpen ? this.hide() : this.show();\n }\n\n minimize(): void {\n this.postMessageToWidget(\"minimize\");\n this.state.isMinimized = true;\n this.emit(\"minimized\", { timestamp: Date.now() });\n }\n\n maximize(): void {\n this.postMessageToWidget(\"maximize\");\n this.state.isMinimized = false;\n this.emit(\"maximized\", { timestamp: Date.now() });\n }\n\n setCustomerData(data: CustomerData): void {\n this.customerData = { ...this.customerData, ...data };\n this.postMessageToWidget(\"setCustomerData\", this.customerData);\n this.emit(\"customer_data_updated\", { data: this.customerData });\n }\n\n getCustomerData(): CustomerData | null {\n return this.customerData ? { ...this.customerData } : null;\n }\n\n setSessionVariables(variables: SessionVariables): void {\n this.sessionVariables = { ...this.sessionVariables, ...variables };\n this.postMessageToWidget(\"setSessionVariables\", this.sessionVariables);\n this.emit(\"session_updated\", { variables: this.sessionVariables });\n }\n\n getSessionVariables(): SessionVariables | null {\n return this.sessionVariables ? { ...this.sessionVariables } : null;\n }\n\n sendMessage(message: string): void {\n this.postMessageToWidget(\"sendMessage\", { message });\n\n const messageData = {\n message,\n isFromBot: false,\n timestamp: Date.now(),\n messageId: `msg_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`,\n };\n\n this.emit(\"new_message\", messageData);\n }\n\n clearChat(): void {\n this.postMessageToWidget(\"clearChat\");\n this.state.unreadCount = 0;\n }\n\n on(event: string, callback: Function): void {\n if (!this.eventListeners.has(event)) {\n this.eventListeners.set(event, []);\n }\n this.eventListeners.get(event)!.push(callback);\n }\n\n off(event: string, callback?: Function): void {\n const listeners = this.eventListeners.get(event);\n if (!listeners) return;\n\n if (callback) {\n const index = listeners.indexOf(callback);\n if (index > -1) {\n listeners.splice(index, 1);\n }\n } else {\n this.eventListeners.set(event, []);\n }\n }\n\n emit(event: string, data?: any): void {\n const listeners = this.eventListeners.get(event);\n if (listeners) {\n listeners.forEach((callback) => {\n try {\n callback(data);\n } catch (error) {\n console.error(`Error in event listener for ${event}:`, error);\n }\n });\n }\n }\n\n getState(): BuniChatState {\n return { ...this.state };\n }\n\n isReady(): boolean {\n return this.state.isLoaded;\n }\n}\n\n// Utility function - named export\nexport function createBuniChatWidget(options: BuniChatOptions): BuniChatWidget {\n const widget = new BuniChatWidget();\n widget.initialize(options);\n return widget;\n}\n\n// Default export - the main widget class\nexport default BuniChatWidget;\n\n// Global type declaration for the widget API\ndeclare global {\n interface Window {\n BuniChat?: {\n configure: (config: any) => void;\n show: () => void;\n hide: () => void;\n minimize: () => void;\n maximize: () => void;\n destroy: () => void;\n setCustomerData: (data: CustomerData) => void;\n setSessionVariables: (variables: SessionVariables) => void;\n sendMessage: (message: string) => void;\n clearChat: () => void;\n on: (event: string, callback: Function) => void;\n off: (event: string, callback?: Function) => void;\n };\n }\n}\n","// Main exports for @buni.ai/chatbot-core\n\n// Export all types\nexport * from \"./types\";\n\n// Export everything from widget\nexport * from \"./widget\";\n\n// Make BuniChatWidget the default export as well\nimport { BuniChatWidget } from \"./widget\";\nexport default BuniChatWidget;\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@buni.ai/chatbot-core",
3
- "version": "1.0.2",
3
+ "version": "1.0.3",
4
4
  "description": "Core functionality for BuniAI chat widget adapters",
5
5
  "type": "module",
6
6
  "main": "dist/index.cjs.js",