@hivegpt/hiveai-angular 0.0.151 → 0.0.152
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/hivegpt-hiveai-angular.umd.js +1 -1
- package/bundles/hivegpt-hiveai-angular.umd.min.js +1 -1
- package/bundles/hivegpt-hiveai-angular.umd.min.js.map +1 -1
- package/esm2015/lib/components/chat-drawer/chat-drawer.component.js +1 -1
- package/fesm2015/hivegpt-hiveai-angular.js +1 -1
- package/hivegpt-hiveai-angular.metadata.json +1 -1
- package/package.json +1 -1
|
@@ -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/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/hivegpt.module.ts"],"names":["Object","create","__read","o","n","m","Symbol","iterator","r","e","i","call","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","this","storageKey","prototype","generateKey","Math","floor","getTime","toString","replace","random","generateStorageKey","key","ensureKeyExists","localStorage","getItem","newKey","setItem","getKey","Injectable","args","providedIn","SocketService","connect","_this","url","socket$","webSocket","subscribe","message","onMessage","err","console","warn","log","sendMessage","close","complete","onEvent","eventName","Observable","observer","event","data","ChatDrawerComponent","cdr","http","sanitizer","elementRef","renderer","socketService","conversation","bodyOverflowClass","isCollapsedTrue","copilotName","feedbackEvent","EventEmitter","onCloseEvent","openPage","sessionActions","closeBot","connectWithUser","scheduleMeeting","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","isDropdownOpen","selectedAgents","allSelected","isCollapsed","isCollapsedForGraph","relatedListItems","sourcesList","title","desc","link","dateTime","toISOString","isDrawerOpen","displayedSources","slice","remainingSources","chatMain","ElementRef","ngOnInit","environment","isDev","changeTemperature","fetchBotConfig","res","markForCheck","fetchChatHistory","response","mapChatHistory","fetchAgents","initializeSocketAndListen","eventSubscription","handleEvent","type","ngOnDestroy","unsubscribe","newTemperature","wrapper","document","querySelector","classList","remove","add","onStartAgain","processMessage","time","archieveMessages","headers","HttpHeaders","Content-Type","x-api-key","apiKey","botId","userId","post","pipe","switchMap","of","catchError","get","botName","Name","botIcon","Icon","botSkills","Skills","Greeting","thumbsDownMessages","_a","NegativeResponses","QuickPrompts","conversationKey","accept","handleError","operation","result","chats","Messages","forEach","chat","Type","processMessageForDisplay","Text","InsertTimestamp","copied","trim","markdownLinkRegex","urlRegex","test","html","sanitizeHtml","match","hashes","text","level","ngAfterViewChecked","nativeElement","querySelectorAll","addEventListener","onFeedbackClick","bind","bypassSecurityTrustHtml","emit","onClose","removeClass","body","sendMessageWithTile","prompt","fetchData","fetch","method","JSON","stringify","user_question","user_id","bot_id","agents","filter","p","selected","map","id","conversation_id","then","fetchDataFor","msg","inputMsg","fetchSmallTalk","smallTalk","isFeedbackMsg","read","_e","lastItem","pop","suggestions","decodedChunk","decode","suggestionsMatch","aiFormattedData","parse","section_id","fetchMyConnections","fetchPendingRequests","speakerIds","_b","content","session","getSpeakersByStaffIds","_c","sectionId","sessionIds","usersLen","_d","search","connetUserIds","is_open_page","isMobileBrowser","action","setTimeout","addCloseBotClickEvent","enqueue","submitFeedback","flag","thumbsUpMessage","handleSubmit","handleUpClick","idx","liked","unliked","handleDownClick","handleCopyClick","index","contentToCopy","navigator","clipboard","writeText","detectChanges","counter","interval","setInterval","scrollTop","scrollHeight","clearInterval","handleAction","info","ngAfterViewInit","drawer","opened","setBodyOverflow","openedChange","removeBodyOverflow","myTextarea","focus","addClass","ids","eventId","Authorization","ok","json","Error","speaker","performSessionAction","sessionId","element","listen","userAgent","connectToUser","canDisconnect","scheduleMeetingWithUser","user","canConnect","pendingRequests","find","a","myConnections","conn","toggleDropdown","onSelectAll","agent","onAgentChange","agentFound","areAllSelected","every","getDropdownHeaderText","fetchAgents_http","assign","markdown","sanitizedHtml","toggleCollapse","toggleCollapseGraph","getDomainName","URL","hostname","getFaviconUrl","onCardClick","sourcesDrawer","open","button","getElementById","style","display","onCloseSource","onDrawerClosed","toggleDrawer","todo","updateButtonVisibility","openLinkInNewTab","window","Component","selector","template","changeDetection","ChangeDetectionStrategy","OnPush","ChangeDetectorRef","HttpClient","DomSanitizer","Renderer2","ViewChild","ViewChildren","static","Input","Output","ChatBotComponent","visible","toggle","SafeHtmlPipe","transform","Pipe","name","VideoPlayerComponent","doc","el","isMuted","isFullscreen","isFullscreenvideoPlaying","toggleSound","video","muted","togglePlay","playState","videoEl","videoObj","isPlaying","play","pause","innerWidth","IntersectionObserver","entries","isIntersecting","threshold","observe","toggleFullscreen","fullscreenvideo","toggleFullscreenPlay","followUser","checkPendingSentRequest","myPendingSentRequests","canUnfollowUser","canFollowUser","getIniNames","firstName","lastName","charAt","toUpperCase","Inject","DOCUMENT","NgModule","declarations","imports","CommonModule","MatIconModule","MatSidenavModule","FormsModule","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: 'notif-v2-api.social27.com/api/notifications'\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: 'notif-v2-api.social27.com/api/notifications'\r\n}\r\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ConversationService {\n\n private storageKey = 'conversationKey';\n\n constructor() {\n\n }\n private generateKey(): string {\n const timestamp = Math.floor(new Date().getTime() / 1000).toString(16);\n const randomHex = 'xxxxxxxxxxxxxxxx'.replace(/[x]/g, () => {\n return (Math.floor(Math.random() * 16)).toString(16);\n });\n return timestamp + randomHex;\n }\n private generateStorageKey(key: string): string {\n return `conversationKey_${key}`;\n }\n\n private ensureKeyExists(storageKey: string, key: string): void {\n if (!localStorage.getItem(storageKey)) {\n const newKey = this.generateKey();\n localStorage.setItem(storageKey, newKey);\n }\n }\n\n getKey(key: string): string {\n const storageKey = this.generateStorageKey(key);\n this.ensureKeyExists(storageKey, key);\n return localStorage.getItem(storageKey)!;\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { Observable, Subject } from 'rxjs';\nimport { webSocket, WebSocketSubject } from 'rxjs/webSocket';\nimport { prod_environment } from '../../environments/environment';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class SocketService {\n private socket$: WebSocketSubject<any>;\n\n constructor() {\n this.connect();\n }\n\n private connect(): void {\n const url = prod_environment;\n this.socket$ = webSocket('ws://' + url.SocketUrl);\n\n this.socket$.subscribe(\n (message) => this.onMessage(message),\n (err) => console.error('WebSocket error', err),\n () => console.warn('WebSocket closed')\n );\n }\n\n private onMessage(message: any): void {\n console.log('Received message:', message);\n // Handle incoming messages\n }\n\n sendMessage(message: any): void {\n this.socket$.next(message);\n }\n\n close(): void {\n this.socket$.complete();\n }\n\n onEvent(eventName: string): Observable<any> {\n return new Observable<any>((observer) => {\n this.socket$.subscribe((message: any) => {\n if (message.event === eventName) {\n observer.next(message.data);\n }\n });\n });\n }\n}\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 OnInit,\r\n Output,\r\n QueryList,\r\n Renderer2,\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 { dev_environment, prod_environment } 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\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 {\r\n @ViewChild('chatMain') private chatMain: ElementRef;\r\n @ViewChildren('closeplaygroundbutton') closePlaygroundButtons: QueryList<ElementRef>;\r\n @ViewChild('drawer') drawer!: MatDrawer;\r\n @ViewChild('sourcesDrawer') sourcesDrawer!: 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() s27UserToken!: 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\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\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 conversation: ConversationService\r\n // 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\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.initializeSocketAndListen();\r\n }\r\n private eventSubscription: Subscription;\r\n initializeSocketAndListen() {\r\n this.eventSubscription = this.socketService.onEvent('webresult').subscribe((data) => {\r\n console.log('Event received webresult:', data);\r\n this.handleEvent(data, 'webresult');\r\n });\r\n this.eventSubscription = this.socketService.onEvent('answer').subscribe((data) => {\r\n console.log('Event received answer:', data);\r\n this.handleEvent(data, 'answer');\r\n });\r\n this.eventSubscription = this.socketService.onEvent('graph').subscribe((data) => {\r\n console.log('Event received graph:', data);\r\n this.handleEvent(data, 'graph');\r\n });\r\n }\r\n handleEvent(data: any, type: string) {\r\n switch (type) {\r\n case 'webresult':\r\n\r\n break;\r\n case 'answer':\r\n\r\n break;\r\n case 'graph':\r\n\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.conversation.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.get(url, { headers }).pipe(\r\n catchError(this.handleError<any>('fetchConversation'))\r\n );\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 this.chatLog.push({\r\n type: 'ai',\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 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() {\r\n this.input = this.input?.trim();\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.processMessage(this.input),\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 =\r\n `${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 '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 // temperature: this.temperature,\r\n // event_id: this.eventId,\r\n // token: this.s27UserToken,\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 // Retrieve its body as ReadableStream\r\n .then((response) => {\r\n return this.readAllChunks(response.body);\r\n })\r\n .catch((err) => {\r\n console.error('Err: ', err);\r\n this.isChatingWithAi = false;\r\n });\r\n\r\n this.input = '';\r\n }\r\n fetchDataFor(msg) {\r\n const inputMsg = msg?.trim();\r\n if (!inputMsg || this.loading) {\r\n return;\r\n }\r\n this.scrollToBottom();\r\n this.chatLog.push({\r\n type: 'user',\r\n message: this.processMessage(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 =\r\n `${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 '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 // temperature: this.temperature,\r\n // event_id: this.eventId,\r\n // token: this.s27UserToken,\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 // Retrieve its body as ReadableStream\r\n .then((response) => {\r\n return this.readAllChunks(response.body);\r\n })\r\n .catch((err) => {\r\n console.error('Err: ', err);\r\n this.isChatingWithAi = false;\r\n });\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 }\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 (aiFormattedData.section_id == 'company_search' || aiFormattedData.section_id == 'user_search' || aiFormattedData.section_id == 'industry_company_search') {\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)\r\n this.getSpeakersByStaffIds(speakerIds);\r\n }\r\n\r\n if (aiFormattedData.section_id == this.addToMyAgendaAction && aiFormattedData.content?.length > 0) {\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 }\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 += \"\\n\\n\" + '<a id=\"closeBotNow\">Click Here</a> to see results.'\r\n }\r\n }\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 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\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\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 =\r\n `${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(navigator.userAgent);\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 !(this.canDisconnect(userId) || this.pendingRequests.find(a => a == userId))\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\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\r\n this.agents?.forEach(agent => agent.selected = false);\r\n this.cdr.detectChanges();\r\n\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 ? `${selectedAgents?.length} Agents Selected` : `${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\r\n fetchAgents() {\r\n this.fetchAgents_http()\r\n .subscribe();\r\n }\r\n\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(/^(#{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 console.log('After header conversion:', html);\r\n\r\n // Convert Markdown links to HTML links\r\n html = html.replace(/\\[([^\\]]+)]\\(([^)]+)\\)/g, '<a href=\"$2\" target=\"_blank\">$1</a>');\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 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 /*Related*/\r\n relatedListItems: string[] = [\r\n \"What are the key trends in AI for January 2024\",\r\n \"How is Microsoft's AI strategy contributing to its financial growth\",\r\n \"What are the implications of The New York Times' AI initiatives in the newsroom\",\r\n \"How is OpenAI responding to the lawsuit filed by The New York Times\",\r\n \"What are the potential impacts of Sam Altman's AI chip factories on the industry\"\r\n ];\r\n /*End Related*/\r\n\r\n sourcesList = [\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 onCardClick(): void {\r\n\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 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 }, 1000);\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 displayedSources = this.sourcesList.slice(0, 3); // First 3 cards\r\n remainingSources = this.sourcesList.slice(3); // Remaining items\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 { 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\n\r\n@NgModule({\r\n declarations: [ChatBotComponent, ChatDrawerComponent, VideoPlayerComponent, SafeHtmlPipe],\r\n imports: [CommonModule, MatIconModule, MatSidenavModule, FormsModule],\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/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/hivegpt.module.ts"],"names":["Object","create","__read","o","n","m","Symbol","iterator","r","e","i","call","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","this","storageKey","prototype","generateKey","Math","floor","getTime","toString","replace","random","generateStorageKey","key","ensureKeyExists","localStorage","getItem","newKey","setItem","getKey","Injectable","args","providedIn","SocketService","connect","_this","url","socket$","webSocket","subscribe","message","onMessage","err","console","warn","log","sendMessage","close","complete","onEvent","eventName","Observable","observer","event","data","ChatDrawerComponent","cdr","http","sanitizer","elementRef","renderer","socketService","conversation","bodyOverflowClass","isCollapsedTrue","copilotName","feedbackEvent","EventEmitter","onCloseEvent","openPage","sessionActions","closeBot","connectWithUser","scheduleMeeting","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","isDropdownOpen","selectedAgents","allSelected","isCollapsed","isCollapsedForGraph","relatedListItems","sourcesList","title","desc","link","dateTime","toISOString","isDrawerOpen","displayedSources","slice","remainingSources","chatMain","ElementRef","ngOnInit","environment","isDev","changeTemperature","fetchBotConfig","res","markForCheck","fetchChatHistory","response","mapChatHistory","fetchAgents","initializeSocketAndListen","eventSubscription","handleEvent","type","ngOnDestroy","unsubscribe","newTemperature","wrapper","document","querySelector","classList","remove","add","onStartAgain","processMessage","time","archieveMessages","headers","HttpHeaders","Content-Type","x-api-key","apiKey","botId","userId","post","pipe","switchMap","of","catchError","get","botName","Name","botIcon","Icon","botSkills","Skills","Greeting","thumbsDownMessages","_a","NegativeResponses","QuickPrompts","conversationKey","accept","handleError","operation","result","chats","Messages","forEach","chat","Type","processMessageForDisplay","Text","InsertTimestamp","copied","trim","markdownLinkRegex","urlRegex","test","html","sanitizeHtml","match","hashes","text","level","ngAfterViewChecked","nativeElement","querySelectorAll","addEventListener","onFeedbackClick","bind","bypassSecurityTrustHtml","emit","onClose","removeClass","body","sendMessageWithTile","prompt","fetchData","fetch","method","JSON","stringify","user_question","user_id","bot_id","agents","filter","p","selected","map","id","conversation_id","then","fetchDataFor","msg","inputMsg","fetchSmallTalk","smallTalk","isFeedbackMsg","read","_e","lastItem","pop","suggestions","decodedChunk","decode","suggestionsMatch","aiFormattedData","parse","section_id","fetchMyConnections","fetchPendingRequests","speakerIds","_b","content","session","getSpeakersByStaffIds","_c","sectionId","sessionIds","usersLen","_d","search","connetUserIds","is_open_page","isMobileBrowser","action","setTimeout","addCloseBotClickEvent","enqueue","submitFeedback","flag","thumbsUpMessage","handleSubmit","handleUpClick","idx","liked","unliked","handleDownClick","handleCopyClick","index","contentToCopy","navigator","clipboard","writeText","detectChanges","counter","interval","setInterval","scrollTop","scrollHeight","clearInterval","handleAction","info","ngAfterViewInit","drawer","opened","setBodyOverflow","openedChange","removeBodyOverflow","myTextarea","focus","addClass","ids","eventId","Authorization","ok","json","Error","speaker","performSessionAction","sessionId","element","listen","userAgent","connectToUser","canDisconnect","scheduleMeetingWithUser","user","canConnect","pendingRequests","find","a","myConnections","conn","toggleDropdown","onSelectAll","agent","onAgentChange","agentFound","areAllSelected","every","getDropdownHeaderText","fetchAgents_http","assign","markdown","sanitizedHtml","toggleCollapse","toggleCollapseGraph","getDomainName","URL","hostname","getFaviconUrl","onCardClick","sourcesDrawer","open","button","getElementById","style","display","onCloseSource","onDrawerClosed","toggleDrawer","todo","updateButtonVisibility","openLinkInNewTab","window","Component","selector","template","changeDetection","ChangeDetectionStrategy","OnPush","ChangeDetectorRef","HttpClient","DomSanitizer","Renderer2","ViewChild","ViewChildren","static","Input","Output","ChatBotComponent","visible","toggle","SafeHtmlPipe","transform","Pipe","name","VideoPlayerComponent","doc","el","isMuted","isFullscreen","isFullscreenvideoPlaying","toggleSound","video","muted","togglePlay","playState","videoEl","videoObj","isPlaying","play","pause","innerWidth","IntersectionObserver","entries","isIntersecting","threshold","observe","toggleFullscreen","fullscreenvideo","toggleFullscreenPlay","followUser","checkPendingSentRequest","myPendingSentRequests","canUnfollowUser","canFollowUser","getIniNames","firstName","lastName","charAt","toUpperCase","Inject","DOCUMENT","NgModule","declarations","imports","CommonModule","MatIconModule","MatSidenavModule","FormsModule","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: 'notif-v2-api.social27.com/api/notifications'\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: 'notif-v2-api.social27.com/api/notifications'\r\n}\r\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ConversationService {\n\n private storageKey = 'conversationKey';\n\n constructor() {\n\n }\n private generateKey(): string {\n const timestamp = Math.floor(new Date().getTime() / 1000).toString(16);\n const randomHex = 'xxxxxxxxxxxxxxxx'.replace(/[x]/g, () => {\n return (Math.floor(Math.random() * 16)).toString(16);\n });\n return timestamp + randomHex;\n }\n private generateStorageKey(key: string): string {\n return `conversationKey_${key}`;\n }\n\n private ensureKeyExists(storageKey: string, key: string): void {\n if (!localStorage.getItem(storageKey)) {\n const newKey = this.generateKey();\n localStorage.setItem(storageKey, newKey);\n }\n }\n\n getKey(key: string): string {\n const storageKey = this.generateStorageKey(key);\n this.ensureKeyExists(storageKey, key);\n return localStorage.getItem(storageKey)!;\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { Observable, Subject } from 'rxjs';\nimport { webSocket, WebSocketSubject } from 'rxjs/webSocket';\nimport { prod_environment } from '../../environments/environment';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class SocketService {\n private socket$: WebSocketSubject<any>;\n\n constructor() {\n this.connect();\n }\n\n private connect(): void {\n const url = prod_environment;\n this.socket$ = webSocket('ws://' + url.SocketUrl);\n\n this.socket$.subscribe(\n (message) => this.onMessage(message),\n (err) => console.error('WebSocket error', err),\n () => console.warn('WebSocket closed')\n );\n }\n\n private onMessage(message: any): void {\n console.log('Received message:', message);\n // Handle incoming messages\n }\n\n sendMessage(message: any): void {\n this.socket$.next(message);\n }\n\n close(): void {\n this.socket$.complete();\n }\n\n onEvent(eventName: string): Observable<any> {\n return new Observable<any>((observer) => {\n this.socket$.subscribe((message: any) => {\n if (message.event === eventName) {\n observer.next(message.data);\n }\n });\n });\n }\n}\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 OnInit,\r\n Output,\r\n QueryList,\r\n Renderer2,\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 { dev_environment, prod_environment } 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\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 {\r\n @ViewChild('chatMain') private chatMain: ElementRef;\r\n @ViewChildren('closeplaygroundbutton') closePlaygroundButtons: QueryList<ElementRef>;\r\n @ViewChild('drawer') drawer!: MatDrawer;\r\n @ViewChild('sourcesDrawer') sourcesDrawer!: 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() s27UserToken!: 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\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\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 conversation: ConversationService\r\n // 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\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.initializeSocketAndListen();\r\n }\r\n private eventSubscription: Subscription;\r\n initializeSocketAndListen() {\r\n this.eventSubscription = this.socketService.onEvent('webresult').subscribe((data) => {\r\n console.log('Event received webresult:', data);\r\n this.handleEvent(data, 'webresult');\r\n });\r\n this.eventSubscription = this.socketService.onEvent('answer').subscribe((data) => {\r\n console.log('Event received answer:', data);\r\n this.handleEvent(data, 'answer');\r\n });\r\n this.eventSubscription = this.socketService.onEvent('graph').subscribe((data) => {\r\n console.log('Event received graph:', data);\r\n this.handleEvent(data, 'graph');\r\n });\r\n }\r\n handleEvent(data: any, type: string) {\r\n switch (type) {\r\n case 'webresult':\r\n\r\n break;\r\n case 'answer':\r\n\r\n break;\r\n case 'graph':\r\n\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.conversation.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.get(url, { headers }).pipe(\r\n catchError(this.handleError<any>('fetchConversation'))\r\n );\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 this.chatLog.push({\r\n type: 'ai',\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 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() {\r\n this.input = this.input?.trim();\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.processMessage(this.input),\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 =\r\n `${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 '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 // temperature: this.temperature,\r\n // event_id: this.eventId,\r\n // token: this.s27UserToken,\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 // Retrieve its body as ReadableStream\r\n .then((response) => {\r\n return this.readAllChunks(response.body);\r\n })\r\n .catch((err) => {\r\n console.error('Err: ', err);\r\n this.isChatingWithAi = false;\r\n });\r\n\r\n this.input = '';\r\n }\r\n fetchDataFor(msg) {\r\n const inputMsg = msg?.trim();\r\n if (!inputMsg || this.loading) {\r\n return;\r\n }\r\n this.scrollToBottom();\r\n this.chatLog.push({\r\n type: 'user',\r\n message: this.processMessage(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 =\r\n `${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 '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 // temperature: this.temperature,\r\n // event_id: this.eventId,\r\n // token: this.s27UserToken,\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 // Retrieve its body as ReadableStream\r\n .then((response) => {\r\n return this.readAllChunks(response.body);\r\n })\r\n .catch((err) => {\r\n console.error('Err: ', err);\r\n this.isChatingWithAi = false;\r\n });\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 }\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 (aiFormattedData.section_id == 'company_search' || aiFormattedData.section_id == 'user_search' || aiFormattedData.section_id == 'industry_company_search') {\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)\r\n this.getSpeakersByStaffIds(speakerIds);\r\n }\r\n\r\n if (aiFormattedData.section_id == this.addToMyAgendaAction && aiFormattedData.content?.length > 0) {\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 }\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 += \"\\n\\n\" + '<a id=\"closeBotNow\">Click Here</a> to see results.'\r\n }\r\n }\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 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\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\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 =\r\n `${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(navigator.userAgent);\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 !(this.canDisconnect(userId) || this.pendingRequests.find(a => a == userId))\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\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\r\n this.agents?.forEach(agent => agent.selected = false);\r\n this.cdr.detectChanges();\r\n\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 ? `${selectedAgents?.length} Agents Selected` : `${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\r\n fetchAgents() {\r\n this.fetchAgents_http()\r\n .subscribe();\r\n }\r\n\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(/^(#{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 console.log('After header conversion:', html);\r\n\r\n // Convert Markdown links to HTML links\r\n html = html.replace(/\\[([^\\]]+)]\\(([^)]+)\\)/g, '<a href=\"$2\" target=\"_blank\">$1</a>');\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 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 /*Related*/\r\n relatedListItems: string[] = [\r\n \"What are the key trends in AI for January 2024\",\r\n \"How is Microsoft's AI strategy contributing to its financial growth\",\r\n \"What are the implications of The New York Times' AI initiatives in the newsroom\",\r\n \"How is OpenAI responding to the lawsuit filed by The New York Times\",\r\n \"What are the potential impacts of Sam Altman's AI chip factories on the industry\"\r\n ];\r\n /*End Related*/\r\n\r\n sourcesList = [\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 onCardClick(): void {\r\n\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 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 }, 1000);\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 displayedSources = this.sourcesList.slice(0, 3); // First 3 cards\r\n remainingSources = this.sourcesList.slice(3); // Remaining items\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 { 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\n\r\n@NgModule({\r\n declarations: [ChatBotComponent, ChatDrawerComponent, VideoPlayerComponent, SafeHtmlPipe],\r\n imports: [CommonModule, MatIconModule, MatSidenavModule, FormsModule],\r\n exports: [ChatBotComponent, ChatDrawerComponent, VideoPlayerComponent]\r\n})\r\nexport class HiveGptModule {}\r\n"]}
|