@aakash58/chatbot 1.1.20 → 1.1.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.editorconfig +17 -0
- package/.vscode/extensions.json +4 -0
- package/.vscode/launch.json +41 -0
- package/.vscode/settings.json +14 -0
- package/.vscode/tasks.json +60 -0
- package/README.md +298 -22
- package/angular.json +132 -0
- package/docs/PUBLISHING_GUIDE.md +104 -0
- package/package.json +75 -29
- package/projects/app-doohbot/public/assets/const/app-const.json +15 -0
- package/projects/app-doohbot/public/assets/const/doohclick_license.json +6 -0
- package/projects/app-doohbot/public/favicon.ico +0 -0
- package/projects/app-doohbot/src/app/app.config.ts +13 -0
- package/projects/app-doohbot/src/app/app.html +31 -0
- package/projects/app-doohbot/src/app/app.routes.ts +3 -0
- package/projects/app-doohbot/src/app/app.scss +279 -0
- package/projects/app-doohbot/src/app/app.spec.ts +23 -0
- package/projects/app-doohbot/src/app/app.ts +72 -0
- package/projects/app-doohbot/src/index.html +15 -0
- package/projects/app-doohbot/src/main.ts +6 -0
- package/projects/app-doohbot/src/styles.scss +15 -0
- package/projects/app-doohbot/tsconfig.app.json +15 -0
- package/projects/app-doohbot/tsconfig.spec.json +14 -0
- package/projects/doohbot/README.md +64 -0
- package/projects/doohbot/docs/README.md +140 -0
- package/projects/doohbot/ng-package.json +10 -0
- package/projects/doohbot/package.json +16 -0
- package/projects/doohbot/src/lib/app/chat/chat-ui-state.service.ts +194 -0
- package/projects/doohbot/src/lib/app/chat/chat.service.ts +547 -0
- package/projects/doohbot/src/lib/app/chat/components/chat-button/chat-button.component.html +27 -0
- package/projects/doohbot/src/lib/app/chat/components/chat-button/chat-button.component.scss +115 -0
- package/projects/doohbot/src/lib/app/chat/components/chat-button/chat-button.component.ts +35 -0
- package/projects/doohbot/src/lib/app/chat/components/chat-footer/chat-footer.component.html +3 -0
- package/projects/doohbot/src/lib/app/chat/components/chat-footer/chat-footer.component.scss +20 -0
- package/projects/doohbot/src/lib/app/chat/components/chat-footer/chat-footer.component.ts +12 -0
- package/projects/doohbot/src/lib/app/chat/components/chat-header/chat-header.component.html +34 -0
- package/projects/doohbot/src/lib/app/chat/components/chat-header/chat-header.component.scss +78 -0
- package/projects/doohbot/src/lib/app/chat/components/chat-header/chat-header.component.ts +52 -0
- package/projects/doohbot/src/lib/app/chat/components/chat-history-sidebar/chat-history-sidebar.component.html +77 -0
- package/projects/doohbot/src/lib/app/chat/components/chat-history-sidebar/chat-history-sidebar.component.scss +346 -0
- package/projects/doohbot/src/lib/app/chat/components/chat-history-sidebar/chat-history-sidebar.component.ts +188 -0
- package/projects/doohbot/src/lib/app/chat/components/chat-window/chat-window.component.html +146 -0
- package/projects/doohbot/src/lib/app/chat/components/chat-window/chat-window.component.scss +187 -0
- package/projects/doohbot/src/lib/app/chat/components/chat-window/chat-window.component.ts +256 -0
- package/projects/doohbot/src/lib/app/chat/components/message-input/message-input.component.html +17 -0
- package/projects/doohbot/src/lib/app/chat/components/message-input/message-input.component.scss +59 -0
- package/projects/doohbot/src/lib/app/chat/components/message-input/message-input.component.ts +28 -0
- package/projects/doohbot/src/lib/app/chat/components/message-list/message-list.component.html +138 -0
- package/projects/doohbot/src/lib/app/chat/components/message-list/message-list.component.scss +436 -0
- package/projects/doohbot/src/lib/app/chat/components/message-list/message-list.component.ts +106 -0
- package/projects/doohbot/src/lib/app/chat/model/chat-history.model.ts +57 -0
- package/projects/doohbot/src/lib/app/chat/model/chat-request.model.ts +17 -0
- package/projects/doohbot/src/lib/app/chat/model/chat-response.model.ts +9 -0
- package/projects/doohbot/src/lib/app/chat/model/chat-session.model.ts +14 -0
- package/{lib/app/chat/model/chat-stream-message.model.d.ts → projects/doohbot/src/lib/app/chat/model/chat-stream-message.model.ts} +6 -5
- package/projects/doohbot/src/lib/app/chat/model/chat-stream-response.model.ts +12 -0
- package/projects/doohbot/src/lib/app/chat/services/chat-api.service.ts +82 -0
- package/projects/doohbot/src/lib/app/chat/services/chat-audio.service.ts +44 -0
- package/projects/doohbot/src/lib/app/chat/services/chat-history.service.ts +303 -0
- package/projects/doohbot/src/lib/app/login/login-form.component.html +80 -0
- package/projects/doohbot/src/lib/app/login/login-form.component.scss +189 -0
- package/projects/doohbot/src/lib/app/login/login-form.component.ts +45 -0
- package/projects/doohbot/src/lib/app/personalization/personalization-dialog.component.html +81 -0
- package/projects/doohbot/src/lib/app/personalization/personalization-dialog.component.scss +179 -0
- package/projects/doohbot/src/lib/app/personalization/personalization-dialog.component.ts +217 -0
- package/projects/doohbot/src/lib/app/personalization/personalization.service.ts +197 -0
- package/projects/doohbot/src/lib/app/personalization/sections/account/account-section.component.html +111 -0
- package/projects/doohbot/src/lib/app/personalization/sections/account/account-section.component.scss +218 -0
- package/projects/doohbot/src/lib/app/personalization/sections/account/account-section.component.ts +121 -0
- package/projects/doohbot/src/lib/app/personalization/sections/instructions/instructions-section.component.html +46 -0
- package/projects/doohbot/src/lib/app/personalization/sections/instructions/instructions-section.component.scss +138 -0
- package/projects/doohbot/src/lib/app/personalization/sections/instructions/instructions-section.component.ts +28 -0
- package/projects/doohbot/src/lib/app/personalization/sections/preferences/color-picker-dialog.component.ts +92 -0
- package/projects/doohbot/src/lib/app/personalization/sections/preferences/preferences-section.component.html +198 -0
- package/projects/doohbot/src/lib/app/personalization/sections/preferences/preferences-section.component.scss +107 -0
- package/projects/doohbot/src/lib/app/personalization/sections/preferences/preferences-section.component.ts +103 -0
- package/projects/doohbot/src/lib/app/personalization/sections/profile/profile-section.component.html +46 -0
- package/projects/doohbot/src/lib/app/personalization/sections/profile/profile-section.component.scss +131 -0
- package/projects/doohbot/src/lib/app/personalization/sections/profile/profile-section.component.ts +23 -0
- package/projects/doohbot/src/lib/app/personalization/sections/settings/setting-section.component.html +33 -0
- package/projects/doohbot/src/lib/app/personalization/sections/settings/setting-section.component.scss +61 -0
- package/projects/doohbot/src/lib/app/personalization/sections/settings/setting-section.component.ts +20 -0
- package/projects/doohbot/src/lib/app/personalization/sections/terms/terms-section.component.html +30 -0
- package/projects/doohbot/src/lib/app/personalization/sections/terms/terms-section.component.scss +59 -0
- package/projects/doohbot/src/lib/app/personalization/sections/terms/terms-section.component.ts +12 -0
- package/projects/doohbot/src/lib/constant/doohbot-constant.ts +40 -0
- package/projects/doohbot/src/lib/constant/html-entities.ts +8 -0
- package/projects/doohbot/src/lib/constant/utf8.ts +9 -0
- package/projects/doohbot/src/lib/core/app-const.ts +63 -0
- package/projects/doohbot/src/lib/core/auth/account-api.service.ts +53 -0
- package/projects/doohbot/src/lib/core/auth/auth.service.ts +478 -0
- package/projects/doohbot/src/lib/core/auth/models/auth-result.model.ts +4 -0
- package/projects/doohbot/src/lib/core/auth/models/federated-login-request.model.ts +5 -0
- package/projects/doohbot/src/lib/core/auth/models/login-request.model.ts +6 -0
- package/projects/doohbot/src/lib/core/auth/storage.service.ts +113 -0
- package/projects/doohbot/src/lib/core/directives/draggable/draggable-dialog.directive.ts +123 -0
- package/projects/doohbot/src/lib/core/directives/draggable/draggable-dialog.module.ts +9 -0
- package/projects/doohbot/src/lib/core/directives/fullscreen/fullscreen.directive.ts +58 -0
- package/projects/doohbot/src/lib/core/directives/fullscreen/fullscreen.module.ts +9 -0
- package/projects/doohbot/src/lib/core/directives/popout/popout.directive.ts +169 -0
- package/projects/doohbot/src/lib/core/directives/popout/popout.module.ts +9 -0
- package/projects/doohbot/src/lib/core/directives/resizable/resizable-dialog.directive.ts +197 -0
- package/projects/doohbot/src/lib/core/directives/resizable/resizable-dialog.module.ts +9 -0
- package/projects/doohbot/src/lib/core/enums/api-request-state.enum.ts +9 -0
- package/projects/doohbot/src/lib/core/environments/environment.prod.ts +14 -0
- package/projects/doohbot/src/lib/core/environments/environment.ts +14 -0
- package/projects/doohbot/src/lib/core/helpers/crypto-helper.service.ts +72 -0
- package/projects/doohbot/src/lib/core/http/http-stream.service.ts +105 -0
- package/projects/doohbot/src/lib/core/http/http.service.ts +148 -0
- package/projects/doohbot/src/lib/core/interceptors/auth.interceptor.ts +118 -0
- package/projects/doohbot/src/lib/core/interceptors/license.interceptor.ts +50 -0
- package/projects/doohbot/src/lib/core/models/api-config.model.ts +82 -0
- package/projects/doohbot/src/lib/core/models/api-request.model.ts +92 -0
- package/projects/doohbot/src/lib/core/models/api-response.model.ts +13 -0
- package/projects/doohbot/src/lib/core/models/doohbot-config.model.ts +109 -0
- package/{lib/core/models/license.model.d.ts → projects/doohbot/src/lib/core/models/license.model.ts} +27 -23
- package/projects/doohbot/src/lib/core/models/message.ts +18 -0
- package/projects/doohbot/src/lib/core/models/theme-config.model.ts +48 -0
- package/projects/doohbot/src/lib/core/services/core-config.service.ts +53 -0
- package/projects/doohbot/src/lib/core/services/doohbot-api.service.ts +207 -0
- package/projects/doohbot/src/lib/core/services/license.service.ts +171 -0
- package/projects/doohbot/src/lib/core/services/markdown.service.ts +73 -0
- package/projects/doohbot/src/lib/core/services/theme.service.ts +305 -0
- package/{lib/core/types/auth-mode.type.d.ts → projects/doohbot/src/lib/core/types/auth-mode.type.ts} +4 -4
- package/{lib/core/types/auth-status.type.d.ts → projects/doohbot/src/lib/core/types/auth-status.type.ts} +5 -4
- package/{lib/core/types/chat-stream.type.d.ts → projects/doohbot/src/lib/core/types/chat-stream.type.ts} +4 -4
- package/{lib/core/types/message-role.type.d.ts → projects/doohbot/src/lib/core/types/message-role.type.ts} +4 -4
- package/{lib/core/types/prompt-mode.type.d.ts → projects/doohbot/src/lib/core/types/prompt-mode.type.ts} +5 -4
- package/{lib/core/types/snackbar-error.type.d.ts → projects/doohbot/src/lib/core/types/snackbar-error.type.ts} +5 -4
- package/{lib/core/types/tenant-resolution-strategy.type.d.ts → projects/doohbot/src/lib/core/types/tenant-resolution-strategy.type.ts} +4 -4
- package/projects/doohbot/src/lib/core/utils/error-handler.util.ts +31 -0
- package/projects/doohbot/src/lib/core/utils/logger.service.ts +45 -0
- package/projects/doohbot/src/lib/doohbot-input.ts +19 -0
- package/projects/doohbot/src/lib/doohbot.component.html +34 -0
- package/projects/doohbot/src/lib/doohbot.component.scss +17 -0
- package/projects/doohbot/src/lib/doohbot.component.spec.ts +31 -0
- package/projects/doohbot/src/lib/doohbot.component.ts +545 -0
- package/projects/doohbot/src/lib/elements.ts +25 -0
- package/projects/doohbot/src/lib/predefined_messages.ts +14 -0
- package/projects/doohbot/src/lib/shared/chips/chips.component.html +9 -0
- package/projects/doohbot/src/lib/shared/chips/chips.component.scss +29 -0
- package/projects/doohbot/src/lib/shared/chips/chips.component.spec.ts +22 -0
- package/projects/doohbot/src/lib/shared/chips/chips.component.ts +20 -0
- package/projects/doohbot/src/lib/shared/dialog/dialog.component.html +29 -0
- package/projects/doohbot/src/lib/shared/dialog/dialog.component.scss +100 -0
- package/projects/doohbot/src/lib/shared/dialog/dialog.component.ts +42 -0
- package/projects/doohbot/src/lib/shared/dialog/dialog.service.ts +62 -0
- package/projects/doohbot/src/lib/shared/dialog/dialog.utils.ts +102 -0
- package/projects/doohbot/src/lib/shared/dropdown-menu/dropdown-menu.component.html +30 -0
- package/projects/doohbot/src/lib/shared/dropdown-menu/dropdown-menu.component.scss +53 -0
- package/projects/doohbot/src/lib/shared/dropdown-menu/dropdown-menu.component.spec.ts +22 -0
- package/projects/doohbot/src/lib/shared/dropdown-menu/dropdown-menu.component.ts +35 -0
- package/projects/doohbot/src/lib/shared/input-dialog/input-dialog.component.html +16 -0
- package/projects/doohbot/src/lib/shared/input-dialog/input-dialog.component.scss +45 -0
- package/projects/doohbot/src/lib/shared/input-dialog/input-dialog.component.ts +46 -0
- package/projects/doohbot/src/lib/shared/menu-item/menu-item.component.html +5 -0
- package/projects/doohbot/src/lib/shared/menu-item/menu-item.component.scss +0 -0
- package/projects/doohbot/src/lib/shared/menu-item/menu-item.component.spec.ts +22 -0
- package/projects/doohbot/src/lib/shared/menu-item/menu-item.component.ts +20 -0
- package/projects/doohbot/src/lib/shared/pipes/simple-markdown.pipe.ts +19 -0
- package/projects/doohbot/src/lib/shared/popout/popout.html +1 -0
- package/projects/doohbot/src/lib/shared/popout/popout.scss +0 -0
- package/projects/doohbot/src/lib/shared/popout/popout.spec.ts +23 -0
- package/projects/doohbot/src/lib/shared/popout/popout.ts +11 -0
- package/projects/doohbot/src/lib/shared/snackbar/snackbar.component.html +7 -0
- package/projects/doohbot/src/lib/shared/snackbar/snackbar.component.scss +125 -0
- package/projects/doohbot/src/lib/shared/snackbar/snackbar.component.spec.ts +21 -0
- package/projects/doohbot/src/lib/shared/snackbar/snackbar.component.ts +44 -0
- package/projects/doohbot/src/lib/shared/snackbar/snackbar.service.ts +54 -0
- package/{lib/shared/snackbar/snackbar.utils.d.ts → projects/doohbot/src/lib/shared/snackbar/snackbar.utils.ts} +49 -33
- package/projects/doohbot/src/lib/styles/_theme.scss +132 -0
- package/projects/doohbot/src/lib/styles/material-override.scss +302 -0
- package/projects/doohbot/src/lib/styles/utility.scss +588 -0
- package/projects/doohbot/src/public-api.ts +42 -0
- package/projects/doohbot/tsconfig.lib.json +15 -0
- package/projects/doohbot/tsconfig.lib.prod.json +11 -0
- package/projects/doohbot/tsconfig.spec.json +10 -0
- package/proxy.conf.json +8 -0
- package/publish.config.js +25 -0
- package/scripts/publishing/index.ts +67 -0
- package/scripts/publishing/pipeline/01-clean.ts +11 -0
- package/scripts/publishing/pipeline/02-validate-pre.ts +8 -0
- package/scripts/publishing/pipeline/03-build.ts +7 -0
- package/scripts/publishing/pipeline/04-validate-post.ts +8 -0
- package/scripts/publishing/pipeline/05-prepare-package.ts +29 -0
- package/scripts/publishing/pipeline/06-version.ts +23 -0
- package/scripts/publishing/pipeline/07-publish.ts +14 -0
- package/scripts/publishing/pipeline/08-cleanup.ts +5 -0
- package/scripts/publishing/types.ts +36 -0
- package/scripts/publishing/utils/command.ts +15 -0
- package/scripts/publishing/utils/config.ts +17 -0
- package/scripts/validate.ts +166 -0
- package/tsconfig.json +45 -0
- package/tsconfig.scripts.json +15 -0
- package/esm2022/aakash58-chatbot.mjs +0 -5
- package/esm2022/lib/app/chat/chat-ui-state.service.mjs +0 -170
- package/esm2022/lib/app/chat/chat.service.mjs +0 -445
- package/esm2022/lib/app/chat/components/chat-button/chat-button.component.mjs +0 -50
- package/esm2022/lib/app/chat/components/chat-footer/chat-footer.component.mjs +0 -12
- package/esm2022/lib/app/chat/components/chat-header/chat-header.component.mjs +0 -66
- package/esm2022/lib/app/chat/components/chat-history-sidebar/chat-history-sidebar.component.mjs +0 -186
- package/esm2022/lib/app/chat/components/chat-window/chat-window.component.mjs +0 -312
- package/esm2022/lib/app/chat/components/message-input/message-input.component.mjs +0 -36
- package/esm2022/lib/app/chat/components/message-list/message-list.component.mjs +0 -115
- package/esm2022/lib/app/chat/model/chat-history.model.mjs +0 -2
- package/esm2022/lib/app/chat/model/chat-request.model.mjs +0 -2
- package/esm2022/lib/app/chat/model/chat-response.model.mjs +0 -2
- package/esm2022/lib/app/chat/model/chat-session.model.mjs +0 -2
- package/esm2022/lib/app/chat/model/chat-stream-message.model.mjs +0 -2
- package/esm2022/lib/app/chat/model/chat-stream-response.model.mjs +0 -2
- package/esm2022/lib/app/chat/services/chat-api.service.mjs +0 -61
- package/esm2022/lib/app/chat/services/chat-audio.service.mjs +0 -50
- package/esm2022/lib/app/chat/services/chat-history.service.mjs +0 -252
- package/esm2022/lib/app/login/login-form.component.mjs +0 -46
- package/esm2022/lib/app/personalization/personalization-dialog.component.mjs +0 -194
- package/esm2022/lib/app/personalization/personalization.service.mjs +0 -149
- package/esm2022/lib/app/personalization/sections/account/account-section.component.mjs +0 -122
- package/esm2022/lib/app/personalization/sections/preferences/color-picker-dialog.component.mjs +0 -86
- package/esm2022/lib/app/personalization/sections/preferences/preferences-section.component.mjs +0 -115
- package/esm2022/lib/app/personalization/sections/profile/profile-section.component.mjs +0 -29
- package/esm2022/lib/app/personalization/sections/settings/setting-section.component.mjs +0 -30
- package/esm2022/lib/app/personalization/sections/terms/terms-section.component.mjs +0 -12
- package/esm2022/lib/constant/doohbot-constant.mjs +0 -28
- package/esm2022/lib/constant/html-entities.mjs +0 -9
- package/esm2022/lib/constant/utf8.mjs +0 -10
- package/esm2022/lib/core/app-const.mjs +0 -61
- package/esm2022/lib/core/auth/account-api.service.mjs +0 -40
- package/esm2022/lib/core/auth/auth.service.mjs +0 -391
- package/esm2022/lib/core/auth/models/auth-result.model.mjs +0 -3
- package/esm2022/lib/core/auth/models/federated-login-request.model.mjs +0 -6
- package/esm2022/lib/core/auth/models/login-request.model.mjs +0 -6
- package/esm2022/lib/core/auth/storage.service.mjs +0 -110
- package/esm2022/lib/core/directives/draggable/draggable-dialog.directive.mjs +0 -112
- package/esm2022/lib/core/directives/fullscreen/fullscreen.directive.mjs +0 -55
- package/esm2022/lib/core/directives/resizable/resizable-dialog.directive.mjs +0 -179
- package/esm2022/lib/core/environments/environment.mjs +0 -15
- package/esm2022/lib/core/environments/environment.prod.mjs +0 -15
- package/esm2022/lib/core/helpers/crypto-helper.service.mjs +0 -52
- package/esm2022/lib/core/http/http-stream.service.mjs +0 -97
- package/esm2022/lib/core/http/http.service.mjs +0 -103
- package/esm2022/lib/core/interceptors/auth.interceptor.mjs +0 -96
- package/esm2022/lib/core/interceptors/license.interceptor.mjs +0 -44
- package/esm2022/lib/core/models/api-config.model.mjs +0 -18
- package/esm2022/lib/core/models/api-request.model.mjs +0 -2
- package/esm2022/lib/core/models/api-response.model.mjs +0 -8
- package/esm2022/lib/core/models/doohbot-config.model.mjs +0 -18
- package/esm2022/lib/core/models/license.model.mjs +0 -2
- package/esm2022/lib/core/models/message.mjs +0 -2
- package/esm2022/lib/core/models/theme-config.model.mjs +0 -2
- package/esm2022/lib/core/services/core-config.service.mjs +0 -52
- package/esm2022/lib/core/services/license.service.mjs +0 -145
- package/esm2022/lib/core/services/markdown.service.mjs +0 -64
- package/esm2022/lib/core/services/theme.service.mjs +0 -248
- package/esm2022/lib/core/types/auth-mode.type.mjs +0 -2
- package/esm2022/lib/core/types/auth-status.type.mjs +0 -5
- package/esm2022/lib/core/types/chat-stream.type.mjs +0 -2
- package/esm2022/lib/core/types/message-role.type.mjs +0 -2
- package/esm2022/lib/core/types/prompt-mode.type.mjs +0 -5
- package/esm2022/lib/core/types/snackbar-error.type.mjs +0 -5
- package/esm2022/lib/core/types/tenant-resolution-strategy.type.mjs +0 -2
- package/esm2022/lib/core/utils/logger.service.mjs +0 -42
- package/esm2022/lib/doohbot-input.mjs +0 -20
- package/esm2022/lib/doohbot.component.mjs +0 -444
- package/esm2022/lib/predefined_messages.mjs +0 -15
- package/esm2022/lib/shared/chips/chips.component.mjs +0 -28
- package/esm2022/lib/shared/dialog/dialog.component.mjs +0 -36
- package/esm2022/lib/shared/dialog/dialog.service.mjs +0 -64
- package/esm2022/lib/shared/dialog/dialog.utils.mjs +0 -85
- package/esm2022/lib/shared/dropdown-menu/dropdown-menu.component.mjs +0 -29
- package/esm2022/lib/shared/input-dialog/input-dialog.component.mjs +0 -38
- package/esm2022/lib/shared/menu-item/menu-item.component.mjs +0 -24
- package/esm2022/lib/shared/pipes/simple-markdown.pipe.mjs +0 -27
- package/esm2022/lib/shared/snackbar/snackbar.component.mjs +0 -43
- package/esm2022/lib/shared/snackbar/snackbar.service.mjs +0 -46
- package/esm2022/lib/shared/snackbar/snackbar.utils.mjs +0 -43
- package/esm2022/public-api.mjs +0 -37
- package/fesm2022/aakash58-chatbot.mjs +0 -5193
- package/fesm2022/aakash58-chatbot.mjs.map +0 -1
- package/index.d.ts +0 -5
- package/lib/app/chat/chat-ui-state.service.d.ts +0 -96
- package/lib/app/chat/chat.service.d.ts +0 -88
- package/lib/app/chat/components/chat-button/chat-button.component.d.ts +0 -16
- package/lib/app/chat/components/chat-footer/chat-footer.component.d.ts +0 -5
- package/lib/app/chat/components/chat-header/chat-header.component.d.ts +0 -24
- package/lib/app/chat/components/chat-history-sidebar/chat-history-sidebar.component.d.ts +0 -49
- package/lib/app/chat/components/chat-window/chat-window.component.d.ts +0 -107
- package/lib/app/chat/components/message-input/message-input.component.d.ts +0 -12
- package/lib/app/chat/components/message-list/message-list.component.d.ts +0 -40
- package/lib/app/chat/model/chat-history.model.d.ts +0 -51
- package/lib/app/chat/model/chat-request.model.d.ts +0 -10
- package/lib/app/chat/model/chat-response.model.d.ts +0 -9
- package/lib/app/chat/model/chat-session.model.d.ts +0 -12
- package/lib/app/chat/model/chat-stream-response.model.d.ts +0 -10
- package/lib/app/chat/services/chat-api.service.d.ts +0 -30
- package/lib/app/chat/services/chat-audio.service.d.ts +0 -19
- package/lib/app/chat/services/chat-history.service.d.ts +0 -53
- package/lib/app/login/login-form.component.d.ts +0 -20
- package/lib/app/personalization/personalization-dialog.component.d.ts +0 -53
- package/lib/app/personalization/personalization.service.d.ts +0 -66
- package/lib/app/personalization/sections/account/account-section.component.d.ts +0 -30
- package/lib/app/personalization/sections/preferences/color-picker-dialog.component.d.ts +0 -17
- package/lib/app/personalization/sections/preferences/preferences-section.component.d.ts +0 -27
- package/lib/app/personalization/sections/profile/profile-section.component.d.ts +0 -17
- package/lib/app/personalization/sections/settings/setting-section.component.d.ts +0 -10
- package/lib/app/personalization/sections/terms/terms-section.component.d.ts +0 -5
- package/lib/constant/doohbot-constant.d.ts +0 -12
- package/lib/constant/html-entities.d.ts +0 -8
- package/lib/constant/utf8.d.ts +0 -9
- package/lib/core/app-const.d.ts +0 -11
- package/lib/core/auth/account-api.service.d.ts +0 -20
- package/lib/core/auth/auth.service.d.ts +0 -90
- package/lib/core/auth/models/auth-result.model.d.ts +0 -4
- package/lib/core/auth/models/federated-login-request.model.d.ts +0 -5
- package/lib/core/auth/models/login-request.model.d.ts +0 -6
- package/lib/core/auth/storage.service.d.ts +0 -21
- package/lib/core/directives/draggable/draggable-dialog.directive.d.ts +0 -23
- package/lib/core/directives/fullscreen/fullscreen.directive.d.ts +0 -14
- package/lib/core/directives/resizable/resizable-dialog.directive.d.ts +0 -30
- package/lib/core/environments/environment.d.ts +0 -7
- package/lib/core/environments/environment.prod.d.ts +0 -7
- package/lib/core/helpers/crypto-helper.service.d.ts +0 -12
- package/lib/core/http/http-stream.service.d.ts +0 -18
- package/lib/core/http/http.service.d.ts +0 -20
- package/lib/core/interceptors/auth.interceptor.d.ts +0 -18
- package/lib/core/interceptors/license.interceptor.d.ts +0 -11
- package/lib/core/models/api-config.model.d.ts +0 -58
- package/lib/core/models/api-request.model.d.ts +0 -77
- package/lib/core/models/api-response.model.d.ts +0 -6
- package/lib/core/models/doohbot-config.model.d.ts +0 -81
- package/lib/core/models/message.d.ts +0 -16
- package/lib/core/models/theme-config.model.d.ts +0 -28
- package/lib/core/services/core-config.service.d.ts +0 -23
- package/lib/core/services/license.service.d.ts +0 -33
- package/lib/core/services/markdown.service.d.ts +0 -8
- package/lib/core/services/theme.service.d.ts +0 -40
- package/lib/core/utils/logger.service.d.ts +0 -11
- package/lib/doohbot-input.d.ts +0 -19
- package/lib/doohbot.component.d.ts +0 -108
- package/lib/predefined_messages.d.ts +0 -2
- package/lib/shared/chips/chips.component.d.ts +0 -10
- package/lib/shared/dialog/dialog.component.d.ts +0 -19
- package/lib/shared/dialog/dialog.service.d.ts +0 -29
- package/lib/shared/dialog/dialog.utils.d.ts +0 -41
- package/lib/shared/dropdown-menu/dropdown-menu.component.d.ts +0 -11
- package/lib/shared/input-dialog/input-dialog.component.d.ts +0 -20
- package/lib/shared/menu-item/menu-item.component.d.ts +0 -9
- package/lib/shared/pipes/simple-markdown.pipe.d.ts +0 -10
- package/lib/shared/snackbar/snackbar.component.d.ts +0 -14
- package/lib/shared/snackbar/snackbar.service.d.ts +0 -19
- package/public-api.d.ts +0 -11
- /package/{src → projects/doohbot/src}/assets/bot.mp3 +0 -0
|
@@ -1,115 +0,0 @@
|
|
|
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=
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC1oaXN0b3J5Lm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZG9vaGJvdC9zcmMvbGliL2FwcC9jaGF0L21vZGVsL2NoYXQtaGlzdG9yeS5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTWVzc2FnZVJvbGUgfSBmcm9tICcuLi8uLi8uLi9jb3JlL3R5cGVzL21lc3NhZ2Utcm9sZS50eXBlJztcclxuXHJcbi8qKlxyXG4gKiBDaGF0IEhpc3RvcnkgUmVxdWVzdCBNb2RlbFxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBDaGF0SGlzdG9yeVJlcXVlc3Qge1xyXG4gIGxpbWl0OiBudW1iZXI7XHJcbiAgb2Zmc2V0OiBudW1iZXI7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDaGF0IE1lc3NhZ2UgZnJvbSBBUElcclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgQ2hhdE1lc3NhZ2Uge1xyXG4gIG1lc3NhZ2VfaWQ/OiBzdHJpbmc7IC8vIFNvbWUgZW5kcG9pbnRzIHJldHVybiBtZXNzYWdlX2lkXHJcbiAgLy8gY2hhdF9tZXNzYWdlX2lkPzogc3RyaW5nOyAvLyBPdGhlcnMgcmV0dXJuIGNoYXRfbWVzc2FnZV9pZFxyXG4gIHJvbGU6IE1lc3NhZ2VSb2xlO1xyXG4gIGNvbnRlbnQ6IHN0cmluZztcclxuICBtb2RlbF9uYW1lOiBzdHJpbmcgfCBudWxsO1xyXG4gIHByb21wdF90b2tlbnM6IG51bWJlciB8IG51bGw7XHJcbiAgY29tcGxldGlvbl90b2tlbnM6IG51bWJlciB8IG51bGw7XHJcbiAgY3JlYXRlZF9hdDogc3RyaW5nO1xyXG59XHJcblxyXG4vKipcclxuICogQ2hhdCBTZXNzaW9uIGZyb20gQVBJXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIENoYXRTZXNzaW9uUmVzcG9uc2Uge1xyXG4gIHJlc3BvbnNlX2lkOiBzdHJpbmc7XHJcbiAgdGl0bGU6IHN0cmluZztcclxuICBsYXN0X21lc3NhZ2VfYXQ6IHN0cmluZztcclxuICBjaGF0X3Nlc3Npb25faWQ/OiBzdHJpbmc7XHJcbiAgaXNfYWN0aXZlPzogYm9vbGVhbjtcclxuICBjcmVhdGVkX2F0Pzogc3RyaW5nO1xyXG4gIHVwZGF0ZWRfYXQ/OiBzdHJpbmc7XHJcbiAgbWVzc2FnZXM/OiBDaGF0TWVzc2FnZVtdO1xyXG59XHJcblxyXG4vKipcclxuICogQ2hhdCBIaXN0b3J5IERhdGEgZnJvbSBBUElcclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgQ2hhdEhpc3RvcnlEYXRhIHtcclxuICBzZXNzaW9uczogQ2hhdFNlc3Npb25SZXNwb25zZVtdO1xyXG4gIHRvdGFsOiBudW1iZXI7XHJcbiAgbGltaXQ6IG51bWJlcjtcclxuICBvZmZzZXQ6IG51bWJlcjtcclxufVxyXG5cclxuLyoqXHJcbiAqIENoYXQgSGlzdG9yeSBBUEkgUmVzcG9uc2VcclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgQ2hhdEhpc3RvcnlSZXNwb25zZSB7XHJcbiAgc3VjY2VzczogYm9vbGVhbjtcclxuICBtZXNzYWdlOiBzdHJpbmc7XHJcbiAgZGF0YTogQ2hhdEhpc3RvcnlEYXRhO1xyXG4gIHRpbWVzdGFtcDogc3RyaW5nO1xyXG59XHJcbiJdfQ==
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC1yZXF1ZXN0Lm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZG9vaGJvdC9zcmMvbGliL2FwcC9jaGF0L21vZGVsL2NoYXQtcmVxdWVzdC5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUHJvbXB0TW9kZSB9IGZyb20gJy4uLy4uLy4uL2NvcmUvdHlwZXMvcHJvbXB0LW1vZGUudHlwZSc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIENoYXRSZXF1ZXN0IHtcclxuICBxdWVzdGlvbjogc3RyaW5nO1xyXG5cclxuICB0ZW1wZXJhdHVyZT86IG51bWJlcjtcclxuXHJcbiAgbWF4X3Rva2Vucz86IG51bWJlcjtcclxuXHJcbiAgcHJvbXB0X21vZGU/OiBQcm9tcHRNb2RlO1xyXG5cclxuICBvcmdhbml6YXRpb25faWQ6IHN0cmluZztcclxuXHJcbiAgcmVzcG9uc2VfaWQ/OiBzdHJpbmc7XHJcblxyXG4gIGN1c3RvbV9pbnN0cnVjdGlvbnM/OiBzdHJpbmc7XHJcbn1cclxuIl19
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC1yZXNwb25zZS5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rvb2hib3Qvc3JjL2xpYi9hcHAvY2hhdC9tb2RlbC9jaGF0LXJlc3BvbnNlLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIENoYXRSZXNwb25zZSB7XHJcbiAgaWQ6IHN0cmluZztcclxuICBjb250ZW50OiBzdHJpbmc7XHJcbiAgY3JlYXRlZF9hdDogc3RyaW5nO1xyXG4gIGlzQ29tcGxldGU6IGJvb2xlYW47XHJcbiAgc291cmNlczogYW55W107XHJcbiAgZXJyb3I/OiBhbnk7XHJcbiAgcmVzcG9uc2VfaWQ/OiBzdHJpbmc7XHJcbn1cclxuIl19
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC1zZXNzaW9uLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZG9vaGJvdC9zcmMvbGliL2FwcC9jaGF0L21vZGVsL2NoYXQtc2Vzc2lvbi5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTWVzc2FnZSB9IGZyb20gJy4uLy4uLy4uL2NvcmUvbW9kZWxzL21lc3NhZ2UnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBDaGF0U2Vzc2lvbiB7XHJcbiAgaWQ6IHN0cmluZztcclxuICB0aW1lc3RhbXA6IERhdGU7XHJcbiAgdGl0bGU6IHN0cmluZzsgLy8gQXV0by1nZW5lcmF0ZWQgZnJvbSBmaXJzdCBtZXNzYWdlXHJcbiAgbWVzc2FnZXM6IE1lc3NhZ2VbXTtcclxuICB1c2VySWQ6IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBDaGF0U2Vzc2lvbkdyb3VwIHtcclxuICBsYWJlbDogc3RyaW5nO1xyXG4gIHNlc3Npb25zOiBDaGF0U2Vzc2lvbltdO1xyXG59XHJcbiJdfQ==
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC1zdHJlYW0tbWVzc2FnZS5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rvb2hib3Qvc3JjL2xpYi9hcHAvY2hhdC9tb2RlbC9jaGF0LXN0cmVhbS1tZXNzYWdlLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNZXNzYWdlUm9sZSB9IGZyb20gJy4uLy4uLy4uL2NvcmUvdHlwZXMvbWVzc2FnZS1yb2xlLnR5cGUnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBDaGF0U3RyZWFtTWVzc2FnZSB7XHJcbiAgcm9sZTogTWVzc2FnZVJvbGU7XHJcbiAgY29udGVudDogc3RyaW5nO1xyXG59XHJcbiJdfQ==
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC1zdHJlYW0tcmVzcG9uc2UubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kb29oYm90L3NyYy9saWIvYXBwL2NoYXQvbW9kZWwvY2hhdC1zdHJlYW0tcmVzcG9uc2UubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYXRTdHJlYW0gfSBmcm9tICcuLi8uLi8uLi9jb3JlL3R5cGVzL2NoYXQtc3RyZWFtLnR5cGUnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBDaGF0U3RyZWFtUmVzcG9uc2Uge1xyXG4gIGlkOiBzdHJpbmc7XHJcbiAgdHlwZTogQ2hhdFN0cmVhbTtcclxuICBjb250ZW50OiBzdHJpbmc7XHJcbiAgZXJyb3I/OiBhbnk7XHJcbiAgY3JlYXRlZF9hdDogc3RyaW5nO1xyXG4gIC8vIGlzQ29tcGxldGU6IGJvb2xlYW47XHJcbiAgc291cmNlczogYW55W107XHJcbiAgcmVzcG9uc2VfaWQ/OiBzdHJpbmc7XHJcbn1cclxuIl19
|
|
@@ -1,61 +0,0 @@
|
|
|
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
|
|
@@ -1,50 +0,0 @@
|
|
|
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==
|