@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,122 +0,0 @@
|
|
|
1
|
-
import { Component, Input, Output, EventEmitter, inject, ChangeDetectorRef } from '@angular/core';
|
|
2
|
-
import { CommonModule } from '@angular/common';
|
|
3
|
-
import { MatIconModule } from '@angular/material/icon';
|
|
4
|
-
import { MatButtonModule } from '@angular/material/button';
|
|
5
|
-
import { MatTooltipModule } from '@angular/material/tooltip';
|
|
6
|
-
import { MatMenuModule } from '@angular/material/menu';
|
|
7
|
-
import { DialogService } from '../../../../shared/dialog/dialog.service';
|
|
8
|
-
import { AuthService } from '../../../../core/auth/auth.service';
|
|
9
|
-
import * as i0 from "@angular/core";
|
|
10
|
-
import * as i1 from "@angular/material/icon";
|
|
11
|
-
import * as i2 from "@angular/material/button";
|
|
12
|
-
import * as i3 from "@angular/material/tooltip";
|
|
13
|
-
import * as i4 from "@angular/material/menu";
|
|
14
|
-
export class AccountSectionComponent {
|
|
15
|
-
constructor() {
|
|
16
|
-
this.dialogService = inject(DialogService);
|
|
17
|
-
this.authService = inject(AuthService);
|
|
18
|
-
this.cd = inject(ChangeDetectorRef);
|
|
19
|
-
this.organizationId = '';
|
|
20
|
-
this.isCopied = false;
|
|
21
|
-
this.onDeleteAllHistory = new EventEmitter();
|
|
22
|
-
this.onLogoutAll = new EventEmitter();
|
|
23
|
-
this.onLogoutSession = new EventEmitter();
|
|
24
|
-
this.onDeleteAccount = new EventEmitter();
|
|
25
|
-
this.sessions = [
|
|
26
|
-
{
|
|
27
|
-
id: 'session-1',
|
|
28
|
-
device: 'Chrome (Windows)',
|
|
29
|
-
location: 'Kathmandu, Bagmati Province, NP',
|
|
30
|
-
created: 'Jan 9, 2026, 9:21 AM',
|
|
31
|
-
updated: 'Jan 9, 2026, 9:21 AM',
|
|
32
|
-
isCurrent: true
|
|
33
|
-
}
|
|
34
|
-
];
|
|
35
|
-
}
|
|
36
|
-
ngOnInit() {
|
|
37
|
-
if (!this.organizationId) {
|
|
38
|
-
this.organizationId = this.authService.getOrganizationId() || '';
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
copyOrgId() {
|
|
42
|
-
const orgId = this.authService.getOrganizationId();
|
|
43
|
-
if (orgId) {
|
|
44
|
-
navigator.clipboard.writeText(orgId);
|
|
45
|
-
this.isCopied = true;
|
|
46
|
-
this.cd.detectChanges();
|
|
47
|
-
setTimeout(() => {
|
|
48
|
-
this.isCopied = false;
|
|
49
|
-
this.cd.detectChanges();
|
|
50
|
-
}, 800);
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
confirmLogoutAll() {
|
|
54
|
-
this.dialogService.open({
|
|
55
|
-
title: 'Log out of all devices',
|
|
56
|
-
message: 'Are you sure you want to log out of all active devices? You will be signed out everywhere except here.',
|
|
57
|
-
confirmText: 'Log out all',
|
|
58
|
-
cancelText: 'Cancel',
|
|
59
|
-
confirmButtonColor: 'warn',
|
|
60
|
-
icon: 'logout'
|
|
61
|
-
}).subscribe(confirmed => {
|
|
62
|
-
if (confirmed)
|
|
63
|
-
this.onLogoutAll.emit();
|
|
64
|
-
});
|
|
65
|
-
}
|
|
66
|
-
confirmLogoutSession(session) {
|
|
67
|
-
this.dialogService.open({
|
|
68
|
-
title: 'Log out of session',
|
|
69
|
-
message: `Are you sure you want to log out from ${session.device} at ${session.location}?`,
|
|
70
|
-
confirmText: 'Log out',
|
|
71
|
-
cancelText: 'Cancel',
|
|
72
|
-
confirmButtonColor: 'warn',
|
|
73
|
-
icon: 'logout'
|
|
74
|
-
}).subscribe(confirmed => {
|
|
75
|
-
if (confirmed)
|
|
76
|
-
this.onLogoutSession.emit(session.id);
|
|
77
|
-
});
|
|
78
|
-
}
|
|
79
|
-
confirmDeleteAllHistory() {
|
|
80
|
-
this.dialogService.open({
|
|
81
|
-
title: 'Clear All History',
|
|
82
|
-
message: 'Are you sure you want to delete all chat history? This action cannot be undone.',
|
|
83
|
-
confirmText: 'Clear All',
|
|
84
|
-
cancelText: 'Cancel',
|
|
85
|
-
confirmButtonColor: 'warn',
|
|
86
|
-
icon: 'delete_sweep'
|
|
87
|
-
}).subscribe(confirmed => {
|
|
88
|
-
if (confirmed)
|
|
89
|
-
this.onDeleteAllHistory.emit();
|
|
90
|
-
});
|
|
91
|
-
}
|
|
92
|
-
confirmDeleteAccount() {
|
|
93
|
-
this.dialogService.open({
|
|
94
|
-
title: 'Delete Your Account',
|
|
95
|
-
message: 'This will permanently delete your account and all associated data. This action is irreversible. Are you absolutely sure?',
|
|
96
|
-
confirmText: 'Delete Account',
|
|
97
|
-
cancelText: 'Cancel',
|
|
98
|
-
confirmButtonColor: 'warn',
|
|
99
|
-
icon: 'person_remove'
|
|
100
|
-
}).subscribe(confirmed => {
|
|
101
|
-
if (confirmed)
|
|
102
|
-
this.onDeleteAccount.emit();
|
|
103
|
-
});
|
|
104
|
-
}
|
|
105
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AccountSectionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
106
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: AccountSectionComponent, isStandalone: true, selector: "app-account-section", inputs: { organizationId: "organizationId" }, outputs: { onDeleteAllHistory: "onDeleteAllHistory", onLogoutAll: "onLogoutAll", onLogoutSession: "onLogoutSession", onDeleteAccount: "onDeleteAccount" }, ngImport: i0, template: "<div class=\"account-container\">\r\n <div class=\"settings-list\">\r\n\r\n <!-- Delete all chats row -->\r\n <div class=\"settings-row\">\r\n <div class=\"row-info\">\r\n <span class=\"row-label\">Delete all chats</span>\r\n </div>\r\n <div class=\"row-action\">\r\n <button class=\"pill-btn danger\" (click)=\"confirmDeleteAllHistory()\">Delete all</button>\r\n </div>\r\n </div>\r\n\r\n <!-- Export data row -->\r\n <div class=\"settings-row\">\r\n <div class=\"row-info\">\r\n <span class=\"row-label\">Export data</span>\r\n </div>\r\n <div class=\"row-action\">\r\n <button class=\"pill-btn\">Export</button>\r\n </div>\r\n </div>\r\n\r\n <!-- Org ID row -->\r\n <div class=\"settings-row\">\r\n <div class=\"row-info\">\r\n <span class=\"row-label\">Organization ID</span>\r\n <span class=\"row-sublabel\">Used for workspace identification</span>\r\n </div>\r\n <div class=\"row-action\">\r\n <code class=\"org-id\">{{ organizationId }}</code>\r\n <button mat-icon-button (click)=\"copyOrgId()\" [matTooltip]=\"isCopied ? 'Copied!' : 'Copy ID'\">\r\n <mat-icon>{{ isCopied ? 'check' : 'content_copy' }}</mat-icon>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <!-- Logout all row -->\r\n <div class=\"settings-row\">\r\n <div class=\"row-info\">\r\n <span class=\"row-label\">Global Logout</span>\r\n <span class=\"row-sublabel\">Sign out from all active devices</span>\r\n </div>\r\n <div class=\"row-action\">\r\n <button class=\"pill-btn danger\" (click)=\"confirmLogoutAll()\">Logout all</button>\r\n </div>\r\n </div>\r\n\r\n <!-- Delete account row -->\r\n <div class=\"settings-row no-border\">\r\n <div class=\"row-info\">\r\n <span class=\"row-label danger-text\">Delete account</span>\r\n <span class=\"row-sublabel\">Permanently delete your profile and data</span>\r\n </div>\r\n <div class=\"row-action\">\r\n <button class=\"pill-btn danger-filled\" (click)=\"confirmDeleteAccount()\">Delete Account</button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Active Sessions Section -->\r\n <div class=\"sessions-section\">\r\n <h3>Active sessions</h3>\r\n <div class=\"sessions-table-container\">\r\n <table class=\"sessions-table\">\r\n <thead>\r\n <tr>\r\n <th>Device</th>\r\n <th>Location</th>\r\n <th>Created</th>\r\n <th>Updated</th>\r\n <th></th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n @for (session of sessions; track session.id) {\r\n <tr [class.current]=\"session.isCurrent\">\r\n <td>\r\n <div class=\"device-cell\">\r\n <mat-icon>{{ session.device.includes('Windows') ? 'laptop' : 'smartphone' }}</mat-icon>\r\n <div class=\"device-info\">\r\n <span class=\"device-name\">{{ session.device }}</span>\r\n @if (session.isCurrent) {\r\n <span class=\"current-badge\">Current</span>\r\n }\r\n </div>\r\n </div>\r\n </td>\r\n <td>{{ session.location }}</td>\r\n <td>{{ session.created }}</td>\r\n <td>{{ session.updated }}</td>\r\n <td class=\"action-cell\">\r\n @if (!session.isCurrent) {\r\n <button mat-icon-button [matMenuTriggerFor]=\"sessionMenu\">\r\n <mat-icon>more_vert</mat-icon>\r\n </button>\r\n <mat-menu #sessionMenu=\"matMenu\" xPosition=\"before\">\r\n <button mat-menu-item (click)=\"confirmLogoutSession(session)\">\r\n <mat-icon>logout</mat-icon>\r\n <span>Log out of session</span>\r\n </button>\r\n </mat-menu>\r\n }\r\n </td>\r\n </tr>\r\n }\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n</div>", styles: [".account-container{padding:32px 48px;display:flex;flex-direction:column;gap:48px;animation:fadeIn .3s ease-out}.settings-list{display:flex;flex-direction:column;background:rgba(var(--black-rgb),.02);border-radius:16px;border:1px solid rgba(var(--black-rgb),.05);overflow:hidden}.settings-row{display:flex;align-items:center;justify-content:space-between;padding:20px 24px;border-bottom:1px solid rgba(var(--black-rgb),.05);transition:background .2s ease}.settings-row.clickable{cursor:pointer}.settings-row.clickable:hover{background:rgba(var(--black-rgb),.04)}.settings-row.no-border{border-bottom:none}.settings-row .row-info{display:flex;flex-direction:column;gap:4px}.settings-row .row-info .row-label{font-size:1.05rem;font-weight:500;color:var(--text-color)}.settings-row .row-info .row-sublabel{font-size:.9rem;color:var(--secondary-text-color)}.settings-row .row-info .danger-text{color:var(--warn-color)}.settings-row .row-action{display:flex;align-items:center;gap:16px}.settings-row .row-action .status-text{font-size:.95rem;color:var(--secondary-text-color)}.settings-row .row-action .chevron{color:var(--secondary-text-color);font-size:20px}.settings-row .row-action .org-id{font-family:Space Mono,monospace;padding:4px 12px;background:rgba(var(--primary-rgb),.05);border-radius:6px;font-size:.9rem;color:var(--primary-color)}.pill-btn{background:none;border:1.5px solid rgba(var(--black-rgb),.15);border-radius:100px;padding:8px 24px;font-size:.9rem;font-weight:600;color:var(--text-color);cursor:pointer;transition:all .2s ease}.pill-btn:hover{background:rgba(var(--black-rgb),.05);border-color:rgba(var(--black-rgb),.3)}.pill-btn.danger{color:var(--warn-color);border-color:rgba(var(--warn-rgb),.3)}.pill-btn.danger:hover{background:rgba(var(--warn-rgb),.05);border-color:var(--warn-color)}.pill-btn.danger-filled{background:transparent;color:var(--text-color);border:var(--red)}.pill-btn.danger-filled:hover{background:var(--red);box-shadow:0 4px 12px rgba(var(--warn-rgb),.2)}.sessions-section{display:flex;flex-direction:column;gap:20px}.sessions-section h3{margin:0;font-size:1.25rem;font-weight:700;color:var(--text-color)}.sessions-table-container{border:1px solid rgba(var(--black-rgb),.05);border-radius:16px;background:rgba(var(--black-rgb),.01);overflow:hidden}.sessions-table{width:100%;border-collapse:collapse;text-align:left}.sessions-table th{padding:16px 20px;background:rgba(var(--black-rgb),.03);font-size:.8rem;font-weight:700;color:var(--secondary-text-color);text-transform:uppercase;letter-spacing:.05em}.sessions-table td{padding:20px;border-top:1px solid rgba(var(--black-rgb),.05);font-size:.95rem;color:var(--text-color)}.sessions-table tr.current{background:rgba(var(--primary-rgb),.03)}.sessions-table .action-cell{text-align:right;padding-right:12px;color:var(--secondary-text-color)}.device-cell{display:flex;align-items:center;gap:16px}.device-cell mat-icon{font-size:24px;color:var(--secondary-text-color)}.device-cell .device-info{display:flex;flex-direction:column;gap:4px}.device-cell .device-info .device-name{font-weight:600}.device-cell .device-info .current-badge{font-size:.7rem;color:var(--primary-color);background:rgba(var(--primary-rgb),.1);padding:2px 8px;border-radius:4px;width:-moz-fit-content;width:fit-content;font-weight:700;text-transform:uppercase}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i3.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i4.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i4.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i4.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }] }); }
|
|
107
|
-
}
|
|
108
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AccountSectionComponent, decorators: [{
|
|
109
|
-
type: Component,
|
|
110
|
-
args: [{ selector: 'app-account-section', standalone: true, imports: [CommonModule, MatIconModule, MatButtonModule, MatTooltipModule, MatMenuModule], template: "<div class=\"account-container\">\r\n <div class=\"settings-list\">\r\n\r\n <!-- Delete all chats row -->\r\n <div class=\"settings-row\">\r\n <div class=\"row-info\">\r\n <span class=\"row-label\">Delete all chats</span>\r\n </div>\r\n <div class=\"row-action\">\r\n <button class=\"pill-btn danger\" (click)=\"confirmDeleteAllHistory()\">Delete all</button>\r\n </div>\r\n </div>\r\n\r\n <!-- Export data row -->\r\n <div class=\"settings-row\">\r\n <div class=\"row-info\">\r\n <span class=\"row-label\">Export data</span>\r\n </div>\r\n <div class=\"row-action\">\r\n <button class=\"pill-btn\">Export</button>\r\n </div>\r\n </div>\r\n\r\n <!-- Org ID row -->\r\n <div class=\"settings-row\">\r\n <div class=\"row-info\">\r\n <span class=\"row-label\">Organization ID</span>\r\n <span class=\"row-sublabel\">Used for workspace identification</span>\r\n </div>\r\n <div class=\"row-action\">\r\n <code class=\"org-id\">{{ organizationId }}</code>\r\n <button mat-icon-button (click)=\"copyOrgId()\" [matTooltip]=\"isCopied ? 'Copied!' : 'Copy ID'\">\r\n <mat-icon>{{ isCopied ? 'check' : 'content_copy' }}</mat-icon>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <!-- Logout all row -->\r\n <div class=\"settings-row\">\r\n <div class=\"row-info\">\r\n <span class=\"row-label\">Global Logout</span>\r\n <span class=\"row-sublabel\">Sign out from all active devices</span>\r\n </div>\r\n <div class=\"row-action\">\r\n <button class=\"pill-btn danger\" (click)=\"confirmLogoutAll()\">Logout all</button>\r\n </div>\r\n </div>\r\n\r\n <!-- Delete account row -->\r\n <div class=\"settings-row no-border\">\r\n <div class=\"row-info\">\r\n <span class=\"row-label danger-text\">Delete account</span>\r\n <span class=\"row-sublabel\">Permanently delete your profile and data</span>\r\n </div>\r\n <div class=\"row-action\">\r\n <button class=\"pill-btn danger-filled\" (click)=\"confirmDeleteAccount()\">Delete Account</button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Active Sessions Section -->\r\n <div class=\"sessions-section\">\r\n <h3>Active sessions</h3>\r\n <div class=\"sessions-table-container\">\r\n <table class=\"sessions-table\">\r\n <thead>\r\n <tr>\r\n <th>Device</th>\r\n <th>Location</th>\r\n <th>Created</th>\r\n <th>Updated</th>\r\n <th></th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n @for (session of sessions; track session.id) {\r\n <tr [class.current]=\"session.isCurrent\">\r\n <td>\r\n <div class=\"device-cell\">\r\n <mat-icon>{{ session.device.includes('Windows') ? 'laptop' : 'smartphone' }}</mat-icon>\r\n <div class=\"device-info\">\r\n <span class=\"device-name\">{{ session.device }}</span>\r\n @if (session.isCurrent) {\r\n <span class=\"current-badge\">Current</span>\r\n }\r\n </div>\r\n </div>\r\n </td>\r\n <td>{{ session.location }}</td>\r\n <td>{{ session.created }}</td>\r\n <td>{{ session.updated }}</td>\r\n <td class=\"action-cell\">\r\n @if (!session.isCurrent) {\r\n <button mat-icon-button [matMenuTriggerFor]=\"sessionMenu\">\r\n <mat-icon>more_vert</mat-icon>\r\n </button>\r\n <mat-menu #sessionMenu=\"matMenu\" xPosition=\"before\">\r\n <button mat-menu-item (click)=\"confirmLogoutSession(session)\">\r\n <mat-icon>logout</mat-icon>\r\n <span>Log out of session</span>\r\n </button>\r\n </mat-menu>\r\n }\r\n </td>\r\n </tr>\r\n }\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n</div>", styles: [".account-container{padding:32px 48px;display:flex;flex-direction:column;gap:48px;animation:fadeIn .3s ease-out}.settings-list{display:flex;flex-direction:column;background:rgba(var(--black-rgb),.02);border-radius:16px;border:1px solid rgba(var(--black-rgb),.05);overflow:hidden}.settings-row{display:flex;align-items:center;justify-content:space-between;padding:20px 24px;border-bottom:1px solid rgba(var(--black-rgb),.05);transition:background .2s ease}.settings-row.clickable{cursor:pointer}.settings-row.clickable:hover{background:rgba(var(--black-rgb),.04)}.settings-row.no-border{border-bottom:none}.settings-row .row-info{display:flex;flex-direction:column;gap:4px}.settings-row .row-info .row-label{font-size:1.05rem;font-weight:500;color:var(--text-color)}.settings-row .row-info .row-sublabel{font-size:.9rem;color:var(--secondary-text-color)}.settings-row .row-info .danger-text{color:var(--warn-color)}.settings-row .row-action{display:flex;align-items:center;gap:16px}.settings-row .row-action .status-text{font-size:.95rem;color:var(--secondary-text-color)}.settings-row .row-action .chevron{color:var(--secondary-text-color);font-size:20px}.settings-row .row-action .org-id{font-family:Space Mono,monospace;padding:4px 12px;background:rgba(var(--primary-rgb),.05);border-radius:6px;font-size:.9rem;color:var(--primary-color)}.pill-btn{background:none;border:1.5px solid rgba(var(--black-rgb),.15);border-radius:100px;padding:8px 24px;font-size:.9rem;font-weight:600;color:var(--text-color);cursor:pointer;transition:all .2s ease}.pill-btn:hover{background:rgba(var(--black-rgb),.05);border-color:rgba(var(--black-rgb),.3)}.pill-btn.danger{color:var(--warn-color);border-color:rgba(var(--warn-rgb),.3)}.pill-btn.danger:hover{background:rgba(var(--warn-rgb),.05);border-color:var(--warn-color)}.pill-btn.danger-filled{background:transparent;color:var(--text-color);border:var(--red)}.pill-btn.danger-filled:hover{background:var(--red);box-shadow:0 4px 12px rgba(var(--warn-rgb),.2)}.sessions-section{display:flex;flex-direction:column;gap:20px}.sessions-section h3{margin:0;font-size:1.25rem;font-weight:700;color:var(--text-color)}.sessions-table-container{border:1px solid rgba(var(--black-rgb),.05);border-radius:16px;background:rgba(var(--black-rgb),.01);overflow:hidden}.sessions-table{width:100%;border-collapse:collapse;text-align:left}.sessions-table th{padding:16px 20px;background:rgba(var(--black-rgb),.03);font-size:.8rem;font-weight:700;color:var(--secondary-text-color);text-transform:uppercase;letter-spacing:.05em}.sessions-table td{padding:20px;border-top:1px solid rgba(var(--black-rgb),.05);font-size:.95rem;color:var(--text-color)}.sessions-table tr.current{background:rgba(var(--primary-rgb),.03)}.sessions-table .action-cell{text-align:right;padding-right:12px;color:var(--secondary-text-color)}.device-cell{display:flex;align-items:center;gap:16px}.device-cell mat-icon{font-size:24px;color:var(--secondary-text-color)}.device-cell .device-info{display:flex;flex-direction:column;gap:4px}.device-cell .device-info .device-name{font-weight:600}.device-cell .device-info .current-badge{font-size:.7rem;color:var(--primary-color);background:rgba(var(--primary-rgb),.1);padding:2px 8px;border-radius:4px;width:-moz-fit-content;width:fit-content;font-weight:700;text-transform:uppercase}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}\n"] }]
|
|
111
|
-
}], propDecorators: { organizationId: [{
|
|
112
|
-
type: Input
|
|
113
|
-
}], onDeleteAllHistory: [{
|
|
114
|
-
type: Output
|
|
115
|
-
}], onLogoutAll: [{
|
|
116
|
-
type: Output
|
|
117
|
-
}], onLogoutSession: [{
|
|
118
|
-
type: Output
|
|
119
|
-
}], onDeleteAccount: [{
|
|
120
|
-
type: Output
|
|
121
|
-
}] } });
|
|
122
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3VudC1zZWN0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rvb2hib3Qvc3JjL2xpYi9hcHAvcGVyc29uYWxpemF0aW9uL3NlY3Rpb25zL2FjY291bnQvYWNjb3VudC1zZWN0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rvb2hib3Qvc3JjL2xpYi9hcHAvcGVyc29uYWxpemF0aW9uL3NlY3Rpb25zL2FjY291bnQvYWNjb3VudC1zZWN0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xHLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzdELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDekUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG9DQUFvQyxDQUFDOzs7Ozs7QUFrQmpFLE1BQU0sT0FBTyx1QkFBdUI7SUFQcEM7UUFRWSxrQkFBYSxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUN0QyxnQkFBVyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNsQyxPQUFFLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFFOUIsbUJBQWMsR0FBVyxFQUFFLENBQUM7UUFDOUIsYUFBUSxHQUFHLEtBQUssQ0FBQztRQVFkLHVCQUFrQixHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFDOUMsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBQ3ZDLG9CQUFlLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUM3QyxvQkFBZSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFFOUMsYUFBUSxHQUFvQjtZQUMvQjtnQkFDSSxFQUFFLEVBQUUsV0FBVztnQkFDZixNQUFNLEVBQUUsa0JBQWtCO2dCQUMxQixRQUFRLEVBQUUsaUNBQWlDO2dCQUMzQyxPQUFPLEVBQUUsc0JBQXNCO2dCQUMvQixPQUFPLEVBQUUsc0JBQXNCO2dCQUMvQixTQUFTLEVBQUUsSUFBSTthQUNsQjtTQUNKLENBQUM7S0FtRUw7SUF2RkcsUUFBUTtRQUNKLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFO1lBQ3RCLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsQ0FBQztTQUNwRTtJQUNMLENBQUM7SUFrQkQsU0FBUztRQUNMLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUNuRCxJQUFJLEtBQUssRUFBRTtZQUNQLFNBQVMsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3JDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLENBQUM7WUFFeEIsVUFBVSxDQUFDLEdBQUcsRUFBRTtnQkFDWixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztnQkFDdEIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUM1QixDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7U0FDWDtJQUNMLENBQUM7SUFFRCxnQkFBZ0I7UUFDWixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQztZQUNwQixLQUFLLEVBQUUsd0JBQXdCO1lBQy9CLE9BQU8sRUFBRSx3R0FBd0c7WUFDakgsV0FBVyxFQUFFLGFBQWE7WUFDMUIsVUFBVSxFQUFFLFFBQVE7WUFDcEIsa0JBQWtCLEVBQUUsTUFBTTtZQUMxQixJQUFJLEVBQUUsUUFBUTtTQUNqQixDQUFDLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxFQUFFO1lBQ3JCLElBQUksU0FBUztnQkFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzNDLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELG9CQUFvQixDQUFDLE9BQXNCO1FBQ3ZDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDO1lBQ3BCLEtBQUssRUFBRSxvQkFBb0I7WUFDM0IsT0FBTyxFQUFFLHlDQUF5QyxPQUFPLENBQUMsTUFBTSxPQUFPLE9BQU8sQ0FBQyxRQUFRLEdBQUc7WUFDMUYsV0FBVyxFQUFFLFNBQVM7WUFDdEIsVUFBVSxFQUFFLFFBQVE7WUFDcEIsa0JBQWtCLEVBQUUsTUFBTTtZQUMxQixJQUFJLEVBQUUsUUFBUTtTQUNqQixDQUFDLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxFQUFFO1lBQ3JCLElBQUksU0FBUztnQkFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDekQsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsdUJBQXVCO1FBQ25CLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDO1lBQ3BCLEtBQUssRUFBRSxtQkFBbUI7WUFDMUIsT0FBTyxFQUFFLGlGQUFpRjtZQUMxRixXQUFXLEVBQUUsV0FBVztZQUN4QixVQUFVLEVBQUUsUUFBUTtZQUNwQixrQkFBa0IsRUFBRSxNQUFNO1lBQzFCLElBQUksRUFBRSxjQUFjO1NBQ3ZCLENBQUMsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLEVBQUU7WUFDckIsSUFBSSxTQUFTO2dCQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNsRCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxvQkFBb0I7UUFDaEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUM7WUFDcEIsS0FBSyxFQUFFLHFCQUFxQjtZQUM1QixPQUFPLEVBQUUsMEhBQTBIO1lBQ25JLFdBQVcsRUFBRSxnQkFBZ0I7WUFDN0IsVUFBVSxFQUFFLFFBQVE7WUFDcEIsa0JBQWtCLEVBQUUsTUFBTTtZQUMxQixJQUFJLEVBQUUsZUFBZTtTQUN4QixDQUFDLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxFQUFFO1lBQ3JCLElBQUksU0FBUztnQkFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQy9DLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzsrR0E5RlEsdUJBQXVCO21HQUF2Qix1QkFBdUIsd1JDekJwQyx5NkpBOEdNLGc1R0R6RlEsWUFBWSw4QkFBRSxhQUFhLG1MQUFFLGVBQWUsMklBQUUsZ0JBQWdCLDRUQUFFLGFBQWE7OzRGQUk5RSx1QkFBdUI7a0JBUG5DLFNBQVM7K0JBQ0kscUJBQXFCLGNBQ25CLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUFFLGFBQWEsQ0FBQzs4QkFTL0UsY0FBYztzQkFBdEIsS0FBSztnQkFTSSxrQkFBa0I7c0JBQTNCLE1BQU07Z0JBQ0csV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxlQUFlO3NCQUF4QixNQUFNO2dCQUNHLGVBQWU7c0JBQXhCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgaW5qZWN0LCBDaGFuZ2VEZXRlY3RvclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XHJcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XHJcbmltcG9ydCB7IE1hdFRvb2x0aXBNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwJztcclxuaW1wb3J0IHsgTWF0TWVudU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL21lbnUnO1xyXG5pbXBvcnQgeyBEaWFsb2dTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2hhcmVkL2RpYWxvZy9kaWFsb2cuc2VydmljZSc7XHJcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vY29yZS9hdXRoL2F1dGguc2VydmljZSc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEFjdGl2ZVNlc3Npb24ge1xyXG4gICAgaWQ6IHN0cmluZztcclxuICAgIGRldmljZTogc3RyaW5nO1xyXG4gICAgbG9jYXRpb246IHN0cmluZztcclxuICAgIGNyZWF0ZWQ6IHN0cmluZztcclxuICAgIHVwZGF0ZWQ6IHN0cmluZztcclxuICAgIGlzQ3VycmVudD86IGJvb2xlYW47XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdhcHAtYWNjb3VudC1zZWN0aW9uJyxcclxuICAgIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBNYXRJY29uTW9kdWxlLCBNYXRCdXR0b25Nb2R1bGUsIE1hdFRvb2x0aXBNb2R1bGUsIE1hdE1lbnVNb2R1bGVdLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL2FjY291bnQtc2VjdGlvbi5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi9hY2NvdW50LXNlY3Rpb24uY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQWNjb3VudFNlY3Rpb25Db21wb25lbnQge1xyXG4gICAgcHJpdmF0ZSBkaWFsb2dTZXJ2aWNlID0gaW5qZWN0KERpYWxvZ1NlcnZpY2UpO1xyXG4gICAgcHJpdmF0ZSBhdXRoU2VydmljZSA9IGluamVjdChBdXRoU2VydmljZSk7XHJcbiAgICBwcml2YXRlIGNkID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcclxuXHJcbiAgICBASW5wdXQoKSBvcmdhbml6YXRpb25JZDogc3RyaW5nID0gJyc7XHJcbiAgICBwdWJsaWMgaXNDb3BpZWQgPSBmYWxzZTtcclxuXHJcbiAgICBuZ09uSW5pdCgpIHtcclxuICAgICAgICBpZiAoIXRoaXMub3JnYW5pemF0aW9uSWQpIHtcclxuICAgICAgICAgICAgdGhpcy5vcmdhbml6YXRpb25JZCA9IHRoaXMuYXV0aFNlcnZpY2UuZ2V0T3JnYW5pemF0aW9uSWQoKSB8fCAnJztcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgQE91dHB1dCgpIG9uRGVsZXRlQWxsSGlzdG9yeSA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuICAgIEBPdXRwdXQoKSBvbkxvZ291dEFsbCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuICAgIEBPdXRwdXQoKSBvbkxvZ291dFNlc3Npb24gPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcclxuICAgIEBPdXRwdXQoKSBvbkRlbGV0ZUFjY291bnQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcblxyXG4gICAgcHVibGljIHNlc3Npb25zOiBBY3RpdmVTZXNzaW9uW10gPSBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICBpZDogJ3Nlc3Npb24tMScsXHJcbiAgICAgICAgICAgIGRldmljZTogJ0Nocm9tZSAoV2luZG93cyknLFxyXG4gICAgICAgICAgICBsb2NhdGlvbjogJ0thdGhtYW5kdSwgQmFnbWF0aSBQcm92aW5jZSwgTlAnLFxyXG4gICAgICAgICAgICBjcmVhdGVkOiAnSmFuIDksIDIwMjYsIDk6MjEgQU0nLFxyXG4gICAgICAgICAgICB1cGRhdGVkOiAnSmFuIDksIDIwMjYsIDk6MjEgQU0nLFxyXG4gICAgICAgICAgICBpc0N1cnJlbnQ6IHRydWVcclxuICAgICAgICB9XHJcbiAgICBdO1xyXG5cclxuICAgIGNvcHlPcmdJZCgpIHtcclxuICAgICAgICBjb25zdCBvcmdJZCA9IHRoaXMuYXV0aFNlcnZpY2UuZ2V0T3JnYW5pemF0aW9uSWQoKTtcclxuICAgICAgICBpZiAob3JnSWQpIHtcclxuICAgICAgICAgICAgbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQob3JnSWQpO1xyXG4gICAgICAgICAgICB0aGlzLmlzQ29waWVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcblxyXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuaXNDb3BpZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICB9LCA4MDApO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBjb25maXJtTG9nb3V0QWxsKCkge1xyXG4gICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5vcGVuKHtcclxuICAgICAgICAgICAgdGl0bGU6ICdMb2cgb3V0IG9mIGFsbCBkZXZpY2VzJyxcclxuICAgICAgICAgICAgbWVzc2FnZTogJ0FyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBsb2cgb3V0IG9mIGFsbCBhY3RpdmUgZGV2aWNlcz8gWW91IHdpbGwgYmUgc2lnbmVkIG91dCBldmVyeXdoZXJlIGV4Y2VwdCBoZXJlLicsXHJcbiAgICAgICAgICAgIGNvbmZpcm1UZXh0OiAnTG9nIG91dCBhbGwnLFxyXG4gICAgICAgICAgICBjYW5jZWxUZXh0OiAnQ2FuY2VsJyxcclxuICAgICAgICAgICAgY29uZmlybUJ1dHRvbkNvbG9yOiAnd2FybicsXHJcbiAgICAgICAgICAgIGljb246ICdsb2dvdXQnXHJcbiAgICAgICAgfSkuc3Vic2NyaWJlKGNvbmZpcm1lZCA9PiB7XHJcbiAgICAgICAgICAgIGlmIChjb25maXJtZWQpIHRoaXMub25Mb2dvdXRBbGwuZW1pdCgpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbmZpcm1Mb2dvdXRTZXNzaW9uKHNlc3Npb246IEFjdGl2ZVNlc3Npb24pIHtcclxuICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2Uub3Blbih7XHJcbiAgICAgICAgICAgIHRpdGxlOiAnTG9nIG91dCBvZiBzZXNzaW9uJyxcclxuICAgICAgICAgICAgbWVzc2FnZTogYEFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBsb2cgb3V0IGZyb20gJHtzZXNzaW9uLmRldmljZX0gYXQgJHtzZXNzaW9uLmxvY2F0aW9ufT9gLFxyXG4gICAgICAgICAgICBjb25maXJtVGV4dDogJ0xvZyBvdXQnLFxyXG4gICAgICAgICAgICBjYW5jZWxUZXh0OiAnQ2FuY2VsJyxcclxuICAgICAgICAgICAgY29uZmlybUJ1dHRvbkNvbG9yOiAnd2FybicsXHJcbiAgICAgICAgICAgIGljb246ICdsb2dvdXQnXHJcbiAgICAgICAgfSkuc3Vic2NyaWJlKGNvbmZpcm1lZCA9PiB7XHJcbiAgICAgICAgICAgIGlmIChjb25maXJtZWQpIHRoaXMub25Mb2dvdXRTZXNzaW9uLmVtaXQoc2Vzc2lvbi5pZCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uZmlybURlbGV0ZUFsbEhpc3RvcnkoKSB7XHJcbiAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLm9wZW4oe1xyXG4gICAgICAgICAgICB0aXRsZTogJ0NsZWFyIEFsbCBIaXN0b3J5JyxcclxuICAgICAgICAgICAgbWVzc2FnZTogJ0FyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBkZWxldGUgYWxsIGNoYXQgaGlzdG9yeT8gVGhpcyBhY3Rpb24gY2Fubm90IGJlIHVuZG9uZS4nLFxyXG4gICAgICAgICAgICBjb25maXJtVGV4dDogJ0NsZWFyIEFsbCcsXHJcbiAgICAgICAgICAgIGNhbmNlbFRleHQ6ICdDYW5jZWwnLFxyXG4gICAgICAgICAgICBjb25maXJtQnV0dG9uQ29sb3I6ICd3YXJuJyxcclxuICAgICAgICAgICAgaWNvbjogJ2RlbGV0ZV9zd2VlcCdcclxuICAgICAgICB9KS5zdWJzY3JpYmUoY29uZmlybWVkID0+IHtcclxuICAgICAgICAgICAgaWYgKGNvbmZpcm1lZCkgdGhpcy5vbkRlbGV0ZUFsbEhpc3RvcnkuZW1pdCgpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbmZpcm1EZWxldGVBY2NvdW50KCkge1xyXG4gICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5vcGVuKHtcclxuICAgICAgICAgICAgdGl0bGU6ICdEZWxldGUgWW91ciBBY2NvdW50JyxcclxuICAgICAgICAgICAgbWVzc2FnZTogJ1RoaXMgd2lsbCBwZXJtYW5lbnRseSBkZWxldGUgeW91ciBhY2NvdW50IGFuZCBhbGwgYXNzb2NpYXRlZCBkYXRhLiBUaGlzIGFjdGlvbiBpcyBpcnJldmVyc2libGUuIEFyZSB5b3UgYWJzb2x1dGVseSBzdXJlPycsXHJcbiAgICAgICAgICAgIGNvbmZpcm1UZXh0OiAnRGVsZXRlIEFjY291bnQnLFxyXG4gICAgICAgICAgICBjYW5jZWxUZXh0OiAnQ2FuY2VsJyxcclxuICAgICAgICAgICAgY29uZmlybUJ1dHRvbkNvbG9yOiAnd2FybicsXHJcbiAgICAgICAgICAgIGljb246ICdwZXJzb25fcmVtb3ZlJ1xyXG4gICAgICAgIH0pLnN1YnNjcmliZShjb25maXJtZWQgPT4ge1xyXG4gICAgICAgICAgICBpZiAoY29uZmlybWVkKSB0aGlzLm9uRGVsZXRlQWNjb3VudC5lbWl0KCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImFjY291bnQtY29udGFpbmVyXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwic2V0dGluZ3MtbGlzdFwiPlxyXG5cclxuICAgICAgICA8IS0tIERlbGV0ZSBhbGwgY2hhdHMgcm93IC0tPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzZXR0aW5ncy1yb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdy1pbmZvXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInJvdy1sYWJlbFwiPkRlbGV0ZSBhbGwgY2hhdHM8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93LWFjdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInBpbGwtYnRuIGRhbmdlclwiIChjbGljayk9XCJjb25maXJtRGVsZXRlQWxsSGlzdG9yeSgpXCI+RGVsZXRlIGFsbDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPCEtLSBFeHBvcnQgZGF0YSByb3cgLS0+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInNldHRpbmdzLXJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93LWluZm9cIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicm93LWxhYmVsXCI+RXhwb3J0IGRhdGE8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93LWFjdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInBpbGwtYnRuXCI+RXhwb3J0PC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8IS0tIE9yZyBJRCByb3cgLS0+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInNldHRpbmdzLXJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93LWluZm9cIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicm93LWxhYmVsXCI+T3JnYW5pemF0aW9uIElEPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJyb3ctc3VibGFiZWxcIj5Vc2VkIGZvciB3b3Jrc3BhY2UgaWRlbnRpZmljYXRpb248L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93LWFjdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgPGNvZGUgY2xhc3M9XCJvcmctaWRcIj57eyBvcmdhbml6YXRpb25JZCB9fTwvY29kZT5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJjb3B5T3JnSWQoKVwiIFttYXRUb29sdGlwXT1cImlzQ29waWVkID8gJ0NvcGllZCEnIDogJ0NvcHkgSUQnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPnt7IGlzQ29waWVkID8gJ2NoZWNrJyA6ICdjb250ZW50X2NvcHknIH19PC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPCEtLSBMb2dvdXQgYWxsIHJvdyAtLT5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwic2V0dGluZ3Mtcm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3ctaW5mb1wiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJyb3ctbGFiZWxcIj5HbG9iYWwgTG9nb3V0PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJyb3ctc3VibGFiZWxcIj5TaWduIG91dCBmcm9tIGFsbCBhY3RpdmUgZGV2aWNlczwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3ctYWN0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwicGlsbC1idG4gZGFuZ2VyXCIgKGNsaWNrKT1cImNvbmZpcm1Mb2dvdXRBbGwoKVwiPkxvZ291dCBhbGw8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDwhLS0gRGVsZXRlIGFjY291bnQgcm93IC0tPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzZXR0aW5ncy1yb3cgbm8tYm9yZGVyXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3ctaW5mb1wiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJyb3ctbGFiZWwgZGFuZ2VyLXRleHRcIj5EZWxldGUgYWNjb3VudDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicm93LXN1YmxhYmVsXCI+UGVybWFuZW50bHkgZGVsZXRlIHlvdXIgcHJvZmlsZSBhbmQgZGF0YTwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3ctYWN0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwicGlsbC1idG4gZGFuZ2VyLWZpbGxlZFwiIChjbGljayk9XCJjb25maXJtRGVsZXRlQWNjb3VudCgpXCI+RGVsZXRlIEFjY291bnQ8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8IS0tIEFjdGl2ZSBTZXNzaW9ucyBTZWN0aW9uIC0tPlxyXG4gICAgPGRpdiBjbGFzcz1cInNlc3Npb25zLXNlY3Rpb25cIj5cclxuICAgICAgICA8aDM+QWN0aXZlIHNlc3Npb25zPC9oMz5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwic2Vzc2lvbnMtdGFibGUtY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz1cInNlc3Npb25zLXRhYmxlXCI+XHJcbiAgICAgICAgICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGg+RGV2aWNlPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoPkxvY2F0aW9uPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoPkNyZWF0ZWQ8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGg+VXBkYXRlZDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD48L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgICAgICAgICAgPHRib2R5PlxyXG4gICAgICAgICAgICAgICAgICAgIEBmb3IgKHNlc3Npb24gb2Ygc2Vzc2lvbnM7IHRyYWNrIHNlc3Npb24uaWQpIHtcclxuICAgICAgICAgICAgICAgICAgICA8dHIgW2NsYXNzLmN1cnJlbnRdPVwic2Vzc2lvbi5pc0N1cnJlbnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRldmljZS1jZWxsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPnt7IHNlc3Npb24uZGV2aWNlLmluY2x1ZGVzKCdXaW5kb3dzJykgPyAnbGFwdG9wJyA6ICdzbWFydHBob25lJyB9fTwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRldmljZS1pbmZvXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGV2aWNlLW5hbWVcIj57eyBzZXNzaW9uLmRldmljZSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChzZXNzaW9uLmlzQ3VycmVudCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImN1cnJlbnQtYmFkZ2VcIj5DdXJyZW50PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7IHNlc3Npb24ubG9jYXRpb24gfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3sgc2Vzc2lvbi5jcmVhdGVkIH19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7IHNlc3Npb24udXBkYXRlZCB9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImFjdGlvbi1jZWxsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKCFzZXNzaW9uLmlzQ3VycmVudCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gW21hdE1lbnVUcmlnZ2VyRm9yXT1cInNlc3Npb25NZW51XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPm1vcmVfdmVydDwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbWVudSAjc2Vzc2lvbk1lbnU9XCJtYXRNZW51XCIgeFBvc2l0aW9uPVwiYmVmb3JlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJjb25maXJtTG9nb3V0U2Vzc2lvbihzZXNzaW9uKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+bG9nb3V0PC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+TG9nIG91dCBvZiBzZXNzaW9uPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtbWVudT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIDwvdGJvZHk+XHJcbiAgICAgICAgICAgIDwvdGFibGU+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+Il19
|
package/esm2022/lib/app/personalization/sections/preferences/color-picker-dialog.component.mjs
DELETED
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
import { Component, Inject } from '@angular/core';
|
|
2
|
-
import { CommonModule } from '@angular/common';
|
|
3
|
-
import { FormsModule } from '@angular/forms';
|
|
4
|
-
import { MatDialogModule, MAT_DIALOG_DATA } from '@angular/material/dialog';
|
|
5
|
-
import { MatButtonModule } from '@angular/material/button';
|
|
6
|
-
import { MatFormFieldModule } from '@angular/material/form-field';
|
|
7
|
-
import { MatInputModule } from '@angular/material/input';
|
|
8
|
-
import * as i0 from "@angular/core";
|
|
9
|
-
import * as i1 from "@angular/material/dialog";
|
|
10
|
-
import * as i2 from "@angular/forms";
|
|
11
|
-
import * as i3 from "@angular/material/button";
|
|
12
|
-
import * as i4 from "@angular/material/form-field";
|
|
13
|
-
import * as i5 from "@angular/material/input";
|
|
14
|
-
export class ColorPickerDialogComponent {
|
|
15
|
-
constructor(dialogRef, data) {
|
|
16
|
-
this.dialogRef = dialogRef;
|
|
17
|
-
this.data = data;
|
|
18
|
-
this.color = data.color;
|
|
19
|
-
}
|
|
20
|
-
onColorInput(event) {
|
|
21
|
-
this.color = event.target.value;
|
|
22
|
-
}
|
|
23
|
-
onCancel() {
|
|
24
|
-
this.dialogRef.close();
|
|
25
|
-
}
|
|
26
|
-
onConfirm() {
|
|
27
|
-
this.dialogRef.close(this.color);
|
|
28
|
-
}
|
|
29
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ColorPickerDialogComponent, deps: [{ token: i1.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
30
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ColorPickerDialogComponent, isStandalone: true, selector: "app-color-picker-dialog", ngImport: i0, template: `
|
|
31
|
-
<h2 mat-dialog-title>Choose Custom Color</h2>
|
|
32
|
-
<mat-dialog-content>
|
|
33
|
-
<div class="picker-container">
|
|
34
|
-
<input
|
|
35
|
-
type="color"
|
|
36
|
-
[(ngModel)]="color"
|
|
37
|
-
(input)="onColorInput($event)"
|
|
38
|
-
class="main-picker"
|
|
39
|
-
/>
|
|
40
|
-
<mat-form-field appearance="outline">
|
|
41
|
-
<mat-label>Hex Code</mat-label>
|
|
42
|
-
<input matInput [(ngModel)]="color" placeholder="#000000" />
|
|
43
|
-
</mat-form-field>
|
|
44
|
-
</div>
|
|
45
|
-
</mat-dialog-content>
|
|
46
|
-
<mat-dialog-actions align="end">
|
|
47
|
-
<button mat-button (click)="onCancel()">Cancel</button>
|
|
48
|
-
<button mat-raised-button color="primary" (click)="onConfirm()">Apply</button>
|
|
49
|
-
</mat-dialog-actions>
|
|
50
|
-
`, isInline: true, styles: [".picker-container{display:flex;flex-direction:column;align-items:center;gap:20px;padding:10px 0}.main-picker{width:100px;height:100px;padding:0;border:none;border-radius:50%;cursor:pointer;outline:none;background:none}.main-picker::-webkit-color-swatch-wrapper{padding:0}.main-picker::-webkit-color-swatch{border:none;border-radius:50%;box-shadow:0 4px 6px #0000001a}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatDialogModule }, { kind: "directive", type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i3.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatLabel, selector: "mat-label" }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i5.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }] }); }
|
|
51
|
-
}
|
|
52
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ColorPickerDialogComponent, decorators: [{
|
|
53
|
-
type: Component,
|
|
54
|
-
args: [{ selector: 'app-color-picker-dialog', standalone: true, imports: [
|
|
55
|
-
CommonModule,
|
|
56
|
-
FormsModule,
|
|
57
|
-
MatDialogModule,
|
|
58
|
-
MatButtonModule,
|
|
59
|
-
MatFormFieldModule,
|
|
60
|
-
MatInputModule,
|
|
61
|
-
], template: `
|
|
62
|
-
<h2 mat-dialog-title>Choose Custom Color</h2>
|
|
63
|
-
<mat-dialog-content>
|
|
64
|
-
<div class="picker-container">
|
|
65
|
-
<input
|
|
66
|
-
type="color"
|
|
67
|
-
[(ngModel)]="color"
|
|
68
|
-
(input)="onColorInput($event)"
|
|
69
|
-
class="main-picker"
|
|
70
|
-
/>
|
|
71
|
-
<mat-form-field appearance="outline">
|
|
72
|
-
<mat-label>Hex Code</mat-label>
|
|
73
|
-
<input matInput [(ngModel)]="color" placeholder="#000000" />
|
|
74
|
-
</mat-form-field>
|
|
75
|
-
</div>
|
|
76
|
-
</mat-dialog-content>
|
|
77
|
-
<mat-dialog-actions align="end">
|
|
78
|
-
<button mat-button (click)="onCancel()">Cancel</button>
|
|
79
|
-
<button mat-raised-button color="primary" (click)="onConfirm()">Apply</button>
|
|
80
|
-
</mat-dialog-actions>
|
|
81
|
-
`, styles: [".picker-container{display:flex;flex-direction:column;align-items:center;gap:20px;padding:10px 0}.main-picker{width:100px;height:100px;padding:0;border:none;border-radius:50%;cursor:pointer;outline:none;background:none}.main-picker::-webkit-color-swatch-wrapper{padding:0}.main-picker::-webkit-color-swatch{border:none;border-radius:50%;box-shadow:0 4px 6px #0000001a}\n"] }]
|
|
82
|
-
}], ctorParameters: () => [{ type: i1.MatDialogRef }, { type: undefined, decorators: [{
|
|
83
|
-
type: Inject,
|
|
84
|
-
args: [MAT_DIALOG_DATA]
|
|
85
|
-
}] }] });
|
|
86
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3ItcGlja2VyLWRpYWxvZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kb29oYm90L3NyYy9saWIvYXBwL3BlcnNvbmFsaXphdGlvbi9zZWN0aW9ucy9wcmVmZXJlbmNlcy9jb2xvci1waWNrZXItZGlhbG9nLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxlQUFlLEVBQUUsZUFBZSxFQUFnQixNQUFNLDBCQUEwQixDQUFDO0FBQzFGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7Ozs7Ozs7QUFnRXpELE1BQU0sT0FBTywwQkFBMEI7SUFHckMsWUFDUyxTQUFtRCxFQUMxQixJQUF1QjtRQURoRCxjQUFTLEdBQVQsU0FBUyxDQUEwQztRQUMxQixTQUFJLEdBQUosSUFBSSxDQUFtQjtRQUV2RCxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDMUIsQ0FBQztJQUVELFlBQVksQ0FBQyxLQUFVO1FBQ3JCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7SUFDbEMsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxTQUFTO1FBQ1AsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ25DLENBQUM7K0dBcEJVLDBCQUEwQiw4Q0FLM0IsZUFBZTttR0FMZCwwQkFBMEIsbUZBbkQzQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQlQsMGJBM0JDLFlBQVksOEJBQ1osV0FBVyw4bUJBQ1gsZUFBZSx5YkFDZixlQUFlLDJOQUNmLGtCQUFrQiwwU0FDbEIsY0FBYzs7NEZBcURMLDBCQUEwQjtrQkE5RHRDLFNBQVM7K0JBQ0UseUJBQXlCLGNBQ3ZCLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLFdBQVc7d0JBQ1gsZUFBZTt3QkFDZixlQUFlO3dCQUNmLGtCQUFrQjt3QkFDbEIsY0FBYztxQkFDZixZQUNTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW9CVDs7MEJBb0NFLE1BQU07MkJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBNYXREaWFsb2dNb2R1bGUsIE1BVF9ESUFMT0dfREFUQSwgTWF0RGlhbG9nUmVmIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcclxuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XHJcbmltcG9ydCB7IE1hdElucHV0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtY29sb3ItcGlja2VyLWRpYWxvZycsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBGb3Jtc01vZHVsZSxcclxuICAgIE1hdERpYWxvZ01vZHVsZSxcclxuICAgIE1hdEJ1dHRvbk1vZHVsZSxcclxuICAgIE1hdEZvcm1GaWVsZE1vZHVsZSxcclxuICAgIE1hdElucHV0TW9kdWxlLFxyXG4gIF0sXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIDxoMiBtYXQtZGlhbG9nLXRpdGxlPkNob29zZSBDdXN0b20gQ29sb3I8L2gyPlxyXG4gICAgPG1hdC1kaWFsb2ctY29udGVudD5cclxuICAgICAgPGRpdiBjbGFzcz1cInBpY2tlci1jb250YWluZXJcIj5cclxuICAgICAgICA8aW5wdXRcclxuICAgICAgICAgIHR5cGU9XCJjb2xvclwiXHJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cImNvbG9yXCJcclxuICAgICAgICAgIChpbnB1dCk9XCJvbkNvbG9ySW5wdXQoJGV2ZW50KVwiXHJcbiAgICAgICAgICBjbGFzcz1cIm1haW4tcGlja2VyXCJcclxuICAgICAgICAvPlxyXG4gICAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwib3V0bGluZVwiPlxyXG4gICAgICAgICAgPG1hdC1sYWJlbD5IZXggQ29kZTwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgPGlucHV0IG1hdElucHV0IFsobmdNb2RlbCldPVwiY29sb3JcIiBwbGFjZWhvbGRlcj1cIiMwMDAwMDBcIiAvPlxyXG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9tYXQtZGlhbG9nLWNvbnRlbnQ+XHJcbiAgICA8bWF0LWRpYWxvZy1hY3Rpb25zIGFsaWduPVwiZW5kXCI+XHJcbiAgICAgIDxidXR0b24gbWF0LWJ1dHRvbiAoY2xpY2spPVwib25DYW5jZWwoKVwiPkNhbmNlbDwvYnV0dG9uPlxyXG4gICAgICA8YnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIChjbGljayk9XCJvbkNvbmZpcm0oKVwiPkFwcGx5PC9idXR0b24+XHJcbiAgICA8L21hdC1kaWFsb2ctYWN0aW9ucz5cclxuICBgLFxyXG4gIHN0eWxlczogW1xyXG4gICAgYFxyXG4gICAgICAucGlja2VyLWNvbnRhaW5lciB7XHJcbiAgICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICAgICAgZ2FwOiAyMHB4O1xyXG4gICAgICAgIHBhZGRpbmc6IDEwcHggMDtcclxuICAgICAgfVxyXG4gICAgICAubWFpbi1waWNrZXIge1xyXG4gICAgICAgIHdpZHRoOiAxMDBweDtcclxuICAgICAgICBoZWlnaHQ6IDEwMHB4O1xyXG4gICAgICAgIHBhZGRpbmc6IDA7XHJcbiAgICAgICAgYm9yZGVyOiBub25lO1xyXG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcclxuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICAgICAgb3V0bGluZTogbm9uZTtcclxuICAgICAgICBiYWNrZ3JvdW5kOiBub25lO1xyXG4gICAgICB9XHJcbiAgICAgIC5tYWluLXBpY2tlcjo6LXdlYmtpdC1jb2xvci1zd2F0Y2gtd3JhcHBlciB7XHJcbiAgICAgICAgcGFkZGluZzogMDtcclxuICAgICAgfVxyXG4gICAgICAubWFpbi1waWNrZXI6Oi13ZWJraXQtY29sb3Itc3dhdGNoIHtcclxuICAgICAgICBib3JkZXI6IG5vbmU7XHJcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xyXG4gICAgICAgIGJveC1zaGFkb3c6IDAgNHB4IDZweCByZ2JhKDAsIDAsIDAsIDAuMSk7XHJcbiAgICAgIH1cclxuICAgIGAsXHJcbiAgXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIENvbG9yUGlja2VyRGlhbG9nQ29tcG9uZW50IHtcclxuICBwdWJsaWMgY29sb3I6IHN0cmluZztcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8Q29sb3JQaWNrZXJEaWFsb2dDb21wb25lbnQ+LFxyXG4gICAgQEluamVjdChNQVRfRElBTE9HX0RBVEEpIHB1YmxpYyBkYXRhOiB7IGNvbG9yOiBzdHJpbmcgfSxcclxuICApIHtcclxuICAgIHRoaXMuY29sb3IgPSBkYXRhLmNvbG9yO1xyXG4gIH1cclxuXHJcbiAgb25Db2xvcklucHV0KGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMuY29sb3IgPSBldmVudC50YXJnZXQudmFsdWU7XHJcbiAgfVxyXG5cclxuICBvbkNhbmNlbCgpIHtcclxuICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKCk7XHJcbiAgfVxyXG5cclxuICBvbkNvbmZpcm0oKSB7XHJcbiAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSh0aGlzLmNvbG9yKTtcclxuICB9XHJcbn1cclxuIl19
|
package/esm2022/lib/app/personalization/sections/preferences/preferences-section.component.mjs
DELETED
|
@@ -1,115 +0,0 @@
|
|
|
1
|
-
import { Component, Input, Output, EventEmitter } from '@angular/core';
|
|
2
|
-
import { CommonModule } from '@angular/common';
|
|
3
|
-
import { MatIconModule } from '@angular/material/icon';
|
|
4
|
-
import { MatTooltipModule } from '@angular/material/tooltip';
|
|
5
|
-
import { MatFormFieldModule } from '@angular/material/form-field';
|
|
6
|
-
import { MatSelectModule } from '@angular/material/select';
|
|
7
|
-
import { ColorPickerDialogComponent } from './color-picker-dialog.component';
|
|
8
|
-
import * as i0 from "@angular/core";
|
|
9
|
-
import * as i1 from "@angular/material/dialog";
|
|
10
|
-
import * as i2 from "@angular/material/icon";
|
|
11
|
-
import * as i3 from "@angular/material/form-field";
|
|
12
|
-
import * as i4 from "@angular/material/select";
|
|
13
|
-
import * as i5 from "@angular/material/core";
|
|
14
|
-
export class PreferencesSectionComponent {
|
|
15
|
-
constructor(dialog) {
|
|
16
|
-
this.dialog = dialog;
|
|
17
|
-
this.colorTokens = [];
|
|
18
|
-
this.isCustomColorSelected = false;
|
|
19
|
-
this.defaultColor = 'default';
|
|
20
|
-
this.onThemeSelect = new EventEmitter();
|
|
21
|
-
this.onColorSelect = new EventEmitter();
|
|
22
|
-
this.onButtonStyleSelect = new EventEmitter();
|
|
23
|
-
this.onSave = new EventEmitter();
|
|
24
|
-
this.onReset = new EventEmitter();
|
|
25
|
-
}
|
|
26
|
-
onCustomColorChange(event) {
|
|
27
|
-
const color = event.target.value;
|
|
28
|
-
this.onColorSelect.emit(color);
|
|
29
|
-
}
|
|
30
|
-
getSelectedColorName() {
|
|
31
|
-
const current = this.settings.appearance.primaryColor;
|
|
32
|
-
if (current === 'default')
|
|
33
|
-
return 'Default';
|
|
34
|
-
// Fallback for legacy saved hexes that happen to match default
|
|
35
|
-
// or finding the named token
|
|
36
|
-
const token = this.colorTokens.find(c => c.value.toLowerCase() === current.toLowerCase());
|
|
37
|
-
if (token)
|
|
38
|
-
return token.name === 'Standard' ? 'Default' : token.name;
|
|
39
|
-
return 'Custom';
|
|
40
|
-
}
|
|
41
|
-
isCustomColor() {
|
|
42
|
-
const current = this.settings.appearance.primaryColor;
|
|
43
|
-
if (current === 'default')
|
|
44
|
-
return false;
|
|
45
|
-
return !this.colorTokens.some(c => c.value.toLowerCase() === current.toLowerCase());
|
|
46
|
-
}
|
|
47
|
-
getThemeIcon(theme) {
|
|
48
|
-
switch (theme) {
|
|
49
|
-
case 'light': return 'light_mode';
|
|
50
|
-
case 'dark': return 'dark_mode';
|
|
51
|
-
default: return 'brightness_auto';
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
getThemeLabel(theme) {
|
|
55
|
-
switch (theme) {
|
|
56
|
-
case 'light': return 'Light Mode';
|
|
57
|
-
case 'dark': return 'Dark Mode';
|
|
58
|
-
default: return 'System';
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
getStyleIcon(style) {
|
|
62
|
-
switch (style) {
|
|
63
|
-
case 'fab': return 'radio_button_checked';
|
|
64
|
-
case 'sidebar': return 'view_sidebar';
|
|
65
|
-
case 'sidebar-top': return 'vertical_align_top';
|
|
66
|
-
case 'sidebar-bottom': return 'vertical_align_bottom';
|
|
67
|
-
default: return 'radio_button_checked';
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
getStyleLabel(style) {
|
|
71
|
-
switch (style) {
|
|
72
|
-
case 'fab': return 'FAB';
|
|
73
|
-
case 'sidebar': return 'Sidebar';
|
|
74
|
-
case 'sidebar-top': return 'Sidebar Top';
|
|
75
|
-
case 'sidebar-bottom': return 'Sidebar Bottom';
|
|
76
|
-
default: return 'FAB';
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
openCustomColorPicker() {
|
|
80
|
-
const dialogRef = this.dialog.open(ColorPickerDialogComponent, {
|
|
81
|
-
width: '350px',
|
|
82
|
-
data: { color: this.settings.appearance.primaryColor }
|
|
83
|
-
});
|
|
84
|
-
dialogRef.afterClosed().subscribe(result => {
|
|
85
|
-
if (result) {
|
|
86
|
-
this.onColorSelect.emit(result);
|
|
87
|
-
}
|
|
88
|
-
});
|
|
89
|
-
}
|
|
90
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PreferencesSectionComponent, deps: [{ token: i1.MatDialog }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
91
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: PreferencesSectionComponent, isStandalone: true, selector: "app-preferences-section", inputs: { settings: "settings", colorTokens: "colorTokens", isCustomColorSelected: "isCustomColorSelected", defaultColor: "defaultColor" }, outputs: { onThemeSelect: "onThemeSelect", onColorSelect: "onColorSelect", onButtonStyleSelect: "onButtonStyleSelect", onSave: "onSave", onReset: "onReset" }, ngImport: i0, template: "<div class=\"preferences-container\">\r\n <header class=\"pane-header\">\r\n <h1>Preferences</h1>\r\n <p>Customize how your assistant looks and feels.</p>\r\n </header>\r\n\r\n <div class=\"settings-list\">\r\n <!-- Appearance Row -->\r\n <div class=\"settings-row\">\r\n <div class=\"row-info\">\r\n <span class=\"row-label\">Appearance</span>\r\n </div>\r\n <div class=\"row-action\">\r\n <mat-form-field appearance=\"outline\" subscriptSizing=\"dynamic\">\r\n <mat-select\r\n [value]=\"settings.appearance.theme\"\r\n (selectionChange)=\"onThemeSelect.emit($event.value)\"\r\n >\r\n <mat-select-trigger>\r\n <div class=\"selected-option-trigger\">\r\n <mat-icon>{{ getThemeIcon(settings.appearance.theme) }}</mat-icon>\r\n <span>{{ getThemeLabel(settings.appearance.theme) }}</span>\r\n </div>\r\n </mat-select-trigger>\r\n <mat-option value=\"light\">\r\n <div class=\"option-content\">\r\n <mat-icon>light_mode</mat-icon>\r\n <span>Light Mode</span>\r\n </div>\r\n </mat-option>\r\n <mat-option value=\"dark\">\r\n <div class=\"option-content\">\r\n <mat-icon>dark_mode</mat-icon>\r\n <span>Dark Mode</span>\r\n </div>\r\n </mat-option>\r\n <mat-option value=\"auto\">\r\n <div class=\"option-content\">\r\n <mat-icon>brightness_auto</mat-icon>\r\n <span>System</span>\r\n </div>\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n\r\n <!-- Accent Color Row -->\r\n <div class=\"settings-row\">\r\n <div class=\"row-info\">\r\n <span class=\"row-label\">Accent color</span>\r\n </div>\r\n <div class=\"row-action\">\r\n <mat-form-field appearance=\"outline\" subscriptSizing=\"dynamic\">\r\n <mat-select\r\n [value]=\"settings.appearance.primaryColor\"\r\n (selectionChange)=\"onColorSelect.emit($event.value)\"\r\n >\r\n <mat-select-trigger>\r\n <div class=\"selected-color-trigger\">\r\n <div\r\n class=\"color-dot\"\r\n [style.background-color]=\"\r\n settings.appearance.primaryColor === 'default'\r\n ? defaultColor\r\n : settings.appearance.primaryColor\r\n \"\r\n ></div>\r\n <span>{{ getSelectedColorName() }}</span>\r\n </div>\r\n </mat-select-trigger>\r\n @for (color of colorTokens; track color.name) {\r\n <mat-option [value]=\"color.value\">\r\n <div class=\"option-content\">\r\n <div\r\n class=\"color-dot\"\r\n [style.background-color]=\"\r\n color.value === 'default' ? defaultColor : color.value\r\n \"\r\n ></div>\r\n <span>{{ color.name === 'Standard' ? 'Default' : color.name }}</span>\r\n </div>\r\n </mat-option>\r\n }\r\n\r\n <!-- Active Custom Color -->\r\n @if (isCustomColor()) {\r\n <mat-option [value]=\"settings.appearance.primaryColor\">\r\n <div class=\"option-content\">\r\n <div\r\n class=\"color-dot\"\r\n [style.background-color]=\"settings.appearance.primaryColor\"\r\n ></div>\r\n <span>Custom</span>\r\n </div>\r\n </mat-option>\r\n }\r\n\r\n <!-- Action to pick new Custom Color -->\r\n <mat-option\r\n [value]=\"'picker-trigger'\"\r\n (click)=\"openCustomColorPicker(); $event.stopPropagation()\"\r\n >\r\n <div class=\"option-content\">\r\n <mat-icon>colorize</mat-icon>\r\n <span>{{ isCustomColor() ? 'Change Custom...' : 'Custom...' }}</span>\r\n </div>\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n\r\n <!-- Trigger Style Row -->\r\n <div class=\"settings-row\">\r\n <div class=\"row-info\">\r\n <span class=\"row-label\">Trigger Style</span>\r\n </div>\r\n <div class=\"row-action\">\r\n <mat-form-field appearance=\"outline\" subscriptSizing=\"dynamic\">\r\n <mat-select\r\n [value]=\"settings.appearance.buttonStyle\"\r\n (selectionChange)=\"onButtonStyleSelect.emit($event.value)\"\r\n >\r\n <mat-select-trigger>\r\n <div class=\"selected-option-trigger\">\r\n <mat-icon>{{ getStyleIcon(settings.appearance.buttonStyle) }}</mat-icon>\r\n <span>{{ getStyleLabel(settings.appearance.buttonStyle) }}</span>\r\n </div>\r\n </mat-select-trigger>\r\n <mat-option value=\"fab\">\r\n <div class=\"option-content\">\r\n <mat-icon>radio_button_checked</mat-icon>\r\n <span>FAB</span>\r\n </div>\r\n </mat-option>\r\n <mat-option value=\"sidebar\">\r\n <div class=\"option-content\">\r\n <mat-icon>view_sidebar</mat-icon>\r\n <span>Sidebar</span>\r\n </div>\r\n </mat-option>\r\n <mat-option value=\"sidebar-top\">\r\n <div class=\"option-content\">\r\n <mat-icon>vertical_align_top</mat-icon>\r\n <span>Sidebar Top</span>\r\n </div>\r\n </mat-option>\r\n <mat-option value=\"sidebar-bottom\">\r\n <div class=\"option-content\">\r\n <mat-icon>vertical_align_bottom</mat-icon>\r\n <span>Sidebar Bottom</span>\r\n </div>\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n\r\n <!-- Language Placeholder -->\r\n <div class=\"settings-row\">\r\n <div class=\"row-info\">\r\n <span class=\"row-label\">Language</span>\r\n </div>\r\n <div class=\"row-action\">\r\n <button class=\"pill-btn\">Auto-detect</button>\r\n </div>\r\n </div>\r\n\r\n <!-- Voice Placeholder -->\r\n <div class=\"settings-row\">\r\n <div class=\"row-info\">\r\n <span class=\"row-label\">Voice</span>\r\n </div>\r\n <div class=\"row-action\">\r\n <button class=\"pill-btn\">Cove</button>\r\n </div>\r\n </div>\r\n\r\n <!-- Data Controls Placeholder -->\r\n <div class=\"settings-row\">\r\n <div class=\"row-info\">\r\n <span class=\"row-label\">Data controls</span>\r\n </div>\r\n <div class=\"row-action\">\r\n <button class=\"pill-btn\">Manage</button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"section-actions\">\r\n <button mat-button class=\"reset-btn\" (click)=\"onReset.emit()\">Reset</button>\r\n <div class=\"spacer\"></div>\r\n <button mat-raised-button color=\"primary\" class=\"save-btn\" (click)=\"onSave.emit()\">\r\n Apply Changes\r\n </button>\r\n </div>\r\n</div>\r\n", styles: [".preferences-container{padding:40px;display:flex;flex-direction:column;gap:32px;min-height:100%;box-sizing:border-box;animation:fadeIn .3s ease-out}.preferences-container .pane-header h1{margin:0 0 8px;font-size:1.75rem;font-weight:700}.preferences-container .pane-header p{margin:0;font-size:1rem;color:var(--secondary-text-color)}.settings-list{display:flex;flex-direction:column}.settings-list .settings-row{display:flex;justify-content:space-between;align-items:center;padding:16px 0;border-bottom:1px solid rgba(var(--black-rgb),.05)}.settings-list .settings-row:last-child{border-bottom:none}.settings-list .settings-row .row-info .row-label{font-size:1rem;font-weight:500;color:var(--text-color)}.settings-list .settings-row .row-action{width:200px}.option-content,.selected-color-trigger,.selected-option-trigger{display:flex;align-items:center;gap:12px}.option-content mat-icon,.selected-color-trigger mat-icon,.selected-option-trigger mat-icon{font-size:20px;width:20px;height:20px;color:var(--secondary-text-color)}.option-content .color-dot,.selected-color-trigger .color-dot,.selected-option-trigger .color-dot{width:14px;height:14px;border-radius:50%;flex-shrink:0}.option-content span,.selected-color-trigger span,.selected-option-trigger span{font-size:.95rem}@keyframes slideIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.pill-btn{background:none;border:1.5px solid rgba(var(--black-rgb),.15);border-radius:100px;padding:6px 20px;font-size:.9rem;font-weight:600;color:var(--text-color);cursor:pointer;transition:all .2s ease}.pill-btn:hover{background:rgba(var(--black-rgb),.05);border-color:rgba(var(--black-rgb),.3)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i4.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "directive", type: i4.MatSelectTrigger, selector: "mat-select-trigger" }, { kind: "component", type: i5.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }] }); }
|
|
92
|
-
}
|
|
93
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PreferencesSectionComponent, decorators: [{
|
|
94
|
-
type: Component,
|
|
95
|
-
args: [{ selector: 'app-preferences-section', standalone: true, imports: [CommonModule, MatIconModule, MatTooltipModule, MatFormFieldModule, MatSelectModule], template: "<div class=\"preferences-container\">\r\n <header class=\"pane-header\">\r\n <h1>Preferences</h1>\r\n <p>Customize how your assistant looks and feels.</p>\r\n </header>\r\n\r\n <div class=\"settings-list\">\r\n <!-- Appearance Row -->\r\n <div class=\"settings-row\">\r\n <div class=\"row-info\">\r\n <span class=\"row-label\">Appearance</span>\r\n </div>\r\n <div class=\"row-action\">\r\n <mat-form-field appearance=\"outline\" subscriptSizing=\"dynamic\">\r\n <mat-select\r\n [value]=\"settings.appearance.theme\"\r\n (selectionChange)=\"onThemeSelect.emit($event.value)\"\r\n >\r\n <mat-select-trigger>\r\n <div class=\"selected-option-trigger\">\r\n <mat-icon>{{ getThemeIcon(settings.appearance.theme) }}</mat-icon>\r\n <span>{{ getThemeLabel(settings.appearance.theme) }}</span>\r\n </div>\r\n </mat-select-trigger>\r\n <mat-option value=\"light\">\r\n <div class=\"option-content\">\r\n <mat-icon>light_mode</mat-icon>\r\n <span>Light Mode</span>\r\n </div>\r\n </mat-option>\r\n <mat-option value=\"dark\">\r\n <div class=\"option-content\">\r\n <mat-icon>dark_mode</mat-icon>\r\n <span>Dark Mode</span>\r\n </div>\r\n </mat-option>\r\n <mat-option value=\"auto\">\r\n <div class=\"option-content\">\r\n <mat-icon>brightness_auto</mat-icon>\r\n <span>System</span>\r\n </div>\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n\r\n <!-- Accent Color Row -->\r\n <div class=\"settings-row\">\r\n <div class=\"row-info\">\r\n <span class=\"row-label\">Accent color</span>\r\n </div>\r\n <div class=\"row-action\">\r\n <mat-form-field appearance=\"outline\" subscriptSizing=\"dynamic\">\r\n <mat-select\r\n [value]=\"settings.appearance.primaryColor\"\r\n (selectionChange)=\"onColorSelect.emit($event.value)\"\r\n >\r\n <mat-select-trigger>\r\n <div class=\"selected-color-trigger\">\r\n <div\r\n class=\"color-dot\"\r\n [style.background-color]=\"\r\n settings.appearance.primaryColor === 'default'\r\n ? defaultColor\r\n : settings.appearance.primaryColor\r\n \"\r\n ></div>\r\n <span>{{ getSelectedColorName() }}</span>\r\n </div>\r\n </mat-select-trigger>\r\n @for (color of colorTokens; track color.name) {\r\n <mat-option [value]=\"color.value\">\r\n <div class=\"option-content\">\r\n <div\r\n class=\"color-dot\"\r\n [style.background-color]=\"\r\n color.value === 'default' ? defaultColor : color.value\r\n \"\r\n ></div>\r\n <span>{{ color.name === 'Standard' ? 'Default' : color.name }}</span>\r\n </div>\r\n </mat-option>\r\n }\r\n\r\n <!-- Active Custom Color -->\r\n @if (isCustomColor()) {\r\n <mat-option [value]=\"settings.appearance.primaryColor\">\r\n <div class=\"option-content\">\r\n <div\r\n class=\"color-dot\"\r\n [style.background-color]=\"settings.appearance.primaryColor\"\r\n ></div>\r\n <span>Custom</span>\r\n </div>\r\n </mat-option>\r\n }\r\n\r\n <!-- Action to pick new Custom Color -->\r\n <mat-option\r\n [value]=\"'picker-trigger'\"\r\n (click)=\"openCustomColorPicker(); $event.stopPropagation()\"\r\n >\r\n <div class=\"option-content\">\r\n <mat-icon>colorize</mat-icon>\r\n <span>{{ isCustomColor() ? 'Change Custom...' : 'Custom...' }}</span>\r\n </div>\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n\r\n <!-- Trigger Style Row -->\r\n <div class=\"settings-row\">\r\n <div class=\"row-info\">\r\n <span class=\"row-label\">Trigger Style</span>\r\n </div>\r\n <div class=\"row-action\">\r\n <mat-form-field appearance=\"outline\" subscriptSizing=\"dynamic\">\r\n <mat-select\r\n [value]=\"settings.appearance.buttonStyle\"\r\n (selectionChange)=\"onButtonStyleSelect.emit($event.value)\"\r\n >\r\n <mat-select-trigger>\r\n <div class=\"selected-option-trigger\">\r\n <mat-icon>{{ getStyleIcon(settings.appearance.buttonStyle) }}</mat-icon>\r\n <span>{{ getStyleLabel(settings.appearance.buttonStyle) }}</span>\r\n </div>\r\n </mat-select-trigger>\r\n <mat-option value=\"fab\">\r\n <div class=\"option-content\">\r\n <mat-icon>radio_button_checked</mat-icon>\r\n <span>FAB</span>\r\n </div>\r\n </mat-option>\r\n <mat-option value=\"sidebar\">\r\n <div class=\"option-content\">\r\n <mat-icon>view_sidebar</mat-icon>\r\n <span>Sidebar</span>\r\n </div>\r\n </mat-option>\r\n <mat-option value=\"sidebar-top\">\r\n <div class=\"option-content\">\r\n <mat-icon>vertical_align_top</mat-icon>\r\n <span>Sidebar Top</span>\r\n </div>\r\n </mat-option>\r\n <mat-option value=\"sidebar-bottom\">\r\n <div class=\"option-content\">\r\n <mat-icon>vertical_align_bottom</mat-icon>\r\n <span>Sidebar Bottom</span>\r\n </div>\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n\r\n <!-- Language Placeholder -->\r\n <div class=\"settings-row\">\r\n <div class=\"row-info\">\r\n <span class=\"row-label\">Language</span>\r\n </div>\r\n <div class=\"row-action\">\r\n <button class=\"pill-btn\">Auto-detect</button>\r\n </div>\r\n </div>\r\n\r\n <!-- Voice Placeholder -->\r\n <div class=\"settings-row\">\r\n <div class=\"row-info\">\r\n <span class=\"row-label\">Voice</span>\r\n </div>\r\n <div class=\"row-action\">\r\n <button class=\"pill-btn\">Cove</button>\r\n </div>\r\n </div>\r\n\r\n <!-- Data Controls Placeholder -->\r\n <div class=\"settings-row\">\r\n <div class=\"row-info\">\r\n <span class=\"row-label\">Data controls</span>\r\n </div>\r\n <div class=\"row-action\">\r\n <button class=\"pill-btn\">Manage</button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"section-actions\">\r\n <button mat-button class=\"reset-btn\" (click)=\"onReset.emit()\">Reset</button>\r\n <div class=\"spacer\"></div>\r\n <button mat-raised-button color=\"primary\" class=\"save-btn\" (click)=\"onSave.emit()\">\r\n Apply Changes\r\n </button>\r\n </div>\r\n</div>\r\n", styles: [".preferences-container{padding:40px;display:flex;flex-direction:column;gap:32px;min-height:100%;box-sizing:border-box;animation:fadeIn .3s ease-out}.preferences-container .pane-header h1{margin:0 0 8px;font-size:1.75rem;font-weight:700}.preferences-container .pane-header p{margin:0;font-size:1rem;color:var(--secondary-text-color)}.settings-list{display:flex;flex-direction:column}.settings-list .settings-row{display:flex;justify-content:space-between;align-items:center;padding:16px 0;border-bottom:1px solid rgba(var(--black-rgb),.05)}.settings-list .settings-row:last-child{border-bottom:none}.settings-list .settings-row .row-info .row-label{font-size:1rem;font-weight:500;color:var(--text-color)}.settings-list .settings-row .row-action{width:200px}.option-content,.selected-color-trigger,.selected-option-trigger{display:flex;align-items:center;gap:12px}.option-content mat-icon,.selected-color-trigger mat-icon,.selected-option-trigger mat-icon{font-size:20px;width:20px;height:20px;color:var(--secondary-text-color)}.option-content .color-dot,.selected-color-trigger .color-dot,.selected-option-trigger .color-dot{width:14px;height:14px;border-radius:50%;flex-shrink:0}.option-content span,.selected-color-trigger span,.selected-option-trigger span{font-size:.95rem}@keyframes slideIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.pill-btn{background:none;border:1.5px solid rgba(var(--black-rgb),.15);border-radius:100px;padding:6px 20px;font-size:.9rem;font-weight:600;color:var(--text-color);cursor:pointer;transition:all .2s ease}.pill-btn:hover{background:rgba(var(--black-rgb),.05);border-color:rgba(var(--black-rgb),.3)}\n"] }]
|
|
96
|
-
}], ctorParameters: () => [{ type: i1.MatDialog }], propDecorators: { settings: [{
|
|
97
|
-
type: Input
|
|
98
|
-
}], colorTokens: [{
|
|
99
|
-
type: Input
|
|
100
|
-
}], isCustomColorSelected: [{
|
|
101
|
-
type: Input
|
|
102
|
-
}], defaultColor: [{
|
|
103
|
-
type: Input
|
|
104
|
-
}], onThemeSelect: [{
|
|
105
|
-
type: Output
|
|
106
|
-
}], onColorSelect: [{
|
|
107
|
-
type: Output
|
|
108
|
-
}], onButtonStyleSelect: [{
|
|
109
|
-
type: Output
|
|
110
|
-
}], onSave: [{
|
|
111
|
-
type: Output
|
|
112
|
-
}], onReset: [{
|
|
113
|
-
type: Output
|
|
114
|
-
}] } });
|
|
115
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlZmVyZW5jZXMtc2VjdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kb29oYm90L3NyYy9saWIvYXBwL3BlcnNvbmFsaXphdGlvbi9zZWN0aW9ucy9wcmVmZXJlbmNlcy9wcmVmZXJlbmNlcy1zZWN0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rvb2hib3Qvc3JjL2xpYi9hcHAvcGVyc29uYWxpemF0aW9uL3NlY3Rpb25zL3ByZWZlcmVuY2VzL3ByZWZlcmVuY2VzLXNlY3Rpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzdELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUczRCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQzs7Ozs7OztBQVM3RSxNQUFNLE9BQU8sMkJBQTJCO0lBQ3RDLFlBQW9CLE1BQWlCO1FBQWpCLFdBQU0sR0FBTixNQUFNLENBQVc7UUFFNUIsZ0JBQVcsR0FBVSxFQUFFLENBQUM7UUFDeEIsMEJBQXFCLEdBQUcsS0FBSyxDQUFDO1FBQzlCLGlCQUFZLEdBQVcsU0FBUyxDQUFDO1FBRWhDLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQTZCLENBQUM7UUFDOUQsa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBQzNDLHdCQUFtQixHQUFHLElBQUksWUFBWSxFQUF3RCxDQUFDO1FBQy9GLFdBQU0sR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBQ2xDLFlBQU8sR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO0lBVkosQ0FBQztJQVkxQyxtQkFBbUIsQ0FBQyxLQUFZO1FBQzlCLE1BQU0sS0FBSyxHQUFJLEtBQUssQ0FBQyxNQUEyQixDQUFDLEtBQUssQ0FBQztRQUN2RCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQsb0JBQW9CO1FBQ2xCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQztRQUN0RCxJQUFJLE9BQU8sS0FBSyxTQUFTO1lBQUUsT0FBTyxTQUFTLENBQUM7UUFFNUMsK0RBQStEO1FBQy9ELDZCQUE2QjtRQUM3QixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLEtBQUssT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7UUFDMUYsSUFBSSxLQUFLO1lBQUUsT0FBTyxLQUFLLENBQUMsSUFBSSxLQUFLLFVBQVUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDO1FBRXJFLE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7SUFFRCxhQUFhO1FBQ1gsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDO1FBQ3RELElBQUksT0FBTyxLQUFLLFNBQVM7WUFBRSxPQUFPLEtBQUssQ0FBQztRQUV4QyxPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxLQUFLLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO0lBQ3RGLENBQUM7SUFFRCxZQUFZLENBQUMsS0FBYTtRQUN4QixRQUFRLEtBQUssRUFBRTtZQUNiLEtBQUssT0FBTyxDQUFDLENBQUMsT0FBTyxZQUFZLENBQUM7WUFDbEMsS0FBSyxNQUFNLENBQUMsQ0FBQyxPQUFPLFdBQVcsQ0FBQztZQUNoQyxPQUFPLENBQUMsQ0FBQyxPQUFPLGlCQUFpQixDQUFDO1NBQ25DO0lBQ0gsQ0FBQztJQUVELGFBQWEsQ0FBQyxLQUFhO1FBQ3pCLFFBQVEsS0FBSyxFQUFFO1lBQ2IsS0FBSyxPQUFPLENBQUMsQ0FBQyxPQUFPLFlBQVksQ0FBQztZQUNsQyxLQUFLLE1BQU0sQ0FBQyxDQUFDLE9BQU8sV0FBVyxDQUFDO1lBQ2hDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sUUFBUSxDQUFDO1NBQzFCO0lBQ0gsQ0FBQztJQUVELFlBQVksQ0FBQyxLQUFhO1FBQ3hCLFFBQVEsS0FBSyxFQUFFO1lBQ2IsS0FBSyxLQUFLLENBQUMsQ0FBQyxPQUFPLHNCQUFzQixDQUFDO1lBQzFDLEtBQUssU0FBUyxDQUFDLENBQUMsT0FBTyxjQUFjLENBQUM7WUFDdEMsS0FBSyxhQUFhLENBQUMsQ0FBQyxPQUFPLG9CQUFvQixDQUFDO1lBQ2hELEtBQUssZ0JBQWdCLENBQUMsQ0FBQyxPQUFPLHVCQUF1QixDQUFDO1lBQ3RELE9BQU8sQ0FBQyxDQUFDLE9BQU8sc0JBQXNCLENBQUM7U0FDeEM7SUFDSCxDQUFDO0lBRUQsYUFBYSxDQUFDLEtBQWE7UUFDekIsUUFBUSxLQUFLLEVBQUU7WUFDYixLQUFLLEtBQUssQ0FBQyxDQUFDLE9BQU8sS0FBSyxDQUFDO1lBQ3pCLEtBQUssU0FBUyxDQUFDLENBQUMsT0FBTyxTQUFTLENBQUM7WUFDakMsS0FBSyxhQUFhLENBQUMsQ0FBQyxPQUFPLGFBQWEsQ0FBQztZQUN6QyxLQUFLLGdCQUFnQixDQUFDLENBQUMsT0FBTyxnQkFBZ0IsQ0FBQztZQUMvQyxPQUFPLENBQUMsQ0FBQyxPQUFPLEtBQUssQ0FBQztTQUN2QjtJQUNILENBQUM7SUFFRCxxQkFBcUI7UUFDbkIsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsMEJBQTBCLEVBQUU7WUFDN0QsS0FBSyxFQUFFLE9BQU87WUFDZCxJQUFJLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsWUFBWSxFQUFFO1NBQ3ZELENBQUMsQ0FBQztRQUVILFNBQVMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDekMsSUFBSSxNQUFNLEVBQUU7Z0JBQ1YsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7YUFDakM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7K0dBcEZVLDJCQUEyQjttR0FBM0IsMkJBQTJCLDhYQ2pCeEMsZzZPQXNNQSxnc0REekxZLFlBQVksOEJBQUUsYUFBYSxtTEFBRSxnQkFBZ0IsOEJBQUUsa0JBQWtCLHlPQUFFLGVBQWU7OzRGQUlqRiwyQkFBMkI7a0JBUHZDLFNBQVM7K0JBQ0UseUJBQXlCLGNBQ3ZCLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxhQUFhLEVBQUUsZ0JBQWdCLEVBQUUsa0JBQWtCLEVBQUUsZUFBZSxDQUFDOzhFQU1wRixRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0cscUJBQXFCO3NCQUE3QixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBRUksYUFBYTtzQkFBdEIsTUFBTTtnQkFDRyxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLG1CQUFtQjtzQkFBNUIsTUFBTTtnQkFDRyxNQUFNO3NCQUFmLE1BQU07Z0JBQ0csT0FBTztzQkFBaEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcclxuaW1wb3J0IHsgTWF0VG9vbHRpcE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXAnO1xyXG5pbXBvcnQgeyBNYXRGb3JtRmllbGRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcclxuaW1wb3J0IHsgTWF0U2VsZWN0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2VsZWN0JztcclxuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuaW1wb3J0IHsgUGVyc29uYWxpemF0aW9uU2V0dGluZ3MgfSBmcm9tICcuLi8uLi9wZXJzb25hbGl6YXRpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IENvbG9yUGlja2VyRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi9jb2xvci1waWNrZXItZGlhbG9nLmNvbXBvbmVudCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1wcmVmZXJlbmNlcy1zZWN0aW9uJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIE1hdEljb25Nb2R1bGUsIE1hdFRvb2x0aXBNb2R1bGUsIE1hdEZvcm1GaWVsZE1vZHVsZSwgTWF0U2VsZWN0TW9kdWxlXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vcHJlZmVyZW5jZXMtc2VjdGlvbi5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vcHJlZmVyZW5jZXMtc2VjdGlvbi5jb21wb25lbnQuc2NzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgUHJlZmVyZW5jZXNTZWN0aW9uQ29tcG9uZW50IHtcclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGRpYWxvZzogTWF0RGlhbG9nKSB7IH1cclxuICBASW5wdXQoKSBzZXR0aW5ncyE6IFBlcnNvbmFsaXphdGlvblNldHRpbmdzO1xyXG4gIEBJbnB1dCgpIGNvbG9yVG9rZW5zOiBhbnlbXSA9IFtdO1xyXG4gIEBJbnB1dCgpIGlzQ3VzdG9tQ29sb3JTZWxlY3RlZCA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGRlZmF1bHRDb2xvcjogc3RyaW5nID0gJ2RlZmF1bHQnO1xyXG5cclxuICBAT3V0cHV0KCkgb25UaGVtZVNlbGVjdCA9IG5ldyBFdmVudEVtaXR0ZXI8J2xpZ2h0JyB8ICdkYXJrJyB8ICdhdXRvJz4oKTtcclxuICBAT3V0cHV0KCkgb25Db2xvclNlbGVjdCA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG4gIEBPdXRwdXQoKSBvbkJ1dHRvblN0eWxlU2VsZWN0ID0gbmV3IEV2ZW50RW1pdHRlcjwnZmFiJyB8ICdzaWRlYmFyJyB8ICdzaWRlYmFyLXRvcCcgfCAnc2lkZWJhci1ib3R0b20nPigpO1xyXG4gIEBPdXRwdXQoKSBvblNhdmUgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcbiAgQE91dHB1dCgpIG9uUmVzZXQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcblxyXG4gIG9uQ3VzdG9tQ29sb3JDaGFuZ2UoZXZlbnQ6IEV2ZW50KSB7XHJcbiAgICBjb25zdCBjb2xvciA9IChldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkudmFsdWU7XHJcbiAgICB0aGlzLm9uQ29sb3JTZWxlY3QuZW1pdChjb2xvcik7XHJcbiAgfVxyXG5cclxuICBnZXRTZWxlY3RlZENvbG9yTmFtZSgpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgY3VycmVudCA9IHRoaXMuc2V0dGluZ3MuYXBwZWFyYW5jZS5wcmltYXJ5Q29sb3I7XHJcbiAgICBpZiAoY3VycmVudCA9PT0gJ2RlZmF1bHQnKSByZXR1cm4gJ0RlZmF1bHQnO1xyXG5cclxuICAgIC8vIEZhbGxiYWNrIGZvciBsZWdhY3kgc2F2ZWQgaGV4ZXMgdGhhdCBoYXBwZW4gdG8gbWF0Y2ggZGVmYXVsdFxyXG4gICAgLy8gb3IgZmluZGluZyB0aGUgbmFtZWQgdG9rZW5cclxuICAgIGNvbnN0IHRva2VuID0gdGhpcy5jb2xvclRva2Vucy5maW5kKGMgPT4gYy52YWx1ZS50b0xvd2VyQ2FzZSgpID09PSBjdXJyZW50LnRvTG93ZXJDYXNlKCkpO1xyXG4gICAgaWYgKHRva2VuKSByZXR1cm4gdG9rZW4ubmFtZSA9PT0gJ1N0YW5kYXJkJyA/ICdEZWZhdWx0JyA6IHRva2VuLm5hbWU7XHJcblxyXG4gICAgcmV0dXJuICdDdXN0b20nO1xyXG4gIH1cclxuXHJcbiAgaXNDdXN0b21Db2xvcigpOiBib29sZWFuIHtcclxuICAgIGNvbnN0IGN1cnJlbnQgPSB0aGlzLnNldHRpbmdzLmFwcGVhcmFuY2UucHJpbWFyeUNvbG9yO1xyXG4gICAgaWYgKGN1cnJlbnQgPT09ICdkZWZhdWx0JykgcmV0dXJuIGZhbHNlO1xyXG5cclxuICAgIHJldHVybiAhdGhpcy5jb2xvclRva2Vucy5zb21lKGMgPT4gYy52YWx1ZS50b0xvd2VyQ2FzZSgpID09PSBjdXJyZW50LnRvTG93ZXJDYXNlKCkpO1xyXG4gIH1cclxuXHJcbiAgZ2V0VGhlbWVJY29uKHRoZW1lOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgc3dpdGNoICh0aGVtZSkge1xyXG4gICAgICBjYXNlICdsaWdodCc6IHJldHVybiAnbGlnaHRfbW9kZSc7XHJcbiAgICAgIGNhc2UgJ2RhcmsnOiByZXR1cm4gJ2RhcmtfbW9kZSc7XHJcbiAgICAgIGRlZmF1bHQ6IHJldHVybiAnYnJpZ2h0bmVzc19hdXRvJztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldFRoZW1lTGFiZWwodGhlbWU6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBzd2l0Y2ggKHRoZW1lKSB7XHJcbiAgICAgIGNhc2UgJ2xpZ2h0JzogcmV0dXJuICdMaWdodCBNb2RlJztcclxuICAgICAgY2FzZSAnZGFyayc6IHJldHVybiAnRGFyayBNb2RlJztcclxuICAgICAgZGVmYXVsdDogcmV0dXJuICdTeXN0ZW0nO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0U3R5bGVJY29uKHN0eWxlOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgc3dpdGNoIChzdHlsZSkge1xyXG4gICAgICBjYXNlICdmYWInOiByZXR1cm4gJ3JhZGlvX2J1dHRvbl9jaGVja2VkJztcclxuICAgICAgY2FzZSAnc2lkZWJhcic6IHJldHVybiAndmlld19zaWRlYmFyJztcclxuICAgICAgY2FzZSAnc2lkZWJhci10b3AnOiByZXR1cm4gJ3ZlcnRpY2FsX2FsaWduX3RvcCc7XHJcbiAgICAgIGNhc2UgJ3NpZGViYXItYm90dG9tJzogcmV0dXJuICd2ZXJ0aWNhbF9hbGlnbl9ib3R0b20nO1xyXG4gICAgICBkZWZhdWx0OiByZXR1cm4gJ3JhZGlvX2J1dHRvbl9jaGVja2VkJztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldFN0eWxlTGFiZWwoc3R5bGU6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBzd2l0Y2ggKHN0eWxlKSB7XHJcbiAgICAgIGNhc2UgJ2ZhYic6IHJldHVybiAnRkFCJztcclxuICAgICAgY2FzZSAnc2lkZWJhcic6IHJldHVybiAnU2lkZWJhcic7XHJcbiAgICAgIGNhc2UgJ3NpZGViYXItdG9wJzogcmV0dXJuICdTaWRlYmFyIFRvcCc7XHJcbiAgICAgIGNhc2UgJ3NpZGViYXItYm90dG9tJzogcmV0dXJuICdTaWRlYmFyIEJvdHRvbSc7XHJcbiAgICAgIGRlZmF1bHQ6IHJldHVybiAnRkFCJztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9wZW5DdXN0b21Db2xvclBpY2tlcigpIHtcclxuICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oQ29sb3JQaWNrZXJEaWFsb2dDb21wb25lbnQsIHtcclxuICAgICAgd2lkdGg6ICczNTBweCcsXHJcbiAgICAgIGRhdGE6IHsgY29sb3I6IHRoaXMuc2V0dGluZ3MuYXBwZWFyYW5jZS5wcmltYXJ5Q29sb3IgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XHJcbiAgICAgIGlmIChyZXN1bHQpIHtcclxuICAgICAgICB0aGlzLm9uQ29sb3JTZWxlY3QuZW1pdChyZXN1bHQpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cInByZWZlcmVuY2VzLWNvbnRhaW5lclwiPlxyXG4gIDxoZWFkZXIgY2xhc3M9XCJwYW5lLWhlYWRlclwiPlxyXG4gICAgPGgxPlByZWZlcmVuY2VzPC9oMT5cclxuICAgIDxwPkN1c3RvbWl6ZSBob3cgeW91ciBhc3Npc3RhbnQgbG9va3MgYW5kIGZlZWxzLjwvcD5cclxuICA8L2hlYWRlcj5cclxuXHJcbiAgPGRpdiBjbGFzcz1cInNldHRpbmdzLWxpc3RcIj5cclxuICAgIDwhLS0gQXBwZWFyYW5jZSBSb3cgLS0+XHJcbiAgICA8ZGl2IGNsYXNzPVwic2V0dGluZ3Mtcm93XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3ctaW5mb1wiPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwicm93LWxhYmVsXCI+QXBwZWFyYW5jZTwvc3Bhbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3ctYWN0aW9uXCI+XHJcbiAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCIgc3Vic2NyaXB0U2l6aW5nPVwiZHluYW1pY1wiPlxyXG4gICAgICAgICAgPG1hdC1zZWxlY3RcclxuICAgICAgICAgICAgW3ZhbHVlXT1cInNldHRpbmdzLmFwcGVhcmFuY2UudGhlbWVcIlxyXG4gICAgICAgICAgICAoc2VsZWN0aW9uQ2hhbmdlKT1cIm9uVGhlbWVTZWxlY3QuZW1pdCgkZXZlbnQudmFsdWUpXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPG1hdC1zZWxlY3QtdHJpZ2dlcj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0ZWQtb3B0aW9uLXRyaWdnZXJcIj5cclxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbj57eyBnZXRUaGVtZUljb24oc2V0dGluZ3MuYXBwZWFyYW5jZS50aGVtZSkgfX08L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4+e3sgZ2V0VGhlbWVMYWJlbChzZXR0aW5ncy5hcHBlYXJhbmNlLnRoZW1lKSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9tYXQtc2VsZWN0LXRyaWdnZXI+XHJcbiAgICAgICAgICAgIDxtYXQtb3B0aW9uIHZhbHVlPVwibGlnaHRcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwib3B0aW9uLWNvbnRlbnRcIj5cclxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5saWdodF9tb2RlPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuPkxpZ2h0IE1vZGU8L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cclxuICAgICAgICAgICAgPG1hdC1vcHRpb24gdmFsdWU9XCJkYXJrXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm9wdGlvbi1jb250ZW50XCI+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWljb24+ZGFya19tb2RlPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuPkRhcmsgTW9kZTwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxyXG4gICAgICAgICAgICA8bWF0LW9wdGlvbiB2YWx1ZT1cImF1dG9cIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwib3B0aW9uLWNvbnRlbnRcIj5cclxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5icmlnaHRuZXNzX2F1dG88L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4+U3lzdGVtPC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L21hdC1vcHRpb24+XHJcbiAgICAgICAgICA8L21hdC1zZWxlY3Q+XHJcbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8IS0tIEFjY2VudCBDb2xvciBSb3cgLS0+XHJcbiAgICA8ZGl2IGNsYXNzPVwic2V0dGluZ3Mtcm93XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3ctaW5mb1wiPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwicm93LWxhYmVsXCI+QWNjZW50IGNvbG9yPC9zcGFuPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvdy1hY3Rpb25cIj5cclxuICAgICAgICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cIm91dGxpbmVcIiBzdWJzY3JpcHRTaXppbmc9XCJkeW5hbWljXCI+XHJcbiAgICAgICAgICA8bWF0LXNlbGVjdFxyXG4gICAgICAgICAgICBbdmFsdWVdPVwic2V0dGluZ3MuYXBwZWFyYW5jZS5wcmltYXJ5Q29sb3JcIlxyXG4gICAgICAgICAgICAoc2VsZWN0aW9uQ2hhbmdlKT1cIm9uQ29sb3JTZWxlY3QuZW1pdCgkZXZlbnQudmFsdWUpXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPG1hdC1zZWxlY3QtdHJpZ2dlcj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0ZWQtY29sb3ItdHJpZ2dlclwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImNvbG9yLWRvdFwiXHJcbiAgICAgICAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kLWNvbG9yXT1cIlxyXG4gICAgICAgICAgICAgICAgICAgIHNldHRpbmdzLmFwcGVhcmFuY2UucHJpbWFyeUNvbG9yID09PSAnZGVmYXVsdCdcclxuICAgICAgICAgICAgICAgICAgICAgID8gZGVmYXVsdENvbG9yXHJcbiAgICAgICAgICAgICAgICAgICAgICA6IHNldHRpbmdzLmFwcGVhcmFuY2UucHJpbWFyeUNvbG9yXHJcbiAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICA+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8c3Bhbj57eyBnZXRTZWxlY3RlZENvbG9yTmFtZSgpIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L21hdC1zZWxlY3QtdHJpZ2dlcj5cclxuICAgICAgICAgICAgQGZvciAoY29sb3Igb2YgY29sb3JUb2tlbnM7IHRyYWNrIGNvbG9yLm5hbWUpIHtcclxuICAgICAgICAgICAgICA8bWF0LW9wdGlvbiBbdmFsdWVdPVwiY29sb3IudmFsdWVcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvcHRpb24tY29udGVudFwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjb2xvci1kb3RcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kLWNvbG9yXT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgY29sb3IudmFsdWUgPT09ICdkZWZhdWx0JyA/IGRlZmF1bHRDb2xvciA6IGNvbG9yLnZhbHVlXHJcbiAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8c3Bhbj57eyBjb2xvci5uYW1lID09PSAnU3RhbmRhcmQnID8gJ0RlZmF1bHQnIDogY29sb3IubmFtZSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgPCEtLSBBY3RpdmUgQ3VzdG9tIENvbG9yIC0tPlxyXG4gICAgICAgICAgICBAaWYgKGlzQ3VzdG9tQ29sb3IoKSkge1xyXG4gICAgICAgICAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCJzZXR0aW5ncy5hcHBlYXJhbmNlLnByaW1hcnlDb2xvclwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm9wdGlvbi1jb250ZW50XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNvbG9yLWRvdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPVwic2V0dGluZ3MuYXBwZWFyYW5jZS5wcmltYXJ5Q29sb3JcIlxyXG4gICAgICAgICAgICAgICAgICA+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuPkN1c3RvbTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgPCEtLSBBY3Rpb24gdG8gcGljayBuZXcgQ3VzdG9tIENvbG9yIC0tPlxyXG4gICAgICAgICAgICA8bWF0LW9wdGlvblxyXG4gICAgICAgICAgICAgIFt2YWx1ZV09XCIncGlja2VyLXRyaWdnZXInXCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwib3BlbkN1c3RvbUNvbG9yUGlja2VyKCk7ICRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwib3B0aW9uLWNvbnRlbnRcIj5cclxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5jb2xvcml6ZTwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICA8c3Bhbj57eyBpc0N1c3RvbUNvbG9yKCkgPyAnQ2hhbmdlIEN1c3RvbS4uLicgOiAnQ3VzdG9tLi4uJyB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxyXG4gICAgICAgICAgPC9tYXQtc2VsZWN0PlxyXG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPCEtLSBUcmlnZ2VyIFN0eWxlIFJvdyAtLT5cclxuICAgIDxkaXYgY2xhc3M9XCJzZXR0aW5ncy1yb3dcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvdy1pbmZvXCI+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJyb3ctbGFiZWxcIj5UcmlnZ2VyIFN0eWxlPC9zcGFuPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvdy1hY3Rpb25cIj5cclxuICAgICAgICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cIm91dGxpbmVcIiBzdWJzY3JpcHRTaXppbmc9XCJkeW5hbWljXCI+XHJcbiAgICAgICAgICA8bWF0LXNlbGVjdFxyXG4gICAgICAgICAgICBbdmFsdWVdPVwic2V0dGluZ3MuYXBwZWFyYW5jZS5idXR0b25TdHlsZVwiXHJcbiAgICAgICAgICAgIChzZWxlY3Rpb25DaGFuZ2UpPVwib25CdXR0b25TdHlsZVNlbGVjdC5lbWl0KCRldmVudC52YWx1ZSlcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8bWF0LXNlbGVjdC10cmlnZ2VyPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3RlZC1vcHRpb24tdHJpZ2dlclwiPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1pY29uPnt7IGdldFN0eWxlSWNvbihzZXR0aW5ncy5hcHBlYXJhbmNlLmJ1dHRvblN0eWxlKSB9fTwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICA8c3Bhbj57eyBnZXRTdHlsZUxhYmVsKHNldHRpbmdzLmFwcGVhcmFuY2UuYnV0dG9uU3R5bGUpIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L21hdC1zZWxlY3QtdHJpZ2dlcj5cclxuICAgICAgICAgICAgPG1hdC1vcHRpb24gdmFsdWU9XCJmYWJcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwib3B0aW9uLWNvbnRlbnRcIj5cclxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5yYWRpb19idXR0b25fY2hlY2tlZDwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICA8c3Bhbj5GQUI8L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cclxuICAgICAgICAgICAgPG1hdC1vcHRpb24gdmFsdWU9XCJzaWRlYmFyXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm9wdGlvbi1jb250ZW50XCI+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWljb24+dmlld19zaWRlYmFyPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuPlNpZGViYXI8L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cclxuICAgICAgICAgICAgPG1hdC1vcHRpb24gdmFsdWU9XCJzaWRlYmFyLXRvcFwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvcHRpb24tY29udGVudFwiPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1pY29uPnZlcnRpY2FsX2FsaWduX3RvcDwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICA8c3Bhbj5TaWRlYmFyIFRvcDwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxyXG4gICAgICAgICAgICA8bWF0LW9wdGlvbiB2YWx1ZT1cInNpZGViYXItYm90dG9tXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm9wdGlvbi1jb250ZW50XCI+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWljb24+dmVydGljYWxfYWxpZ25fYm90dG9tPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuPlNpZGViYXIgQm90dG9tPC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L21hdC1vcHRpb24+XHJcbiAgICAgICAgICA8L21hdC1zZWxlY3Q+XHJcbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8IS0tIExhbmd1YWdlIFBsYWNlaG9sZGVyIC0tPlxyXG4gICAgPGRpdiBjbGFzcz1cInNldHRpbmdzLXJvd1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93LWluZm9cIj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cInJvdy1sYWJlbFwiPkxhbmd1YWdlPC9zcGFuPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvdy1hY3Rpb25cIj5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwicGlsbC1idG5cIj5BdXRvLWRldGVjdDwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDwhLS0gVm9pY2UgUGxhY2Vob2xkZXIgLS0+XHJcbiAgICA8ZGl2IGNsYXNzPVwic2V0dGluZ3Mtcm93XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3ctaW5mb1wiPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwicm93LWxhYmVsXCI+Vm9pY2U8L3NwYW4+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93LWFjdGlvblwiPlxyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJwaWxsLWJ0blwiPkNvdmU8L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8IS0tIERhdGEgQ29udHJvbHMgUGxhY2Vob2xkZXIgLS0+XHJcbiAgICA8ZGl2IGNsYXNzPVwic2V0dGluZ3Mtcm93XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3ctaW5mb1wiPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwicm93LWxhYmVsXCI+RGF0YSBjb250cm9sczwvc3Bhbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3ctYWN0aW9uXCI+XHJcbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInBpbGwtYnRuXCI+TWFuYWdlPC9idXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJzZWN0aW9uLWFjdGlvbnNcIj5cclxuICAgIDxidXR0b24gbWF0LWJ1dHRvbiBjbGFzcz1cInJlc2V0LWJ0blwiIChjbGljayk9XCJvblJlc2V0LmVtaXQoKVwiPlJlc2V0PC9idXR0b24+XHJcbiAgICA8ZGl2IGNsYXNzPVwic3BhY2VyXCI+PC9kaXY+XHJcbiAgICA8YnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIGNsYXNzPVwic2F2ZS1idG5cIiAoY2xpY2spPVwib25TYXZlLmVtaXQoKVwiPlxyXG4gICAgICBBcHBseSBDaGFuZ2VzXHJcbiAgICA8L2J1dHRvbj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import { Component, Input } from '@angular/core';
|
|
2
|
-
import { CommonModule } from '@angular/common';
|
|
3
|
-
import { MatIconModule } from '@angular/material/icon';
|
|
4
|
-
import { AppEntity } from '../../../../constant/html-entities';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
export class ProfileSectionComponent {
|
|
7
|
-
constructor() {
|
|
8
|
-
this.username = 'User';
|
|
9
|
-
this.userImageUrl = null;
|
|
10
|
-
this.userRole = 'Doohbot User';
|
|
11
|
-
this.appEntity = AppEntity;
|
|
12
|
-
}
|
|
13
|
-
get initials() {
|
|
14
|
-
return this.username ? this.username.charAt(0).toUpperCase() : 'U';
|
|
15
|
-
}
|
|
16
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ProfileSectionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
17
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: ProfileSectionComponent, isStandalone: true, selector: "app-profile-section", inputs: { username: "username", userImageUrl: "userImageUrl", userRole: "userRole" }, ngImport: i0, template: "<div class=\"section-pane active\">\r\n <header class=\"pane-header\">\r\n <h1>My Profile</h1>\r\n <p>Manage your account details and personal information.</p>\r\n </header>\r\n\r\n <div class=\"pane-content\">\r\n <div class=\"profile-card\">\r\n <div class=\"avatar-section\">\r\n <div class=\"letter-avatar\" [class.has-image]=\"!!userImageUrl\">\r\n @if (userImageUrl) {\r\n <img [src]=\"userImageUrl\" [alt]=\"username\" class=\"profile-img\" />\r\n } @else {\r\n {{ initials }}\r\n }\r\n </div>\r\n <div class=\"user-main-info\">\r\n <h2>{{ username }}</h2>\r\n <p class=\"role-badge\">{{ userRole }}</p>\r\n </div>\r\n </div>\r\n\r\n <div class=\"info-grid\">\r\n <div class=\"info-item\">\r\n <label>Full Name</label>\r\n <div class=\"info-value\">{{ username }}</div>\r\n </div>\r\n <div class=\"info-item\">\r\n <label>Email Address</label>\r\n <div class=\"info-value\">\r\n <div class=\"info-value\">user@adzen.tech</div>\r\n </div>\r\n <!-- Mock/Placeholder for now -->\r\n </div>\r\n <div class=\"info-item\">\r\n <label>Organization</label>\r\n <div class=\"info-value\">Adzen Tech Private Limited</div>\r\n </div>\r\n <div class=\"info-item\">\r\n <label>Member Since</label>\r\n <div class=\"info-value\">January 2026</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".section-pane{padding:40px 60px;display:flex;flex-direction:column;gap:32px;animation:slideIn .3s ease-out}.pane-header h1{margin:0 0 8px;font-size:1.75rem;font-weight:700;color:var(--text-color)}.pane-header p{margin:0;font-size:1rem;color:var(--secondary-text-color)}.pane-content{display:flex;flex-direction:column;gap:40px}.profile-card{background:rgba(var(--black-rgb),.02);border-radius:16px;border:1px solid var(--border-color);padding:32px;display:flex;flex-direction:column;gap:32px;box-shadow:0 4px 12px #0000000d}.profile-card .avatar-section{display:flex;align-items:center;gap:24px}.profile-card .avatar-section .letter-avatar{width:80px;height:80px;border-radius:20px;background:linear-gradient(135deg,var(--primary-color),var(--primary-color-rgb));color:var(--white);display:flex;align-items:center;justify-content:center;font-size:2rem;font-weight:700;box-shadow:0 8px 16px rgba(var(--primary-color-rgb),.3);overflow:hidden}.profile-card .avatar-section .letter-avatar.has-image{background:var(--border-color);box-shadow:0 4px 12px #0000001a}.profile-card .avatar-section .letter-avatar .profile-img{width:100%;height:100%;object-fit:cover}.profile-card .avatar-section .user-main-info h2{margin:0 0 4px;font-size:1.5rem;font-weight:700;color:var(--text-color)}.profile-card .avatar-section .user-main-info .role-badge{margin:0;display:inline-block;padding:4px 10px;background:rgba(var(--primary-color-rgb),.1);color:var(--primary-color);border-radius:20px;font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.5px}.profile-card .info-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:24px}.profile-card .info-grid .info-item{display:flex;flex-direction:column;gap:6px}.profile-card .info-grid .info-item label{font-size:.75rem;font-weight:600;text-transform:uppercase;color:var(--secondary-text-color);letter-spacing:.5px}.profile-card .info-grid .info-item .info-value{font-size:1rem;font-weight:500;color:var(--text-color)}@keyframes slideIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: MatIconModule }] }); }
|
|
18
|
-
}
|
|
19
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ProfileSectionComponent, decorators: [{
|
|
20
|
-
type: Component,
|
|
21
|
-
args: [{ selector: 'app-profile-section', standalone: true, imports: [CommonModule, MatIconModule], template: "<div class=\"section-pane active\">\r\n <header class=\"pane-header\">\r\n <h1>My Profile</h1>\r\n <p>Manage your account details and personal information.</p>\r\n </header>\r\n\r\n <div class=\"pane-content\">\r\n <div class=\"profile-card\">\r\n <div class=\"avatar-section\">\r\n <div class=\"letter-avatar\" [class.has-image]=\"!!userImageUrl\">\r\n @if (userImageUrl) {\r\n <img [src]=\"userImageUrl\" [alt]=\"username\" class=\"profile-img\" />\r\n } @else {\r\n {{ initials }}\r\n }\r\n </div>\r\n <div class=\"user-main-info\">\r\n <h2>{{ username }}</h2>\r\n <p class=\"role-badge\">{{ userRole }}</p>\r\n </div>\r\n </div>\r\n\r\n <div class=\"info-grid\">\r\n <div class=\"info-item\">\r\n <label>Full Name</label>\r\n <div class=\"info-value\">{{ username }}</div>\r\n </div>\r\n <div class=\"info-item\">\r\n <label>Email Address</label>\r\n <div class=\"info-value\">\r\n <div class=\"info-value\">user@adzen.tech</div>\r\n </div>\r\n <!-- Mock/Placeholder for now -->\r\n </div>\r\n <div class=\"info-item\">\r\n <label>Organization</label>\r\n <div class=\"info-value\">Adzen Tech Private Limited</div>\r\n </div>\r\n <div class=\"info-item\">\r\n <label>Member Since</label>\r\n <div class=\"info-value\">January 2026</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".section-pane{padding:40px 60px;display:flex;flex-direction:column;gap:32px;animation:slideIn .3s ease-out}.pane-header h1{margin:0 0 8px;font-size:1.75rem;font-weight:700;color:var(--text-color)}.pane-header p{margin:0;font-size:1rem;color:var(--secondary-text-color)}.pane-content{display:flex;flex-direction:column;gap:40px}.profile-card{background:rgba(var(--black-rgb),.02);border-radius:16px;border:1px solid var(--border-color);padding:32px;display:flex;flex-direction:column;gap:32px;box-shadow:0 4px 12px #0000000d}.profile-card .avatar-section{display:flex;align-items:center;gap:24px}.profile-card .avatar-section .letter-avatar{width:80px;height:80px;border-radius:20px;background:linear-gradient(135deg,var(--primary-color),var(--primary-color-rgb));color:var(--white);display:flex;align-items:center;justify-content:center;font-size:2rem;font-weight:700;box-shadow:0 8px 16px rgba(var(--primary-color-rgb),.3);overflow:hidden}.profile-card .avatar-section .letter-avatar.has-image{background:var(--border-color);box-shadow:0 4px 12px #0000001a}.profile-card .avatar-section .letter-avatar .profile-img{width:100%;height:100%;object-fit:cover}.profile-card .avatar-section .user-main-info h2{margin:0 0 4px;font-size:1.5rem;font-weight:700;color:var(--text-color)}.profile-card .avatar-section .user-main-info .role-badge{margin:0;display:inline-block;padding:4px 10px;background:rgba(var(--primary-color-rgb),.1);color:var(--primary-color);border-radius:20px;font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.5px}.profile-card .info-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:24px}.profile-card .info-grid .info-item{display:flex;flex-direction:column;gap:6px}.profile-card .info-grid .info-item label{font-size:.75rem;font-weight:600;text-transform:uppercase;color:var(--secondary-text-color);letter-spacing:.5px}.profile-card .info-grid .info-item .info-value{font-size:1rem;font-weight:500;color:var(--text-color)}@keyframes slideIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}\n"] }]
|
|
22
|
-
}], propDecorators: { username: [{
|
|
23
|
-
type: Input
|
|
24
|
-
}], userImageUrl: [{
|
|
25
|
-
type: Input
|
|
26
|
-
}], userRole: [{
|
|
27
|
-
type: Input
|
|
28
|
-
}] } });
|
|
29
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZmlsZS1zZWN0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rvb2hib3Qvc3JjL2xpYi9hcHAvcGVyc29uYWxpemF0aW9uL3NlY3Rpb25zL3Byb2ZpbGUvcHJvZmlsZS1zZWN0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rvb2hib3Qvc3JjL2xpYi9hcHAvcGVyc29uYWxpemF0aW9uL3NlY3Rpb25zL3Byb2ZpbGUvcHJvZmlsZS1zZWN0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLG9DQUFvQyxDQUFDOztBQVMvRCxNQUFNLE9BQU8sdUJBQXVCO0lBUHBDO1FBUVcsYUFBUSxHQUFXLE1BQU0sQ0FBQztRQUMxQixpQkFBWSxHQUFrQixJQUFJLENBQUM7UUFDbkMsYUFBUSxHQUFXLGNBQWMsQ0FBQztRQUUzQyxjQUFTLEdBQUcsU0FBUyxDQUFDO0tBS3ZCO0lBSEMsSUFBSSxRQUFRO1FBQ1YsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO0lBQ3JFLENBQUM7K0dBVFUsdUJBQXVCO21HQUF2Qix1QkFBdUIscUtDWnBDLHdqREE4Q0EsNmtFRHRDWSxZQUFZLDhCQUFFLGFBQWE7OzRGQUkxQix1QkFBdUI7a0JBUG5DLFNBQVM7K0JBQ0UscUJBQXFCLGNBQ25CLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxhQUFhLENBQUM7OEJBSzdCLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XHJcbmltcG9ydCB7IEFwcEVudGl0eSB9IGZyb20gJy4uLy4uLy4uLy4uL2NvbnN0YW50L2h0bWwtZW50aXRpZXMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtcHJvZmlsZS1zZWN0aW9uJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIE1hdEljb25Nb2R1bGVdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9wcm9maWxlLXNlY3Rpb24uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3Byb2ZpbGUtc2VjdGlvbi5jb21wb25lbnQuc2NzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgUHJvZmlsZVNlY3Rpb25Db21wb25lbnQge1xyXG4gIEBJbnB1dCgpIHVzZXJuYW1lOiBzdHJpbmcgPSAnVXNlcic7XHJcbiAgQElucHV0KCkgdXNlckltYWdlVXJsOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcclxuICBASW5wdXQoKSB1c2VyUm9sZTogc3RyaW5nID0gJ0Rvb2hib3QgVXNlcic7XHJcblxyXG4gIGFwcEVudGl0eSA9IEFwcEVudGl0eTtcclxuXHJcbiAgZ2V0IGluaXRpYWxzKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy51c2VybmFtZSA/IHRoaXMudXNlcm5hbWUuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgOiAnVSc7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJzZWN0aW9uLXBhbmUgYWN0aXZlXCI+XHJcbiAgPGhlYWRlciBjbGFzcz1cInBhbmUtaGVhZGVyXCI+XHJcbiAgICA8aDE+TXkgUHJvZmlsZTwvaDE+XHJcbiAgICA8cD5NYW5hZ2UgeW91ciBhY2NvdW50IGRldGFpbHMgYW5kIHBlcnNvbmFsIGluZm9ybWF0aW9uLjwvcD5cclxuICA8L2hlYWRlcj5cclxuXHJcbiAgPGRpdiBjbGFzcz1cInBhbmUtY29udGVudFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cInByb2ZpbGUtY2FyZFwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLXNlY3Rpb25cIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibGV0dGVyLWF2YXRhclwiIFtjbGFzcy5oYXMtaW1hZ2VdPVwiISF1c2VySW1hZ2VVcmxcIj5cclxuICAgICAgICAgIEBpZiAodXNlckltYWdlVXJsKSB7XHJcbiAgICAgICAgICAgIDxpbWcgW3NyY109XCJ1c2VySW1hZ2VVcmxcIiBbYWx0XT1cInVzZXJuYW1lXCIgY2xhc3M9XCJwcm9maWxlLWltZ1wiIC8+XHJcbiAgICAgICAgICB9IEBlbHNlIHtcclxuICAgICAgICAgICAge3sgaW5pdGlhbHMgfX1cclxuICAgICAgICAgIH1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidXNlci1tYWluLWluZm9cIj5cclxuICAgICAgICAgIDxoMj57eyB1c2VybmFtZSB9fTwvaDI+XHJcbiAgICAgICAgICA8cCBjbGFzcz1cInJvbGUtYmFkZ2VcIj57eyB1c2VyUm9sZSB9fTwvcD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwiaW5mby1ncmlkXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImluZm8taXRlbVwiPlxyXG4gICAgICAgICAgPGxhYmVsPkZ1bGwgTmFtZTwvbGFiZWw+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5mby12YWx1ZVwiPnt7IHVzZXJuYW1lIH19PC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImluZm8taXRlbVwiPlxyXG4gICAgICAgICAgPGxhYmVsPkVtYWlsIEFkZHJlc3M8L2xhYmVsPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImluZm8tdmFsdWVcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImluZm8tdmFsdWVcIj51c2VyJiM2NDthZHplbi50ZWNoPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwhLS0gTW9jay9QbGFjZWhvbGRlciBmb3Igbm93IC0tPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbmZvLWl0ZW1cIj5cclxuICAgICAgICAgIDxsYWJlbD5Pcmdhbml6YXRpb248L2xhYmVsPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImluZm8tdmFsdWVcIj5BZHplbiBUZWNoIFByaXZhdGUgTGltaXRlZDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbmZvLWl0ZW1cIj5cclxuICAgICAgICAgIDxsYWJlbD5NZW1iZXIgU2luY2U8L2xhYmVsPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImluZm8tdmFsdWVcIj5KYW51YXJ5IDIwMjY8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
|