@aakash58/chatbot 1.1.21 → 1.1.24

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.
Files changed (351) hide show
  1. package/README.md +22 -298
  2. package/esm2022/aakash58-chatbot.mjs +5 -0
  3. package/esm2022/lib/app/chat/chat-ui-state.service.mjs +170 -0
  4. package/esm2022/lib/app/chat/chat.service.mjs +445 -0
  5. package/esm2022/lib/app/chat/components/chat-button/chat-button.component.mjs +50 -0
  6. package/esm2022/lib/app/chat/components/chat-footer/chat-footer.component.mjs +12 -0
  7. package/esm2022/lib/app/chat/components/chat-header/chat-header.component.mjs +66 -0
  8. package/esm2022/lib/app/chat/components/chat-history-sidebar/chat-history-sidebar.component.mjs +186 -0
  9. package/esm2022/lib/app/chat/components/chat-window/chat-window.component.mjs +312 -0
  10. package/esm2022/lib/app/chat/components/message-input/message-input.component.mjs +36 -0
  11. package/esm2022/lib/app/chat/components/message-list/message-list.component.mjs +115 -0
  12. package/esm2022/lib/app/chat/model/chat-history.model.mjs +2 -0
  13. package/esm2022/lib/app/chat/model/chat-request.model.mjs +2 -0
  14. package/esm2022/lib/app/chat/model/chat-response.model.mjs +2 -0
  15. package/esm2022/lib/app/chat/model/chat-session.model.mjs +2 -0
  16. package/esm2022/lib/app/chat/model/chat-stream-message.model.mjs +2 -0
  17. package/esm2022/lib/app/chat/model/chat-stream-response.model.mjs +2 -0
  18. package/esm2022/lib/app/chat/services/chat-api.service.mjs +61 -0
  19. package/esm2022/lib/app/chat/services/chat-audio.service.mjs +50 -0
  20. package/esm2022/lib/app/chat/services/chat-history.service.mjs +252 -0
  21. package/esm2022/lib/app/login/login-form.component.mjs +46 -0
  22. package/esm2022/lib/app/personalization/personalization-dialog.component.mjs +194 -0
  23. package/esm2022/lib/app/personalization/personalization.service.mjs +149 -0
  24. package/esm2022/lib/app/personalization/sections/account/account-section.component.mjs +122 -0
  25. package/esm2022/lib/app/personalization/sections/preferences/color-picker-dialog.component.mjs +86 -0
  26. package/esm2022/lib/app/personalization/sections/preferences/preferences-section.component.mjs +115 -0
  27. package/esm2022/lib/app/personalization/sections/profile/profile-section.component.mjs +29 -0
  28. package/esm2022/lib/app/personalization/sections/settings/setting-section.component.mjs +30 -0
  29. package/esm2022/lib/app/personalization/sections/terms/terms-section.component.mjs +12 -0
  30. package/esm2022/lib/constant/doohbot-constant.mjs +28 -0
  31. package/esm2022/lib/constant/html-entities.mjs +9 -0
  32. package/esm2022/lib/constant/utf8.mjs +10 -0
  33. package/esm2022/lib/core/app-const.mjs +61 -0
  34. package/esm2022/lib/core/auth/account-api.service.mjs +40 -0
  35. package/esm2022/lib/core/auth/auth.service.mjs +391 -0
  36. package/esm2022/lib/core/auth/models/auth-result.model.mjs +3 -0
  37. package/esm2022/lib/core/auth/models/federated-login-request.model.mjs +6 -0
  38. package/esm2022/lib/core/auth/models/login-request.model.mjs +6 -0
  39. package/esm2022/lib/core/auth/storage.service.mjs +110 -0
  40. package/esm2022/lib/core/directives/draggable/draggable-dialog.directive.mjs +112 -0
  41. package/esm2022/lib/core/directives/fullscreen/fullscreen.directive.mjs +55 -0
  42. package/esm2022/lib/core/directives/resizable/resizable-dialog.directive.mjs +179 -0
  43. package/esm2022/lib/core/environments/environment.mjs +15 -0
  44. package/esm2022/lib/core/environments/environment.prod.mjs +15 -0
  45. package/esm2022/lib/core/helpers/crypto-helper.service.mjs +52 -0
  46. package/esm2022/lib/core/http/http-stream.service.mjs +97 -0
  47. package/esm2022/lib/core/http/http.service.mjs +103 -0
  48. package/esm2022/lib/core/interceptors/auth.interceptor.mjs +96 -0
  49. package/esm2022/lib/core/interceptors/license.interceptor.mjs +44 -0
  50. package/esm2022/lib/core/models/api-config.model.mjs +18 -0
  51. package/esm2022/lib/core/models/api-request.model.mjs +2 -0
  52. package/esm2022/lib/core/models/api-response.model.mjs +8 -0
  53. package/esm2022/lib/core/models/doohbot-config.model.mjs +18 -0
  54. package/esm2022/lib/core/models/license.model.mjs +2 -0
  55. package/esm2022/lib/core/models/message.mjs +2 -0
  56. package/esm2022/lib/core/models/theme-config.model.mjs +2 -0
  57. package/esm2022/lib/core/services/core-config.service.mjs +52 -0
  58. package/esm2022/lib/core/services/license.service.mjs +145 -0
  59. package/esm2022/lib/core/services/markdown.service.mjs +64 -0
  60. package/esm2022/lib/core/services/theme.service.mjs +248 -0
  61. package/esm2022/lib/core/types/auth-mode.type.mjs +2 -0
  62. package/esm2022/lib/core/types/auth-status.type.mjs +5 -0
  63. package/esm2022/lib/core/types/chat-stream.type.mjs +2 -0
  64. package/esm2022/lib/core/types/message-role.type.mjs +2 -0
  65. package/esm2022/lib/core/types/prompt-mode.type.mjs +5 -0
  66. package/esm2022/lib/core/types/snackbar-error.type.mjs +5 -0
  67. package/esm2022/lib/core/types/tenant-resolution-strategy.type.mjs +2 -0
  68. package/esm2022/lib/core/utils/logger.service.mjs +42 -0
  69. package/esm2022/lib/doohbot-input.mjs +20 -0
  70. package/esm2022/lib/doohbot.component.mjs +444 -0
  71. package/esm2022/lib/predefined_messages.mjs +15 -0
  72. package/esm2022/lib/shared/chips/chips.component.mjs +28 -0
  73. package/esm2022/lib/shared/dialog/dialog.component.mjs +36 -0
  74. package/esm2022/lib/shared/dialog/dialog.service.mjs +64 -0
  75. package/esm2022/lib/shared/dialog/dialog.utils.mjs +85 -0
  76. package/esm2022/lib/shared/dropdown-menu/dropdown-menu.component.mjs +29 -0
  77. package/esm2022/lib/shared/input-dialog/input-dialog.component.mjs +38 -0
  78. package/esm2022/lib/shared/menu-item/menu-item.component.mjs +24 -0
  79. package/esm2022/lib/shared/pipes/simple-markdown.pipe.mjs +27 -0
  80. package/esm2022/lib/shared/snackbar/snackbar.component.mjs +43 -0
  81. package/esm2022/lib/shared/snackbar/snackbar.service.mjs +46 -0
  82. package/esm2022/lib/shared/snackbar/snackbar.utils.mjs +43 -0
  83. package/esm2022/public-api.mjs +37 -0
  84. package/fesm2022/aakash58-chatbot.mjs +5193 -0
  85. package/fesm2022/aakash58-chatbot.mjs.map +1 -0
  86. package/index.d.ts +5 -0
  87. package/lib/app/chat/chat-ui-state.service.d.ts +96 -0
  88. package/lib/app/chat/chat.service.d.ts +88 -0
  89. package/lib/app/chat/components/chat-button/chat-button.component.d.ts +16 -0
  90. package/lib/app/chat/components/chat-footer/chat-footer.component.d.ts +5 -0
  91. package/lib/app/chat/components/chat-header/chat-header.component.d.ts +24 -0
  92. package/lib/app/chat/components/chat-history-sidebar/chat-history-sidebar.component.d.ts +49 -0
  93. package/lib/app/chat/components/chat-window/chat-window.component.d.ts +107 -0
  94. package/lib/app/chat/components/message-input/message-input.component.d.ts +12 -0
  95. package/lib/app/chat/components/message-list/message-list.component.d.ts +40 -0
  96. package/lib/app/chat/model/chat-history.model.d.ts +51 -0
  97. package/lib/app/chat/model/chat-request.model.d.ts +10 -0
  98. package/lib/app/chat/model/chat-response.model.d.ts +9 -0
  99. package/lib/app/chat/model/chat-session.model.d.ts +12 -0
  100. package/{projects/doohbot/src/lib/app/chat/model/chat-stream-message.model.ts → lib/app/chat/model/chat-stream-message.model.d.ts} +5 -6
  101. package/lib/app/chat/model/chat-stream-response.model.d.ts +10 -0
  102. package/lib/app/chat/services/chat-api.service.d.ts +30 -0
  103. package/lib/app/chat/services/chat-audio.service.d.ts +19 -0
  104. package/lib/app/chat/services/chat-history.service.d.ts +53 -0
  105. package/lib/app/login/login-form.component.d.ts +20 -0
  106. package/lib/app/personalization/personalization-dialog.component.d.ts +53 -0
  107. package/lib/app/personalization/personalization.service.d.ts +66 -0
  108. package/lib/app/personalization/sections/account/account-section.component.d.ts +30 -0
  109. package/lib/app/personalization/sections/preferences/color-picker-dialog.component.d.ts +17 -0
  110. package/lib/app/personalization/sections/preferences/preferences-section.component.d.ts +27 -0
  111. package/lib/app/personalization/sections/profile/profile-section.component.d.ts +17 -0
  112. package/lib/app/personalization/sections/settings/setting-section.component.d.ts +10 -0
  113. package/lib/app/personalization/sections/terms/terms-section.component.d.ts +5 -0
  114. package/lib/constant/doohbot-constant.d.ts +12 -0
  115. package/lib/constant/html-entities.d.ts +8 -0
  116. package/lib/constant/utf8.d.ts +9 -0
  117. package/lib/core/app-const.d.ts +11 -0
  118. package/lib/core/auth/account-api.service.d.ts +20 -0
  119. package/lib/core/auth/auth.service.d.ts +90 -0
  120. package/lib/core/auth/models/auth-result.model.d.ts +4 -0
  121. package/lib/core/auth/models/federated-login-request.model.d.ts +5 -0
  122. package/lib/core/auth/models/login-request.model.d.ts +6 -0
  123. package/lib/core/auth/storage.service.d.ts +21 -0
  124. package/lib/core/directives/draggable/draggable-dialog.directive.d.ts +23 -0
  125. package/lib/core/directives/fullscreen/fullscreen.directive.d.ts +14 -0
  126. package/lib/core/directives/resizable/resizable-dialog.directive.d.ts +30 -0
  127. package/lib/core/environments/environment.d.ts +7 -0
  128. package/lib/core/environments/environment.prod.d.ts +7 -0
  129. package/lib/core/helpers/crypto-helper.service.d.ts +12 -0
  130. package/lib/core/http/http-stream.service.d.ts +18 -0
  131. package/lib/core/http/http.service.d.ts +20 -0
  132. package/lib/core/interceptors/auth.interceptor.d.ts +18 -0
  133. package/lib/core/interceptors/license.interceptor.d.ts +11 -0
  134. package/lib/core/models/api-config.model.d.ts +58 -0
  135. package/lib/core/models/api-request.model.d.ts +77 -0
  136. package/lib/core/models/api-response.model.d.ts +6 -0
  137. package/lib/core/models/doohbot-config.model.d.ts +81 -0
  138. package/{projects/doohbot/src/lib/core/models/license.model.ts → lib/core/models/license.model.d.ts} +23 -27
  139. package/lib/core/models/message.d.ts +16 -0
  140. package/lib/core/models/theme-config.model.d.ts +28 -0
  141. package/lib/core/services/core-config.service.d.ts +23 -0
  142. package/lib/core/services/license.service.d.ts +33 -0
  143. package/lib/core/services/markdown.service.d.ts +8 -0
  144. package/lib/core/services/theme.service.d.ts +40 -0
  145. package/{projects/doohbot/src/lib/core/types/auth-mode.type.ts → lib/core/types/auth-mode.type.d.ts} +4 -4
  146. package/{projects/doohbot/src/lib/core/types/auth-status.type.ts → lib/core/types/auth-status.type.d.ts} +4 -5
  147. package/{projects/doohbot/src/lib/core/types/chat-stream.type.ts → lib/core/types/chat-stream.type.d.ts} +4 -4
  148. package/{projects/doohbot/src/lib/core/types/message-role.type.ts → lib/core/types/message-role.type.d.ts} +4 -4
  149. package/{projects/doohbot/src/lib/core/types/prompt-mode.type.ts → lib/core/types/prompt-mode.type.d.ts} +4 -5
  150. package/{projects/doohbot/src/lib/core/types/snackbar-error.type.ts → lib/core/types/snackbar-error.type.d.ts} +4 -5
  151. package/{projects/doohbot/src/lib/core/types/tenant-resolution-strategy.type.ts → lib/core/types/tenant-resolution-strategy.type.d.ts} +4 -4
  152. package/lib/core/utils/logger.service.d.ts +11 -0
  153. package/lib/doohbot-input.d.ts +19 -0
  154. package/lib/doohbot.component.d.ts +108 -0
  155. package/lib/predefined_messages.d.ts +2 -0
  156. package/lib/shared/chips/chips.component.d.ts +10 -0
  157. package/lib/shared/dialog/dialog.component.d.ts +19 -0
  158. package/lib/shared/dialog/dialog.service.d.ts +29 -0
  159. package/lib/shared/dialog/dialog.utils.d.ts +41 -0
  160. package/lib/shared/dropdown-menu/dropdown-menu.component.d.ts +11 -0
  161. package/lib/shared/input-dialog/input-dialog.component.d.ts +20 -0
  162. package/lib/shared/menu-item/menu-item.component.d.ts +9 -0
  163. package/lib/shared/pipes/simple-markdown.pipe.d.ts +10 -0
  164. package/lib/shared/snackbar/snackbar.component.d.ts +14 -0
  165. package/lib/shared/snackbar/snackbar.service.d.ts +19 -0
  166. package/{projects/doohbot/src/lib/shared/snackbar/snackbar.utils.ts → lib/shared/snackbar/snackbar.utils.d.ts} +33 -49
  167. package/package.json +29 -75
  168. package/public-api.d.ts +11 -0
  169. package/.editorconfig +0 -17
  170. package/.vscode/extensions.json +0 -4
  171. package/.vscode/launch.json +0 -41
  172. package/.vscode/settings.json +0 -14
  173. package/.vscode/tasks.json +0 -60
  174. package/angular.json +0 -132
  175. package/docs/PUBLISHING_GUIDE.md +0 -104
  176. package/projects/app-doohbot/public/assets/const/app-const.json +0 -15
  177. package/projects/app-doohbot/public/assets/const/doohclick_license.json +0 -6
  178. package/projects/app-doohbot/public/favicon.ico +0 -0
  179. package/projects/app-doohbot/src/app/app.config.ts +0 -13
  180. package/projects/app-doohbot/src/app/app.html +0 -31
  181. package/projects/app-doohbot/src/app/app.routes.ts +0 -3
  182. package/projects/app-doohbot/src/app/app.scss +0 -279
  183. package/projects/app-doohbot/src/app/app.spec.ts +0 -23
  184. package/projects/app-doohbot/src/app/app.ts +0 -72
  185. package/projects/app-doohbot/src/index.html +0 -15
  186. package/projects/app-doohbot/src/main.ts +0 -6
  187. package/projects/app-doohbot/src/styles.scss +0 -15
  188. package/projects/app-doohbot/tsconfig.app.json +0 -15
  189. package/projects/app-doohbot/tsconfig.spec.json +0 -14
  190. package/projects/doohbot/README.md +0 -64
  191. package/projects/doohbot/docs/README.md +0 -140
  192. package/projects/doohbot/ng-package.json +0 -10
  193. package/projects/doohbot/package.json +0 -16
  194. package/projects/doohbot/src/lib/app/chat/chat-ui-state.service.ts +0 -194
  195. package/projects/doohbot/src/lib/app/chat/chat.service.ts +0 -547
  196. package/projects/doohbot/src/lib/app/chat/components/chat-button/chat-button.component.html +0 -27
  197. package/projects/doohbot/src/lib/app/chat/components/chat-button/chat-button.component.scss +0 -115
  198. package/projects/doohbot/src/lib/app/chat/components/chat-button/chat-button.component.ts +0 -35
  199. package/projects/doohbot/src/lib/app/chat/components/chat-footer/chat-footer.component.html +0 -3
  200. package/projects/doohbot/src/lib/app/chat/components/chat-footer/chat-footer.component.scss +0 -20
  201. package/projects/doohbot/src/lib/app/chat/components/chat-footer/chat-footer.component.ts +0 -12
  202. package/projects/doohbot/src/lib/app/chat/components/chat-header/chat-header.component.html +0 -34
  203. package/projects/doohbot/src/lib/app/chat/components/chat-header/chat-header.component.scss +0 -78
  204. package/projects/doohbot/src/lib/app/chat/components/chat-header/chat-header.component.ts +0 -52
  205. package/projects/doohbot/src/lib/app/chat/components/chat-history-sidebar/chat-history-sidebar.component.html +0 -77
  206. package/projects/doohbot/src/lib/app/chat/components/chat-history-sidebar/chat-history-sidebar.component.scss +0 -346
  207. package/projects/doohbot/src/lib/app/chat/components/chat-history-sidebar/chat-history-sidebar.component.ts +0 -188
  208. package/projects/doohbot/src/lib/app/chat/components/chat-window/chat-window.component.html +0 -146
  209. package/projects/doohbot/src/lib/app/chat/components/chat-window/chat-window.component.scss +0 -187
  210. package/projects/doohbot/src/lib/app/chat/components/chat-window/chat-window.component.ts +0 -256
  211. package/projects/doohbot/src/lib/app/chat/components/message-input/message-input.component.html +0 -17
  212. package/projects/doohbot/src/lib/app/chat/components/message-input/message-input.component.scss +0 -59
  213. package/projects/doohbot/src/lib/app/chat/components/message-input/message-input.component.ts +0 -28
  214. package/projects/doohbot/src/lib/app/chat/components/message-list/message-list.component.html +0 -138
  215. package/projects/doohbot/src/lib/app/chat/components/message-list/message-list.component.scss +0 -436
  216. package/projects/doohbot/src/lib/app/chat/components/message-list/message-list.component.ts +0 -106
  217. package/projects/doohbot/src/lib/app/chat/model/chat-history.model.ts +0 -57
  218. package/projects/doohbot/src/lib/app/chat/model/chat-request.model.ts +0 -17
  219. package/projects/doohbot/src/lib/app/chat/model/chat-response.model.ts +0 -9
  220. package/projects/doohbot/src/lib/app/chat/model/chat-session.model.ts +0 -14
  221. package/projects/doohbot/src/lib/app/chat/model/chat-stream-response.model.ts +0 -12
  222. package/projects/doohbot/src/lib/app/chat/services/chat-api.service.ts +0 -82
  223. package/projects/doohbot/src/lib/app/chat/services/chat-audio.service.ts +0 -44
  224. package/projects/doohbot/src/lib/app/chat/services/chat-history.service.ts +0 -303
  225. package/projects/doohbot/src/lib/app/login/login-form.component.html +0 -80
  226. package/projects/doohbot/src/lib/app/login/login-form.component.scss +0 -189
  227. package/projects/doohbot/src/lib/app/login/login-form.component.ts +0 -45
  228. package/projects/doohbot/src/lib/app/personalization/personalization-dialog.component.html +0 -81
  229. package/projects/doohbot/src/lib/app/personalization/personalization-dialog.component.scss +0 -179
  230. package/projects/doohbot/src/lib/app/personalization/personalization-dialog.component.ts +0 -217
  231. package/projects/doohbot/src/lib/app/personalization/personalization.service.ts +0 -197
  232. package/projects/doohbot/src/lib/app/personalization/sections/account/account-section.component.html +0 -111
  233. package/projects/doohbot/src/lib/app/personalization/sections/account/account-section.component.scss +0 -218
  234. package/projects/doohbot/src/lib/app/personalization/sections/account/account-section.component.ts +0 -121
  235. package/projects/doohbot/src/lib/app/personalization/sections/instructions/instructions-section.component.html +0 -46
  236. package/projects/doohbot/src/lib/app/personalization/sections/instructions/instructions-section.component.scss +0 -138
  237. package/projects/doohbot/src/lib/app/personalization/sections/instructions/instructions-section.component.ts +0 -28
  238. package/projects/doohbot/src/lib/app/personalization/sections/preferences/color-picker-dialog.component.ts +0 -92
  239. package/projects/doohbot/src/lib/app/personalization/sections/preferences/preferences-section.component.html +0 -198
  240. package/projects/doohbot/src/lib/app/personalization/sections/preferences/preferences-section.component.scss +0 -107
  241. package/projects/doohbot/src/lib/app/personalization/sections/preferences/preferences-section.component.ts +0 -103
  242. package/projects/doohbot/src/lib/app/personalization/sections/profile/profile-section.component.html +0 -46
  243. package/projects/doohbot/src/lib/app/personalization/sections/profile/profile-section.component.scss +0 -131
  244. package/projects/doohbot/src/lib/app/personalization/sections/profile/profile-section.component.ts +0 -23
  245. package/projects/doohbot/src/lib/app/personalization/sections/settings/setting-section.component.html +0 -33
  246. package/projects/doohbot/src/lib/app/personalization/sections/settings/setting-section.component.scss +0 -61
  247. package/projects/doohbot/src/lib/app/personalization/sections/settings/setting-section.component.ts +0 -20
  248. package/projects/doohbot/src/lib/app/personalization/sections/terms/terms-section.component.html +0 -30
  249. package/projects/doohbot/src/lib/app/personalization/sections/terms/terms-section.component.scss +0 -59
  250. package/projects/doohbot/src/lib/app/personalization/sections/terms/terms-section.component.ts +0 -12
  251. package/projects/doohbot/src/lib/constant/doohbot-constant.ts +0 -40
  252. package/projects/doohbot/src/lib/constant/html-entities.ts +0 -8
  253. package/projects/doohbot/src/lib/constant/utf8.ts +0 -9
  254. package/projects/doohbot/src/lib/core/app-const.ts +0 -63
  255. package/projects/doohbot/src/lib/core/auth/account-api.service.ts +0 -53
  256. package/projects/doohbot/src/lib/core/auth/auth.service.ts +0 -478
  257. package/projects/doohbot/src/lib/core/auth/models/auth-result.model.ts +0 -4
  258. package/projects/doohbot/src/lib/core/auth/models/federated-login-request.model.ts +0 -5
  259. package/projects/doohbot/src/lib/core/auth/models/login-request.model.ts +0 -6
  260. package/projects/doohbot/src/lib/core/auth/storage.service.ts +0 -113
  261. package/projects/doohbot/src/lib/core/directives/draggable/draggable-dialog.directive.ts +0 -123
  262. package/projects/doohbot/src/lib/core/directives/draggable/draggable-dialog.module.ts +0 -9
  263. package/projects/doohbot/src/lib/core/directives/fullscreen/fullscreen.directive.ts +0 -58
  264. package/projects/doohbot/src/lib/core/directives/fullscreen/fullscreen.module.ts +0 -9
  265. package/projects/doohbot/src/lib/core/directives/popout/popout.directive.ts +0 -169
  266. package/projects/doohbot/src/lib/core/directives/popout/popout.module.ts +0 -9
  267. package/projects/doohbot/src/lib/core/directives/resizable/resizable-dialog.directive.ts +0 -197
  268. package/projects/doohbot/src/lib/core/directives/resizable/resizable-dialog.module.ts +0 -9
  269. package/projects/doohbot/src/lib/core/enums/api-request-state.enum.ts +0 -9
  270. package/projects/doohbot/src/lib/core/environments/environment.prod.ts +0 -14
  271. package/projects/doohbot/src/lib/core/environments/environment.ts +0 -14
  272. package/projects/doohbot/src/lib/core/helpers/crypto-helper.service.ts +0 -72
  273. package/projects/doohbot/src/lib/core/http/http-stream.service.ts +0 -105
  274. package/projects/doohbot/src/lib/core/http/http.service.ts +0 -148
  275. package/projects/doohbot/src/lib/core/interceptors/auth.interceptor.ts +0 -118
  276. package/projects/doohbot/src/lib/core/interceptors/license.interceptor.ts +0 -50
  277. package/projects/doohbot/src/lib/core/models/api-config.model.ts +0 -82
  278. package/projects/doohbot/src/lib/core/models/api-request.model.ts +0 -92
  279. package/projects/doohbot/src/lib/core/models/api-response.model.ts +0 -13
  280. package/projects/doohbot/src/lib/core/models/doohbot-config.model.ts +0 -109
  281. package/projects/doohbot/src/lib/core/models/message.ts +0 -18
  282. package/projects/doohbot/src/lib/core/models/theme-config.model.ts +0 -48
  283. package/projects/doohbot/src/lib/core/services/core-config.service.ts +0 -53
  284. package/projects/doohbot/src/lib/core/services/doohbot-api.service.ts +0 -207
  285. package/projects/doohbot/src/lib/core/services/license.service.ts +0 -171
  286. package/projects/doohbot/src/lib/core/services/markdown.service.ts +0 -73
  287. package/projects/doohbot/src/lib/core/services/theme.service.ts +0 -305
  288. package/projects/doohbot/src/lib/core/utils/error-handler.util.ts +0 -31
  289. package/projects/doohbot/src/lib/core/utils/logger.service.ts +0 -45
  290. package/projects/doohbot/src/lib/doohbot-input.ts +0 -19
  291. package/projects/doohbot/src/lib/doohbot.component.html +0 -34
  292. package/projects/doohbot/src/lib/doohbot.component.scss +0 -17
  293. package/projects/doohbot/src/lib/doohbot.component.spec.ts +0 -31
  294. package/projects/doohbot/src/lib/doohbot.component.ts +0 -545
  295. package/projects/doohbot/src/lib/elements.ts +0 -25
  296. package/projects/doohbot/src/lib/predefined_messages.ts +0 -14
  297. package/projects/doohbot/src/lib/shared/chips/chips.component.html +0 -9
  298. package/projects/doohbot/src/lib/shared/chips/chips.component.scss +0 -29
  299. package/projects/doohbot/src/lib/shared/chips/chips.component.spec.ts +0 -22
  300. package/projects/doohbot/src/lib/shared/chips/chips.component.ts +0 -20
  301. package/projects/doohbot/src/lib/shared/dialog/dialog.component.html +0 -29
  302. package/projects/doohbot/src/lib/shared/dialog/dialog.component.scss +0 -100
  303. package/projects/doohbot/src/lib/shared/dialog/dialog.component.ts +0 -42
  304. package/projects/doohbot/src/lib/shared/dialog/dialog.service.ts +0 -62
  305. package/projects/doohbot/src/lib/shared/dialog/dialog.utils.ts +0 -102
  306. package/projects/doohbot/src/lib/shared/dropdown-menu/dropdown-menu.component.html +0 -30
  307. package/projects/doohbot/src/lib/shared/dropdown-menu/dropdown-menu.component.scss +0 -53
  308. package/projects/doohbot/src/lib/shared/dropdown-menu/dropdown-menu.component.spec.ts +0 -22
  309. package/projects/doohbot/src/lib/shared/dropdown-menu/dropdown-menu.component.ts +0 -35
  310. package/projects/doohbot/src/lib/shared/input-dialog/input-dialog.component.html +0 -16
  311. package/projects/doohbot/src/lib/shared/input-dialog/input-dialog.component.scss +0 -45
  312. package/projects/doohbot/src/lib/shared/input-dialog/input-dialog.component.ts +0 -46
  313. package/projects/doohbot/src/lib/shared/menu-item/menu-item.component.html +0 -5
  314. package/projects/doohbot/src/lib/shared/menu-item/menu-item.component.scss +0 -0
  315. package/projects/doohbot/src/lib/shared/menu-item/menu-item.component.spec.ts +0 -22
  316. package/projects/doohbot/src/lib/shared/menu-item/menu-item.component.ts +0 -20
  317. package/projects/doohbot/src/lib/shared/pipes/simple-markdown.pipe.ts +0 -19
  318. package/projects/doohbot/src/lib/shared/popout/popout.html +0 -1
  319. package/projects/doohbot/src/lib/shared/popout/popout.scss +0 -0
  320. package/projects/doohbot/src/lib/shared/popout/popout.spec.ts +0 -23
  321. package/projects/doohbot/src/lib/shared/popout/popout.ts +0 -11
  322. package/projects/doohbot/src/lib/shared/snackbar/snackbar.component.html +0 -7
  323. package/projects/doohbot/src/lib/shared/snackbar/snackbar.component.scss +0 -125
  324. package/projects/doohbot/src/lib/shared/snackbar/snackbar.component.spec.ts +0 -21
  325. package/projects/doohbot/src/lib/shared/snackbar/snackbar.component.ts +0 -44
  326. package/projects/doohbot/src/lib/shared/snackbar/snackbar.service.ts +0 -54
  327. package/projects/doohbot/src/lib/styles/_theme.scss +0 -132
  328. package/projects/doohbot/src/lib/styles/material-override.scss +0 -302
  329. package/projects/doohbot/src/lib/styles/utility.scss +0 -588
  330. package/projects/doohbot/src/public-api.ts +0 -42
  331. package/projects/doohbot/tsconfig.lib.json +0 -15
  332. package/projects/doohbot/tsconfig.lib.prod.json +0 -11
  333. package/projects/doohbot/tsconfig.spec.json +0 -10
  334. package/proxy.conf.json +0 -8
  335. package/publish.config.js +0 -25
  336. package/scripts/publishing/index.ts +0 -67
  337. package/scripts/publishing/pipeline/01-clean.ts +0 -11
  338. package/scripts/publishing/pipeline/02-validate-pre.ts +0 -8
  339. package/scripts/publishing/pipeline/03-build.ts +0 -7
  340. package/scripts/publishing/pipeline/04-validate-post.ts +0 -8
  341. package/scripts/publishing/pipeline/05-prepare-package.ts +0 -29
  342. package/scripts/publishing/pipeline/06-version.ts +0 -23
  343. package/scripts/publishing/pipeline/07-publish.ts +0 -14
  344. package/scripts/publishing/pipeline/08-cleanup.ts +0 -5
  345. package/scripts/publishing/types.ts +0 -36
  346. package/scripts/publishing/utils/command.ts +0 -15
  347. package/scripts/publishing/utils/config.ts +0 -17
  348. package/scripts/validate.ts +0 -166
  349. package/tsconfig.json +0 -45
  350. package/tsconfig.scripts.json +0 -15
  351. /package/{projects/doohbot/src → src}/assets/bot.mp3 +0 -0
@@ -0,0 +1,115 @@
1
+ import { Component, EventEmitter, Input, Output, ViewChild, } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { Chips } from '../../../../shared/chips/chips.component';
4
+ import { MarkdownPipe } from '../../../../shared/pipes/simple-markdown.pipe';
5
+ import { MatIconModule } from '@angular/material/icon';
6
+ import { AppEmoji } from '../../../../constant/utf8';
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "@angular/common";
9
+ import * as i2 from "@angular/material/icon";
10
+ export class MessageListComponent {
11
+ constructor(cdr) {
12
+ this.cdr = cdr;
13
+ this.messages = [];
14
+ this.isBotTyping = false;
15
+ this.isStreaming = true;
16
+ this.appLogoUrl = '';
17
+ this.appSubtitle = '';
18
+ this.welcomeDesc = '';
19
+ this.predefinedMessages = [];
20
+ this.botAvatarUrl = '';
21
+ this.userAvatarUrl = '';
22
+ this.userName = '';
23
+ this.isAuthenticated = false;
24
+ this.isLoggingIn = false;
25
+ this.trackByMessageId = (index, item) => item.id ?? index;
26
+ this.suggestionClick = new EventEmitter();
27
+ this.loginClick = new EventEmitter();
28
+ this.appEmoji = AppEmoji;
29
+ }
30
+ ngAfterViewInit() {
31
+ if (!this.chatMessagesContainer)
32
+ return;
33
+ this.mutationObserver = new MutationObserver(() => this.scrollToBottom());
34
+ this.mutationObserver.observe(this.chatMessagesContainer.nativeElement, {
35
+ childList: true,
36
+ subtree: true,
37
+ });
38
+ this.scrollToBottom();
39
+ }
40
+ scrollToBottom() {
41
+ if (!this.chatMessagesContainer) {
42
+ return;
43
+ }
44
+ const container = this.chatMessagesContainer.nativeElement;
45
+ container.scrollTo({
46
+ top: container.scrollHeight,
47
+ behavior: 'smooth',
48
+ });
49
+ }
50
+ onPredefinedClick(text) {
51
+ this.suggestionClick.emit(text);
52
+ }
53
+ copyMessage(message) {
54
+ if (!message.text)
55
+ return;
56
+ navigator.clipboard.writeText(message.text).then(() => {
57
+ // Logger.info('Copied to clipboard');
58
+ // SnackbarUtils.info('Copied to clipboard');
59
+ message.copied = true;
60
+ this.cdr.markForCheck(); // force UI update
61
+ setTimeout(() => {
62
+ message.copied = false;
63
+ this.cdr.markForCheck(); // update again
64
+ }, 800);
65
+ });
66
+ }
67
+ // trackByChunkIndex(index: number) {
68
+ // return index;
69
+ // }
70
+ ngOnDestroy() {
71
+ if (this.mutationObserver) {
72
+ this.mutationObserver.disconnect();
73
+ }
74
+ }
75
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MessageListComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
76
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: MessageListComponent, isStandalone: true, selector: "app-message-list", inputs: { messages: "messages", isBotTyping: "isBotTyping", isStreaming: "isStreaming", appLogoUrl: "appLogoUrl", appSubtitle: "appSubtitle", welcomeDesc: "welcomeDesc", predefinedMessages: "predefinedMessages", botAvatarUrl: "botAvatarUrl", userAvatarUrl: "userAvatarUrl", userName: "userName", isAuthenticated: "isAuthenticated", isLoggingIn: "isLoggingIn", trackByMessageId: "trackByMessageId" }, outputs: { suggestionClick: "suggestionClick", loginClick: "loginClick" }, viewQueries: [{ propertyName: "chatMessagesContainer", first: true, predicate: ["chatMessages"], descendants: true }], ngImport: i0, template: "<div #chatMessages class=\"chat-messages\">\r\n <!-- Welcome Screen -->\r\n @if (messages.length === 0 && !isBotTyping) {\r\n <div class=\"welcome-screen\">\r\n <img [src]=\"appLogoUrl\" alt=\"Welcome\" class=\"welcome-image\" style=\"border-radius: 0px\" />\r\n\r\n <!-- Only show greeting if authenticated -->\r\n @if (userName && isAuthenticated) {\r\n <div class=\"marquee-container\">\r\n <h2 class=\"welcome-greeting marquee-text\">\r\n Hi, {{ userName }}!\r\n <span class=\"emoji\">{{ appEmoji.waveHand }}</span>\r\n </h2>\r\n </div>\r\n }\r\n\r\n <h3>{{ appSubtitle }}</h3>\r\n <p>{{ welcomeDesc }}</p>\r\n\r\n <!-- Predefined messages chips: Only show when authenticated -->\r\n @if (isAuthenticated) {\r\n <app-chips\r\n [messages]=\"predefinedMessages\"\r\n [disabled]=\"isBotTyping\"\r\n (chipClick)=\"onPredefinedClick($event)\"\r\n ></app-chips>\r\n }\r\n\r\n @if (!isAuthenticated) {\r\n <div class=\"auth-buttons-container\" style=\"margin-top: 20px\">\r\n <button (click)=\"loginClick.emit()\" class=\"auth-btn primary\" [disabled]=\"isLoggingIn\">\r\n {{ isLoggingIn ? 'Logging in...' : 'Login' }}\r\n </button>\r\n </div>\r\n }\r\n </div>\r\n }\r\n\r\n <!-- Chat Messages -->\r\n <div\r\n *ngFor=\"let message of messages; trackBy: trackByMessageId\"\r\n class=\"message\"\r\n [class.user]=\"message.sender === 'user'\"\r\n [class.assistant]=\"message.sender === 'assistant'\"\r\n [class.streaming]=\"!message.completed && message.sender === 'assistant'\"\r\n >\r\n <!-- Avatar (Assistant on Left) -->\r\n @if (message.sender === 'assistant') {\r\n <div class=\"avatar-container\">\r\n <img class=\"assistant-avatar\" [src]=\"botAvatarUrl\" alt=\"Bot Avatar\" />\r\n </div>\r\n }\r\n\r\n <!-- Message Bubble -->\r\n <div class=\"message-content\">\r\n <!-- User chat bubble -->\r\n @if (message.sender === 'user') {\r\n <div class=\"user\">\r\n <span>{{ message.text }}</span>\r\n <button class=\"copy-btn\" (click)=\"copyMessage(message)\" title=\"Copy message\">\r\n <mat-icon>{{ message.copied ? 'check' : 'content_copy' }}</mat-icon>\r\n </button>\r\n </div>\r\n }\r\n\r\n <!-- Assistant chat bubble -->\r\n @if (message.sender === 'assistant') {\r\n <div class=\"assistant\">\r\n @if (isStreaming && !message.isHistory) {\r\n <!-- Show text/chunks if they exist -->\r\n @if (message.chunks && message.chunks.length > 0) {\r\n <span\r\n *ngFor=\"let chunk of message.chunks; let i = index\"\r\n class=\"markdown-content\"\r\n [attr.data-index]=\"i\"\r\n [innerHTML]=\"chunk | Markdown\"\r\n ></span>\r\n } @else if (!message.completed) {\r\n <div class=\"typing-indicator\">\r\n <span></span>\r\n <span></span>\r\n <span></span>\r\n </div>\r\n }\r\n } @else {\r\n <!-- Non-streaming or history -->\r\n @if (message.text) {\r\n <span class=\"markdown-content\" [innerHTML]=\"message.text | Markdown\"></span>\r\n } @else if (!message.completed) {\r\n <div class=\"typing-indicator\">\r\n <span></span>\r\n <span></span>\r\n <span></span>\r\n </div>\r\n }\r\n }\r\n @if (message.completed) {\r\n <button class=\"copy-btn\" (click)=\"copyMessage(message)\" title=\"Copy message\">\r\n <mat-icon>{{ message.copied ? 'check' : 'content_copy' }}</mat-icon>\r\n </button>\r\n }\r\n </div>\r\n }\r\n\r\n <!-- Show time below message -->\r\n @if (message.sender === 'assistant' && message.completed) {\r\n <div class=\"message-time\">\r\n {{ message.timestamp | date: 'shortTime' }}\r\n </div>\r\n }\r\n </div>\r\n\r\n <!-- Avatar (User on Right) -->\r\n @if (message.sender === 'user') {\r\n <div class=\"avatar-container\">\r\n <img class=\"user-avatar\" [src]=\"userAvatarUrl\" alt=\"User Avatar\" />\r\n </div>\r\n }\r\n </div>\r\n\r\n <!-- Standalone Typing Indicator (Fallback if no message added yet) -->\r\n @if (isBotTyping && messages[messages.length - 1]?.sender !== 'assistant') {\r\n <div class=\"message assistant\">\r\n <div class=\"avatar-container\">\r\n <img class=\"assistant-avatar\" [src]=\"botAvatarUrl\" alt=\"Bot Avatar\" />\r\n </div>\r\n <div class=\"message-content\">\r\n <div class=\"assistant\">\r\n <div class=\"typing-indicator\">\r\n <span></span>\r\n <span></span>\r\n <span></span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n</div>\r\n", styles: [":host{display:flex;flex-direction:column;flex-grow:1;overflow:hidden}.login-btn{padding:10px 15px;border:none;border-radius:20px;background-color:var(--primary-color);color:var(--user-text-color);font-size:1em;cursor:pointer;transition:background-color .2s ease}.chat-messages{flex-grow:1;padding:20px;overflow-y:auto;display:flex;flex-direction:column;gap:10px;scroll-behavior:smooth}.chat-messages::-webkit-scrollbar{width:6px}.chat-messages::-webkit-scrollbar-track{background:transparent}.chat-messages::-webkit-scrollbar-thumb{background:rgba(var(--black-rgb),.1);border-radius:10px}.chat-messages::-webkit-scrollbar-thumb:hover{background:rgba(var(--black-rgb),.1)}.chat-messages .message{display:flex;align-items:flex-end;gap:8px;margin-bottom:6px}.chat-messages .message.user{justify-content:flex-end}.chat-messages .message.assistant{justify-content:flex-start}.chat-messages .message .avatar-container{display:flex;flex-direction:column;align-items:center;gap:4px}.chat-messages .message .avatar-container .user-avatar{width:24px;height:24px;border-radius:50%;object-fit:cover;border:1px solid var(--border-color)}.chat-messages .message .avatar-container .assistant-avatar{width:24px;height:24px;border-radius:50%;object-fit:cover;border:1px solid var(--border-color);filter:var(--avatar-filter)}.chat-messages .message .avatar-container .user-avatar.placeholder{filter:var(--avatar-filter)}.chat-messages .message .avatar-container .user-name{font-size:10px;color:var(--secondary-text-color);font-family:var(--font-family);text-align:center;max-width:60px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chat-messages .message .message-content{max-width:80%;word-wrap:break-word;white-space:pre-wrap;font-family:var(--font-family);-webkit-user-select:text;user-select:text;cursor:text}.chat-messages .message .message-content .user{background-color:var(--primary-color);color:var(--user-text-color);align-self:flex-end;border-radius:20px;padding:10px 15px;position:relative;-webkit-user-select:text;user-select:text;cursor:text}.chat-messages .message .message-content .user .copy-btn{position:absolute;top:8px;right:8px;opacity:0;transition:opacity .2s ease;background:var(--background-color);border:none;cursor:pointer;padding:4px;border-radius:4px;display:flex;align-items:center;justify-content:center;pointer-events:auto}.chat-messages .message .message-content .user .copy-btn mat-icon{font-size:16px;width:16px;height:16px;color:var(--bot-text-color)}.chat-messages .message .message-content .user .copy-btn:hover{background:var(--background-color)}.chat-messages .message .message-content .user:hover .copy-btn{opacity:1}.chat-messages .message .message-content .assistant{background-color:var(--bot-message-color);color:var(--bot-text-color);align-self:flex-start;border-radius:20px;padding:10px 15px;position:relative;-webkit-user-select:text;user-select:text;cursor:text;animation:fadeIn .4s ease-out forwards}.chat-messages .message .message-content .assistant .copy-btn{position:absolute;top:8px;right:8px;opacity:0;transition:opacity .2s ease;background:var(--background-color);border:none;cursor:pointer;padding:4px;border-radius:4px;display:flex;align-items:center;justify-content:center;pointer-events:auto}.chat-messages .message .message-content .assistant .copy-btn mat-icon{font-size:16px;width:16px;height:16px;color:var(--bot-text-color)}.chat-messages .message .message-content .assistant .copy-btn:hover{background:var(--background-color)}.chat-messages .message .message-content .assistant:hover .copy-btn{opacity:1}.chat-messages .message .message-content .assistant .markdown-content h1,.chat-messages .message .message-content .assistant .markdown-content h2,.chat-messages .message .message-content .assistant .markdown-content h3{margin-top:10px;margin-bottom:5px;font-weight:600;line-height:1.25}.chat-messages .message .message-content .assistant .markdown-content h1{font-size:1.25em}.chat-messages .message .message-content .assistant .markdown-content h2{font-size:1.1em}.chat-messages .message .message-content .assistant .markdown-content h3{font-size:1em}.chat-messages .message .message-content .assistant .markdown-content p{margin-bottom:8px;line-height:1.5}.chat-messages .message .message-content .assistant .markdown-content ul,.chat-messages .message .message-content .assistant .markdown-content ol{margin-top:0;margin-bottom:8px;padding-left:20px}.chat-messages .message .message-content .assistant .markdown-content li{margin-bottom:4px;line-height:1.5}.chat-messages .message .message-content .assistant .markdown-content strong{font-weight:700}.chat-messages .message .message-content .assistant .markdown-content em{font-style:italic}.chat-messages .message .message-content .message-time{font-size:12px;color:var(--secondary-text-color);text-align:end;margin-top:6px;line-height:1;-webkit-user-select:none;user-select:none;cursor:default}.chat-messages .message .message-content ::selection{background-color:color-mix(in srgb,var(--primary-color),white 60%)}.chat-messages .message .message-content ::-moz-selection{background-color:color-mix(in srgb,var(--primary-color),white 60%)}.welcome-screen{display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;height:100%;padding:0 20px}.welcome-image{width:80px;margin-bottom:30px}.marquee-container{margin-bottom:12px}.welcome-greeting{margin:0;color:var(--text-color);font-family:var(--font-family);font-size:24px;font-weight:600;background:var(--text-color);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;display:inline-block}.welcome-greeting .emoji{background:none;-webkit-background-clip:initial;-webkit-text-fill-color:initial;background-clip:initial}.welcome-screen h3{margin:0 0 5px;color:var(--text-color);font-family:var(--font-family);font-size:18px}.welcome-screen p{margin:0 0 30px;color:var(--secondary-text-color);font-size:14px;font-family:var(--font-family)}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.message-wrapper.streaming .assistant-avatar{box-shadow:0 0 8px rgba(var(--black-rgb),.1);transition:all .3s ease}.typing-indicator{display:flex;align-items:center;justify-content:flex-start;gap:4px;min-height:20px}.typing-indicator span{width:8px;height:8px;background-color:var(--typing-indicator-color);border-radius:50%;animation:blink 1.4s infinite both}.typing-indicator span:nth-child(2){animation-delay:.2s}.typing-indicator span:nth-child(3){animation-delay:.4s}@keyframes blink{0%,80%,to{opacity:.2}40%{opacity:1}}.auth-buttons-container{display:flex;flex-direction:row;justify-content:center;gap:10px}.auth-btn{padding:8px 16px;border-radius:20px;font-size:.9em;font-weight:500;cursor:pointer;transition:all .2s ease}.auth-btn.primary{background:var(--primary-color);color:var(--white);border:1px solid var(--primary-color)}.auth-btn.primary:hover{opacity:.9}.auth-btn.primary:disabled{opacity:.5;cursor:not-allowed}.auth-btn.secondary{background:transparent;color:var(--primary-color);border:1px solid var(--primary-color)}.auth-btn.secondary:hover{opacity:.9}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "pipe", type: i1.DatePipe, name: "date" }, { kind: "component", type: Chips, selector: "app-chips", inputs: ["messages", "disabled"], outputs: ["chipClick"] }, { kind: "pipe", type: MarkdownPipe, name: "Markdown" }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] }); }
77
+ }
78
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MessageListComponent, decorators: [{
79
+ type: Component,
80
+ args: [{ selector: 'app-message-list', standalone: true, imports: [CommonModule, Chips, MarkdownPipe, MatIconModule], template: "<div #chatMessages class=\"chat-messages\">\r\n <!-- Welcome Screen -->\r\n @if (messages.length === 0 && !isBotTyping) {\r\n <div class=\"welcome-screen\">\r\n <img [src]=\"appLogoUrl\" alt=\"Welcome\" class=\"welcome-image\" style=\"border-radius: 0px\" />\r\n\r\n <!-- Only show greeting if authenticated -->\r\n @if (userName && isAuthenticated) {\r\n <div class=\"marquee-container\">\r\n <h2 class=\"welcome-greeting marquee-text\">\r\n Hi, {{ userName }}!\r\n <span class=\"emoji\">{{ appEmoji.waveHand }}</span>\r\n </h2>\r\n </div>\r\n }\r\n\r\n <h3>{{ appSubtitle }}</h3>\r\n <p>{{ welcomeDesc }}</p>\r\n\r\n <!-- Predefined messages chips: Only show when authenticated -->\r\n @if (isAuthenticated) {\r\n <app-chips\r\n [messages]=\"predefinedMessages\"\r\n [disabled]=\"isBotTyping\"\r\n (chipClick)=\"onPredefinedClick($event)\"\r\n ></app-chips>\r\n }\r\n\r\n @if (!isAuthenticated) {\r\n <div class=\"auth-buttons-container\" style=\"margin-top: 20px\">\r\n <button (click)=\"loginClick.emit()\" class=\"auth-btn primary\" [disabled]=\"isLoggingIn\">\r\n {{ isLoggingIn ? 'Logging in...' : 'Login' }}\r\n </button>\r\n </div>\r\n }\r\n </div>\r\n }\r\n\r\n <!-- Chat Messages -->\r\n <div\r\n *ngFor=\"let message of messages; trackBy: trackByMessageId\"\r\n class=\"message\"\r\n [class.user]=\"message.sender === 'user'\"\r\n [class.assistant]=\"message.sender === 'assistant'\"\r\n [class.streaming]=\"!message.completed && message.sender === 'assistant'\"\r\n >\r\n <!-- Avatar (Assistant on Left) -->\r\n @if (message.sender === 'assistant') {\r\n <div class=\"avatar-container\">\r\n <img class=\"assistant-avatar\" [src]=\"botAvatarUrl\" alt=\"Bot Avatar\" />\r\n </div>\r\n }\r\n\r\n <!-- Message Bubble -->\r\n <div class=\"message-content\">\r\n <!-- User chat bubble -->\r\n @if (message.sender === 'user') {\r\n <div class=\"user\">\r\n <span>{{ message.text }}</span>\r\n <button class=\"copy-btn\" (click)=\"copyMessage(message)\" title=\"Copy message\">\r\n <mat-icon>{{ message.copied ? 'check' : 'content_copy' }}</mat-icon>\r\n </button>\r\n </div>\r\n }\r\n\r\n <!-- Assistant chat bubble -->\r\n @if (message.sender === 'assistant') {\r\n <div class=\"assistant\">\r\n @if (isStreaming && !message.isHistory) {\r\n <!-- Show text/chunks if they exist -->\r\n @if (message.chunks && message.chunks.length > 0) {\r\n <span\r\n *ngFor=\"let chunk of message.chunks; let i = index\"\r\n class=\"markdown-content\"\r\n [attr.data-index]=\"i\"\r\n [innerHTML]=\"chunk | Markdown\"\r\n ></span>\r\n } @else if (!message.completed) {\r\n <div class=\"typing-indicator\">\r\n <span></span>\r\n <span></span>\r\n <span></span>\r\n </div>\r\n }\r\n } @else {\r\n <!-- Non-streaming or history -->\r\n @if (message.text) {\r\n <span class=\"markdown-content\" [innerHTML]=\"message.text | Markdown\"></span>\r\n } @else if (!message.completed) {\r\n <div class=\"typing-indicator\">\r\n <span></span>\r\n <span></span>\r\n <span></span>\r\n </div>\r\n }\r\n }\r\n @if (message.completed) {\r\n <button class=\"copy-btn\" (click)=\"copyMessage(message)\" title=\"Copy message\">\r\n <mat-icon>{{ message.copied ? 'check' : 'content_copy' }}</mat-icon>\r\n </button>\r\n }\r\n </div>\r\n }\r\n\r\n <!-- Show time below message -->\r\n @if (message.sender === 'assistant' && message.completed) {\r\n <div class=\"message-time\">\r\n {{ message.timestamp | date: 'shortTime' }}\r\n </div>\r\n }\r\n </div>\r\n\r\n <!-- Avatar (User on Right) -->\r\n @if (message.sender === 'user') {\r\n <div class=\"avatar-container\">\r\n <img class=\"user-avatar\" [src]=\"userAvatarUrl\" alt=\"User Avatar\" />\r\n </div>\r\n }\r\n </div>\r\n\r\n <!-- Standalone Typing Indicator (Fallback if no message added yet) -->\r\n @if (isBotTyping && messages[messages.length - 1]?.sender !== 'assistant') {\r\n <div class=\"message assistant\">\r\n <div class=\"avatar-container\">\r\n <img class=\"assistant-avatar\" [src]=\"botAvatarUrl\" alt=\"Bot Avatar\" />\r\n </div>\r\n <div class=\"message-content\">\r\n <div class=\"assistant\">\r\n <div class=\"typing-indicator\">\r\n <span></span>\r\n <span></span>\r\n <span></span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n</div>\r\n", styles: [":host{display:flex;flex-direction:column;flex-grow:1;overflow:hidden}.login-btn{padding:10px 15px;border:none;border-radius:20px;background-color:var(--primary-color);color:var(--user-text-color);font-size:1em;cursor:pointer;transition:background-color .2s ease}.chat-messages{flex-grow:1;padding:20px;overflow-y:auto;display:flex;flex-direction:column;gap:10px;scroll-behavior:smooth}.chat-messages::-webkit-scrollbar{width:6px}.chat-messages::-webkit-scrollbar-track{background:transparent}.chat-messages::-webkit-scrollbar-thumb{background:rgba(var(--black-rgb),.1);border-radius:10px}.chat-messages::-webkit-scrollbar-thumb:hover{background:rgba(var(--black-rgb),.1)}.chat-messages .message{display:flex;align-items:flex-end;gap:8px;margin-bottom:6px}.chat-messages .message.user{justify-content:flex-end}.chat-messages .message.assistant{justify-content:flex-start}.chat-messages .message .avatar-container{display:flex;flex-direction:column;align-items:center;gap:4px}.chat-messages .message .avatar-container .user-avatar{width:24px;height:24px;border-radius:50%;object-fit:cover;border:1px solid var(--border-color)}.chat-messages .message .avatar-container .assistant-avatar{width:24px;height:24px;border-radius:50%;object-fit:cover;border:1px solid var(--border-color);filter:var(--avatar-filter)}.chat-messages .message .avatar-container .user-avatar.placeholder{filter:var(--avatar-filter)}.chat-messages .message .avatar-container .user-name{font-size:10px;color:var(--secondary-text-color);font-family:var(--font-family);text-align:center;max-width:60px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chat-messages .message .message-content{max-width:80%;word-wrap:break-word;white-space:pre-wrap;font-family:var(--font-family);-webkit-user-select:text;user-select:text;cursor:text}.chat-messages .message .message-content .user{background-color:var(--primary-color);color:var(--user-text-color);align-self:flex-end;border-radius:20px;padding:10px 15px;position:relative;-webkit-user-select:text;user-select:text;cursor:text}.chat-messages .message .message-content .user .copy-btn{position:absolute;top:8px;right:8px;opacity:0;transition:opacity .2s ease;background:var(--background-color);border:none;cursor:pointer;padding:4px;border-radius:4px;display:flex;align-items:center;justify-content:center;pointer-events:auto}.chat-messages .message .message-content .user .copy-btn mat-icon{font-size:16px;width:16px;height:16px;color:var(--bot-text-color)}.chat-messages .message .message-content .user .copy-btn:hover{background:var(--background-color)}.chat-messages .message .message-content .user:hover .copy-btn{opacity:1}.chat-messages .message .message-content .assistant{background-color:var(--bot-message-color);color:var(--bot-text-color);align-self:flex-start;border-radius:20px;padding:10px 15px;position:relative;-webkit-user-select:text;user-select:text;cursor:text;animation:fadeIn .4s ease-out forwards}.chat-messages .message .message-content .assistant .copy-btn{position:absolute;top:8px;right:8px;opacity:0;transition:opacity .2s ease;background:var(--background-color);border:none;cursor:pointer;padding:4px;border-radius:4px;display:flex;align-items:center;justify-content:center;pointer-events:auto}.chat-messages .message .message-content .assistant .copy-btn mat-icon{font-size:16px;width:16px;height:16px;color:var(--bot-text-color)}.chat-messages .message .message-content .assistant .copy-btn:hover{background:var(--background-color)}.chat-messages .message .message-content .assistant:hover .copy-btn{opacity:1}.chat-messages .message .message-content .assistant .markdown-content h1,.chat-messages .message .message-content .assistant .markdown-content h2,.chat-messages .message .message-content .assistant .markdown-content h3{margin-top:10px;margin-bottom:5px;font-weight:600;line-height:1.25}.chat-messages .message .message-content .assistant .markdown-content h1{font-size:1.25em}.chat-messages .message .message-content .assistant .markdown-content h2{font-size:1.1em}.chat-messages .message .message-content .assistant .markdown-content h3{font-size:1em}.chat-messages .message .message-content .assistant .markdown-content p{margin-bottom:8px;line-height:1.5}.chat-messages .message .message-content .assistant .markdown-content ul,.chat-messages .message .message-content .assistant .markdown-content ol{margin-top:0;margin-bottom:8px;padding-left:20px}.chat-messages .message .message-content .assistant .markdown-content li{margin-bottom:4px;line-height:1.5}.chat-messages .message .message-content .assistant .markdown-content strong{font-weight:700}.chat-messages .message .message-content .assistant .markdown-content em{font-style:italic}.chat-messages .message .message-content .message-time{font-size:12px;color:var(--secondary-text-color);text-align:end;margin-top:6px;line-height:1;-webkit-user-select:none;user-select:none;cursor:default}.chat-messages .message .message-content ::selection{background-color:color-mix(in srgb,var(--primary-color),white 60%)}.chat-messages .message .message-content ::-moz-selection{background-color:color-mix(in srgb,var(--primary-color),white 60%)}.welcome-screen{display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;height:100%;padding:0 20px}.welcome-image{width:80px;margin-bottom:30px}.marquee-container{margin-bottom:12px}.welcome-greeting{margin:0;color:var(--text-color);font-family:var(--font-family);font-size:24px;font-weight:600;background:var(--text-color);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;display:inline-block}.welcome-greeting .emoji{background:none;-webkit-background-clip:initial;-webkit-text-fill-color:initial;background-clip:initial}.welcome-screen h3{margin:0 0 5px;color:var(--text-color);font-family:var(--font-family);font-size:18px}.welcome-screen p{margin:0 0 30px;color:var(--secondary-text-color);font-size:14px;font-family:var(--font-family)}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.message-wrapper.streaming .assistant-avatar{box-shadow:0 0 8px rgba(var(--black-rgb),.1);transition:all .3s ease}.typing-indicator{display:flex;align-items:center;justify-content:flex-start;gap:4px;min-height:20px}.typing-indicator span{width:8px;height:8px;background-color:var(--typing-indicator-color);border-radius:50%;animation:blink 1.4s infinite both}.typing-indicator span:nth-child(2){animation-delay:.2s}.typing-indicator span:nth-child(3){animation-delay:.4s}@keyframes blink{0%,80%,to{opacity:.2}40%{opacity:1}}.auth-buttons-container{display:flex;flex-direction:row;justify-content:center;gap:10px}.auth-btn{padding:8px 16px;border-radius:20px;font-size:.9em;font-weight:500;cursor:pointer;transition:all .2s ease}.auth-btn.primary{background:var(--primary-color);color:var(--white);border:1px solid var(--primary-color)}.auth-btn.primary:hover{opacity:.9}.auth-btn.primary:disabled{opacity:.5;cursor:not-allowed}.auth-btn.secondary{background:transparent;color:var(--primary-color);border:1px solid var(--primary-color)}.auth-btn.secondary:hover{opacity:.9}\n"] }]
81
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { messages: [{
82
+ type: Input
83
+ }], isBotTyping: [{
84
+ type: Input
85
+ }], isStreaming: [{
86
+ type: Input
87
+ }], appLogoUrl: [{
88
+ type: Input
89
+ }], appSubtitle: [{
90
+ type: Input
91
+ }], welcomeDesc: [{
92
+ type: Input
93
+ }], predefinedMessages: [{
94
+ type: Input
95
+ }], botAvatarUrl: [{
96
+ type: Input
97
+ }], userAvatarUrl: [{
98
+ type: Input
99
+ }], userName: [{
100
+ type: Input
101
+ }], isAuthenticated: [{
102
+ type: Input
103
+ }], isLoggingIn: [{
104
+ type: Input
105
+ }], trackByMessageId: [{
106
+ type: Input
107
+ }], suggestionClick: [{
108
+ type: Output
109
+ }], loginClick: [{
110
+ type: Output
111
+ }], chatMessagesContainer: [{
112
+ type: ViewChild,
113
+ args: ['chatMessages']
114
+ }] } });
115
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rvb2hib3Qvc3JjL2xpYi9hcHAvY2hhdC9jb21wb25lbnRzL21lc3NhZ2UtbGlzdC9tZXNzYWdlLWxpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZG9vaGJvdC9zcmMvbGliL2FwcC9jaGF0L2NvbXBvbmVudHMvbWVzc2FnZS1saXN0L21lc3NhZ2UtbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR0wsU0FBUyxFQUVULFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUVOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFL0MsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUM3RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDJCQUEyQixDQUFDOzs7O0FBU3JELE1BQU0sT0FBTyxvQkFBb0I7SUF1Qi9CLFlBQW9CLEdBQXNCO1FBQXRCLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBdEJqQyxhQUFRLEdBQWMsRUFBRSxDQUFDO1FBQ3pCLGdCQUFXLEdBQVksS0FBSyxDQUFDO1FBQzdCLGdCQUFXLEdBQVksSUFBSSxDQUFDO1FBQzVCLGVBQVUsR0FBVyxFQUFFLENBQUM7UUFDeEIsZ0JBQVcsR0FBVyxFQUFFLENBQUM7UUFDekIsZ0JBQVcsR0FBVyxFQUFFLENBQUM7UUFDekIsdUJBQWtCLEdBQWEsRUFBRSxDQUFDO1FBQ2xDLGlCQUFZLEdBQVcsRUFBRSxDQUFDO1FBQzFCLGtCQUFhLEdBQVcsRUFBRSxDQUFDO1FBQzNCLGFBQVEsR0FBVyxFQUFFLENBQUM7UUFDdEIsb0JBQWUsR0FBWSxLQUFLLENBQUM7UUFDakMsZ0JBQVcsR0FBWSxLQUFLLENBQUM7UUFDN0IscUJBQWdCLEdBQTZCLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxLQUFLLENBQUM7UUFFOUUsb0JBQWUsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBQzdDLGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBS2hELGFBQVEsR0FBRyxRQUFRLENBQUM7SUFFeUIsQ0FBQztJQUU5QyxlQUFlO1FBQ2IsSUFBSSxDQUFDLElBQUksQ0FBQyxxQkFBcUI7WUFBRSxPQUFPO1FBRXhDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLGdCQUFnQixDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDO1FBRTFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLGFBQWEsRUFBRTtZQUN0RSxTQUFTLEVBQUUsSUFBSTtZQUNmLE9BQU8sRUFBRSxJQUFJO1NBQ2QsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFTyxjQUFjO1FBQ3BCLElBQUksQ0FBQyxJQUFJLENBQUMscUJBQXFCLEVBQUU7WUFDL0IsT0FBTztTQUNSO1FBQ0QsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLGFBQWEsQ0FBQztRQUMzRCxTQUFTLENBQUMsUUFBUSxDQUFDO1lBQ2pCLEdBQUcsRUFBRSxTQUFTLENBQUMsWUFBWTtZQUMzQixRQUFRLEVBQUUsUUFBUTtTQUNuQixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsaUJBQWlCLENBQUMsSUFBWTtRQUM1QixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQWdCO1FBQzFCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSTtZQUFFLE9BQU87UUFFMUIsU0FBUyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDcEQsc0NBQXNDO1lBQ3RDLDZDQUE2QztZQUU3QyxPQUFPLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztZQUN0QixJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUMsbUJBQW1CO1lBRTVDLFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2QsT0FBTyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7Z0JBQ3ZCLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQyxnQkFBZ0I7WUFDM0MsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ1YsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQscUNBQXFDO0lBQ3JDLGtCQUFrQjtJQUNsQixJQUFJO0lBRUosV0FBVztRQUNULElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFO1lBQ3pCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLEVBQUUsQ0FBQztTQUNwQztJQUNILENBQUM7K0dBOUVVLG9CQUFvQjttR0FBcEIsb0JBQW9CLDhwQkMxQmpDLGtnS0EwSUEsbWlPRHBIWSxZQUFZLCtNQUFFLEtBQUssMkdBQUUsWUFBWSxnREFBRSxhQUFhOzs0RkFJL0Msb0JBQW9CO2tCQVBoQyxTQUFTOytCQUNFLGtCQUFrQixjQUNoQixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxhQUFhLENBQUM7c0ZBS2xELFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUVJLGVBQWU7c0JBQXhCLE1BQU07Z0JBQ0csVUFBVTtzQkFBbkIsTUFBTTtnQkFFNEIscUJBQXFCO3NCQUF2RCxTQUFTO3VCQUFDLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIEFmdGVyVmlld0luaXQsXHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgQ29tcG9uZW50LFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIElucHV0LFxyXG4gIE9uRGVzdHJveSxcclxuICBPdXRwdXQsXHJcbiAgVHJhY2tCeUZ1bmN0aW9uLFxyXG4gIFZpZXdDaGlsZCxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgTWVzc2FnZSB9IGZyb20gJy4uLy4uLy4uLy4uL2NvcmUvbW9kZWxzL21lc3NhZ2UnO1xyXG5pbXBvcnQgeyBDaGlwcyB9IGZyb20gJy4uLy4uLy4uLy4uL3NoYXJlZC9jaGlwcy9jaGlwcy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBNYXJrZG93blBpcGUgfSBmcm9tICcuLi8uLi8uLi8uLi9zaGFyZWQvcGlwZXMvc2ltcGxlLW1hcmtkb3duLnBpcGUnO1xyXG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XHJcbmltcG9ydCB7IEFwcEVtb2ppIH0gZnJvbSAnLi4vLi4vLi4vLi4vY29uc3RhbnQvdXRmOCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1tZXNzYWdlLWxpc3QnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgQ2hpcHMsIE1hcmtkb3duUGlwZSwgTWF0SWNvbk1vZHVsZV0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL21lc3NhZ2UtbGlzdC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vbWVzc2FnZS1saXN0LmNvbXBvbmVudC5zY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBNZXNzYWdlTGlzdENvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XHJcbiAgQElucHV0KCkgbWVzc2FnZXM6IE1lc3NhZ2VbXSA9IFtdO1xyXG4gIEBJbnB1dCgpIGlzQm90VHlwaW5nOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgaXNTdHJlYW1pbmc6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIGFwcExvZ29Vcmw6IHN0cmluZyA9ICcnO1xyXG4gIEBJbnB1dCgpIGFwcFN1YnRpdGxlOiBzdHJpbmcgPSAnJztcclxuICBASW5wdXQoKSB3ZWxjb21lRGVzYzogc3RyaW5nID0gJyc7XHJcbiAgQElucHV0KCkgcHJlZGVmaW5lZE1lc3NhZ2VzOiBzdHJpbmdbXSA9IFtdO1xyXG4gIEBJbnB1dCgpIGJvdEF2YXRhclVybDogc3RyaW5nID0gJyc7XHJcbiAgQElucHV0KCkgdXNlckF2YXRhclVybDogc3RyaW5nID0gJyc7XHJcbiAgQElucHV0KCkgdXNlck5hbWU6IHN0cmluZyA9ICcnO1xyXG4gIEBJbnB1dCgpIGlzQXV0aGVudGljYXRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGlzTG9nZ2luZ0luOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgdHJhY2tCeU1lc3NhZ2VJZDogVHJhY2tCeUZ1bmN0aW9uPE1lc3NhZ2U+ID0gKGluZGV4LCBpdGVtKSA9PiBpdGVtLmlkID8/IGluZGV4O1xyXG5cclxuICBAT3V0cHV0KCkgc3VnZ2VzdGlvbkNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcbiAgQE91dHB1dCgpIGxvZ2luQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2NoYXRNZXNzYWdlcycpIHByaXZhdGUgY2hhdE1lc3NhZ2VzQ29udGFpbmVyITogRWxlbWVudFJlZjtcclxuICBwcml2YXRlIG11dGF0aW9uT2JzZXJ2ZXIhOiBNdXRhdGlvbk9ic2VydmVyO1xyXG5cclxuICBhcHBFbW9qaSA9IEFwcEVtb2ppO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHt9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5jaGF0TWVzc2FnZXNDb250YWluZXIpIHJldHVybjtcclxuXHJcbiAgICB0aGlzLm11dGF0aW9uT2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigoKSA9PiB0aGlzLnNjcm9sbFRvQm90dG9tKCkpO1xyXG5cclxuICAgIHRoaXMubXV0YXRpb25PYnNlcnZlci5vYnNlcnZlKHRoaXMuY2hhdE1lc3NhZ2VzQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQsIHtcclxuICAgICAgY2hpbGRMaXN0OiB0cnVlLFxyXG4gICAgICBzdWJ0cmVlOiB0cnVlLFxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5zY3JvbGxUb0JvdHRvbSgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzY3JvbGxUb0JvdHRvbSgpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5jaGF0TWVzc2FnZXNDb250YWluZXIpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgY29udGFpbmVyID0gdGhpcy5jaGF0TWVzc2FnZXNDb250YWluZXIubmF0aXZlRWxlbWVudDtcclxuICAgIGNvbnRhaW5lci5zY3JvbGxUbyh7XHJcbiAgICAgIHRvcDogY29udGFpbmVyLnNjcm9sbEhlaWdodCxcclxuICAgICAgYmVoYXZpb3I6ICdzbW9vdGgnLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBvblByZWRlZmluZWRDbGljayh0ZXh0OiBzdHJpbmcpIHtcclxuICAgIHRoaXMuc3VnZ2VzdGlvbkNsaWNrLmVtaXQodGV4dCk7XHJcbiAgfVxyXG5cclxuICBjb3B5TWVzc2FnZShtZXNzYWdlOiBNZXNzYWdlKTogdm9pZCB7XHJcbiAgICBpZiAoIW1lc3NhZ2UudGV4dCkgcmV0dXJuO1xyXG5cclxuICAgIG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KG1lc3NhZ2UudGV4dCkudGhlbigoKSA9PiB7XHJcbiAgICAgIC8vIExvZ2dlci5pbmZvKCdDb3BpZWQgdG8gY2xpcGJvYXJkJyk7XHJcbiAgICAgIC8vIFNuYWNrYmFyVXRpbHMuaW5mbygnQ29waWVkIHRvIGNsaXBib2FyZCcpO1xyXG5cclxuICAgICAgbWVzc2FnZS5jb3BpZWQgPSB0cnVlO1xyXG4gICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTsgLy8gIGZvcmNlIFVJIHVwZGF0ZVxyXG5cclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgbWVzc2FnZS5jb3BpZWQgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTsgLy8gIHVwZGF0ZSBhZ2FpblxyXG4gICAgICB9LCA4MDApO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvLyB0cmFja0J5Q2h1bmtJbmRleChpbmRleDogbnVtYmVyKSB7XHJcbiAgLy8gICByZXR1cm4gaW5kZXg7XHJcbiAgLy8gfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLm11dGF0aW9uT2JzZXJ2ZXIpIHtcclxuICAgICAgdGhpcy5tdXRhdGlvbk9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiPGRpdiAjY2hhdE1lc3NhZ2VzIGNsYXNzPVwiY2hhdC1tZXNzYWdlc1wiPlxyXG4gIDwhLS0gV2VsY29tZSBTY3JlZW4gLS0+XHJcbiAgQGlmIChtZXNzYWdlcy5sZW5ndGggPT09IDAgJiYgIWlzQm90VHlwaW5nKSB7XHJcbiAgICA8ZGl2IGNsYXNzPVwid2VsY29tZS1zY3JlZW5cIj5cclxuICAgICAgPGltZyBbc3JjXT1cImFwcExvZ29VcmxcIiBhbHQ9XCJXZWxjb21lXCIgY2xhc3M9XCJ3ZWxjb21lLWltYWdlXCIgc3R5bGU9XCJib3JkZXItcmFkaXVzOiAwcHhcIiAvPlxyXG5cclxuICAgICAgPCEtLSBPbmx5IHNob3cgZ3JlZXRpbmcgaWYgYXV0aGVudGljYXRlZCAtLT5cclxuICAgICAgQGlmICh1c2VyTmFtZSAmJiBpc0F1dGhlbnRpY2F0ZWQpIHtcclxuICAgICAgICA8ZGl2IGNsYXNzPVwibWFycXVlZS1jb250YWluZXJcIj5cclxuICAgICAgICAgIDxoMiBjbGFzcz1cIndlbGNvbWUtZ3JlZXRpbmcgbWFycXVlZS10ZXh0XCI+XHJcbiAgICAgICAgICAgIEhpLCB7eyB1c2VyTmFtZSB9fSFcclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJlbW9qaVwiPnt7IGFwcEVtb2ppLndhdmVIYW5kIH19PC9zcGFuPlxyXG4gICAgICAgICAgPC9oMj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgfVxyXG5cclxuICAgICAgPGgzPnt7IGFwcFN1YnRpdGxlIH19PC9oMz5cclxuICAgICAgPHA+e3sgd2VsY29tZURlc2MgfX08L3A+XHJcblxyXG4gICAgICA8IS0tIFByZWRlZmluZWQgbWVzc2FnZXMgY2hpcHM6IE9ubHkgc2hvdyB3aGVuIGF1dGhlbnRpY2F0ZWQgLS0+XHJcbiAgICAgIEBpZiAoaXNBdXRoZW50aWNhdGVkKSB7XHJcbiAgICAgICAgPGFwcC1jaGlwc1xyXG4gICAgICAgICAgW21lc3NhZ2VzXT1cInByZWRlZmluZWRNZXNzYWdlc1wiXHJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNCb3RUeXBpbmdcIlxyXG4gICAgICAgICAgKGNoaXBDbGljayk9XCJvblByZWRlZmluZWRDbGljaygkZXZlbnQpXCJcclxuICAgICAgICA+PC9hcHAtY2hpcHM+XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIEBpZiAoIWlzQXV0aGVudGljYXRlZCkge1xyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJhdXRoLWJ1dHRvbnMtY29udGFpbmVyXCIgc3R5bGU9XCJtYXJnaW4tdG9wOiAyMHB4XCI+XHJcbiAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJsb2dpbkNsaWNrLmVtaXQoKVwiIGNsYXNzPVwiYXV0aC1idG4gcHJpbWFyeVwiIFtkaXNhYmxlZF09XCJpc0xvZ2dpbmdJblwiPlxyXG4gICAgICAgICAgICB7eyBpc0xvZ2dpbmdJbiA/ICdMb2dnaW5nIGluLi4uJyA6ICdMb2dpbicgfX1cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICB9XHJcbiAgICA8L2Rpdj5cclxuICB9XHJcblxyXG4gIDwhLS0gQ2hhdCBNZXNzYWdlcyAtLT5cclxuICA8ZGl2XHJcbiAgICAqbmdGb3I9XCJsZXQgbWVzc2FnZSBvZiBtZXNzYWdlczsgdHJhY2tCeTogdHJhY2tCeU1lc3NhZ2VJZFwiXHJcbiAgICBjbGFzcz1cIm1lc3NhZ2VcIlxyXG4gICAgW2NsYXNzLnVzZXJdPVwibWVzc2FnZS5zZW5kZXIgPT09ICd1c2VyJ1wiXHJcbiAgICBbY2xhc3MuYXNzaXN0YW50XT1cIm1lc3NhZ2Uuc2VuZGVyID09PSAnYXNzaXN0YW50J1wiXHJcbiAgICBbY2xhc3Muc3RyZWFtaW5nXT1cIiFtZXNzYWdlLmNvbXBsZXRlZCAmJiBtZXNzYWdlLnNlbmRlciA9PT0gJ2Fzc2lzdGFudCdcIlxyXG4gID5cclxuICAgIDwhLS0gQXZhdGFyIChBc3Npc3RhbnQgb24gTGVmdCkgLS0+XHJcbiAgICBAaWYgKG1lc3NhZ2Uuc2VuZGVyID09PSAnYXNzaXN0YW50Jykge1xyXG4gICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNvbnRhaW5lclwiPlxyXG4gICAgICAgIDxpbWcgY2xhc3M9XCJhc3Npc3RhbnQtYXZhdGFyXCIgW3NyY109XCJib3RBdmF0YXJVcmxcIiBhbHQ9XCJCb3QgQXZhdGFyXCIgLz5cclxuICAgICAgPC9kaXY+XHJcbiAgICB9XHJcblxyXG4gICAgPCEtLSBNZXNzYWdlIEJ1YmJsZSAtLT5cclxuICAgIDxkaXYgY2xhc3M9XCJtZXNzYWdlLWNvbnRlbnRcIj5cclxuICAgICAgPCEtLSBVc2VyIGNoYXQgYnViYmxlIC0tPlxyXG4gICAgICBAaWYgKG1lc3NhZ2Uuc2VuZGVyID09PSAndXNlcicpIHtcclxuICAgICAgICA8ZGl2IGNsYXNzPVwidXNlclwiPlxyXG4gICAgICAgICAgPHNwYW4+e3sgbWVzc2FnZS50ZXh0IH19PC9zcGFuPlxyXG4gICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNvcHktYnRuXCIgKGNsaWNrKT1cImNvcHlNZXNzYWdlKG1lc3NhZ2UpXCIgdGl0bGU9XCJDb3B5IG1lc3NhZ2VcIj5cclxuICAgICAgICAgICAgPG1hdC1pY29uPnt7IG1lc3NhZ2UuY29waWVkID8gJ2NoZWNrJyA6ICdjb250ZW50X2NvcHknIH19PC9tYXQtaWNvbj5cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICB9XHJcblxyXG4gICAgICA8IS0tIEFzc2lzdGFudCBjaGF0IGJ1YmJsZSAtLT5cclxuICAgICAgQGlmIChtZXNzYWdlLnNlbmRlciA9PT0gJ2Fzc2lzdGFudCcpIHtcclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYXNzaXN0YW50XCI+XHJcbiAgICAgICAgICBAaWYgKGlzU3RyZWFtaW5nICYmICFtZXNzYWdlLmlzSGlzdG9yeSkge1xyXG4gICAgICAgICAgICA8IS0tIFNob3cgdGV4dC9jaHVua3MgaWYgdGhleSBleGlzdCAtLT5cclxuICAgICAgICAgICAgQGlmIChtZXNzYWdlLmNodW5rcyAmJiBtZXNzYWdlLmNodW5rcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBjaHVuayBvZiBtZXNzYWdlLmNodW5rczsgbGV0IGkgPSBpbmRleFwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cIm1hcmtkb3duLWNvbnRlbnRcIlxyXG4gICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1pbmRleF09XCJpXCJcclxuICAgICAgICAgICAgICAgIFtpbm5lckhUTUxdPVwiY2h1bmsgfCBNYXJrZG93blwiXHJcbiAgICAgICAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICAgICAgfSBAZWxzZSBpZiAoIW1lc3NhZ2UuY29tcGxldGVkKSB7XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInR5cGluZy1pbmRpY2F0b3JcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuPjwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSBAZWxzZSB7XHJcbiAgICAgICAgICAgIDwhLS0gTm9uLXN0cmVhbWluZyBvciBoaXN0b3J5IC0tPlxyXG4gICAgICAgICAgICBAaWYgKG1lc3NhZ2UudGV4dCkge1xyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWFya2Rvd24tY29udGVudFwiIFtpbm5lckhUTUxdPVwibWVzc2FnZS50ZXh0IHwgTWFya2Rvd25cIj48L3NwYW4+XHJcbiAgICAgICAgICAgIH0gQGVsc2UgaWYgKCFtZXNzYWdlLmNvbXBsZXRlZCkge1xyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0eXBpbmctaW5kaWNhdG9yXCI+XHJcbiAgICAgICAgICAgICAgICA8c3Bhbj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8c3Bhbj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8c3Bhbj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIEBpZiAobWVzc2FnZS5jb21wbGV0ZWQpIHtcclxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNvcHktYnRuXCIgKGNsaWNrKT1cImNvcHlNZXNzYWdlKG1lc3NhZ2UpXCIgdGl0bGU9XCJDb3B5IG1lc3NhZ2VcIj5cclxuICAgICAgICAgICAgICA8bWF0LWljb24+e3sgbWVzc2FnZS5jb3BpZWQgPyAnY2hlY2snIDogJ2NvbnRlbnRfY29weScgfX08L21hdC1pY29uPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIH1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgfVxyXG5cclxuICAgICAgPCEtLSBTaG93IHRpbWUgYmVsb3cgbWVzc2FnZSAtLT5cclxuICAgICAgQGlmIChtZXNzYWdlLnNlbmRlciA9PT0gJ2Fzc2lzdGFudCcgJiYgbWVzc2FnZS5jb21wbGV0ZWQpIHtcclxuICAgICAgICA8ZGl2IGNsYXNzPVwibWVzc2FnZS10aW1lXCI+XHJcbiAgICAgICAgICB7eyBtZXNzYWdlLnRpbWVzdGFtcCB8IGRhdGU6ICdzaG9ydFRpbWUnIH19XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIH1cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDwhLS0gQXZhdGFyIChVc2VyIG9uIFJpZ2h0KSAtLT5cclxuICAgIEBpZiAobWVzc2FnZS5zZW5kZXIgPT09ICd1c2VyJykge1xyXG4gICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNvbnRhaW5lclwiPlxyXG4gICAgICAgIDxpbWcgY2xhc3M9XCJ1c2VyLWF2YXRhclwiIFtzcmNdPVwidXNlckF2YXRhclVybFwiIGFsdD1cIlVzZXIgQXZhdGFyXCIgLz5cclxuICAgICAgPC9kaXY+XHJcbiAgICB9XHJcbiAgPC9kaXY+XHJcblxyXG4gIDwhLS0gU3RhbmRhbG9uZSBUeXBpbmcgSW5kaWNhdG9yIChGYWxsYmFjayBpZiBubyBtZXNzYWdlIGFkZGVkIHlldCkgLS0+XHJcbiAgQGlmIChpc0JvdFR5cGluZyAmJiBtZXNzYWdlc1ttZXNzYWdlcy5sZW5ndGggLSAxXT8uc2VuZGVyICE9PSAnYXNzaXN0YW50Jykge1xyXG4gICAgPGRpdiBjbGFzcz1cIm1lc3NhZ2UgYXNzaXN0YW50XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItY29udGFpbmVyXCI+XHJcbiAgICAgICAgPGltZyBjbGFzcz1cImFzc2lzdGFudC1hdmF0YXJcIiBbc3JjXT1cImJvdEF2YXRhclVybFwiIGFsdD1cIkJvdCBBdmF0YXJcIiAvPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cIm1lc3NhZ2UtY29udGVudFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJhc3Npc3RhbnRcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0eXBpbmctaW5kaWNhdG9yXCI+XHJcbiAgICAgICAgICAgIDxzcGFuPjwvc3Bhbj5cclxuICAgICAgICAgICAgPHNwYW4+PC9zcGFuPlxyXG4gICAgICAgICAgICA8c3Bhbj48L3NwYW4+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICB9XHJcbjwvZGl2PlxyXG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC1oaXN0b3J5Lm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZG9vaGJvdC9zcmMvbGliL2FwcC9jaGF0L21vZGVsL2NoYXQtaGlzdG9yeS5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTWVzc2FnZVJvbGUgfSBmcm9tICcuLi8uLi8uLi9jb3JlL3R5cGVzL21lc3NhZ2Utcm9sZS50eXBlJztcclxuXHJcbi8qKlxyXG4gKiBDaGF0IEhpc3RvcnkgUmVxdWVzdCBNb2RlbFxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBDaGF0SGlzdG9yeVJlcXVlc3Qge1xyXG4gIGxpbWl0OiBudW1iZXI7XHJcbiAgb2Zmc2V0OiBudW1iZXI7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDaGF0IE1lc3NhZ2UgZnJvbSBBUElcclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgQ2hhdE1lc3NhZ2Uge1xyXG4gIG1lc3NhZ2VfaWQ/OiBzdHJpbmc7IC8vIFNvbWUgZW5kcG9pbnRzIHJldHVybiBtZXNzYWdlX2lkXHJcbiAgLy8gY2hhdF9tZXNzYWdlX2lkPzogc3RyaW5nOyAvLyBPdGhlcnMgcmV0dXJuIGNoYXRfbWVzc2FnZV9pZFxyXG4gIHJvbGU6IE1lc3NhZ2VSb2xlO1xyXG4gIGNvbnRlbnQ6IHN0cmluZztcclxuICBtb2RlbF9uYW1lOiBzdHJpbmcgfCBudWxsO1xyXG4gIHByb21wdF90b2tlbnM6IG51bWJlciB8IG51bGw7XHJcbiAgY29tcGxldGlvbl90b2tlbnM6IG51bWJlciB8IG51bGw7XHJcbiAgY3JlYXRlZF9hdDogc3RyaW5nO1xyXG59XHJcblxyXG4vKipcclxuICogQ2hhdCBTZXNzaW9uIGZyb20gQVBJXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIENoYXRTZXNzaW9uUmVzcG9uc2Uge1xyXG4gIHJlc3BvbnNlX2lkOiBzdHJpbmc7XHJcbiAgdGl0bGU6IHN0cmluZztcclxuICBsYXN0X21lc3NhZ2VfYXQ6IHN0cmluZztcclxuICBjaGF0X3Nlc3Npb25faWQ/OiBzdHJpbmc7XHJcbiAgaXNfYWN0aXZlPzogYm9vbGVhbjtcclxuICBjcmVhdGVkX2F0Pzogc3RyaW5nO1xyXG4gIHVwZGF0ZWRfYXQ/OiBzdHJpbmc7XHJcbiAgbWVzc2FnZXM/OiBDaGF0TWVzc2FnZVtdO1xyXG59XHJcblxyXG4vKipcclxuICogQ2hhdCBIaXN0b3J5IERhdGEgZnJvbSBBUElcclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgQ2hhdEhpc3RvcnlEYXRhIHtcclxuICBzZXNzaW9uczogQ2hhdFNlc3Npb25SZXNwb25zZVtdO1xyXG4gIHRvdGFsOiBudW1iZXI7XHJcbiAgbGltaXQ6IG51bWJlcjtcclxuICBvZmZzZXQ6IG51bWJlcjtcclxufVxyXG5cclxuLyoqXHJcbiAqIENoYXQgSGlzdG9yeSBBUEkgUmVzcG9uc2VcclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgQ2hhdEhpc3RvcnlSZXNwb25zZSB7XHJcbiAgc3VjY2VzczogYm9vbGVhbjtcclxuICBtZXNzYWdlOiBzdHJpbmc7XHJcbiAgZGF0YTogQ2hhdEhpc3RvcnlEYXRhO1xyXG4gIHRpbWVzdGFtcDogc3RyaW5nO1xyXG59XHJcbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC1yZXF1ZXN0Lm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZG9vaGJvdC9zcmMvbGliL2FwcC9jaGF0L21vZGVsL2NoYXQtcmVxdWVzdC5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUHJvbXB0TW9kZSB9IGZyb20gJy4uLy4uLy4uL2NvcmUvdHlwZXMvcHJvbXB0LW1vZGUudHlwZSc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIENoYXRSZXF1ZXN0IHtcclxuICBxdWVzdGlvbjogc3RyaW5nO1xyXG5cclxuICB0ZW1wZXJhdHVyZT86IG51bWJlcjtcclxuXHJcbiAgbWF4X3Rva2Vucz86IG51bWJlcjtcclxuXHJcbiAgcHJvbXB0X21vZGU/OiBQcm9tcHRNb2RlO1xyXG5cclxuICBvcmdhbml6YXRpb25faWQ6IHN0cmluZztcclxuXHJcbiAgcmVzcG9uc2VfaWQ/OiBzdHJpbmc7XHJcblxyXG4gIGN1c3RvbV9pbnN0cnVjdGlvbnM/OiBzdHJpbmc7XHJcbn1cclxuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC1yZXNwb25zZS5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rvb2hib3Qvc3JjL2xpYi9hcHAvY2hhdC9tb2RlbC9jaGF0LXJlc3BvbnNlLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIENoYXRSZXNwb25zZSB7XHJcbiAgaWQ6IHN0cmluZztcclxuICBjb250ZW50OiBzdHJpbmc7XHJcbiAgY3JlYXRlZF9hdDogc3RyaW5nO1xyXG4gIGlzQ29tcGxldGU6IGJvb2xlYW47XHJcbiAgc291cmNlczogYW55W107XHJcbiAgZXJyb3I/OiBhbnk7XHJcbiAgcmVzcG9uc2VfaWQ/OiBzdHJpbmc7XHJcbn1cclxuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC1zZXNzaW9uLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZG9vaGJvdC9zcmMvbGliL2FwcC9jaGF0L21vZGVsL2NoYXQtc2Vzc2lvbi5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTWVzc2FnZSB9IGZyb20gJy4uLy4uLy4uL2NvcmUvbW9kZWxzL21lc3NhZ2UnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBDaGF0U2Vzc2lvbiB7XHJcbiAgaWQ6IHN0cmluZztcclxuICB0aW1lc3RhbXA6IERhdGU7XHJcbiAgdGl0bGU6IHN0cmluZzsgLy8gQXV0by1nZW5lcmF0ZWQgZnJvbSBmaXJzdCBtZXNzYWdlXHJcbiAgbWVzc2FnZXM6IE1lc3NhZ2VbXTtcclxuICB1c2VySWQ6IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBDaGF0U2Vzc2lvbkdyb3VwIHtcclxuICBsYWJlbDogc3RyaW5nO1xyXG4gIHNlc3Npb25zOiBDaGF0U2Vzc2lvbltdO1xyXG59XHJcbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC1zdHJlYW0tbWVzc2FnZS5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rvb2hib3Qvc3JjL2xpYi9hcHAvY2hhdC9tb2RlbC9jaGF0LXN0cmVhbS1tZXNzYWdlLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNZXNzYWdlUm9sZSB9IGZyb20gJy4uLy4uLy4uL2NvcmUvdHlwZXMvbWVzc2FnZS1yb2xlLnR5cGUnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBDaGF0U3RyZWFtTWVzc2FnZSB7XHJcbiAgcm9sZTogTWVzc2FnZVJvbGU7XHJcbiAgY29udGVudDogc3RyaW5nO1xyXG59XHJcbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC1zdHJlYW0tcmVzcG9uc2UubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kb29oYm90L3NyYy9saWIvYXBwL2NoYXQvbW9kZWwvY2hhdC1zdHJlYW0tcmVzcG9uc2UubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYXRTdHJlYW0gfSBmcm9tICcuLi8uLi8uLi9jb3JlL3R5cGVzL2NoYXQtc3RyZWFtLnR5cGUnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBDaGF0U3RyZWFtUmVzcG9uc2Uge1xyXG4gIGlkOiBzdHJpbmc7XHJcbiAgdHlwZTogQ2hhdFN0cmVhbTtcclxuICBjb250ZW50OiBzdHJpbmc7XHJcbiAgZXJyb3I/OiBhbnk7XHJcbiAgY3JlYXRlZF9hdDogc3RyaW5nO1xyXG4gIC8vIGlzQ29tcGxldGU6IGJvb2xlYW47XHJcbiAgc291cmNlczogYW55W107XHJcbiAgcmVzcG9uc2VfaWQ/OiBzdHJpbmc7XHJcbn1cclxuIl19
@@ -0,0 +1,61 @@
1
+ import { Injectable } from '@angular/core';
2
+ import logger from '../../../core/utils/logger.service';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "../../../core/http/http.service";
5
+ import * as i2 from "../../../core/http/http-stream.service";
6
+ export class ChatApiService {
7
+ get apiUrl() {
8
+ return this.http.apiUrl;
9
+ }
10
+ constructor(http, httpStreamService) {
11
+ this.http = http;
12
+ this.httpStreamService = httpStreamService;
13
+ logger.log('ChatApiService: Initialized');
14
+ }
15
+ /**
16
+ * Send chat message and get full response
17
+ */
18
+ sendMessage(request, showLoader = false) {
19
+ return this.http.post('chats/ask', request, showLoader);
20
+ }
21
+ /**
22
+ * Send chat message and get streaming response
23
+ */
24
+ sendMessageStream(request) {
25
+ return this.httpStreamService.createHttpStream(`${this.apiUrl}chats/stream`, request);
26
+ }
27
+ getChatHistory(request, showLoader = false) {
28
+ return this.http.post('chats/sessions', request, showLoader);
29
+ }
30
+ getChatSession(chatSessionId, showLoader = false) {
31
+ return this.http.get(`chats/sessions/${chatSessionId}`, undefined, showLoader);
32
+ }
33
+ // deleteChatSession(chatSessionId: string, showLoader = false): Observable<ApiResponse<void>> {
34
+ // return this.http.delete(`chats/sessions/${chatSessionId}`, undefined, showLoader);
35
+ // }
36
+ // deleteChatSession(chatSessionId: string, showLoader = false): Observable<ApiResponse<void>> {
37
+ // return this.clearChatHistory(
38
+ // { chat_session_ids: [chatSessionId], delete_all: false },
39
+ // showLoader,
40
+ // );
41
+ // }
42
+ deleteChatSession(chatSessionId, showLoader = false) {
43
+ const body = { chat_session_ids: [chatSessionId], delete_all: false };
44
+ return this.http.delete('chats/sessions', body, showLoader);
45
+ }
46
+ updateChatTitle(chatSessionId, title, showLoader = false) {
47
+ return this.http.patch(`chats/sessions/${chatSessionId}/title`, { title }, showLoader);
48
+ }
49
+ clearChatHistory(request, showLoader = false) {
50
+ return this.http.delete('chats/sessions', request, showLoader);
51
+ }
52
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ChatApiService, deps: [{ token: i1.HttpService }, { token: i2.HttpStreamService }], target: i0.ɵɵFactoryTarget.Injectable }); }
53
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ChatApiService, providedIn: 'root' }); }
54
+ }
55
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ChatApiService, decorators: [{
56
+ type: Injectable,
57
+ args: [{
58
+ providedIn: 'root',
59
+ }]
60
+ }], ctorParameters: () => [{ type: i1.HttpService }, { type: i2.HttpStreamService }] });
61
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC1hcGkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rvb2hib3Qvc3JjL2xpYi9hcHAvY2hhdC9zZXJ2aWNlcy9jaGF0LWFwaS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFNM0MsT0FBTyxNQUFNLE1BQU0sb0NBQW9DLENBQUM7Ozs7QUFReEQsTUFBTSxPQUFPLGNBQWM7SUFDekIsSUFBSSxNQUFNO1FBQ1IsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUMxQixDQUFDO0lBRUQsWUFDVSxJQUFpQixFQUNqQixpQkFBb0M7UUFEcEMsU0FBSSxHQUFKLElBQUksQ0FBYTtRQUNqQixzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBRTVDLE1BQU0sQ0FBQyxHQUFHLENBQUMsNkJBQTZCLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxXQUFXLENBQUMsT0FBcUIsRUFBRSxVQUFVLEdBQUcsS0FBSztRQUNuRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxPQUFPLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVEOztPQUVHO0lBQ0gsaUJBQWlCLENBQUMsT0FBb0I7UUFDcEMsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxjQUFjLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDeEYsQ0FBQztJQUVELGNBQWMsQ0FDWixPQUEyQixFQUMzQixVQUFVLEdBQUcsS0FBSztRQUVsQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLE9BQU8sRUFBRSxVQUFVLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBRUQsY0FBYyxDQUNaLGFBQXFCLEVBQ3JCLFVBQVUsR0FBRyxLQUFLO1FBRWxCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsa0JBQWtCLGFBQWEsRUFBRSxFQUFFLFNBQVMsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUNqRixDQUFDO0lBRUQsZ0dBQWdHO0lBQ2hHLHVGQUF1RjtJQUN2RixJQUFJO0lBRUosZ0dBQWdHO0lBQ2hHLGtDQUFrQztJQUNsQyxnRUFBZ0U7SUFDaEUsa0JBQWtCO0lBQ2xCLE9BQU87SUFDUCxJQUFJO0lBRUosaUJBQWlCLENBQUMsYUFBcUIsRUFBRSxVQUFVLEdBQUcsS0FBSztRQUN6RCxNQUFNLElBQUksR0FBRyxFQUFFLGdCQUFnQixFQUFFLENBQUMsYUFBYSxDQUFDLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxDQUFDO1FBQ3RFLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFFRCxlQUFlLENBQ2IsYUFBcUIsRUFDckIsS0FBYSxFQUNiLFVBQVUsR0FBRyxLQUFLO1FBRWxCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsa0JBQWtCLGFBQWEsUUFBUSxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDekYsQ0FBQztJQUVELGdCQUFnQixDQUFDLE9BQWdCLEVBQUUsVUFBVSxHQUFHLEtBQUs7UUFDbkQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsRUFBRSxPQUFPLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDakUsQ0FBQzsrR0FsRVUsY0FBYzttSEFBZCxjQUFjLGNBRmIsTUFBTTs7NEZBRVAsY0FBYztrQkFIMUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQ2hhdEhpc3RvcnlEYXRhLCBDaGF0SGlzdG9yeVJlcXVlc3QsIENoYXRNZXNzYWdlIH0gZnJvbSAnLi4vbW9kZWwvY2hhdC1oaXN0b3J5Lm1vZGVsJztcclxuaW1wb3J0IHsgSHR0cFN0cmVhbVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9jb3JlL2h0dHAvaHR0cC1zdHJlYW0uc2VydmljZSc7XHJcbmltcG9ydCB7IEh0dHBTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vY29yZS9odHRwL2h0dHAuc2VydmljZSc7XHJcbmltcG9ydCB7IEFwaVJlc3BvbnNlIH0gZnJvbSAnLi4vLi4vLi4vY29yZS9tb2RlbHMvYXBpLXJlc3BvbnNlLm1vZGVsJztcclxuaW1wb3J0IGxvZ2dlciBmcm9tICcuLi8uLi8uLi9jb3JlL3V0aWxzL2xvZ2dlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ2hhdFJlcXVlc3QgfSBmcm9tICcuLi9tb2RlbC9jaGF0LXJlcXVlc3QubW9kZWwnO1xyXG5pbXBvcnQgeyBDaGF0UmVzcG9uc2UgfSBmcm9tICcuLi9tb2RlbC9jaGF0LXJlc3BvbnNlLm1vZGVsJztcclxuaW1wb3J0IHsgQ2hhdFN0cmVhbVJlc3BvbnNlIH0gZnJvbSAnLi4vbW9kZWwvY2hhdC1zdHJlYW0tcmVzcG9uc2UubW9kZWwnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIENoYXRBcGlTZXJ2aWNlIHtcclxuICBnZXQgYXBpVXJsKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmFwaVVybDtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwU2VydmljZSxcclxuICAgIHByaXZhdGUgaHR0cFN0cmVhbVNlcnZpY2U6IEh0dHBTdHJlYW1TZXJ2aWNlLFxyXG4gICkge1xyXG4gICAgbG9nZ2VyLmxvZygnQ2hhdEFwaVNlcnZpY2U6IEluaXRpYWxpemVkJyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZW5kIGNoYXQgbWVzc2FnZSBhbmQgZ2V0IGZ1bGwgcmVzcG9uc2VcclxuICAgKi9cclxuICBzZW5kTWVzc2FnZShyZXF1ZXN0PzogQ2hhdFJlcXVlc3QsIHNob3dMb2FkZXIgPSBmYWxzZSk6IE9ic2VydmFibGU8QXBpUmVzcG9uc2U8Q2hhdFJlc3BvbnNlPj4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KCdjaGF0cy9hc2snLCByZXF1ZXN0LCBzaG93TG9hZGVyKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNlbmQgY2hhdCBtZXNzYWdlIGFuZCBnZXQgc3RyZWFtaW5nIHJlc3BvbnNlXHJcbiAgICovXHJcbiAgc2VuZE1lc3NhZ2VTdHJlYW0ocmVxdWVzdDogQ2hhdFJlcXVlc3QpOiBPYnNlcnZhYmxlPENoYXRTdHJlYW1SZXNwb25zZT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFN0cmVhbVNlcnZpY2UuY3JlYXRlSHR0cFN0cmVhbShgJHt0aGlzLmFwaVVybH1jaGF0cy9zdHJlYW1gLCByZXF1ZXN0KTtcclxuICB9XHJcblxyXG4gIGdldENoYXRIaXN0b3J5KFxyXG4gICAgcmVxdWVzdDogQ2hhdEhpc3RvcnlSZXF1ZXN0LFxyXG4gICAgc2hvd0xvYWRlciA9IGZhbHNlLFxyXG4gICk6IE9ic2VydmFibGU8QXBpUmVzcG9uc2U8Q2hhdEhpc3RvcnlEYXRhPj4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KCdjaGF0cy9zZXNzaW9ucycsIHJlcXVlc3QsIHNob3dMb2FkZXIpO1xyXG4gIH1cclxuXHJcbiAgZ2V0Q2hhdFNlc3Npb24oXHJcbiAgICBjaGF0U2Vzc2lvbklkOiBzdHJpbmcsXHJcbiAgICBzaG93TG9hZGVyID0gZmFsc2UsXHJcbiAgKTogT2JzZXJ2YWJsZTxBcGlSZXNwb25zZTxDaGF0TWVzc2FnZVtdPj4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoYGNoYXRzL3Nlc3Npb25zLyR7Y2hhdFNlc3Npb25JZH1gLCB1bmRlZmluZWQsIHNob3dMb2FkZXIpO1xyXG4gIH1cclxuXHJcbiAgLy8gZGVsZXRlQ2hhdFNlc3Npb24oY2hhdFNlc3Npb25JZDogc3RyaW5nLCBzaG93TG9hZGVyID0gZmFsc2UpOiBPYnNlcnZhYmxlPEFwaVJlc3BvbnNlPHZvaWQ+PiB7XHJcbiAgLy8gICByZXR1cm4gdGhpcy5odHRwLmRlbGV0ZShgY2hhdHMvc2Vzc2lvbnMvJHtjaGF0U2Vzc2lvbklkfWAsIHVuZGVmaW5lZCwgc2hvd0xvYWRlcik7XHJcbiAgLy8gfVxyXG5cclxuICAvLyBkZWxldGVDaGF0U2Vzc2lvbihjaGF0U2Vzc2lvbklkOiBzdHJpbmcsIHNob3dMb2FkZXIgPSBmYWxzZSk6IE9ic2VydmFibGU8QXBpUmVzcG9uc2U8dm9pZD4+IHtcclxuICAvLyAgIHJldHVybiB0aGlzLmNsZWFyQ2hhdEhpc3RvcnkoXHJcbiAgLy8gICAgIHsgY2hhdF9zZXNzaW9uX2lkczogW2NoYXRTZXNzaW9uSWRdLCBkZWxldGVfYWxsOiBmYWxzZSB9LFxyXG4gIC8vICAgICBzaG93TG9hZGVyLFxyXG4gIC8vICAgKTtcclxuICAvLyB9XHJcblxyXG4gIGRlbGV0ZUNoYXRTZXNzaW9uKGNoYXRTZXNzaW9uSWQ6IHN0cmluZywgc2hvd0xvYWRlciA9IGZhbHNlKTogT2JzZXJ2YWJsZTxBcGlSZXNwb25zZTx2b2lkPj4ge1xyXG4gICAgY29uc3QgYm9keSA9IHsgY2hhdF9zZXNzaW9uX2lkczogW2NoYXRTZXNzaW9uSWRdLCBkZWxldGVfYWxsOiBmYWxzZSB9O1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5kZWxldGUoJ2NoYXRzL3Nlc3Npb25zJywgYm9keSwgc2hvd0xvYWRlcik7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVDaGF0VGl0bGUoXHJcbiAgICBjaGF0U2Vzc2lvbklkOiBzdHJpbmcsXHJcbiAgICB0aXRsZTogc3RyaW5nLFxyXG4gICAgc2hvd0xvYWRlciA9IGZhbHNlLFxyXG4gICk6IE9ic2VydmFibGU8QXBpUmVzcG9uc2U8dm9pZD4+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucGF0Y2goYGNoYXRzL3Nlc3Npb25zLyR7Y2hhdFNlc3Npb25JZH0vdGl0bGVgLCB7IHRpdGxlIH0sIHNob3dMb2FkZXIpO1xyXG4gIH1cclxuXHJcbiAgY2xlYXJDaGF0SGlzdG9yeShyZXF1ZXN0Pzogb2JqZWN0LCBzaG93TG9hZGVyID0gZmFsc2UpOiBPYnNlcnZhYmxlPEFwaVJlc3BvbnNlPHZvaWQ+PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmRlbGV0ZSgnY2hhdHMvc2Vzc2lvbnMnLCByZXF1ZXN0LCBzaG93TG9hZGVyKTtcclxuICB9XHJcbn1cclxuIl19
@@ -0,0 +1,50 @@
1
+ import { Injectable } from '@angular/core';
2
+ import logger from '../../../core/utils/logger.service';
3
+ import * as i0 from "@angular/core";
4
+ export class ChatAudioService {
5
+ constructor() {
6
+ this.audioUnlocked = false;
7
+ }
8
+ /**
9
+ * Unlock audio playback (required for autoplay in browsers)
10
+ */
11
+ unlockAudio() {
12
+ if (this.audioUnlocked)
13
+ return;
14
+ const audio = new Audio();
15
+ audio.volume = 1.0;
16
+ audio
17
+ .play()
18
+ .then(() => (this.audioUnlocked = true))
19
+ .catch(() => { });
20
+ }
21
+ /**
22
+ * Play bot message sound
23
+ */
24
+ playBotSound() {
25
+ if (!this.audioUnlocked)
26
+ return;
27
+ try {
28
+ const audio = new Audio('assets/bot.mp3');
29
+ audio.play();
30
+ }
31
+ catch (error) {
32
+ logger.error('Error playing bot sound:', error);
33
+ }
34
+ }
35
+ /**
36
+ * Check if audio is unlocked
37
+ */
38
+ isAudioUnlocked() {
39
+ return this.audioUnlocked;
40
+ }
41
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ChatAudioService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
42
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ChatAudioService, providedIn: 'root' }); }
43
+ }
44
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ChatAudioService, decorators: [{
45
+ type: Injectable,
46
+ args: [{
47
+ providedIn: 'root',
48
+ }]
49
+ }], ctorParameters: () => [] });
50
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC1hdWRpby5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZG9vaGJvdC9zcmMvbGliL2FwcC9jaGF0L3NlcnZpY2VzL2NoYXQtYXVkaW8uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sTUFBTSxNQUFNLG9DQUFvQyxDQUFDOztBQUt4RCxNQUFNLE9BQU8sZ0JBQWdCO0lBR3pCO1FBRlEsa0JBQWEsR0FBRyxLQUFLLENBQUM7SUFFZCxDQUFDO0lBRWpCOztPQUVHO0lBQ0ksV0FBVztRQUNkLElBQUksSUFBSSxDQUFDLGFBQWE7WUFBRSxPQUFPO1FBQy9CLE1BQU0sS0FBSyxHQUFHLElBQUksS0FBSyxFQUFFLENBQUM7UUFDMUIsS0FBSyxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUM7UUFDbkIsS0FBSzthQUNBLElBQUksRUFBRTthQUNOLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLENBQUM7YUFDdkMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzFCLENBQUM7SUFFRDs7T0FFRztJQUNJLFlBQVk7UUFDZixJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWE7WUFBRSxPQUFPO1FBQ2hDLElBQUk7WUFDQSxNQUFNLEtBQUssR0FBRyxJQUFJLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1lBQzFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztTQUNoQjtRQUFDLE9BQU8sS0FBSyxFQUFFO1lBQ1osTUFBTSxDQUFDLEtBQUssQ0FBQywwQkFBMEIsRUFBRSxLQUFLLENBQUMsQ0FBQztTQUNuRDtJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNJLGVBQWU7UUFDbEIsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQzlCLENBQUM7K0dBcENRLGdCQUFnQjttSEFBaEIsZ0JBQWdCLGNBRmIsTUFBTTs7NEZBRVQsZ0JBQWdCO2tCQUg1QixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IGxvZ2dlciBmcm9tICcuLi8uLi8uLi9jb3JlL3V0aWxzL2xvZ2dlci5zZXJ2aWNlJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICAgIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIENoYXRBdWRpb1NlcnZpY2Uge1xyXG4gICAgcHJpdmF0ZSBhdWRpb1VubG9ja2VkID0gZmFsc2U7XHJcblxyXG4gICAgY29uc3RydWN0b3IoKSB7IH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFVubG9jayBhdWRpbyBwbGF5YmFjayAocmVxdWlyZWQgZm9yIGF1dG9wbGF5IGluIGJyb3dzZXJzKVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgdW5sb2NrQXVkaW8oKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMuYXVkaW9VbmxvY2tlZCkgcmV0dXJuO1xyXG4gICAgICAgIGNvbnN0IGF1ZGlvID0gbmV3IEF1ZGlvKCk7XHJcbiAgICAgICAgYXVkaW8udm9sdW1lID0gMS4wO1xyXG4gICAgICAgIGF1ZGlvXHJcbiAgICAgICAgICAgIC5wbGF5KClcclxuICAgICAgICAgICAgLnRoZW4oKCkgPT4gKHRoaXMuYXVkaW9VbmxvY2tlZCA9IHRydWUpKVxyXG4gICAgICAgICAgICAuY2F0Y2goKCkgPT4geyB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFBsYXkgYm90IG1lc3NhZ2Ugc291bmRcclxuICAgICAqL1xyXG4gICAgcHVibGljIHBsYXlCb3RTb3VuZCgpOiB2b2lkIHtcclxuICAgICAgICBpZiAoIXRoaXMuYXVkaW9VbmxvY2tlZCkgcmV0dXJuO1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGF1ZGlvID0gbmV3IEF1ZGlvKCdhc3NldHMvYm90Lm1wMycpO1xyXG4gICAgICAgICAgICBhdWRpby5wbGF5KCk7XHJcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICAgICAgbG9nZ2VyLmVycm9yKCdFcnJvciBwbGF5aW5nIGJvdCBzb3VuZDonLCBlcnJvcik7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ2hlY2sgaWYgYXVkaW8gaXMgdW5sb2NrZWRcclxuICAgICAqL1xyXG4gICAgcHVibGljIGlzQXVkaW9VbmxvY2tlZCgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5hdWRpb1VubG9ja2VkO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==