@tuki-io/tuki-widgets 0.0.219-dev.0 → 0.0.220
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/README.md +24 -25
- package/contact-center/cc-readiness/cc-readiness.module.d.ts +19 -0
- package/contact-center/cc-readiness/cc-readiness.service.d.ts +13 -0
- package/contact-center/cc-readiness/components/card/card.component.d.ts +6 -0
- package/contact-center/cc-readiness/types/cc-readiness.d.ts +16 -0
- package/contact-center/cc-readiness/widgets/licences-requirement/licences-requirement.component.d.ts +54 -0
- package/contact-center/cc-readiness/widgets/summary-grid/summary-grid.component.d.ts +27 -0
- package/contact-center/cc-script-editor/cc-script-editor.component.d.ts +53 -0
- package/contact-center/cc-script-editor/cc-script-editor.module.d.ts +20 -0
- package/contact-center/cc-script-editor/components/dialogs/add-node-dialog/add-node-dialog.component.d.ts +35 -0
- package/contact-center/cc-script-editor/components/dialogs/link-node-dialog/link-node-dialog.component.d.ts +38 -0
- package/contact-center/cc-script-editor/components/floating-toolbar/floating-toolbar.component.d.ts +34 -0
- package/contact-center/cc-script-editor/components/floating-toolbar/floating-toolbar.module.d.ts +9 -0
- package/contact-center/cc-script-editor/components/node-action-toolbar/node-action-toolbar.component.d.ts +27 -0
- package/contact-center/cc-script-editor/components/node-details-sidebar/node-details-sidebar.component.d.ts +27 -0
- package/contact-center/cc-script-editor/components/node-search-panel/node-search-panel.component.d.ts +14 -0
- package/contact-center/cc-script-editor/components/wxcc-actions-bar/wxcc-actions-bar.component.d.ts +11 -0
- package/contact-center/cc-script-editor/components/wxcc-file-selection-bar/wxcc-file-selection-bar.component.d.ts +24 -0
- package/contact-center/cc-script-editor/components/wxcc-flowchart/wxcc-flowchart.component.d.ts +68 -0
- package/contact-center/cc-script-editor/constants/cytoscape.config.d.ts +2 -0
- package/contact-center/cc-script-editor/constants/wxcc-api.constants.d.ts +15 -0
- package/contact-center/cc-script-editor/services/cystoscape-viewport.service.d.ts +21 -0
- package/contact-center/cc-script-editor/services/wxcc-activity-creation.service.d.ts +21 -0
- package/contact-center/cc-script-editor/services/wxcc-activity-manage.service.d.ts +8 -0
- package/contact-center/cc-script-editor/services/wxcc-flow-api.service.d.ts +43 -0
- package/contact-center/cc-script-editor/services/wxcc2graph.service.d.ts +42 -0
- package/contact-center/cc-script-editor/types/extended-activity.d.ts +47 -0
- package/contact-center/cc-script-editor/types/wxcc-activity.d.ts +96 -0
- package/contact-center/cc-script-editor/types/wxcc.d.ts +161 -0
- package/contact-center/cc-script-editor/utils/node-html-template.d.ts +3 -0
- package/contact-center/cc-script-editor/utils/node-mappings.d.ts +54 -0
- package/contact-center/index.d.ts +5 -0
- package/contact-center/public-api.d.ts +5 -0
- package/contact-center/shared/api.endpoints.d.ts +6 -0
- package/contact-center/shared/api.service.d.ts +20 -0
- package/contact-center/shared/material.module.d.ts +16 -0
- package/contact-center/shared/shared.module.d.ts +10 -0
- package/di2mt/api/api.endpoints.d.ts +32 -0
- package/di2mt/index.d.ts +5 -0
- package/di2mt/public-api.d.ts +14 -0
- package/di2mt/shared/components/card/card.component.d.ts +6 -0
- package/di2mt/shared/components/chart-card/chart-card.component.d.ts +23 -0
- package/di2mt/shared/components/stat-card/stat-card.component.d.ts +15 -0
- package/di2mt/shared/components/status-list-card/status-list-card.component.d.ts +15 -0
- package/di2mt/shared/components/summary-card/summary-card.component.d.ts +9 -0
- package/di2mt/shared/components/table-filters/table-filters.component.d.ts +14 -0
- package/di2mt/shared/constants/app.constants.d.ts +74 -0
- package/di2mt/shared/material.module.d.ts +15 -0
- package/di2mt/shared/services/api.service.d.ts +20 -0
- package/di2mt/shared/shared.module.d.ts +16 -0
- package/di2mt/shared/types/constants.d.ts +15 -0
- package/di2mt/shared/types/data-table.d.ts +5 -0
- package/di2mt/shared/types/table/filter.d.ts +16 -0
- package/di2mt/widgets/site-upgrade/progress-bar/progress-bar.component.d.ts +11 -0
- package/di2mt/widgets/site-upgrade/site-upgrade-data-table/site-upgrade-data-table.component.d.ts +70 -0
- package/di2mt/widgets/site-upgrade/site-upgrade.module.d.ts +15 -0
- package/di2mt/widgets/site-upgrade/site-upgrade.service.d.ts +84 -0
- package/di2mt/widgets/site-upgrade/types/user-upgrade.d.ts +26 -0
- package/di2mt/widgets/upgrade-overview/cards/already-upgraded-sites/already-upgraded-sites-card.component.d.ts +20 -0
- package/di2mt/widgets/upgrade-overview/cards/already-upgraded-users/already-upgraded-users-card.component.d.ts +20 -0
- package/di2mt/widgets/upgrade-overview/cards/pending-activation-users/pending-activation-users.component.d.ts +20 -0
- package/di2mt/widgets/upgrade-overview/cards/preconditions-status-list/preconditions-status-list-card.component.d.ts +19 -0
- package/di2mt/widgets/upgrade-overview/cards/ready-to-upgrade-sites/ready-to-upgrade-sites-card.component.d.ts +20 -0
- package/di2mt/widgets/upgrade-overview/cards/ready-to-upgrade-users/ready-to-upgrade-users-card.component.d.ts +20 -0
- package/di2mt/widgets/upgrade-overview/cards/site-infrastructure-status-list/site-infrastructure-status-list-card.component.d.ts +16 -0
- package/di2mt/widgets/upgrade-overview/cards/upgrade-state-comparison-chart/upgrade-state-comparison-chart-card.component.d.ts +19 -0
- package/di2mt/widgets/upgrade-overview/types/upgrade-overview.d.ts +57 -0
- package/di2mt/widgets/upgrade-overview/upgrade-overview.module.d.ts +16 -0
- package/di2mt/widgets/upgrade-overview/upgrade-overview.service.d.ts +18 -0
- package/di2mt/widgets/user-upgrade/types/user-upgrade.d.ts +32 -0
- package/di2mt/widgets/user-upgrade/user-upgrade-data-table/user-upgrade-data-table.component.d.ts +80 -0
- package/di2mt/widgets/user-upgrade/user-upgrade.module.d.ts +16 -0
- package/di2mt/widgets/user-upgrade/user-upgrade.service.d.ts +41 -0
- package/esm2020/contact-center/cc-readiness/cc-readiness.module.mjs +71 -0
- package/esm2020/contact-center/cc-readiness/cc-readiness.service.mjs +38 -0
- package/esm2020/contact-center/cc-readiness/components/card/card.component.mjs +13 -0
- package/esm2020/contact-center/cc-readiness/types/cc-readiness.mjs +3 -0
- package/esm2020/contact-center/cc-readiness/widgets/licences-requirement/licences-requirement.component.mjs +194 -0
- package/esm2020/contact-center/cc-readiness/widgets/summary-grid/summary-grid.component.mjs +50 -0
- package/esm2020/contact-center/cc-script-editor/cc-script-editor.component.mjs +193 -0
- package/esm2020/contact-center/cc-script-editor/cc-script-editor.module.mjs +83 -0
- package/esm2020/contact-center/cc-script-editor/components/dialogs/add-node-dialog/add-node-dialog.component.mjs +60 -0
- package/esm2020/contact-center/cc-script-editor/components/dialogs/link-node-dialog/link-node-dialog.component.mjs +83 -0
- package/esm2020/contact-center/cc-script-editor/components/floating-toolbar/floating-toolbar.component.mjs +104 -0
- package/esm2020/contact-center/cc-script-editor/components/floating-toolbar/floating-toolbar.module.mjs +28 -0
- package/esm2020/contact-center/cc-script-editor/components/node-action-toolbar/node-action-toolbar.component.mjs +65 -0
- package/esm2020/contact-center/cc-script-editor/components/node-details-sidebar/node-details-sidebar.component.mjs +97 -0
- package/esm2020/contact-center/cc-script-editor/components/node-search-panel/node-search-panel.component.mjs +43 -0
- package/esm2020/contact-center/cc-script-editor/components/wxcc-actions-bar/wxcc-actions-bar.component.mjs +27 -0
- package/esm2020/contact-center/cc-script-editor/components/wxcc-file-selection-bar/wxcc-file-selection-bar.component.mjs +61 -0
- package/esm2020/contact-center/cc-script-editor/components/wxcc-flowchart/wxcc-flowchart.component.mjs +434 -0
- package/esm2020/contact-center/cc-script-editor/constants/cytoscape.config.mjs +72 -0
- package/esm2020/contact-center/cc-script-editor/constants/wxcc-api.constants.mjs +14 -0
- package/esm2020/contact-center/cc-script-editor/services/cystoscape-viewport.service.mjs +65 -0
- package/esm2020/contact-center/cc-script-editor/services/wxcc-activity-creation.service.mjs +82 -0
- package/esm2020/contact-center/cc-script-editor/services/wxcc-activity-manage.service.mjs +162 -0
- package/esm2020/contact-center/cc-script-editor/services/wxcc-flow-api.service.mjs +79 -0
- package/esm2020/contact-center/cc-script-editor/services/wxcc2graph.service.mjs +144 -0
- package/esm2020/contact-center/cc-script-editor/types/extended-activity.mjs +4 -0
- package/esm2020/contact-center/cc-script-editor/types/wxcc-activity.mjs +2 -0
- package/esm2020/contact-center/cc-script-editor/types/wxcc.mjs +6 -0
- package/esm2020/contact-center/cc-script-editor/utils/node-html-template.mjs +76 -0
- package/esm2020/contact-center/cc-script-editor/utils/node-mappings.mjs +109 -0
- package/esm2020/contact-center/public-api.mjs +6 -0
- package/esm2020/contact-center/shared/api.endpoints.mjs +7 -0
- package/esm2020/contact-center/shared/api.service.mjs +81 -0
- package/esm2020/contact-center/shared/material.module.mjs +80 -0
- package/esm2020/contact-center/shared/shared.module.mjs +33 -0
- package/esm2020/contact-center/tuki-io-tuki-widgets-contact-center.mjs +5 -0
- package/esm2020/di2mt/api/api.endpoints.mjs +33 -0
- package/esm2020/di2mt/public-api.mjs +25 -0
- package/esm2020/di2mt/shared/components/card/card.component.mjs +13 -0
- package/esm2020/di2mt/shared/components/chart-card/chart-card.component.mjs +66 -0
- package/esm2020/di2mt/shared/components/stat-card/stat-card.component.mjs +65 -0
- package/esm2020/di2mt/shared/components/status-list-card/status-list-card.component.mjs +43 -0
- package/esm2020/di2mt/shared/components/summary-card/summary-card.component.mjs +36 -0
- package/esm2020/di2mt/shared/components/table-filters/table-filters.component.mjs +37 -0
- package/esm2020/di2mt/shared/constants/app.constants.mjs +95 -0
- package/esm2020/di2mt/shared/material.module.mjs +76 -0
- package/esm2020/di2mt/shared/services/api.service.mjs +81 -0
- package/esm2020/di2mt/shared/shared.module.mjs +63 -0
- package/esm2020/di2mt/shared/types/constants.mjs +20 -0
- package/esm2020/di2mt/shared/types/data-table.mjs +2 -0
- package/esm2020/di2mt/shared/types/table/filter.mjs +2 -0
- package/esm2020/di2mt/tuki-io-tuki-widgets-di2mt.mjs +5 -0
- package/esm2020/di2mt/widgets/site-upgrade/progress-bar/progress-bar.component.mjs +38 -0
- package/esm2020/di2mt/widgets/site-upgrade/site-upgrade-data-table/site-upgrade-data-table.component.mjs +438 -0
- package/esm2020/di2mt/widgets/site-upgrade/site-upgrade.module.mjs +53 -0
- package/esm2020/di2mt/widgets/site-upgrade/site-upgrade.service.mjs +93 -0
- package/esm2020/di2mt/widgets/site-upgrade/types/user-upgrade.mjs +3 -0
- package/esm2020/di2mt/widgets/upgrade-overview/cards/already-upgraded-sites/already-upgraded-sites-card.component.mjs +67 -0
- package/esm2020/di2mt/widgets/upgrade-overview/cards/already-upgraded-users/already-upgraded-users-card.component.mjs +71 -0
- package/esm2020/di2mt/widgets/upgrade-overview/cards/pending-activation-users/pending-activation-users.component.mjs +83 -0
- package/esm2020/di2mt/widgets/upgrade-overview/cards/preconditions-status-list/preconditions-status-list-card.component.mjs +86 -0
- package/esm2020/di2mt/widgets/upgrade-overview/cards/ready-to-upgrade-sites/ready-to-upgrade-sites-card.component.mjs +48 -0
- package/esm2020/di2mt/widgets/upgrade-overview/cards/ready-to-upgrade-users/ready-to-upgrade-users-card.component.mjs +48 -0
- package/esm2020/di2mt/widgets/upgrade-overview/cards/site-infrastructure-status-list/site-infrastructure-status-list-card.component.mjs +89 -0
- package/esm2020/di2mt/widgets/upgrade-overview/cards/upgrade-state-comparison-chart/upgrade-state-comparison-chart-card.component.mjs +77 -0
- package/esm2020/di2mt/widgets/upgrade-overview/types/upgrade-overview.mjs +2 -0
- package/esm2020/di2mt/widgets/upgrade-overview/upgrade-overview.module.mjs +64 -0
- package/esm2020/di2mt/widgets/upgrade-overview/upgrade-overview.service.mjs +93 -0
- package/esm2020/di2mt/widgets/user-upgrade/types/user-upgrade.mjs +3 -0
- package/esm2020/di2mt/widgets/user-upgrade/user-upgrade-data-table/user-upgrade-data-table.component.mjs +379 -0
- package/esm2020/di2mt/widgets/user-upgrade/user-upgrade.module.mjs +59 -0
- package/esm2020/di2mt/widgets/user-upgrade/user-upgrade.service.mjs +80 -0
- package/esm2020/lib/widgets.component.mjs +22 -0
- package/esm2020/lib/widgets.module.mjs +21 -0
- package/esm2020/lib/widgets.service.mjs +14 -0
- package/esm2020/public-api.mjs +7 -0
- package/esm2020/tuki-io-tuki-widgets.mjs +5 -0
- package/esm2020/user-creation/public-api.mjs +13 -0
- package/esm2020/user-creation/src/app.constants.mjs +30 -0
- package/esm2020/user-creation/src/classes/notification.mjs +32 -0
- package/esm2020/user-creation/src/classes/site.mjs +53 -0
- package/esm2020/user-creation/src/environments/environment.mjs +11 -0
- package/esm2020/user-creation/src/interfaces/user-creation-wizard.interfaces.mjs +199 -0
- package/esm2020/user-creation/src/shared/api/api.service.mjs +81 -0
- package/esm2020/user-creation/src/shared/components/notification/notification.component.mjs +38 -0
- package/esm2020/user-creation/src/shared/material.module.mjs +104 -0
- package/esm2020/user-creation/src/shared/pipes/truncate.pipe.mjs +30 -0
- package/esm2020/user-creation/src/shared/services/notification.service.mjs +62 -0
- package/esm2020/user-creation/src/shared/services/user-creation-api.service.mjs +116 -0
- package/esm2020/user-creation/src/shared/services/utils.mjs +19 -0
- package/esm2020/user-creation/src/shared/shared.module.mjs +56 -0
- package/esm2020/user-creation/src/user-creation.module.mjs +102 -0
- package/esm2020/user-creation/src/utils/app-loader/app-loader.mjs +14 -0
- package/esm2020/user-creation/src/utils/build-savable-end-user.mjs +147 -0
- package/esm2020/user-creation/src/utils/device-default-prefix.mjs +13 -0
- package/esm2020/user-creation/src/utils/device-name-validation.mjs +23 -0
- package/esm2020/user-creation/src/utils/model.mjs +19 -0
- package/esm2020/user-creation/src/utils/parse-device-name-rule.mjs +26 -0
- package/esm2020/user-creation/src/widgets/user-creation-wizard/components/user-details-step/user-details-step.component.mjs +521 -0
- package/esm2020/user-creation/src/widgets/user-creation-wizard/components/user-overview-step/user-overview-step.component.mjs +19 -0
- package/esm2020/user-creation/src/widgets/user-creation-wizard/components/user-template-step/user-template-step.component.mjs +176 -0
- package/esm2020/user-creation/src/widgets/user-creation-wizard/user-creation-wizard.component.mjs +127 -0
- package/esm2020/user-creation/src/widgets/user-creation-wizard/user-creation-wizard.service.mjs +796 -0
- package/esm2020/user-creation/tuki-io-tuki-widgets-user-creation.mjs +5 -0
- package/esm2020/user-device-manage/public-api.mjs +9 -0
- package/esm2020/user-device-manage/src/app.constants.mjs +98 -0
- package/esm2020/user-device-manage/src/classes/device.mjs +85 -0
- package/esm2020/user-device-manage/src/classes/deviceProfile.mjs +40 -0
- package/esm2020/user-device-manage/src/classes/line-association-interface.mjs +2 -0
- package/esm2020/user-device-manage/src/classes/line-association.mjs +121 -0
- package/esm2020/user-device-manage/src/classes/line-call-info-display.mjs +10 -0
- package/esm2020/user-device-manage/src/classes/line-directory.mjs +27 -0
- package/esm2020/user-device-manage/src/classes/line.mjs +18 -0
- package/esm2020/user-device-manage/src/classes/notification.mjs +32 -0
- package/esm2020/user-device-manage/src/classes/recording-options.mjs +7 -0
- package/esm2020/user-device-manage/src/classes/simplified-user.mjs +111 -0
- package/esm2020/user-device-manage/src/classes/site-defaults.mjs +21 -0
- package/esm2020/user-device-manage/src/classes/translation-pattern.mjs +32 -0
- package/esm2020/user-device-manage/src/classes/types.mjs +24 -0
- package/esm2020/user-device-manage/src/common-functions.mjs +19 -0
- package/esm2020/user-device-manage/src/confirm-dialog/info-dialog.component.mjs +34 -0
- package/esm2020/user-device-manage/src/device-associated-line/associated-line-row/associated-line-row.component.mjs +31 -0
- package/esm2020/user-device-manage/src/device-associated-line/device-associated-line-details-box/device-associated-line-details-box.component.mjs +16 -0
- package/esm2020/user-device-manage/src/device-associated-line/device-associated-line-extension/device-associated-line-extension.component.mjs +74 -0
- package/esm2020/user-device-manage/src/device-associated-line/device-associated-line.component.mjs +179 -0
- package/esm2020/user-device-manage/src/device-info/device-info.component.mjs +43 -0
- package/esm2020/user-device-manage/src/device-list/device-list.component.mjs +24 -0
- package/esm2020/user-device-manage/src/device-manage-widget.component.mjs +178 -0
- package/esm2020/user-device-manage/src/environments/environment.mjs +11 -0
- package/esm2020/user-device-manage/src/interseptors/auth.interceptor.mjs +36 -0
- package/esm2020/user-device-manage/src/lazy-loading-select/lazy-loading-select.component.mjs +74 -0
- package/esm2020/user-device-manage/src/material.module.mjs +192 -0
- package/esm2020/user-device-manage/src/notifications/notification.component.mjs +35 -0
- package/esm2020/user-device-manage/src/pipes/mac-address.pipe.mjs +26 -0
- package/esm2020/user-device-manage/src/services/api.service.mjs +79 -0
- package/esm2020/user-device-manage/src/services/device.service.mjs +83 -0
- package/esm2020/user-device-manage/src/services/dns.service.mjs +136 -0
- package/esm2020/user-device-manage/src/services/line.service.mjs +76 -0
- package/esm2020/user-device-manage/src/services/notification.service.mjs +62 -0
- package/esm2020/user-device-manage/src/services/removeKynFromIBM.service.mjs +25 -0
- package/esm2020/user-device-manage/src/services/site-settings.service.mjs +70 -0
- package/esm2020/user-device-manage/src/services/sorting-utils.service.mjs +197 -0
- package/esm2020/user-device-manage/src/services/user.service.mjs +366 -0
- package/esm2020/user-device-manage/src/services/utils.service.mjs +87 -0
- package/esm2020/user-device-manage/src/services/validation.service.mjs +760 -0
- package/esm2020/user-device-manage/src/shared/tk-page-section/page-section.component.mjs +13 -0
- package/esm2020/user-device-manage/src/user-device-manage.module.mjs +116 -0
- package/esm2020/user-device-manage/src/utils/app-loader/app-loader.mjs +14 -0
- package/esm2020/user-device-manage/tuki-io-tuki-widgets-user-device-manage.mjs +5 -0
- package/esm2020/user-manage/public-api.mjs +7 -0
- package/esm2020/user-manage/src/app.constants.mjs +55 -0
- package/esm2020/user-manage/src/classes/device.mjs +38 -0
- package/esm2020/user-manage/src/classes/line-association-interface.mjs +2 -0
- package/esm2020/user-manage/src/classes/line-association.mjs +110 -0
- package/esm2020/user-manage/src/classes/line-call-info-display.mjs +10 -0
- package/esm2020/user-manage/src/classes/line-directory.mjs +28 -0
- package/esm2020/user-manage/src/classes/line.mjs +18 -0
- package/esm2020/user-manage/src/classes/notification.mjs +32 -0
- package/esm2020/user-manage/src/classes/pagination.mjs +8 -0
- package/esm2020/user-manage/src/classes/recording-options.mjs +7 -0
- package/esm2020/user-manage/src/classes/simplified-user.mjs +115 -0
- package/esm2020/user-manage/src/classes/table-data.mjs +2 -0
- package/esm2020/user-manage/src/classes/translation-pattern.mjs +32 -0
- package/esm2020/user-manage/src/classes/user-list.mjs +10 -0
- package/esm2020/user-manage/src/common-functions.mjs +19 -0
- package/esm2020/user-manage/src/device-list/device-list.component.mjs +26 -0
- package/esm2020/user-manage/src/device-list/device-row/device-row.component.mjs +33 -0
- package/esm2020/user-manage/src/environments/environment.mjs +11 -0
- package/esm2020/user-manage/src/interseptors/auth.interceptor.mjs +36 -0
- package/esm2020/user-manage/src/lazy-loading-select/lazy-loading-select.component.mjs +81 -0
- package/esm2020/user-manage/src/material.module.mjs +188 -0
- package/esm2020/user-manage/src/notifications/notification.component.mjs +35 -0
- package/esm2020/user-manage/src/removeKynFromIBM.service.mjs +25 -0
- package/esm2020/user-manage/src/services/api.service.mjs +79 -0
- package/esm2020/user-manage/src/services/dns.service.mjs +110 -0
- package/esm2020/user-manage/src/services/line.service.mjs +34 -0
- package/esm2020/user-manage/src/services/notification.service.mjs +62 -0
- package/esm2020/user-manage/src/services/removeKynFromIBM.service.mjs +25 -0
- package/esm2020/user-manage/src/services/site-settings.service.mjs +36 -0
- package/esm2020/user-manage/src/services/sorting-utils.service.mjs +197 -0
- package/esm2020/user-manage/src/services/user.service.mjs +257 -0
- package/esm2020/user-manage/src/services/users-search.service.mjs +50 -0
- package/esm2020/user-manage/src/services/utils.service.mjs +73 -0
- package/esm2020/user-manage/src/user-calling/user-calling-extension/user-calling-extension.component.mjs +65 -0
- package/esm2020/user-manage/src/user-calling/user-calling.component.mjs +87 -0
- package/esm2020/user-manage/src/user-info/user-info.component.mjs +32 -0
- package/esm2020/user-manage/src/user-manage-widget.component.mjs +226 -0
- package/esm2020/user-manage/src/user-manage.module.mjs +102 -0
- package/esm2020/user-manage/src/utils/app-loader/app-loader.mjs +14 -0
- package/esm2020/user-manage/src/utils/pagination/pagination.component.mjs +43 -0
- package/esm2020/user-manage/tuki-io-tuki-widgets-user-manage.mjs +5 -0
- package/esm2020/users-list/public-api.mjs +9 -0
- package/esm2020/users-list/src/app.constants.mjs +84 -0
- package/esm2020/users-list/src/classes/app-location.mjs +32 -0
- package/esm2020/users-list/src/classes/device.mjs +7 -0
- package/esm2020/users-list/src/classes/line.mjs +18 -0
- package/esm2020/users-list/src/classes/move-user.mjs +182 -0
- package/esm2020/users-list/src/classes/notification.mjs +31 -0
- package/esm2020/users-list/src/classes/pagination.mjs +8 -0
- package/esm2020/users-list/src/classes/simlified-user.mjs +50 -0
- package/esm2020/users-list/src/classes/table-data.mjs +2 -0
- package/esm2020/users-list/src/classes/user-list.mjs +15 -0
- package/esm2020/users-list/src/components/table-toolbar/table-toolbar.component.mjs +44 -0
- package/esm2020/users-list/src/material.module.mjs +216 -0
- package/esm2020/users-list/src/move-user-wizard/move-user-stepper/device-move-user/device-move-user-wizard.component.mjs +38 -0
- package/esm2020/users-list/src/move-user-wizard/move-user-stepper/device-move-user-tab/devices-move-user-wizard-tab.component.mjs +23 -0
- package/esm2020/users-list/src/move-user-wizard/move-user-stepper/move-user-stepper.component.mjs +192 -0
- package/esm2020/users-list/src/move-user-wizard/move-user-wizard.component.mjs +38 -0
- package/esm2020/users-list/src/services/api-webex.service.mjs +18 -0
- package/esm2020/users-list/src/services/api.service.mjs +78 -0
- package/esm2020/users-list/src/services/dns.service.mjs +120 -0
- package/esm2020/users-list/src/services/events-communication.service.mjs +14 -0
- package/esm2020/users-list/src/services/move-user.service.mjs +53 -0
- package/esm2020/users-list/src/services/notification.service.mjs +62 -0
- package/esm2020/users-list/src/services/removeKynFromIBM.service.mjs +25 -0
- package/esm2020/users-list/src/services/site-settings.service.mjs +27 -0
- package/esm2020/users-list/src/services/user.service.mjs +174 -0
- package/esm2020/users-list/src/services/users-search.service.mjs +168 -0
- package/esm2020/users-list/src/user-list-confirm-dialog/user-list-confirm-dialog.component.mjs +34 -0
- package/esm2020/users-list/src/users-list.component.mjs +817 -0
- package/esm2020/users-list/src/users-list.module.mjs +98 -0
- package/esm2020/users-list/src/utils/app-loader/app-loader.mjs +14 -0
- package/esm2020/users-list/src/utils/common-functions.mjs +32 -0
- package/esm2020/users-list/src/utils/notifications/notification.component.mjs +38 -0
- package/esm2020/users-list/src/utils/pagination/pagination.component.mjs +43 -0
- package/esm2020/users-list/src/utils/utils.service.mjs +73 -0
- package/esm2020/users-list/tuki-io-tuki-widgets-users-list.mjs +5 -0
- package/fesm2015/tuki-io-tuki-widgets-contact-center.mjs +3452 -0
- package/fesm2015/tuki-io-tuki-widgets-contact-center.mjs.map +1 -0
- package/fesm2015/tuki-io-tuki-widgets-di2mt.mjs +2353 -0
- package/fesm2015/tuki-io-tuki-widgets-di2mt.mjs.map +1 -0
- package/fesm2015/tuki-io-tuki-widgets-user-creation.mjs +2774 -0
- package/fesm2015/tuki-io-tuki-widgets-user-creation.mjs.map +1 -0
- package/fesm2015/tuki-io-tuki-widgets-user-device-manage.mjs +3515 -0
- package/fesm2015/tuki-io-tuki-widgets-user-device-manage.mjs.map +1 -0
- package/fesm2015/tuki-io-tuki-widgets-user-manage.mjs +2268 -0
- package/fesm2015/tuki-io-tuki-widgets-user-manage.mjs.map +1 -0
- package/fesm2015/tuki-io-tuki-widgets-users-list.mjs +2726 -0
- package/fesm2015/tuki-io-tuki-widgets-users-list.mjs.map +1 -0
- package/fesm2015/tuki-io-tuki-widgets.mjs +63 -0
- package/fesm2015/tuki-io-tuki-widgets.mjs.map +1 -0
- package/fesm2020/tuki-io-tuki-widgets-contact-center.mjs +3471 -0
- package/fesm2020/tuki-io-tuki-widgets-contact-center.mjs.map +1 -0
- package/fesm2020/tuki-io-tuki-widgets-di2mt.mjs +2342 -0
- package/fesm2020/tuki-io-tuki-widgets-di2mt.mjs.map +1 -0
- package/fesm2020/tuki-io-tuki-widgets-user-creation.mjs +2733 -0
- package/fesm2020/tuki-io-tuki-widgets-user-creation.mjs.map +1 -0
- package/fesm2020/tuki-io-tuki-widgets-user-device-manage.mjs +3493 -0
- package/fesm2020/tuki-io-tuki-widgets-user-device-manage.mjs.map +1 -0
- package/fesm2020/tuki-io-tuki-widgets-user-manage.mjs +2252 -0
- package/fesm2020/tuki-io-tuki-widgets-user-manage.mjs.map +1 -0
- package/fesm2020/tuki-io-tuki-widgets-users-list.mjs +2699 -0
- package/fesm2020/tuki-io-tuki-widgets-users-list.mjs.map +1 -0
- package/fesm2020/tuki-io-tuki-widgets.mjs +63 -0
- package/fesm2020/tuki-io-tuki-widgets.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/widgets.component.d.ts +8 -0
- package/lib/widgets.module.d.ts +7 -0
- package/lib/widgets.service.d.ts +6 -0
- package/package.json +81 -59
- package/public-api.d.ts +3 -0
- package/user-creation/index.d.ts +5 -0
- package/user-creation/public-api.d.ts +2 -0
- package/user-creation/src/app.constants.d.ts +25 -0
- package/user-creation/src/classes/notification.d.ts +18 -0
- package/user-creation/src/classes/site.d.ts +203 -0
- package/user-creation/src/environments/environment.d.ts +9 -0
- package/user-creation/src/interfaces/user-creation-wizard.interfaces.d.ts +554 -0
- package/user-creation/src/shared/api/api.service.d.ts +20 -0
- package/user-creation/src/shared/components/notification/notification.component.d.ts +19 -0
- package/user-creation/src/shared/material.module.d.ts +19 -0
- package/user-creation/src/shared/pipes/truncate.pipe.d.ts +7 -0
- package/user-creation/src/shared/services/notification.service.d.ts +18 -0
- package/user-creation/src/shared/services/user-creation-api.service.d.ts +30 -0
- package/user-creation/src/shared/services/utils.d.ts +1 -0
- package/user-creation/src/shared/shared.module.d.ts +12 -0
- package/user-creation/src/user-creation.module.d.ts +24 -0
- package/user-creation/src/utils/app-loader/app-loader.d.ts +6 -0
- package/user-creation/src/utils/build-savable-end-user.d.ts +23 -0
- package/user-creation/src/utils/device-default-prefix.d.ts +5 -0
- package/user-creation/src/utils/device-name-validation.d.ts +6 -0
- package/user-creation/src/utils/model.d.ts +1 -0
- package/user-creation/src/utils/parse-device-name-rule.d.ts +8 -0
- package/user-creation/src/widgets/user-creation-wizard/components/user-details-step/user-details-step.component.d.ts +86 -0
- package/user-creation/src/widgets/user-creation-wizard/components/user-overview-step/user-overview-step.component.d.ts +11 -0
- package/user-creation/src/widgets/user-creation-wizard/components/user-template-step/user-template-step.component.d.ts +47 -0
- package/user-creation/src/widgets/user-creation-wizard/user-creation-wizard.component.d.ts +37 -0
- package/user-creation/src/widgets/user-creation-wizard/user-creation-wizard.service.d.ts +106 -0
- package/user-device-manage/index.d.ts +5 -0
- package/user-device-manage/public-api.d.ts +8 -0
- package/user-device-manage/src/app.constants.d.ts +77 -0
- package/user-device-manage/src/classes/device.d.ts +233 -0
- package/user-device-manage/src/classes/deviceProfile.d.ts +37 -0
- package/user-device-manage/src/classes/line-association-interface.d.ts +45 -0
- package/user-device-manage/src/classes/line-association.d.ts +62 -0
- package/user-device-manage/src/classes/line-call-info-display.d.ts +11 -0
- package/user-device-manage/src/classes/line-directory.d.ts +15 -0
- package/user-device-manage/src/classes/line.d.ts +140 -0
- package/user-device-manage/src/classes/notification.d.ts +18 -0
- package/user-device-manage/src/classes/recording-options.d.ts +5 -0
- package/user-device-manage/src/classes/simplified-user.d.ts +52 -0
- package/user-device-manage/src/classes/site-defaults.d.ts +146 -0
- package/user-device-manage/src/classes/translation-pattern.d.ts +19 -0
- package/user-device-manage/src/classes/types.d.ts +19 -0
- package/user-device-manage/src/common-functions.d.ts +1 -0
- package/user-device-manage/src/confirm-dialog/info-dialog.component.d.ts +20 -0
- package/user-device-manage/src/device-associated-line/associated-line-row/associated-line-row.component.d.ts +15 -0
- package/user-device-manage/src/device-associated-line/device-associated-line-details-box/device-associated-line-details-box.component.d.ts +7 -0
- package/user-device-manage/src/device-associated-line/device-associated-line-extension/device-associated-line-extension.component.d.ts +28 -0
- package/user-device-manage/src/device-associated-line/device-associated-line.component.d.ts +89 -0
- package/user-device-manage/src/device-info/device-info.component.d.ts +15 -0
- package/user-device-manage/src/device-list/device-list.component.d.ts +11 -0
- package/user-device-manage/src/device-manage-widget.component.d.ts +62 -0
- package/user-device-manage/src/environments/environment.d.ts +9 -0
- package/user-device-manage/src/interseptors/auth.interceptor.d.ts +9 -0
- package/user-device-manage/src/lazy-loading-select/lazy-loading-select.component.d.ts +35 -0
- package/user-device-manage/src/material.module.d.ts +29 -0
- package/user-device-manage/src/notifications/notification.component.d.ts +19 -0
- package/user-device-manage/src/pipes/mac-address.pipe.d.ts +7 -0
- package/user-device-manage/src/services/api.service.d.ts +20 -0
- package/user-device-manage/src/services/device.service.d.ts +21 -0
- package/user-device-manage/src/services/dns.service.d.ts +18 -0
- package/user-device-manage/src/services/line.service.d.ts +33 -0
- package/user-device-manage/src/services/notification.service.d.ts +18 -0
- package/user-device-manage/src/services/removeKynFromIBM.service.d.ts +8 -0
- package/user-device-manage/src/services/site-settings.service.d.ts +25 -0
- package/user-device-manage/src/services/sorting-utils.service.d.ts +26 -0
- package/user-device-manage/src/services/user.service.d.ts +69 -0
- package/user-device-manage/src/services/utils.service.d.ts +10 -0
- package/user-device-manage/src/services/validation.service.d.ts +165 -0
- package/user-device-manage/src/shared/tk-page-section/page-section.component.d.ts +6 -0
- package/user-device-manage/src/user-device-manage.module.d.ts +25 -0
- package/user-device-manage/src/utils/app-loader/app-loader.d.ts +6 -0
- package/user-manage/index.d.ts +5 -0
- package/user-manage/public-api.d.ts +6 -0
- package/user-manage/src/app.constants.d.ts +34 -0
- package/user-manage/src/classes/device.d.ts +204 -0
- package/user-manage/src/classes/line-association-interface.d.ts +41 -0
- package/user-manage/src/classes/line-association.d.ts +55 -0
- package/user-manage/src/classes/line-call-info-display.d.ts +11 -0
- package/user-manage/src/classes/line-directory.d.ts +17 -0
- package/user-manage/src/classes/line.d.ts +141 -0
- package/user-manage/src/classes/notification.d.ts +18 -0
- package/user-manage/src/classes/pagination.d.ts +13 -0
- package/user-manage/src/classes/recording-options.d.ts +5 -0
- package/user-manage/src/classes/simplified-user.d.ts +53 -0
- package/user-manage/src/classes/table-data.d.ts +5 -0
- package/user-manage/src/classes/translation-pattern.d.ts +18 -0
- package/user-manage/src/classes/user-list.d.ts +34 -0
- package/user-manage/src/common-functions.d.ts +1 -0
- package/user-manage/src/device-list/device-list.component.d.ts +11 -0
- package/user-manage/src/device-list/device-row/device-row.component.d.ts +12 -0
- package/user-manage/src/environments/environment.d.ts +9 -0
- package/user-manage/src/interseptors/auth.interceptor.d.ts +9 -0
- package/user-manage/src/lazy-loading-select/lazy-loading-select.component.d.ts +37 -0
- package/user-manage/src/material.module.d.ts +28 -0
- package/user-manage/src/notifications/notification.component.d.ts +19 -0
- package/user-manage/src/removeKynFromIBM.service.d.ts +8 -0
- package/user-manage/src/services/api.service.d.ts +21 -0
- package/user-manage/src/services/dns.service.d.ts +14 -0
- package/user-manage/src/services/line.service.d.ts +17 -0
- package/user-manage/src/services/notification.service.d.ts +18 -0
- package/user-manage/src/services/removeKynFromIBM.service.d.ts +8 -0
- package/user-manage/src/services/site-settings.service.d.ts +9 -0
- package/user-manage/src/services/sorting-utils.service.d.ts +26 -0
- package/user-manage/src/services/user.service.d.ts +46 -0
- package/user-manage/src/services/users-search.service.d.ts +25 -0
- package/user-manage/src/services/utils.service.d.ts +9 -0
- package/user-manage/src/user-calling/user-calling-extension/user-calling-extension.component.d.ts +24 -0
- package/user-manage/src/user-calling/user-calling.component.d.ts +33 -0
- package/user-manage/src/user-info/user-info.component.d.ts +12 -0
- package/user-manage/src/user-manage-widget.component.d.ts +45 -0
- package/user-manage/src/user-manage.module.d.ts +22 -0
- package/user-manage/src/utils/app-loader/app-loader.d.ts +6 -0
- package/user-manage/src/utils/pagination/pagination.component.d.ts +18 -0
- package/users-list/index.d.ts +5 -0
- package/users-list/public-api.d.ts +8 -0
- package/users-list/src/app.constants.d.ts +67 -0
- package/users-list/src/classes/app-location.d.ts +17 -0
- package/users-list/src/classes/device.d.ts +224 -0
- package/users-list/src/classes/line.d.ts +140 -0
- package/users-list/src/classes/move-user.d.ts +85 -0
- package/users-list/src/classes/notification.d.ts +18 -0
- package/users-list/src/classes/pagination.d.ts +13 -0
- package/users-list/src/classes/simlified-user.d.ts +25 -0
- package/users-list/src/classes/table-data.d.ts +5 -0
- package/users-list/src/classes/user-list.d.ts +37 -0
- package/users-list/src/components/table-toolbar/table-toolbar.component.d.ts +17 -0
- package/users-list/src/material.module.d.ts +32 -0
- package/users-list/src/move-user-wizard/move-user-stepper/device-move-user/device-move-user-wizard.component.d.ts +21 -0
- package/users-list/src/move-user-wizard/move-user-stepper/device-move-user-tab/devices-move-user-wizard-tab.component.d.ts +12 -0
- package/users-list/src/move-user-wizard/move-user-stepper/move-user-stepper.component.d.ts +55 -0
- package/users-list/src/move-user-wizard/move-user-wizard.component.d.ts +17 -0
- package/users-list/src/services/api-webex.service.d.ts +8 -0
- package/users-list/src/services/api.service.d.ts +21 -0
- package/users-list/src/services/dns.service.d.ts +18 -0
- package/users-list/src/services/events-communication.service.d.ts +8 -0
- package/users-list/src/services/move-user.service.d.ts +17 -0
- package/users-list/src/services/notification.service.d.ts +18 -0
- package/users-list/src/services/removeKynFromIBM.service.d.ts +8 -0
- package/users-list/src/services/site-settings.service.d.ts +11 -0
- package/users-list/src/services/user.service.d.ts +42 -0
- package/users-list/src/services/users-search.service.d.ts +41 -0
- package/users-list/src/user-list-confirm-dialog/user-list-confirm-dialog.component.d.ts +20 -0
- package/users-list/src/users-list.component.d.ts +97 -0
- package/users-list/src/users-list.module.d.ts +20 -0
- package/users-list/src/utils/app-loader/app-loader.d.ts +6 -0
- package/users-list/src/utils/common-functions.d.ts +2 -0
- package/users-list/src/utils/notifications/notification.component.d.ts +19 -0
- package/users-list/src/utils/pagination/pagination.component.d.ts +18 -0
- package/users-list/src/utils/utils.service.d.ts +9 -0
- package/.editorconfig +0 -16
- package/.hintrc +0 -14
- package/.vscode/extensions.json +0 -4
- package/.vscode/launch.json +0 -20
- package/.vscode/tasks.json +0 -42
- package/angular.json +0 -141
- package/projects/tuki/widgets/README.md +0 -24
- package/projects/tuki/widgets/contact-center/cc-readiness/cc-readiness.module.ts +0 -44
- package/projects/tuki/widgets/contact-center/cc-readiness/cc-readiness.service.spec.ts +0 -16
- package/projects/tuki/widgets/contact-center/cc-readiness/cc-readiness.service.ts +0 -37
- package/projects/tuki/widgets/contact-center/cc-readiness/components/card/card.component.html +0 -11
- package/projects/tuki/widgets/contact-center/cc-readiness/components/card/card.component.scss +0 -48
- package/projects/tuki/widgets/contact-center/cc-readiness/components/card/card.component.ts +0 -10
- package/projects/tuki/widgets/contact-center/cc-readiness/types/cc-readiness.ts +0 -30
- package/projects/tuki/widgets/contact-center/cc-readiness/widgets/licences-requirement/licences-requirement.component.html +0 -75
- package/projects/tuki/widgets/contact-center/cc-readiness/widgets/licences-requirement/licences-requirement.component.scss +0 -177
- package/projects/tuki/widgets/contact-center/cc-readiness/widgets/licences-requirement/licences-requirement.component.spec.ts +0 -35
- package/projects/tuki/widgets/contact-center/cc-readiness/widgets/licences-requirement/licences-requirement.component.ts +0 -243
- package/projects/tuki/widgets/contact-center/cc-readiness/widgets/summary-grid/summary-grid.component.html +0 -19
- package/projects/tuki/widgets/contact-center/cc-readiness/widgets/summary-grid/summary-grid.component.scss +0 -38
- package/projects/tuki/widgets/contact-center/cc-readiness/widgets/summary-grid/summary-grid.component.ts +0 -59
- package/projects/tuki/widgets/contact-center/cc-script-editor/cc-script-editor.component.html +0 -36
- package/projects/tuki/widgets/contact-center/cc-script-editor/cc-script-editor.component.scss +0 -28
- package/projects/tuki/widgets/contact-center/cc-script-editor/cc-script-editor.component.ts +0 -263
- package/projects/tuki/widgets/contact-center/cc-script-editor/cc-script-editor.module.ts +0 -54
- package/projects/tuki/widgets/contact-center/cc-script-editor/components/dialogs/add-node-dialog/add-node-dialog.component.html +0 -0
- package/projects/tuki/widgets/contact-center/cc-script-editor/components/dialogs/add-node-dialog/add-node-dialog.component.scss +0 -111
- package/projects/tuki/widgets/contact-center/cc-script-editor/components/dialogs/add-node-dialog/add-node-dialog.component.ts +0 -78
- package/projects/tuki/widgets/contact-center/cc-script-editor/components/dialogs/link-node-dialog/link-node-dialog.component.html +0 -0
- package/projects/tuki/widgets/contact-center/cc-script-editor/components/dialogs/link-node-dialog/link-node-dialog.component.scss +0 -155
- package/projects/tuki/widgets/contact-center/cc-script-editor/components/dialogs/link-node-dialog/link-node-dialog.component.ts +0 -105
- package/projects/tuki/widgets/contact-center/cc-script-editor/components/floating-toolbar/floating-toolbar.component.html +0 -13
- package/projects/tuki/widgets/contact-center/cc-script-editor/components/floating-toolbar/floating-toolbar.component.scss +0 -36
- package/projects/tuki/widgets/contact-center/cc-script-editor/components/floating-toolbar/floating-toolbar.component.ts +0 -118
- package/projects/tuki/widgets/contact-center/cc-script-editor/components/floating-toolbar/floating-toolbar.module.ts +0 -18
- package/projects/tuki/widgets/contact-center/cc-script-editor/components/node-action-toolbar/node-action-toolbar.component.html +0 -18
- package/projects/tuki/widgets/contact-center/cc-script-editor/components/node-action-toolbar/node-action-toolbar.component.scss +0 -62
- package/projects/tuki/widgets/contact-center/cc-script-editor/components/node-action-toolbar/node-action-toolbar.component.ts +0 -72
- package/projects/tuki/widgets/contact-center/cc-script-editor/components/node-details-sidebar/node-details-sidebar.component.html +0 -130
- package/projects/tuki/widgets/contact-center/cc-script-editor/components/node-details-sidebar/node-details-sidebar.component.scss +0 -298
- package/projects/tuki/widgets/contact-center/cc-script-editor/components/node-details-sidebar/node-details-sidebar.component.ts +0 -113
- package/projects/tuki/widgets/contact-center/cc-script-editor/components/node-search-panel/node-search-panel.component.html +0 -13
- package/projects/tuki/widgets/contact-center/cc-script-editor/components/node-search-panel/node-search-panel.component.scss +0 -57
- package/projects/tuki/widgets/contact-center/cc-script-editor/components/node-search-panel/node-search-panel.component.ts +0 -46
- package/projects/tuki/widgets/contact-center/cc-script-editor/components/wxcc-actions-bar/wxcc-actions-bar.component.html +0 -30
- package/projects/tuki/widgets/contact-center/cc-script-editor/components/wxcc-actions-bar/wxcc-actions-bar.component.scss +0 -9
- package/projects/tuki/widgets/contact-center/cc-script-editor/components/wxcc-actions-bar/wxcc-actions-bar.component.ts +0 -16
- package/projects/tuki/widgets/contact-center/cc-script-editor/components/wxcc-file-selection-bar/wxcc-file-selection-bar.component.html +0 -29
- package/projects/tuki/widgets/contact-center/cc-script-editor/components/wxcc-file-selection-bar/wxcc-file-selection-bar.component.scss +0 -21
- package/projects/tuki/widgets/contact-center/cc-script-editor/components/wxcc-file-selection-bar/wxcc-file-selection-bar.component.ts +0 -58
- package/projects/tuki/widgets/contact-center/cc-script-editor/components/wxcc-flowchart/wxcc-flowchart.component.html +0 -83
- package/projects/tuki/widgets/contact-center/cc-script-editor/components/wxcc-flowchart/wxcc-flowchart.component.scss +0 -339
- package/projects/tuki/widgets/contact-center/cc-script-editor/components/wxcc-flowchart/wxcc-flowchart.component.ts +0 -551
- package/projects/tuki/widgets/contact-center/cc-script-editor/constants/cytoscape.config.ts +0 -73
- package/projects/tuki/widgets/contact-center/cc-script-editor/constants/wxcc-activity-templates.constants.ts +0 -1
- package/projects/tuki/widgets/contact-center/cc-script-editor/constants/wxcc-api.constants.ts +0 -52
- package/projects/tuki/widgets/contact-center/cc-script-editor/mock/data/QWC_wxcc.json +0 -912
- package/projects/tuki/widgets/contact-center/cc-script-editor/mock/mock-data.service.ts +0 -0
- package/projects/tuki/widgets/contact-center/cc-script-editor/services/cystoscape-viewport.service.ts +0 -77
- package/projects/tuki/widgets/contact-center/cc-script-editor/services/wxcc-activity-creation.service.ts +0 -100
- package/projects/tuki/widgets/contact-center/cc-script-editor/services/wxcc-activity-manage.service.ts +0 -159
- package/projects/tuki/widgets/contact-center/cc-script-editor/services/wxcc-flow-api.service.ts +0 -81
- package/projects/tuki/widgets/contact-center/cc-script-editor/services/wxcc2graph.service.ts +0 -172
- package/projects/tuki/widgets/contact-center/cc-script-editor/types/cytoscape-node-html-label.d.ts +0 -24
- package/projects/tuki/widgets/contact-center/cc-script-editor/types/extended-activity.ts +0 -62
- package/projects/tuki/widgets/contact-center/cc-script-editor/types/wxcc-activity.ts +0 -135
- package/projects/tuki/widgets/contact-center/cc-script-editor/types/wxcc.ts +0 -220
- package/projects/tuki/widgets/contact-center/cc-script-editor/utils/node-html-template.ts +0 -90
- package/projects/tuki/widgets/contact-center/cc-script-editor/utils/node-mappings.ts +0 -153
- package/projects/tuki/widgets/contact-center/ng-package.json +0 -12
- package/projects/tuki/widgets/contact-center/public-api.ts +0 -8
- package/projects/tuki/widgets/contact-center/shared/api.endpoints.ts +0 -6
- package/projects/tuki/widgets/contact-center/shared/api.service.ts +0 -87
- package/projects/tuki/widgets/contact-center/shared/assets/icons/applications.svg +0 -6
- package/projects/tuki/widgets/contact-center/shared/assets/icons/audioPrompts.svg +0 -4
- package/projects/tuki/widgets/contact-center/shared/assets/icons/contactServiceQueues.svg +0 -3
- package/projects/tuki/widgets/contact-center/shared/assets/icons/phonebooks.svg +0 -6
- package/projects/tuki/widgets/contact-center/shared/assets/icons/resourceGroups.svg +0 -6
- package/projects/tuki/widgets/contact-center/shared/assets/icons/resources.svg +0 -3
- package/projects/tuki/widgets/contact-center/shared/assets/icons/scripts.svg +0 -12
- package/projects/tuki/widgets/contact-center/shared/assets/icons/skills.svg +0 -3
- package/projects/tuki/widgets/contact-center/shared/assets/icons/teams.svg +0 -3
- package/projects/tuki/widgets/contact-center/shared/assets/icons/triggers.svg +0 -4
- package/projects/tuki/widgets/contact-center/shared/assets/icons/wrapUpCodes.svg +0 -3
- package/projects/tuki/widgets/contact-center/shared/assets/icons/xml.svg +0 -6
- package/projects/tuki/widgets/contact-center/shared/material.module.ts +0 -38
- package/projects/tuki/widgets/contact-center/shared/shared.module.ts +0 -20
- package/projects/tuki/widgets/contact-center/shared/styles/tuki-widgets-theme.scss +0 -13
- package/projects/tuki/widgets/contact-center/shared/styles/variables.scss +0 -96
- package/projects/tuki/widgets/di2mt/api/api.endpoints.ts +0 -32
- package/projects/tuki/widgets/di2mt/assets/icons/already_upgraded.png +0 -0
- package/projects/tuki/widgets/di2mt/assets/icons/check2_icon.png +0 -0
- package/projects/tuki/widgets/di2mt/assets/icons/check_icon.png +0 -0
- package/projects/tuki/widgets/di2mt/assets/icons/details_d_icon.svg +0 -3
- package/projects/tuki/widgets/di2mt/assets/icons/expand_icon.png +0 -0
- package/projects/tuki/widgets/di2mt/assets/icons/icon_play.svg +0 -3
- package/projects/tuki/widgets/di2mt/assets/icons/issue_icon.png +0 -0
- package/projects/tuki/widgets/di2mt/assets/icons/menu_icon.png +0 -0
- package/projects/tuki/widgets/di2mt/assets/icons/ready_to_upgrade.png +0 -0
- package/projects/tuki/widgets/di2mt/assets/icons/search_icon.png +0 -0
- package/projects/tuki/widgets/di2mt/assets/icons/site.png +0 -0
- package/projects/tuki/widgets/di2mt/assets/icons/user.png +0 -0
- package/projects/tuki/widgets/di2mt/assets/icons/warning_icon.png +0 -0
- package/projects/tuki/widgets/di2mt/ng-package.json +0 -7
- package/projects/tuki/widgets/di2mt/public-api.ts +0 -28
- package/projects/tuki/widgets/di2mt/shared/components/card/card.component.html +0 -11
- package/projects/tuki/widgets/di2mt/shared/components/card/card.component.scss +0 -48
- package/projects/tuki/widgets/di2mt/shared/components/card/card.component.ts +0 -10
- package/projects/tuki/widgets/di2mt/shared/components/chart-card/chart-card.component.html +0 -15
- package/projects/tuki/widgets/di2mt/shared/components/chart-card/chart-card.component.scss +0 -38
- package/projects/tuki/widgets/di2mt/shared/components/chart-card/chart-card.component.ts +0 -76
- package/projects/tuki/widgets/di2mt/shared/components/index.ts +0 -6
- package/projects/tuki/widgets/di2mt/shared/components/stat-card/stat-card.component.html +0 -68
- package/projects/tuki/widgets/di2mt/shared/components/stat-card/stat-card.component.scss +0 -78
- package/projects/tuki/widgets/di2mt/shared/components/stat-card/stat-card.component.ts +0 -59
- package/projects/tuki/widgets/di2mt/shared/components/status-list-card/status-list-card.component.html +0 -57
- package/projects/tuki/widgets/di2mt/shared/components/status-list-card/status-list-card.component.scss +0 -187
- package/projects/tuki/widgets/di2mt/shared/components/status-list-card/status-list-card.component.ts +0 -41
- package/projects/tuki/widgets/di2mt/shared/components/summary-card/summary-card.component.html +0 -12
- package/projects/tuki/widgets/di2mt/shared/components/summary-card/summary-card.component.scss +0 -78
- package/projects/tuki/widgets/di2mt/shared/components/summary-card/summary-card.component.ts +0 -27
- package/projects/tuki/widgets/di2mt/shared/components/table-filters/table-filters.component.html +0 -28
- package/projects/tuki/widgets/di2mt/shared/components/table-filters/table-filters.component.scss +0 -245
- package/projects/tuki/widgets/di2mt/shared/components/table-filters/table-filters.component.ts +0 -28
- package/projects/tuki/widgets/di2mt/shared/constants/app.constants.ts +0 -96
- package/projects/tuki/widgets/di2mt/shared/material.module.ts +0 -36
- package/projects/tuki/widgets/di2mt/shared/services/api.service.ts +0 -87
- package/projects/tuki/widgets/di2mt/shared/shared.module.ts +0 -39
- package/projects/tuki/widgets/di2mt/shared/types/constants.ts +0 -22
- package/projects/tuki/widgets/di2mt/shared/types/data-table.ts +0 -5
- package/projects/tuki/widgets/di2mt/shared/types/table/filter.ts +0 -14
- package/projects/tuki/widgets/di2mt/styles/tuki-widgets-theme.scss +0 -13
- package/projects/tuki/widgets/di2mt/styles/variables.scss +0 -94
- package/projects/tuki/widgets/di2mt/widgets/site-upgrade/progress-bar/progress-bar.component.html +0 -6
- package/projects/tuki/widgets/di2mt/widgets/site-upgrade/progress-bar/progress-bar.component.scss +0 -45
- package/projects/tuki/widgets/di2mt/widgets/site-upgrade/progress-bar/progress-bar.component.ts +0 -27
- package/projects/tuki/widgets/di2mt/widgets/site-upgrade/site-upgrade-data-table/site-upgrade-data-table.component.html +0 -160
- package/projects/tuki/widgets/di2mt/widgets/site-upgrade/site-upgrade-data-table/site-upgrade-data-table.component.scss +0 -469
- package/projects/tuki/widgets/di2mt/widgets/site-upgrade/site-upgrade-data-table/site-upgrade-data-table.component.ts +0 -511
- package/projects/tuki/widgets/di2mt/widgets/site-upgrade/site-upgrade.module.ts +0 -33
- package/projects/tuki/widgets/di2mt/widgets/site-upgrade/site-upgrade.service.ts +0 -173
- package/projects/tuki/widgets/di2mt/widgets/site-upgrade/types/user-upgrade.ts +0 -27
- package/projects/tuki/widgets/di2mt/widgets/upgrade-overview/cards/already-upgraded-sites/already-upgraded-sites-card.component.ts +0 -55
- package/projects/tuki/widgets/di2mt/widgets/upgrade-overview/cards/already-upgraded-users/already-upgraded-users-card.component.ts +0 -60
- package/projects/tuki/widgets/di2mt/widgets/upgrade-overview/cards/pending-activation-users/pending-activation-users.component.ts +0 -72
- package/projects/tuki/widgets/di2mt/widgets/upgrade-overview/cards/preconditions-status-list/preconditions-status-list-card.component.ts +0 -85
- package/projects/tuki/widgets/di2mt/widgets/upgrade-overview/cards/ready-to-upgrade-sites/ready-to-upgrade-sites-card.component.html +0 -7
- package/projects/tuki/widgets/di2mt/widgets/upgrade-overview/cards/ready-to-upgrade-sites/ready-to-upgrade-sites-card.component.scss +0 -0
- package/projects/tuki/widgets/di2mt/widgets/upgrade-overview/cards/ready-to-upgrade-sites/ready-to-upgrade-sites-card.component.ts +0 -47
- package/projects/tuki/widgets/di2mt/widgets/upgrade-overview/cards/ready-to-upgrade-users/ready-to-upgrade-users-card.component.html +0 -7
- package/projects/tuki/widgets/di2mt/widgets/upgrade-overview/cards/ready-to-upgrade-users/ready-to-upgrade-users-card.component.scss +0 -0
- package/projects/tuki/widgets/di2mt/widgets/upgrade-overview/cards/ready-to-upgrade-users/ready-to-upgrade-users-card.component.ts +0 -48
- package/projects/tuki/widgets/di2mt/widgets/upgrade-overview/cards/site-infrastructure-status-list/site-infrastructure-status-list-card.component.ts +0 -84
- package/projects/tuki/widgets/di2mt/widgets/upgrade-overview/cards/upgrade-state-comparison-chart/upgrade-state-comparison-chart-card.component.ts +0 -73
- package/projects/tuki/widgets/di2mt/widgets/upgrade-overview/types/upgrade-overview.ts +0 -59
- package/projects/tuki/widgets/di2mt/widgets/upgrade-overview/upgrade-overview.module.ts +0 -45
- package/projects/tuki/widgets/di2mt/widgets/upgrade-overview/upgrade-overview.service.ts +0 -109
- package/projects/tuki/widgets/di2mt/widgets/user-upgrade/types/user-upgrade.ts +0 -35
- package/projects/tuki/widgets/di2mt/widgets/user-upgrade/user-upgrade-data-table/user-upgrade-data-table.component.html +0 -204
- package/projects/tuki/widgets/di2mt/widgets/user-upgrade/user-upgrade-data-table/user-upgrade-data-table.component.scss +0 -466
- package/projects/tuki/widgets/di2mt/widgets/user-upgrade/user-upgrade-data-table/user-upgrade-data-table.component.ts +0 -441
- package/projects/tuki/widgets/di2mt/widgets/user-upgrade/user-upgrade.module.ts +0 -34
- package/projects/tuki/widgets/di2mt/widgets/user-upgrade/user-upgrade.service.ts +0 -137
- package/projects/tuki/widgets/karma.conf.js +0 -44
- package/projects/tuki/widgets/ng-package.json +0 -10
- package/projects/tuki/widgets/package.json +0 -13
- package/projects/tuki/widgets/src/lib/widgets.component.spec.ts +0 -23
- package/projects/tuki/widgets/src/lib/widgets.component.ts +0 -20
- package/projects/tuki/widgets/src/lib/widgets.module.ts +0 -16
- package/projects/tuki/widgets/src/lib/widgets.service.spec.ts +0 -16
- package/projects/tuki/widgets/src/lib/widgets.service.ts +0 -9
- package/projects/tuki/widgets/src/public-api.ts +0 -7
- package/projects/tuki/widgets/src/test.ts +0 -27
- package/projects/tuki/widgets/styles.scss +0 -558
- package/projects/tuki/widgets/tsconfig.lib.json +0 -52
- package/projects/tuki/widgets/tsconfig.lib.prod.json +0 -10
- package/projects/tuki/widgets/tsconfig.spec.json +0 -17
- package/projects/tuki/widgets/user-creation/assets/icons/close_icon_modal.svg +0 -3
- package/projects/tuki/widgets/user-creation/assets/icons/user-creation-close-icon.svg +0 -3
- package/projects/tuki/widgets/user-creation/ng-package.json +0 -7
- package/projects/tuki/widgets/user-creation/public-api.ts +0 -16
- package/projects/tuki/widgets/user-creation/src/app.constants.ts +0 -33
- package/projects/tuki/widgets/user-creation/src/classes/notification.ts +0 -40
- package/projects/tuki/widgets/user-creation/src/classes/site.ts +0 -260
- package/projects/tuki/widgets/user-creation/src/classes/user.ts +0 -177
- package/projects/tuki/widgets/user-creation/src/environments/environment.prod.ts +0 -9
- package/projects/tuki/widgets/user-creation/src/environments/environment.ts +0 -10
- package/projects/tuki/widgets/user-creation/src/interfaces/user-creation-wizard.interfaces.ts +0 -788
- package/projects/tuki/widgets/user-creation/src/shared/api/api.service.ts +0 -87
- package/projects/tuki/widgets/user-creation/src/shared/classes/user-template.ts +0 -77
- package/projects/tuki/widgets/user-creation/src/shared/components/notification/notification.component.html +0 -32
- package/projects/tuki/widgets/user-creation/src/shared/components/notification/notification.component.scss +0 -80
- package/projects/tuki/widgets/user-creation/src/shared/components/notification/notification.component.ts +0 -46
- package/projects/tuki/widgets/user-creation/src/shared/material.module.ts +0 -48
- package/projects/tuki/widgets/user-creation/src/shared/pipes/truncate.pipe.ts +0 -26
- package/projects/tuki/widgets/user-creation/src/shared/services/notification.service.ts +0 -68
- package/projects/tuki/widgets/user-creation/src/shared/services/user-creation-api.service.ts +0 -136
- package/projects/tuki/widgets/user-creation/src/shared/services/utils.ts +0 -16
- package/projects/tuki/widgets/user-creation/src/shared/shared.module.ts +0 -28
- package/projects/tuki/widgets/user-creation/src/shared/styles/styles.scss +0 -96
- package/projects/tuki/widgets/user-creation/src/user-creation.module.ts +0 -63
- package/projects/tuki/widgets/user-creation/src/utils/app-loader/app-loader.component.html +0 -7
- package/projects/tuki/widgets/user-creation/src/utils/app-loader/app-loader.component.scss +0 -14
- package/projects/tuki/widgets/user-creation/src/utils/app-loader/app-loader.ts +0 -13
- package/projects/tuki/widgets/user-creation/src/utils/build-savable-end-user.ts +0 -238
- package/projects/tuki/widgets/user-creation/src/utils/device-default-prefix.ts +0 -17
- package/projects/tuki/widgets/user-creation/src/utils/device-name-validation.ts +0 -30
- package/projects/tuki/widgets/user-creation/src/utils/model.ts +0 -16
- package/projects/tuki/widgets/user-creation/src/utils/models.ts +0 -46
- package/projects/tuki/widgets/user-creation/src/utils/parse-device-name-rule.ts +0 -29
- package/projects/tuki/widgets/user-creation/src/utils/validation.ts +0 -16
- package/projects/tuki/widgets/user-creation/src/widgets/user-creation-wizard/components/user-details-step/user-details-step.component.html +0 -376
- package/projects/tuki/widgets/user-creation/src/widgets/user-creation-wizard/components/user-details-step/user-details-step.component.scss +0 -476
- package/projects/tuki/widgets/user-creation/src/widgets/user-creation-wizard/components/user-details-step/user-details-step.component.ts +0 -657
- package/projects/tuki/widgets/user-creation/src/widgets/user-creation-wizard/components/user-overview-step/user-overview-step.component.html +0 -107
- package/projects/tuki/widgets/user-creation/src/widgets/user-creation-wizard/components/user-overview-step/user-overview-step.component.scss +0 -75
- package/projects/tuki/widgets/user-creation/src/widgets/user-creation-wizard/components/user-overview-step/user-overview-step.component.ts +0 -17
- package/projects/tuki/widgets/user-creation/src/widgets/user-creation-wizard/components/user-template-step/user-template-step.component.html +0 -73
- package/projects/tuki/widgets/user-creation/src/widgets/user-creation-wizard/components/user-template-step/user-template-step.component.scss +0 -127
- package/projects/tuki/widgets/user-creation/src/widgets/user-creation-wizard/components/user-template-step/user-template-step.component.ts +0 -211
- package/projects/tuki/widgets/user-creation/src/widgets/user-creation-wizard/user-creation-wizard.component.html +0 -113
- package/projects/tuki/widgets/user-creation/src/widgets/user-creation-wizard/user-creation-wizard.component.scss +0 -227
- package/projects/tuki/widgets/user-creation/src/widgets/user-creation-wizard/user-creation-wizard.component.spec.ts +0 -41
- package/projects/tuki/widgets/user-creation/src/widgets/user-creation-wizard/user-creation-wizard.component.ts +0 -123
- package/projects/tuki/widgets/user-creation/src/widgets/user-creation-wizard/user-creation-wizard.service.ts +0 -947
- package/projects/tuki/widgets/user-device-manage/ng-package.json +0 -7
- package/projects/tuki/widgets/user-device-manage/public-api.ts +0 -8
- package/projects/tuki/widgets/user-device-manage/src/app.constants.ts +0 -99
- package/projects/tuki/widgets/user-device-manage/src/assets/icons/arrow-down-bold.svg +0 -1
- package/projects/tuki/widgets/user-device-manage/src/assets/icons/arrow-left.svg +0 -5
- package/projects/tuki/widgets/user-device-manage/src/assets/icons/arrow-right-regular.svg +0 -1
- package/projects/tuki/widgets/user-device-manage/src/assets/icons/arrow-right.svg +0 -5
- package/projects/tuki/widgets/user-device-manage/src/assets/icons/cancel-regular.svg +0 -1
- package/projects/tuki/widgets/user-device-manage/src/assets/icons/check-circle-regular.svg +0 -1
- package/projects/tuki/widgets/user-device-manage/src/assets/icons/cisco.svg +0 -8
- package/projects/tuki/widgets/user-device-manage/src/assets/icons/cisco_7841.png +0 -0
- package/projects/tuki/widgets/user-device-manage/src/assets/icons/cisco_8841.png +0 -0
- package/projects/tuki/widgets/user-device-manage/src/assets/icons/cisco_8851.png +0 -0
- package/projects/tuki/widgets/user-device-manage/src/assets/icons/cisco_9861.png +0 -0
- package/projects/tuki/widgets/user-device-manage/src/assets/icons/close_icon_x.svg +0 -3
- package/projects/tuki/widgets/user-device-manage/src/assets/icons/delete_icon.svg +0 -5
- package/projects/tuki/widgets/user-device-manage/src/assets/icons/dragger-vertical-icon.svg +0 -3
- package/projects/tuki/widgets/user-device-manage/src/assets/icons/icon_user.svg +0 -1
- package/projects/tuki/widgets/user-device-manage/src/assets/icons/info-circle-regular.svg +0 -1
- package/projects/tuki/widgets/user-device-manage/src/assets/icons/people-regular.svg +0 -1
- package/projects/tuki/widgets/user-device-manage/src/assets/icons/plus-regular.svg +0 -1
- package/projects/tuki/widgets/user-device-manage/src/assets/icons/settings-light.svg +0 -1
- package/projects/tuki/widgets/user-device-manage/src/assets/icons/settings-regular.svg +0 -1
- package/projects/tuki/widgets/user-device-manage/src/assets/icons/vartical_divider_icon.svg +0 -3
- package/projects/tuki/widgets/user-device-manage/src/assets/icons/warning-regular.svg +0 -1
- package/projects/tuki/widgets/user-device-manage/src/assets/info-circle-bold.svg +0 -1
- package/projects/tuki/widgets/user-device-manage/src/classes/device.ts +0 -292
- package/projects/tuki/widgets/user-device-manage/src/classes/deviceProfile.ts +0 -79
- package/projects/tuki/widgets/user-device-manage/src/classes/line-association-interface.ts +0 -50
- package/projects/tuki/widgets/user-device-manage/src/classes/line-association.ts +0 -177
- package/projects/tuki/widgets/user-device-manage/src/classes/line-call-info-display.ts +0 -21
- package/projects/tuki/widgets/user-device-manage/src/classes/line-directory.ts +0 -41
- package/projects/tuki/widgets/user-device-manage/src/classes/line.ts +0 -144
- package/projects/tuki/widgets/user-device-manage/src/classes/notification.ts +0 -40
- package/projects/tuki/widgets/user-device-manage/src/classes/recording-options.ts +0 -6
- package/projects/tuki/widgets/user-device-manage/src/classes/simplified-user.ts +0 -169
- package/projects/tuki/widgets/user-device-manage/src/classes/site-defaults.ts +0 -167
- package/projects/tuki/widgets/user-device-manage/src/classes/translation-pattern.ts +0 -50
- package/projects/tuki/widgets/user-device-manage/src/classes/types.ts +0 -19
- package/projects/tuki/widgets/user-device-manage/src/classes/user-interface.ts +0 -225
- package/projects/tuki/widgets/user-device-manage/src/classes/user.ts +0 -8
- package/projects/tuki/widgets/user-device-manage/src/common-functions.ts +0 -16
- package/projects/tuki/widgets/user-device-manage/src/confirm-dialog/info-dialog.component.html +0 -14
- package/projects/tuki/widgets/user-device-manage/src/confirm-dialog/info-dialog.component.scss +0 -80
- package/projects/tuki/widgets/user-device-manage/src/confirm-dialog/info-dialog.component.ts +0 -35
- package/projects/tuki/widgets/user-device-manage/src/device-associated-line/associated-line-row/associated-line-row.component.html +0 -21
- package/projects/tuki/widgets/user-device-manage/src/device-associated-line/associated-line-row/associated-line-row.component.scss +0 -97
- package/projects/tuki/widgets/user-device-manage/src/device-associated-line/associated-line-row/associated-line-row.component.ts +0 -28
- package/projects/tuki/widgets/user-device-manage/src/device-associated-line/device-associated-line-details-box/device-associated-line-details-box.component.html +0 -6
- package/projects/tuki/widgets/user-device-manage/src/device-associated-line/device-associated-line-details-box/device-associated-line-details-box.component.scss +0 -20
- package/projects/tuki/widgets/user-device-manage/src/device-associated-line/device-associated-line-details-box/device-associated-line-details-box.component.ts +0 -13
- package/projects/tuki/widgets/user-device-manage/src/device-associated-line/device-associated-line-extension/device-associated-line-extension.component.html +0 -24
- package/projects/tuki/widgets/user-device-manage/src/device-associated-line/device-associated-line-extension/device-associated-line-extension.component.scss +0 -11
- package/projects/tuki/widgets/user-device-manage/src/device-associated-line/device-associated-line-extension/device-associated-line-extension.component.ts +0 -74
- package/projects/tuki/widgets/user-device-manage/src/device-associated-line/device-associated-line.component.html +0 -241
- package/projects/tuki/widgets/user-device-manage/src/device-associated-line/device-associated-line.component.scss +0 -500
- package/projects/tuki/widgets/user-device-manage/src/device-associated-line/device-associated-line.component.ts +0 -194
- package/projects/tuki/widgets/user-device-manage/src/device-info/device-info.component.html +0 -52
- package/projects/tuki/widgets/user-device-manage/src/device-info/device-info.component.scss +0 -219
- package/projects/tuki/widgets/user-device-manage/src/device-info/device-info.component.ts +0 -38
- package/projects/tuki/widgets/user-device-manage/src/device-list/device-list.component.html +0 -27
- package/projects/tuki/widgets/user-device-manage/src/device-list/device-list.component.scss +0 -131
- package/projects/tuki/widgets/user-device-manage/src/device-list/device-list.component.ts +0 -25
- package/projects/tuki/widgets/user-device-manage/src/device-manage-widget.component.html +0 -301
- package/projects/tuki/widgets/user-device-manage/src/device-manage-widget.component.scss +0 -766
- package/projects/tuki/widgets/user-device-manage/src/device-manage-widget.component.ts +0 -190
- package/projects/tuki/widgets/user-device-manage/src/environments/environment.prod.ts +0 -9
- package/projects/tuki/widgets/user-device-manage/src/environments/environment.ts +0 -10
- package/projects/tuki/widgets/user-device-manage/src/interseptors/auth.interceptor.ts +0 -35
- package/projects/tuki/widgets/user-device-manage/src/lazy-loading-select/lazy-loading-select.component.html +0 -67
- package/projects/tuki/widgets/user-device-manage/src/lazy-loading-select/lazy-loading-select.component.scss +0 -98
- package/projects/tuki/widgets/user-device-manage/src/lazy-loading-select/lazy-loading-select.component.ts +0 -81
- package/projects/tuki/widgets/user-device-manage/src/material.module.ts +0 -87
- package/projects/tuki/widgets/user-device-manage/src/notifications/notification.component.html +0 -33
- package/projects/tuki/widgets/user-device-manage/src/notifications/notification.component.scss +0 -84
- package/projects/tuki/widgets/user-device-manage/src/notifications/notification.component.ts +0 -46
- package/projects/tuki/widgets/user-device-manage/src/pipes/mac-address.pipe.ts +0 -24
- package/projects/tuki/widgets/user-device-manage/src/removeKynFromIBM.service.ts +0 -25
- package/projects/tuki/widgets/user-device-manage/src/services/api.service.ts +0 -87
- package/projects/tuki/widgets/user-device-manage/src/services/common-functions.ts +0 -17
- package/projects/tuki/widgets/user-device-manage/src/services/device.service.ts +0 -95
- package/projects/tuki/widgets/user-device-manage/src/services/dns.service.ts +0 -146
- package/projects/tuki/widgets/user-device-manage/src/services/line.service.ts +0 -89
- package/projects/tuki/widgets/user-device-manage/src/services/notification.service.ts +0 -68
- package/projects/tuki/widgets/user-device-manage/src/services/removeKynFromIBM.service.ts +0 -25
- package/projects/tuki/widgets/user-device-manage/src/services/site-settings.service.ts +0 -82
- package/projects/tuki/widgets/user-device-manage/src/services/sorting-utils.service.ts +0 -203
- package/projects/tuki/widgets/user-device-manage/src/services/user.service.ts +0 -432
- package/projects/tuki/widgets/user-device-manage/src/services/utils.service.ts +0 -87
- package/projects/tuki/widgets/user-device-manage/src/services/validation.service.ts +0 -829
- package/projects/tuki/widgets/user-device-manage/src/shared/tk-page-section/page-section.component.html +0 -13
- package/projects/tuki/widgets/user-device-manage/src/shared/tk-page-section/page-section.component.scss +0 -48
- package/projects/tuki/widgets/user-device-manage/src/shared/tk-page-section/page-section.component.spec.ts +0 -23
- package/projects/tuki/widgets/user-device-manage/src/shared/tk-page-section/page-section.component.ts +0 -10
- package/projects/tuki/widgets/user-device-manage/src/styles/_variables.scss +0 -90
- package/projects/tuki/widgets/user-device-manage/src/styles/form.scss +0 -284
- package/projects/tuki/widgets/user-device-manage/src/styles/icons.scss +0 -33
- package/projects/tuki/widgets/user-device-manage/src/styles/styles.scss +0 -131
- package/projects/tuki/widgets/user-device-manage/src/styles/tables.scss +0 -30
- package/projects/tuki/widgets/user-device-manage/src/user-device-manage.module.ts +0 -79
- package/projects/tuki/widgets/user-device-manage/src/utils/app-loader/app-loader.component.html +0 -7
- package/projects/tuki/widgets/user-device-manage/src/utils/app-loader/app-loader.component.scss +0 -11
- package/projects/tuki/widgets/user-device-manage/src/utils/app-loader/app-loader.ts +0 -13
- package/projects/tuki/widgets/user-manage/ng-package.json +0 -7
- package/projects/tuki/widgets/user-manage/public-api.ts +0 -6
- package/projects/tuki/widgets/user-manage/src/app.constants.ts +0 -55
- package/projects/tuki/widgets/user-manage/src/assets/icons/arrow-down-bold.svg +0 -1
- package/projects/tuki/widgets/user-manage/src/assets/icons/arrow-left.svg +0 -5
- package/projects/tuki/widgets/user-manage/src/assets/icons/arrow-right-bold.svg +0 -1
- package/projects/tuki/widgets/user-manage/src/assets/icons/arrow-right.svg +0 -5
- package/projects/tuki/widgets/user-manage/src/assets/icons/cisco_7841.png +0 -0
- package/projects/tuki/widgets/user-manage/src/assets/icons/cisco_8841.png +0 -0
- package/projects/tuki/widgets/user-manage/src/assets/icons/cisco_8851.png +0 -0
- package/projects/tuki/widgets/user-manage/src/assets/icons/cisco_9861.png +0 -0
- package/projects/tuki/widgets/user-manage/src/assets/icons/delete_icon.svg +0 -5
- package/projects/tuki/widgets/user-manage/src/assets/icons/dragger-vertical-icon.svg +0 -3
- package/projects/tuki/widgets/user-manage/src/assets/icons/icon_user.svg +0 -1
- package/projects/tuki/widgets/user-manage/src/assets/icons/info-circle-bold.svg +0 -1
- package/projects/tuki/widgets/user-manage/src/assets/icons/mt.svg +0 -3
- package/projects/tuki/widgets/user-manage/src/assets/icons/people-regular.svg +0 -1
- package/projects/tuki/widgets/user-manage/src/assets/icons/settings-light.svg +0 -1
- package/projects/tuki/widgets/user-manage/src/assets/icons/vartical_divider_icon.svg +0 -3
- package/projects/tuki/widgets/user-manage/src/assets/icons/webex.svg +0 -7
- package/projects/tuki/widgets/user-manage/src/classes/device.ts +0 -234
- package/projects/tuki/widgets/user-manage/src/classes/line-association-interface.ts +0 -44
- package/projects/tuki/widgets/user-manage/src/classes/line-association.ts +0 -161
- package/projects/tuki/widgets/user-manage/src/classes/line-call-info-display.ts +0 -21
- package/projects/tuki/widgets/user-manage/src/classes/line-directory.ts +0 -44
- package/projects/tuki/widgets/user-manage/src/classes/line.ts +0 -145
- package/projects/tuki/widgets/user-manage/src/classes/notification.ts +0 -39
- package/projects/tuki/widgets/user-manage/src/classes/pagination.ts +0 -18
- package/projects/tuki/widgets/user-manage/src/classes/recording-options.ts +0 -6
- package/projects/tuki/widgets/user-manage/src/classes/simplified-user.ts +0 -174
- package/projects/tuki/widgets/user-manage/src/classes/table-data.ts +0 -6
- package/projects/tuki/widgets/user-manage/src/classes/translation-pattern.ts +0 -49
- package/projects/tuki/widgets/user-manage/src/classes/user-interface.ts +0 -225
- package/projects/tuki/widgets/user-manage/src/classes/user-list.ts +0 -42
- package/projects/tuki/widgets/user-manage/src/classes/user.ts +0 -8
- package/projects/tuki/widgets/user-manage/src/common-functions.ts +0 -16
- package/projects/tuki/widgets/user-manage/src/device-list/device-list.component.html +0 -32
- package/projects/tuki/widgets/user-manage/src/device-list/device-list.component.scss +0 -305
- package/projects/tuki/widgets/user-manage/src/device-list/device-list.component.ts +0 -26
- package/projects/tuki/widgets/user-manage/src/device-list/device-row/device-row.component.html +0 -14
- package/projects/tuki/widgets/user-manage/src/device-list/device-row/device-row.component.scss +0 -154
- package/projects/tuki/widgets/user-manage/src/device-list/device-row/device-row.component.ts +0 -34
- package/projects/tuki/widgets/user-manage/src/environments/environment.prod.ts +0 -9
- package/projects/tuki/widgets/user-manage/src/environments/environment.ts +0 -10
- package/projects/tuki/widgets/user-manage/src/interseptors/auth.interceptor.ts +0 -35
- package/projects/tuki/widgets/user-manage/src/lazy-loading-select/lazy-loading-select.component.html +0 -68
- package/projects/tuki/widgets/user-manage/src/lazy-loading-select/lazy-loading-select.component.scss +0 -125
- package/projects/tuki/widgets/user-manage/src/lazy-loading-select/lazy-loading-select.component.ts +0 -93
- package/projects/tuki/widgets/user-manage/src/material.module.ts +0 -85
- package/projects/tuki/widgets/user-manage/src/notifications/notification.component.html +0 -33
- package/projects/tuki/widgets/user-manage/src/notifications/notification.component.scss +0 -84
- package/projects/tuki/widgets/user-manage/src/notifications/notification.component.ts +0 -46
- package/projects/tuki/widgets/user-manage/src/removeKynFromIBM.service.ts +0 -25
- package/projects/tuki/widgets/user-manage/src/services/api.service.ts +0 -90
- package/projects/tuki/widgets/user-manage/src/services/dns.service.ts +0 -116
- package/projects/tuki/widgets/user-manage/src/services/line.service.ts +0 -31
- package/projects/tuki/widgets/user-manage/src/services/notification.service.ts +0 -68
- package/projects/tuki/widgets/user-manage/src/services/removeKynFromIBM.service.ts +0 -25
- package/projects/tuki/widgets/user-manage/src/services/site-settings.service.ts +0 -35
- package/projects/tuki/widgets/user-manage/src/services/sorting-utils.service.ts +0 -203
- package/projects/tuki/widgets/user-manage/src/services/user.service.ts +0 -304
- package/projects/tuki/widgets/user-manage/src/services/users-search.service.ts +0 -59
- package/projects/tuki/widgets/user-manage/src/services/utils.service.ts +0 -71
- package/projects/tuki/widgets/user-manage/src/styles/_variables.scss +0 -93
- package/projects/tuki/widgets/user-manage/src/styles/form.scss +0 -231
- package/projects/tuki/widgets/user-manage/src/styles/icons.scss +0 -41
- package/projects/tuki/widgets/user-manage/src/styles/styles.scss +0 -128
- package/projects/tuki/widgets/user-manage/src/styles/tables.scss +0 -30
- package/projects/tuki/widgets/user-manage/src/user-calling/user-calling-extension/user-calling-extension.component.html +0 -10
- package/projects/tuki/widgets/user-manage/src/user-calling/user-calling-extension/user-calling-extension.component.scss +0 -444
- package/projects/tuki/widgets/user-manage/src/user-calling/user-calling-extension/user-calling-extension.component.ts +0 -63
- package/projects/tuki/widgets/user-manage/src/user-calling/user-calling.component.html +0 -128
- package/projects/tuki/widgets/user-manage/src/user-calling/user-calling.component.scss +0 -469
- package/projects/tuki/widgets/user-manage/src/user-calling/user-calling.component.ts +0 -105
- package/projects/tuki/widgets/user-manage/src/user-details/notification.service.ts +0 -68
- package/projects/tuki/widgets/user-manage/src/user-info/user-info.component.html +0 -110
- package/projects/tuki/widgets/user-manage/src/user-info/user-info.component.scss +0 -121
- package/projects/tuki/widgets/user-manage/src/user-info/user-info.component.ts +0 -28
- package/projects/tuki/widgets/user-manage/src/user-manage-widget.component.html +0 -313
- package/projects/tuki/widgets/user-manage/src/user-manage-widget.component.scss +0 -638
- package/projects/tuki/widgets/user-manage/src/user-manage-widget.component.ts +0 -235
- package/projects/tuki/widgets/user-manage/src/user-manage.module.ts +0 -65
- package/projects/tuki/widgets/user-manage/src/user-summary/user-summary.component.html +0 -64
- package/projects/tuki/widgets/user-manage/src/user-summary/user-summary.component.scss +0 -17
- package/projects/tuki/widgets/user-manage/src/user-summary/user-summary.component.ts +0 -8
- package/projects/tuki/widgets/user-manage/src/utils/app-loader/app-loader.component.html +0 -7
- package/projects/tuki/widgets/user-manage/src/utils/app-loader/app-loader.component.scss +0 -11
- package/projects/tuki/widgets/user-manage/src/utils/app-loader/app-loader.ts +0 -13
- package/projects/tuki/widgets/user-manage/src/utils/pagination/pagination.component.html +0 -26
- package/projects/tuki/widgets/user-manage/src/utils/pagination/pagination.component.scss +0 -41
- package/projects/tuki/widgets/user-manage/src/utils/pagination/pagination.component.ts +0 -41
- package/projects/tuki/widgets/users-list/ng-package.json +0 -7
- package/projects/tuki/widgets/users-list/public-api.ts +0 -8
- package/projects/tuki/widgets/users-list/src/app.constants.ts +0 -91
- package/projects/tuki/widgets/users-list/src/assets/icons/close_icon_modal.svg +0 -3
- package/projects/tuki/widgets/users-list/src/assets/icons/cogs.svg +0 -8
- package/projects/tuki/widgets/users-list/src/assets/icons/copy-regular.svg +0 -1
- package/projects/tuki/widgets/users-list/src/assets/icons/di.svg +0 -15
- package/projects/tuki/widgets/users-list/src/assets/icons/di_cloud_24.svg +0 -16
- package/projects/tuki/widgets/users-list/src/assets/icons/icon_user.svg +0 -1
- package/projects/tuki/widgets/users-list/src/assets/icons/info-circle-regular.svg +0 -1
- package/projects/tuki/widgets/users-list/src/assets/icons/info.svg +0 -5
- package/projects/tuki/widgets/users-list/src/assets/icons/local_24.svg +0 -18
- package/projects/tuki/widgets/users-list/src/assets/icons/move_user_to_another_location.svg +0 -14
- package/projects/tuki/widgets/users-list/src/assets/icons/mt_old.svg +0 -3
- package/projects/tuki/widgets/users-list/src/assets/icons/onprem_ucm.svg +0 -17
- package/projects/tuki/widgets/users-list/src/assets/icons/settings-regular.svg +0 -1
- package/projects/tuki/widgets/users-list/src/assets/icons/webex.svg +0 -7
- package/projects/tuki/widgets/users-list/src/assets/icons/webex_logo_icon.svg +0 -305
- package/projects/tuki/widgets/users-list/src/assets/icons/white-close-icon.svg +0 -3
- package/projects/tuki/widgets/users-list/src/classes/app-location.ts +0 -36
- package/projects/tuki/widgets/users-list/src/classes/device.ts +0 -225
- package/projects/tuki/widgets/users-list/src/classes/line.ts +0 -144
- package/projects/tuki/widgets/users-list/src/classes/move-user.ts +0 -229
- package/projects/tuki/widgets/users-list/src/classes/notification.ts +0 -38
- package/projects/tuki/widgets/users-list/src/classes/pagination.ts +0 -18
- package/projects/tuki/widgets/users-list/src/classes/simlified-user.ts +0 -74
- package/projects/tuki/widgets/users-list/src/classes/table-data.ts +0 -6
- package/projects/tuki/widgets/users-list/src/classes/user-interface.ts +0 -225
- package/projects/tuki/widgets/users-list/src/classes/user-list.ts +0 -48
- package/projects/tuki/widgets/users-list/src/classes/user.ts +0 -8
- package/projects/tuki/widgets/users-list/src/components/table-toolbar/table-toolbar.component.html +0 -167
- package/projects/tuki/widgets/users-list/src/components/table-toolbar/table-toolbar.component.scss +0 -41
- package/projects/tuki/widgets/users-list/src/components/table-toolbar/table-toolbar.component.ts +0 -37
- package/projects/tuki/widgets/users-list/src/material.module.ts +0 -97
- package/projects/tuki/widgets/users-list/src/move-user-wizard/move-user-stepper/device-move-user/device-move-user-wizard.component.html +0 -37
- package/projects/tuki/widgets/users-list/src/move-user-wizard/move-user-stepper/device-move-user/device-move-user-wizard.component.scss +0 -131
- package/projects/tuki/widgets/users-list/src/move-user-wizard/move-user-stepper/device-move-user/device-move-user-wizard.component.ts +0 -46
- package/projects/tuki/widgets/users-list/src/move-user-wizard/move-user-stepper/device-move-user-tab/devices-move-user-wizard-tab.component.html +0 -31
- package/projects/tuki/widgets/users-list/src/move-user-wizard/move-user-stepper/device-move-user-tab/devices-move-user-wizard-tab.component.scss +0 -20
- package/projects/tuki/widgets/users-list/src/move-user-wizard/move-user-stepper/device-move-user-tab/devices-move-user-wizard-tab.component.ts +0 -26
- package/projects/tuki/widgets/users-list/src/move-user-wizard/move-user-stepper/move-user-stepper.component.html +0 -222
- package/projects/tuki/widgets/users-list/src/move-user-wizard/move-user-stepper/move-user-stepper.component.scss +0 -249
- package/projects/tuki/widgets/users-list/src/move-user-wizard/move-user-stepper/move-user-stepper.component.ts +0 -207
- package/projects/tuki/widgets/users-list/src/move-user-wizard/move-user-wizard.component.html +0 -12
- package/projects/tuki/widgets/users-list/src/move-user-wizard/move-user-wizard.component.scss +0 -41
- package/projects/tuki/widgets/users-list/src/move-user-wizard/move-user-wizard.component.ts +0 -36
- package/projects/tuki/widgets/users-list/src/services/api-webex.service.ts +0 -14
- package/projects/tuki/widgets/users-list/src/services/api.service.ts +0 -90
- package/projects/tuki/widgets/users-list/src/services/dns.service.ts +0 -128
- package/projects/tuki/widgets/users-list/src/services/events-communication.service.ts +0 -11
- package/projects/tuki/widgets/users-list/src/services/move-user.service.ts +0 -59
- package/projects/tuki/widgets/users-list/src/services/notification.service.ts +0 -68
- package/projects/tuki/widgets/users-list/src/services/removeKynFromIBM.service.ts +0 -25
- package/projects/tuki/widgets/users-list/src/services/site-settings.service.ts +0 -26
- package/projects/tuki/widgets/users-list/src/services/user.service.ts +0 -207
- package/projects/tuki/widgets/users-list/src/services/users-search.service.ts +0 -192
- package/projects/tuki/widgets/users-list/src/styles/styles.scss +0 -639
- package/projects/tuki/widgets/users-list/src/user-list-confirm-dialog/user-list-confirm-dialog.component.html +0 -15
- package/projects/tuki/widgets/users-list/src/user-list-confirm-dialog/user-list-confirm-dialog.component.scss +0 -103
- package/projects/tuki/widgets/users-list/src/user-list-confirm-dialog/user-list-confirm-dialog.component.ts +0 -35
- package/projects/tuki/widgets/users-list/src/users-list.component.css +0 -4
- package/projects/tuki/widgets/users-list/src/users-list.component.css.map +0 -1
- package/projects/tuki/widgets/users-list/src/users-list.component.html +0 -306
- package/projects/tuki/widgets/users-list/src/users-list.component.scss +0 -751
- package/projects/tuki/widgets/users-list/src/users-list.component.ts +0 -1023
- package/projects/tuki/widgets/users-list/src/users-list.module.ts +0 -67
- package/projects/tuki/widgets/users-list/src/utils/app-loader/app-loader.component.css +0 -11
- package/projects/tuki/widgets/users-list/src/utils/app-loader/app-loader.component.css.map +0 -1
- package/projects/tuki/widgets/users-list/src/utils/app-loader/app-loader.component.html +0 -7
- package/projects/tuki/widgets/users-list/src/utils/app-loader/app-loader.component.scss +0 -17
- package/projects/tuki/widgets/users-list/src/utils/app-loader/app-loader.ts +0 -13
- package/projects/tuki/widgets/users-list/src/utils/common-functions.ts +0 -32
- package/projects/tuki/widgets/users-list/src/utils/notifications/notification.component.html +0 -47
- package/projects/tuki/widgets/users-list/src/utils/notifications/notification.component.scss +0 -94
- package/projects/tuki/widgets/users-list/src/utils/notifications/notification.component.ts +0 -46
- package/projects/tuki/widgets/users-list/src/utils/pagination/pagination.component.css +0 -45
- package/projects/tuki/widgets/users-list/src/utils/pagination/pagination.component.css.map +0 -1
- package/projects/tuki/widgets/users-list/src/utils/pagination/pagination.component.html +0 -26
- package/projects/tuki/widgets/users-list/src/utils/pagination/pagination.component.scss +0 -41
- package/projects/tuki/widgets/users-list/src/utils/pagination/pagination.component.ts +0 -41
- package/projects/tuki/widgets/users-list/src/utils/utils.service.ts +0 -71
- package/projects/widgets-playground/src/app/app.component.html +0 -44
- package/projects/widgets-playground/src/app/app.component.scss +0 -26
- package/projects/widgets-playground/src/app/app.component.spec.ts +0 -31
- package/projects/widgets-playground/src/app/app.component.ts +0 -36
- package/projects/widgets-playground/src/app/app.module.ts +0 -49
- package/projects/widgets-playground/src/assets/.gitkeep +0 -0
- package/projects/widgets-playground/src/assets/icons/already_upgraded.png +0 -0
- package/projects/widgets-playground/src/assets/icons/applications copy.svg +0 -6
- package/projects/widgets-playground/src/assets/icons/applications.svg +0 -6
- package/projects/widgets-playground/src/assets/icons/arrow-down-bold.svg +0 -1
- package/projects/widgets-playground/src/assets/icons/audio-prompts.svg +0 -4
- package/projects/widgets-playground/src/assets/icons/audioPrompts.svg +0 -4
- package/projects/widgets-playground/src/assets/icons/check2_icon.png +0 -0
- package/projects/widgets-playground/src/assets/icons/check_icon.png +0 -0
- package/projects/widgets-playground/src/assets/icons/contactServiceQueues.svg +0 -3
- package/projects/widgets-playground/src/assets/icons/copy-regular.svg +0 -1
- package/projects/widgets-playground/src/assets/icons/csqs.svg +0 -3
- package/projects/widgets-playground/src/assets/icons/di.svg +0 -15
- package/projects/widgets-playground/src/assets/icons/di_cloud_24.svg +0 -16
- package/projects/widgets-playground/src/assets/icons/expand_icon.png +0 -0
- package/projects/widgets-playground/src/assets/icons/info-circle-regular.svg +0 -1
- package/projects/widgets-playground/src/assets/icons/issue_icon.png +0 -0
- package/projects/widgets-playground/src/assets/icons/local_24.svg +0 -18
- package/projects/widgets-playground/src/assets/icons/menu_icon.png +0 -0
- package/projects/widgets-playground/src/assets/icons/mt_old.svg +0 -3
- package/projects/widgets-playground/src/assets/icons/onprem_ucm.svg +0 -17
- package/projects/widgets-playground/src/assets/icons/phone-books.svg +0 -6
- package/projects/widgets-playground/src/assets/icons/phonebooks.svg +0 -6
- package/projects/widgets-playground/src/assets/icons/ready_to_upgrade.png +0 -0
- package/projects/widgets-playground/src/assets/icons/resource-group.svg +0 -6
- package/projects/widgets-playground/src/assets/icons/resource.svg +0 -3
- package/projects/widgets-playground/src/assets/icons/resourceGroups.svg +0 -6
- package/projects/widgets-playground/src/assets/icons/resources.svg +0 -3
- package/projects/widgets-playground/src/assets/icons/scripts copy.svg +0 -12
- package/projects/widgets-playground/src/assets/icons/scripts.svg +0 -12
- package/projects/widgets-playground/src/assets/icons/search_icon.png +0 -0
- package/projects/widgets-playground/src/assets/icons/settings-regular.svg +0 -1
- package/projects/widgets-playground/src/assets/icons/site.png +0 -0
- package/projects/widgets-playground/src/assets/icons/skills copy.svg +0 -3
- package/projects/widgets-playground/src/assets/icons/skills.svg +0 -3
- package/projects/widgets-playground/src/assets/icons/teams copy.svg +0 -3
- package/projects/widgets-playground/src/assets/icons/teams.svg +0 -3
- package/projects/widgets-playground/src/assets/icons/triggers copy.svg +0 -4
- package/projects/widgets-playground/src/assets/icons/triggers.svg +0 -4
- package/projects/widgets-playground/src/assets/icons/user.png +0 -0
- package/projects/widgets-playground/src/assets/icons/warning_icon.png +0 -0
- package/projects/widgets-playground/src/assets/icons/webex.svg +0 -7
- package/projects/widgets-playground/src/assets/icons/webex_logo_icon.svg +0 -305
- package/projects/widgets-playground/src/assets/icons/wrapUpCodes.svg +0 -3
- package/projects/widgets-playground/src/assets/icons/wrapup-codes.svg +0 -3
- package/projects/widgets-playground/src/assets/icons/xml copy.svg +0 -6
- package/projects/widgets-playground/src/assets/icons/xml.svg +0 -6
- package/projects/widgets-playground/src/assets/wxcc/action-menu.svg +0 -3
- package/projects/widgets-playground/src/assets/wxcc/c1.svg +0 -3
- package/projects/widgets-playground/src/assets/wxcc/c2.svg +0 -3
- package/projects/widgets-playground/src/assets/wxcc/close1.svg +0 -3
- package/projects/widgets-playground/src/assets/wxcc/delay.svg +0 -3
- package/projects/widgets-playground/src/assets/wxcc/if.svg +0 -3
- package/projects/widgets-playground/src/assets/wxcc/m1.svg +0 -3
- package/projects/widgets-playground/src/assets/wxcc/m2.svg +0 -3
- package/projects/widgets-playground/src/assets/wxcc/m3.svg +0 -3
- package/projects/widgets-playground/src/assets/wxcc/p1.svg +0 -3
- package/projects/widgets-playground/src/assets/wxcc/route.svg +0 -5
- package/projects/widgets-playground/src/assets/wxcc/s1.svg +0 -3
- package/projects/widgets-playground/src/assets/wxcc/search.svg +0 -3
- package/projects/widgets-playground/src/assets/wxcc/terminate.svg +0 -3
- package/projects/widgets-playground/src/assets/wxcc/terminate2.svg +0 -3
- package/projects/widgets-playground/src/assets/wxcc/unmapped.svg +0 -3
- package/projects/widgets-playground/src/assets/wxcc/variable.svg +0 -3
- package/projects/widgets-playground/src/environments/environment.ts +0 -5
- package/projects/widgets-playground/src/favicon.ico +0 -0
- package/projects/widgets-playground/src/index.html +0 -13
- package/projects/widgets-playground/src/main.ts +0 -7
- package/projects/widgets-playground/src/styles.scss +0 -33
- package/projects/widgets-playground/tsconfig.app.json +0 -14
- package/projects/widgets-playground/tsconfig.spec.json +0 -14
- package/proxy.conf.js +0 -23
- package/tsconfig.json +0 -52
- /package/{projects/tuki/widgets/di2mt → di2mt}/README.md +0 -0
- /package/{projects/tuki/widgets → esm2020}/contact-center/cc-script-editor/mock/data/QWC_ir.json +0 -0
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from "@angular/core";
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "@angular/common";
|
|
4
|
+
import * as i2 from "@angular/material/form-field";
|
|
5
|
+
import * as i3 from "@angular/material/select";
|
|
6
|
+
import * as i4 from "@angular/material/core";
|
|
7
|
+
export class WxCCFileSelectionBarComponent {
|
|
8
|
+
constructor() {
|
|
9
|
+
this.fileNameSelectionChange = new EventEmitter();
|
|
10
|
+
this.hostFileNames = new Map();
|
|
11
|
+
}
|
|
12
|
+
ngOnInit() {
|
|
13
|
+
this.fileNames.forEach(({ fileName, host }) => {
|
|
14
|
+
if (!this.hostFileNames.has(host)) {
|
|
15
|
+
this.hostFileNames.set(host, []);
|
|
16
|
+
}
|
|
17
|
+
this.hostFileNames.get(host)?.push(fileName);
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
get fileNamesByHost() {
|
|
21
|
+
return this.hostFileNames.get(this.selectedHost);
|
|
22
|
+
}
|
|
23
|
+
get hosts() {
|
|
24
|
+
if (!this.fileNames.length) {
|
|
25
|
+
return null;
|
|
26
|
+
}
|
|
27
|
+
const hostsSet = new Set(this.fileNames.map((file) => file.host));
|
|
28
|
+
return Array.from(hostsSet).filter(host => host);
|
|
29
|
+
}
|
|
30
|
+
onFileSelectionChange(fileName) {
|
|
31
|
+
this.fileNameSelectionChange.emit({ fileName: fileName, host: this.selectedHost });
|
|
32
|
+
}
|
|
33
|
+
onHostSelectionChange(host) {
|
|
34
|
+
this.selectedHost = host;
|
|
35
|
+
this.fileNameSelectionChange.emit({
|
|
36
|
+
host: host,
|
|
37
|
+
fileName: this.fileNamesByHost[0]
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
trackByFileName(_index, fileName) {
|
|
41
|
+
return fileName;
|
|
42
|
+
}
|
|
43
|
+
trackByHost(_index, host) {
|
|
44
|
+
return host;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
WxCCFileSelectionBarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: WxCCFileSelectionBarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
48
|
+
WxCCFileSelectionBarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: WxCCFileSelectionBarComponent, selector: "wxcc-file-selection-bar", inputs: { fileNames: "fileNames", selectedFileName: "selectedFileName", selectedHost: "selectedHost" }, outputs: { fileNameSelectionChange: "fileNameSelectionChange" }, ngImport: i0, template: "<div class=\"file-selection-bar\">\r\n <mat-form-field appearance=\"outline\" class=\"host-selection\" *ngIf=\"hosts?.length\">\r\n <!-- <mat-label>Host</mat-label> -->\r\n <mat-select\r\n [value]=\"selectedHost\"\r\n (selectionChange)=\"onHostSelectionChange($event.value)\">\r\n <mat-option\r\n *ngFor=\"let host of hosts; trackBy: trackByHost\"\r\n title=\"{{ host }}\"\r\n [value]=\"host\">\r\n {{ host }}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n\r\n <mat-form-field appearance=\"outline\" class=\"file-selection\">\r\n <!-- <mat-label>Script file</mat-label> -->\r\n <mat-select\r\n [value]=\"selectedFileName\"\r\n (selectionChange)=\"onFileSelectionChange($event.value)\">\r\n <mat-option\r\n *ngFor=\"let name of fileNamesByHost; trackBy: trackByFileName\"\r\n title=\"{{ name }}\"\r\n [value]=\"name\">\r\n {{ name }}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n</div>", styles: ["@import\"https://fonts.googleapis.com/css?family=Poppins:400,100,200,300,500,600,800,700,900\";@import\"https://fonts.googleapis.com/css2?family=Inter:wght@300;400&display=swap\";:host ::ng-deep .mat-form-field-appearance-outline .mat-form-field-wrapper{margin:0}:host ::ng-deep .mat-form-field-appearance-outline .mat-form-field-infix{padding:.25rem 0 .5rem}:host ::ng-deep .mat-select-trigger{display:block}:host ::ng-deep .mat-select-trigger .mat-select-arrow-wrapper{transform:none}.file-selection-bar{display:flex;gap:1rem}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "component", type: i3.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { kind: "component", type: i4.MatOption, selector: "mat-option", exportAs: ["matOption"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
49
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: WxCCFileSelectionBarComponent, decorators: [{
|
|
50
|
+
type: Component,
|
|
51
|
+
args: [{ selector: 'wxcc-file-selection-bar', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"file-selection-bar\">\r\n <mat-form-field appearance=\"outline\" class=\"host-selection\" *ngIf=\"hosts?.length\">\r\n <!-- <mat-label>Host</mat-label> -->\r\n <mat-select\r\n [value]=\"selectedHost\"\r\n (selectionChange)=\"onHostSelectionChange($event.value)\">\r\n <mat-option\r\n *ngFor=\"let host of hosts; trackBy: trackByHost\"\r\n title=\"{{ host }}\"\r\n [value]=\"host\">\r\n {{ host }}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n\r\n <mat-form-field appearance=\"outline\" class=\"file-selection\">\r\n <!-- <mat-label>Script file</mat-label> -->\r\n <mat-select\r\n [value]=\"selectedFileName\"\r\n (selectionChange)=\"onFileSelectionChange($event.value)\">\r\n <mat-option\r\n *ngFor=\"let name of fileNamesByHost; trackBy: trackByFileName\"\r\n title=\"{{ name }}\"\r\n [value]=\"name\">\r\n {{ name }}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n</div>", styles: ["@import\"https://fonts.googleapis.com/css?family=Poppins:400,100,200,300,500,600,800,700,900\";@import\"https://fonts.googleapis.com/css2?family=Inter:wght@300;400&display=swap\";:host ::ng-deep .mat-form-field-appearance-outline .mat-form-field-wrapper{margin:0}:host ::ng-deep .mat-form-field-appearance-outline .mat-form-field-infix{padding:.25rem 0 .5rem}:host ::ng-deep .mat-select-trigger{display:block}:host ::ng-deep .mat-select-trigger .mat-select-arrow-wrapper{transform:none}.file-selection-bar{display:flex;gap:1rem}\n"] }]
|
|
52
|
+
}], propDecorators: { fileNames: [{
|
|
53
|
+
type: Input
|
|
54
|
+
}], selectedFileName: [{
|
|
55
|
+
type: Input
|
|
56
|
+
}], selectedHost: [{
|
|
57
|
+
type: Input
|
|
58
|
+
}], fileNameSelectionChange: [{
|
|
59
|
+
type: Output
|
|
60
|
+
}] } });
|
|
61
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3hjYy1maWxlLXNlbGVjdGlvbi1iYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHVraS93aWRnZXRzL2NvbnRhY3QtY2VudGVyL2NjLXNjcmlwdC1lZGl0b3IvY29tcG9uZW50cy93eGNjLWZpbGUtc2VsZWN0aW9uLWJhci93eGNjLWZpbGUtc2VsZWN0aW9uLWJhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dWtpL3dpZGdldHMvY29udGFjdC1jZW50ZXIvY2Mtc2NyaXB0LWVkaXRvci9jb21wb25lbnRzL3d4Y2MtZmlsZS1zZWxlY3Rpb24tYmFyL3d4Y2MtZmlsZS1zZWxlY3Rpb24tYmFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7OztBQVF4RyxNQUFNLE9BQU8sNkJBQTZCO0lBTjFDO1FBV2MsNEJBQXVCLEdBQUcsSUFBSSxZQUFZLEVBQXNDLENBQUM7UUFFbEYsa0JBQWEsR0FBRyxJQUFJLEdBQUcsRUFBb0IsQ0FBQztLQTBDeEQ7SUF4Q0csUUFBUTtRQUNKLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRTtZQUMxQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQy9CLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQzthQUNwQztZQUNELElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNqRCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxJQUFJLGVBQWU7UUFDZixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQWEsQ0FBQztJQUNqRSxDQUFDO0lBRUQsSUFBSSxLQUFLO1FBQ0wsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFO1lBQ3hCLE9BQU8sSUFBSSxDQUFDO1NBQ2Y7UUFDRCxNQUFNLFFBQVEsR0FBRyxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDbEUsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFRCxxQkFBcUIsQ0FBQyxRQUFnQjtRQUNsQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUM7SUFDdkYsQ0FBQztJQUVELHFCQUFxQixDQUFDLElBQVk7UUFDOUIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7UUFDekIsSUFBSSxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQztZQUM5QixJQUFJLEVBQUUsSUFBSTtZQUNWLFFBQVEsRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQztTQUNwQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsZUFBZSxDQUFDLE1BQWMsRUFBRSxRQUFnQjtRQUM1QyxPQUFPLFFBQVEsQ0FBQztJQUNwQixDQUFDO0lBRUQsV0FBVyxDQUFDLE1BQWMsRUFBRSxJQUFZO1FBQ3BDLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7OzJIQWhEUSw2QkFBNkI7K0dBQTdCLDZCQUE2Qix3T0NSMUMsMnBDQTRCTTs0RkRwQk8sNkJBQTZCO2tCQU56QyxTQUFTOytCQUNJLHlCQUF5QixtQkFHbEIsdUJBQXVCLENBQUMsTUFBTTs4QkFHdEMsU0FBUztzQkFBakIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFFSSx1QkFBdUI7c0JBQWhDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnd3hjYy1maWxlLXNlbGVjdGlvbi1iYXInLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL3d4Y2MtZmlsZS1zZWxlY3Rpb24tYmFyLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL3d4Y2MtZmlsZS1zZWxlY3Rpb24tYmFyLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxyXG59KVxyXG5leHBvcnQgY2xhc3MgV3hDQ0ZpbGVTZWxlY3Rpb25CYXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gICAgQElucHV0KCkgZmlsZU5hbWVzITogeyBmaWxlTmFtZTogc3RyaW5nOyBob3N0OiBzdHJpbmcgfVtdO1xyXG4gICAgQElucHV0KCkgc2VsZWN0ZWRGaWxlTmFtZSE6IHN0cmluZztcclxuICAgIEBJbnB1dCgpIHNlbGVjdGVkSG9zdCE6IHN0cmluZztcclxuXHJcbiAgICBAT3V0cHV0KCkgZmlsZU5hbWVTZWxlY3Rpb25DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHsgaG9zdDogc3RyaW5nLCBmaWxlTmFtZTogc3RyaW5nIH0+KCk7XHJcblxyXG4gICAgcmVhZG9ubHkgaG9zdEZpbGVOYW1lcyA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmdbXT4oKTtcclxuXHJcbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmZpbGVOYW1lcy5mb3JFYWNoKCh7IGZpbGVOYW1lLCBob3N0IH0pID0+IHtcclxuICAgICAgICAgICAgaWYgKCF0aGlzLmhvc3RGaWxlTmFtZXMuaGFzKGhvc3QpKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmhvc3RGaWxlTmFtZXMuc2V0KGhvc3QsIFtdKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLmhvc3RGaWxlTmFtZXMuZ2V0KGhvc3QpPy5wdXNoKGZpbGVOYW1lKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgZmlsZU5hbWVzQnlIb3N0KCk6IHN0cmluZ1tdIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5ob3N0RmlsZU5hbWVzLmdldCh0aGlzLnNlbGVjdGVkSG9zdCkgYXMgc3RyaW5nW107XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IGhvc3RzKCk6IHN0cmluZ1tdIHwgbnVsbCB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmZpbGVOYW1lcy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IGhvc3RzU2V0ID0gbmV3IFNldCh0aGlzLmZpbGVOYW1lcy5tYXAoKGZpbGUpID0+IGZpbGUuaG9zdCkpO1xyXG4gICAgICAgIHJldHVybiBBcnJheS5mcm9tKGhvc3RzU2V0KS5maWx0ZXIoaG9zdCA9PiBob3N0KTtcclxuICAgIH1cclxuXHJcbiAgICBvbkZpbGVTZWxlY3Rpb25DaGFuZ2UoZmlsZU5hbWU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuZmlsZU5hbWVTZWxlY3Rpb25DaGFuZ2UuZW1pdCh7IGZpbGVOYW1lOiBmaWxlTmFtZSwgaG9zdDogdGhpcy5zZWxlY3RlZEhvc3QgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgb25Ib3N0U2VsZWN0aW9uQ2hhbmdlKGhvc3Q6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRIb3N0ID0gaG9zdDtcclxuICAgICAgICB0aGlzLmZpbGVOYW1lU2VsZWN0aW9uQ2hhbmdlLmVtaXQoe1xyXG4gICAgICAgICAgICBob3N0OiBob3N0LFxyXG4gICAgICAgICAgICBmaWxlTmFtZTogdGhpcy5maWxlTmFtZXNCeUhvc3RbMF1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICB0cmFja0J5RmlsZU5hbWUoX2luZGV4OiBudW1iZXIsIGZpbGVOYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiBmaWxlTmFtZTtcclxuICAgIH1cclxuXHJcbiAgICB0cmFja0J5SG9zdChfaW5kZXg6IG51bWJlciwgaG9zdDogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gaG9zdDtcclxuICAgIH1cclxufSIsIjxkaXYgY2xhc3M9XCJmaWxlLXNlbGVjdGlvbi1iYXJcIj5cclxuICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwib3V0bGluZVwiIGNsYXNzPVwiaG9zdC1zZWxlY3Rpb25cIiAqbmdJZj1cImhvc3RzPy5sZW5ndGhcIj5cclxuICAgICAgICA8IS0tIDxtYXQtbGFiZWw+SG9zdDwvbWF0LWxhYmVsPiAtLT5cclxuICAgICAgICA8bWF0LXNlbGVjdFxyXG4gICAgICAgICAgICBbdmFsdWVdPVwic2VsZWN0ZWRIb3N0XCJcclxuICAgICAgICAgICAgKHNlbGVjdGlvbkNoYW5nZSk9XCJvbkhvc3RTZWxlY3Rpb25DaGFuZ2UoJGV2ZW50LnZhbHVlKVwiPlxyXG4gICAgICAgICAgICA8bWF0LW9wdGlvblxyXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGhvc3Qgb2YgaG9zdHM7IHRyYWNrQnk6IHRyYWNrQnlIb3N0XCJcclxuICAgICAgICAgICAgICAgIHRpdGxlPVwie3sgaG9zdCB9fVwiXHJcbiAgICAgICAgICAgICAgICBbdmFsdWVdPVwiaG9zdFwiPlxyXG4gICAgICAgICAgICAgICAge3sgaG9zdCB9fVxyXG4gICAgICAgICAgICA8L21hdC1vcHRpb24+XHJcbiAgICAgICAgPC9tYXQtc2VsZWN0PlxyXG4gICAgPC9tYXQtZm9ybS1maWVsZD5cclxuXHJcbiAgICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cIm91dGxpbmVcIiBjbGFzcz1cImZpbGUtc2VsZWN0aW9uXCI+XHJcbiAgICAgICAgPCEtLSA8bWF0LWxhYmVsPlNjcmlwdCBmaWxlPC9tYXQtbGFiZWw+IC0tPlxyXG4gICAgICAgIDxtYXQtc2VsZWN0XHJcbiAgICAgICAgICAgIFt2YWx1ZV09XCJzZWxlY3RlZEZpbGVOYW1lXCJcclxuICAgICAgICAgICAgKHNlbGVjdGlvbkNoYW5nZSk9XCJvbkZpbGVTZWxlY3Rpb25DaGFuZ2UoJGV2ZW50LnZhbHVlKVwiPlxyXG4gICAgICAgICAgICA8bWF0LW9wdGlvblxyXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IG5hbWUgb2YgZmlsZU5hbWVzQnlIb3N0OyB0cmFja0J5OiB0cmFja0J5RmlsZU5hbWVcIlxyXG4gICAgICAgICAgICAgICAgdGl0bGU9XCJ7eyBuYW1lIH19XCJcclxuICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJuYW1lXCI+XHJcbiAgICAgICAgICAgICAgICB7eyBuYW1lIH19XHJcbiAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cclxuICAgICAgICA8L21hdC1zZWxlY3Q+XHJcbiAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG48L2Rpdj4iXX0=
|
|
@@ -0,0 +1,434 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, Input, ViewChild } from "@angular/core";
|
|
2
|
+
import cytoscape from "cytoscape";
|
|
3
|
+
import dagre from "cytoscape-dagre";
|
|
4
|
+
import nodeHtmlLabel from "cytoscape-node-html-label";
|
|
5
|
+
import { StyleConfig } from "../../constants/cytoscape.config";
|
|
6
|
+
import { getNodeHtmlTemplate } from "../../utils/node-html-template";
|
|
7
|
+
import { AddNodeDialogComponent } from "../dialogs/add-node-dialog/add-node-dialog.component";
|
|
8
|
+
import { LinkNodeDialogComponent } from "../dialogs/link-node-dialog/link-node-dialog.component";
|
|
9
|
+
import * as i0 from "@angular/core";
|
|
10
|
+
import * as i1 from "../../services/wxcc2graph.service";
|
|
11
|
+
import * as i2 from "../../services/cystoscape-viewport.service";
|
|
12
|
+
import * as i3 from "@angular/material/dialog";
|
|
13
|
+
import * as i4 from "../../services/wxcc-activity-creation.service";
|
|
14
|
+
import * as i5 from "@angular/common";
|
|
15
|
+
import * as i6 from "@angular/material/tooltip";
|
|
16
|
+
import * as i7 from "../floating-toolbar/floating-toolbar.component";
|
|
17
|
+
import * as i8 from "../node-details-sidebar/node-details-sidebar.component";
|
|
18
|
+
import * as i9 from "../node-action-toolbar/node-action-toolbar.component";
|
|
19
|
+
import * as i10 from "../node-search-panel/node-search-panel.component";
|
|
20
|
+
cytoscape.use(dagre);
|
|
21
|
+
cytoscape.use(nodeHtmlLabel);
|
|
22
|
+
export class WxCCFlowchartComponent {
|
|
23
|
+
constructor(wxcc2graph, cytoscapeViewportService, dialog, wxccActivityCreationService, cdr) {
|
|
24
|
+
this.wxcc2graph = wxcc2graph;
|
|
25
|
+
this.cytoscapeViewportService = cytoscapeViewportService;
|
|
26
|
+
this.dialog = dialog;
|
|
27
|
+
this.wxccActivityCreationService = wxccActivityCreationService;
|
|
28
|
+
this.cdr = cdr;
|
|
29
|
+
this.viewReady = false;
|
|
30
|
+
this.layoutOptions = {
|
|
31
|
+
name: "dagre",
|
|
32
|
+
rankDir: "LR",
|
|
33
|
+
nodeSep: 180,
|
|
34
|
+
edgeSep: 60,
|
|
35
|
+
rankSep: 150,
|
|
36
|
+
animate: true,
|
|
37
|
+
animationDuration: 500,
|
|
38
|
+
fit: true
|
|
39
|
+
};
|
|
40
|
+
// Sidebar state
|
|
41
|
+
this.isSidebarOpen = false;
|
|
42
|
+
this.selectedNodeData = null;
|
|
43
|
+
// Search panel state
|
|
44
|
+
this.isSearchPanelVisible = false;
|
|
45
|
+
this.searchPanelVisible = false;
|
|
46
|
+
// Node action toolbar state
|
|
47
|
+
this.isNodeToolbarVisible = false;
|
|
48
|
+
this.nodeToolbarPosition = { x: 0, y: 0 };
|
|
49
|
+
// Add node dialog state
|
|
50
|
+
this.availableNodes = [];
|
|
51
|
+
// Link node dialog state
|
|
52
|
+
this.isLinkDialogOpen = false;
|
|
53
|
+
this.selectedEdgeId = null;
|
|
54
|
+
this.selectedEdgeDeleteButtonPosition = null;
|
|
55
|
+
}
|
|
56
|
+
ngAfterViewInit() {
|
|
57
|
+
this.viewReady = true;
|
|
58
|
+
this.tryInit();
|
|
59
|
+
}
|
|
60
|
+
ngOnChanges(changes) {
|
|
61
|
+
if (changes["flowchart"]) {
|
|
62
|
+
this.tryInit();
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
ngOnDestroy() {
|
|
66
|
+
this.cy?.destroy();
|
|
67
|
+
this.cy = undefined;
|
|
68
|
+
}
|
|
69
|
+
tryInit() {
|
|
70
|
+
if (!this.viewReady || !this.flowchartContainer || !this.flowchart) {
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
this.init();
|
|
74
|
+
}
|
|
75
|
+
init() {
|
|
76
|
+
const container = this.flowchartContainer.nativeElement;
|
|
77
|
+
this.cy?.destroy();
|
|
78
|
+
this.cy = undefined;
|
|
79
|
+
const elements = [
|
|
80
|
+
...this.flowchart.nodes,
|
|
81
|
+
...this.flowchart.edges,
|
|
82
|
+
];
|
|
83
|
+
this.cy = cytoscape({
|
|
84
|
+
container: container,
|
|
85
|
+
elements: elements,
|
|
86
|
+
style: this.getStylesheet(),
|
|
87
|
+
});
|
|
88
|
+
this.cy.nodeHtmlLabel([
|
|
89
|
+
{
|
|
90
|
+
query: "node",
|
|
91
|
+
halign: "center",
|
|
92
|
+
valign: "center",
|
|
93
|
+
halignBox: "center",
|
|
94
|
+
valignBox: "center",
|
|
95
|
+
tpl: (data) => getNodeHtmlTemplate(data),
|
|
96
|
+
},
|
|
97
|
+
]);
|
|
98
|
+
const layout = this.cy?.layout({
|
|
99
|
+
...this.layoutOptions,
|
|
100
|
+
}).run();
|
|
101
|
+
layout.on("layoutstop", () => {
|
|
102
|
+
this.cytoscapeViewportService.resetView(this.cy, this.cy?.elements());
|
|
103
|
+
});
|
|
104
|
+
this.setupEventListeners();
|
|
105
|
+
}
|
|
106
|
+
get activities() { return this.wxcc2graph.getAllActivities(); }
|
|
107
|
+
// Toggle search panel visibility
|
|
108
|
+
toggleSearchPanel() {
|
|
109
|
+
this.isSearchPanelVisible = !this.isSearchPanelVisible;
|
|
110
|
+
this.cdr.markForCheck();
|
|
111
|
+
}
|
|
112
|
+
setupEventListeners() {
|
|
113
|
+
// Single tap on node - show only the toolbar (quick actions)
|
|
114
|
+
this.cy?.on("mouseover", "node", (event) => {
|
|
115
|
+
const node = event.target;
|
|
116
|
+
this.selectedNodeData = node.data();
|
|
117
|
+
// Calculate toolbar position relative to the container
|
|
118
|
+
this.updateToolbarPosition(node);
|
|
119
|
+
this.isNodeToolbarVisible = true;
|
|
120
|
+
this.cdr.detectChanges();
|
|
121
|
+
});
|
|
122
|
+
this.cy?.on("tap", "node", (event) => {
|
|
123
|
+
const node = event.target;
|
|
124
|
+
this.clearSelectedEdge();
|
|
125
|
+
this.selectedNodeData = node.data();
|
|
126
|
+
this.isSidebarOpen = true;
|
|
127
|
+
// Hide toolbar when sidebar opens
|
|
128
|
+
this.isNodeToolbarVisible = false;
|
|
129
|
+
this.cdr.detectChanges();
|
|
130
|
+
});
|
|
131
|
+
this.cy?.on("mousemove", "node", (event) => {
|
|
132
|
+
const node = event.target;
|
|
133
|
+
this.updateToolbarPosition(node);
|
|
134
|
+
this.cdr.detectChanges();
|
|
135
|
+
});
|
|
136
|
+
// Edge tap - select edge for explicit deletion action
|
|
137
|
+
this.cy?.on("tap", "edge", (event) => {
|
|
138
|
+
const edge = event.target;
|
|
139
|
+
this.isSidebarOpen = false;
|
|
140
|
+
this.hideNodeToolbar();
|
|
141
|
+
this.selectedNodeData = null;
|
|
142
|
+
this.selectedEdgeId = edge.id();
|
|
143
|
+
edge.select();
|
|
144
|
+
this.updateSelectedEdgeDeleteButtonPosition();
|
|
145
|
+
this.cdr.detectChanges();
|
|
146
|
+
});
|
|
147
|
+
// Canvas tap - hide toolbar and deselect
|
|
148
|
+
this.cy?.on("tap", (event) => {
|
|
149
|
+
if (event.target === this.cy) {
|
|
150
|
+
this.clearSelectedEdge();
|
|
151
|
+
this.isSidebarOpen = false;
|
|
152
|
+
this.hideNodeToolbar();
|
|
153
|
+
this.selectedNodeData = null;
|
|
154
|
+
}
|
|
155
|
+
});
|
|
156
|
+
// Pan/zoom events - update toolbar position
|
|
157
|
+
this.cy?.on("pan zoom", () => {
|
|
158
|
+
if (this.isNodeToolbarVisible && this.selectedNodeData) {
|
|
159
|
+
const node = this.cy?.getElementById(this.selectedNodeData.id);
|
|
160
|
+
if (node?.length) {
|
|
161
|
+
this.updateToolbarPosition(node);
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
if (this.selectedEdgeId) {
|
|
165
|
+
this.updateSelectedEdgeDeleteButtonPosition();
|
|
166
|
+
}
|
|
167
|
+
this.cdr.detectChanges();
|
|
168
|
+
});
|
|
169
|
+
}
|
|
170
|
+
updateToolbarPosition(node) {
|
|
171
|
+
const renderedPosition = node.renderedPosition();
|
|
172
|
+
const renderedWidth = node.renderedWidth();
|
|
173
|
+
const renderedHeight = node.renderedHeight();
|
|
174
|
+
// Position toolbar above the node, centered
|
|
175
|
+
this.nodeToolbarPosition = {
|
|
176
|
+
x: renderedPosition.x - 30,
|
|
177
|
+
y: renderedPosition.y - renderedHeight / 2 - 40, // Above the node
|
|
178
|
+
};
|
|
179
|
+
}
|
|
180
|
+
hideNodeToolbar() {
|
|
181
|
+
this.isNodeToolbarVisible = false;
|
|
182
|
+
this.cdr.detectChanges();
|
|
183
|
+
}
|
|
184
|
+
getStylesheet() {
|
|
185
|
+
return StyleConfig;
|
|
186
|
+
}
|
|
187
|
+
// ==================== Sidebar Events ====================
|
|
188
|
+
onCloseSidebar() {
|
|
189
|
+
this.isSidebarOpen = false;
|
|
190
|
+
this.hideNodeToolbar();
|
|
191
|
+
this.selectedNodeData = null;
|
|
192
|
+
// this.cdr.detectChanges();
|
|
193
|
+
}
|
|
194
|
+
onDescriptionChange(description) {
|
|
195
|
+
if (!this.selectedNodeData || !this.cy)
|
|
196
|
+
return;
|
|
197
|
+
const node = this.cy?.getElementById(this.selectedNodeData.id);
|
|
198
|
+
if (node) {
|
|
199
|
+
const updatedData = {
|
|
200
|
+
...this.selectedNodeData,
|
|
201
|
+
suggestedProperties: {
|
|
202
|
+
...this.selectedNodeData.suggestedProperties,
|
|
203
|
+
uccxDescription: description,
|
|
204
|
+
},
|
|
205
|
+
};
|
|
206
|
+
this.wxcc2graph.updateActivityData(updatedData);
|
|
207
|
+
node.data(updatedData);
|
|
208
|
+
this.selectedNodeData = updatedData;
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
onActivityTypeChange(activityType) {
|
|
212
|
+
if (!this.selectedNodeData || !this.cy)
|
|
213
|
+
return;
|
|
214
|
+
const node = this.cy?.getElementById(this.selectedNodeData.id);
|
|
215
|
+
if (node) {
|
|
216
|
+
const updatedData = {
|
|
217
|
+
...this.selectedNodeData,
|
|
218
|
+
wxccActivityName: activityType.activityName,
|
|
219
|
+
wxccGroup: activityType.group,
|
|
220
|
+
iconUrl: activityType.icon
|
|
221
|
+
};
|
|
222
|
+
this.wxcc2graph.updateActivityData(updatedData);
|
|
223
|
+
node.data(updatedData);
|
|
224
|
+
this.selectedNodeData = updatedData;
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
// ==================== Node Toolbar Events ====================
|
|
228
|
+
onDeleteNode() {
|
|
229
|
+
if (!this.selectedNodeData || !this.cy)
|
|
230
|
+
return;
|
|
231
|
+
const nodeId = this.selectedNodeData.id;
|
|
232
|
+
// Remove from service and get affected link IDs
|
|
233
|
+
const { removedLinkIds } = this.wxcc2graph.removeActivity(nodeId);
|
|
234
|
+
// Remove edges from cytoscape
|
|
235
|
+
removedLinkIds.forEach((linkId) => {
|
|
236
|
+
this.cy?.getElementById(linkId).remove();
|
|
237
|
+
});
|
|
238
|
+
// Remove node from cytoscape
|
|
239
|
+
this.cy?.getElementById(nodeId).remove();
|
|
240
|
+
// Close sidebar and toolbar
|
|
241
|
+
this.onCloseSidebar();
|
|
242
|
+
// Re-run layout
|
|
243
|
+
this.runLayout();
|
|
244
|
+
}
|
|
245
|
+
onDeleteSelectedEdge() {
|
|
246
|
+
if (!this.selectedEdgeId || !this.cy)
|
|
247
|
+
return;
|
|
248
|
+
const edgeId = this.selectedEdgeId;
|
|
249
|
+
const removed = this.wxcc2graph.removeLink(edgeId);
|
|
250
|
+
if (!removed)
|
|
251
|
+
return;
|
|
252
|
+
this.cy?.getElementById(edgeId).remove();
|
|
253
|
+
this.selectedEdgeId = null;
|
|
254
|
+
this.selectedEdgeDeleteButtonPosition = null;
|
|
255
|
+
this.cdr.detectChanges();
|
|
256
|
+
}
|
|
257
|
+
onLinkNodeRequest() {
|
|
258
|
+
if (!this.selectedNodeData || !this.cy)
|
|
259
|
+
return;
|
|
260
|
+
const sourceNode = this.selectedNodeData;
|
|
261
|
+
if (!this.canCreateOutgoingLink(sourceNode.id)) {
|
|
262
|
+
return;
|
|
263
|
+
}
|
|
264
|
+
// Get the cytoscape node to inspect existing connections
|
|
265
|
+
const cyNode = this.cy?.getElementById(sourceNode.id);
|
|
266
|
+
// Collect IDs of nodes already connected as targets from this source
|
|
267
|
+
const existingTargetIds = new Set(cyNode.outgoers('node').map((n) => n.id()));
|
|
268
|
+
// Build the filtered list of linkable targets:
|
|
269
|
+
// - Never allow the start node (NewPhoneContact) as a target
|
|
270
|
+
// - Exclude the source node itself
|
|
271
|
+
// - Exclude nodes already linked as targets from this source
|
|
272
|
+
this.availableNodes = this.wxcc2graph.getAllActivities().filter(act => act.id !== sourceNode.id &&
|
|
273
|
+
act.wxccActivityName !== 'NewPhoneContact' &&
|
|
274
|
+
!existingTargetIds.has(act.id));
|
|
275
|
+
const dialogRef = this.dialog.open(LinkNodeDialogComponent, {
|
|
276
|
+
panelClass: "no-padding-modal",
|
|
277
|
+
width: "550px",
|
|
278
|
+
data: {
|
|
279
|
+
availableNodes: this.availableNodes,
|
|
280
|
+
sourceNode: this.selectedNodeData,
|
|
281
|
+
},
|
|
282
|
+
});
|
|
283
|
+
dialogRef.afterClosed().subscribe((result) => {
|
|
284
|
+
if (result) {
|
|
285
|
+
this.onLinkNodes(result);
|
|
286
|
+
}
|
|
287
|
+
});
|
|
288
|
+
}
|
|
289
|
+
// ==================== Link Dialog Events ====================
|
|
290
|
+
onLinkNodes(linkData) {
|
|
291
|
+
if (!this.cy)
|
|
292
|
+
return;
|
|
293
|
+
if (!this.canCreateOutgoingLink(linkData.sourceNodeId)) {
|
|
294
|
+
return;
|
|
295
|
+
}
|
|
296
|
+
if (this.wxcc2graph.linkExists(linkData.sourceNodeId, linkData.targetNodeId)) {
|
|
297
|
+
console.warn("Link already exists between these nodes");
|
|
298
|
+
return;
|
|
299
|
+
}
|
|
300
|
+
const edge = this.wxcc2graph.addLink(linkData.sourceNodeId, linkData.targetNodeId, linkData.label);
|
|
301
|
+
this.cy?.add(edge);
|
|
302
|
+
this.runLayout();
|
|
303
|
+
}
|
|
304
|
+
// ==================== Add Node Dialog Events ====================
|
|
305
|
+
openAddNodeDialog() {
|
|
306
|
+
this.availableNodes = this.wxcc2graph.getAllActivities();
|
|
307
|
+
const dialogRef = this.dialog.open(AddNodeDialogComponent, {
|
|
308
|
+
panelClass: "no-padding-modal",
|
|
309
|
+
width: '450px',
|
|
310
|
+
data: {
|
|
311
|
+
availableNodes: this.availableNodes,
|
|
312
|
+
},
|
|
313
|
+
});
|
|
314
|
+
dialogRef.afterClosed().subscribe((result) => {
|
|
315
|
+
if (result) {
|
|
316
|
+
this.addActivity(result);
|
|
317
|
+
}
|
|
318
|
+
});
|
|
319
|
+
}
|
|
320
|
+
addActivity(newNodeData) {
|
|
321
|
+
if (!this.cy)
|
|
322
|
+
return;
|
|
323
|
+
const node = this.wxccActivityCreationService.createAndSync({
|
|
324
|
+
activityTypeName: newNodeData.activityTypeName,
|
|
325
|
+
name: newNodeData.name
|
|
326
|
+
});
|
|
327
|
+
// Add node to cytoscape
|
|
328
|
+
this.cy?.add({
|
|
329
|
+
group: "nodes",
|
|
330
|
+
data: node.data
|
|
331
|
+
});
|
|
332
|
+
// Re-run layout to position the new node
|
|
333
|
+
this.runLayout();
|
|
334
|
+
}
|
|
335
|
+
onNodeSelectChange(id) {
|
|
336
|
+
const node = this.cy?.getElementById(id);
|
|
337
|
+
if (node) {
|
|
338
|
+
this.cy?.center(node);
|
|
339
|
+
// Set highlighted property in node data
|
|
340
|
+
const originalData = node.data();
|
|
341
|
+
node.data({ ...originalData, highlighted: true });
|
|
342
|
+
node.emit('data');
|
|
343
|
+
// Remove highlight after 1s
|
|
344
|
+
setTimeout(() => {
|
|
345
|
+
const currentData = node.data();
|
|
346
|
+
if (currentData.highlighted) {
|
|
347
|
+
// Remove the property completely
|
|
348
|
+
delete currentData.highlighted;
|
|
349
|
+
node.data(currentData);
|
|
350
|
+
node.emit('data');
|
|
351
|
+
}
|
|
352
|
+
}, 1000);
|
|
353
|
+
}
|
|
354
|
+
}
|
|
355
|
+
zoomIn() {
|
|
356
|
+
this.cytoscapeViewportService.zoomIn(this.cy);
|
|
357
|
+
}
|
|
358
|
+
zoomOut() {
|
|
359
|
+
this.cytoscapeViewportService.zoomOut(this.cy);
|
|
360
|
+
}
|
|
361
|
+
resetView() {
|
|
362
|
+
this.cytoscapeViewportService.resetView(this.cy, this.cy?.elements());
|
|
363
|
+
}
|
|
364
|
+
runLayout() {
|
|
365
|
+
if (!this.cy)
|
|
366
|
+
return;
|
|
367
|
+
const layout = this.cy?.layout({
|
|
368
|
+
...this.layoutOptions,
|
|
369
|
+
}).run();
|
|
370
|
+
layout.on("layoutstop", () => {
|
|
371
|
+
this.cytoscapeViewportService.resetView(this.cy, this.cy?.elements());
|
|
372
|
+
});
|
|
373
|
+
}
|
|
374
|
+
canCreateOutgoingLink(sourceNodeId) {
|
|
375
|
+
if (!this.cy)
|
|
376
|
+
return false;
|
|
377
|
+
const cyNode = this.cy?.getElementById(sourceNodeId);
|
|
378
|
+
if (!cyNode || cyNode.length === 0)
|
|
379
|
+
return false;
|
|
380
|
+
const sourceActivity = cyNode.data().wxccActivityName;
|
|
381
|
+
const outgoingEdgeCount = cyNode.outgoers('edge').length;
|
|
382
|
+
// End-type nodes cannot have outgoing links.
|
|
383
|
+
const END_NODE_TYPES = ['end', 'disconnect-contact', 'blind-transfer'];
|
|
384
|
+
if (END_NODE_TYPES.includes(sourceActivity))
|
|
385
|
+
return false;
|
|
386
|
+
// Start node can only have one output.
|
|
387
|
+
if (sourceActivity === 'NewPhoneContact' && outgoingEdgeCount >= 1)
|
|
388
|
+
return false;
|
|
389
|
+
// Condition node can only have true/false outputs.
|
|
390
|
+
if (sourceActivity === 'condition-activity' && outgoingEdgeCount >= 2)
|
|
391
|
+
return false;
|
|
392
|
+
return true;
|
|
393
|
+
}
|
|
394
|
+
clearSelectedEdge() {
|
|
395
|
+
if (!this.selectedEdgeId || !this.cy)
|
|
396
|
+
return;
|
|
397
|
+
const edge = this.cy?.getElementById(this.selectedEdgeId);
|
|
398
|
+
if (edge && edge.length) {
|
|
399
|
+
edge.unselect();
|
|
400
|
+
}
|
|
401
|
+
this.selectedEdgeId = null;
|
|
402
|
+
this.selectedEdgeDeleteButtonPosition = null;
|
|
403
|
+
this.cdr.detectChanges();
|
|
404
|
+
}
|
|
405
|
+
updateSelectedEdgeDeleteButtonPosition() {
|
|
406
|
+
if (!this.cy || !this.selectedEdgeId) {
|
|
407
|
+
this.selectedEdgeDeleteButtonPosition = null;
|
|
408
|
+
return;
|
|
409
|
+
}
|
|
410
|
+
const edge = this.cy?.getElementById(this.selectedEdgeId);
|
|
411
|
+
if (!edge || edge.length === 0) {
|
|
412
|
+
this.selectedEdgeDeleteButtonPosition = null;
|
|
413
|
+
return;
|
|
414
|
+
}
|
|
415
|
+
const midpoint = edge.renderedMidpoint();
|
|
416
|
+
// Slight offset so the icon does not sit exactly on top of the edge line.
|
|
417
|
+
this.selectedEdgeDeleteButtonPosition = {
|
|
418
|
+
x: midpoint.x + 12,
|
|
419
|
+
y: midpoint.y - 12,
|
|
420
|
+
};
|
|
421
|
+
}
|
|
422
|
+
}
|
|
423
|
+
WxCCFlowchartComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: WxCCFlowchartComponent, deps: [{ token: i1.WxCC2GraphService }, { token: i2.CytoscapeViewportService }, { token: i3.MatDialog }, { token: i4.WxCCActivityCreationService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
424
|
+
WxCCFlowchartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: WxCCFlowchartComponent, selector: "wxcc-flowchart", inputs: { flowchart: "flowchart" }, viewQueries: [{ propertyName: "flowchartContainer", first: true, predicate: ["flowchartContainer"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"wxcc-flowchart-container\">\r\n <div #flowchartContainer class=\"flowchart-canvas\"></div>\r\n\r\n <!-- Floating toolbar for viewport controls -->\r\n <graph-floating-toolbar\r\n [visibility]=\"{ export: false }\"\r\n (resetViewChange)=\"resetView()\"\r\n (zoomInChange)=\"zoomIn()\"\r\n (zoomOutChange)=\"zoomOut()\">\r\n </graph-floating-toolbar>\r\n\r\n <!-- Graph Acts -->\r\n <div class=\"graph-actions-wrapper\">\r\n <button\r\n class=\"add-node-btn\"\r\n matTooltip=\"Search workflow\"\r\n matTooltipPosition=\"above\"\r\n (click)=\"toggleSearchPanel()\"\r\n >\r\n <img src=\"assets/wxcc/search.svg\" width=\"28\" height=\"28\" alt=\"\" />\r\n </button>\r\n <button\r\n class=\"add-node-btn\"\r\n matTooltip=\"Add New Node\"\r\n matTooltipPosition=\"above\"\r\n (click)=\"openAddNodeDialog()\"\r\n >\r\n <svg\r\n width=\"28\"\r\n height=\"28\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n stroke-width=\"2\"\r\n >\r\n <line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\"></line>\r\n <line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"></line>\r\n </svg>\r\n </button>\r\n </div>\r\n\r\n <button\r\n *ngIf=\"selectedEdgeId && selectedEdgeDeleteButtonPosition\"\r\n class=\"edge-delete-btn\"\r\n matTooltip=\"Delete this edge\"\r\n matTooltipPosition=\"above\"\r\n [style.left.px]=\"selectedEdgeDeleteButtonPosition.x\"\r\n [style.top.px]=\"selectedEdgeDeleteButtonPosition.y\"\r\n (click)=\"onDeleteSelectedEdge()\"\r\n type=\"button\"\r\n aria-label=\"Delete selected edge\"\r\n >\r\n \u00D7\r\n </button>\r\n\r\n <node-search-panel\r\n class=\"fade-in-search-panel\"\r\n [class.visible]=\"isSearchPanelVisible\"\r\n [nodes]=\"activities\"\r\n (selectNodeChange)=\"onNodeSelectChange($event)\"\r\n (searchChange)=\"openAddNodeDialog()\"\r\n >\r\n </node-search-panel>\r\n\r\n <!-- Node action toolbar (floating near selected node) -->\r\n <node-action-toolbar\r\n [isVisible]=\"isNodeToolbarVisible\"\r\n [position]=\"nodeToolbarPosition\"\r\n (deleteNode)=\"onDeleteNode()\"\r\n (linkNode)=\"onLinkNodeRequest()\"\r\n >\r\n </node-action-toolbar>\r\n\r\n <!-- Node details sidebar -->\r\n <node-details-sidebar\r\n [isOpen]=\"isSidebarOpen\"\r\n [nodeData]=\"selectedNodeData\"\r\n (close)=\"onCloseSidebar()\"\r\n (descriptionChange)=\"onDescriptionChange($event)\"\r\n (activityTypeChange)=\"onActivityTypeChange($event)\"\r\n >\r\n </node-details-sidebar>\r\n</div>\r\n", styles: [".fade-in-search-panel{position:absolute;top:0;left:0;right:0;margin:0 auto;z-index:1000;opacity:0;pointer-events:none;transform:translateY(-40px);transition:opacity .4s cubic-bezier(.4,0,.2,1),transform .4s cubic-bezier(.4,0,.2,1)}.fade-in-search-panel.visible{opacity:1;pointer-events:auto;transform:translateY(0)}.close-search-panel{position:absolute;top:10px;right:16px;background:transparent;border:none;font-size:2rem;color:#333;cursor:pointer;z-index:1100}:host ::ng-deep .node-content.highlighted{border-radius:10px;z-index:10}:host ::ng-deep .node-content.highlighted{position:relative;z-index:10}:host ::ng-deep .node-content.highlighted:after{content:\"\";position:absolute;inset:-14px;border:4px solid rgba(110,110,110,.4705882353);border-radius:13px;pointer-events:none;opacity:1}:host ::ng-deep .node-content:not(.highlighted):after{opacity:0}:host{display:block;overflow:hidden;width:100%;height:100%}.wxcc-flowchart-container{display:flex;flex-direction:column;position:relative;background-color:#f8f9fa;border-radius:.5rem;border:1px solid #e1e4e8;box-sizing:border-box;height:100%;min-height:600px}.wxcc-flowchart-container .flowchart-canvas{height:100%;min-height:600px;background:linear-gradient(90deg,rgba(200,200,200,.1) 1px,transparent 1px),linear-gradient(rgba(200,200,200,.1) 1px,transparent 1px);background-size:20px 20px}.wxcc-flowchart-container .add-node-btn{outline:none;border:none;border-radius:.5rem;background-color:#f6f6f6;padding:.5rem;cursor:pointer;font-size:1rem;display:flex;align-items:center;justify-content:center;width:40px;height:40px;transition:all .2s ease}.wxcc-flowchart-container .add-node-btn:hover{background-color:#eefff8;transform:scale(1.05)}.wxcc-flowchart-container .add-node-btn:active{transform:scale(.95)}.edge-delete-btn{position:absolute;z-index:1100;transform:translate(-50%,-50%);width:24px;height:24px;border-radius:50%;border:1px solid #cc3d36;background:#fff;color:#cc3d36;font-size:16px;font-weight:700;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:0 2px 8px #0000002e}.edge-delete-btn:hover{background:#fff1f0;transform:translate(-50%,-50%) scale(1.08)}.edge-delete-btn:active{transform:translate(-50%,-50%) scale(.95)}:host ::ng-deep .node-content{cursor:pointer;display:flex;justify-content:center;flex-direction:column;gap:.5rem;padding:.5rem;background:white;border-radius:6px;border:1px solid #d8d8d8;border-left:4px solid;min-width:200px;transition:all .2s ease}:host ::ng-deep .node-content header{display:flex;align-items:center;gap:.5rem}:host ::ng-deep .node-content img{width:18px;height:18px}:host ::ng-deep .node-content .node-icon{font-size:24px;display:flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:.5rem;flex-shrink:0}:host ::ng-deep .node-content .node-info{flex:1;min-width:0}:host ::ng-deep .node-content .node-info .node-label{font-size:16px;letter-spacing:.5px;opacity:.7;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:180px}:host ::ng-deep .node-content .node-info .node-activity-name{font-size:12px;color:#99a5b1;line-height:1.3;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:180px}:host ::ng-deep .node-content .node-details{font-size:12px;color:#000;padding:0 .25rem;display:flex;flex-direction:column;gap:.25rem}:host ::ng-deep .node-content .node-details .node-details-item{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:200px}:host ::ng-deep .node-content .node-details .review-red{background-color:#ffe6e6;border-left-color:#f44336;color:#f44336;padding:.1rem .25rem;border-radius:.25rem;font-size:10px}:host ::ng-deep .node-content .node-details .review-green{background-color:#e6ffe6;border-left-color:#4caf50;color:#4caf50;padding:.1rem .25rem;border-radius:.25rem;font-size:10px}:host ::ng-deep .node-content .node-details .review-yellow{background-color:#fff9e6;border-left-color:#ff9800;color:#ff9800;padding:.1rem .25rem;border-radius:.25rem;font-size:10px}:host ::ng-deep .node-content.node-start{border-left-color:#4caf50}:host ::ng-deep .node-content.node-start .node-icon{background-color:#4caf501a;color:#4caf50}:host ::ng-deep .node-content.node-start .node-label{color:#4caf50}:host ::ng-deep .node-content.node-end{border-left-color:#f44336}:host ::ng-deep .node-content.node-end .node-icon{background-color:#f443361a;color:#f44336}:host ::ng-deep .node-content.node-end .node-label{color:#f44336}:host ::ng-deep .node-content.node-gateway{border-left-color:#ff9800}:host ::ng-deep .node-content.node-gateway .node-icon{background-color:#ff98001a;color:#ff9800}:host ::ng-deep .node-content.node-gateway .node-label{color:#ff9800}:host ::ng-deep .node-content.node-action{border-left-color:#9c27b0}:host ::ng-deep .node-content.node-action .node-icon{background-color:#9c27b01a;color:#9c27b0}:host ::ng-deep .node-content.node-action .node-label{color:#9c27b0}:host ::ng-deep .node-content.node-default{border-left-color:#607d8b}:host ::ng-deep .node-content.node-default .node-icon{background-color:#607d8b1a;color:#607d8b}:host ::ng-deep .node-content.node-default .node-label{color:#607d8b}.graph-actions-wrapper{position:absolute;right:1rem;top:1rem;display:flex;align-items:center;gap:.5rem;box-shadow:2px 4px 15px #0000002d;padding:8px;background-color:#ffffffac;border-radius:1rem;z-index:999}\n"], dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: i7.FloatingToolBarComponent, selector: "graph-floating-toolbar", inputs: ["visibility"], outputs: ["resetViewChange", "zoomInChange", "zoomOutChange", "exportImageChange"] }, { kind: "component", type: i8.NodeDetailsSidebarComponent, selector: "node-details-sidebar", inputs: ["isOpen", "nodeData"], outputs: ["close", "activityTypeChange", "descriptionChange"] }, { kind: "component", type: i9.NodeActionToolbarComponent, selector: "node-action-toolbar", inputs: ["isVisible", "position"], outputs: ["deleteNode", "linkNode"] }, { kind: "component", type: i10.NodeSearchPanelComponent, selector: "node-search-panel", inputs: ["nodes"], outputs: ["searchChange", "selectNodeChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
425
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: WxCCFlowchartComponent, decorators: [{
|
|
426
|
+
type: Component,
|
|
427
|
+
args: [{ selector: "wxcc-flowchart", changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"wxcc-flowchart-container\">\r\n <div #flowchartContainer class=\"flowchart-canvas\"></div>\r\n\r\n <!-- Floating toolbar for viewport controls -->\r\n <graph-floating-toolbar\r\n [visibility]=\"{ export: false }\"\r\n (resetViewChange)=\"resetView()\"\r\n (zoomInChange)=\"zoomIn()\"\r\n (zoomOutChange)=\"zoomOut()\">\r\n </graph-floating-toolbar>\r\n\r\n <!-- Graph Acts -->\r\n <div class=\"graph-actions-wrapper\">\r\n <button\r\n class=\"add-node-btn\"\r\n matTooltip=\"Search workflow\"\r\n matTooltipPosition=\"above\"\r\n (click)=\"toggleSearchPanel()\"\r\n >\r\n <img src=\"assets/wxcc/search.svg\" width=\"28\" height=\"28\" alt=\"\" />\r\n </button>\r\n <button\r\n class=\"add-node-btn\"\r\n matTooltip=\"Add New Node\"\r\n matTooltipPosition=\"above\"\r\n (click)=\"openAddNodeDialog()\"\r\n >\r\n <svg\r\n width=\"28\"\r\n height=\"28\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n stroke-width=\"2\"\r\n >\r\n <line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\"></line>\r\n <line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"></line>\r\n </svg>\r\n </button>\r\n </div>\r\n\r\n <button\r\n *ngIf=\"selectedEdgeId && selectedEdgeDeleteButtonPosition\"\r\n class=\"edge-delete-btn\"\r\n matTooltip=\"Delete this edge\"\r\n matTooltipPosition=\"above\"\r\n [style.left.px]=\"selectedEdgeDeleteButtonPosition.x\"\r\n [style.top.px]=\"selectedEdgeDeleteButtonPosition.y\"\r\n (click)=\"onDeleteSelectedEdge()\"\r\n type=\"button\"\r\n aria-label=\"Delete selected edge\"\r\n >\r\n \u00D7\r\n </button>\r\n\r\n <node-search-panel\r\n class=\"fade-in-search-panel\"\r\n [class.visible]=\"isSearchPanelVisible\"\r\n [nodes]=\"activities\"\r\n (selectNodeChange)=\"onNodeSelectChange($event)\"\r\n (searchChange)=\"openAddNodeDialog()\"\r\n >\r\n </node-search-panel>\r\n\r\n <!-- Node action toolbar (floating near selected node) -->\r\n <node-action-toolbar\r\n [isVisible]=\"isNodeToolbarVisible\"\r\n [position]=\"nodeToolbarPosition\"\r\n (deleteNode)=\"onDeleteNode()\"\r\n (linkNode)=\"onLinkNodeRequest()\"\r\n >\r\n </node-action-toolbar>\r\n\r\n <!-- Node details sidebar -->\r\n <node-details-sidebar\r\n [isOpen]=\"isSidebarOpen\"\r\n [nodeData]=\"selectedNodeData\"\r\n (close)=\"onCloseSidebar()\"\r\n (descriptionChange)=\"onDescriptionChange($event)\"\r\n (activityTypeChange)=\"onActivityTypeChange($event)\"\r\n >\r\n </node-details-sidebar>\r\n</div>\r\n", styles: [".fade-in-search-panel{position:absolute;top:0;left:0;right:0;margin:0 auto;z-index:1000;opacity:0;pointer-events:none;transform:translateY(-40px);transition:opacity .4s cubic-bezier(.4,0,.2,1),transform .4s cubic-bezier(.4,0,.2,1)}.fade-in-search-panel.visible{opacity:1;pointer-events:auto;transform:translateY(0)}.close-search-panel{position:absolute;top:10px;right:16px;background:transparent;border:none;font-size:2rem;color:#333;cursor:pointer;z-index:1100}:host ::ng-deep .node-content.highlighted{border-radius:10px;z-index:10}:host ::ng-deep .node-content.highlighted{position:relative;z-index:10}:host ::ng-deep .node-content.highlighted:after{content:\"\";position:absolute;inset:-14px;border:4px solid rgba(110,110,110,.4705882353);border-radius:13px;pointer-events:none;opacity:1}:host ::ng-deep .node-content:not(.highlighted):after{opacity:0}:host{display:block;overflow:hidden;width:100%;height:100%}.wxcc-flowchart-container{display:flex;flex-direction:column;position:relative;background-color:#f8f9fa;border-radius:.5rem;border:1px solid #e1e4e8;box-sizing:border-box;height:100%;min-height:600px}.wxcc-flowchart-container .flowchart-canvas{height:100%;min-height:600px;background:linear-gradient(90deg,rgba(200,200,200,.1) 1px,transparent 1px),linear-gradient(rgba(200,200,200,.1) 1px,transparent 1px);background-size:20px 20px}.wxcc-flowchart-container .add-node-btn{outline:none;border:none;border-radius:.5rem;background-color:#f6f6f6;padding:.5rem;cursor:pointer;font-size:1rem;display:flex;align-items:center;justify-content:center;width:40px;height:40px;transition:all .2s ease}.wxcc-flowchart-container .add-node-btn:hover{background-color:#eefff8;transform:scale(1.05)}.wxcc-flowchart-container .add-node-btn:active{transform:scale(.95)}.edge-delete-btn{position:absolute;z-index:1100;transform:translate(-50%,-50%);width:24px;height:24px;border-radius:50%;border:1px solid #cc3d36;background:#fff;color:#cc3d36;font-size:16px;font-weight:700;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:0 2px 8px #0000002e}.edge-delete-btn:hover{background:#fff1f0;transform:translate(-50%,-50%) scale(1.08)}.edge-delete-btn:active{transform:translate(-50%,-50%) scale(.95)}:host ::ng-deep .node-content{cursor:pointer;display:flex;justify-content:center;flex-direction:column;gap:.5rem;padding:.5rem;background:white;border-radius:6px;border:1px solid #d8d8d8;border-left:4px solid;min-width:200px;transition:all .2s ease}:host ::ng-deep .node-content header{display:flex;align-items:center;gap:.5rem}:host ::ng-deep .node-content img{width:18px;height:18px}:host ::ng-deep .node-content .node-icon{font-size:24px;display:flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:.5rem;flex-shrink:0}:host ::ng-deep .node-content .node-info{flex:1;min-width:0}:host ::ng-deep .node-content .node-info .node-label{font-size:16px;letter-spacing:.5px;opacity:.7;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:180px}:host ::ng-deep .node-content .node-info .node-activity-name{font-size:12px;color:#99a5b1;line-height:1.3;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:180px}:host ::ng-deep .node-content .node-details{font-size:12px;color:#000;padding:0 .25rem;display:flex;flex-direction:column;gap:.25rem}:host ::ng-deep .node-content .node-details .node-details-item{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:200px}:host ::ng-deep .node-content .node-details .review-red{background-color:#ffe6e6;border-left-color:#f44336;color:#f44336;padding:.1rem .25rem;border-radius:.25rem;font-size:10px}:host ::ng-deep .node-content .node-details .review-green{background-color:#e6ffe6;border-left-color:#4caf50;color:#4caf50;padding:.1rem .25rem;border-radius:.25rem;font-size:10px}:host ::ng-deep .node-content .node-details .review-yellow{background-color:#fff9e6;border-left-color:#ff9800;color:#ff9800;padding:.1rem .25rem;border-radius:.25rem;font-size:10px}:host ::ng-deep .node-content.node-start{border-left-color:#4caf50}:host ::ng-deep .node-content.node-start .node-icon{background-color:#4caf501a;color:#4caf50}:host ::ng-deep .node-content.node-start .node-label{color:#4caf50}:host ::ng-deep .node-content.node-end{border-left-color:#f44336}:host ::ng-deep .node-content.node-end .node-icon{background-color:#f443361a;color:#f44336}:host ::ng-deep .node-content.node-end .node-label{color:#f44336}:host ::ng-deep .node-content.node-gateway{border-left-color:#ff9800}:host ::ng-deep .node-content.node-gateway .node-icon{background-color:#ff98001a;color:#ff9800}:host ::ng-deep .node-content.node-gateway .node-label{color:#ff9800}:host ::ng-deep .node-content.node-action{border-left-color:#9c27b0}:host ::ng-deep .node-content.node-action .node-icon{background-color:#9c27b01a;color:#9c27b0}:host ::ng-deep .node-content.node-action .node-label{color:#9c27b0}:host ::ng-deep .node-content.node-default{border-left-color:#607d8b}:host ::ng-deep .node-content.node-default .node-icon{background-color:#607d8b1a;color:#607d8b}:host ::ng-deep .node-content.node-default .node-label{color:#607d8b}.graph-actions-wrapper{position:absolute;right:1rem;top:1rem;display:flex;align-items:center;gap:.5rem;box-shadow:2px 4px 15px #0000002d;padding:8px;background-color:#ffffffac;border-radius:1rem;z-index:999}\n"] }]
|
|
428
|
+
}], ctorParameters: function () { return [{ type: i1.WxCC2GraphService }, { type: i2.CytoscapeViewportService }, { type: i3.MatDialog }, { type: i4.WxCCActivityCreationService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { flowchart: [{
|
|
429
|
+
type: Input
|
|
430
|
+
}], flowchartContainer: [{
|
|
431
|
+
type: ViewChild,
|
|
432
|
+
args: ["flowchartContainer"]
|
|
433
|
+
}] } });
|
|
434
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3hjYy1mbG93Y2hhcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHVraS93aWRnZXRzL2NvbnRhY3QtY2VudGVyL2NjLXNjcmlwdC1lZGl0b3IvY29tcG9uZW50cy93eGNjLWZsb3djaGFydC93eGNjLWZsb3djaGFydC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dWtpL3dpZGdldHMvY29udGFjdC1jZW50ZXIvY2Mtc2NyaXB0LWVkaXRvci9jb21wb25lbnRzL3d4Y2MtZmxvd2NoYXJ0L3d4Y2MtZmxvd2NoYXJ0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTix1QkFBdUIsRUFFdkIsU0FBUyxFQUVULEtBQUssRUFJTCxTQUFTLEVBQ1QsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxTQUlOLE1BQU0sV0FBVyxDQUFDO0FBQ25CLE9BQU8sS0FBSyxNQUFNLGlCQUFpQixDQUFDO0FBQ3BDLE9BQU8sYUFBYSxNQUFNLDJCQUEyQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUMvRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUlyRSxPQUFPLEVBQ04sc0JBQXNCLEVBRXRCLE1BQU0sc0RBQXNELENBQUM7QUFDOUQsT0FBTyxFQUVOLHVCQUF1QixFQUN2QixNQUFNLHdEQUF3RCxDQUFDOzs7Ozs7Ozs7Ozs7QUFNaEUsU0FBUyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNyQixTQUFTLENBQUMsR0FBRyxDQUFDLGFBQW9CLENBQUMsQ0FBQztBQVFwQyxNQUFNLE9BQU8sc0JBQXNCO0lBcUNsQyxZQUNrQixVQUE2QixFQUM3Qix3QkFBa0QsRUFDbEQsTUFBaUIsRUFDakIsMkJBQXdELEVBQ2pF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QUksQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRTtZQUNyQyxJQUFJLENBQUMsZ0NBQWdDLEdBQUcsSUFBSSxDQUFDO1lBQzdDLE9BQU87U0FDUDtRQUVELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxFQUFFLEVBQUUsY0FBYyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUMxRCxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQy9CLElBQUksQ0FBQyxnQ0FBZ0MsR0FBRyxJQUFJLENBQUM7WUFDN0MsT0FBTztTQUNQO1FBRUQsTUFBTSxRQUFRLEdBQUksSUFBcUIsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBRTNELDBFQUEwRTtRQUMxRSxJQUFJLENBQUMsZ0NBQWdDLEdBQUc7WUFDdkMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLEdBQUcsRUFBRTtZQUNsQixDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUMsR0FBRyxFQUFFO1NBQ2xCLENBQUM7SUFDSCxDQUFDOztvSEF0Zlcsc0JBQXNCO3dHQUF0QixzQkFBc0IseU9DL0NuQywwbEZBbUZBOzRGRHBDYSxzQkFBc0I7a0JBTmxDLFNBQVM7K0JBQ0MsZ0JBQWdCLG1CQUdULHVCQUF1QixDQUFDLE1BQU07aVBBR3RDLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQzJCLGtCQUFrQjtzQkFBbEQsU0FBUzt1QkFBQyxvQkFBb0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG5cdEFmdGVyVmlld0luaXQsXHJcblx0Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcblx0Q2hhbmdlRGV0ZWN0b3JSZWYsXHJcblx0Q29tcG9uZW50LFxyXG5cdEVsZW1lbnRSZWYsXHJcblx0SW5wdXQsXHJcblx0T25DaGFuZ2VzLFxyXG5cdE9uRGVzdHJveSxcclxuXHRTaW1wbGVDaGFuZ2VzLFxyXG5cdFZpZXdDaGlsZFxyXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IElXeENDRmxvd2NoYXJ0IH0gZnJvbSBcIi4uLy4uL3R5cGVzL3d4Y2NcIjtcclxuaW1wb3J0IGN5dG9zY2FwZSwge1xyXG5cdEVsZW1lbnREZWZpbml0aW9uLFxyXG5cdEVkZ2VTaW5ndWxhcixcclxuXHROb2RlU2luZ3VsYXJcclxufSBmcm9tIFwiY3l0b3NjYXBlXCI7XHJcbmltcG9ydCBkYWdyZSBmcm9tIFwiY3l0b3NjYXBlLWRhZ3JlXCI7XHJcbmltcG9ydCBub2RlSHRtbExhYmVsIGZyb20gXCJjeXRvc2NhcGUtbm9kZS1odG1sLWxhYmVsXCI7XHJcbmltcG9ydCB7IFN0eWxlQ29uZmlnIH0gZnJvbSBcIi4uLy4uL2NvbnN0YW50cy9jeXRvc2NhcGUuY29uZmlnXCI7XHJcbmltcG9ydCB7IGdldE5vZGVIdG1sVGVtcGxhdGUgfSBmcm9tIFwiLi4vLi4vdXRpbHMvbm9kZS1odG1sLXRlbXBsYXRlXCI7XHJcbmltcG9ydCB7IEFjdGl2aXR5RGlzcGxheVR5cGUgfSBmcm9tIFwiLi4vLi4vdXRpbHMvbm9kZS1tYXBwaW5nc1wiO1xyXG5pbXBvcnQgeyBXeENDMkdyYXBoU2VydmljZSB9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy93eGNjMmdyYXBoLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgTm9kZVRvb2xiYXJQb3NpdGlvbiB9IGZyb20gXCIuLi9ub2RlLWFjdGlvbi10b29sYmFyL25vZGUtYWN0aW9uLXRvb2xiYXIuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7XHJcblx0QWRkTm9kZURpYWxvZ0NvbXBvbmVudCxcclxuXHROZXdOb2RlRGF0YVxyXG59IGZyb20gXCIuLi9kaWFsb2dzL2FkZC1ub2RlLWRpYWxvZy9hZGQtbm9kZS1kaWFsb2cuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7XHJcblx0TGlua05vZGVEYXRhLFxyXG5cdExpbmtOb2RlRGlhbG9nQ29tcG9uZW50XHJcbn0gZnJvbSBcIi4uL2RpYWxvZ3MvbGluay1ub2RlLWRpYWxvZy9saW5rLW5vZGUtZGlhbG9nLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nXCI7XHJcbmltcG9ydCB7IFJlYWRvbmx5RXh0ZW5kZWRBY3Rpdml0eSB9IGZyb20gXCIuLi8uLi90eXBlcy9leHRlbmRlZC1hY3Rpdml0eVwiO1xyXG5pbXBvcnQgeyBXeENDQWN0aXZpdHlDcmVhdGlvblNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvd3hjYy1hY3Rpdml0eS1jcmVhdGlvbi5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IEN5dG9zY2FwZVZpZXdwb3J0U2VydmljZSB9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9jeXN0b3NjYXBlLXZpZXdwb3J0LnNlcnZpY2VcIjtcclxuXHJcbmN5dG9zY2FwZS51c2UoZGFncmUpO1xyXG5jeXRvc2NhcGUudXNlKG5vZGVIdG1sTGFiZWwgYXMgYW55KTtcclxuXHJcbkBDb21wb25lbnQoe1xyXG5cdHNlbGVjdG9yOiBcInd4Y2MtZmxvd2NoYXJ0XCIsXHJcblx0dGVtcGxhdGVVcmw6IFwiLi93eGNjLWZsb3djaGFydC5jb21wb25lbnQuaHRtbFwiLFxyXG5cdHN0eWxlVXJsczogW1wiLi93eGNjLWZsb3djaGFydC5jb21wb25lbnQuc2Nzc1wiXSxcclxuXHRjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxufSlcclxuZXhwb3J0IGNsYXNzIFd4Q0NGbG93Y2hhcnRDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XHJcblx0QElucHV0KCkgZmxvd2NoYXJ0ITogSVd4Q0NGbG93Y2hhcnQ7XHJcblx0QFZpZXdDaGlsZChcImZsb3djaGFydENvbnRhaW5lclwiKSBmbG93Y2hhcnRDb250YWluZXIhOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcclxuXHJcblx0cHJpdmF0ZSBjeT86IGN5dG9zY2FwZS5Db3JlO1xyXG5cdHByaXZhdGUgdmlld1JlYWR5ID0gZmFsc2U7XHJcblx0cHJpdmF0ZSByZWFkb25seSBsYXlvdXRPcHRpb25zOiBkYWdyZS5EYWdyZUxheW91dE9wdGlvbnMgPSB7XHJcblx0XHRuYW1lOiBcImRhZ3JlXCIsXHJcblx0XHRyYW5rRGlyOiBcIkxSXCIsXHJcblx0XHRub2RlU2VwOiAxODAsXHJcblx0XHRlZGdlU2VwOiA2MCxcclxuXHRcdHJhbmtTZXA6IDE1MCxcclxuXHRcdGFuaW1hdGU6IHRydWUsXHJcblx0XHRhbmltYXRpb25EdXJhdGlvbjogNTAwLFxyXG5cdFx0Zml0OiB0cnVlXHJcblx0fTtcclxuXHJcblx0Ly8gU2lkZWJhciBzdGF0ZVxyXG5cdGlzU2lkZWJhck9wZW4gPSBmYWxzZTtcclxuXHRzZWxlY3RlZE5vZGVEYXRhOiBSZWFkb25seUV4dGVuZGVkQWN0aXZpdHkgfCBudWxsID0gbnVsbDtcclxuXHJcblx0Ly8gU2VhcmNoIHBhbmVsIHN0YXRlXHJcblx0aXNTZWFyY2hQYW5lbFZpc2libGUgPSBmYWxzZTtcclxuXHRzZWFyY2hQYW5lbFZpc2libGUgPSBmYWxzZTtcclxuXHJcblx0Ly8gTm9kZSBhY3Rpb24gdG9vbGJhciBzdGF0ZVxyXG5cdGlzTm9kZVRvb2xiYXJWaXNpYmxlID0gZmFsc2U7XHJcblx0bm9kZVRvb2xiYXJQb3NpdGlvbjogTm9kZVRvb2xiYXJQb3NpdGlvbiA9IHsgeDogMCwgeTogMCB9O1xyXG5cclxuXHQvLyBBZGQgbm9kZSBkaWFsb2cgc3RhdGVcclxuXHRhdmFpbGFibGVOb2RlczogUmVhZG9ubHlFeHRlbmRlZEFjdGl2aXR5W10gPSBbXTtcclxuXHJcblx0Ly8gTGluayBub2RlIGRpYWxvZyBzdGF0ZVxyXG5cdGlzTGlua0RpYWxvZ09wZW4gPSBmYWxzZTtcclxuXHRzZWxlY3RlZEVkZ2VJZDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcblx0c2VsZWN0ZWRFZGdlRGVsZXRlQnV0dG9uUG9zaXRpb246IHsgeDogbnVtYmVyOyB5OiBudW1iZXIgfSB8IG51bGwgPSBudWxsO1xyXG5cclxuXHRjb25zdHJ1Y3RvcihcclxuXHRcdHByaXZhdGUgcmVhZG9ubHkgd3hjYzJncmFwaDogV3hDQzJHcmFwaFNlcnZpY2UsXHJcblx0XHRwcml2YXRlIHJlYWRvbmx5IGN5dG9zY2FwZVZpZXdwb3J0U2VydmljZTogQ3l0b3NjYXBlVmlld3BvcnRTZXJ2aWNlLFxyXG5cdFx0cHJpdmF0ZSByZWFkb25seSBkaWFsb2c6IE1hdERpYWxvZyxcclxuXHRcdHByaXZhdGUgcmVhZG9ubHkgd3hjY0FjdGl2aXR5Q3JlYXRpb25TZXJ2aWNlOiBXeENDQWN0aXZpdHlDcmVhdGlvblNlcnZpY2UsXHJcblx0XHRwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcblx0KSB7IH1cclxuXHJcblx0bmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG5cdFx0dGhpcy52aWV3UmVhZHkgPSB0cnVlO1xyXG5cdFx0dGhpcy50cnlJbml0KCk7XHJcblx0fVxyXG5cclxuXHRuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcblx0XHRpZiAoY2hhbmdlc1tcImZsb3djaGFydFwiXSkge1xyXG5cdFx0XHR0aGlzLnRyeUluaXQoKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG5cdFx0dGhpcy5jeT8uZGVzdHJveSgpO1xyXG5cdFx0dGhpcy5jeSA9IHVuZGVmaW5lZDtcclxuXHR9XHJcblxyXG5cdHByaXZhdGUgdHJ5SW5pdCgpOiB2b2lkIHtcclxuXHRcdGlmICghdGhpcy52aWV3UmVhZHkgfHwgIXRoaXMuZmxvd2NoYXJ0Q29udGFpbmVyIHx8ICF0aGlzLmZsb3djaGFydCkge1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblxyXG5cdFx0dGhpcy5pbml0KCk7XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIGluaXQoKTogdm9pZCB7XHJcblx0XHRjb25zdCBjb250YWluZXIgPSB0aGlzLmZsb3djaGFydENvbnRhaW5lci5uYXRpdmVFbGVtZW50O1xyXG5cclxuXHRcdHRoaXMuY3k/LmRlc3Ryb3koKTtcclxuXHRcdHRoaXMuY3kgPSB1bmRlZmluZWQ7XHJcblxyXG5cdFx0Y29uc3QgZWxlbWVudHM6IEVsZW1lbnREZWZpbml0aW9uW10gPSBbXHJcblx0XHRcdC4uLnRoaXMuZmxvd2NoYXJ0Lm5vZGVzLFxyXG5cdFx0XHQuLi50aGlzLmZsb3djaGFydC5lZGdlcyxcclxuXHRcdF07XHJcblxyXG5cdFx0dGhpcy5jeSA9IGN5dG9zY2FwZSh7XHJcblx0XHRcdGNvbnRhaW5lcjogY29udGFpbmVyLFxyXG5cdFx0XHRlbGVtZW50czogZWxlbWVudHMsXHJcblx0XHRcdHN0eWxlOiB0aGlzLmdldFN0eWxlc2hlZXQoKSxcclxuXHRcdH0pO1xyXG5cclxuXHRcdCh0aGlzLmN5IGFzIGFueSkubm9kZUh0bWxMYWJlbChbXHJcblx0XHRcdHtcclxuXHRcdFx0XHRxdWVyeTogXCJub2RlXCIsXHJcblx0XHRcdFx0aGFsaWduOiBcImNlbnRlclwiLFxyXG5cdFx0XHRcdHZhbGlnbjogXCJjZW50ZXJcIixcclxuXHRcdFx0XHRoYWxpZ25Cb3g6IFwiY2VudGVyXCIsXHJcblx0XHRcdFx0dmFsaWduQm94OiBcImNlbnRlclwiLFxyXG5cdFx0XHRcdHRwbDogKGRhdGE6IFJlYWRvbmx5RXh0ZW5kZWRBY3Rpdml0eSkgPT4gZ2V0Tm9kZUh0bWxUZW1wbGF0ZShkYXRhKSxcclxuXHRcdFx0fSxcclxuXHRcdF0pO1xyXG5cclxuXHRcdGNvbnN0IGxheW91dCA9IHRoaXMuY3k/LmxheW91dCh7XHJcblx0XHRcdC4uLnRoaXMubGF5b3V0T3B0aW9ucyxcclxuXHRcdH0pLnJ1bigpO1xyXG5cclxuXHRcdGxheW91dC5vbihcImxheW91dHN0b3BcIiwgKCkgPT4ge1xyXG5cdFx0XHR0aGlzLmN5dG9zY2FwZVZpZXdwb3J0U2VydmljZS5yZXNldFZpZXcodGhpcy5jeSBhcyBhbnksIHRoaXMuY3k/LmVsZW1lbnRzKCkgYXMgYW55KTtcclxuXHRcdH0pO1xyXG5cclxuXHRcdHRoaXMuc2V0dXBFdmVudExpc3RlbmVycygpO1xyXG5cdH1cclxuXHJcblx0Z2V0IGFjdGl2aXRpZXMoKSB7IHJldHVybiB0aGlzLnd4Y2MyZ3JhcGguZ2V0QWxsQWN0aXZpdGllcygpOyB9XHJcblxyXG5cdC8vIFRvZ2dsZSBzZWFyY2ggcGFuZWwgdmlzaWJpbGl0eVxyXG5cdHRvZ2dsZVNlYXJjaFBhbmVsKCk6IHZvaWQge1xyXG5cdFx0dGhpcy5pc1NlYXJjaFBhbmVsVmlzaWJsZSA9ICF0aGlzLmlzU2VhcmNoUGFuZWxWaXNpYmxlO1xyXG5cdFx0dGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIHNldHVwRXZlbnRMaXN0ZW5lcnMoKTogdm9pZCB7XHJcblx0XHQvLyBTaW5nbGUgdGFwIG9uIG5vZGUgLSBzaG93IG9ubHkgdGhlIHRvb2xiYXIgKHF1aWNrIGFjdGlvbnMpXHJcblx0XHR0aGlzLmN5Py5vbihcIm1vdXNlb3ZlclwiLCBcIm5vZGVcIiwgKGV2ZW50KSA9PiB7XHJcblx0XHRcdGNvbnN0IG5vZGUgPSBldmVudC50YXJnZXQgYXMgTm9kZVNpbmd1bGFyO1xyXG5cdFx0XHR0aGlzLnNlbGVjdGVkTm9kZURhdGEgPSBub2RlLmRhdGEoKSBhcyBSZWFkb25seUV4dGVuZGVkQWN0aXZpdHk7XHJcblxyXG5cdFx0XHQvLyBDYWxjdWxhdGUgdG9vbGJhciBwb3NpdGlvbiByZWxhdGl2ZSB0byB0aGUgY29udGFpbmVyXHJcblx0XHRcdHRoaXMudXBkYXRlVG9vbGJhclBvc2l0aW9uKG5vZGUpO1xyXG5cdFx0XHR0aGlzLmlzTm9kZVRvb2xiYXJWaXNpYmxlID0gdHJ1ZTtcclxuXHJcblx0XHRcdHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuXHRcdH0pO1xyXG5cclxuXHRcdHRoaXMuY3k/Lm9uKFwidGFwXCIsIFwibm9kZVwiLCAoZXZlbnQpID0+IHtcclxuXHRcdFx0Y29uc3Qgbm9kZSA9IGV2ZW50LnRhcmdldCBhcyBOb2RlU2luZ3VsYXI7XHJcblx0XHRcdHRoaXMuY2xlYXJTZWxlY3RlZEVkZ2UoKTtcclxuXHRcdFx0dGhpcy5zZWxlY3RlZE5vZGVEYXRhID0gbm9kZS5kYXRhKCkgYXMgUmVhZG9ubHlFeHRlbmRlZEFjdGl2aXR5O1xyXG5cdFx0XHR0aGlzLmlzU2lkZWJhck9wZW4gPSB0cnVlO1xyXG5cclxuXHRcdFx0Ly8gSGlkZSB0b29sYmFyIHdoZW4gc2lkZWJhciBvcGVuc1xyXG5cdFx0XHR0aGlzLmlzTm9kZVRvb2xiYXJWaXNpYmxlID0gZmFsc2U7XHJcblxyXG5cdFx0XHR0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcblx0XHR9KTtcclxuXHJcblx0XHR0aGlzLmN5Py5vbihcIm1vdXNlbW92ZVwiLCBcIm5vZGVcIiwgKGV2ZW50KSA9PiB7XHJcblx0XHRcdGNvbnN0IG5vZGUgPSBldmVudC50YXJnZXQgYXMgTm9kZVNpbmd1bGFyO1xyXG5cdFx0XHR0aGlzLnVwZGF0ZVRvb2xiYXJQb3NpdGlvbihub2RlKTtcclxuXHJcblx0XHRcdHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuXHRcdH0pO1xyXG5cclxuXHRcdC8vIEVkZ2UgdGFwIC0gc2VsZWN0IGVkZ2UgZm9yIGV4cGxpY2l0IGRlbGV0aW9uIGFjdGlvblxyXG5cdFx0dGhpcy5jeT8ub24oXCJ0YXBcIiwgXCJlZGdlXCIsIChldmVudCkgPT4ge1xyXG5cdFx0XHRjb25zdCBlZGdlID0gZXZlbnQudGFyZ2V0IGFzIEVkZ2VTaW5ndWxhcjtcclxuXHJcblx0XHRcdHRoaXMuaXNTaWRlYmFyT3BlbiA9IGZhbHNlO1xyXG5cdFx0XHR0aGlzLmhpZGVOb2RlVG9vbGJhcigpO1xyXG5cdFx0XHR0aGlzLnNlbGVjdGVkTm9kZURhdGEgPSBudWxsO1xyXG5cclxuXHRcdFx0dGhpcy5zZWxlY3RlZEVkZ2VJZCA9IGVkZ2UuaWQoKTtcclxuXHRcdFx0ZWRnZS5zZWxlY3QoKTtcclxuXHRcdFx0dGhpcy51cGRhdGVTZWxlY3RlZEVkZ2VEZWxldGVCdXR0b25Qb3NpdGlvbigpO1xyXG5cdFx0XHR0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcblx0XHR9KTtcclxuXHJcblx0XHQvLyBDYW52YXMgdGFwIC0gaGlkZSB0b29sYmFyIGFuZCBkZXNlbGVjdFxyXG5cdFx0dGhpcy5jeT8ub24oXCJ0YXBcIiwgKGV2ZW50KSA9PiB7XHJcblx0XHRcdGlmIChldmVudC50YXJnZXQgPT09IHRoaXMuY3kpIHtcclxuXHRcdFx0XHR0aGlzLmNsZWFyU2VsZWN0ZWRFZGdlKCk7XHJcblx0XHRcdFx0dGhpcy5pc1NpZGViYXJPcGVuID0gZmFsc2U7XHJcblx0XHRcdFx0dGhpcy5oaWRlTm9kZVRvb2xiYXIoKTtcclxuXHRcdFx0XHR0aGlzLnNlbGVjdGVkTm9kZURhdGEgPSBudWxsO1xyXG5cdFx0XHR9XHJcblx0XHR9KTtcclxuXHJcblx0XHQvLyBQYW4vem9vbSBldmVudHMgLSB1cGRhdGUgdG9vbGJhciBwb3NpdGlvblxyXG5cdFx0dGhpcy5jeT8ub24oXCJwYW4gem9vbVwiLCAoKSA9PiB7XHJcblx0XHRcdGlmICh0aGlzLmlzTm9kZVRvb2xiYXJWaXNpYmxlICYmIHRoaXMuc2VsZWN0ZWROb2RlRGF0YSkge1xyXG5cdFx0XHRcdGNvbnN0IG5vZGUgPSB0aGlzLmN5Py5nZXRFbGVtZW50QnlJZCh0aGlzLnNlbGVjdGVkTm9kZURhdGEuaWQpO1xyXG5cdFx0XHRcdGlmIChub2RlPy5sZW5ndGgpIHtcclxuXHRcdFx0XHRcdHRoaXMudXBkYXRlVG9vbGJhclBvc2l0aW9uKG5vZGUpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0aWYgKHRoaXMuc2VsZWN0ZWRFZGdlSWQpIHtcclxuXHRcdFx0XHR0aGlzLnVwZGF0ZVNlbGVjdGVkRWRnZURlbGV0ZUJ1dHRvblBvc2l0aW9uKCk7XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSB1cGRhdGVUb29sYmFyUG9zaXRpb24obm9kZTogTm9kZVNpbmd1bGFyKTogdm9pZCB7XHJcblx0XHRjb25zdCByZW5kZXJlZFBvc2l0aW9uID0gbm9kZS5yZW5kZXJlZFBvc2l0aW9uKCk7XHJcblx0XHRjb25zdCByZW5kZXJlZFdpZHRoID0gbm9kZS5yZW5kZXJlZFdpZHRoKCk7XHJcblx0XHRjb25zdCByZW5kZXJlZEhlaWdodCA9IG5vZGUucmVuZGVyZWRIZWlnaHQoKTtcclxuXHJcblx0XHQvLyBQb3NpdGlvbiB0b29sYmFyIGFib3ZlIHRoZSBub2RlLCBjZW50ZXJlZFxyXG5cdFx0dGhpcy5ub2RlVG9vbGJhclBvc2l0aW9uID0ge1xyXG5cdFx0XHR4OiByZW5kZXJlZFBvc2l0aW9uLnggLSAzMCwgLy8gQ2VudGVyIHRoZSB0b29sYmFyIChhcHByb3ggaGFsZiB0b29sYmFyIHdpZHRoKVxyXG5cdFx0XHR5OiByZW5kZXJlZFBvc2l0aW9uLnkgLSByZW5kZXJlZEhlaWdodCAvIDIgLSA0MCwgLy8gQWJvdmUgdGhlIG5vZGVcclxuXHRcdH07XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIGhpZGVOb2RlVG9vbGJhcigpOiB2b2lkIHtcclxuXHRcdHRoaXMuaXNOb2RlVG9vbGJhclZpc2libGUgPSBmYWxzZTtcclxuXHRcdHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuXHR9XHJcblxyXG5cdHByaXZhdGUgZ2V0U3R5bGVzaGVldCgpOiBjeXRvc2NhcGUuU3R5bGVzaGVldFN0eWxlW10ge1xyXG5cdFx0cmV0dXJuIFN0eWxlQ29uZmlnO1xyXG5cdH1cclxuXHJcblx0Ly8gPT09PT09PT09PT09PT09PT09PT0gU2lkZWJhciBFdmVudHMgPT09PT09PT09PT09PT09PT09PT1cclxuXHJcblx0b25DbG9zZVNpZGViYXIoKTogdm9pZCB7XHJcblx0XHR0aGlzLmlzU2lkZWJhck9wZW4gPSBmYWxzZTtcclxuXHRcdHRoaXMuaGlkZU5vZGVUb29sYmFyKCk7XHJcblx0XHR0aGlzLnNlbGVjdGVkTm9kZURhdGEgPSBudWxsO1xyXG5cdFx0Ly8gdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG5cdH1cclxuXHJcblx0b25EZXNjcmlwdGlvbkNoYW5nZShkZXNjcmlwdGlvbjogc3RyaW5nKTogdm9pZCB7XHJcblx0XHRpZiAoIXRoaXMuc2VsZWN0ZWROb2RlRGF0YSB8fCAhdGhpcy5jeSkgcmV0dXJuO1xyXG5cclxuXHRcdGNvbnN0IG5vZGUgPSB0aGlzLmN5Py5nZXRFbGVtZW50QnlJZCh0aGlzLnNlbGVjdGVkTm9kZURhdGEuaWQpO1xyXG5cdFx0aWYgKG5vZGUpIHtcclxuXHRcdFx0Y29uc3QgdXBkYXRlZERhdGE6IFJlYWRvbmx5RXh0ZW5kZWRBY3Rpdml0eSA9IHtcclxuXHRcdFx0XHQuLi50aGlzLnNlbGVjdGVkTm9kZURhdGEsXHJcblx0XHRcdFx0c3VnZ2VzdGVkUHJvcGVydGllczoge1xyXG5cdFx0XHRcdFx0Li4udGhpcy5zZWxlY3RlZE5vZGVEYXRhLnN1Z2dlc3RlZFByb3BlcnRpZXMsXHJcblx0XHRcdFx0XHR1Y2N4RGVzY3JpcHRpb246IGRlc2NyaXB0aW9uLFxyXG5cdFx0XHRcdH0sXHJcblx0XHRcdH07XHJcblxyXG5cdFx0XHR0aGlzLnd4Y2MyZ3JhcGgudXBkYXRlQWN0aXZpdHlEYXRhKHVwZGF0ZWREYXRhKTtcclxuXHRcdFx0bm9kZS5kYXRhKHVwZGF0ZWREYXRhKTtcclxuXHJcblx0XHRcdHRoaXMuc2VsZWN0ZWROb2RlRGF0YSA9IHVwZGF0ZWREYXRhO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0b25BY3Rpdml0eVR5cGVDaGFuZ2UoYWN0aXZpdHlUeXBlOiBBY3Rpdml0eURpc3BsYXlUeXBlKTogdm9pZCB7XHJcblx0XHRpZiAoIXRoaXMuc2VsZWN0ZWROb2RlRGF0YSB8fCAhdGhpcy5jeSkgcmV0dXJuO1xyXG5cclxuXHRcdGNvbnN0IG5vZGUgPSB0aGlzLmN5Py5nZXRFbGVtZW50QnlJZCh0aGlzLnNlbGVjdGVkTm9kZURhdGEuaWQpO1xyXG5cdFx0aWYgKG5vZGUpIHtcclxuXHRcdFx0Y29uc3QgdXBkYXRlZERhdGE6IFJlYWRvbmx5RXh0ZW5kZWRBY3Rpdml0eSA9IHtcclxuXHRcdFx0XHQuLi50aGlzLnNlbGVjdGVkTm9kZURhdGEsXHJcblx0XHRcdFx0d3hjY0FjdGl2aXR5TmFtZTogYWN0aXZpdHlUeXBlLmFjdGl2aXR5TmFtZSxcclxuXHRcdFx0XHR3eGNjR3JvdXA6IGFjdGl2aXR5VHlwZS5ncm91cCxcclxuXHRcdFx0XHRpY29uVXJsOiBhY3Rpdml0eVR5cGUuaWNvblxyXG5cdFx0XHR9O1xyXG5cclxuXHRcdFx0dGhpcy53eGNjMmdyYXBoLnVwZGF0ZUFjdGl2aXR5RGF0YSh1cGRhdGVkRGF0YSk7XHJcblx0XHRcdG5vZGUuZGF0YSh1cGRhdGVkRGF0YSk7XHJcblxyXG5cdFx0XHR0aGlzLnNlbGVjdGVkTm9kZURhdGEgPSB1cGRhdGVkRGF0YTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8vID09PT09PT09PT09PT09PT09PT09IE5vZGUgVG9vbGJhciBFdmVudHMgPT09PT09PT09PT09PT09PT09PT1cclxuXHJcblx0b25EZWxldGVOb2RlKCk6IHZvaWQge1xyXG5cdFx0aWYgKCF0aGlzLnNlbGVjdGVkTm9kZURhdGEgfHwgIXRoaXMuY3kpIHJldHVybjtcclxuXHJcblx0XHRjb25zdCBub2RlSWQgPSB0aGlzLnNlbGVjdGVkTm9kZURhdGEuaWQ7XHJcblxyXG5cdFx0Ly8gUmVtb3ZlIGZyb20gc2VydmljZSBhbmQgZ2V0IGFmZmVjdGVkIGxpbmsgSURzXHJcblx0XHRjb25zdCB7IHJlbW92ZWRMaW5rSWRzIH0gPSB0aGlzLnd4Y2MyZ3JhcGgucmVtb3ZlQWN0aXZpdHkobm9kZUlkKTtcclxuXHJcblx0XHQvLyBSZW1vdmUgZWRnZXMgZnJvbSBjeXRvc2NhcGVcclxuXHRcdHJlbW92ZWRMaW5rSWRzLmZvckVhY2goKGxpbmtJZCkgPT4ge1xyXG5cdFx0XHR0aGlzLmN5Py5nZXRFbGVtZW50QnlJZChsaW5rSWQpLnJlbW92ZSgpO1xyXG5cdFx0fSk7XHJcblxyXG5cdFx0Ly8gUmVtb3ZlIG5vZGUgZnJvbSBjeXRvc2NhcGVcclxuXHRcdHRoaXMuY3k/LmdldEVsZW1lbnRCeUlkKG5vZGVJZCkucmVtb3ZlKCk7XHJcblxyXG5cdFx0Ly8gQ2xvc2Ugc2lkZWJhciBhbmQgdG9vbGJhclxyXG5cdFx0dGhpcy5vbkNsb3NlU2lkZWJhcigpO1xyXG5cclxuXHRcdC8vIFJlLXJ1biBsYXlvdXRcclxuXHRcdHRoaXMucnVuTGF5b3V0KCk7XHJcblx0fVxyXG5cclxuXHRvbkRlbGV0ZVNlbGVjdGVkRWRnZSgpOiB2b2lkIHtcclxuXHRcdGlmICghdGhpcy5zZWxlY3RlZEVkZ2VJZCB8fCAhdGhpcy5jeSkgcmV0dXJuO1xyXG5cclxuXHRcdGNvbnN0IGVkZ2VJZCA9IHRoaXMuc2VsZWN0ZWRFZGdlSWQ7XHJcblx0XHRjb25zdCByZW1vdmVkID0gdGhpcy53eGNjMmdyYXBoLnJlbW92ZUxpbmsoZWRnZUlkKTtcclxuXHRcdGlmICghcmVtb3ZlZCkgcmV0dXJuO1xyXG5cclxuXHRcdHRoaXMuY3k/LmdldEVsZW1lbnRCeUlkKGVkZ2VJZCkucmVtb3ZlKCk7XHJcblx0XHR0aGlzLnNlbGVjdGVkRWRnZUlkID0gbnVsbDtcclxuXHRcdHRoaXMuc2VsZWN0ZWRFZGdlRGVsZXRlQnV0dG9uUG9zaXRpb24gPSBudWxsO1xyXG5cdFx0dGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG5cdH1cclxuXHJcblx0b25MaW5rTm9kZVJlcXVlc3QoKTogdm9pZCB7XHJcblx0XHRpZiAoIXRoaXMuc2VsZWN0ZWROb2RlRGF0YSB8fCAhdGhpcy5jeSkgcmV0dXJuO1xyXG5cclxuXHRcdGNvbnN0IHNvdXJjZU5vZGUgPSB0aGlzLnNlbGVjdGVkTm9kZURhdGE7XHJcblxyXG5cdFx0aWYgKCF0aGlzLmNhbkNyZWF0ZU91dGdvaW5nTGluayhzb3VyY2VOb2RlLmlkKSkge1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblxyXG5cdFx0Ly8gR2V0IHRoZSBjeXRvc2NhcGUgbm9kZSB0byBpbnNwZWN0IGV4aXN0aW5nIGNvbm5lY3Rpb25zXHJcblx0XHRjb25zdCBjeU5vZGUgPSB0aGlzLmN5Py5nZXRFbGVtZW50QnlJZChzb3VyY2VOb2RlLmlkKTtcclxuXHJcblx0XHQvLyBDb2xsZWN0IElEcyBvZiBub2RlcyBhbHJlYWR5IGNvbm5lY3RlZCBhcyB0YXJnZXRzIGZyb20gdGhpcyBzb3VyY2VcclxuXHRcdGNvbnN0IGV4aXN0aW5nVGFyZ2V0SWRzID0gbmV3IFNldDxzdHJpbmc+KFxyXG5cdFx0XHRjeU5vZGUub3V0Z29lcnMoJ25vZGUnKS5tYXAoKG46IE5vZGVTaW5ndWxhcikgPT4gbi5pZCgpKVxyXG5cdFx0KTtcclxuXHJcblx0XHQvLyBCdWlsZCB0aGUgZmlsdGVyZWQgbGlzdCBvZiBsaW5rYWJsZSB0YXJnZXRzOlxyXG5cdFx0Ly8gIC0gTmV2ZXIgYWxsb3cgdGhlIHN0YXJ0IG5vZGUgKE5ld1Bob25lQ29udGFjdCkgYXMgYSB0YXJnZXRcclxuXHRcdC8vICAtIEV4Y2x1ZGUgdGhlIHNvdXJjZSBub2RlIGl0c2VsZlxyXG5cdFx0Ly8gIC0gRXhjbHVkZSBub2RlcyBhbHJlYWR5IGxpbmtlZCBhcyB0YXJnZXRzIGZyb20gdGhpcyBzb3VyY2VcclxuXHRcdHRoaXMuYXZhaWxhYmxlTm9kZXMgPSB0aGlzLnd4Y2MyZ3JhcGguZ2V0QWxsQWN0aXZpdGllcygpLmZpbHRlcihhY3QgPT5cclxuXHRcdFx0YWN0LmlkICE9PSBzb3VyY2VOb2RlLmlkICYmXHJcblx0XHRcdGFjdC53eGNjQWN0aXZpdHlOYW1lICE9PSAnTmV3UGhvbmVDb250YWN0JyAmJlxyXG5cdFx0XHQhZXhpc3RpbmdUYXJnZXRJZHMuaGFzKGFjdC5pZClcclxuXHRcdCk7XHJcblxyXG5cdFx0Y29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihMaW5rTm9kZURpYWxvZ0NvbXBvbmVudCwge1xyXG5cdFx0XHRwYW5lbENsYXNzOiBcIm5vLXBhZGRpbmctbW9kYWxcIixcclxuXHRcdFx0d2lkdGg6IFwiNTUwcHhcIixcclxuXHRcdFx0ZGF0YToge1xyXG5cdFx0XHRcdGF2YWlsYWJsZU5vZGVzOiB0aGlzLmF2YWlsYWJsZU5vZGVzLFxyXG5cdFx0XHRcdHNvdXJjZU5vZGU6IHRoaXMuc2VsZWN0ZWROb2RlRGF0YSxcclxuXHRcdFx0fSxcclxuXHRcdH0pO1xyXG5cclxuXHRcdGRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZSgocmVzdWx0OiBhbnkpID0+IHtcclxuXHRcdFx0aWYgKHJlc3VsdCkge1xyXG5cdFx0XHRcdHRoaXMub25MaW5rTm9kZXMocmVzdWx0KTtcclxuXHRcdFx0fVxyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHQvLyA9PT09PT09PT09PT09PT09PT09PSBMaW5rIERpYWxvZyBFdmVudHMgPT09PT09PT09PT09PT09PT09PT1cclxuXHJcblx0b25MaW5rTm9kZXMobGlua0RhdGE6IExpbmtOb2RlRGF0YSk6IHZvaWQge1xyXG5cdFx0aWYgKCF0aGlzLmN5KSByZXR1cm47XHJcblxyXG5cdFx0aWYgKCF0aGlzLmNhbkNyZWF0ZU91dGdvaW5nTGluayhsaW5rRGF0YS5zb3VyY2VOb2RlSWQpKSB7XHJcblx0XHRcdHJldHVybjtcclxuXHRcdH1cclxuXHJcblx0XHRpZiAodGhpcy53eGNjMmdyYXBoLmxpbmtFeGlzdHMobGlua0RhdGEuc291cmNlTm9kZUlkLCBsaW5rRGF0YS50YXJnZXROb2RlSWQpKSB7XHJcblx0XHRcdGNvbnNvbGUud2FybihcIkxpbmsgYWxyZWFkeSBleGlzdHMgYmV0d2VlbiB0aGVzZSBub2Rlc1wiKTtcclxuXHRcdFx0cmV0dXJuO1xyXG5cdFx0fVxyXG5cclxuXHRcdGNvbnN0IGVkZ2UgPSB0aGlzLnd4Y2MyZ3JhcGguYWRkTGluayhcclxuXHRcdFx0bGlua0RhdGEuc291cmNlTm9kZUlkLFxyXG5cdFx0XHRsaW5rRGF0YS50YXJnZXROb2RlSWQsXHJcblx0XHRcdGxpbmtEYXRhLmxhYmVsLFxyXG5cdFx0KTtcclxuXHJcblx0XHR0aGlzLmN5Py5hZGQoZWRnZSk7XHJcblx0XHR0aGlzLnJ1bkxheW91dCgpO1xyXG5cdH1cclxuXHJcblx0Ly8gPT09PT09PT09PT09PT09PT09PT0gQWRkIE5vZGUgRGlhbG9nIEV2ZW50cyA9PT09PT09PT09PT09PT09PT09PVxyXG5cclxuXHRvcGVuQWRkTm9kZURpYWxvZygpOiB2b2lkIHtcclxuXHRcdHRoaXMuYXZhaWxhYmxlTm9kZXMgPSB0aGlzLnd4Y2MyZ3JhcGguZ2V0QWxsQWN0aXZpdGllcygpO1xyXG5cclxuXHRcdGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oQWRkTm9kZURpYWxvZ0NvbXBvbmVudCwge1xyXG5cdFx0XHRwYW5lbENsYXNzOiBcIm5vLXBhZGRpbmctbW9kYWxcIixcclxuXHRcdFx0d2lkdGg6ICc0NTBweCcsXHJcblx0XHRcdGRhdGE6IHtcclxuXHRcdFx0XHRhdmFpbGFibGVOb2RlczogdGhpcy5hdmFpbGFibGVOb2RlcyxcclxuXHRcdFx0fSxcclxuXHRcdH0pO1xyXG5cclxuXHRcdGRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZSgocmVzdWx0OiBhbnkpID0+IHtcclxuXHRcdFx0aWYgKHJlc3VsdCkge1xyXG5cdFx0XHRcdHRoaXMuYWRkQWN0aXZpdHkocmVzdWx0KTtcclxuXHRcdFx0fVxyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHRhZGRBY3Rpdml0eShuZXdOb2RlRGF0YTogTmV3Tm9kZURhdGEpOiB2b2lkIHtcclxuXHRcdGlmICghdGhpcy5jeSkgcmV0dXJuO1xyXG5cclxuXHRcdGNvbnN0IG5vZGUgPSB0aGlzLnd4Y2NBY3Rpdml0eUNyZWF0aW9uU2VydmljZS5jcmVhdGVBbmRTeW5jKHtcclxuXHRcdFx0YWN0aXZpdHlUeXBlTmFtZTogbmV3Tm9kZURhdGEuYWN0aXZpdHlUeXBlTmFtZSxcclxuXHRcdFx0bmFtZTogbmV3Tm9kZURhdGEubmFtZVxyXG5cdFx0fSk7XHJcblxyXG5cdFx0Ly8gQWRkIG5vZGUgdG8gY3l0b3NjYXBlXHJcblx0XHR0aGlzLmN5Py5hZGQoe1xyXG5cdFx0XHRncm91cDogXCJub2Rlc1wiLFxyXG5cdFx0XHRkYXRhOiBub2RlLmRhdGFcclxuXHRcdH0pO1xyXG5cclxuXHRcdC8vIFJlLXJ1biBsYXlvdXQgdG8gcG9zaXRpb24gdGhlIG5ldyBub2RlXHJcblx0XHR0aGlzLnJ1bkxheW91dCgpO1xyXG5cdH1cclxuXHJcblx0b25Ob2RlU2VsZWN0Q2hhbmdlKGlkOiBzdHJpbmcpOiB2b2lkIHtcclxuXHRcdGNvbnN0IG5vZGUgPSB0aGlzLmN5Py5nZXRFbGVtZW50QnlJZChpZCkgYXMgTm9kZVNpbmd1bGFyO1xyXG5cdFx0aWYgKG5vZGUpIHtcclxuXHRcdFx0dGhpcy5jeT8uY2VudGVyKG5vZGUpO1xyXG5cclxuXHRcdFx0Ly8gU2V0IGhpZ2hsaWdodGVkIHByb3BlcnR5IGluIG5vZGUgZGF0YVxyXG5cdFx0XHRjb25zdCBvcmlnaW5hbERhdGEgPSBub2RlLmRhdGEoKTtcclxuXHRcdFx0bm9kZS5kYXRhKHsgLi4ub3JpZ2luYWxEYXRhLCBoaWdobGlnaHRlZDogdHJ1ZSB9KTtcclxuXHRcdFx0bm9kZS5lbWl0KCdkYXRhJyk7XHJcblxyXG5cdFx0XHQvLyBSZW1vdmUgaGlnaGxpZ2h0IGFmdGVyIDFzXHJcblx0XHRcdHNldFRpbWVvdXQoKCkgPT4ge1xyXG5cdFx0XHRcdGNvbnN0IGN1cnJlbnREYXRhID0gbm9kZS5kYXRhKCk7XHJcblx0XHRcdFx0aWYgKGN1cnJlbnREYXRhLmhpZ2hsaWdodGVkKSB7XHJcblx0XHRcdFx0XHQvLyBSZW1vdmUgdGhlIHByb3BlcnR5IGNvbXBsZXRlbHlcclxuXHRcdFx0XHRcdGRlbGV0ZSBjdXJyZW50RGF0YS5oaWdobGlnaHRlZDtcclxuXHRcdFx0XHRcdG5vZGUuZGF0YShjdXJyZW50RGF0YSk7XHJcblx0XHRcdFx0XHRub2RlLmVtaXQoJ2RhdGEnKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0sIDEwMDApO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0em9vbUluKCk6IHZvaWQge1xyXG5cdFx0dGhpcy5jeXRvc2NhcGVWaWV3cG9ydFNlcnZpY2Uuem9vbUluKHRoaXMuY3kgYXMgYW55KTtcclxuXHR9XHJcblxyXG5cdHpvb21PdXQoKTogdm9pZCB7XHJcblx0XHR0aGlzLmN5dG9zY2FwZVZpZXdwb3J0U2VydmljZS56b29tT3V0KHRoaXMuY3kgYXMgYW55KTtcclxuXHR9XHJcblxyXG5cdHJlc2V0VmlldygpOiB2b2lkIHtcclxuXHRcdHRoaXMuY3l0b3NjYXBlVmlld3BvcnRTZXJ2aWNlLnJlc2V0Vmlldyh0aGlzLmN5IGFzIGFueSwgdGhpcy5jeT8uZWxlbWVudHMoKSBhcyBhbnkpO1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBydW5MYXlvdXQoKTogdm9pZCB7XHJcblx0XHRpZiAoIXRoaXMuY3kpIHJldHVybjtcclxuXHJcblx0XHRjb25zdCBsYXlvdXQgPSB0aGlzLmN5Py5sYXlvdXQoe1xyXG5cdFx0XHQuLi50aGlzLmxheW91dE9wdGlvbnMsXHJcblx0XHR9KS5ydW4oKTtcclxuXHJcblx0XHRsYXlvdXQub24oXCJsYXlvdXRzdG9wXCIsICgpID0+IHtcclxuXHRcdFx0dGhpcy5jeXRvc2NhcGVWaWV3cG9ydFNlcnZpY2UucmVzZXRWaWV3KHRoaXMuY3kgYXMgYW55LCB0aGlzLmN5Py5lbGVtZW50cygpIGFzIGFueSk7XHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdHByaXZhdGUgY2FuQ3JlYXRlT3V0Z29pbmdMaW5rKHNvdXJjZU5vZGVJZDogc3RyaW5nKTogYm9vbGVhbiB7XHJcblx0XHRpZiAoIXRoaXMuY3kpIHJldHVybiBmYWxzZTtcclxuXHJcblx0XHRjb25zdCBjeU5vZGUgPSB0aGlzLmN5Py5nZXRFbGVtZW50QnlJZChzb3VyY2VOb2RlSWQpO1xyXG5cdFx0aWYgKCFjeU5vZGUgfHwgY3lOb2RlLmxlbmd0aCA9PT0gMCkgcmV0dXJuIGZhbHNlO1xyXG5cclxuXHRcdGNvbnN0IHNvdXJjZUFjdGl2aXR5ID0gKGN5Tm9kZS5kYXRhKCkgYXMgUmVhZG9ubHlFeHRlbmRlZEFjdGl2aXR5KS53eGNjQWN0aXZpdHlOYW1lO1xyXG5cdFx0Y29uc3Qgb3V0Z29pbmdFZGdlQ291bnQgPSBjeU5vZGUub3V0Z29lcnMoJ2VkZ2UnKS5sZW5ndGg7XHJcblxyXG5cdFx0Ly8gRW5kLXR5cGUgbm9kZXMgY2Fubm90IGhhdmUgb3V0Z29pbmcgbGlua3MuXHJcblx0XHRjb25zdCBFTkRfTk9ERV9UWVBFUzogc3RyaW5nW10gPSBbJ2VuZCcsICdkaXNjb25uZWN0LWNvbnRhY3QnLCAnYmxpbmQtdHJhbnNmZXInXTtcclxuXHRcdGlmIChFTkRfTk9ERV9UWVBFUy5pbmNsdWRlcyhzb3VyY2VBY3Rpdml0eSBhcyBzdHJpbmcpKSByZXR1cm4gZmFsc2U7XHJcblxyXG5cdFx0Ly8gU3RhcnQgbm9kZSBjYW4gb25seSBoYXZlIG9uZSBvdXRwdXQuXHJcblx0XHRpZiAoc291cmNlQWN0aXZpdHkgPT09ICdOZXdQaG9uZUNvbnRhY3QnICYmIG91dGdvaW5nRWRnZUNvdW50ID49IDEpIHJldHVybiBmYWxzZTtcclxuXHJcblx0XHQvLyBDb25kaXRpb24gbm9kZSBjYW4gb25seSBoYXZlIHRydWUvZmFsc2Ugb3V0cHV0cy5cclxuXHRcdGlmIChzb3VyY2VBY3Rpdml0eSA9PT0gJ2NvbmRpdGlvbi1hY3Rpdml0eScgJiYgb3V0Z29pbmdFZGdlQ291bnQgPj0gMikgcmV0dXJuIGZhbHNlO1xyXG5cclxuXHRcdHJldHVybiB0cnVlO1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBjbGVhclNlbGVjdGVkRWRnZSgpOiB2b2lkIHtcclxuXHRcdGlmICghdGhpcy5zZWxlY3RlZEVkZ2VJZCB8fCAhdGhpcy5jeSkgcmV0dXJuO1xyXG5cclxuXHRcdGNvbnN0IGVkZ2UgPSB0aGlzLmN5Py5nZXRFbGVtZW50QnlJZCh0aGlzLnNlbGVjdGVkRWRnZUlkKTtcclxuXHRcdGlmIChlZGdlICYmIGVkZ2UubGVuZ3RoKSB7XHJcblx0XHRcdGVkZ2UudW5zZWxlY3QoKTtcclxuXHRcdH1cclxuXHJcblx0XHR0aGlzLnNlbGVjdGVkRWRnZUlkID0gbnVsbDtcclxuXHRcdHRoaXMuc2VsZWN0ZWRFZGdlRGVsZXRlQnV0dG9uUG9zaXRpb24gPSBudWxsO1xyXG5cdFx0dGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSB1cGRhdGVTZWxlY3RlZEVkZ2VEZWxldGVCdXR0b25Qb3NpdGlvbigpOiB2b2lkIHtcclxuXHRcdGlmICghdGhpcy5jeSB8fCAhdGhpcy5zZWxlY3RlZEVkZ2VJZCkge1xyXG5cdFx0XHR0aGlzLnNlbGVjdGVkRWRnZURlbGV0ZUJ1dHRvblBvc2l0aW9uID0gbnVsbDtcclxuXHRcdFx0cmV0dXJuO1xyXG5cdFx0fVxyXG5cclxuXHRcdGNvbnN0IGVkZ2UgPSB0aGlzLmN5Py5nZXRFbGVtZW50QnlJZCh0aGlzLnNlbGVjdGVkRWRnZUlkKTtcclxuXHRcdGlmICghZWRnZSB8fCBlZGdlLmxlbmd0aCA9PT0gMCkge1xyXG5cdFx0XHR0aGlzLnNlbGVjdGVkRWRnZURlbGV0ZUJ1dHRvblBvc2l0aW9uID0gbnVsbDtcclxuXHRcdFx0cmV0dXJuO1xyXG5cdFx0fVxyXG5cclxuXHRcdGNvbnN0IG1pZHBvaW50ID0gKGVkZ2UgYXMgRWRnZVNpbmd1bGFyKS5yZW5kZXJlZE1pZHBvaW50KCk7XHJcblxyXG5cdFx0Ly8gU2xpZ2h0IG9mZnNldCBzbyB0aGUgaWNvbiBkb2VzIG5vdCBzaXQgZXhhY3RseSBvbiB0b3Agb2YgdGhlIGVkZ2UgbGluZS5cclxuXHRcdHRoaXMuc2VsZWN0ZWRFZGdlRGVsZXRlQnV0dG9uUG9zaXRpb24gPSB7XHJcblx0XHRcdHg6IG1pZHBvaW50LnggKyAxMixcclxuXHRcdFx0eTogbWlkcG9pbnQueSAtIDEyLFxyXG5cdFx0fTtcclxuXHR9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cInd4Y2MtZmxvd2NoYXJ0LWNvbnRhaW5lclwiPlxyXG4gIDxkaXYgI2Zsb3djaGFydENvbnRhaW5lciBjbGFzcz1cImZsb3djaGFydC1jYW52YXNcIj48L2Rpdj5cclxuXHJcbiAgPCEtLSBGbG9hdGluZyB0b29sYmFyIGZvciB2aWV3cG9ydCBjb250cm9scyAtLT5cclxuICA8Z3JhcGgtZmxvYXRpbmctdG9vbGJhclxyXG4gICAgW3Zpc2liaWxpdHldPVwieyBleHBvcnQ6IGZhbHNlIH1cIlxyXG4gICAgKHJlc2V0Vmlld0NoYW5nZSk9XCJyZXNldFZpZXcoKVwiXHJcbiAgICAoem9vbUluQ2hhbmdlKT1cInpvb21JbigpXCJcclxuICAgICh6b29tT3V0Q2hhbmdlKT1cInpvb21PdXQoKVwiPlxyXG4gIDwvZ3JhcGgtZmxvYXRpbmctdG9vbGJhcj5cclxuXHJcbiAgPCEtLSBHcmFwaCBBY3RzIC0tPlxyXG4gIDxkaXYgY2xhc3M9XCJncmFwaC1hY3Rpb25zLXdyYXBwZXJcIj5cclxuICAgIDxidXR0b25cclxuICAgICAgY2xhc3M9XCJhZGQtbm9kZS1idG5cIlxyXG4gICAgICBtYXRUb29sdGlwPVwiU2VhcmNoIHdvcmtmbG93XCJcclxuICAgICAgbWF0VG9vbHRpcFBvc2l0aW9uPVwiYWJvdmVcIlxyXG4gICAgICAoY2xpY2spPVwidG9nZ2xlU2VhcmNoUGFuZWwoKVwiXHJcbiAgICA+XHJcbiAgICAgIDxpbWcgc3JjPVwiYXNzZXRzL3d4Y2Mvc2VhcmNoLnN2Z1wiIHdpZHRoPVwiMjhcIiBoZWlnaHQ9XCIyOFwiIGFsdD1cIlwiIC8+XHJcbiAgICA8L2J1dHRvbj5cclxuICAgIDxidXR0b25cclxuICAgICAgY2xhc3M9XCJhZGQtbm9kZS1idG5cIlxyXG4gICAgICBtYXRUb29sdGlwPVwiQWRkIE5ldyBOb2RlXCJcclxuICAgICAgbWF0VG9vbHRpcFBvc2l0aW9uPVwiYWJvdmVcIlxyXG4gICAgICAoY2xpY2spPVwib3BlbkFkZE5vZGVEaWFsb2coKVwiXHJcbiAgICA+XHJcbiAgICAgIDxzdmdcclxuICAgICAgICB3aWR0aD1cIjI4XCJcclxuICAgICAgICBoZWlnaHQ9XCIyOFwiXHJcbiAgICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiXHJcbiAgICAgICAgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiXHJcbiAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMlwiXHJcbiAgICAgID5cclxuICAgICAgICA8bGluZSB4MT1cIjEyXCIgeTE9XCI1XCIgeDI9XCIxMlwiIHkyPVwiMTlcIj48L2xpbmU+XHJcbiAgICAgICAgPGxpbmUgeDE9XCI1XCIgeTE9XCIxMlwiIHgyPVwiMTlcIiB5Mj1cIjEyXCI+PC9saW5lPlxyXG4gICAgICA8L3N2Zz5cclxuICAgIDwvYnV0dG9uPlxyXG4gIDwvZGl2PlxyXG5cclxuICA8YnV0dG9uXHJcbiAgICAqbmdJZj1cInNlbGVjdGVkRWRnZUlkICYmIHNlbGVjdGVkRWRnZURlbGV0ZUJ1dHRvblBvc2l0aW9uXCJcclxuICAgIGNsYXNzPVwiZWRnZS1kZWxldGUtYnRuXCJcclxuICAgIG1hdFRvb2x0aXA9XCJEZWxldGUgdGhpcyBlZGdlXCJcclxuICAgIG1hdFRvb2x0aXBQb3NpdGlvbj1cImFib3ZlXCJcclxuICAgIFtzdHlsZS5sZWZ0LnB4XT1cInNlbGVjdGVkRWRnZURlbGV0ZUJ1dHRvblBvc2l0aW9uLnhcIlxyXG4gICAgW3N0eWxlLnRvcC5weF09XCJzZWxlY3RlZEVkZ2VEZWxldGVCdXR0b25Qb3NpdGlvbi55XCJcclxuICAgIChjbGljayk9XCJvbkRlbGV0ZVNlbGVjdGVkRWRnZSgpXCJcclxuICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgYXJpYS1sYWJlbD1cIkRlbGV0ZSBzZWxlY3RlZCBlZGdlXCJcclxuICA+XHJcbiAgICDDl1xyXG4gIDwvYnV0dG9uPlxyXG5cclxuICA8bm9kZS1zZWFyY2gtcGFuZWxcclxuICAgIGNsYXNzPVwiZmFkZS1pbi1zZWFyY2gtcGFuZWxcIlxyXG4gICAgW2NsYXNzLnZpc2libGVdPVwiaXNTZWFyY2hQYW5lbFZpc2libGVcIlxyXG4gICAgW25vZGVzXT1cImFjdGl2aXRpZXNcIlxyXG4gICAgKHNlbGVjdE5vZGVDaGFuZ2UpPVwib25Ob2RlU2VsZWN0Q2hhbmdlKCRldmVudClcIlxyXG4gICAgKHNlYXJjaENoYW5nZSk9XCJvcGVuQWRkTm9kZURpYWxvZygpXCJcclxuICA+XHJcbiAgPC9ub2RlLXNlYXJjaC1wYW5lbD5cclxuXHJcbiAgPCEtLSBOb2RlIGFjdGlvbiB0b29sYmFyIChmbG9hdGluZyBuZWFyIHNlbGVjdGVkIG5vZGUpIC0tPlxyXG4gIDxub2RlLWFjdGlvbi10b29sYmFyXHJcbiAgICBbaXNWaXNpYmxlXT1cImlzTm9kZVRvb2xiYXJWaXNpYmxlXCJcclxuICAgIFtwb3NpdGlvbl09XCJub2RlVG9vbGJhclBvc2l0aW9uXCJcclxuICAgIChkZWxldGVOb2RlKT1cIm9uRGVsZXRlTm9kZSgpXCJcclxuICAgIChsaW5rTm9kZSk9XCJvbkxpbmtOb2RlUmVxdWVzdCgpXCJcclxuICA+XHJcbiAgPC9ub2RlLWFjdGlvbi10b29sYmFyPlxyXG5cclxuICA8IS0tIE5vZGUgZGV0YWlscyBzaWRlYmFyIC0tPlxyXG4gIDxub2RlLWRldGFpbHMtc2lkZWJhclxyXG4gICAgW2lzT3Blbl09XCJpc1NpZGViYXJPcGVuXCJcclxuICAgIFtub2RlRGF0YV09XCJzZWxlY3RlZE5vZGVEYXRhXCJcclxuICAgIChjbG9zZSk9XCJvbkNsb3NlU2lkZWJhcigpXCJcclxuICAgIChkZXNjcmlwdGlvbkNoYW5nZSk9XCJvbkRlc2NyaXB0aW9uQ2hhbmdlKCRldmVudClcIlxyXG4gICAgKGFjdGl2aXR5VHlwZUNoYW5nZSk9XCJvbkFjdGl2aXR5VHlwZUNoYW5nZSgkZXZlbnQpXCJcclxuICA+XHJcbiAgPC9ub2RlLWRldGFpbHMtc2lkZWJhcj5cclxuPC9kaXY+XHJcbiJdfQ==
|