bibot 1.0.7 → 1.0.11

Sign up to get free protection for your applications and to get access to all the features.
Files changed (116) hide show
  1. package/README.md +21 -36
  2. package/dist/component/bibot.d.ts +6 -5
  3. package/dist/config/appStateEnums.d.ts +3 -3
  4. package/dist/config/endpointEnums.d.ts +18 -18
  5. package/dist/config/index.d.ts +3 -3
  6. package/dist/config/statusCode.d.ts +42 -42
  7. package/dist/context/AppContext.d.ts +9 -8
  8. package/dist/context/index.d.ts +1 -1
  9. package/dist/hooks/index.d.ts +3 -3
  10. package/dist/hooks/mobileView.d.ts +1 -1
  11. package/dist/hooks/useBiBotChatBot.d.ts +29 -29
  12. package/dist/hooks/usePluginFactory.d.ts +1 -1
  13. package/dist/index.css +139 -35
  14. package/dist/index.d.ts +6 -2
  15. package/dist/index.js +649 -9
  16. package/dist/index.js.map +1 -1
  17. package/dist/index.modern.js +646 -0
  18. package/dist/index.modern.js.map +1 -0
  19. package/dist/index.test.d.ts +1 -0
  20. package/dist/reducers/appReducer.d.ts +2 -2
  21. package/dist/reducers/index.d.ts +1 -1
  22. package/dist/services/index.d.ts +1 -1
  23. package/dist/services/plugin-api.d.ts +23 -26
  24. package/dist/types/coreInterfaces.d.ts +51 -51
  25. package/dist/types/index.d.ts +1 -1
  26. package/dist/utils/index.d.ts +2 -2
  27. package/dist/utils/sessionManager.d.ts +2 -2
  28. package/dist/utils/trimWhitespace.d.ts +2 -2
  29. package/package.json +62 -37
  30. package/.babelrc +0 -7
  31. package/.vscode/settings.json +0 -5
  32. package/dist/bibot.d.ts +0 -5
  33. package/dist/bibot.js +0 -175
  34. package/dist/bibot.js.map +0 -1
  35. package/dist/component/bibot.js +0 -170
  36. package/dist/component/bibot.js.map +0 -1
  37. package/dist/config/appStateEnums.js +0 -10
  38. package/dist/config/appStateEnums.js.map +0 -1
  39. package/dist/config/endpointEnums.js +0 -31
  40. package/dist/config/endpointEnums.js.map +0 -1
  41. package/dist/config/index.js +0 -38
  42. package/dist/config/index.js.map +0 -1
  43. package/dist/config/statusCode.js +0 -49
  44. package/dist/config/statusCode.js.map +0 -1
  45. package/dist/context/AppContext.js +0 -75
  46. package/dist/context/AppContext.js.map +0 -1
  47. package/dist/context/index.js +0 -16
  48. package/dist/context/index.js.map +0 -1
  49. package/dist/hooks/index.js +0 -38
  50. package/dist/hooks/index.js.map +0 -1
  51. package/dist/hooks/mobileView.js +0 -33
  52. package/dist/hooks/mobileView.js.map +0 -1
  53. package/dist/hooks/useBiBotChatBot.js +0 -206
  54. package/dist/hooks/useBiBotChatBot.js.map +0 -1
  55. package/dist/hooks/usePluginFactory.js +0 -62
  56. package/dist/hooks/usePluginFactory.js.map +0 -1
  57. package/dist/reducers/appReducer.js +0 -24
  58. package/dist/reducers/appReducer.js.map +0 -1
  59. package/dist/reducers/index.js +0 -16
  60. package/dist/reducers/index.js.map +0 -1
  61. package/dist/services/index.js +0 -16
  62. package/dist/services/index.js.map +0 -1
  63. package/dist/services/plugin-api.js +0 -185
  64. package/dist/services/plugin-api.js.map +0 -1
  65. package/dist/styles/RegisterPageStyle.css +0 -63
  66. package/dist/styles/adminPortal.css +0 -26
  67. package/dist/styles/appConfig.css +0 -90
  68. package/dist/styles/buttonStyle.css +0 -27
  69. package/dist/styles/chatStyle.css +0 -140
  70. package/dist/styles/index.css +0 -82
  71. package/dist/styles/predefinedStyle.css +0 -35
  72. package/dist/styles/themeStyle.css +0 -42
  73. package/dist/styles/training.css +0 -86
  74. package/dist/types/coreInterfaces.js +0 -5
  75. package/dist/types/coreInterfaces.js.map +0 -1
  76. package/dist/types/index.js +0 -16
  77. package/dist/types/index.js.map +0 -1
  78. package/dist/utils/index.js +0 -27
  79. package/dist/utils/index.js.map +0 -1
  80. package/dist/utils/sessionManager.js +0 -17
  81. package/dist/utils/sessionManager.js.map +0 -1
  82. package/dist/utils/trimWhitespace.js +0 -15
  83. package/dist/utils/trimWhitespace.js.map +0 -1
  84. package/src/component/bibot.tsx +0 -103
  85. package/src/config/appStateEnums.ts +0 -3
  86. package/src/config/endpointEnums.ts +0 -28
  87. package/src/config/index.ts +0 -5
  88. package/src/config/statusCode.ts +0 -49
  89. package/src/context/AppContext.tsx +0 -66
  90. package/src/context/index.ts +0 -3
  91. package/src/hooks/index.ts +0 -5
  92. package/src/hooks/mobileView.tsx +0 -17
  93. package/src/hooks/useBiBotChatBot.tsx +0 -107
  94. package/src/hooks/usePluginFactory.tsx +0 -38
  95. package/src/index.css +0 -36
  96. package/src/index.tsx +0 -3
  97. package/src/reducers/appReducer.ts +0 -16
  98. package/src/reducers/index.ts +0 -4
  99. package/src/services/index.ts +0 -2
  100. package/src/services/plugin-api.tsx +0 -120
  101. package/src/styles/RegisterPageStyle.css +0 -63
  102. package/src/styles/adminPortal.css +0 -26
  103. package/src/styles/appConfig.css +0 -90
  104. package/src/styles/buttonStyle.css +0 -27
  105. package/src/styles/chatStyle.css +0 -140
  106. package/src/styles/index.css +0 -82
  107. package/src/styles/predefinedStyle.css +0 -35
  108. package/src/styles/themeStyle.css +0 -42
  109. package/src/styles/training.css +0 -86
  110. package/src/types/coreInterfaces.ts +0 -69
  111. package/src/types/index.ts +0 -4
  112. package/src/utils/index.ts +0 -2
  113. package/src/utils/sessionManager.tsx +0 -15
  114. package/src/utils/trimWhitespace.ts +0 -11
  115. package/tsconfig.json +0 -25
  116. package/webpack.config.js +0 -19
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,mBAAmB,CAAC;AACtC,eAAe,KAAK,CAAC"}
1
+ {"version":3,"file":"index.js","sources":["../src/config/endpointEnums.ts","../src/hooks/usePluginFactory.tsx","../node_modules/babel-plugin-transform-async-to-promises/helpers.mjs","../src/config/appStateEnums.ts","../src/reducers/appReducer.ts","../node_modules/uuid/dist/esm-browser/rng.js","../node_modules/uuid/dist/esm-browser/stringify.js","../node_modules/uuid/dist/esm-browser/native.js","../node_modules/uuid/dist/esm-browser/v4.js","../src/utils/sessionManager.tsx","../src/context/AppContext.tsx","../src/services/plugin-api.tsx","../src/hooks/useBiBotChatBot.tsx","../src/component/bibot.tsx","../src/index.tsx"],"sourcesContent":["\nexport const APP_DATA = {\n APP_NAME: 'Bibot'\n}\n\nconst baseUrls = {\n inference: 'https://inference.dev.bibot.thespuka.com/v0',\n}\n\nexport const endpoints = {\n get inference () {\n return baseUrls.inference\n },\n} as const\n\nexport enum domain {\n app = '/app',\n bibot = '/bibot',\n inference = '/inference',\n}\n\nexport enum resources {\n chatBubble = '/chat-bubble-config',\n predefinedQ = '/predefined-q',\n localQ = '/local-q',\n timedOutLocalQ = '/t-local-q',\n q = '/q'\n}\n","import axios from 'axios';\nimport { endpoints } from '../config/endpointEnums';\nconst inferenceBaseURL = endpoints.inference;\n\nexport const createPluginAxiosInstance = (params = {}, headers = {}) => {\n const instance = axios.create({\n baseURL: inferenceBaseURL,\n timeout: 60000, // 1 minute\n headers: {\n 'Content-Type': 'application/json',\n ...headers\n },\n ...params\n });\n\n\n instance.interceptors.response.use(\n (response) => {\n return response\n },\n async (error) => {\n let errMsg = 'An unknown error occurred'\n if (error.response) {\n errMsg = error.response.data.message\n } else if (error.request) {\n errMsg = 'No response received from the server.'\n } else {\n errMsg = `Error setting up the request: ${error.message}`\n }\n return await Promise.reject(new Error(errMsg))\n }\n )\n\n return instance\n}\n\n ","// A type of promise-like that resolves synchronously and supports only one observer\nexport const _Pact = /*#__PURE__*/(function() {\n\tfunction _Pact() {}\n\t_Pact.prototype.then = function(onFulfilled, onRejected) {\n\t\tconst result = new _Pact();\n\t\tconst state = this.s;\n\t\tif (state) {\n\t\t\tconst callback = state & 1 ? onFulfilled : onRejected;\n\t\t\tif (callback) {\n\t\t\t\ttry {\n\t\t\t\t\t_settle(result, 1, callback(this.v));\n\t\t\t\t} catch (e) {\n\t\t\t\t\t_settle(result, 2, e);\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t\t} else {\n\t\t\t\treturn this;\n\t\t\t}\n\t\t}\n\t\tthis.o = function(_this) {\n\t\t\ttry {\n\t\t\t\tconst value = _this.v;\n\t\t\t\tif (_this.s & 1) {\n\t\t\t\t\t_settle(result, 1, onFulfilled ? onFulfilled(value) : value);\n\t\t\t\t} else if (onRejected) {\n\t\t\t\t\t_settle(result, 1, onRejected(value));\n\t\t\t\t} else {\n\t\t\t\t\t_settle(result, 2, value);\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\t_settle(result, 2, e);\n\t\t\t}\n\t\t};\n\t\treturn result;\n\t}\n\treturn _Pact;\n})();\n\n// Settles a pact synchronously\nexport function _settle(pact, state, value) {\n\tif (!pact.s) {\n\t\tif (value instanceof _Pact) {\n\t\t\tif (value.s) {\n\t\t\t\tif (state & 1) {\n\t\t\t\t\tstate = value.s;\n\t\t\t\t}\n\t\t\t\tvalue = value.v;\n\t\t\t} else {\n\t\t\t\tvalue.o = _settle.bind(null, pact, state);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\tif (value && value.then) {\n\t\t\tvalue.then(_settle.bind(null, pact, state), _settle.bind(null, pact, 2));\n\t\t\treturn;\n\t\t}\n\t\tpact.s = state;\n\t\tpact.v = value;\n\t\tconst observer = pact.o;\n\t\tif (observer) {\n\t\t\tobserver(pact);\n\t\t}\n\t}\n}\n\nexport function _isSettledPact(thenable) {\n\treturn thenable instanceof _Pact && thenable.s & 1;\n}\n\n// Converts argument to a function that always returns a Promise\nexport function _async(f) {\n\treturn function() {\n\t\tfor (var args = [], i = 0; i < arguments.length; i++) {\n\t\t\targs[i] = arguments[i];\n\t\t}\n\t\ttry {\n\t\t\treturn Promise.resolve(f.apply(this, args));\n\t\t} catch(e) {\n\t\t\treturn Promise.reject(e);\n\t\t}\n\t}\n}\n\n// Awaits on a value that may or may not be a Promise (equivalent to the await keyword in ES2015, with continuations passed explicitly)\nexport function _await(value, then, direct) {\n\tif (direct) {\n\t\treturn then ? then(value) : value;\n\t}\n\tif (!value || !value.then) {\n\t\tvalue = Promise.resolve(value);\n\t}\n\treturn then ? value.then(then) : value;\n}\n\n// Awaits on a value that may or may not be a Promise, then ignores it\nexport function _awaitIgnored(value, direct) {\n\tif (!direct) {\n\t\treturn value && value.then ? value.then(_empty) : Promise.resolve();\n\t}\n}\n\n// Proceeds after a value has resolved, or proceeds immediately if the value is not thenable\nexport function _continue(value, then) {\n\treturn value && value.then ? value.then(then) : then(value);\n}\n\n// Proceeds after a value has resolved, or proceeds immediately if the value is not thenable\nexport function _continueIgnored(value) {\n\tif (value && value.then) {\n\t\treturn value.then(_empty);\n\t}\n}\n\n// Asynchronously iterate through an object that has a length property, passing the index as the first argument to the callback (even as the length property changes)\nexport function _forTo(array, body, check) {\n\tvar i = -1, pact, reject;\n\tfunction _cycle(result) {\n\t\ttry {\n\t\t\twhile (++i < array.length && (!check || !check())) {\n\t\t\t\tresult = body(i);\n\t\t\t\tif (result && result.then) {\n\t\t\t\t\tif (_isSettledPact(result)) {\n\t\t\t\t\t\tresult = result.v;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult.then(_cycle, reject || (reject = _settle.bind(null, pact = new _Pact(), 2)));\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (pact) {\n\t\t\t\t_settle(pact, 1, result);\n\t\t\t} else {\n\t\t\t\tpact = result;\n\t\t\t}\n\t\t} catch (e) {\n\t\t\t_settle(pact || (pact = new _Pact()), 2, e);\n\t\t}\n\t}\n\t_cycle();\n\treturn pact;\n}\n\n// Asynchronously iterate through an object's properties (including properties inherited from the prototype)\n// Uses a snapshot of the object's properties\nexport function _forIn(target, body, check) {\n\tvar keys = [];\n\tfor (var key in target) {\n\t\tkeys.push(key);\n\t}\n\treturn _forTo(keys, function(i) { return body(keys[i]); }, check);\n}\n\n// Asynchronously iterate through an object's own properties (excluding properties inherited from the prototype)\n// Uses a snapshot of the object's properties\nexport function _forOwn(target, body, check) {\n\tvar keys = [];\n\tfor (var key in target) {\n\t\tif (Object.prototype.hasOwnProperty.call(target, key)) {\n\t\t\tkeys.push(key);\n\t\t}\n\t}\n\treturn _forTo(keys, function(i) { return body(keys[i]); }, check);\n}\n\nexport const _iteratorSymbol = /*#__PURE__*/ typeof Symbol !== \"undefined\" ? (Symbol.iterator || (Symbol.iterator = Symbol(\"Symbol.iterator\"))) : \"@@iterator\";\n\n// Asynchronously iterate through an object's values\n// Uses for...of if the runtime supports it, otherwise iterates until length on a copy\nexport function _forOf(target, body, check) {\n\tif (typeof target[_iteratorSymbol] === \"function\") {\n\t\tvar iterator = target[_iteratorSymbol](), step, pact, reject;\n\t\tfunction _cycle(result) {\n\t\t\ttry {\n\t\t\t\twhile (!(step = iterator.next()).done && (!check || !check())) {\n\t\t\t\t\tresult = body(step.value);\n\t\t\t\t\tif (result && result.then) {\n\t\t\t\t\t\tif (_isSettledPact(result)) {\n\t\t\t\t\t\t\tresult = result.v;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tresult.then(_cycle, reject || (reject = _settle.bind(null, pact = new _Pact(), 2)));\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (pact) {\n\t\t\t\t\t_settle(pact, 1, result);\n\t\t\t\t} else {\n\t\t\t\t\tpact = result;\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\t_settle(pact || (pact = new _Pact()), 2, e);\n\t\t\t}\n\t\t}\n\t\t_cycle();\n\t\tif (iterator.return) {\n\t\t\tvar _fixup = function(value) {\n\t\t\t\ttry {\n\t\t\t\t\tif (!step.done) {\n\t\t\t\t\t\titerator.return();\n\t\t\t\t\t}\n\t\t\t\t} catch(e) {\n\t\t\t\t}\n\t\t\t\treturn value;\n\t\t\t}\n\t\t\tif (pact && pact.then) {\n\t\t\t\treturn pact.then(_fixup, function(e) {\n\t\t\t\t\tthrow _fixup(e);\n\t\t\t\t});\n\t\t\t}\n\t\t\t_fixup();\n\t\t}\n\t\treturn pact;\n\t}\n\t// No support for Symbol.iterator\n\tif (!(\"length\" in target)) {\n\t\tthrow new TypeError(\"Object is not iterable\");\n\t}\n\t// Handle live collections properly\n\tvar values = [];\n\tfor (var i = 0; i < target.length; i++) {\n\t\tvalues.push(target[i]);\n\t}\n\treturn _forTo(values, function(i) { return body(values[i]); }, check);\n}\n\nexport const _asyncIteratorSymbol = /*#__PURE__*/ typeof Symbol !== \"undefined\" ? (Symbol.asyncIterator || (Symbol.asyncIterator = Symbol(\"Symbol.asyncIterator\"))) : \"@@asyncIterator\";\n\n// Asynchronously iterate on a value using it's async iterator if present, or its synchronous iterator if missing\nexport function _forAwaitOf(target, body, check) {\n\tif (typeof target[_asyncIteratorSymbol] === \"function\") {\n\t\tvar pact = new _Pact();\n\t\tvar iterator = target[_asyncIteratorSymbol]();\n\t\titerator.next().then(_resumeAfterNext).then(void 0, _reject);\n\t\treturn pact;\n\t\tfunction _resumeAfterBody(result) {\n\t\t\tif (check && check()) {\n\t\t\t\treturn _settle(pact, 1, iterator.return ? iterator.return().then(function() { return result; }) : result);\n\t\t\t}\n\t\t\titerator.next().then(_resumeAfterNext).then(void 0, _reject);\n\t\t}\n\t\tfunction _resumeAfterNext(step) {\n\t\t\tif (step.done) {\n\t\t\t\t_settle(pact, 1);\n\t\t\t} else {\n\t\t\t\tPromise.resolve(body(step.value)).then(_resumeAfterBody).then(void 0, _reject);\n\t\t\t}\n\t\t}\n\t\tfunction _reject(error) {\n\t\t\t_settle(pact, 2, iterator.return ? iterator.return().then(function() { return error; }) : error);\n\t\t}\n\t}\n\treturn Promise.resolve(_forOf(target, function(value) { return Promise.resolve(value).then(body); }, check));\n}\n\n// Asynchronously implement a generic for loop\nexport function _for(test, update, body) {\n\tvar stage;\n\tfor (;;) {\n\t\tvar shouldContinue = test();\n\t\tif (_isSettledPact(shouldContinue)) {\n\t\t\tshouldContinue = shouldContinue.v;\n\t\t}\n\t\tif (!shouldContinue) {\n\t\t\treturn result;\n\t\t}\n\t\tif (shouldContinue.then) {\n\t\t\tstage = 0;\n\t\t\tbreak;\n\t\t}\n\t\tvar result = body();\n\t\tif (result && result.then) {\n\t\t\tif (_isSettledPact(result)) {\n\t\t\t\tresult = result.s;\n\t\t\t} else {\n\t\t\t\tstage = 1;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tif (update) {\n\t\t\tvar updateValue = update();\n\t\t\tif (updateValue && updateValue.then && !_isSettledPact(updateValue)) {\n\t\t\t\tstage = 2;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\tvar pact = new _Pact();\n\tvar reject = _settle.bind(null, pact, 2);\n\t(stage === 0 ? shouldContinue.then(_resumeAfterTest) : stage === 1 ? result.then(_resumeAfterBody) : updateValue.then(_resumeAfterUpdate)).then(void 0, reject);\n\treturn pact;\n\tfunction _resumeAfterBody(value) {\n\t\tresult = value;\n\t\tdo {\n\t\t\tif (update) {\n\t\t\t\tupdateValue = update();\n\t\t\t\tif (updateValue && updateValue.then && !_isSettledPact(updateValue)) {\n\t\t\t\t\tupdateValue.then(_resumeAfterUpdate).then(void 0, reject);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\tshouldContinue = test();\n\t\t\tif (!shouldContinue || (_isSettledPact(shouldContinue) && !shouldContinue.v)) {\n\t\t\t\t_settle(pact, 1, result);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (shouldContinue.then) {\n\t\t\t\tshouldContinue.then(_resumeAfterTest).then(void 0, reject);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tresult = body();\n\t\t\tif (_isSettledPact(result)) {\n\t\t\t\tresult = result.v;\n\t\t\t}\n\t\t} while (!result || !result.then);\n\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t}\n\tfunction _resumeAfterTest(shouldContinue) {\n\t\tif (shouldContinue) {\n\t\t\tresult = body();\n\t\t\tif (result && result.then) {\n\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t} else {\n\t\t\t\t_resumeAfterBody(result);\n\t\t\t}\n\t\t} else {\n\t\t\t_settle(pact, 1, result);\n\t\t}\n\t}\n\tfunction _resumeAfterUpdate() {\n\t\tif (shouldContinue = test()) {\n\t\t\tif (shouldContinue.then) {\n\t\t\t\tshouldContinue.then(_resumeAfterTest).then(void 0, reject);\n\t\t\t} else {\n\t\t\t\t_resumeAfterTest(shouldContinue);\n\t\t\t}\n\t\t} else {\n\t\t\t_settle(pact, 1, result);\n\t\t}\n\t}\n}\n\n// Asynchronously implement a do ... while loop\nexport function _do(body, test) {\n\tvar awaitBody;\n\tdo {\n\t\tvar result = body();\n\t\tif (result && result.then) {\n\t\t\tif (_isSettledPact(result)) {\n\t\t\t\tresult = result.v;\n\t\t\t} else {\n\t\t\t\tawaitBody = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tvar shouldContinue = test();\n\t\tif (_isSettledPact(shouldContinue)) {\n\t\t\tshouldContinue = shouldContinue.v;\n\t\t}\n\t\tif (!shouldContinue) {\n\t\t\treturn result;\n\t\t}\n\t} while (!shouldContinue.then);\n\tconst pact = new _Pact();\n\tconst reject = _settle.bind(null, pact, 2);\n\t(awaitBody ? result.then(_resumeAfterBody) : shouldContinue.then(_resumeAfterTest)).then(void 0, reject);\n\treturn pact;\n\tfunction _resumeAfterBody(value) {\n\t\tresult = value;\n\t\tfor (;;) {\n\t\t\tshouldContinue = test();\n\t\t\tif (_isSettledPact(shouldContinue)) {\n\t\t\t\tshouldContinue = shouldContinue.v;\n\t\t\t}\n\t\t\tif (!shouldContinue) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (shouldContinue.then) {\n\t\t\t\tshouldContinue.then(_resumeAfterTest).then(void 0, reject);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tresult = body();\n\t\t\tif (result && result.then) {\n\t\t\t\tif (_isSettledPact(result)) {\n\t\t\t\t\tresult = result.v;\n\t\t\t\t} else {\n\t\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t_settle(pact, 1, result);\n\t}\n\tfunction _resumeAfterTest(shouldContinue) {\n\t\tif (shouldContinue) {\n\t\t\tdo {\n\t\t\t\tresult = body();\n\t\t\t\tif (result && result.then) {\n\t\t\t\t\tif (_isSettledPact(result)) {\n\t\t\t\t\t\tresult = result.v;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tshouldContinue = test();\n\t\t\t\tif (_isSettledPact(shouldContinue)) {\n\t\t\t\t\tshouldContinue = shouldContinue.v;\n\t\t\t\t}\n\t\t\t\tif (!shouldContinue) {\n\t\t\t\t\t_settle(pact, 1, result);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t} while (!shouldContinue.then);\n\t\t\tshouldContinue.then(_resumeAfterTest).then(void 0, reject);\n\t\t} else {\n\t\t\t_settle(pact, 1, result);\n\t\t}\n\t}\n}\n\n// Asynchronously implement a switch statement\nexport function _switch(discriminant, cases) {\n\tvar dispatchIndex = -1;\n\tvar awaitBody;\n\touter: {\n\t\tfor (var i = 0; i < cases.length; i++) {\n\t\t\tvar test = cases[i][0];\n\t\t\tif (test) {\n\t\t\t\tvar testValue = test();\n\t\t\t\tif (testValue && testValue.then) {\n\t\t\t\t\tbreak outer;\n\t\t\t\t}\n\t\t\t\tif (testValue === discriminant) {\n\t\t\t\t\tdispatchIndex = i;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Found the default case, set it as the pending dispatch case\n\t\t\t\tdispatchIndex = i;\n\t\t\t}\n\t\t}\n\t\tif (dispatchIndex !== -1) {\n\t\t\tdo {\n\t\t\t\tvar body = cases[dispatchIndex][1];\n\t\t\t\twhile (!body) {\n\t\t\t\t\tdispatchIndex++;\n\t\t\t\t\tbody = cases[dispatchIndex][1];\n\t\t\t\t}\n\t\t\t\tvar result = body();\n\t\t\t\tif (result && result.then) {\n\t\t\t\t\tawaitBody = true;\n\t\t\t\t\tbreak outer;\n\t\t\t\t}\n\t\t\t\tvar fallthroughCheck = cases[dispatchIndex][2];\n\t\t\t\tdispatchIndex++;\n\t\t\t} while (fallthroughCheck && !fallthroughCheck());\n\t\t\treturn result;\n\t\t}\n\t}\n\tconst pact = new _Pact();\n\tconst reject = _settle.bind(null, pact, 2);\n\t(awaitBody ? result.then(_resumeAfterBody) : testValue.then(_resumeAfterTest)).then(void 0, reject);\n\treturn pact;\n\tfunction _resumeAfterTest(value) {\n\t\tfor (;;) {\n\t\t\tif (value === discriminant) {\n\t\t\t\tdispatchIndex = i;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (++i === cases.length) {\n\t\t\t\tif (dispatchIndex !== -1) {\n\t\t\t\t\tbreak;\n\t\t\t\t} else {\n\t\t\t\t\t_settle(pact, 1, result);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\ttest = cases[i][0];\n\t\t\tif (test) {\n\t\t\t\tvalue = test();\n\t\t\t\tif (value && value.then) {\n\t\t\t\t\tvalue.then(_resumeAfterTest).then(void 0, reject);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdispatchIndex = i;\n\t\t\t}\n\t\t}\n\t\tdo {\n\t\t\tvar body = cases[dispatchIndex][1];\n\t\t\twhile (!body) {\n\t\t\t\tdispatchIndex++;\n\t\t\t\tbody = cases[dispatchIndex][1];\n\t\t\t}\n\t\t\tvar result = body();\n\t\t\tif (result && result.then) {\n\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar fallthroughCheck = cases[dispatchIndex][2];\n\t\t\tdispatchIndex++;\n\t\t} while (fallthroughCheck && !fallthroughCheck());\n\t\t_settle(pact, 1, result);\n\t}\n\tfunction _resumeAfterBody(result) {\n\t\tfor (;;) {\n\t\t\tvar fallthroughCheck = cases[dispatchIndex][2];\n\t\t\tif (!fallthroughCheck || fallthroughCheck()) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tdispatchIndex++;\n\t\t\tvar body = cases[dispatchIndex][1];\n\t\t\twhile (!body) {\n\t\t\t\tdispatchIndex++;\n\t\t\t\tbody = cases[dispatchIndex][1];\n\t\t\t}\n\t\t\tresult = body();\n\t\t\tif (result && result.then) {\n\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\t_settle(pact, 1, result);\n\t}\n}\n\n// Asynchronously call a function and pass the result to explicitly passed continuations\nexport function _call(body, then, direct) {\n\tif (direct) {\n\t\treturn then ? then(body()) : body();\n\t}\n\ttry {\n\t\tvar result = Promise.resolve(body());\n\t\treturn then ? result.then(then) : result;\n\t} catch (e) {\n\t\treturn Promise.reject(e);\n\t}\n}\n\n// Asynchronously call a function and swallow the result\nexport function _callIgnored(body, direct) {\n\treturn _call(body, _empty, direct);\n}\n\n// Asynchronously call a function and pass the result to explicitly passed continuations\nexport function _invoke(body, then) {\n\tvar result = body();\n\tif (result && result.then) {\n\t\treturn result.then(then);\n\t}\n\treturn then(result);\n}\n\n// Asynchronously call a function and swallow the result\nexport function _invokeIgnored(body) {\n\tvar result = body();\n\tif (result && result.then) {\n\t\treturn result.then(_empty);\n\t}\n}\n\n// Asynchronously call a function and send errors to recovery continuation\nexport function _catch(body, recover) {\n\ttry {\n\t\tvar result = body();\n\t} catch(e) {\n\t\treturn recover(e);\n\t}\n\tif (result && result.then) {\n\t\treturn result.then(void 0, recover);\n\t}\n\treturn result;\n}\n\n// Asynchronously await a promise and pass the result to a finally continuation\nexport function _finallyRethrows(body, finalizer) {\n\ttry {\n\t\tvar result = body();\n\t} catch (e) {\n\t\treturn finalizer(true, e);\n\t}\n\tif (result && result.then) {\n\t\treturn result.then(finalizer.bind(null, false), finalizer.bind(null, true));\n\t}\n\treturn finalizer(false, result);\n}\n\n// Asynchronously await a promise and invoke a finally continuation that always overrides the result\nexport function _finally(body, finalizer) {\n\ttry {\n\t\tvar result = body();\n\t} catch (e) {\n\t\treturn finalizer();\n\t}\n\tif (result && result.then) {\n\t\treturn result.then(finalizer, finalizer);\n\t}\n\treturn finalizer();\n}\n\n// Rethrow or return a value from a finally continuation\nexport function _rethrow(thrown, value) {\n\tif (thrown)\n\t\tthrow value;\n\treturn value;\n}\n\n// Empty function to implement break and other control flow that ignores asynchronous results\nexport function _empty() {\n}\n\n// Sentinel value for early returns in generators \nexport const _earlyReturn = /*#__PURE__*/ {};\n\n// Asynchronously call a function and send errors to recovery continuation, skipping early returns\nexport function _catchInGenerator(body, recover) {\n\treturn _catch(body, function(e) {\n\t\tif (e === _earlyReturn) {\n\t\t\tthrow e;\n\t\t}\n\t\treturn recover(e);\n\t});\n}\n\n// Asynchronous generator class; accepts the entrypoint of the generator, to which it passes itself when the generator should start\nexport const _AsyncGenerator = /*#__PURE__*/(function() {\n\tfunction _AsyncGenerator(entry) {\n\t\tthis._entry = entry;\n\t\tthis._pact = null;\n\t\tthis._resolve = null;\n\t\tthis._return = null;\n\t\tthis._promise = null;\n\t}\n\n\tfunction _wrapReturnedValue(value) {\n\t\treturn { value: value, done: true };\n\t}\n\tfunction _wrapYieldedValue(value) {\n\t\treturn { value: value, done: false };\n\t}\n\n\t_AsyncGenerator.prototype._yield = function(value) {\n\t\t// Yield the value to the pending next call\n\t\tthis._resolve(value && value.then ? value.then(_wrapYieldedValue) : _wrapYieldedValue(value));\n\t\t// Return a pact for an upcoming next/return/throw call\n\t\treturn this._pact = new _Pact();\n\t};\n\t_AsyncGenerator.prototype.next = function(value) {\n\t\t// Advance the generator, starting it if it has yet to be started\n\t\tconst _this = this;\n\t\treturn _this._promise = new Promise(function (resolve) {\n\t\t\tconst _pact = _this._pact;\n\t\t\tif (_pact === null) {\n\t\t\t\tconst _entry = _this._entry;\n\t\t\t\tif (_entry === null) {\n\t\t\t\t\t// Generator is started, but not awaiting a yield expression\n\t\t\t\t\t// Abandon the next call!\n\t\t\t\t\treturn resolve(_this._promise);\n\t\t\t\t}\n\t\t\t\t// Start the generator\n\t\t\t\t_this._entry = null;\n\t\t\t\t_this._resolve = resolve;\n\t\t\t\tfunction returnValue(value) {\n\t\t\t\t\t_this._resolve(value && value.then ? value.then(_wrapReturnedValue) : _wrapReturnedValue(value));\n\t\t\t\t\t_this._pact = null;\n\t\t\t\t\t_this._resolve = null;\n\t\t\t\t}\n\t\t\t\tvar result = _entry(_this);\n\t\t\t\tif (result && result.then) {\n\t\t\t\t\tresult.then(returnValue, function(error) {\n\t\t\t\t\t\tif (error === _earlyReturn) {\n\t\t\t\t\t\t\treturnValue(_this._return);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconst pact = new _Pact();\n\t\t\t\t\t\t\t_this._resolve(pact);\n\t\t\t\t\t\t\t_this._pact = null;\n\t\t\t\t\t\t\t_this._resolve = null;\n\t\t\t\t\t\t\t_resolve(pact, 2, error);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\treturnValue(result);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Generator is started and a yield expression is pending, settle it\n\t\t\t\t_this._pact = null;\n\t\t\t\t_this._resolve = resolve;\n\t\t\t\t_settle(_pact, 1, value);\n\t\t\t}\n\t\t});\n\t};\n\t_AsyncGenerator.prototype.return = function(value) {\n\t\t// Early return from the generator if started, otherwise abandons the generator\n\t\tconst _this = this;\n\t\treturn _this._promise = new Promise(function (resolve) {\n\t\t\tconst _pact = _this._pact;\n\t\t\tif (_pact === null) {\n\t\t\t\tif (_this._entry === null) {\n\t\t\t\t\t// Generator is started, but not awaiting a yield expression\n\t\t\t\t\t// Abandon the return call!\n\t\t\t\t\treturn resolve(_this._promise);\n\t\t\t\t}\n\t\t\t\t// Generator is not started, abandon it and return the specified value\n\t\t\t\t_this._entry = null;\n\t\t\t\treturn resolve(value && value.then ? value.then(_wrapReturnedValue) : _wrapReturnedValue(value));\n\t\t\t}\n\t\t\t// Settle the yield expression with a rejected \"early return\" value\n\t\t\t_this._return = value;\n\t\t\t_this._resolve = resolve;\n\t\t\t_this._pact = null;\n\t\t\t_settle(_pact, 2, _earlyReturn);\n\t\t});\n\t};\n\t_AsyncGenerator.prototype.throw = function(error) {\n\t\t// Inject an exception into the pending yield expression\n\t\tconst _this = this;\n\t\treturn _this._promise = new Promise(function (resolve, reject) {\n\t\t\tconst _pact = _this._pact;\n\t\t\tif (_pact === null) {\n\t\t\t\tif (_this._entry === null) {\n\t\t\t\t\t// Generator is started, but not awaiting a yield expression\n\t\t\t\t\t// Abandon the throw call!\n\t\t\t\t\treturn resolve(_this._promise);\n\t\t\t\t}\n\t\t\t\t// Generator is not started, abandon it and return a rejected Promise containing the error\n\t\t\t\t_this._entry = null;\n\t\t\t\treturn reject(error);\n\t\t\t}\n\t\t\t// Settle the yield expression with the value as a rejection\n\t\t\t_this._resolve = resolve;\n\t\t\t_this._pact = null;\n\t\t\t_settle(_pact, 2, error);\n\t\t});\n\t};\n\n\t_AsyncGenerator.prototype[_asyncIteratorSymbol] = function() {\n\t\treturn this;\n\t};\n\t\n\treturn _AsyncGenerator;\n})();\n","export enum appStateEnums {\n BIBOT = 'BIBOT'\n}\n","import { appStateEnums } from '../config/appStateEnums'\nimport type { AppStates, AppAction } from '../types/coreInterfaces'\n\nexport const appReducer = (state: AppStates, action: AppAction): AppStates => {\n console.log('This is the appReducer state', state, action)\n switch (action.type) {\n case appStateEnums.BIBOT:\n return {\n ...state,\n chatIsOpen: action.chatIsOpen\n }\n default:\n return state\n }\n}\n","// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nlet getRandomValues;\nconst rnds8 = new Uint8Array(16);\nexport default function rng() {\n // lazy load so that environments that need to polyfill have a chance to do so\n if (!getRandomValues) {\n // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto);\n\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n }\n\n return getRandomValues(rnds8);\n}","import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nconst byteToHex = [];\n\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\n\nexport function unsafeStringify(arr, offset = 0) {\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n return byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]];\n}\n\nfunction stringify(arr, offset = 0) {\n const uuid = unsafeStringify(arr, offset); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nexport default stringify;","const randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);\nexport default {\n randomUUID\n};","import native from './native.js';\nimport rng from './rng.js';\nimport { unsafeStringify } from './stringify.js';\n\nfunction v4(options, buf, offset) {\n if (native.randomUUID && !buf && !options) {\n return native.randomUUID();\n }\n\n options = options || {};\n const rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return unsafeStringify(rnds);\n}\n\nexport default v4;","import { v4 as uuidv4 } from 'uuid'\n\nconst SESSION_KEY: string = 'bibotUserSessionId'\n\nconst getSessionId = (): string => {\n const sessionId = localStorage.getItem(SESSION_KEY)\n if (sessionId === null) {\n const newSessionId = uuidv4()\n localStorage.setItem(SESSION_KEY, newSessionId)\n return newSessionId\n }\n return sessionId\n}\n\nexport { getSessionId }\n","import { appStateEnums } from '../config/appStateEnums'\nimport React, { createContext, useReducer, useEffect } from 'react'\nimport { ReactNode } from 'react'\nimport { appReducer } from '../reducers/appReducer'\nimport type { AppContextProps, AppStates } from '../types/coreInterfaces'\nimport { getSessionId } from '../utils/sessionManager'\n\ninterface AppProps {\n children: ReactNode\n}\n\nconst dummyDispatch = () => {} // A no-op function.\n\nconst defaultContextValue: AppContextProps = {\n state: {\n chatIsOpen: false,\n sessionId: getSessionId()\n },\n dispatch: dummyDispatch\n}\n\nconst AppContext = createContext<AppContextProps>(defaultContextValue)\n\nconst AppProvider: React.FC<AppProps> = ({ children }) => {\n const APP_STATE_KEY = 'app_states'\n const initialState: AppStates = {\n chatIsOpen: false,\n sessionId: getSessionId()\n }\n\n const [state, dispatch] = useReducer(appReducer, initialState)\n\n useEffect(() => {\n // Pool the initial states from local storage\n const storedStates = localStorage.getItem(APP_STATE_KEY)\n\n if (storedStates) {\n try {\n const parsedStates = JSON.parse(storedStates)\n\n // Merge stored states with initial states\n const updatedStates = {\n ...initialState,\n ...parsedStates\n }\n console.log(initialState, parsedStates, updatedStates)\n // Dispatch action to update the states\n dispatch({ type: appStateEnums.BIBOT, ...updatedStates })\n } catch (error) {\n console.error('Failed to parse app states from local storage:', error)\n }\n }\n }, [])\n\n useEffect(() => {\n console.log('Changes in state: ', state)\n localStorage.setItem(APP_STATE_KEY, JSON.stringify(state))\n }, [state])\n\n return (\n <AppContext.Provider value={{ state, dispatch }}>\n {children}\n </AppContext.Provider>\n )\n}\n\nexport { AppContext, AppProvider }\n","import { domain, resources } from '../config/endpointEnums'\nimport { createPluginAxiosInstance } from '../hooks/usePluginFactory'\n\nconst pluginAxiosInstance=createPluginAxiosInstance()\n\ninterface Q_DATA_TYPE {\n client_id: string\n q: string\n endSession?: boolean\n session_id: string\n chat_id: string\n tries?: number\n}\n\ninterface RemoteChatBubbleConfigProps {\n bgColor: string,\n chatColor: string,\n title: string,\n userImage: string\n}\n\nasync function askTimedOutBiBot(data: Q_DATA_TYPE): Promise<string> {\n try {\n // return 'Hello'\n const path=`${domain.bibot}${resources.timedOutLocalQ}`\n const response=await pluginAxiosInstance.post<any>(path, data)\n console.log(response)\n return response.data.message\n } catch (error) {\n console.log(error.message)\n return error.message\n }\n}\n\nasync function askBiBot(data: Q_DATA_TYPE): Promise<string> {\n try {\n const path=`${domain.inference}${resources.q}`\n const response=await pluginAxiosInstance.post<any>(path, data)\n console.log(response)\n return response.data.message\n // return 'Hello'\n } catch (error1) {\n console.log(error1.message)\n if (error1.code==='ECONNABORTED'||error1.message.includes('Endpoint request timed out')) {\n try {\n return await askTimedOutBiBot({\n ...data,\n tries: 2\n })\n } catch (error2) {\n if (error2.code==='ECONNABORTED'||error2.message.includes('Endpoint request timed out')) {\n try {\n return await askTimedOutBiBot({\n ...data,\n tries: 3\n })\n } catch (error3) {\n return error3.message\n }\n } else {\n return error2.message\n }\n }\n } else {\n return error1.message\n }\n }\n}\n// TODO: Emmanuel fix the default returned values, especially the userImage to a default robot image\nasync function getRemoteClientChatBubbleConfig(params: { client_id: string }): Promise<RemoteChatBubbleConfigProps> {\n try {\n // return {\n // bgColor: 'white',\n // chatColor: 'blue',\n // title: 'ChatBot',\n // userImage: 'string'\n // }\n const path=`${domain.inference}${resources.chatBubble}`\n const response=await pluginAxiosInstance.get<any>(path, { params })\n return response.data\n } catch (error) {\n return {\n bgColor: 'white',\n chatColor: 'blue',\n title: 'ChatBot',\n userImage: 'string'\n }\n }\n}\n\nasync function getRemoteClientChatPredefinedQuestions(params: { client_id: string }): Promise<string[]> {\n try {\n // return ['Hello']\n const path=`${domain.inference}${resources.predefinedQ}`\n const response=await pluginAxiosInstance.get<any>(path, { params })\n return response.data.predefined_messages\n } catch (error) {\n return ['These are placeholders', 'They will be removed in production', 'This will be empty if there are no predefined questions', 'So hide if there are no predefined questions']\n }\n}\n\nasync function GetPredefinedQuestion (){\n const clientId = '6c74b4bb-0395-4751-a55f-7d065d67c56b'\n try {\n // return [{question: \"q\", answer: \"a\"}]\n const path = `${domain.inference}${resources.predefinedQ}?client_id=${clientId}`\n const response = await pluginAxiosInstance.get(path)\n return response.data\n } catch (error) {\n console.error('Error fetching subscription:', error)\n }\n }\n\nexport {\n askBiBot,\n getRemoteClientChatBubbleConfig,\n getRemoteClientChatPredefinedQuestions,\n GetPredefinedQuestion\n}\n","import { message } from 'antd'\nimport React, { useEffect, useRef, useState, useContext, useCallback } from 'react'\nimport { AppContext } from '../context/AppContext'\n\nimport { v4 as uuidv4 } from 'uuid'\nimport { askBiBot, getRemoteClientChatBubbleConfig, getRemoteClientChatPredefinedQuestions } from '../services/plugin-api'\ninterface UseBiBotChatBotProps {\n clientId: string\n }\n\ninterface ChatBubbleConfigProps {\n bgColor?: string,\n color?: string,\n title?: string,\n logo_url?: string\n}\nconst useBiBotChatBot = ({ clientId }: UseBiBotChatBotProps) => {\n const [predefinedQuestions, setPredefinedQuestions] = useState<string[]>([]) // State to store predefined questions\n const [showPredefinedQuestions, setShowPredefinedQuestions] = useState(true); // State to toggle predefined questions\n const { state } = useContext(AppContext)\n const [ chatIsOpen, setChatIsOpen ] = useState<boolean>(false)\n const [messages, setMessages] = useState<Array<{ sender: 'user' | 'bot', text: string }>>([])\n const [userInput, setUserInput] = useState('')\n const [isLoading, setIsLoading] = useState(false)\n const messageEndRef = useRef<HTMLDivElement>(null)\n const [chatBubbleConfig, setChatBubbleConfig] = useState<ChatBubbleConfigProps>()\n\n // Function to handle selecting a predefined question\n const handlePredefinedQuestionSelect = (question: any) => {\n setUserInput(question);\n sendInputInquiry();\n setShowPredefinedQuestions(false); // Hide predefined questions after selection\n }\n \n const getChatBubbleConfig = useCallback(async()=>{\n const remotePredefinedQuestions = await getRemoteClientChatPredefinedQuestions({client_id: clientId})\n if (remotePredefinedQuestions){\n setPredefinedQuestions(remotePredefinedQuestions)\n }\n const remoteChatBubbleConfig = await getRemoteClientChatBubbleConfig({client_id: clientId})\n if (remoteChatBubbleConfig){\n setChatBubbleConfig(remoteChatBubbleConfig)\n }\n },[clientId])\n\n useEffect(()=>{\n void getChatBubbleConfig()\n }, [getChatBubbleConfig])\n \n useEffect(() => {\n if (messageEndRef?.current) { messageEndRef.current.scrollIntoView({ behavior: 'smooth' }) }\n }, [messages])\n\n const toggleChat = () => {\n console.log('This is it', chatIsOpen)\n setChatIsOpen(!chatIsOpen)\n }\n\n const handleUserInput = (e: React.ChangeEvent<HTMLInputElement>) => {\n setUserInput(e.target.value)\n }\n\n async function sendInputInquiry () {\n setIsLoading(true)\n setUserInput('')\n try {\n if (userInput.trim()) {\n // dispatch({ type: appStateEnums.BIBOT, chatIsOpen: true })\n setMessages(messages => [...messages, { sender: 'user', text: userInput }])\n const response = await askBiBot({\n client_id: clientId,\n q: userInput.trim(),\n session_id: state.sessionId,\n chat_id: uuidv4()\n })\n setMessages(messages => [...messages, { sender: 'bot', text: response }])\n }\n } catch (error) {\n void message.error(error?.message ?? 'Failed to get response from server')\n } finally {\n setIsLoading(false)\n }\n }\n\n const handleKeyPress = async (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'Enter' && !isLoading) {\n await sendInputInquiry()\n }\n }\n return {\n chatIsOpen,\n messages,\n isLoading,\n messageEndRef,\n userInput,\n handleUserInput,\n handleKeyPress,\n toggleChat,\n sendInputInquiry,\n chatBubbleConfig,\n showPredefinedQuestions,\n predefinedQuestions,\n handlePredefinedQuestionSelect,\n }\n}\n\nexport { useBiBotChatBot }\n","import { Avatar, Indicator } from '@mantine/core'\nimport { Close, SendRounded } from '@mui/icons-material'\nimport ChatIcon from '@mui/icons-material/Chat'\nimport { Button } from 'antd'\nimport { useBiBotChatBot } from '../hooks'\nimport * as React from 'react'\nimport styles from '../styles.module.css'\n\ninterface bubbleProps {\n clientId: string\n}\n\ninterface PredefinedQuestionsProps {\n onSelect: (question: string) => void\n questions: string[]\n}\n\nconst PredefinedQuestions = ({ questions, onSelect }: PredefinedQuestionsProps) => {\n return (\n <div className={styles['predefined-questions']}>\n {questions.map((question, index) => (\n <div key={index} className={styles['predefined-questions']} onClick={() => onSelect(question)}>\n {question}\n </div>\n ))}\n </div>\n );\n};\n\nconst ChatBubbleBiBot = ({ clientId }: bubbleProps) => {\n const {\n chatIsOpen,\n messages,\n isLoading,\n messageEndRef,\n userInput,\n handleUserInput,\n handleKeyPress,\n sendInputInquiry,\n toggleChat,\n chatBubbleConfig,\n showPredefinedQuestions,\n predefinedQuestions,\n handlePredefinedQuestionSelect,\n } = useBiBotChatBot({clientId})\n\n return (\n \n <div className={`chat-bubble ${chatIsOpen ? 'open' : ''}`}>\n {chatIsOpen && (\n <div className={styles[\"chat-window\"]} style={{ backgroundColor: chatBubbleConfig?.bgColor }}>\n <div className={styles[\"chat-header\"]} style={{ backgroundColor: chatBubbleConfig?.color ?? '#dedede' }}>\n <div style={{ alignItems: 'center', display: 'flex', color: '#fff', fontWeight: 'bold' }}>\n <Indicator inline size={12} offset={7} position=\"bottom-end\" color={ 'green' }>\n <Avatar color=\"white\" src={chatBubbleConfig?.logo_url} alt=\"profile\" />\n </Indicator>\n </div>\n <div style={{ display: 'flex', flexDirection: 'column', textAlign: 'left', paddingLeft: '10px', justifyContent: 'flex-start', color: '#fff' }}>\n <span style={{ fontWeight: 'bold' }}>{chatBubbleConfig?.title}</span>\n {}\n {isLoading ? <span style={{ fontSize: '12px', lineHeight: '0.5' }}>Typing...</span> : <span style={{ fontSize: '12px', lineHeight: '0.5' }}>{'Online'}</span>}\n </div>\n </div>\n <div className={styles[\"message-list\"]}>\n {messages.map((message: { sender: 'user' | 'bot', text: string }, index: number) => (\n message.sender === 'user'\n ? <div key={index} className={`message ${message.sender}`}>\n {message.text}\n </div>\n : <div key={index} style={{ display: 'flex' }}>\n <Avatar color=\"white\" src={chatBubbleConfig?.logo_url} size={25} alt=\"profile\" />\n <div className={`message ${message.sender}`}>\n {message.text}\n </div>\n </div>\n ))}\n {showPredefinedQuestions && predefinedQuestions && predefinedQuestions.length > 0 && (\n <PredefinedQuestions questions={predefinedQuestions} onSelect={handlePredefinedQuestionSelect} />\n )}\n {isLoading && <div style={{marginLeft: '20px'}} className='message'> <div className=\"loader\"></div> </div> }\n <div ref={messageEndRef} />\n </div>\n <div className={styles[\"input-area\"]}>\n <input\n autoFocus={true}\n type=\"text\"\n value={userInput}\n onChange={handleUserInput}\n onKeyDown={handleKeyPress}\n placeholder=\"Ask a question\"\n />\n <Button disabled={isLoading ?? true} style={{ backgroundColor: 'transparent', color: isLoading ? '#dedede' : chatBubbleConfig?.color }} size='middle' icon={<SendRounded />} onClick={sendInputInquiry}/>\n </div>\n </div>\n )}\n <Button type='link' onClick={toggleChat} className={styles[\"chat-toggle\"]} style={{ backgroundColor: chatBubbleConfig?.color ?? '#dedede' }}>\n {chatIsOpen ? <Close style={{ width: 30, height: 30, color: '#fff' }} /> : <ChatIcon style={{ width: 30, height: 30, color: '#fff' }}/>}\n </Button>\n </div>\n\n )\n}\n\nexport default ChatBubbleBiBot\n","import * as React from 'react'\n\nimport ChatBubbleBiBot from './component/bibot';\nimport { AppProvider } from './context/AppContext';\nimport { MantineProvider } from '@mantine/core'\ninterface Props {\n clientId: string\n}\nexport const BiBot = ({ clientId }: Props) => {\n return (\n <AppProvider>\n <MantineProvider>\n <ChatBubbleBiBot clientId={clientId}/>\n </MantineProvider>\n \n </AppProvider>\n )\n \n}\n"],"names":["baseUrls","inference","endpoints","domain","resources","inferenceBaseURL","createPluginAxiosInstance","params","headers","instance","axios","create","_extends","baseURL","timeout","interceptors","response","use","error","errMsg","data","message","request","Promise","resolve","reject","Error","e","appStateEnums","appReducer","state","action","console","log","type","BIBOT","chatIsOpen","SESSION_KEY","getSessionId","sessionId","localStorage","getItem","newSessionId","uuidv4","setItem","dummyDispatch","defaultContextValue","dispatch","AppContext","createContext","AppProvider","_ref","children","APP_STATE_KEY","initialState","_useReducer","useReducer","useEffect","storedStates","parsedStates","JSON","parse","updatedStates","stringify","React","Provider","value","getRemoteClientChatPredefinedQuestions","path","predefinedQ","pluginAxiosInstance","get","then","predefined_messages","getRemoteClientChatBubbleConfig","chatBubble","bgColor","chatColor","title","userImage","askBiBot","q","post","error1","code","includes","_catch","askTimedOutBiBot","tries","error2","error3","bibot","timedOutLocalQ","useBiBotChatBot","sendInputInquiry","setIsLoading","setUserInput","_finallyRethrows","_temp2","userInput","trim","setMessages","messages","concat","sender","text","client_id","clientId","session_id","chat_id","_error$message","_wasThrown","_result","_useState","useState","predefinedQuestions","setPredefinedQuestions","_useState2","showPredefinedQuestions","setShowPredefinedQuestions","_useContext","useContext","_useState3","setChatIsOpen","_useState4","_useState5","_useState6","isLoading","messageEndRef","useRef","_useState7","chatBubbleConfig","setChatBubbleConfig","handlePredefinedQuestionSelect","question","getChatBubbleConfig","useCallback","remotePredefinedQuestions","remoteChatBubbleConfig","current","scrollIntoView","behavior","toggleChat","handleUserInput","target","handleKeyPress","key","_temp","PredefinedQuestions","questions","onSelect","className","styles","map","index","onClick","ChatBubbleBiBot","_ref2","_useBiBotChatBot","style","backgroundColor","_chatBubbleConfig$col","color","alignItems","display","fontWeight","Indicator","inline","size","offset","position","Avatar","src","logo_url","alt","flexDirection","textAlign","paddingLeft","justifyContent","fontSize","lineHeight","length","marginLeft","ref","autoFocus","onChange","onKeyDown","placeholder","Button","disabled","icon","SendRounded","_chatBubbleConfig$col2","Close","width","height","ChatIcon","BiBot","MantineProvider"],"mappings":"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"}