@hivegpt/hiveai-angular 0.0.261 → 0.0.263

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../node_modules/tslib/tslib.es6.js","../../../../projects/hivegpt/eventsgpt-angular/src/lib/utils/utils.ts","../../../../projects/hivegpt/eventsgpt-angular/src/environments/environment.ts","../../../../projects/hivegpt/eventsgpt-angular/src/lib/components/conversation.service.ts","../../../../projects/hivegpt/eventsgpt-angular/src/lib/components/NotificationSocket.ts","../../../../projects/hivegpt/eventsgpt-angular/src/lib/components/socket-service.service.ts","../../../../projects/hivegpt/eventsgpt-angular/src/lib/components/chat-drawer/chat-drawer.component.ts","../../../../projects/hivegpt/eventsgpt-angular/src/lib/components/chatbot/chatbot.component.ts","../../../../projects/hivegpt/eventsgpt-angular/src/lib/pipes/safe-html.pipe.ts","../../../../projects/hivegpt/eventsgpt-angular/src/lib/components/video-player/video-player.component.ts","../../../../projects/hivegpt/eventsgpt-angular/src/lib/components/bot-html-editor/bot-html-editor.component.ts","../../../../projects/hivegpt/eventsgpt-angular/src/lib/hivegpt.module.ts"],"names":["extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","prototype","hasOwnProperty","call","__extends","TypeError","String","__","this","constructor","create","__read","o","n","m","Symbol","iterator","r","e","i","ar","next","done","push","value","error","__spread","arguments","length","concat","SuppressedError","formatHoursAndMinutes","date","hours","getHours","minutes","getMinutes","formatNow","timezone","now","Date","options","hour12","hour","minute","timeZone","toLocaleString","formatTimeStamps","timestamps","prod_environment","USERS_API","BASE_URL","AGENTS_API","API_KEY","SocketUrl","dev_environment","ConversationService","storageKey","userSepecificNotification","Subject","generateKey","Math","floor","getTime","toString","replace","random","generateStorageKey","key","ensureKeyExists","localStorage","getItem","newKey","setItem","getKey","sendValidatedUserData","message","getUserSpecificNotification","asObservable","Injectable","args","providedIn","NotificationSocket","_this","_super","socketConfig","on","console","log","warn","err","Socket","url","transports","reconnection","autoConnect","upgrade","reconnectionDelay","reconnectionDelayMax","reconnectionAttempts","Infinity","SocketService","conversationService","notificationSocket","isCommonSocketInitialized","isUserSpecificSocketInitialized","isUserSpecificEventReleased","messageQueue","releaseInterval","intervalSetup","startReleasingMessages","isSocketInitialized","isCommon","disconnectSocketConnection","disconnect","registerUserSpecificHiveSocket","botId","conversation_id","commonNotification","removeAllListeners","emit","groupId","fromEvent","subscribe","res","setInterval","shift","ChatDrawerComponent","cdr","http","sanitizer","elementRef","renderer","socketService","bodyOverflowClass","isCollapsedTrue","copilotName","feedbackEvent","EventEmitter","onCloseEvent","openPage","sessionActions","closeBot","connectWithUser","scheduleMeeting","refreshToken","autogenKey","addToMyAgendaAction","myUpcomingSessionAction","connectOrFollowAction","aiResponse","chatLog","decoder","TextDecoder","feedbackDone","greetingMsg","hasBackdropValue","input","listenerAdded","loading","mode","quickPrompts","thumbsDownMsgIndex","userName","showStartAgain","isIOSDevice","showFeedBackIconsIndex","temperature","speakers","isChatingWithAi","readAllChunks","stream","reader","getReader","allSuggestions","closed","catch","scrollToBottom","ReadableStream","start","controller","pump","currentMessageForEditor","currentIndexForEditor","isDropdownOpen","selectedAgents","allSelected","isCollapsed","isCollapsedForGraph","isCollapsedForFGraph","dateTime","toISOString","currentSourcesList","isDrawerOpen","chatMain","ElementRef","ngOnChanges","changes","s27Token","currentValue","previousValue","isFetchDataFor","msg","chat","is401","fetchDataFor","fetchData","ngOnInit","environment","isDev","changeTemperature","fetchBotConfig","markForCheck","fetchChatHistory","response","mapChatHistory","fetchAgents","initializeSocket","setTimeout","listenSockets","eventSubscription","unsubscribe","_a","OtherFields","_e","_b","message_id_1","bot_id","message_id","answer","web_results","graphs","execution_graphs","online_search_terms","suggestions","_c","currentChatMessage","find","_id","type","time","detectChanges","isArray","searchTerms","sourcesList","displayedSources","slice","remainingSources","processMessageForDisplay","executionGraphs","relatedListItems","initializeSocketAndListen","handleEvent","data","ngOnDestroy","newTemperature","wrapper","document","querySelector","classList","remove","add","onStartAgain","processMessage","archieveMessages","headers","HttpHeaders","Content-Type","x-api-key","apiKey","userId","post","pipe","switchMap","of","catchError","get","botName","Name","botIcon","Icon","botSkills","Skills","Greeting","thumbsDownMessages","NegativeResponses","QuickPrompts","conversationKey","accept","handleError","operation","result","chats","Messages","forEach","Type","Text","InsertTimestamp","copied","WebLinks","ExecutionGraphs","Graphs","SearchTerms","trim","markdownLinkRegex","urlRegex","test","html","sanitizeHtml","match","hashes","text","level","ngAfterViewChecked","nativeElement","querySelectorAll","link","addEventListener","onFeedbackClick","bind","bypassSecurityTrustHtml","onClose","removeClass","body","sendMessageWithTile","prompt","textarea","myInput","style","height","fetch","method","Authorization","JSON","stringify","user_question","user_id","agents","filter","selected","map","id","then","status","json","inputMsg","fetchSmallTalk","smallTalk","isFeedbackMsg","read","lastItem","pop","close","decodedChunk","decode","suggestionsMatch","aiFormattedData","parse","section_id","fetchMyConnections","fetchPendingRequests","speakerIds","content","session","getSpeakersByStaffIds","sectionId","sessionIds","usersLen","_d","search","connetUserIds","is_open_page","isMobileBrowser","action","addCloseBotClickEvent","enqueue","submitFeedback","flag","thumbsUpMessage","handleSubmit","handleUpClick","idx","liked","unliked","handleDownClick","copyText","index","textElement","getElementById","tempTextArea","createElement","innerText","appendChild","select","execCommand","removeChild","handleCopyClick","sanitizeHTML","doc","DOMParser","parseFromString","fragment","createDocumentFragment","from","childNodes","node","cloneNode","simplifiedDiv","script","innerHTML","handleEditorClick","isEditor","editorsDrawer","open","button","display","counter","interval","scrollTop","scrollHeight","clearInterval","handleAction","info","ngAfterViewInit","drawer","opened","setBodyOverflow","openedChange","removeBodyOverflow","myTextarea","focus","addClass","ids","eventId","ok","Error","speaker","performSessionAction","sessionId","element","listen","navigator","userAgent","connectToUser","connect","canDisconnect","scheduleMeetingWithUser","user","canConnect","pendingRequests","a","myConnections","conn","toggleDropdown","onSelectAll","event","agent","onAgentChange","agentFound","areAllSelected","every","getDropdownHeaderText","fetchAgents_http","assign","markdown","toggleCollapse","toggleCollapseGraph","toggleCollapseFGraph","getDomainName","URL","hostname","getFaviconUrl","onCardClick","sources","sourcesDrawer","onCloseEditor","onDrawerClosed","onCloseSource","toggleDrawer","todo","updateButtonVisibility","openLinkInNewTab","window","adjustTextareaHeight","target","overflowY","Component","selector","template","changeDetection","ChangeDetectionStrategy","OnPush","ChangeDetectorRef","HttpClient","DomSanitizer","Renderer2","ViewChild","ViewChildren","static","Input","Output","ChatBotComponent","visible","toggle","SafeHtmlPipe","transform","Pipe","name","VideoPlayerComponent","el","isMuted","isFullscreen","isFullscreenvideoPlaying","toggleSound","video","muted","togglePlay","playState","videoEl","videoObj","isPlaying","play","pause","innerWidth","observer","IntersectionObserver","entries","isIntersecting","threshold","observe","toggleFullscreen","fullscreenvideo","toggleFullscreenPlay","followUser","checkPendingSentRequest","myPendingSentRequests","canUnfollowUser","canFollowUser","getIniNames","firstName","lastName","charAt","toUpperCase","Inject","DOCUMENT","BotHtmlEditorComponent","quillConfig","toolbar","header","font","list","NgModule","declarations","imports","CommonModule","MatIconModule","MatSidenavModule","FormsModule","QuillModule","exports"],"mappings":"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","sourcesContent":["/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n\r\nexport function __addDisposableResource(env, value, async) {\r\n if (value !== null && value !== void 0) {\r\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n var dispose;\r\n if (async) {\r\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n dispose = value[Symbol.asyncDispose];\r\n }\r\n if (dispose === void 0) {\r\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n dispose = value[Symbol.dispose];\r\n }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n env.stack.push({ value: value, dispose: dispose, async: async });\r\n }\r\n else if (async) {\r\n env.stack.push({ async: true });\r\n }\r\n return value;\r\n}\r\n\r\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\r\n\r\nexport function __disposeResources(env) {\r\n function fail(e) {\r\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n env.hasError = true;\r\n }\r\n function next() {\r\n while (env.stack.length) {\r\n var rec = env.stack.pop();\r\n try {\r\n var result = rec.dispose && rec.dispose.call(rec.value);\r\n if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\r\n}\r\n\r\nexport default {\r\n __extends: __extends,\r\n __assign: __assign,\r\n __rest: __rest,\r\n __decorate: __decorate,\r\n __param: __param,\r\n __metadata: __metadata,\r\n __awaiter: __awaiter,\r\n __generator: __generator,\r\n __createBinding: __createBinding,\r\n __exportStar: __exportStar,\r\n __values: __values,\r\n __read: __read,\r\n __spread: __spread,\r\n __spreadArrays: __spreadArrays,\r\n __spreadArray: __spreadArray,\r\n __await: __await,\r\n __asyncGenerator: __asyncGenerator,\r\n __asyncDelegator: __asyncDelegator,\r\n __asyncValues: __asyncValues,\r\n __makeTemplateObject: __makeTemplateObject,\r\n __importStar: __importStar,\r\n __importDefault: __importDefault,\r\n __classPrivateFieldGet: __classPrivateFieldGet,\r\n __classPrivateFieldSet: __classPrivateFieldSet,\r\n __classPrivateFieldIn: __classPrivateFieldIn,\r\n __addDisposableResource: __addDisposableResource,\r\n __disposeResources: __disposeResources,\r\n};\r\n","const formatHoursAndMinutes = (date: Date) => {\r\n let hours = date.getHours() % 12;\r\n const minutes = date.getMinutes();\r\n const amPm = date.getHours() < 12 ? 'AM' : 'PM';\r\n if(hours === 0) hours = 12;\r\n\r\n const formattedHours = hours < 10 ? `0${hours}` : hours;\r\n const formattedMinutes = minutes < 10 ? `0${minutes}` : minutes;\r\n\r\n return `${formattedHours}:${formattedMinutes} ${amPm}`;\r\n};\r\n\r\nexport const formatNow = (timezone?: string) => {\r\n const now = new Date();\r\n if (timezone) {\r\n const options: any = {\r\n hour12: true,\r\n hour: 'numeric',\r\n minute: 'numeric',\r\n timeZone: timezone,\r\n };\r\n return now.toLocaleString('en-US', options);\r\n }\r\n return formatHoursAndMinutes(now);\r\n};\r\n\r\nexport const formatTimeStamps = (timezone: string, timestamps: any) => {\r\n const date = new Date(timestamps + 'Z');\r\n\r\n const options: any = {\r\n hour12: true,\r\n hour: 'numeric',\r\n minute: 'numeric',\r\n timeZone: timezone,\r\n };\r\n return date.toLocaleString('en-US', options);\r\n};\r\n","\r\n\r\nexport const prod_environment = {\r\n USERS_API: 'https://es-user.social27.com/api',\r\n BASE_URL: 'https://agent-api.hivegpt.ai',\r\n AGENTS_API: 'https://hive-ai.social27.com/api',\r\n API_KEY: 'b621eb3f-0bd2-41d5-a48c-a8f8ab7d38f8',\r\n SocketUrl: 'https://notif-v2-ws.social27.com/'\r\n}\r\n\r\nexport const dev_environment = {\r\n USERS_API: 'https://pre-user.social27.com/api',\r\n BASE_URL: 'https://agent-api.hivegpt.ai',\r\n AGENTS_API: 'https://hive-ai.social27.com/api',\r\n API_KEY: 'b621eb3f-0bd2-41d5-a48c-a8f8ab7d38f8',\r\n SocketUrl: 'https://notif-v2-ws.social27.com/'\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Observable, Subject } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ConversationService {\r\n\r\n private storageKey = 'conversationKey';\r\n\r\n constructor() {\r\n\r\n }\r\n generateKey(): string {\r\n const timestamp = Math.floor(new Date().getTime() / 1000).toString(16);\r\n const randomHex = 'xxxxxxxxxxxxxxxx'.replace(/[x]/g, () => {\r\n return (Math.floor(Math.random() * 16)).toString(16);\r\n });\r\n return timestamp + randomHex;\r\n }\r\n private generateStorageKey(key: string): string {\r\n return `conversationKey_${key}`;\r\n }\r\n\r\n private ensureKeyExists(storageKey: string, key: string): void {\r\n if (!localStorage.getItem(storageKey)) {\r\n const newKey = this.generateKey();\r\n localStorage.setItem(storageKey, newKey);\r\n }\r\n }\r\n\r\n getKey(key: string): string {\r\n const storageKey = this.generateStorageKey(key);\r\n this.ensureKeyExists(storageKey, key);\r\n return localStorage.getItem(storageKey)!;\r\n }\r\n private userSepecificNotification: Subject<any> = new Subject<any>();\r\n sendValidatedUserData(message: any) {\r\n //console.log('lgging messages', message, new Date());\\\r\n\r\n this.userSepecificNotification.next(message);\r\n }\r\n getUserSpecificNotification(): Observable<any> {\r\n return this.userSepecificNotification.asObservable();\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Socket, SocketIoConfig } from 'ngx-socket-io';\r\nimport { prod_environment } from '../../environments/environment';\r\n\r\n@Injectable({\r\n providedIn: 'root' // This ensures the service is available across the application\r\n})\r\nexport class NotificationSocket extends Socket {\r\n constructor() {\r\n super(socketConfig);\r\n\r\n // Log connection status\r\n this.on('connect', () => {\r\n console.log('Socket connected');\r\n });\r\n\r\n this.on('disconnect', () => {\r\n console.warn('Socket disconnected');\r\n });\r\n\r\n this.on('connect_error', (err) => {\r\n console.error('Socket connection error:', err);\r\n });\r\n }\r\n}\r\n\r\nconst socketConfig: SocketIoConfig = {\r\n url: prod_environment.SocketUrl,\r\n options: {\r\n transports: ['websocket', 'polling'],\r\n reconnection: true,\r\n autoConnect: true,\r\n upgrade: true,\r\n reconnectionDelay: 1000,\r\n reconnectionDelayMax: 5000,\r\n reconnectionAttempts: Infinity\r\n }\r\n};","import { Injectable } from '@angular/core';\r\n\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { webSocket, WebSocketSubject } from 'rxjs/webSocket';\r\nimport { prod_environment } from '../../environments/environment';\r\nimport { ConversationService } from './conversation.service';\r\nimport { NotificationSocket } from './NotificationSocket';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class SocketService {\r\n public testMessage: string;\r\n private isCommonSocketInitialized = false;\r\n private isUserSpecificSocketInitialized = false;\r\n private isUserSpecificEventReleased = true;\r\n private messageQueue: any[] = [];\r\n private releaseInterval = 1000;\r\n private intervalSetup: boolean = false;\r\n\r\n constructor(\r\n private conversationService: ConversationService,\r\n private notificationSocket: NotificationSocket,\r\n ) {\r\n this.startReleasingMessages();\r\n }\r\n\r\n isSocketInitialized(isCommon: boolean) {\r\n return isCommon\r\n ? this.isCommonSocketInitialized\r\n : this.isUserSpecificSocketInitialized &&\r\n !this.isUserSpecificEventReleased;\r\n }\r\n\r\n disconnectSocketConnection() {\r\n this.notificationSocket.disconnect();\r\n }\r\n\r\n registerUserSpecificHiveSocket(botId: string, conversation_id: string) {\r\n const commonNotification = \"commonNotification\";\r\n\r\n this.notificationSocket.removeAllListeners(commonNotification);\r\n\r\n console.log('Registering user-specific Hive socket with botId:' + botId);\r\n console.log('and conversation_id:' + conversation_id);\r\n\r\n this.notificationSocket.emit('joinData', {\r\n groupId: `Hive_AI_Notifs_${botId}_${conversation_id}`,\r\n });\r\n\r\n this.notificationSocket\r\n .fromEvent(commonNotification)\r\n .subscribe((res) => {\r\n console.log('Received commonNotification:', res);\r\n this.conversationService.sendValidatedUserData(res);\r\n }, (error) => {\r\n console.error('Error receiving commonNotification:', error);\r\n });\r\n }\r\n\r\n private startReleasingMessages() {\r\n if (!this.intervalSetup) {\r\n setInterval(() => {\r\n if (this.messageQueue.length > 0) {\r\n const message = this.messageQueue.shift(); // Remove the first message from the queue\r\n // Handle the message here, e.g., send it to the server or process it\r\n console.log('Releasing message from queue:', message);\r\n // this.campaignService.sendValidatedUserData(message);\r\n }\r\n }, this.releaseInterval);\r\n this.intervalSetup = true; // Prevents multiple intervals\r\n }\r\n }\r\n}\r\n","// import { Platform } from '@angular/cdk/platform';\r\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n Input,\r\n OnChanges,\r\n OnInit,\r\n Output,\r\n QueryList,\r\n Renderer2,\r\n SimpleChanges,\r\n ViewChild,\r\n ViewChildren,\r\n} from '@angular/core';\r\nimport { MatDrawer } from '@angular/material/sidenav';\r\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\r\nimport { of, Subscription } from 'rxjs';\r\nimport { catchError, switchMap } from 'rxjs/operators';\r\nimport { formatNow, formatTimeStamps } from '../../utils/utils';\r\nimport {\r\n dev_environment,\r\n prod_environment,\r\n} from '../../../environments/environment';\r\nimport { ConversationService } from '../conversation.service';\r\nimport { Observable } from 'rxjs';\r\nimport { SocketService } from '../socket-service.service';\r\n\r\n@Component({\r\n selector: 'hivegpt-chat-drawer',\r\n templateUrl: './chat-drawer.component.html',\r\n styleUrls: ['./chat-drawer.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ChatDrawerComponent implements OnInit, OnChanges {\r\n @ViewChild('chatMain') private chatMain: ElementRef;\r\n @ViewChild('myInput') private myInput: ElementRef;\r\n @ViewChildren('closeplaygroundbutton')\r\n closePlaygroundButtons: QueryList<ElementRef>;\r\n @ViewChild('drawer') drawer!: MatDrawer;\r\n @ViewChild('sourcesDrawer') sourcesDrawer!: MatDrawer;\r\n @ViewChild('editorsDrawer') editorsDrawer!: MatDrawer;\r\n private bodyOverflowClass = 'body-overflow-hidden';\r\n @ViewChild('myTextarea', { static: false })\r\n myTextarea!: ElementRef<HTMLTextAreaElement>; // Reference to the textarea\r\n isCollapsedTrue = false;\r\n @Input() copilotName: string = 'HiveXGPT';\r\n @Input() firstName!: string;\r\n @Input() lastName!: string;\r\n @Input() apiKey!: string;\r\n @Input() bgBubbleAi!: string;\r\n @Input() bgBubbleUser!: string;\r\n @Input() bgGradient!: string[];\r\n @Input() botName!: string;\r\n @Input() botSkills!: string;\r\n @Input() botId!: string;\r\n @Input() closeButtonColor!: string;\r\n @Input() closeButtonbgColor!: string;\r\n @Input() credentials!: [];\r\n @Input() dateTimeColor!: string;\r\n @Input() dateTextColor!: string;\r\n @Input() eventId!: string;\r\n @Input() s27Token!: string;\r\n @Input() eventName!: string;\r\n @Input() botIcon!: string;\r\n @Input() formFieldBgColor!: string;\r\n @Input() formFieldTextColor!: string;\r\n @Input() fullView!: boolean;\r\n @Input() gradientColors!: string[];\r\n @Input() greeting!: string;\r\n @Input() messageTextColorAi!: string;\r\n @Input() messageTextColorUser!: string;\r\n @Input() rules!: string;\r\n @Input() sendButtonColor!: string;\r\n @Input() sendButtonTextColor!: string;\r\n @Input() showClose!: boolean;\r\n @Input() thumbsDownMessages!: string[];\r\n @Input() thumbsUpMessage!: string;\r\n @Input() timezone!: string;\r\n @Input() unknownResponses!: [];\r\n @Input() useOpenAi!: boolean;\r\n @Input() userId!: string;\r\n @Input() isDev!: boolean;\r\n\r\n @Input() againButtonColor!: string[];\r\n @Input() againButtonTextColor!: string[];\r\n @Output() feedbackEvent = new EventEmitter<string>();\r\n @Output() onCloseEvent = new EventEmitter<void>();\r\n @Output() openPage = new EventEmitter<any>();\r\n @Output() sessionActions = new EventEmitter<any>();\r\n @Output() closeBot = new EventEmitter<any>();\r\n @Output() connectWithUser = new EventEmitter<any>();\r\n @Output() scheduleMeeting = new EventEmitter<string>();\r\n @Output() refreshToken = new EventEmitter<any>();\r\n\r\n autogenKey = 'Autogen_eDJTtEU-NB0RtIpzq1w';\r\n addToMyAgendaAction = 'add_to_my_agenda';\r\n myUpcomingSessionAction = 'my_upcomming_session';\r\n connectOrFollowAction = 'connect_or_follow';\r\n aiResponse: string = '';\r\n chatLog: any[] = [];\r\n decoder = new TextDecoder();\r\n feedbackDone: boolean = false;\r\n greetingMsg: string = '';\r\n hasBackdropValue: boolean = false;\r\n input: string = '';\r\n listenerAdded = false;\r\n loading: boolean = false;\r\n mode: string = 'over';\r\n quickPrompts: any[] = [];\r\n thumbsDownMsgIndex = 0;\r\n userName: string = '';\r\n showStartAgain: boolean = false;\r\n isIOSDevice: boolean = false;\r\n showFeedBackIconsIndex: number | null = null;\r\n temperature: number = 1;\r\n speakers = [];\r\n environment: {\r\n USERS_API;\r\n BASE_URL;\r\n AGENTS_API;\r\n };\r\n pendingRequests: any;\r\n myConnections: any;\r\n conversationKey: string;\r\n isFetchDataFor: boolean;\r\n is401: boolean;\r\n msg: any;\r\n chat: any;\r\n\r\n constructor(\r\n private cdr: ChangeDetectorRef,\r\n private http: HttpClient,\r\n private sanitizer: DomSanitizer,\r\n private elementRef: ElementRef,\r\n private renderer: Renderer2,\r\n private socketService: SocketService,\r\n private conversationService: ConversationService // private platform: Platform\r\n ) {\r\n this.chatMain = new ElementRef(null);\r\n\r\n // if (this.platform.IOS) {\r\n // this.isIOSDevice = true;\r\n // }\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n console.log('ng on changes');\r\n if (changes.s27Token) {\r\n console.log('s27Token changed:', changes.s27Token);\r\n if (changes.s27Token.currentValue != changes.s27Token.previousValue) {\r\n console.log(\r\n 's27Token changed previous:',\r\n changes.s27Token.previousValue,\r\n ' current:',\r\n changes.s27Token.currentValue\r\n );\r\n this.s27Token = changes.s27Token.currentValue;\r\n\r\n console.log('isFetchDataFor: ', this.isFetchDataFor);\r\n console.log('msg: ', this.msg);\r\n console.log('chat: ', this.chat);\r\n if (this.is401) {\r\n if (this.isFetchDataFor) {\r\n this.fetchDataFor(this.msg, this.chat);\r\n } else {\r\n this.fetchData(this.msg);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n ngOnInit(): void {\r\n this.environment = this.isDev ? dev_environment : prod_environment;\r\n\r\n // this.fetchMyConnections().subscribe();\r\n // this.fetchPendingRequests().subscribe();\r\n\r\n this.changeTemperature(this.temperature);\r\n this.fetchBotConfig().subscribe(\r\n (res) => {\r\n this.cdr.markForCheck();\r\n\r\n this.fetchChatHistory().subscribe(\r\n (response) => {\r\n this.loading = false;\r\n this.mapChatHistory(response);\r\n this.cdr.markForCheck();\r\n },\r\n (err) => {\r\n console.error('Error fetching chat history:', err);\r\n }\r\n );\r\n },\r\n (err) => {\r\n console.error('Error fetching chat history:', err);\r\n }\r\n );\r\n this.fetchAgents();\r\n this.cdr.markForCheck();\r\n this.initializeSocket();\r\n setTimeout(() => {\r\n this.listenSockets();\r\n }, 200);\r\n }\r\n private eventSubscription: Subscription;\r\n initializeSocket() {\r\n const conversation_id = this.conversationService.getKey(this.botId);\r\n\r\n this.socketService.registerUserSpecificHiveSocket(\r\n this.botId,\r\n conversation_id\r\n );\r\n }\r\n\r\n subscriptionNew: any;\r\n socketData: any;\r\n\r\n listenSockets() {\r\n if (this.eventSubscription) {\r\n this.eventSubscription.unsubscribe();\r\n }\r\n this.eventSubscription = this.conversationService\r\n .getUserSpecificNotification()\r\n .subscribe(\r\n (res) => {\r\n // Check if OtherFields exists in the response\r\n if (res?.m?.OtherFields) {\r\n const {\r\n conversation_id,\r\n bot_id,\r\n message_id,\r\n answer,\r\n web_results,\r\n graphs,\r\n execution_graphs,\r\n online_search_terms,\r\n suggestions,\r\n } = res?.m?.OtherFields;\r\n console.log(\"message_id1\");\r\n console.log(res?.m?.OtherFields);\r\n var currentChatMessage = this.chatLog.find(\r\n (p) => p._id == message_id\r\n );\r\n console.log(this.chatLog);\r\n if (!currentChatMessage) {\r\n console.log(\"message_id2\");\r\n console.log(message_id);\r\n currentChatMessage = {\r\n _id: message_id,\r\n type: 'ai',\r\n time: formatNow(this.timezone),\r\n };\r\n\r\n this.chatLog.push(currentChatMessage);\r\n\r\n this.showFeedBackIconsIndex = this.chatLog.length - 1;\r\n console.log(\"message_id3\");\r\n console.log(message_id);\r\n this.cdr.detectChanges();\r\n }\r\n\r\n // Handle the fields based on their presence\r\n if (online_search_terms && Array.isArray(online_search_terms)) {\r\n console.log('Online Search Terms:', online_search_terms);\r\n currentChatMessage.searchTerms = online_search_terms;\r\n this.cdr.detectChanges();\r\n }\r\n\r\n if (web_results && Array.isArray(web_results)) {\r\n console.log('Web Results:', web_results);\r\n currentChatMessage.sourcesList = web_results;\r\n currentChatMessage.displayedSources = web_results?.slice(0, 3); // First 3 cards\r\n currentChatMessage.remainingSources = web_results?.slice(3); // Remaining items\r\n this.cdr.detectChanges();\r\n }\r\n\r\n if (answer) {\r\n this.isChatingWithAi = false;\r\n console.log('Answer:', answer);\r\n\r\n currentChatMessage.message =\r\n this.processMessageForDisplay(answer);\r\n this.cdr.detectChanges();\r\n this.scrollToBottom();\r\n }\r\n\r\n if (graphs && Array.isArray(graphs)) {\r\n console.log('Graphs:', graphs);\r\n currentChatMessage.graphs = graphs;\r\n this.cdr.detectChanges();\r\n }\r\n\r\n if (execution_graphs && Array.isArray(execution_graphs)) {\r\n console.log('Execution Graphs:', execution_graphs);\r\n currentChatMessage.executionGraphs = execution_graphs;\r\n this.cdr.detectChanges();\r\n }\r\n\r\n if (suggestions && Array.isArray(suggestions)) {\r\n console.log('suggestions:', suggestions);\r\n currentChatMessage.relatedListItems = suggestions;\r\n this.cdr.detectChanges();\r\n // Process online search terms as needed\r\n }\r\n\r\n // Add any other fields and their processing here\r\n } else {\r\n console.warn('OtherFields is missing in the response');\r\n }\r\n },\r\n (err) => {\r\n this.eventSubscription.unsubscribe();\r\n console.error('Error in fetching data from socket', err);\r\n }\r\n );\r\n }\r\n\r\n initializeSocketAndListen() { }\r\n handleEvent(data: any, type: string) {\r\n switch (type) {\r\n case 'webresult':\r\n break;\r\n case 'answer':\r\n break;\r\n case 'graph':\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n ngOnDestroy(): void {\r\n if (this.eventSubscription) {\r\n this.eventSubscription.unsubscribe();\r\n }\r\n //this.socketService.close();\r\n }\r\n changeTemperature(newTemperature: number) {\r\n if (this.loading) return;\r\n this.temperature = newTemperature;\r\n const wrapper = document.querySelector('.hivegpt-chat-wrapper');\r\n // Remove existing theme classes from body\r\n wrapper?.classList.remove('creative', 'balanced', 'precise');\r\n\r\n switch (newTemperature) {\r\n case 0:\r\n wrapper?.classList.add('creative');\r\n break;\r\n case 1:\r\n wrapper?.classList.add('balanced');\r\n break;\r\n case 2:\r\n wrapper?.classList.add('precise');\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n onStartAgain() {\r\n if (this.loading) return;\r\n this.showStartAgain = false;\r\n this.chatLog = [];\r\n this.chatLog.push({\r\n type: 'ai',\r\n message:\r\n this.greetingMsg ||\r\n this.processMessage(\r\n \"Greetings! I'm your COP28 virtual assistant. Have questions about the event? I'm here to help.\"\r\n ),\r\n time: formatNow(this.timezone),\r\n });\r\n this.archieveMessages().subscribe();\r\n }\r\n\r\n archieveMessages() {\r\n const headers = new HttpHeaders({\r\n 'Content-Type': 'application/json',\r\n 'x-api-key': this.apiKey,\r\n });\r\n const url = `${this.environment.BASE_URL}/bot/clear-history/${this.botId}/${this.userId}`;\r\n return this.http.post(url, {}, { headers }).pipe(\r\n switchMap((res: any) => {\r\n return of(res);\r\n }),\r\n catchError((error) => {\r\n return of(null);\r\n })\r\n );\r\n }\r\n\r\n fetchBotConfig() {\r\n this.loading = true;\r\n const url = `${this.environment.BASE_URL}/bots?bot_id=${this.botId}`;\r\n return this.http.get(url).pipe(\r\n switchMap((res: any) => {\r\n this.botName = res.Name;\r\n this.botIcon = res.Icon;\r\n this.botSkills = res?.Skills;\r\n this.greetingMsg = res.Greeting;\r\n\r\n this.thumbsDownMessages = res?.NegativeResponses?.length\r\n ? res.NegativeResponses\r\n : [\r\n \"We are sorry we've not been able to answer your question.<br/> However, our dedicated support team is happy to help. <span class='feedback-link' style='cursor: pointer; text-decoration: underline; font-weight: 700; color: #17235B;'>Please click here</span> and a human agent will assist you as soon as possible\",\r\n ];\r\n this.quickPrompts = res.QuickPrompts;\r\n this.cdr.markForCheck();\r\n this.loading = false;\r\n return of(res);\r\n }),\r\n catchError((error) => {\r\n console.error('Error fetching chatbot config: ', error);\r\n this.loading = false;\r\n return of(null);\r\n })\r\n );\r\n }\r\n\r\n fetchChatHistory(): Observable<any> {\r\n this.loading = true;\r\n this.conversationKey = this.conversationService.getKey(this.botId);\r\n const url = `${this.environment.BASE_URL}/conversations/${this.conversationKey}`;\r\n const headers = new HttpHeaders({\r\n accept: 'application/json',\r\n });\r\n\r\n return this.http\r\n .get(url, { headers })\r\n .pipe(catchError(this.handleError<any>('fetchConversation')));\r\n }\r\n\r\n private handleError<T>(operation = 'operation', result?: T) {\r\n return (error: any): Observable<T> => {\r\n console.error(`${operation} failed: ${error.message}`);\r\n return of(result as T);\r\n };\r\n }\r\n // fetchChatHistory() {\r\n // this.loading = true;\r\n // const headers = new HttpHeaders({\r\n // 'Content-Type': 'application/json',\r\n // 'x-api-key': this.apiKey,\r\n // });\r\n // return this.http\r\n // .get(`${this.environment.BASE_URL}/conversations/${this.conversationKey}`, { headers })\r\n // .pipe(\r\n // switchMap((res: any) => {\r\n // this.loading = false;\r\n // return of(res);\r\n // }),\r\n // catchError((error: any) => {\r\n // console.error('Error fetching chat history: ', error);\r\n // this.loading = false;\r\n // return of(null);\r\n // })\r\n // );\r\n // }\r\n\r\n mapChatHistory(chats: any) {\r\n this.chatLog.push({\r\n type: 'ai',\r\n message:\r\n this.greetingMsg ||\r\n this.processMessage(\r\n \"Greetings! I'm your COP28 virtual assistant. Have questions about the event? I'm here to help.\"\r\n ),\r\n time: formatNow(this.timezone),\r\n });\r\n if (chats && chats?.Messages?.length) {\r\n chats?.Messages.forEach((chat: any) => {\r\n if (chat.Type == 'user') {\r\n this.chatLog.push({\r\n type: 'user',\r\n message: this.processMessageForDisplay(chat.Text),\r\n time: formatTimeStamps(this.timezone, chat.InsertTimestamp),\r\n copied: false,\r\n isCollapsedTrue: false,\r\n });\r\n }\r\n if (chat.Type == 'ai') {\r\n var sourcesList = chat.WebLinks || [];\r\n var displayedSources = chat.WebLinks.slice(0, 3); // First 3 cards\r\n var remainingSources = chat.WebLinks.slice(3); // Remaining items\r\n\r\n this.chatLog.push({\r\n type: 'ai',\r\n message: this.processMessageForDisplay(chat.Text),\r\n executionGraphs: chat.ExecutionGraphs,\r\n graphs: chat.Graphs,\r\n searchTerms: chat.SearchTerms,\r\n sourcesList: sourcesList,\r\n displayedSources: displayedSources,\r\n remainingSources: remainingSources,\r\n time: formatTimeStamps(this.timezone, chat.InsertTimestamp),\r\n copied: false,\r\n isCollapsedTrue: false,\r\n });\r\n this.showFeedBackIconsIndex = this.chatLog.length - 1;\r\n }\r\n });\r\n this.showStartAgain = true;\r\n }\r\n this.scrollToBottom();\r\n this.cdr.markForCheck();\r\n }\r\n\r\n processMessage(message: string): SafeHtml {\r\n if (!message || !(message?.length > 0)) {\r\n return '';\r\n }\r\n\r\n // console.log('here is my message')\r\n // console.log(message);\r\n\r\n message = message.trim();\r\n\r\n const markdownLinkRegex = /\\[([^[]+)]\\(([^)]+)\\)/g;\r\n const urlRegex = /(?<!href=\")\\bhttps?:\\/\\/\\S+(?<![.,])/gi;\r\n\r\n if (markdownLinkRegex.test(message)) {\r\n const html = message.replace(\r\n markdownLinkRegex,\r\n '<a href=\"$2\" target=\"_blank\">$1</a>'\r\n );\r\n //console.log('Sanitized message: ', message);\r\n return this.sanitizeHtml(html);\r\n }\r\n\r\n if (urlRegex.test(message)) {\r\n const html = message.replace(\r\n urlRegex,\r\n '<a href=\"$&\" target=\"_blank\">$&</a>'\r\n );\r\n // console.log('Sanitized message: ', message);\r\n return this.sanitizeHtml(html);\r\n }\r\n\r\n message = message.replace(/(?:\\r\\n|\\r|\\n)/g, '<br>');\r\n\r\n message = message.replace(/\\*\\*(.*?)\\*\\*/g, '<strong>$1</strong>');\r\n // Convert Markdown headers to HTML headers\r\n message = message.replace(/^(#{1,6})\\s+(.*)$/gm, (match, hashes, text) => {\r\n const level = hashes.length;\r\n return `<h${level}>${text}</h${level}>`;\r\n });\r\n\r\n this.cdr.markForCheck();\r\n const sanitizedMessage = this.sanitizeHtml(message);\r\n return sanitizedMessage;\r\n }\r\n\r\n ngAfterViewChecked() {\r\n const feedbackLinks =\r\n this.elementRef.nativeElement.querySelectorAll('.feedback-link');\r\n feedbackLinks.forEach((link: any) => {\r\n link.addEventListener(\r\n 'click',\r\n this.onFeedbackClick.bind(this, 'zendesk')\r\n );\r\n });\r\n // if (this.elementRef.nativeElement.querySelector('.feedback-link')) {\r\n // this.elementRef.nativeElement\r\n // .querySelector('.feedback-link')\r\n // .addEventListener('click', this.onFeedbackClick.bind(this, 'zendesk'));\r\n // }\r\n }\r\n\r\n sanitizeHtml(html: string): SafeHtml {\r\n return this.sanitizer.bypassSecurityTrustHtml(html);\r\n }\r\n\r\n onFeedbackClick(value: string) {\r\n this.feedbackEvent.emit(value);\r\n }\r\n\r\n onClose() {\r\n this.renderer.removeClass(document.body, this.bodyOverflowClass);\r\n this.onCloseEvent.emit();\r\n }\r\n\r\n sendMessageWithTile(prompt: string) {\r\n this.input = prompt;\r\n this.fetchData();\r\n this.scrollToBottom();\r\n }\r\n isChatingWithAi = false;\r\n fetchData(msg = null) {\r\n this.input = msg || this.input?.trim();\r\n this.msg = this.input;\r\n if (!this.input || this.loading) {\r\n return;\r\n }\r\n\r\n this.chatLog.push({\r\n type: 'user',\r\n message: this.processMessageForDisplay(this.input),\r\n time: formatNow(this.timezone),\r\n copied: false,\r\n isCollapsedTrue: false,\r\n });\r\n\r\n try {\r\n const textarea = this.myInput.nativeElement;\r\n textarea.style.height = 'hidden'; // Reset the height\r\n textarea.style.height = `62px`;\r\n } catch (error) { }\r\n this.cdr.markForCheck();\r\n\r\n this.aiResponse = '';\r\n this.isChatingWithAi = true;\r\n\r\n const url = `${this.environment.BASE_URL}/ai/ask`; // +\r\n // (this.useOpenAi === false ? '/llm-hf' : '');\r\n fetch(url, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: 'Bearer ' + this.s27Token,\r\n 'x-api-key': this.apiKey,\r\n },\r\n body: JSON.stringify({\r\n user_question: this.input,\r\n user_id: this.userId,\r\n bot_id: this.botId,\r\n message_id: this.conversationService.generateKey(),\r\n agents: this.agents.filter((p) => p.selected).map((p) => p.id),\r\n conversation_id: this.conversationKey,\r\n }),\r\n })\r\n .then((response) => {\r\n if (response.status === 401 || response.status === 403) {\r\n this.is401 = true;\r\n this.refreshToken.emit();\r\n } else {\r\n this.is401 = false;\r\n }\r\n return response.json(); // Continue processing the response\r\n })\r\n .then((data) => {\r\n // Handle the response data\r\n console.log(data);\r\n })\r\n .catch((err) => {\r\n console.error('Error: ', err);\r\n this.isChatingWithAi = false;\r\n });\r\n\r\n this.input = '';\r\n }\r\n fetchDataFor(msg, chat) {\r\n const inputMsg = msg?.trim();\r\n if (!inputMsg || this.loading) {\r\n return;\r\n }\r\n try {\r\n chat.relatedListItems = [];\r\n this.cdr.detectChanges();\r\n } catch (error) { }\r\n\r\n this.scrollToBottom();\r\n this.chatLog.push({\r\n type: 'user',\r\n message: this.processMessageForDisplay(inputMsg),\r\n time: formatNow(this.timezone),\r\n copied: false,\r\n isCollapsedTrue: false,\r\n });\r\n\r\n this.cdr.markForCheck();\r\n\r\n this.aiResponse = '';\r\n this.isChatingWithAi = true;\r\n\r\n const url = `${this.environment.BASE_URL}/ai/ask`; // +\r\n // (this.useOpenAi === false ? '/llm-hf' : '');\r\n fetch(url, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: 'Bearer ' + this.s27Token,\r\n 'x-api-key': this.apiKey,\r\n },\r\n body: JSON.stringify({\r\n user_question: inputMsg,\r\n user_id: this.userId,\r\n bot_id: this.botId,\r\n message_id: this.conversationService.generateKey(),\r\n agents: this.agents.filter((p) => p.selected).map((p) => p.id),\r\n conversation_id: this.conversationKey,\r\n }),\r\n })\r\n .then((response) => {\r\n if (response.status === 401 || response.status === 403) {\r\n this.msg = msg;\r\n this.chat = chat;\r\n this.is401 = true;\r\n this.isFetchDataFor = true;\r\n this.refreshToken.emit();\r\n } else {\r\n this.is401 = false;\r\n }\r\n return response.json(); // Continue processing the response\r\n })\r\n .then((data) => {\r\n // Handle the response data\r\n console.log(data);\r\n })\r\n .catch((err) => {\r\n console.error('Error: ', err);\r\n this.isChatingWithAi = false;\r\n });\r\n this.input = '';\r\n }\r\n fetchSmallTalk() {\r\n this.loading = true;\r\n this.cdr.markForCheck();\r\n\r\n const url = `${this.environment.BASE_URL}/bot/small-talk/${this.botId}/${this.userId}`;\r\n\r\n this.http\r\n .get<{ smallTalk: string }>(url, {\r\n headers: {\r\n 'x-api-key': this.apiKey,\r\n },\r\n })\r\n .pipe(\r\n catchError((error) => {\r\n console.error('Error while fetching small talk:', error);\r\n\r\n return of(null);\r\n })\r\n )\r\n .subscribe((response) => {\r\n this.loading = false;\r\n this.cdr.markForCheck();\r\n\r\n if (!response) {\r\n return;\r\n }\r\n\r\n if (response && response.smallTalk) {\r\n this.chatLog.push({\r\n type: 'ai',\r\n message: this.processMessage(response.smallTalk),\r\n time: formatNow(this.timezone),\r\n isFeedbackMsg: true,\r\n });\r\n this.showFeedBackIconsIndex = this.chatLog.length - 2;\r\n // this.scrollToBottom();\r\n this.cdr.markForCheck();\r\n }\r\n });\r\n }\r\n\r\n readAllChunks = (stream: any) => {\r\n const reader = stream.getReader();\r\n const allSuggestions: string[] = [];\r\n\r\n reader.closed.catch((err: any) => {\r\n if (err) {\r\n console.error('Error reading stream: ', err);\r\n }\r\n\r\n this.isChatingWithAi = false;\r\n this.scrollToBottom();\r\n return;\r\n });\r\n\r\n return new ReadableStream({\r\n start: (controller) => {\r\n return this.pump(controller, reader, allSuggestions);\r\n },\r\n });\r\n };\r\n\r\n pump(controller: any, reader: any, allSuggestions: string[]) {\r\n reader.read().then(({ done, value }: any) => {\r\n const lastItem = this.chatLog[this.chatLog.length - 1];\r\n\r\n if (done) {\r\n lastItem.message = this.processMessageForDisplay(lastItem.message);\r\n this.chatLog.pop();\r\n this.chatLog.push(lastItem);\r\n if (allSuggestions?.length) {\r\n this.chatLog.push({\r\n type: 'suggestions',\r\n suggestions: allSuggestions,\r\n });\r\n }\r\n\r\n controller.close();\r\n this.isChatingWithAi = false;\r\n // this.scrollToBottom();\r\n this.cdr.markForCheck();\r\n this.showStartAgain = true;\r\n\r\n // setTimeout(() => {\r\n // this.fetchSmallTalk();\r\n // },1000)\r\n return;\r\n }\r\n\r\n let decodedChunk = this.decoder.decode(value, { stream: true });\r\n this.aiResponse += decodedChunk;\r\n if (lastItem.type === 'ai') {\r\n const suggestionsMatch = this.aiResponse.match(/<sug>(.*?)<\\/sug>/g);\r\n if (suggestionsMatch) {\r\n suggestionsMatch.forEach((match) => {\r\n this.aiResponse = this.aiResponse.replace(match, '');\r\n allSuggestions.push(match?.replace(/<\\/?sug>/g, ''));\r\n });\r\n }\r\n\r\n lastItem.message = this.aiResponse;\r\n this.cdr.markForCheck();\r\n } else {\r\n this.isChatingWithAi = false;\r\n\r\n let aiFormattedData: any;\r\n\r\n try {\r\n console.log('parsing json ');\r\n aiFormattedData = JSON.parse(JSON.parse(this.aiResponse));\r\n } catch (e) {\r\n try {\r\n console.log('parsing json 2');\r\n aiFormattedData = JSON.parse(this.aiResponse);\r\n } catch (e) { }\r\n }\r\n\r\n console.log('parsing json done');\r\n\r\n if (aiFormattedData && aiFormattedData?.section_id?.length > 0) {\r\n if (\r\n aiFormattedData.section_id == 'company_search' ||\r\n aiFormattedData.section_id == 'user_search' ||\r\n aiFormattedData.section_id == 'industry_company_search'\r\n ) {\r\n this.fetchMyConnections().subscribe();\r\n this.fetchPendingRequests().subscribe();\r\n }\r\n\r\n if (aiFormattedData.section_id == this.myUpcomingSessionAction) {\r\n var speakerIds = [];\r\n aiFormattedData.content?.forEach((session) => {\r\n speakerIds = [...speakerIds, ...session.speakers];\r\n });\r\n\r\n if (speakerIds?.length > 0) this.getSpeakersByStaffIds(speakerIds);\r\n }\r\n\r\n if (\r\n aiFormattedData.section_id == this.addToMyAgendaAction &&\r\n aiFormattedData.content?.length > 0\r\n ) {\r\n this.openPage.next({\r\n sectionId: aiFormattedData.section_id,\r\n sessionIds: aiFormattedData.content,\r\n });\r\n }\r\n\r\n if (aiFormattedData.section_id == this.connectOrFollowAction) {\r\n let usersLen = aiFormattedData.content?.length;\r\n if (usersLen > 1) {\r\n this.openPage.next({\r\n sectionId: 'open_networking_drawer',\r\n search: aiFormattedData.content,\r\n });\r\n } else if (usersLen == 1) {\r\n this.openPage.next({\r\n sectionId: aiFormattedData.section_id,\r\n connetUserIds: [aiFormattedData.content[0].userId],\r\n });\r\n }\r\n }\r\n\r\n if (aiFormattedData.is_open_page == 'true') {\r\n this.openPage.next({\r\n sectionId: aiFormattedData.section_id,\r\n search: aiFormattedData.content,\r\n });\r\n\r\n if (this.isMobileBrowser()) {\r\n aiFormattedData.message +=\r\n '\\n\\n' + '<a id=\"closeBotNow\">Click Here</a> to see results.';\r\n }\r\n }\r\n\r\n this.chatLog.push({\r\n type: 'ai',\r\n message: aiFormattedData.message,\r\n action: aiFormattedData,\r\n time: formatNow(this.timezone),\r\n });\r\n\r\n if (this.isMobileBrowser()) {\r\n setTimeout(() => {\r\n this.addCloseBotClickEvent();\r\n }, 500);\r\n }\r\n\r\n this.aiResponse = '';\r\n } else {\r\n this.chatLog.push({\r\n type: 'ai',\r\n message: this.aiResponse,\r\n time: formatNow(this.timezone),\r\n });\r\n }\r\n\r\n this.showFeedBackIconsIndex = this.chatLog.length - 1;\r\n this.cdr.markForCheck();\r\n }\r\n\r\n this.scrollToBottom();\r\n\r\n // Enqueue the next data chunk into our target stream\r\n controller.enqueue(value);\r\n this.pump(controller, reader, allSuggestions);\r\n });\r\n }\r\n\r\n submitFeedback(flag: boolean) {\r\n this.feedbackDone = true;\r\n this.showFeedBackIconsIndex = null;\r\n const url = `${this.environment.BASE_URL}/bot/feedback`;\r\n fetch(url, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'x-api-key': this.apiKey,\r\n },\r\n body: JSON.stringify({ flag, user_id: this.userId, bot_id: this.botId }),\r\n }).then(() => {\r\n if (flag) {\r\n this.chatLog.push({\r\n type: 'ai',\r\n message:\r\n this.thumbsUpMessage ||\r\n `Great. May I assist you with anything else?`,\r\n time: formatNow(this.timezone),\r\n isFeedbackMsg: true,\r\n });\r\n\r\n this.scrollToBottom();\r\n this.cdr.markForCheck();\r\n this.feedbackDone = false;\r\n this.showFeedBackIconsIndex = null;\r\n return;\r\n }\r\n\r\n this.chatLog.push({\r\n type: 'ai',\r\n message: this.processMessage(\r\n this.thumbsDownMessages[this.thumbsDownMsgIndex]\r\n ),\r\n time: formatNow(this.timezone),\r\n isFeedbackMsg: true,\r\n });\r\n this.thumbsDownMsgIndex =\r\n (this.thumbsDownMsgIndex + 1) % this.thumbsDownMessages.length;\r\n this.scrollToBottom();\r\n this.cdr.markForCheck();\r\n this.feedbackDone = false;\r\n this.showFeedBackIconsIndex = null;\r\n });\r\n }\r\n\r\n handleSubmit() {\r\n this.fetchData();\r\n this.scrollToBottom();\r\n }\r\n\r\n handleUpClick(idx: any) {\r\n if (this.feedbackDone) {\r\n return;\r\n }\r\n\r\n this.submitFeedback(true);\r\n this.chatLog[idx].liked = !this.chatLog[idx].liked;\r\n\r\n if (this.chatLog[idx].unliked) {\r\n this.chatLog[idx].unliked = !this.chatLog[idx].unliked;\r\n }\r\n\r\n this.cdr.markForCheck();\r\n }\r\n\r\n handleDownClick(idx: any) {\r\n if (this.feedbackDone) return;\r\n this.submitFeedback(false);\r\n this.chatLog[idx].unliked = !this.chatLog[idx].unliked;\r\n if (this.chatLog[idx].liked)\r\n this.chatLog[idx].liked = !this.chatLog[idx].liked;\r\n }\r\n // handleCopyClick(index: any) {\r\n // // Copy the message to the clipboard\r\n // const contentToCopy = this.chatLog[index].message;\r\n // console.log('contentToCopy');\r\n // console.log(contentToCopy);\r\n // navigator.clipboard.writeText(contentToCopy).then(() => {\r\n // // Indicate that the message was copied\r\n // this.chatLog[index].copied = true;\r\n // this.cdr.detectChanges();\r\n // // Reset the copied state after a delay\r\n // setTimeout(() => {\r\n // this.chatLog[index].copied = false;\r\n // this.cdr.detectChanges();\r\n // }, 2000); // Reset after 2 seconds\r\n // });\r\n // }\r\n copyText(id, index) {\r\n // Get the text element\r\n var textElement = document.getElementById(id);\r\n\r\n // Create a temporary textarea element to copy the text\r\n var tempTextArea = document.createElement('textarea');\r\n tempTextArea.value = textElement.innerText;\r\n\r\n // Append the textarea to the body (necessary for the execCommand to work)\r\n document.body.appendChild(tempTextArea);\r\n\r\n // Select the text inside the textarea\r\n tempTextArea.select();\r\n\r\n // Copy the text to the clipboard\r\n document.execCommand('copy');\r\n\r\n // Remove the temporary textarea\r\n document.body.removeChild(tempTextArea);\r\n\r\n // Optionally, you can alert the user or change the button text to indicate the copy was successful\r\n // alert('Text copied to clipboard!');\r\n\r\n this.chatLog[index].copied = true;\r\n this.cdr.detectChanges();\r\n // Reset the copied state after a delay\r\n setTimeout(() => {\r\n this.chatLog[index].copied = false;\r\n this.cdr.detectChanges();\r\n }, 2000); // Reset after 2 seconds\r\n }\r\n handleCopyClick(index: any) {\r\n // Copy the message to the clipboard\r\n const contentToCopy = this.chatLog[index].message;\r\n const resutlt = this.copyText(\"messageText_\" + index, index);\r\n\r\n }\r\n\r\n\r\n sanitizeHTML(html: string): string {\r\n const doc = new DOMParser().parseFromString(html, 'text/html');\r\n\r\n // Create a new document fragment to hold the simplified content\r\n const fragment = document.createDocumentFragment();\r\n\r\n // Append the children of the body of the parsed document to the fragment\r\n Array.from(doc.body.childNodes).forEach(node => {\r\n fragment.appendChild(node.cloneNode(true));\r\n });\r\n\r\n // Create a new div element to hold the simplified HTML\r\n const simplifiedDiv = document.createElement('div');\r\n simplifiedDiv.appendChild(fragment);\r\n\r\n // Remove complex tags or attributes as needed\r\n // Example: remove scripts\r\n simplifiedDiv.querySelectorAll('script').forEach(script => script.remove());\r\n\r\n // Return the simplified HTML as a string\r\n return simplifiedDiv.innerHTML;\r\n }\r\n\r\n currentMessageForEditor: any = '';\r\n currentIndexForEditor: any = -1;\r\n handleEditorClick(index: any) {\r\n\r\n if (this.currentIndexForEditor == -1) {\r\n this.currentIndexForEditor = index;\r\n this.currentMessageForEditor = this.sanitizeHTML(this.chatLog[index].message);\r\n this.currentMessageForEditor = this.currentMessageForEditor.replace('SafeValue must use [property]=binding:', '');\r\n this.cdr.detectChanges();\r\n } else {\r\n if (this.currentIndexForEditor == index) {\r\n this.currentMessageForEditor += this.sanitizeHTML(this.chatLog[index].message);\r\n this.currentMessageForEditor = this.currentMessageForEditor.replace('SafeValue must use [property]=binding:', '');\r\n this.cdr.detectChanges();\r\n } else {\r\n this.currentIndexForEditor = index;\r\n this.currentMessageForEditor = this.sanitizeHTML(this.chatLog[index].message);\r\n this.currentMessageForEditor = this.currentMessageForEditor.replace('SafeValue must use [property]=binding:', '');\r\n this.cdr.detectChanges();\r\n }\r\n\r\n }\r\n this.chatLog[index].isEditor = true;\r\n this.cdr.detectChanges();\r\n // Reset the copied state after a delay\r\n setTimeout(() => {\r\n this.chatLog[index].isEditor = false;\r\n this.cdr.detectChanges();\r\n }, 2000); // Reset after 2 seconds\r\n this.editorsDrawer.open();\r\n const button = document.getElementById('botcloseplaygroundbutton');\r\n if (button) {\r\n button.style.display = 'none';\r\n }\r\n this.cdr.detectChanges();\r\n\r\n }\r\n scrollToBottom() {\r\n let counter = 0;\r\n const interval = setInterval(() => {\r\n this.chatMain.nativeElement.scrollTop =\r\n this.chatMain.nativeElement.scrollHeight;\r\n if (counter++ > 5) clearInterval(interval);\r\n }, 5);\r\n }\r\n\r\n handleAction(action: any) {\r\n console.info('incoming action from the chatbot AI');\r\n console.info(action);\r\n\r\n if (action?.content) {\r\n }\r\n }\r\n\r\n ngAfterViewInit() {\r\n // Check if the drawer is initially open and apply overflow hidden to body if so\r\n if (this.drawer.opened) {\r\n this.setBodyOverflow();\r\n }\r\n\r\n // Listen to changes in the drawer being opened or closed\r\n this.drawer.openedChange.subscribe((opened: boolean) => {\r\n if (opened) {\r\n this.setBodyOverflow();\r\n } else {\r\n this.removeBodyOverflow();\r\n }\r\n });\r\n\r\n this.drawer.openedChange.subscribe((opened) => {\r\n if (opened) {\r\n setTimeout(() => {\r\n if (this.myTextarea && this.myTextarea.nativeElement) {\r\n this.myTextarea.nativeElement.focus(); // Focus on the textarea\r\n }\r\n });\r\n }\r\n });\r\n }\r\n\r\n private setBodyOverflow() {\r\n this.renderer.addClass(document.body, this.bodyOverflowClass);\r\n }\r\n\r\n private removeBodyOverflow() {\r\n this.renderer.removeClass(document.body, this.bodyOverflowClass);\r\n }\r\n\r\n getSpeakersByStaffIds(ids) {\r\n const url = `${this.environment.USERS_API}/events/${this.eventId}/users/get-by-staff-ids`;\r\n fetch(url, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: 'Bearer ' + 'your_token_here',\r\n },\r\n body: JSON.stringify(ids),\r\n })\r\n .then((response) => {\r\n if (response.ok) {\r\n return response.json(); // Parse the JSON body of the response\r\n } else {\r\n throw new Error('Network response was not ok.');\r\n }\r\n })\r\n .then((data) => {\r\n if (data?.length > 0) {\r\n data.forEach((speaker) => {\r\n this.speakers[speaker.id] = speaker;\r\n });\r\n\r\n this.cdr.markForCheck();\r\n }\r\n })\r\n .catch((err) => {\r\n console.error('Error fetching data:', err);\r\n this.loading = false;\r\n });\r\n }\r\n\r\n performSessionAction(sessionId, action) {\r\n this.sessionActions.next({\r\n sessionId,\r\n action,\r\n });\r\n }\r\n\r\n addCloseBotClickEvent() {\r\n const element = this.elementRef.nativeElement.querySelector('#closeBotNow');\r\n if (element) {\r\n this.renderer.listen(element, 'click', () => {\r\n this.closeBot.next();\r\n });\r\n }\r\n }\r\n\r\n isMobileBrowser() {\r\n return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(\r\n navigator.userAgent\r\n );\r\n }\r\n\r\n connectToUser(userId) {\r\n this.connectWithUser.emit({\r\n connect: !this.canDisconnect(userId),\r\n userId,\r\n });\r\n\r\n setTimeout(() => {\r\n this.fetchMyConnections().subscribe((res) => {\r\n this.cdr.markForCheck();\r\n });\r\n this.fetchPendingRequests().subscribe((res) => {\r\n this.cdr.markForCheck();\r\n });\r\n }, 500);\r\n }\r\n\r\n scheduleMeetingWithUser(user) {\r\n this.scheduleMeeting.emit(user);\r\n }\r\n\r\n canConnect(userId) {\r\n return !(\r\n this.canDisconnect(userId) ||\r\n this.pendingRequests.find((a) => a == userId)\r\n );\r\n }\r\n\r\n canDisconnect(userId) {\r\n return this.myConnections.find((conn) => conn.userId == userId);\r\n }\r\n\r\n fetchPendingRequests() {\r\n const headers = new HttpHeaders({\r\n 'Content-Type': 'application/json',\r\n apiKey: this.autogenKey,\r\n });\r\n return this.http\r\n .get(\r\n `${this.environment.USERS_API}/events/${this.eventId}/connection-requests/autogen/pending-sent-requests?userId=${this.userId}`,\r\n { headers }\r\n )\r\n .pipe(\r\n switchMap((res: any) => {\r\n this.pendingRequests = res;\r\n this.cdr.markForCheck();\r\n return of(res);\r\n }),\r\n catchError((error: any) => {\r\n console.error('Error fetching pending requests: ', error);\r\n return of(null);\r\n })\r\n );\r\n }\r\n\r\n fetchMyConnections() {\r\n const headers = new HttpHeaders({\r\n 'Content-Type': 'application/json',\r\n apiKey: this.autogenKey,\r\n });\r\n return this.http\r\n .get(\r\n `${this.environment.USERS_API}/events/${this.eventId}/users-connections/autogen?userId=${this.userId}`,\r\n { headers }\r\n )\r\n .pipe(\r\n switchMap((res: any) => {\r\n this.myConnections = res;\r\n this.cdr.markForCheck();\r\n return of(res);\r\n }),\r\n catchError((error: any) => {\r\n console.error('Error fetching pending requests: ', error);\r\n return of(null);\r\n })\r\n );\r\n }\r\n\r\n isDropdownOpen: boolean = false;\r\n agents: any;\r\n selectedAgents = [];\r\n allSelected = false;\r\n // Toggle the dropdown visibility\r\n toggleDropdown() {\r\n this.isDropdownOpen = !this.isDropdownOpen;\r\n }\r\n\r\n onSelectAll(event: Event): void {\r\n this.agents?.forEach((agent) => (agent.selected = false));\r\n this.cdr.detectChanges();\r\n }\r\n\r\n onAgentChange(agent: any): void {\r\n //agent.selected = !agent.selected;\r\n //console.log(agent);\r\n let agentFound = this.agents.filter((p) => p.id == agent.id);\r\n if (agentFound && agentFound.length > 0) {\r\n agentFound[0].selected = !agentFound[0].selected;\r\n this.cdr.detectChanges();\r\n }\r\n this.cdr.detectChanges();\r\n }\r\n\r\n areAllSelected(): boolean {\r\n return this.agents?.every((agent) => !agent.selected);\r\n }\r\n\r\n getDropdownHeaderText(): string {\r\n const selectedAgents = this.agents?.filter((agent) => agent.selected);\r\n if (selectedAgents && selectedAgents?.length === 0) {\r\n return 'All Agents';\r\n } else {\r\n return selectedAgents?.length > 1\r\n ? `${selectedAgents?.length} Agents Selected`\r\n : `${selectedAgents?.length} Agent Selected`;\r\n }\r\n }\r\n fetchAgents_http() {\r\n this.loading = true;\r\n const url = `${this.environment.AGENTS_API}/CoPilot/${this.botId}/active-agents`;\r\n const headers = new HttpHeaders({\r\n 'Content-Type': 'application/json',\r\n });\r\n\r\n return this.http.post(url, {}, { headers }).pipe(\r\n switchMap((res: any) => {\r\n if (res) {\r\n this.agents = res.map((agent) => ({\r\n ...agent,\r\n selected: false,\r\n }));\r\n }\r\n this.cdr.markForCheck();\r\n\r\n return of(res);\r\n }),\r\n catchError((error) => {\r\n console.error('Error fetching chatbot config: ', error);\r\n\r\n return of(null);\r\n })\r\n );\r\n }\r\n\r\n fetchAgents() {\r\n this.fetchAgents_http().subscribe();\r\n }\r\n\r\n // events/${eventId}/users-connections\r\n processMessageForDisplay(markdown: string): SafeHtml {\r\n if (!markdown || !(markdown.length > 0)) {\r\n console.error('Input Markdown is null or empty');\r\n return '';\r\n }\r\n\r\n //console.log('Markdown input:', markdown);\r\n\r\n // Convert Markdown headers to HTML headers\r\n let html = markdown.replace(\r\n /^(#{1,6})\\s+(.*)$/gm,\r\n (match, hashes, text) => {\r\n const level = hashes.length;\r\n return `<h${level}>${text}</h${level}>`;\r\n }\r\n );\r\n\r\n // console.log('After header conversion:', html);\r\n\r\n // Convert Markdown links to HTML links\r\n html = html.replace(\r\n /\\[([^\\]]+)]\\(([^)]+)\\)/g,\r\n '<a href=\"$2\" target=\"_blank\">$1</a>'\r\n );\r\n\r\n // console.log('After link conversion:', html);\r\n\r\n // Convert Markdown bold to HTML strong\r\n html = html.replace(/\\*\\*(.*?)\\*\\*/g, '<strong>$1</strong>');\r\n\r\n //console.log('After bold conversion:', html);\r\n\r\n // Convert new lines to <br> tags\r\n html = html.replace(/(?:\\r\\n|\\r|\\n)/g, '<br>');\r\n\r\n // console.log('After line breaks conversion:', html);\r\n\r\n // Optional: Sanitize the HTML to prevent XSS\r\n const sanitizedHtml = this.sanitizeHtml(html);\r\n\r\n // console.log('Sanitized HTML:', sanitizedHtml);\r\n\r\n return sanitizedHtml;\r\n }\r\n isCollapsed = false;\r\n isCollapsedForGraph = false;\r\n isCollapsedForFGraph = false;\r\n toggleCollapse() {\r\n this.isCollapsed = !this.isCollapsed;\r\n this.cdr.detectChanges();\r\n }\r\n\r\n toggleCollapseGraph() {\r\n this.isCollapsedForGraph = !this.isCollapsedForGraph;\r\n this.cdr.detectChanges();\r\n }\r\n toggleCollapseFGraph() {\r\n this.isCollapsedForFGraph = !this.isCollapsedForFGraph;\r\n this.cdr.detectChanges();\r\n }\r\n // [\r\n // {\r\n // \"title\": \"AI News January 2024: In-Depth and Concise - The AI Track\",\r\n // \"desc\": \"Each month, we compile significant news, trends, and happenings in AI, providing detailed summaries with key points in bullet form for concise yet complete understanding.\",\r\n // \"link\": \"https://theaitrack.com/ai-news-january-2024/\"\r\n // },\r\n // {\r\n // \"title\": \"Top AI News, January 2024 - Everypixel Journal\",\r\n // \"desc\": \"In this monthly roundup, we spotlight the top AI news stories from January, including the OpenAI vs. The New York Times Lawsuit.\",\r\n // \"link\": \"https://journal.everypixel.com/top-ai-news-january-2024\"\r\n // },\r\n // {\r\n // \"title\": \"AI News July 2024: In-Depth and Concise - The AI Track\",\r\n // \"desc\": \"This page features AI News for July 2024, highlighting significant events such as Canva acquiring Leonardo AI.\",\r\n // \"link\": \"https://theaitrack.com/ai-news-july-2024-in-depth-and-concise/\"\r\n // },\r\n // {\r\n // \"title\": \"January news roundup: What's new in the world of AI? - Pluralsight\",\r\n // \"desc\": \"OpenAI’s new GPT store, business-ready ChatGPT plans, and a predicted rise in AI-powered cybercrime.\",\r\n // \"link\": \"https://www.pluralsight.com/resources/blog/data/ai-this-month-january-2024\"\r\n // },\r\n // {\r\n // \"title\": \"AI News August 2024: In-Depth and Concise - The AI Track\",\r\n // \"desc\": \"This page features AI News for August 2024, with highlights such as Nvidia delaying the “Blackwell” B200 AI chips delivery.\",\r\n // \"link\": \"https://theaitrack.com/ai-news-august-2024-in-depth-and-concise-duplicate/\"\r\n // }\r\n // ]\r\n dateTime = { now: new Date().toISOString() };\r\n // Extracts the domain from a URL\r\n getDomainName(url: string): string {\r\n try {\r\n const { hostname } = new URL(url);\r\n return hostname.replace(/^www\\./, ''); // Remove 'www.' if present\r\n } catch {\r\n return 'unknown';\r\n }\r\n }\r\n\r\n // Generates the favicon URL\r\n getFaviconUrl(url: string): string {\r\n const domain = this.getDomainName(url);\r\n return `https://www.google.com/s2/favicons?sz=128&domain=${domain}`;\r\n }\r\n currentSourcesList: any = [];\r\n onCardClick(sources): void {\r\n this.currentSourcesList = sources;\r\n this.cdr.detectChanges();\r\n this.sourcesDrawer.open();\r\n const button = document.getElementById('botcloseplaygroundbutton');\r\n if (button) {\r\n button.style.display = 'none';\r\n }\r\n }\r\n\r\n\r\n onCloseEditor() {\r\n this.editorsDrawer.close();\r\n this.isDrawerOpen = false;\r\n this.cdr.detectChanges(); // Trigger change detection if needed\r\n this.onDrawerClosed();\r\n }\r\n\r\n onCloseSource() {\r\n this.sourcesDrawer.close();\r\n this.isDrawerOpen = false;\r\n this.cdr.detectChanges(); // Trigger change detection if needed\r\n this.onDrawerClosed();\r\n }\r\n onDrawerClosed() {\r\n setTimeout(() => {\r\n this.isDrawerOpen = true;\r\n this.cdr.detectChanges(); // Trigger change detection if needed\r\n // Use ngClass to dynamically apply the class\r\n const button = document.getElementById('botcloseplaygroundbutton');\r\n if (button) {\r\n button.style.display = 'block';\r\n }\r\n }, 800);\r\n }\r\n isDrawerOpen = true;\r\n\r\n toggleDrawer(todo) {\r\n this.isDrawerOpen = todo;\r\n this.cdr.detectChanges();\r\n this.updateButtonVisibility();\r\n }\r\n updateButtonVisibility() {\r\n const button = document.getElementById('botcloseplaygroundbutton');\r\n if (button) {\r\n button.style.display = this.isDrawerOpen ? 'block' : 'none';\r\n }\r\n }\r\n openLinkInNewTab(link: string): void {\r\n window.open(link, '_blank');\r\n }\r\n adjustTextareaHeight(event: Event): void {\r\n const textarea = event.target as HTMLTextAreaElement;\r\n textarea.style.height = 'auto'; // Reset the height\r\n textarea.style.height = `${textarea.scrollHeight}px`; // Adjust height to match content\r\n // Ensure the height doesn't exceed the max-height set in CSS\r\n if (textarea.scrollHeight > 150) {\r\n textarea.style.height = `150px`; // Adjust height to match content\r\n textarea.style.overflowY = 'auto'; // Enable scrolling if content exceeds 400px\r\n } else {\r\n textarea.style.overflowY = 'hidden'; // Hide scrollbar if content is within limits\r\n }\r\n }\r\n}\r\n","import { Component, Input } from '@angular/core';\r\n@Component({\r\n selector: 'hivegpt-chatbot',\r\n templateUrl: './chatbot.component.html',\r\n styleUrls: ['./chatbot.component.scss'],\r\n})\r\nexport class ChatBotComponent {\r\n @Input() userId!: string;\r\n @Input() apiKey!: string;\r\n @Input() botName!: string;\r\n @Input() botSkills!: string;\r\n @Input() botId!: string;\r\n @Input() closeButtonColor!: string;\r\n @Input() gradientColors!: string[];\r\n @Input() greeting!: string;\r\n @Input() sendButtonColor!: string;\r\n @Input() useOpenAi!: boolean;\r\n @Input() showClose!: boolean;\r\n @Input() bgGradient!: string[];\r\n @Input() sendButtonTextColor!: string;\r\n @Input() fullView!: boolean;\r\n @Input() bgBubbleAi!: string;\r\n @Input() bgBubbleUser!: string;\r\n @Input() closeButtonbgColor!: string;\r\n @Input() messageTextColorAi!: string;\r\n @Input() messageTextColorUser!: string;\r\n @Input() dateTimeColor!: string;\r\n @Input() dateTextColor!: string;\r\n @Input() formFieldBgColor!: string;\r\n @Input() formFieldTextColor!: string;\r\n @Input() thumbsUpMessage!: string;\r\n @Input() thumbsDownMessages!: string[];\r\n @Input() timezone!: string;\r\n @Input() eventName!: string;\r\n @Input() credentials!: [];\r\n @Input() unknownResponses!: [];\r\n @Input() rules!: string;\r\n @Input() eventId!: string;\r\n visible = false;\r\n\r\n toggle() {\r\n this.visible = !this.visible;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\n\r\n@Pipe({\r\n name: 'safeHtml',\r\n})\r\nexport class SafeHtmlPipe implements PipeTransform {\r\n\r\n constructor(private sanitizer: DomSanitizer) {\r\n }\r\n\r\n transform(html): unknown {\r\n return html ? this.sanitizer.bypassSecurityTrustHtml(html) : '';\r\n }\r\n\r\n}\r\n","import {\r\n AfterViewInit,\r\n ChangeDetectorRef,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n Inject,\r\n Input,\r\n OnInit,\r\n Output,\r\n ViewChild,\r\n} from '@angular/core';\r\nimport { IVideo } from '../../models/video';\r\nimport { DOCUMENT } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'app-video-player',\r\n templateUrl: './video-player.component.html',\r\n styleUrls: ['./video-player.component.scss'],\r\n})\r\nexport class VideoPlayerComponent\r\n implements OnInit, AfterViewInit {\r\n @Input() currentUserId: string;\r\n @Input() user: any;\r\n @Input() eventId: string;\r\n @Input() videoObj: IVideo;\r\n @Input() isDev: boolean;\r\n myFollowingList: Array<string>;\r\n myPendingSentRequests: Array<string>;\r\n @Input() type: string;\r\n isMuted: boolean = true;\r\n private observer: IntersectionObserver;\r\n isFullscreen: boolean = false;\r\n @ViewChild('video') video: any;\r\n @ViewChild('fullscreenvideo') fullscreenvideo: any;\r\n isFullscreenvideoPlaying: boolean = false;\r\n\r\n @Output() connectWithUser = new EventEmitter<string>();\r\n @Output() scheduleMeeting = new EventEmitter<any>();\r\n\r\n constructor(\r\n @Inject(DOCUMENT) private doc: any,\r\n private el: ElementRef,\r\n private cdr: ChangeDetectorRef\r\n ) {\r\n }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n toggleSound(isMuted = null) {\r\n this.isMuted = isMuted != null ? isMuted : !this.isMuted;\r\n setTimeout(() => {\r\n const video: any = this.doc\r\n .getElementById(this.video.id.toString());\r\n if (video) {\r\n video.muted = this.isMuted;\r\n this.video.isMuted = this.isMuted;\r\n }\r\n\r\n this.cdr.markForCheck();\r\n //this.muteToggle.emit(this.isMuted);\r\n })\r\n}\r\n\r\n togglePlay(playState: boolean, videoEl) {\r\n this.videoObj.isPlaying = !this.videoObj.isPlaying;\r\n setTimeout(() => { \r\n if (playState) { \r\n this.videoObj.isPlaying = true;\r\n videoEl.play();\r\n var pauseBtn = document.getElementById('pause-btn');\r\n pauseBtn.classList.add('hide-pause-btn');\r\n\r\n this.toggleSound(false);\r\n }\r\n else{\r\n this.videoObj.isPlaying = false;\r\n videoEl.pause();\r\n }\r\n this.cdr.markForCheck();\r\n })\r\n }\r\n \r\n ngAfterViewInit() {\r\n if (window.innerWidth <= 576) {\r\n this.observer = new IntersectionObserver(\r\n (entries) => {\r\n if (entries[0].isIntersecting === true) {\r\n this.video.nativeElement.play();\r\n } else {\r\n this.video.nativeElement.pause();\r\n }\r\n },\r\n {\r\n threshold: 0.75,\r\n }\r\n );\r\n\r\n this.observer.observe(this.el.nativeElement as HTMLElement);\r\n }\r\n }\r\n\r\n toggleFullscreen() {\r\n this.isFullscreen = !this.isFullscreen;\r\n if (!this.isFullscreen) {\r\n this.fullscreenvideo.nativeElement.pause();\r\n }\r\n }\r\n\r\n toggleFullscreenPlay() {\r\n this.isFullscreenvideoPlaying = !this.isFullscreenvideoPlaying;\r\n\r\n if (this.isFullscreenvideoPlaying) {\r\n this.fullscreenvideo.nativeElement.play();\r\n } else {\r\n this.fullscreenvideo.nativeElement.pause();\r\n }\r\n }\r\n\r\n followUser(userId) {\r\n this.connectWithUser.emit(userId);\r\n }\r\n\r\n checkPendingSentRequest(userId) {\r\n return this.myPendingSentRequests?.find(a => a == userId);\r\n }\r\n\r\n canUnfollowUser() {\r\n return false;\r\n }\r\n\r\n canFollowUser() {\r\n return true;\r\n }\r\n\r\n getIniNames(firstName, lastName) {\r\n if(!firstName && !lastName) {\r\n return '';\r\n }\r\n \r\n if (firstName && lastName)\r\n return (\r\n firstName.charAt(0).toUpperCase() + lastName.charAt(0).toUpperCase()\r\n );\r\n else return firstName.charAt(0).toUpperCase();\r\n }\r\n}\r\n","import { Component, Input, OnInit } from '@angular/core';\nimport { Observable } from 'rxjs';\n\n@Component({\n selector: 'lib-bot-html-editor',\n templateUrl: './bot-html-editor.component.html',\n styleUrls: ['./bot-html-editor.component.css']\n})\nexport class BotHtmlEditorComponent implements OnInit {\n @Input() editorContent: Observable<string>;\n\n quillConfig = {\n toolbar: [\n [{ header: '1' }, { header: '2' }, { font: [] }],\n [{ list: 'ordered' }, { list: 'bullet' }],\n ['bold', 'italic', 'underline'],\n ['link'],\n ['clean']\n ]\n };\n constructor() { }\n\n ngOnInit(): void {\n\n }\n\n}\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatSidenavModule } from '@angular/material/sidenav';\r\nimport { ChatDrawerComponent } from './components/chat-drawer/chat-drawer.component';\r\nimport { ChatBotComponent } from './components/chatbot/chatbot.component';\r\nimport { SafeHtmlPipe } from './pipes/safe-html.pipe';\r\nimport { VideoPlayerComponent } from './components/video-player/video-player.component';\r\nimport { QuillModule } from 'ngx-quill';\r\nimport { BotHtmlEditorComponent } from './components/bot-html-editor/bot-html-editor.component';\r\n\r\n@NgModule({\r\n declarations: [ChatBotComponent, ChatDrawerComponent, VideoPlayerComponent, SafeHtmlPipe, BotHtmlEditorComponent],\r\n imports: [CommonModule, MatIconModule, MatSidenavModule, FormsModule, QuillModule],\r\n exports: [ChatBotComponent, ChatDrawerComponent, VideoPlayerComponent]\r\n})\r\nexport class HiveGptModule { }\r\n"]}
1
+ {"version":3,"sources":["../../../../node_modules/tslib/tslib.es6.js","../../../../projects/hivegpt/eventsgpt-angular/src/lib/utils/utils.ts","../../../../projects/hivegpt/eventsgpt-angular/src/environments/environment.ts","../../../../projects/hivegpt/eventsgpt-angular/src/lib/components/conversation.service.ts","../../../../projects/hivegpt/eventsgpt-angular/src/lib/components/NotificationSocket.ts","../../../../projects/hivegpt/eventsgpt-angular/src/lib/components/socket-service.service.ts","../../../../projects/hivegpt/eventsgpt-angular/src/lib/components/chat-drawer/chat-drawer.component.ts","../../../../projects/hivegpt/eventsgpt-angular/src/lib/components/chatbot/chatbot.component.ts","../../../../projects/hivegpt/eventsgpt-angular/src/lib/pipes/safe-html.pipe.ts","../../../../projects/hivegpt/eventsgpt-angular/src/lib/components/video-player/video-player.component.ts","../../../../projects/hivegpt/eventsgpt-angular/src/lib/components/bot-html-editor/bot-html-editor.component.ts","../../../../projects/hivegpt/eventsgpt-angular/src/lib/hivegpt.module.ts"],"names":["extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","prototype","hasOwnProperty","call","__extends","TypeError","String","__","this","constructor","create","__read","o","n","m","Symbol","iterator","r","e","i","ar","next","done","push","value","error","__spread","arguments","length","concat","SuppressedError","formatHoursAndMinutes","date","hours","getHours","minutes","getMinutes","formatNow","timezone","now","Date","options","hour12","hour","minute","timeZone","toLocaleString","formatTimeStamps","timestamps","prod_environment","USERS_API","BASE_URL","AGENTS_API","API_KEY","SocketUrl","dev_environment","ConversationService","storageKey","userSepecificNotification","Subject","generateKey","Math","floor","getTime","toString","replace","random","generateStorageKey","key","ensureKeyExists","localStorage","getItem","newKey","setItem","getKey","sendValidatedUserData","message","getUserSpecificNotification","asObservable","Injectable","args","providedIn","NotificationSocket","_this","_super","socketConfig","on","console","log","warn","err","Socket","url","transports","reconnection","autoConnect","upgrade","reconnectionDelay","reconnectionDelayMax","reconnectionAttempts","Infinity","SocketService","conversationService","notificationSocket","isCommonSocketInitialized","isUserSpecificSocketInitialized","isUserSpecificEventReleased","messageQueue","releaseInterval","intervalSetup","startReleasingMessages","isSocketInitialized","isCommon","disconnectSocketConnection","disconnect","registerUserSpecificHiveSocket","botId","conversation_id","commonNotification","removeAllListeners","emit","groupId","fromEvent","subscribe","res","setInterval","shift","ChatDrawerComponent","cdr","http","sanitizer","elementRef","renderer","socketService","bodyOverflowClass","isCollapsedTrue","copilotName","feedbackEvent","EventEmitter","onCloseEvent","openPage","sessionActions","closeBot","connectWithUser","scheduleMeeting","refreshToken","autogenKey","addToMyAgendaAction","myUpcomingSessionAction","connectOrFollowAction","aiResponse","chatLog","decoder","TextDecoder","feedbackDone","greetingMsg","hasBackdropValue","input","listenerAdded","loading","mode","quickPrompts","thumbsDownMsgIndex","userName","showStartAgain","isIOSDevice","showFeedBackIconsIndex","temperature","speakers","isChatingWithAi","readAllChunks","stream","reader","getReader","allSuggestions","closed","catch","scrollToBottom","ReadableStream","start","controller","pump","currentMessageForEditor","currentIndexForEditor","isDropdownOpen","selectedAgents","allSelected","isCollapsed","isCollapsedForGraph","isCollapsedForFGraph","dateTime","toISOString","currentSourcesList","isDrawerOpen","chatMain","ElementRef","ngOnChanges","changes","s27Token","currentValue","previousValue","isFetchDataFor","msg","chat","is401","fetchDataFor","fetchData","ngOnInit","environment","isDev","changeTemperature","fetchBotConfig","markForCheck","fetchChatHistory","response","mapChatHistory","fetchAgents","fetchEditorContent","initializeSocket","setTimeout","listenSockets","eventSubscription","unsubscribe","_a","OtherFields","_e","_b","message_id_1","bot_id","message_id","answer","web_results","graphs","execution_graphs","online_search_terms","suggestions","_c","currentChatMessage","find","_id","type","time","detectChanges","isArray","searchTerms","sourcesList","displayedSources","slice","remainingSources","processMessageForDisplay","executionGraphs","relatedListItems","initializeSocketAndListen","handleEvent","data","ngOnDestroy","newTemperature","wrapper","document","querySelector","classList","remove","add","onStartAgain","processMessage","archieveMessages","headers","HttpHeaders","Content-Type","x-api-key","apiKey","userId","post","pipe","switchMap","of","catchError","get","botName","Name","botIcon","Icon","botSkills","Skills","Greeting","thumbsDownMessages","NegativeResponses","QuickPrompts","conversationKey","accept","handleError","operation","result","chats","Messages","forEach","Type","Text","InsertTimestamp","copied","WebLinks","ExecutionGraphs","Graphs","SearchTerms","trim","markdownLinkRegex","urlRegex","test","html","sanitizeHtml","match","hashes","text","level","ngAfterViewChecked","nativeElement","querySelectorAll","link","addEventListener","onFeedbackClick","bind","bypassSecurityTrustHtml","onClose","removeClass","body","sendMessageWithTile","prompt","textarea","myInput","style","height","fetch","method","Authorization","JSON","stringify","user_question","user_id","agents","filter","selected","map","id","then","status","json","inputMsg","fetchSmallTalk","smallTalk","isFeedbackMsg","read","lastItem","pop","close","decodedChunk","decode","suggestionsMatch","aiFormattedData","parse","section_id","fetchMyConnections","fetchPendingRequests","speakerIds","content","session","getSpeakersByStaffIds","sectionId","sessionIds","usersLen","_d","search","connetUserIds","is_open_page","isMobileBrowser","action","addCloseBotClickEvent","enqueue","submitFeedback","flag","thumbsUpMessage","handleSubmit","handleUpClick","idx","liked","unliked","handleDownClick","copyText","index","textElement","getElementById","tempTextArea","createElement","innerText","appendChild","select","execCommand","removeChild","handleCopyClick","sanitizeHTML","doc","DOMParser","parseFromString","fragment","createDocumentFragment","from","childNodes","node","cloneNode","simplifiedDiv","script","innerHTML","handleEditorClick","isEditor","editorsDrawer","open","button","display","counter","interval","scrollTop","scrollHeight","clearInterval","handleAction","info","ngAfterViewInit","drawer","opened","setBodyOverflow","openedChange","removeBodyOverflow","myTextarea","focus","addClass","ids","eventId","ok","Error","speaker","performSessionAction","sessionId","element","listen","navigator","userAgent","connectToUser","connect","canDisconnect","scheduleMeetingWithUser","user","canConnect","pendingRequests","a","myConnections","conn","toggleDropdown","onSelectAll","event","agent","onAgentChange","agentFound","areAllSelected","every","getDropdownHeaderText","fetchAgents_http","assign","fetchContent_http","markdown","toggleCollapse","toggleCollapseGraph","toggleCollapseFGraph","getDomainName","URL","hostname","getFaviconUrl","onCardClick","sources","sourcesDrawer","openOuterEditor","onCloseEditor","onDrawerClosed","onCloseSource","toggleDrawer","todo","updateButtonVisibility","openLinkInNewTab","window","adjustTextareaHeight","target","overflowY","Component","selector","template","changeDetection","ChangeDetectionStrategy","OnPush","ChangeDetectorRef","HttpClient","DomSanitizer","Renderer2","ViewChild","ViewChildren","static","Input","Output","ChatBotComponent","visible","toggle","SafeHtmlPipe","transform","Pipe","name","VideoPlayerComponent","el","isMuted","isFullscreen","isFullscreenvideoPlaying","toggleSound","video","muted","togglePlay","playState","videoEl","videoObj","isPlaying","play","pause","innerWidth","observer","IntersectionObserver","entries","isIntersecting","threshold","observe","toggleFullscreen","fullscreenvideo","toggleFullscreenPlay","followUser","checkPendingSentRequest","myPendingSentRequests","canUnfollowUser","canFollowUser","getIniNames","firstName","lastName","charAt","toUpperCase","Inject","DOCUMENT","BotHtmlEditorComponent","documentName","quillConfig","toolbar","header","font","list","NgModule","declarations","imports","CommonModule","MatIconModule","MatSidenavModule","FormsModule","QuillModule","exports"],"mappings":"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","sourcesContent":["/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n\r\nexport function __addDisposableResource(env, value, async) {\r\n if (value !== null && value !== void 0) {\r\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n var dispose;\r\n if (async) {\r\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n dispose = value[Symbol.asyncDispose];\r\n }\r\n if (dispose === void 0) {\r\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n dispose = value[Symbol.dispose];\r\n }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n env.stack.push({ value: value, dispose: dispose, async: async });\r\n }\r\n else if (async) {\r\n env.stack.push({ async: true });\r\n }\r\n return value;\r\n}\r\n\r\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\r\n\r\nexport function __disposeResources(env) {\r\n function fail(e) {\r\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n env.hasError = true;\r\n }\r\n function next() {\r\n while (env.stack.length) {\r\n var rec = env.stack.pop();\r\n try {\r\n var result = rec.dispose && rec.dispose.call(rec.value);\r\n if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\r\n}\r\n\r\nexport default {\r\n __extends: __extends,\r\n __assign: __assign,\r\n __rest: __rest,\r\n __decorate: __decorate,\r\n __param: __param,\r\n __metadata: __metadata,\r\n __awaiter: __awaiter,\r\n __generator: __generator,\r\n __createBinding: __createBinding,\r\n __exportStar: __exportStar,\r\n __values: __values,\r\n __read: __read,\r\n __spread: __spread,\r\n __spreadArrays: __spreadArrays,\r\n __spreadArray: __spreadArray,\r\n __await: __await,\r\n __asyncGenerator: __asyncGenerator,\r\n __asyncDelegator: __asyncDelegator,\r\n __asyncValues: __asyncValues,\r\n __makeTemplateObject: __makeTemplateObject,\r\n __importStar: __importStar,\r\n __importDefault: __importDefault,\r\n __classPrivateFieldGet: __classPrivateFieldGet,\r\n __classPrivateFieldSet: __classPrivateFieldSet,\r\n __classPrivateFieldIn: __classPrivateFieldIn,\r\n __addDisposableResource: __addDisposableResource,\r\n __disposeResources: __disposeResources,\r\n};\r\n","const formatHoursAndMinutes = (date: Date) => {\r\n let hours = date.getHours() % 12;\r\n const minutes = date.getMinutes();\r\n const amPm = date.getHours() < 12 ? 'AM' : 'PM';\r\n if(hours === 0) hours = 12;\r\n\r\n const formattedHours = hours < 10 ? `0${hours}` : hours;\r\n const formattedMinutes = minutes < 10 ? `0${minutes}` : minutes;\r\n\r\n return `${formattedHours}:${formattedMinutes} ${amPm}`;\r\n};\r\n\r\nexport const formatNow = (timezone?: string) => {\r\n const now = new Date();\r\n if (timezone) {\r\n const options: any = {\r\n hour12: true,\r\n hour: 'numeric',\r\n minute: 'numeric',\r\n timeZone: timezone,\r\n };\r\n return now.toLocaleString('en-US', options);\r\n }\r\n return formatHoursAndMinutes(now);\r\n};\r\n\r\nexport const formatTimeStamps = (timezone: string, timestamps: any) => {\r\n const date = new Date(timestamps + 'Z');\r\n\r\n const options: any = {\r\n hour12: true,\r\n hour: 'numeric',\r\n minute: 'numeric',\r\n timeZone: timezone,\r\n };\r\n return date.toLocaleString('en-US', options);\r\n};\r\n","\r\n\r\nexport const prod_environment = {\r\n USERS_API: 'https://es-user.social27.com/api',\r\n BASE_URL: 'https://agent-api.hivegpt.ai',\r\n AGENTS_API: 'https://hive-ai.social27.com/api',\r\n API_KEY: 'b621eb3f-0bd2-41d5-a48c-a8f8ab7d38f8',\r\n SocketUrl: 'https://notif-v2-ws.social27.com/'\r\n}\r\n\r\nexport const dev_environment = {\r\n USERS_API: 'https://pre-user.social27.com/api',\r\n BASE_URL: 'https://agent-api.hivegpt.ai',\r\n AGENTS_API: 'https://hive-ai.social27.com/api',\r\n API_KEY: 'b621eb3f-0bd2-41d5-a48c-a8f8ab7d38f8',\r\n SocketUrl: 'https://notif-v2-ws.social27.com/'\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Observable, Subject } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ConversationService {\r\n\r\n private storageKey = 'conversationKey';\r\n\r\n constructor() {\r\n\r\n }\r\n generateKey(): string {\r\n const timestamp = Math.floor(new Date().getTime() / 1000).toString(16);\r\n const randomHex = 'xxxxxxxxxxxxxxxx'.replace(/[x]/g, () => {\r\n return (Math.floor(Math.random() * 16)).toString(16);\r\n });\r\n return timestamp + randomHex;\r\n }\r\n private generateStorageKey(key: string): string {\r\n return `conversationKey_${key}`;\r\n }\r\n\r\n private ensureKeyExists(storageKey: string, key: string): void {\r\n if (!localStorage.getItem(storageKey)) {\r\n const newKey = this.generateKey();\r\n localStorage.setItem(storageKey, newKey);\r\n }\r\n }\r\n\r\n getKey(key: string): string {\r\n const storageKey = this.generateStorageKey(key);\r\n this.ensureKeyExists(storageKey, key);\r\n return localStorage.getItem(storageKey)!;\r\n }\r\n private userSepecificNotification: Subject<any> = new Subject<any>();\r\n sendValidatedUserData(message: any) {\r\n //console.log('lgging messages', message, new Date());\\\r\n\r\n this.userSepecificNotification.next(message);\r\n }\r\n getUserSpecificNotification(): Observable<any> {\r\n return this.userSepecificNotification.asObservable();\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Socket, SocketIoConfig } from 'ngx-socket-io';\r\nimport { prod_environment } from '../../environments/environment';\r\n\r\n@Injectable({\r\n providedIn: 'root' // This ensures the service is available across the application\r\n})\r\nexport class NotificationSocket extends Socket {\r\n constructor() {\r\n super(socketConfig);\r\n\r\n // Log connection status\r\n this.on('connect', () => {\r\n console.log('Socket connected');\r\n });\r\n\r\n this.on('disconnect', () => {\r\n console.warn('Socket disconnected');\r\n });\r\n\r\n this.on('connect_error', (err) => {\r\n console.error('Socket connection error:', err);\r\n });\r\n }\r\n}\r\n\r\nconst socketConfig: SocketIoConfig = {\r\n url: prod_environment.SocketUrl,\r\n options: {\r\n transports: ['websocket', 'polling'],\r\n reconnection: true,\r\n autoConnect: true,\r\n upgrade: true,\r\n reconnectionDelay: 1000,\r\n reconnectionDelayMax: 5000,\r\n reconnectionAttempts: Infinity\r\n }\r\n};","import { Injectable } from '@angular/core';\r\n\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { webSocket, WebSocketSubject } from 'rxjs/webSocket';\r\nimport { prod_environment } from '../../environments/environment';\r\nimport { ConversationService } from './conversation.service';\r\nimport { NotificationSocket } from './NotificationSocket';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class SocketService {\r\n public testMessage: string;\r\n private isCommonSocketInitialized = false;\r\n private isUserSpecificSocketInitialized = false;\r\n private isUserSpecificEventReleased = true;\r\n private messageQueue: any[] = [];\r\n private releaseInterval = 1000;\r\n private intervalSetup: boolean = false;\r\n\r\n constructor(\r\n private conversationService: ConversationService,\r\n private notificationSocket: NotificationSocket,\r\n ) {\r\n this.startReleasingMessages();\r\n }\r\n\r\n isSocketInitialized(isCommon: boolean) {\r\n return isCommon\r\n ? this.isCommonSocketInitialized\r\n : this.isUserSpecificSocketInitialized &&\r\n !this.isUserSpecificEventReleased;\r\n }\r\n\r\n disconnectSocketConnection() {\r\n this.notificationSocket.disconnect();\r\n }\r\n\r\n registerUserSpecificHiveSocket(botId: string, conversation_id: string) {\r\n const commonNotification = \"commonNotification\";\r\n\r\n this.notificationSocket.removeAllListeners(commonNotification);\r\n\r\n console.log('Registering user-specific Hive socket with botId:' + botId);\r\n console.log('and conversation_id:' + conversation_id);\r\n\r\n this.notificationSocket.emit('joinData', {\r\n groupId: `Hive_AI_Notifs_${botId}_${conversation_id}`,\r\n });\r\n\r\n this.notificationSocket\r\n .fromEvent(commonNotification)\r\n .subscribe((res) => {\r\n console.log('Received commonNotification:', res);\r\n this.conversationService.sendValidatedUserData(res);\r\n }, (error) => {\r\n console.error('Error receiving commonNotification:', error);\r\n });\r\n }\r\n\r\n private startReleasingMessages() {\r\n if (!this.intervalSetup) {\r\n setInterval(() => {\r\n if (this.messageQueue.length > 0) {\r\n const message = this.messageQueue.shift(); // Remove the first message from the queue\r\n // Handle the message here, e.g., send it to the server or process it\r\n console.log('Releasing message from queue:', message);\r\n // this.campaignService.sendValidatedUserData(message);\r\n }\r\n }, this.releaseInterval);\r\n this.intervalSetup = true; // Prevents multiple intervals\r\n }\r\n }\r\n}\r\n","// import { Platform } from '@angular/cdk/platform';\r\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n Input,\r\n OnChanges,\r\n OnInit,\r\n Output,\r\n QueryList,\r\n Renderer2,\r\n SimpleChanges,\r\n ViewChild,\r\n ViewChildren,\r\n} from '@angular/core';\r\nimport { MatDrawer } from '@angular/material/sidenav';\r\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\r\nimport { of, Subscription } from 'rxjs';\r\nimport { catchError, switchMap } from 'rxjs/operators';\r\nimport { formatNow, formatTimeStamps } from '../../utils/utils';\r\nimport {\r\n dev_environment,\r\n prod_environment,\r\n} from '../../../environments/environment';\r\nimport { ConversationService } from '../conversation.service';\r\nimport { Observable } from 'rxjs';\r\nimport { SocketService } from '../socket-service.service';\r\n\r\n@Component({\r\n selector: 'hivegpt-chat-drawer',\r\n templateUrl: './chat-drawer.component.html',\r\n styleUrls: ['./chat-drawer.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ChatDrawerComponent implements OnInit, OnChanges {\r\n @ViewChild('chatMain') private chatMain: ElementRef;\r\n @ViewChild('myInput') private myInput: ElementRef;\r\n @ViewChildren('closeplaygroundbutton')\r\n closePlaygroundButtons: QueryList<ElementRef>;\r\n @ViewChild('drawer') drawer!: MatDrawer;\r\n @ViewChild('sourcesDrawer') sourcesDrawer!: MatDrawer;\r\n @ViewChild('editorsDrawer') editorsDrawer!: MatDrawer;\r\n private bodyOverflowClass = 'body-overflow-hidden';\r\n @ViewChild('myTextarea', { static: false })\r\n myTextarea!: ElementRef<HTMLTextAreaElement>; // Reference to the textarea\r\n isCollapsedTrue = false;\r\n @Input() copilotName: string = 'HiveXGPT';\r\n @Input() firstName!: string;\r\n @Input() lastName!: string;\r\n @Input() apiKey!: string;\r\n @Input() bgBubbleAi!: string;\r\n @Input() bgBubbleUser!: string;\r\n @Input() bgGradient!: string[];\r\n @Input() botName!: string;\r\n @Input() botSkills!: string;\r\n @Input() botId!: string;\r\n @Input() closeButtonColor!: string;\r\n @Input() closeButtonbgColor!: string;\r\n @Input() credentials!: [];\r\n @Input() dateTimeColor!: string;\r\n @Input() dateTextColor!: string;\r\n @Input() eventId!: string;\r\n @Input() s27Token!: string;\r\n @Input() eventName!: string;\r\n @Input() botIcon!: string;\r\n @Input() formFieldBgColor!: string;\r\n @Input() formFieldTextColor!: string;\r\n @Input() fullView!: boolean;\r\n @Input() gradientColors!: string[];\r\n @Input() greeting!: string;\r\n @Input() messageTextColorAi!: string;\r\n @Input() messageTextColorUser!: string;\r\n @Input() rules!: string;\r\n @Input() sendButtonColor!: string;\r\n @Input() sendButtonTextColor!: string;\r\n @Input() showClose!: boolean;\r\n @Input() thumbsDownMessages!: string[];\r\n @Input() thumbsUpMessage!: string;\r\n @Input() timezone!: string;\r\n @Input() unknownResponses!: [];\r\n @Input() useOpenAi!: boolean;\r\n @Input() userId!: string;\r\n @Input() isDev!: boolean;\r\n\r\n @Input() againButtonColor!: string[];\r\n @Input() againButtonTextColor!: string[];\r\n @Output() feedbackEvent = new EventEmitter<string>();\r\n @Output() onCloseEvent = new EventEmitter<void>();\r\n @Output() openPage = new EventEmitter<any>();\r\n @Output() sessionActions = new EventEmitter<any>();\r\n @Output() closeBot = new EventEmitter<any>();\r\n @Output() connectWithUser = new EventEmitter<any>();\r\n @Output() scheduleMeeting = new EventEmitter<string>();\r\n @Output() refreshToken = new EventEmitter<any>();\r\n\r\n autogenKey = 'Autogen_eDJTtEU-NB0RtIpzq1w';\r\n addToMyAgendaAction = 'add_to_my_agenda';\r\n myUpcomingSessionAction = 'my_upcomming_session';\r\n connectOrFollowAction = 'connect_or_follow';\r\n aiResponse: string = '';\r\n chatLog: any[] = [];\r\n decoder = new TextDecoder();\r\n feedbackDone: boolean = false;\r\n greetingMsg: string = '';\r\n hasBackdropValue: boolean = false;\r\n input: string = '';\r\n listenerAdded = false;\r\n loading: boolean = false;\r\n mode: string = 'over';\r\n quickPrompts: any[] = [];\r\n thumbsDownMsgIndex = 0;\r\n userName: string = '';\r\n showStartAgain: boolean = false;\r\n isIOSDevice: boolean = false;\r\n showFeedBackIconsIndex: number | null = null;\r\n temperature: number = 1;\r\n speakers = [];\r\n environment: {\r\n USERS_API;\r\n BASE_URL;\r\n AGENTS_API;\r\n };\r\n pendingRequests: any;\r\n myConnections: any;\r\n conversationKey: string;\r\n isFetchDataFor: boolean;\r\n is401: boolean;\r\n msg: any;\r\n chat: any;\r\n\r\n constructor(\r\n private cdr: ChangeDetectorRef,\r\n private http: HttpClient,\r\n private sanitizer: DomSanitizer,\r\n private elementRef: ElementRef,\r\n private renderer: Renderer2,\r\n private socketService: SocketService,\r\n private conversationService: ConversationService // private platform: Platform\r\n ) {\r\n this.chatMain = new ElementRef(null);\r\n\r\n // if (this.platform.IOS) {\r\n // this.isIOSDevice = true;\r\n // }\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n console.log('ng on changes');\r\n if (changes.s27Token) {\r\n console.log('s27Token changed:', changes.s27Token);\r\n if (changes.s27Token.currentValue != changes.s27Token.previousValue) {\r\n console.log(\r\n 's27Token changed previous:',\r\n changes.s27Token.previousValue,\r\n ' current:',\r\n changes.s27Token.currentValue\r\n );\r\n this.s27Token = changes.s27Token.currentValue;\r\n\r\n console.log('isFetchDataFor: ', this.isFetchDataFor);\r\n console.log('msg: ', this.msg);\r\n console.log('chat: ', this.chat);\r\n if (this.is401) {\r\n if (this.isFetchDataFor) {\r\n this.fetchDataFor(this.msg, this.chat);\r\n } else {\r\n this.fetchData(this.msg);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n ngOnInit(): void {\r\n this.environment = this.isDev ? dev_environment : prod_environment;\r\n\r\n // this.fetchMyConnections().subscribe();\r\n // this.fetchPendingRequests().subscribe();\r\n\r\n this.changeTemperature(this.temperature);\r\n this.fetchBotConfig().subscribe(\r\n (res) => {\r\n this.cdr.markForCheck();\r\n\r\n this.fetchChatHistory().subscribe(\r\n (response) => {\r\n this.loading = false;\r\n this.mapChatHistory(response);\r\n this.cdr.markForCheck();\r\n },\r\n (err) => {\r\n console.error('Error fetching chat history:', err);\r\n }\r\n );\r\n },\r\n (err) => {\r\n console.error('Error fetching chat history:', err);\r\n }\r\n );\r\n this.fetchAgents();\r\n this.fetchEditorContent();\r\n this.cdr.markForCheck();\r\n this.initializeSocket();\r\n setTimeout(() => {\r\n this.listenSockets();\r\n }, 200);\r\n }\r\n private eventSubscription: Subscription;\r\n initializeSocket() {\r\n const conversation_id = this.conversationService.getKey(this.botId);\r\n\r\n this.socketService.registerUserSpecificHiveSocket(\r\n this.botId,\r\n conversation_id\r\n );\r\n }\r\n\r\n subscriptionNew: any;\r\n socketData: any;\r\n\r\n listenSockets() {\r\n if (this.eventSubscription) {\r\n this.eventSubscription.unsubscribe();\r\n }\r\n this.eventSubscription = this.conversationService\r\n .getUserSpecificNotification()\r\n .subscribe(\r\n (res) => {\r\n // Check if OtherFields exists in the response\r\n if (res?.m?.OtherFields) {\r\n const {\r\n conversation_id,\r\n bot_id,\r\n message_id,\r\n answer,\r\n web_results,\r\n graphs,\r\n execution_graphs,\r\n online_search_terms,\r\n suggestions,\r\n } = res?.m?.OtherFields;\r\n console.log('message_id1');\r\n console.log(res?.m?.OtherFields);\r\n var currentChatMessage = this.chatLog.find(\r\n (p) => p._id == message_id\r\n );\r\n console.log(this.chatLog);\r\n if (!currentChatMessage) {\r\n console.log('message_id2');\r\n console.log(message_id);\r\n currentChatMessage = {\r\n _id: message_id,\r\n type: 'ai',\r\n time: formatNow(this.timezone),\r\n };\r\n\r\n this.chatLog.push(currentChatMessage);\r\n\r\n this.showFeedBackIconsIndex = this.chatLog.length - 1;\r\n console.log('message_id3');\r\n console.log(message_id);\r\n this.cdr.detectChanges();\r\n }\r\n\r\n // Handle the fields based on their presence\r\n if (online_search_terms && Array.isArray(online_search_terms)) {\r\n console.log('Online Search Terms:', online_search_terms);\r\n currentChatMessage.searchTerms = online_search_terms;\r\n this.cdr.detectChanges();\r\n }\r\n\r\n if (web_results && Array.isArray(web_results)) {\r\n console.log('Web Results:', web_results);\r\n currentChatMessage.sourcesList = web_results;\r\n currentChatMessage.displayedSources = web_results?.slice(0, 3); // First 3 cards\r\n currentChatMessage.remainingSources = web_results?.slice(3); // Remaining items\r\n this.cdr.detectChanges();\r\n }\r\n\r\n if (answer) {\r\n this.isChatingWithAi = false;\r\n console.log('Answer:', answer);\r\n\r\n currentChatMessage.message =\r\n this.processMessageForDisplay(answer);\r\n this.cdr.detectChanges();\r\n this.scrollToBottom();\r\n }\r\n\r\n if (graphs && Array.isArray(graphs)) {\r\n console.log('Graphs:', graphs);\r\n currentChatMessage.graphs = graphs;\r\n this.cdr.detectChanges();\r\n }\r\n\r\n if (execution_graphs && Array.isArray(execution_graphs)) {\r\n console.log('Execution Graphs:', execution_graphs);\r\n currentChatMessage.executionGraphs = execution_graphs;\r\n this.cdr.detectChanges();\r\n }\r\n\r\n if (suggestions && Array.isArray(suggestions)) {\r\n console.log('suggestions:', suggestions);\r\n currentChatMessage.relatedListItems = suggestions;\r\n this.cdr.detectChanges();\r\n // Process online search terms as needed\r\n }\r\n\r\n // Add any other fields and their processing here\r\n } else {\r\n console.warn('OtherFields is missing in the response');\r\n }\r\n },\r\n (err) => {\r\n this.eventSubscription.unsubscribe();\r\n console.error('Error in fetching data from socket', err);\r\n }\r\n );\r\n }\r\n\r\n initializeSocketAndListen() {}\r\n handleEvent(data: any, type: string) {\r\n switch (type) {\r\n case 'webresult':\r\n break;\r\n case 'answer':\r\n break;\r\n case 'graph':\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n ngOnDestroy(): void {\r\n if (this.eventSubscription) {\r\n this.eventSubscription.unsubscribe();\r\n }\r\n //this.socketService.close();\r\n }\r\n changeTemperature(newTemperature: number) {\r\n if (this.loading) return;\r\n this.temperature = newTemperature;\r\n const wrapper = document.querySelector('.hivegpt-chat-wrapper');\r\n // Remove existing theme classes from body\r\n wrapper?.classList.remove('creative', 'balanced', 'precise');\r\n\r\n switch (newTemperature) {\r\n case 0:\r\n wrapper?.classList.add('creative');\r\n break;\r\n case 1:\r\n wrapper?.classList.add('balanced');\r\n break;\r\n case 2:\r\n wrapper?.classList.add('precise');\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n onStartAgain() {\r\n if (this.loading) return;\r\n this.showStartAgain = false;\r\n this.chatLog = [];\r\n this.chatLog.push({\r\n type: 'ai',\r\n message:\r\n this.greetingMsg ||\r\n this.processMessage(\r\n \"Greetings! I'm your COP28 virtual assistant. Have questions about the event? I'm here to help.\"\r\n ),\r\n time: formatNow(this.timezone),\r\n });\r\n this.archieveMessages().subscribe();\r\n }\r\n\r\n archieveMessages() {\r\n const headers = new HttpHeaders({\r\n 'Content-Type': 'application/json',\r\n 'x-api-key': this.apiKey,\r\n });\r\n const url = `${this.environment.BASE_URL}/bot/clear-history/${this.botId}/${this.userId}`;\r\n return this.http.post(url, {}, { headers }).pipe(\r\n switchMap((res: any) => {\r\n return of(res);\r\n }),\r\n catchError((error) => {\r\n return of(null);\r\n })\r\n );\r\n }\r\n\r\n fetchBotConfig() {\r\n this.loading = true;\r\n const url = `${this.environment.BASE_URL}/bots?bot_id=${this.botId}`;\r\n return this.http.get(url).pipe(\r\n switchMap((res: any) => {\r\n this.botName = res.Name;\r\n this.botIcon = res.Icon;\r\n this.botSkills = res?.Skills;\r\n this.greetingMsg = res.Greeting;\r\n\r\n this.thumbsDownMessages = res?.NegativeResponses?.length\r\n ? res.NegativeResponses\r\n : [\r\n \"We are sorry we've not been able to answer your question.<br/> However, our dedicated support team is happy to help. <span class='feedback-link' style='cursor: pointer; text-decoration: underline; font-weight: 700; color: #17235B;'>Please click here</span> and a human agent will assist you as soon as possible\",\r\n ];\r\n this.quickPrompts = res.QuickPrompts;\r\n this.cdr.markForCheck();\r\n this.loading = false;\r\n return of(res);\r\n }),\r\n catchError((error) => {\r\n console.error('Error fetching chatbot config: ', error);\r\n this.loading = false;\r\n return of(null);\r\n })\r\n );\r\n }\r\n\r\n fetchChatHistory(): Observable<any> {\r\n this.loading = true;\r\n this.conversationKey = this.conversationService.getKey(this.botId);\r\n const url = `${this.environment.BASE_URL}/conversations/${this.conversationKey}`;\r\n const headers = new HttpHeaders({\r\n accept: 'application/json',\r\n });\r\n\r\n return this.http\r\n .get(url, { headers })\r\n .pipe(catchError(this.handleError<any>('fetchConversation')));\r\n }\r\n\r\n private handleError<T>(operation = 'operation', result?: T) {\r\n return (error: any): Observable<T> => {\r\n console.error(`${operation} failed: ${error.message}`);\r\n return of(result as T);\r\n };\r\n }\r\n // fetchChatHistory() {\r\n // this.loading = true;\r\n // const headers = new HttpHeaders({\r\n // 'Content-Type': 'application/json',\r\n // 'x-api-key': this.apiKey,\r\n // });\r\n // return this.http\r\n // .get(`${this.environment.BASE_URL}/conversations/${this.conversationKey}`, { headers })\r\n // .pipe(\r\n // switchMap((res: any) => {\r\n // this.loading = false;\r\n // return of(res);\r\n // }),\r\n // catchError((error: any) => {\r\n // console.error('Error fetching chat history: ', error);\r\n // this.loading = false;\r\n // return of(null);\r\n // })\r\n // );\r\n // }\r\n\r\n mapChatHistory(chats: any) {\r\n this.chatLog.push({\r\n type: 'ai',\r\n message:\r\n this.greetingMsg ||\r\n this.processMessage(\r\n \"Greetings! I'm your COP28 virtual assistant. Have questions about the event? I'm here to help.\"\r\n ),\r\n time: formatNow(this.timezone),\r\n });\r\n if (chats && chats?.Messages?.length) {\r\n chats?.Messages.forEach((chat: any) => {\r\n if (chat.Type == 'user') {\r\n this.chatLog.push({\r\n type: 'user',\r\n message: this.processMessageForDisplay(chat.Text),\r\n time: formatTimeStamps(this.timezone, chat.InsertTimestamp),\r\n copied: false,\r\n isCollapsedTrue: false,\r\n });\r\n }\r\n if (chat.Type == 'ai') {\r\n var sourcesList = chat.WebLinks || [];\r\n var displayedSources = chat.WebLinks.slice(0, 3); // First 3 cards\r\n var remainingSources = chat.WebLinks.slice(3); // Remaining items\r\n\r\n this.chatLog.push({\r\n type: 'ai',\r\n message: this.processMessageForDisplay(chat.Text),\r\n executionGraphs: chat.ExecutionGraphs,\r\n graphs: chat.Graphs,\r\n searchTerms: chat.SearchTerms,\r\n sourcesList: sourcesList,\r\n displayedSources: displayedSources,\r\n remainingSources: remainingSources,\r\n time: formatTimeStamps(this.timezone, chat.InsertTimestamp),\r\n copied: false,\r\n isCollapsedTrue: false,\r\n });\r\n this.showFeedBackIconsIndex = this.chatLog.length - 1;\r\n }\r\n });\r\n this.showStartAgain = true;\r\n }\r\n this.scrollToBottom();\r\n this.cdr.markForCheck();\r\n }\r\n\r\n processMessage(message: string): SafeHtml {\r\n if (!message || !(message?.length > 0)) {\r\n return '';\r\n }\r\n\r\n // console.log('here is my message')\r\n // console.log(message);\r\n\r\n message = message.trim();\r\n\r\n const markdownLinkRegex = /\\[([^[]+)]\\(([^)]+)\\)/g;\r\n const urlRegex = /(?<!href=\")\\bhttps?:\\/\\/\\S+(?<![.,])/gi;\r\n\r\n if (markdownLinkRegex.test(message)) {\r\n const html = message.replace(\r\n markdownLinkRegex,\r\n '<a href=\"$2\" target=\"_blank\">$1</a>'\r\n );\r\n //console.log('Sanitized message: ', message);\r\n return this.sanitizeHtml(html);\r\n }\r\n\r\n if (urlRegex.test(message)) {\r\n const html = message.replace(\r\n urlRegex,\r\n '<a href=\"$&\" target=\"_blank\">$&</a>'\r\n );\r\n // console.log('Sanitized message: ', message);\r\n return this.sanitizeHtml(html);\r\n }\r\n\r\n message = message.replace(/(?:\\r\\n|\\r|\\n)/g, '<br>');\r\n\r\n message = message.replace(/\\*\\*(.*?)\\*\\*/g, '<strong>$1</strong>');\r\n // Convert Markdown headers to HTML headers\r\n message = message.replace(/^(#{1,6})\\s+(.*)$/gm, (match, hashes, text) => {\r\n const level = hashes.length;\r\n return `<h${level}>${text}</h${level}>`;\r\n });\r\n\r\n this.cdr.markForCheck();\r\n const sanitizedMessage = this.sanitizeHtml(message);\r\n return sanitizedMessage;\r\n }\r\n\r\n ngAfterViewChecked() {\r\n const feedbackLinks =\r\n this.elementRef.nativeElement.querySelectorAll('.feedback-link');\r\n feedbackLinks.forEach((link: any) => {\r\n link.addEventListener(\r\n 'click',\r\n this.onFeedbackClick.bind(this, 'zendesk')\r\n );\r\n });\r\n // if (this.elementRef.nativeElement.querySelector('.feedback-link')) {\r\n // this.elementRef.nativeElement\r\n // .querySelector('.feedback-link')\r\n // .addEventListener('click', this.onFeedbackClick.bind(this, 'zendesk'));\r\n // }\r\n }\r\n\r\n sanitizeHtml(html: string): SafeHtml {\r\n return this.sanitizer.bypassSecurityTrustHtml(html);\r\n }\r\n\r\n onFeedbackClick(value: string) {\r\n this.feedbackEvent.emit(value);\r\n }\r\n\r\n onClose() {\r\n this.renderer.removeClass(document.body, this.bodyOverflowClass);\r\n this.onCloseEvent.emit();\r\n }\r\n\r\n sendMessageWithTile(prompt: string) {\r\n this.input = prompt;\r\n this.fetchData();\r\n this.scrollToBottom();\r\n }\r\n isChatingWithAi = false;\r\n fetchData(msg = null) {\r\n this.input = msg || this.input?.trim();\r\n this.msg = this.input;\r\n if (!this.input || this.loading) {\r\n return;\r\n }\r\n\r\n this.chatLog.push({\r\n type: 'user',\r\n message: this.processMessageForDisplay(this.input),\r\n time: formatNow(this.timezone),\r\n copied: false,\r\n isCollapsedTrue: false,\r\n });\r\n\r\n try {\r\n const textarea = this.myInput.nativeElement;\r\n textarea.style.height = 'hidden'; // Reset the height\r\n textarea.style.height = `62px`;\r\n } catch (error) {}\r\n this.cdr.markForCheck();\r\n\r\n this.aiResponse = '';\r\n this.isChatingWithAi = true;\r\n\r\n const url = `${this.environment.BASE_URL}/ai/ask`; // +\r\n // (this.useOpenAi === false ? '/llm-hf' : '');\r\n fetch(url, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: 'Bearer ' + this.s27Token,\r\n 'x-api-key': this.apiKey,\r\n },\r\n body: JSON.stringify({\r\n user_question: this.input,\r\n user_id: this.userId,\r\n bot_id: this.botId,\r\n message_id: this.conversationService.generateKey(),\r\n agents: this.agents.filter((p) => p.selected).map((p) => p.id),\r\n conversation_id: this.conversationKey,\r\n }),\r\n })\r\n .then((response) => {\r\n if (response.status === 401 || response.status === 403) {\r\n this.is401 = true;\r\n this.refreshToken.emit();\r\n } else {\r\n this.is401 = false;\r\n }\r\n return response.json(); // Continue processing the response\r\n })\r\n .then((data) => {\r\n // Handle the response data\r\n console.log(data);\r\n })\r\n .catch((err) => {\r\n console.error('Error: ', err);\r\n this.isChatingWithAi = false;\r\n });\r\n\r\n this.input = '';\r\n }\r\n fetchDataFor(msg, chat) {\r\n const inputMsg = msg?.trim();\r\n if (!inputMsg || this.loading) {\r\n return;\r\n }\r\n try {\r\n chat.relatedListItems = [];\r\n this.cdr.detectChanges();\r\n } catch (error) {}\r\n\r\n this.scrollToBottom();\r\n this.chatLog.push({\r\n type: 'user',\r\n message: this.processMessageForDisplay(inputMsg),\r\n time: formatNow(this.timezone),\r\n copied: false,\r\n isCollapsedTrue: false,\r\n });\r\n\r\n this.cdr.markForCheck();\r\n\r\n this.aiResponse = '';\r\n this.isChatingWithAi = true;\r\n\r\n const url = `${this.environment.BASE_URL}/ai/ask`; // +\r\n // (this.useOpenAi === false ? '/llm-hf' : '');\r\n fetch(url, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: 'Bearer ' + this.s27Token,\r\n 'x-api-key': this.apiKey,\r\n },\r\n body: JSON.stringify({\r\n user_question: inputMsg,\r\n user_id: this.userId,\r\n bot_id: this.botId,\r\n message_id: this.conversationService.generateKey(),\r\n agents: this.agents.filter((p) => p.selected).map((p) => p.id),\r\n conversation_id: this.conversationKey,\r\n }),\r\n })\r\n .then((response) => {\r\n if (response.status === 401 || response.status === 403) {\r\n this.msg = msg;\r\n this.chat = chat;\r\n this.is401 = true;\r\n this.isFetchDataFor = true;\r\n this.refreshToken.emit();\r\n } else {\r\n this.is401 = false;\r\n }\r\n return response.json(); // Continue processing the response\r\n })\r\n .then((data) => {\r\n // Handle the response data\r\n console.log(data);\r\n })\r\n .catch((err) => {\r\n console.error('Error: ', err);\r\n this.isChatingWithAi = false;\r\n });\r\n this.input = '';\r\n }\r\n fetchSmallTalk() {\r\n this.loading = true;\r\n this.cdr.markForCheck();\r\n\r\n const url = `${this.environment.BASE_URL}/bot/small-talk/${this.botId}/${this.userId}`;\r\n\r\n this.http\r\n .get<{ smallTalk: string }>(url, {\r\n headers: {\r\n 'x-api-key': this.apiKey,\r\n },\r\n })\r\n .pipe(\r\n catchError((error) => {\r\n console.error('Error while fetching small talk:', error);\r\n\r\n return of(null);\r\n })\r\n )\r\n .subscribe((response) => {\r\n this.loading = false;\r\n this.cdr.markForCheck();\r\n\r\n if (!response) {\r\n return;\r\n }\r\n\r\n if (response && response.smallTalk) {\r\n this.chatLog.push({\r\n type: 'ai',\r\n message: this.processMessage(response.smallTalk),\r\n time: formatNow(this.timezone),\r\n isFeedbackMsg: true,\r\n });\r\n this.showFeedBackIconsIndex = this.chatLog.length - 2;\r\n // this.scrollToBottom();\r\n this.cdr.markForCheck();\r\n }\r\n });\r\n }\r\n\r\n readAllChunks = (stream: any) => {\r\n const reader = stream.getReader();\r\n const allSuggestions: string[] = [];\r\n\r\n reader.closed.catch((err: any) => {\r\n if (err) {\r\n console.error('Error reading stream: ', err);\r\n }\r\n\r\n this.isChatingWithAi = false;\r\n this.scrollToBottom();\r\n return;\r\n });\r\n\r\n return new ReadableStream({\r\n start: (controller) => {\r\n return this.pump(controller, reader, allSuggestions);\r\n },\r\n });\r\n };\r\n\r\n pump(controller: any, reader: any, allSuggestions: string[]) {\r\n reader.read().then(({ done, value }: any) => {\r\n const lastItem = this.chatLog[this.chatLog.length - 1];\r\n\r\n if (done) {\r\n lastItem.message = this.processMessageForDisplay(lastItem.message);\r\n this.chatLog.pop();\r\n this.chatLog.push(lastItem);\r\n if (allSuggestions?.length) {\r\n this.chatLog.push({\r\n type: 'suggestions',\r\n suggestions: allSuggestions,\r\n });\r\n }\r\n\r\n controller.close();\r\n this.isChatingWithAi = false;\r\n // this.scrollToBottom();\r\n this.cdr.markForCheck();\r\n this.showStartAgain = true;\r\n\r\n // setTimeout(() => {\r\n // this.fetchSmallTalk();\r\n // },1000)\r\n return;\r\n }\r\n\r\n let decodedChunk = this.decoder.decode(value, { stream: true });\r\n this.aiResponse += decodedChunk;\r\n if (lastItem.type === 'ai') {\r\n const suggestionsMatch = this.aiResponse.match(/<sug>(.*?)<\\/sug>/g);\r\n if (suggestionsMatch) {\r\n suggestionsMatch.forEach((match) => {\r\n this.aiResponse = this.aiResponse.replace(match, '');\r\n allSuggestions.push(match?.replace(/<\\/?sug>/g, ''));\r\n });\r\n }\r\n\r\n lastItem.message = this.aiResponse;\r\n this.cdr.markForCheck();\r\n } else {\r\n this.isChatingWithAi = false;\r\n\r\n let aiFormattedData: any;\r\n\r\n try {\r\n console.log('parsing json ');\r\n aiFormattedData = JSON.parse(JSON.parse(this.aiResponse));\r\n } catch (e) {\r\n try {\r\n console.log('parsing json 2');\r\n aiFormattedData = JSON.parse(this.aiResponse);\r\n } catch (e) {}\r\n }\r\n\r\n console.log('parsing json done');\r\n\r\n if (aiFormattedData && aiFormattedData?.section_id?.length > 0) {\r\n if (\r\n aiFormattedData.section_id == 'company_search' ||\r\n aiFormattedData.section_id == 'user_search' ||\r\n aiFormattedData.section_id == 'industry_company_search'\r\n ) {\r\n this.fetchMyConnections().subscribe();\r\n this.fetchPendingRequests().subscribe();\r\n }\r\n\r\n if (aiFormattedData.section_id == this.myUpcomingSessionAction) {\r\n var speakerIds = [];\r\n aiFormattedData.content?.forEach((session) => {\r\n speakerIds = [...speakerIds, ...session.speakers];\r\n });\r\n\r\n if (speakerIds?.length > 0) this.getSpeakersByStaffIds(speakerIds);\r\n }\r\n\r\n if (\r\n aiFormattedData.section_id == this.addToMyAgendaAction &&\r\n aiFormattedData.content?.length > 0\r\n ) {\r\n this.openPage.next({\r\n sectionId: aiFormattedData.section_id,\r\n sessionIds: aiFormattedData.content,\r\n });\r\n }\r\n\r\n if (aiFormattedData.section_id == this.connectOrFollowAction) {\r\n let usersLen = aiFormattedData.content?.length;\r\n if (usersLen > 1) {\r\n this.openPage.next({\r\n sectionId: 'open_networking_drawer',\r\n search: aiFormattedData.content,\r\n });\r\n } else if (usersLen == 1) {\r\n this.openPage.next({\r\n sectionId: aiFormattedData.section_id,\r\n connetUserIds: [aiFormattedData.content[0].userId],\r\n });\r\n }\r\n }\r\n\r\n if (aiFormattedData.is_open_page == 'true') {\r\n this.openPage.next({\r\n sectionId: aiFormattedData.section_id,\r\n search: aiFormattedData.content,\r\n });\r\n\r\n if (this.isMobileBrowser()) {\r\n aiFormattedData.message +=\r\n '\\n\\n' + '<a id=\"closeBotNow\">Click Here</a> to see results.';\r\n }\r\n }\r\n\r\n this.chatLog.push({\r\n type: 'ai',\r\n message: aiFormattedData.message,\r\n action: aiFormattedData,\r\n time: formatNow(this.timezone),\r\n });\r\n\r\n if (this.isMobileBrowser()) {\r\n setTimeout(() => {\r\n this.addCloseBotClickEvent();\r\n }, 500);\r\n }\r\n\r\n this.aiResponse = '';\r\n } else {\r\n this.chatLog.push({\r\n type: 'ai',\r\n message: this.aiResponse,\r\n time: formatNow(this.timezone),\r\n });\r\n }\r\n\r\n this.showFeedBackIconsIndex = this.chatLog.length - 1;\r\n this.cdr.markForCheck();\r\n }\r\n\r\n this.scrollToBottom();\r\n\r\n // Enqueue the next data chunk into our target stream\r\n controller.enqueue(value);\r\n this.pump(controller, reader, allSuggestions);\r\n });\r\n }\r\n\r\n submitFeedback(flag: boolean) {\r\n this.feedbackDone = true;\r\n this.showFeedBackIconsIndex = null;\r\n const url = `${this.environment.BASE_URL}/bot/feedback`;\r\n fetch(url, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'x-api-key': this.apiKey,\r\n },\r\n body: JSON.stringify({ flag, user_id: this.userId, bot_id: this.botId }),\r\n }).then(() => {\r\n if (flag) {\r\n this.chatLog.push({\r\n type: 'ai',\r\n message:\r\n this.thumbsUpMessage ||\r\n `Great. May I assist you with anything else?`,\r\n time: formatNow(this.timezone),\r\n isFeedbackMsg: true,\r\n });\r\n\r\n this.scrollToBottom();\r\n this.cdr.markForCheck();\r\n this.feedbackDone = false;\r\n this.showFeedBackIconsIndex = null;\r\n return;\r\n }\r\n\r\n this.chatLog.push({\r\n type: 'ai',\r\n message: this.processMessage(\r\n this.thumbsDownMessages[this.thumbsDownMsgIndex]\r\n ),\r\n time: formatNow(this.timezone),\r\n isFeedbackMsg: true,\r\n });\r\n this.thumbsDownMsgIndex =\r\n (this.thumbsDownMsgIndex + 1) % this.thumbsDownMessages.length;\r\n this.scrollToBottom();\r\n this.cdr.markForCheck();\r\n this.feedbackDone = false;\r\n this.showFeedBackIconsIndex = null;\r\n });\r\n }\r\n\r\n handleSubmit() {\r\n this.fetchData();\r\n this.scrollToBottom();\r\n }\r\n\r\n handleUpClick(idx: any) {\r\n if (this.feedbackDone) {\r\n return;\r\n }\r\n\r\n this.submitFeedback(true);\r\n this.chatLog[idx].liked = !this.chatLog[idx].liked;\r\n\r\n if (this.chatLog[idx].unliked) {\r\n this.chatLog[idx].unliked = !this.chatLog[idx].unliked;\r\n }\r\n\r\n this.cdr.markForCheck();\r\n }\r\n\r\n handleDownClick(idx: any) {\r\n if (this.feedbackDone) return;\r\n this.submitFeedback(false);\r\n this.chatLog[idx].unliked = !this.chatLog[idx].unliked;\r\n if (this.chatLog[idx].liked)\r\n this.chatLog[idx].liked = !this.chatLog[idx].liked;\r\n }\r\n // handleCopyClick(index: any) {\r\n // // Copy the message to the clipboard\r\n // const contentToCopy = this.chatLog[index].message;\r\n // console.log('contentToCopy');\r\n // console.log(contentToCopy);\r\n // navigator.clipboard.writeText(contentToCopy).then(() => {\r\n // // Indicate that the message was copied\r\n // this.chatLog[index].copied = true;\r\n // this.cdr.detectChanges();\r\n // // Reset the copied state after a delay\r\n // setTimeout(() => {\r\n // this.chatLog[index].copied = false;\r\n // this.cdr.detectChanges();\r\n // }, 2000); // Reset after 2 seconds\r\n // });\r\n // }\r\n copyText(id, index) {\r\n // Get the text element\r\n var textElement = document.getElementById(id);\r\n\r\n // Create a temporary textarea element to copy the text\r\n var tempTextArea = document.createElement('textarea');\r\n tempTextArea.value = textElement.innerText;\r\n\r\n // Append the textarea to the body (necessary for the execCommand to work)\r\n document.body.appendChild(tempTextArea);\r\n\r\n // Select the text inside the textarea\r\n tempTextArea.select();\r\n\r\n // Copy the text to the clipboard\r\n document.execCommand('copy');\r\n\r\n // Remove the temporary textarea\r\n document.body.removeChild(tempTextArea);\r\n\r\n // Optionally, you can alert the user or change the button text to indicate the copy was successful\r\n // alert('Text copied to clipboard!');\r\n\r\n this.chatLog[index].copied = true;\r\n this.cdr.detectChanges();\r\n // Reset the copied state after a delay\r\n setTimeout(() => {\r\n this.chatLog[index].copied = false;\r\n this.cdr.detectChanges();\r\n }, 2000); // Reset after 2 seconds\r\n }\r\n handleCopyClick(index: any) {\r\n // Copy the message to the clipboard\r\n const contentToCopy = this.chatLog[index].message;\r\n const resutlt = this.copyText('messageText_' + index, index);\r\n }\r\n\r\n sanitizeHTML(html: string): string {\r\n const doc = new DOMParser().parseFromString(html, 'text/html');\r\n\r\n // Create a new document fragment to hold the simplified content\r\n const fragment = document.createDocumentFragment();\r\n\r\n // Append the children of the body of the parsed document to the fragment\r\n Array.from(doc.body.childNodes).forEach((node) => {\r\n fragment.appendChild(node.cloneNode(true));\r\n });\r\n\r\n // Create a new div element to hold the simplified HTML\r\n const simplifiedDiv = document.createElement('div');\r\n simplifiedDiv.appendChild(fragment);\r\n\r\n // Remove complex tags or attributes as needed\r\n // Example: remove scripts\r\n simplifiedDiv\r\n .querySelectorAll('script')\r\n .forEach((script) => script.remove());\r\n\r\n // Return the simplified HTML as a string\r\n return simplifiedDiv.innerHTML;\r\n }\r\n\r\n currentMessageForEditor: any = '';\r\n currentIndexForEditor: any = -1;\r\n handleEditorClick(index: any) {\r\n if (this.currentIndexForEditor == -1) {\r\n this.currentIndexForEditor = index;\r\n this.currentMessageForEditor = this.sanitizeHTML(\r\n this.chatLog[index].message\r\n );\r\n this.currentMessageForEditor = this.currentMessageForEditor.replace(\r\n 'SafeValue must use [property]=binding:',\r\n ''\r\n );\r\n this.cdr.detectChanges();\r\n } else {\r\n if (this.currentIndexForEditor == index) {\r\n this.currentMessageForEditor += this.sanitizeHTML(\r\n this.chatLog[index].message\r\n );\r\n this.currentMessageForEditor = this.currentMessageForEditor.replace(\r\n 'SafeValue must use [property]=binding:',\r\n ''\r\n );\r\n this.cdr.detectChanges();\r\n } else {\r\n this.currentIndexForEditor = index;\r\n this.currentMessageForEditor = this.sanitizeHTML(\r\n this.chatLog[index].message\r\n );\r\n this.currentMessageForEditor = this.currentMessageForEditor.replace(\r\n 'SafeValue must use [property]=binding:',\r\n ''\r\n );\r\n this.cdr.detectChanges();\r\n }\r\n }\r\n this.chatLog[index].isEditor = true;\r\n this.cdr.detectChanges();\r\n // Reset the copied state after a delay\r\n setTimeout(() => {\r\n this.chatLog[index].isEditor = false;\r\n this.cdr.detectChanges();\r\n }, 2000); // Reset after 2 seconds\r\n this.editorsDrawer.open();\r\n const button = document.getElementById('botcloseplaygroundbutton');\r\n if (button) {\r\n button.style.display = 'none';\r\n }\r\n this.cdr.detectChanges();\r\n }\r\n scrollToBottom() {\r\n let counter = 0;\r\n const interval = setInterval(() => {\r\n this.chatMain.nativeElement.scrollTop =\r\n this.chatMain.nativeElement.scrollHeight;\r\n if (counter++ > 5) clearInterval(interval);\r\n }, 5);\r\n }\r\n\r\n handleAction(action: any) {\r\n console.info('incoming action from the chatbot AI');\r\n console.info(action);\r\n\r\n if (action?.content) {\r\n }\r\n }\r\n\r\n ngAfterViewInit() {\r\n // Check if the drawer is initially open and apply overflow hidden to body if so\r\n if (this.drawer.opened) {\r\n this.setBodyOverflow();\r\n }\r\n\r\n // Listen to changes in the drawer being opened or closed\r\n this.drawer.openedChange.subscribe((opened: boolean) => {\r\n if (opened) {\r\n this.setBodyOverflow();\r\n } else {\r\n this.removeBodyOverflow();\r\n }\r\n });\r\n\r\n this.drawer.openedChange.subscribe((opened) => {\r\n if (opened) {\r\n setTimeout(() => {\r\n if (this.myTextarea && this.myTextarea.nativeElement) {\r\n this.myTextarea.nativeElement.focus(); // Focus on the textarea\r\n }\r\n });\r\n }\r\n });\r\n }\r\n\r\n private setBodyOverflow() {\r\n this.renderer.addClass(document.body, this.bodyOverflowClass);\r\n }\r\n\r\n private removeBodyOverflow() {\r\n this.renderer.removeClass(document.body, this.bodyOverflowClass);\r\n }\r\n\r\n getSpeakersByStaffIds(ids) {\r\n const url = `${this.environment.USERS_API}/events/${this.eventId}/users/get-by-staff-ids`;\r\n fetch(url, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: 'Bearer ' + 'your_token_here',\r\n },\r\n body: JSON.stringify(ids),\r\n })\r\n .then((response) => {\r\n if (response.ok) {\r\n return response.json(); // Parse the JSON body of the response\r\n } else {\r\n throw new Error('Network response was not ok.');\r\n }\r\n })\r\n .then((data) => {\r\n if (data?.length > 0) {\r\n data.forEach((speaker) => {\r\n this.speakers[speaker.id] = speaker;\r\n });\r\n\r\n this.cdr.markForCheck();\r\n }\r\n })\r\n .catch((err) => {\r\n console.error('Error fetching data:', err);\r\n this.loading = false;\r\n });\r\n }\r\n\r\n performSessionAction(sessionId, action) {\r\n this.sessionActions.next({\r\n sessionId,\r\n action,\r\n });\r\n }\r\n\r\n addCloseBotClickEvent() {\r\n const element = this.elementRef.nativeElement.querySelector('#closeBotNow');\r\n if (element) {\r\n this.renderer.listen(element, 'click', () => {\r\n this.closeBot.next();\r\n });\r\n }\r\n }\r\n\r\n isMobileBrowser() {\r\n return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(\r\n navigator.userAgent\r\n );\r\n }\r\n\r\n connectToUser(userId) {\r\n this.connectWithUser.emit({\r\n connect: !this.canDisconnect(userId),\r\n userId,\r\n });\r\n\r\n setTimeout(() => {\r\n this.fetchMyConnections().subscribe((res) => {\r\n this.cdr.markForCheck();\r\n });\r\n this.fetchPendingRequests().subscribe((res) => {\r\n this.cdr.markForCheck();\r\n });\r\n }, 500);\r\n }\r\n\r\n scheduleMeetingWithUser(user) {\r\n this.scheduleMeeting.emit(user);\r\n }\r\n\r\n canConnect(userId) {\r\n return !(\r\n this.canDisconnect(userId) ||\r\n this.pendingRequests.find((a) => a == userId)\r\n );\r\n }\r\n\r\n canDisconnect(userId) {\r\n return this.myConnections.find((conn) => conn.userId == userId);\r\n }\r\n\r\n fetchPendingRequests() {\r\n const headers = new HttpHeaders({\r\n 'Content-Type': 'application/json',\r\n apiKey: this.autogenKey,\r\n });\r\n return this.http\r\n .get(\r\n `${this.environment.USERS_API}/events/${this.eventId}/connection-requests/autogen/pending-sent-requests?userId=${this.userId}`,\r\n { headers }\r\n )\r\n .pipe(\r\n switchMap((res: any) => {\r\n this.pendingRequests = res;\r\n this.cdr.markForCheck();\r\n return of(res);\r\n }),\r\n catchError((error: any) => {\r\n console.error('Error fetching pending requests: ', error);\r\n return of(null);\r\n })\r\n );\r\n }\r\n\r\n fetchMyConnections() {\r\n const headers = new HttpHeaders({\r\n 'Content-Type': 'application/json',\r\n apiKey: this.autogenKey,\r\n });\r\n return this.http\r\n .get(\r\n `${this.environment.USERS_API}/events/${this.eventId}/users-connections/autogen?userId=${this.userId}`,\r\n { headers }\r\n )\r\n .pipe(\r\n switchMap((res: any) => {\r\n this.myConnections = res;\r\n this.cdr.markForCheck();\r\n return of(res);\r\n }),\r\n catchError((error: any) => {\r\n console.error('Error fetching pending requests: ', error);\r\n return of(null);\r\n })\r\n );\r\n }\r\n\r\n isDropdownOpen: boolean = false;\r\n agents: any;\r\n selectedAgents = [];\r\n allSelected = false;\r\n // Toggle the dropdown visibility\r\n toggleDropdown() {\r\n this.isDropdownOpen = !this.isDropdownOpen;\r\n }\r\n\r\n onSelectAll(event: Event): void {\r\n this.agents?.forEach((agent) => (agent.selected = false));\r\n this.cdr.detectChanges();\r\n }\r\n\r\n onAgentChange(agent: any): void {\r\n //agent.selected = !agent.selected;\r\n //console.log(agent);\r\n let agentFound = this.agents.filter((p) => p.id == agent.id);\r\n if (agentFound && agentFound.length > 0) {\r\n agentFound[0].selected = !agentFound[0].selected;\r\n this.cdr.detectChanges();\r\n }\r\n this.cdr.detectChanges();\r\n }\r\n\r\n areAllSelected(): boolean {\r\n return this.agents?.every((agent) => !agent.selected);\r\n }\r\n\r\n getDropdownHeaderText(): string {\r\n const selectedAgents = this.agents?.filter((agent) => agent.selected);\r\n if (selectedAgents && selectedAgents?.length === 0) {\r\n return 'All Agents';\r\n } else {\r\n return selectedAgents?.length > 1\r\n ? `${selectedAgents?.length} Agents Selected`\r\n : `${selectedAgents?.length} Agent Selected`;\r\n }\r\n }\r\n fetchAgents_http() {\r\n this.loading = true;\r\n const url = `${this.environment.AGENTS_API}/CoPilot/${this.botId}/active-agents`;\r\n const headers = new HttpHeaders({\r\n 'Content-Type': 'application/json',\r\n });\r\n\r\n return this.http.post(url, {}, { headers }).pipe(\r\n switchMap((res: any) => {\r\n if (res) {\r\n this.agents = res.map((agent) => ({\r\n ...agent,\r\n selected: false,\r\n }));\r\n }\r\n this.cdr.markForCheck();\r\n\r\n return of(res);\r\n }),\r\n catchError((error) => {\r\n console.error('Error fetching chatbot config: ', error);\r\n\r\n return of(null);\r\n })\r\n );\r\n }\r\n\r\n fetchContent_http() {\r\n console.log('API call function');\r\n this.loading = true;\r\n const conversation_id = this.conversationService.getKey(this.botId);\r\n const url = `${this.environment.AGENTS_API}/ConversationDocuments?conversationId=${conversation_id}&botId=${this.botId}`;\r\n const headers = new HttpHeaders({\r\n 'Content-Type': 'application/json',\r\n apiKey: 'WIz/qAm+EEmfOkFaUA/weA==',\r\n });\r\n\r\n return this.http.get(url, { headers }).pipe(\r\n switchMap((res: any) => {\r\n if (res) {\r\n console.log('Get API callled');\r\n console.log(res);\r\n }\r\n this.cdr.markForCheck();\r\n\r\n return of(res);\r\n }),\r\n catchError((error) => {\r\n console.error('Error fetching chatbot config: ', error);\r\n\r\n return of(null);\r\n })\r\n );\r\n }\r\n\r\n fetchAgents() {\r\n this.fetchAgents_http().subscribe();\r\n }\r\n\r\n fetchEditorContent() {\r\n this.fetchContent_http().subscribe();\r\n }\r\n\r\n // events/${eventId}/users-connections\r\n processMessageForDisplay(markdown: string): SafeHtml {\r\n if (!markdown || !(markdown.length > 0)) {\r\n console.error('Input Markdown is null or empty');\r\n return '';\r\n }\r\n\r\n //console.log('Markdown input:', markdown);\r\n\r\n // Convert Markdown headers to HTML headers\r\n let html = markdown.replace(\r\n /^(#{1,6})\\s+(.*)$/gm,\r\n (match, hashes, text) => {\r\n const level = hashes.length;\r\n return `<h${level}>${text}</h${level}>`;\r\n }\r\n );\r\n\r\n // console.log('After header conversion:', html);\r\n\r\n // Convert Markdown links to HTML links\r\n html = html.replace(\r\n /\\[([^\\]]+)]\\(([^)]+)\\)/g,\r\n '<a href=\"$2\" target=\"_blank\">$1</a>'\r\n );\r\n\r\n // console.log('After link conversion:', html);\r\n\r\n // Convert Markdown bold to HTML strong\r\n html = html.replace(/\\*\\*(.*?)\\*\\*/g, '<strong>$1</strong>');\r\n\r\n //console.log('After bold conversion:', html);\r\n\r\n // Convert new lines to <br> tags\r\n html = html.replace(/(?:\\r\\n|\\r|\\n)/g, '<br>');\r\n\r\n // console.log('After line breaks conversion:', html);\r\n\r\n // Optional: Sanitize the HTML to prevent XSS\r\n const sanitizedHtml = this.sanitizeHtml(html);\r\n\r\n // console.log('Sanitized HTML:', sanitizedHtml);\r\n\r\n return sanitizedHtml;\r\n }\r\n isCollapsed = false;\r\n isCollapsedForGraph = false;\r\n isCollapsedForFGraph = false;\r\n toggleCollapse() {\r\n this.isCollapsed = !this.isCollapsed;\r\n this.cdr.detectChanges();\r\n }\r\n\r\n toggleCollapseGraph() {\r\n this.isCollapsedForGraph = !this.isCollapsedForGraph;\r\n this.cdr.detectChanges();\r\n }\r\n toggleCollapseFGraph() {\r\n this.isCollapsedForFGraph = !this.isCollapsedForFGraph;\r\n this.cdr.detectChanges();\r\n }\r\n // [\r\n // {\r\n // \"title\": \"AI News January 2024: In-Depth and Concise - The AI Track\",\r\n // \"desc\": \"Each month, we compile significant news, trends, and happenings in AI, providing detailed summaries with key points in bullet form for concise yet complete understanding.\",\r\n // \"link\": \"https://theaitrack.com/ai-news-january-2024/\"\r\n // },\r\n // {\r\n // \"title\": \"Top AI News, January 2024 - Everypixel Journal\",\r\n // \"desc\": \"In this monthly roundup, we spotlight the top AI news stories from January, including the OpenAI vs. The New York Times Lawsuit.\",\r\n // \"link\": \"https://journal.everypixel.com/top-ai-news-january-2024\"\r\n // },\r\n // {\r\n // \"title\": \"AI News July 2024: In-Depth and Concise - The AI Track\",\r\n // \"desc\": \"This page features AI News for July 2024, highlighting significant events such as Canva acquiring Leonardo AI.\",\r\n // \"link\": \"https://theaitrack.com/ai-news-july-2024-in-depth-and-concise/\"\r\n // },\r\n // {\r\n // \"title\": \"January news roundup: What's new in the world of AI? - Pluralsight\",\r\n // \"desc\": \"OpenAI’s new GPT store, business-ready ChatGPT plans, and a predicted rise in AI-powered cybercrime.\",\r\n // \"link\": \"https://www.pluralsight.com/resources/blog/data/ai-this-month-january-2024\"\r\n // },\r\n // {\r\n // \"title\": \"AI News August 2024: In-Depth and Concise - The AI Track\",\r\n // \"desc\": \"This page features AI News for August 2024, with highlights such as Nvidia delaying the “Blackwell” B200 AI chips delivery.\",\r\n // \"link\": \"https://theaitrack.com/ai-news-august-2024-in-depth-and-concise-duplicate/\"\r\n // }\r\n // ]\r\n dateTime = { now: new Date().toISOString() };\r\n // Extracts the domain from a URL\r\n getDomainName(url: string): string {\r\n try {\r\n const { hostname } = new URL(url);\r\n return hostname.replace(/^www\\./, ''); // Remove 'www.' if present\r\n } catch {\r\n return 'unknown';\r\n }\r\n }\r\n\r\n // Generates the favicon URL\r\n getFaviconUrl(url: string): string {\r\n const domain = this.getDomainName(url);\r\n return `https://www.google.com/s2/favicons?sz=128&domain=${domain}`;\r\n }\r\n currentSourcesList: any = [];\r\n onCardClick(sources): void {\r\n this.currentSourcesList = sources;\r\n this.cdr.detectChanges();\r\n this.sourcesDrawer.open();\r\n const button = document.getElementById('botcloseplaygroundbutton');\r\n if (button) {\r\n button.style.display = 'none';\r\n }\r\n }\r\n\r\n openOuterEditor() {\r\n this.editorsDrawer.open();\r\n this.isDrawerOpen = true;\r\n this.cdr.detectChanges();\r\n }\r\n\r\n onCloseEditor() {\r\n this.editorsDrawer.close();\r\n this.isDrawerOpen = false;\r\n this.cdr.detectChanges(); // Trigger change detection if needed\r\n this.onDrawerClosed();\r\n }\r\n\r\n onCloseSource() {\r\n this.sourcesDrawer.close();\r\n this.isDrawerOpen = false;\r\n this.cdr.detectChanges(); // Trigger change detection if needed\r\n this.onDrawerClosed();\r\n }\r\n onDrawerClosed() {\r\n setTimeout(() => {\r\n this.isDrawerOpen = true;\r\n this.cdr.detectChanges(); // Trigger change detection if needed\r\n // Use ngClass to dynamically apply the class\r\n const button = document.getElementById('botcloseplaygroundbutton');\r\n if (button) {\r\n button.style.display = 'block';\r\n }\r\n }, 800);\r\n }\r\n isDrawerOpen = true;\r\n\r\n toggleDrawer(todo) {\r\n this.isDrawerOpen = todo;\r\n this.cdr.detectChanges();\r\n this.updateButtonVisibility();\r\n }\r\n updateButtonVisibility() {\r\n const button = document.getElementById('botcloseplaygroundbutton');\r\n if (button) {\r\n button.style.display = this.isDrawerOpen ? 'block' : 'none';\r\n }\r\n }\r\n openLinkInNewTab(link: string): void {\r\n window.open(link, '_blank');\r\n }\r\n adjustTextareaHeight(event: Event): void {\r\n const textarea = event.target as HTMLTextAreaElement;\r\n textarea.style.height = 'auto'; // Reset the height\r\n textarea.style.height = `${textarea.scrollHeight}px`; // Adjust height to match content\r\n // Ensure the height doesn't exceed the max-height set in CSS\r\n if (textarea.scrollHeight > 150) {\r\n textarea.style.height = `150px`; // Adjust height to match content\r\n textarea.style.overflowY = 'auto'; // Enable scrolling if content exceeds 400px\r\n } else {\r\n textarea.style.overflowY = 'hidden'; // Hide scrollbar if content is within limits\r\n }\r\n }\r\n}\r\n","import { Component, Input } from '@angular/core';\r\n@Component({\r\n selector: 'hivegpt-chatbot',\r\n templateUrl: './chatbot.component.html',\r\n styleUrls: ['./chatbot.component.scss'],\r\n})\r\nexport class ChatBotComponent {\r\n @Input() userId!: string;\r\n @Input() apiKey!: string;\r\n @Input() botName!: string;\r\n @Input() botSkills!: string;\r\n @Input() botId!: string;\r\n @Input() closeButtonColor!: string;\r\n @Input() gradientColors!: string[];\r\n @Input() greeting!: string;\r\n @Input() sendButtonColor!: string;\r\n @Input() useOpenAi!: boolean;\r\n @Input() showClose!: boolean;\r\n @Input() bgGradient!: string[];\r\n @Input() sendButtonTextColor!: string;\r\n @Input() fullView!: boolean;\r\n @Input() bgBubbleAi!: string;\r\n @Input() bgBubbleUser!: string;\r\n @Input() closeButtonbgColor!: string;\r\n @Input() messageTextColorAi!: string;\r\n @Input() messageTextColorUser!: string;\r\n @Input() dateTimeColor!: string;\r\n @Input() dateTextColor!: string;\r\n @Input() formFieldBgColor!: string;\r\n @Input() formFieldTextColor!: string;\r\n @Input() thumbsUpMessage!: string;\r\n @Input() thumbsDownMessages!: string[];\r\n @Input() timezone!: string;\r\n @Input() eventName!: string;\r\n @Input() credentials!: [];\r\n @Input() unknownResponses!: [];\r\n @Input() rules!: string;\r\n @Input() eventId!: string;\r\n visible = false;\r\n\r\n toggle() {\r\n this.visible = !this.visible;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\n\r\n@Pipe({\r\n name: 'safeHtml',\r\n})\r\nexport class SafeHtmlPipe implements PipeTransform {\r\n\r\n constructor(private sanitizer: DomSanitizer) {\r\n }\r\n\r\n transform(html): unknown {\r\n return html ? this.sanitizer.bypassSecurityTrustHtml(html) : '';\r\n }\r\n\r\n}\r\n","import {\r\n AfterViewInit,\r\n ChangeDetectorRef,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n Inject,\r\n Input,\r\n OnInit,\r\n Output,\r\n ViewChild,\r\n} from '@angular/core';\r\nimport { IVideo } from '../../models/video';\r\nimport { DOCUMENT } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'app-video-player',\r\n templateUrl: './video-player.component.html',\r\n styleUrls: ['./video-player.component.scss'],\r\n})\r\nexport class VideoPlayerComponent\r\n implements OnInit, AfterViewInit {\r\n @Input() currentUserId: string;\r\n @Input() user: any;\r\n @Input() eventId: string;\r\n @Input() videoObj: IVideo;\r\n @Input() isDev: boolean;\r\n myFollowingList: Array<string>;\r\n myPendingSentRequests: Array<string>;\r\n @Input() type: string;\r\n isMuted: boolean = true;\r\n private observer: IntersectionObserver;\r\n isFullscreen: boolean = false;\r\n @ViewChild('video') video: any;\r\n @ViewChild('fullscreenvideo') fullscreenvideo: any;\r\n isFullscreenvideoPlaying: boolean = false;\r\n\r\n @Output() connectWithUser = new EventEmitter<string>();\r\n @Output() scheduleMeeting = new EventEmitter<any>();\r\n\r\n constructor(\r\n @Inject(DOCUMENT) private doc: any,\r\n private el: ElementRef,\r\n private cdr: ChangeDetectorRef\r\n ) {\r\n }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n toggleSound(isMuted = null) {\r\n this.isMuted = isMuted != null ? isMuted : !this.isMuted;\r\n setTimeout(() => {\r\n const video: any = this.doc\r\n .getElementById(this.video.id.toString());\r\n if (video) {\r\n video.muted = this.isMuted;\r\n this.video.isMuted = this.isMuted;\r\n }\r\n\r\n this.cdr.markForCheck();\r\n //this.muteToggle.emit(this.isMuted);\r\n })\r\n}\r\n\r\n togglePlay(playState: boolean, videoEl) {\r\n this.videoObj.isPlaying = !this.videoObj.isPlaying;\r\n setTimeout(() => { \r\n if (playState) { \r\n this.videoObj.isPlaying = true;\r\n videoEl.play();\r\n var pauseBtn = document.getElementById('pause-btn');\r\n pauseBtn.classList.add('hide-pause-btn');\r\n\r\n this.toggleSound(false);\r\n }\r\n else{\r\n this.videoObj.isPlaying = false;\r\n videoEl.pause();\r\n }\r\n this.cdr.markForCheck();\r\n })\r\n }\r\n \r\n ngAfterViewInit() {\r\n if (window.innerWidth <= 576) {\r\n this.observer = new IntersectionObserver(\r\n (entries) => {\r\n if (entries[0].isIntersecting === true) {\r\n this.video.nativeElement.play();\r\n } else {\r\n this.video.nativeElement.pause();\r\n }\r\n },\r\n {\r\n threshold: 0.75,\r\n }\r\n );\r\n\r\n this.observer.observe(this.el.nativeElement as HTMLElement);\r\n }\r\n }\r\n\r\n toggleFullscreen() {\r\n this.isFullscreen = !this.isFullscreen;\r\n if (!this.isFullscreen) {\r\n this.fullscreenvideo.nativeElement.pause();\r\n }\r\n }\r\n\r\n toggleFullscreenPlay() {\r\n this.isFullscreenvideoPlaying = !this.isFullscreenvideoPlaying;\r\n\r\n if (this.isFullscreenvideoPlaying) {\r\n this.fullscreenvideo.nativeElement.play();\r\n } else {\r\n this.fullscreenvideo.nativeElement.pause();\r\n }\r\n }\r\n\r\n followUser(userId) {\r\n this.connectWithUser.emit(userId);\r\n }\r\n\r\n checkPendingSentRequest(userId) {\r\n return this.myPendingSentRequests?.find(a => a == userId);\r\n }\r\n\r\n canUnfollowUser() {\r\n return false;\r\n }\r\n\r\n canFollowUser() {\r\n return true;\r\n }\r\n\r\n getIniNames(firstName, lastName) {\r\n if(!firstName && !lastName) {\r\n return '';\r\n }\r\n \r\n if (firstName && lastName)\r\n return (\r\n firstName.charAt(0).toUpperCase() + lastName.charAt(0).toUpperCase()\r\n );\r\n else return firstName.charAt(0).toUpperCase();\r\n }\r\n}\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'lib-bot-html-editor',\r\n templateUrl: './bot-html-editor.component.html',\r\n styleUrls: ['./bot-html-editor.component.css'],\r\n})\r\nexport class BotHtmlEditorComponent implements OnInit {\r\n @Input() editorContent: Observable<string>;\r\n\r\n documentName: any = 'doc name';\r\n\r\n quillConfig = {\r\n toolbar: [\r\n [{ header: '1' }, { header: '2' }, { font: [] }],\r\n [{ list: 'ordered' }, { list: 'bullet' }],\r\n ['bold', 'italic', 'underline'],\r\n ['link'],\r\n ['clean'],\r\n ],\r\n };\r\n constructor() {}\r\n\r\n ngOnInit(): void {}\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatSidenavModule } from '@angular/material/sidenav';\r\nimport { ChatDrawerComponent } from './components/chat-drawer/chat-drawer.component';\r\nimport { ChatBotComponent } from './components/chatbot/chatbot.component';\r\nimport { SafeHtmlPipe } from './pipes/safe-html.pipe';\r\nimport { VideoPlayerComponent } from './components/video-player/video-player.component';\r\nimport { QuillModule } from 'ngx-quill';\r\nimport { BotHtmlEditorComponent } from './components/bot-html-editor/bot-html-editor.component';\r\n\r\n@NgModule({\r\n declarations: [ChatBotComponent, ChatDrawerComponent, VideoPlayerComponent, SafeHtmlPipe, BotHtmlEditorComponent],\r\n imports: [CommonModule, MatIconModule, MatSidenavModule, FormsModule, QuillModule],\r\n exports: [ChatBotComponent, ChatDrawerComponent, VideoPlayerComponent]\r\n})\r\nexport class HiveGptModule { }\r\n"]}