@hivegpt/hiveai-angular 0.0.18 → 0.0.19

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../node_modules/tslib/tslib.es6.js","../../../../projects/hivegpt/eventsgpt-angular/src/lib/utils/utils.ts","../../../../projects/hivegpt/eventsgpt-angular/src/environments/environment.ts","../../../../projects/hivegpt/eventsgpt-angular/src/lib/components/conversation.service.ts","../../../../projects/hivegpt/eventsgpt-angular/src/lib/components/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","API_KEY","dev_environment","ConversationService","this","storageKey","ensureKeyExists","prototype","generateKey","Array","fill","map","Math","floor","random","toString","join","localStorage","getItem","newKey","setItem","getKey","Injectable","args","providedIn","ChatDrawerComponent","cdr","http","sanitizer","elementRef","renderer","conversation","_this","bodyOverflowClass","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","readAllChunks","stream","reader","getReader","allSuggestions","closed","catch","err","console","scrollToBottom","ReadableStream","start","controller","pump","chatMain","ElementRef","conversationKey","ngOnInit","environment","isDev","changeTemperature","fetchBotConfig","subscribe","res","markForCheck","fetchChatHistory","response","mapChatHistory","newTemperature","wrapper","document","querySelector","classList","remove","add","onStartAgain","type","message","processMessage","time","archieveMessages","headers","HttpHeaders","Content-Type","x-api-key","apiKey","url","botId","userId","post","pipe","switchMap","of","catchError","get","botName","Name","botIcon","Icon","Greeting","thumbsDownMessages","_a","NegativeResponses","QuickPrompts","error1","chats","forEach","chat","User","Timestamp","AI","log","trim","markdownLinkRegex","urlRegex","test","html","replace","sanitizeHtml","ngAfterViewChecked","nativeElement","querySelectorAll","link","addEventListener","onFeedbackClick","bind","bypassSecurityTrustHtml","emit","onClose","removeClass","body","sendMessageWithTile","prompt","fetchData","fetch","method","JSON","stringify","user_question","user_id","bot_id","conversation_id","then","readStream","read","_e","chunk","decode","fetchSmallTalk","smallTalk","isFeedbackMsg","lastItem","pop","suggestions","close","decodedChunk","suggestionsMatch","match","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","counter","interval","setInterval","scrollTop","scrollHeight","clearInterval","handleAction","info","ngAfterViewInit","drawer","opened","setBodyOverflow","openedChange","removeBodyOverflow","myTextarea","focus","addClass","ids","eventId","Authorization","ok","json","Error","data","speaker","id","performSessionAction","sessionId","element","listen","navigator","userAgent","connectToUser","connect","canDisconnect","scheduleMeetingWithUser","user","canConnect","pendingRequests","find","a","myConnections","conn","Component","selector","template","changeDetection","ChangeDetectionStrategy","OnPush","ChangeDetectorRef","HttpClient","DomSanitizer","Renderer2","ViewChild","static","Input","Output","ChatBotComponent","visible","toggle","SafeHtmlPipe","transform","Pipe","name","VideoPlayerComponent","doc","el","isMuted","isFullscreen","isFullscreenvideoPlaying","toggleSound","video","getElementById","muted","togglePlay","playState","videoEl","videoObj","isPlaying","play","pause","window","innerWidth","observer","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","export const prod_environment = {\r\n USERS_API: 'https://es-user.social27.com/api',\r\n BASE_URL: 'https://agent-api.hivegpt.ai',\r\n API_KEY: 'b621eb3f-0bd2-41d5-a48c-a8f8ab7d38f8'\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 API_KEY: 'b621eb3f-0bd2-41d5-a48c-a8f8ab7d38f8'\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 this.ensureKeyExists();\n }\n\n private generateKey(): string {\n return Array(24).fill(null).map(() => Math.floor(Math.random() * 16).toString(16)).join('');\n }\n\n private ensureKeyExists(): void {\n if (!localStorage.getItem(this.storageKey)) {\n const newKey = this.generateKey();\n localStorage.setItem(this.storageKey, newKey);\n }\n }\n\n getKey(): string {\n return localStorage.getItem(this.storageKey)!;\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 Renderer2,\r\n ViewChild,\r\n} from '@angular/core';\r\nimport { MatDrawer } from '@angular/material/sidenav';\r\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\r\nimport { of } 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\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\r\n @ViewChild('drawer') drawer!: 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\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() 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 };\r\n pendingRequests: any;\r\n myConnections: any;\r\n conversationKey: string;\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 conversation: ConversationService\r\n // private platform: Platform\r\n ) {\r\n this.chatMain = new ElementRef(null);\r\n this.conversationKey = this.conversation.getKey();\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 this.fetchChatHistory().subscribe(\r\n (response) => {\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\r\n this.cdr.markForCheck();\r\n }\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.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() {\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 .post(\r\n `${this.environment.BASE_URL}/conversations/${this.conversationKey}`,\r\n {\r\n },\r\n { headers }\r\n )\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 try {\r\n console.error('Error fetching chat history: ', error);\r\n } catch (error1) {\r\n\r\n }\r\n\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?.length) {\r\n chats.forEach((chat: any) => {\r\n if (chat.User) {\r\n this.chatLog.push({\r\n type: 'user',\r\n message: this.processMessage(chat.User),\r\n time: formatTimeStamps(this.timezone, chat.Timestamp),\r\n });\r\n }\r\n if (chat.AI) {\r\n this.chatLog.push({\r\n type: 'ai',\r\n message: this.processMessage(chat.AI),\r\n time: formatTimeStamps(this.timezone, chat.Timestamp),\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\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\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 });\r\n\r\n this.cdr.markForCheck();\r\n\r\n this.aiResponse = '';\r\n this.loading = true;\r\n\r\n const url = `${this.environment.BASE_URL}/ai/ask`;\r\n\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 conversation_id: this.conversationKey\r\n }),\r\n })\r\n .then(response => {\r\n const reader = response.body.getReader();\r\n const decoder = new TextDecoder('utf-8');\r\n this.readStream(reader, decoder);\r\n })\r\n .catch(err => {\r\n console.error('Err: ', err);\r\n this.loading = false;\r\n });\r\n\r\n this.input = '';\r\n }\r\n\r\n readStream(reader, decoder) {\r\n reader.read().then(({ done, value }) => {\r\n if (done) {\r\n this.loading = false;\r\n return;\r\n }\r\n\r\n // Decode the chunk into a string\r\n const chunk = decoder.decode(value, { stream: true });\r\n console.log(chunk);\r\n\r\n // Append the chunk to aiResponse or process it as needed\r\n this.aiResponse += chunk;\r\n\r\n // Continue reading\r\n this.readStream(reader, decoder);\r\n }).catch(err => {\r\n console.error('Stream reading error: ', err);\r\n this.loading = false;\r\n });\r\n }\r\n\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.loading = 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.processMessage(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.loading = 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.loading = 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\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 // events/${eventId}/users-connections\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() 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/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","API_KEY","dev_environment","ConversationService","this","storageKey","ensureKeyExists","prototype","generateKey","Math","floor","getTime","toString","replace","random","localStorage","getItem","newKey","setItem","getKey","Injectable","args","providedIn","ChatDrawerComponent","cdr","http","sanitizer","elementRef","renderer","conversation","_this","bodyOverflowClass","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","readAllChunks","stream","reader","getReader","allSuggestions","closed","catch","err","console","scrollToBottom","ReadableStream","start","controller","pump","chatMain","ElementRef","conversationKey","ngOnInit","environment","isDev","changeTemperature","fetchBotConfig","subscribe","res","markForCheck","fetchChatHistory","response","mapChatHistory","newTemperature","wrapper","document","querySelector","classList","remove","add","onStartAgain","type","message","processMessage","time","archieveMessages","headers","HttpHeaders","Content-Type","x-api-key","apiKey","url","botId","userId","post","pipe","switchMap","of","catchError","get","botName","Name","botIcon","Icon","Greeting","thumbsDownMessages","_a","NegativeResponses","QuickPrompts","error1","chats","forEach","chat","User","Timestamp","AI","log","trim","markdownLinkRegex","urlRegex","test","html","sanitizeHtml","ngAfterViewChecked","nativeElement","querySelectorAll","link","addEventListener","onFeedbackClick","bind","bypassSecurityTrustHtml","emit","onClose","removeClass","body","sendMessageWithTile","prompt","fetchData","fetch","method","JSON","stringify","user_question","user_id","bot_id","conversation_id","then","readStream","read","_e","chunk","decode","fetchSmallTalk","smallTalk","isFeedbackMsg","lastItem","pop","suggestions","close","decodedChunk","suggestionsMatch","match","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","counter","interval","setInterval","scrollTop","scrollHeight","clearInterval","handleAction","info","ngAfterViewInit","drawer","opened","setBodyOverflow","openedChange","removeBodyOverflow","myTextarea","focus","addClass","ids","eventId","Authorization","ok","json","Error","data","speaker","id","performSessionAction","sessionId","element","listen","navigator","userAgent","connectToUser","connect","canDisconnect","scheduleMeetingWithUser","user","canConnect","pendingRequests","find","a","myConnections","conn","Component","selector","template","changeDetection","ChangeDetectionStrategy","OnPush","ChangeDetectorRef","HttpClient","DomSanitizer","Renderer2","ViewChild","static","Input","Output","ChatBotComponent","visible","toggle","SafeHtmlPipe","transform","Pipe","name","VideoPlayerComponent","doc","el","isMuted","isFullscreen","isFullscreenvideoPlaying","toggleSound","video","getElementById","muted","togglePlay","playState","videoEl","videoObj","isPlaying","play","pause","window","innerWidth","observer","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","export const prod_environment = {\r\n USERS_API: 'https://es-user.social27.com/api',\r\n BASE_URL: 'https://agent-api.hivegpt.ai',\r\n API_KEY: 'b621eb3f-0bd2-41d5-a48c-a8f8ab7d38f8'\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 API_KEY: 'b621eb3f-0bd2-41d5-a48c-a8f8ab7d38f8'\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 this.ensureKeyExists();\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\n private ensureKeyExists(): void {\n if (!localStorage.getItem(this.storageKey)) {\n const newKey = this.generateKey();\n localStorage.setItem(this.storageKey, newKey);\n }\n }\n\n getKey(): string {\n return localStorage.getItem(this.storageKey)!;\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 Renderer2,\r\n ViewChild,\r\n} from '@angular/core';\r\nimport { MatDrawer } from '@angular/material/sidenav';\r\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\r\nimport { of } 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\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\r\n @ViewChild('drawer') drawer!: 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\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() 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 };\r\n pendingRequests: any;\r\n myConnections: any;\r\n conversationKey: string;\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 conversation: ConversationService\r\n // private platform: Platform\r\n ) {\r\n this.chatMain = new ElementRef(null);\r\n this.conversationKey = this.conversation.getKey();\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 this.fetchChatHistory().subscribe(\r\n (response) => {\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\r\n this.cdr.markForCheck();\r\n }\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.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() {\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 .post(\r\n `${this.environment.BASE_URL}/conversations/${this.conversationKey}`,\r\n {\r\n },\r\n { headers }\r\n )\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 try {\r\n console.error('Error fetching chat history: ', error);\r\n } catch (error1) {\r\n\r\n }\r\n\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?.length) {\r\n chats.forEach((chat: any) => {\r\n if (chat.User) {\r\n this.chatLog.push({\r\n type: 'user',\r\n message: this.processMessage(chat.User),\r\n time: formatTimeStamps(this.timezone, chat.Timestamp),\r\n });\r\n }\r\n if (chat.AI) {\r\n this.chatLog.push({\r\n type: 'ai',\r\n message: this.processMessage(chat.AI),\r\n time: formatTimeStamps(this.timezone, chat.Timestamp),\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\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\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 });\r\n\r\n this.cdr.markForCheck();\r\n\r\n this.aiResponse = '';\r\n this.loading = true;\r\n\r\n const url = `${this.environment.BASE_URL}/ai/ask`;\r\n\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 conversation_id: this.conversationKey\r\n }),\r\n })\r\n .then(response => {\r\n const reader = response.body.getReader();\r\n const decoder = new TextDecoder('utf-8');\r\n this.readStream(reader, decoder);\r\n })\r\n .catch(err => {\r\n console.error('Err: ', err);\r\n this.loading = false;\r\n });\r\n\r\n this.input = '';\r\n }\r\n\r\n readStream(reader, decoder) {\r\n reader.read().then(({ done, value }) => {\r\n if (done) {\r\n this.loading = false;\r\n return;\r\n }\r\n\r\n // Decode the chunk into a string\r\n const chunk = decoder.decode(value, { stream: true });\r\n console.log(chunk);\r\n\r\n // Append the chunk to aiResponse or process it as needed\r\n this.aiResponse += chunk;\r\n\r\n // Continue reading\r\n this.readStream(reader, decoder);\r\n }).catch(err => {\r\n console.error('Stream reading error: ', err);\r\n this.loading = false;\r\n });\r\n }\r\n\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.loading = 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.processMessage(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.loading = 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.loading = 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\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 // events/${eventId}/users-connections\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() 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"]}
@@ -6,7 +6,11 @@ export class ConversationService {
6
6
  this.ensureKeyExists();
7
7
  }
8
8
  generateKey() {
9
- return Array(24).fill(null).map(() => Math.floor(Math.random() * 16).toString(16)).join('');
9
+ const timestamp = Math.floor(new Date().getTime() / 1000).toString(16);
10
+ const randomHex = 'xxxxxxxxxxxxxxxx'.replace(/[x]/g, () => {
11
+ return (Math.floor(Math.random() * 16)).toString(16);
12
+ });
13
+ return timestamp + randomHex;
10
14
  }
11
15
  ensureKeyExists() {
12
16
  if (!localStorage.getItem(this.storageKey)) {
@@ -25,4 +29,4 @@ ConversationService.decorators = [
25
29
  },] }
26
30
  ];
27
31
  ConversationService.ctorParameters = () => [];
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVyc2F0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiRDovaGl2ZUdQVC1BSS1wYWNrYWdlcy9IaXZlQUktUGFja2FnZXMvcHJvamVjdHMvaGl2ZWdwdC9ldmVudHNncHQtYW5ndWxhci9zcmMvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50cy9jb252ZXJzYXRpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUszQyxNQUFNLE9BQU8sbUJBQW1CO0lBSTlCO1FBRlEsZUFBVSxHQUFHLGlCQUFpQixDQUFDO1FBR3JDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRU8sV0FBVztRQUNqQixPQUFPLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM5RixDQUFDO0lBRU8sZUFBZTtRQUNyQixJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUU7WUFDMUMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ2xDLFlBQVksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxNQUFNLENBQUMsQ0FBQztTQUMvQztJQUNILENBQUM7SUFFRCxNQUFNO1FBQ0osT0FBTyxZQUFZLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUUsQ0FBQztJQUNoRCxDQUFDOzs7O1lBeEJGLFVBQVUsU0FBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgQ29udmVyc2F0aW9uU2VydmljZSB7XG5cbiAgcHJpdmF0ZSBzdG9yYWdlS2V5ID0gJ2NvbnZlcnNhdGlvbktleSc7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5lbnN1cmVLZXlFeGlzdHMoKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2VuZXJhdGVLZXkoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gQXJyYXkoMjQpLmZpbGwobnVsbCkubWFwKCgpID0+IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIDE2KS50b1N0cmluZygxNikpLmpvaW4oJycpO1xuICB9XG5cbiAgcHJpdmF0ZSBlbnN1cmVLZXlFeGlzdHMoKTogdm9pZCB7XG4gICAgaWYgKCFsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLnN0b3JhZ2VLZXkpKSB7XG4gICAgICBjb25zdCBuZXdLZXkgPSB0aGlzLmdlbmVyYXRlS2V5KCk7XG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLnN0b3JhZ2VLZXksIG5ld0tleSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0S2V5KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuc3RvcmFnZUtleSkhO1xuICB9XG59XG4iXX0=
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVyc2F0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiRDovaGl2ZUdQVC1BSS1wYWNrYWdlcy9IaXZlQUktUGFja2FnZXMvcHJvamVjdHMvaGl2ZWdwdC9ldmVudHNncHQtYW5ndWxhci9zcmMvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50cy9jb252ZXJzYXRpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUszQyxNQUFNLE9BQU8sbUJBQW1CO0lBSTlCO1FBRlEsZUFBVSxHQUFHLGlCQUFpQixDQUFDO1FBR3JDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRU8sV0FBVztRQUNqQixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZFLE1BQU0sU0FBUyxHQUFHLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFO1lBQ3hELE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN2RCxDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sU0FBUyxHQUFHLFNBQVMsQ0FBQztJQUMvQixDQUFDO0lBRU8sZUFBZTtRQUNyQixJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUU7WUFDMUMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ2xDLFlBQVksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxNQUFNLENBQUMsQ0FBQztTQUMvQztJQUNILENBQUM7SUFFRCxNQUFNO1FBQ0osT0FBTyxZQUFZLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUUsQ0FBQztJQUNoRCxDQUFDOzs7O1lBNUJGLFVBQVUsU0FBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgQ29udmVyc2F0aW9uU2VydmljZSB7XG5cbiAgcHJpdmF0ZSBzdG9yYWdlS2V5ID0gJ2NvbnZlcnNhdGlvbktleSc7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5lbnN1cmVLZXlFeGlzdHMoKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2VuZXJhdGVLZXkoKTogc3RyaW5nIHtcbiAgICBjb25zdCB0aW1lc3RhbXAgPSBNYXRoLmZsb29yKG5ldyBEYXRlKCkuZ2V0VGltZSgpIC8gMTAwMCkudG9TdHJpbmcoMTYpO1xuICAgIGNvbnN0IHJhbmRvbUhleCA9ICd4eHh4eHh4eHh4eHh4eHh4Jy5yZXBsYWNlKC9beF0vZywgKCkgPT4ge1xuICAgICAgcmV0dXJuIChNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAxNikpLnRvU3RyaW5nKDE2KTtcbiAgICB9KTtcbiAgICByZXR1cm4gdGltZXN0YW1wICsgcmFuZG9tSGV4O1xuICB9XG5cbiAgcHJpdmF0ZSBlbnN1cmVLZXlFeGlzdHMoKTogdm9pZCB7XG4gICAgaWYgKCFsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLnN0b3JhZ2VLZXkpKSB7XG4gICAgICBjb25zdCBuZXdLZXkgPSB0aGlzLmdlbmVyYXRlS2V5KCk7XG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLnN0b3JhZ2VLZXksIG5ld0tleSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0S2V5KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuc3RvcmFnZUtleSkhO1xuICB9XG59XG4iXX0=
@@ -60,7 +60,11 @@ class ConversationService {
60
60
  this.ensureKeyExists();
61
61
  }
62
62
  generateKey() {
63
- return Array(24).fill(null).map(() => Math.floor(Math.random() * 16).toString(16)).join('');
63
+ const timestamp = Math.floor(new Date().getTime() / 1000).toString(16);
64
+ const randomHex = 'xxxxxxxxxxxxxxxx'.replace(/[x]/g, () => {
65
+ return (Math.floor(Math.random() * 16)).toString(16);
66
+ });
67
+ return timestamp + randomHex;
64
68
  }
65
69
  ensureKeyExists() {
66
70
  if (!localStorage.getItem(this.storageKey)) {