@softheon/armature 15.22.1 → 17.1.0
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 +142 -18
- package/assets/styles/_utility.scss +35 -0
- package/assets/styles/material-overrides.scss +0 -1
- package/assets/styles/sof-styles.scss +8 -7
- package/{esm2020 → esm2022}/lib/alert-banner/alert-banner-api.mjs +9 -9
- package/{esm2020 → esm2022}/lib/alert-banner/alert-banner.module.mjs +41 -41
- package/{esm2020 → esm2022}/lib/alert-banner/components/alert-banner/alert-banner.component.mjs +83 -83
- package/{esm2020 → esm2022}/lib/alert-banner/models/alert-banner-config.mjs +1 -1
- package/{esm2020 → esm2022}/lib/alert-banner/models/alert-banner-context.mjs +1 -1
- package/{esm2020 → esm2022}/lib/alert-banner/models/constants.mjs +15 -15
- package/{esm2020 → esm2022}/lib/alert-banner/services/alert-banner.service.mjs +44 -44
- package/esm2022/lib/armature.module.mjs +176 -0
- package/{esm2020 → esm2022}/lib/base-components/base-component-api.mjs +14 -14
- package/{esm2020 → esm2022}/lib/base-components/base-component.module.mjs +123 -123
- package/{esm2020 → esm2022}/lib/base-components/sof-alert/sof-alert.component.mjs +79 -79
- package/{esm2020 → esm2022}/lib/base-components/sof-badge/sof-badge.component.mjs +49 -49
- package/esm2022/lib/base-components/sof-banner/sof-banner.component.mjs +49 -0
- package/{esm2020 → esm2022}/lib/base-components/sof-button-toggle-group/sof-button-toggle-group.component.mjs +188 -188
- package/{esm2020 → esm2022}/lib/base-components/sof-confirm-address/sof-confirm-address.component.mjs +59 -59
- package/esm2022/lib/base-components/sof-image-checkbox/sof-image-checkbox.component.mjs +58 -0
- package/esm2022/lib/base-components/sof-modal/sof-modal.component.mjs +57 -0
- package/esm2022/lib/base-components/sof-progress-bar/sof-progress-bar.component.mjs +79 -0
- package/{esm2020 → esm2022}/lib/base-components/sof-radio-card/sof-radio-card.component.mjs +35 -35
- package/{esm2020 → esm2022}/lib/base-components/sof-simple-alert/sof-simple-alert.component.mjs +49 -49
- package/esm2022/lib/base-components/sof-star-rating/sof-star-rating.component.mjs +40 -0
- package/{esm2020 → esm2022}/lib/component-save-print/components/component-save-print/component-save-print.component.mjs +91 -91
- package/{esm2020 → esm2022}/lib/component-save-print/services/component-save-print.service.mjs +30 -30
- package/esm2022/lib/component-save-print/sof-ar-component-save-print.module.mjs +29 -0
- package/{esm2020 → esm2022}/lib/core/client-generated/api/session.service.mjs +242 -242
- package/{esm2020 → esm2022}/lib/core/client-generated/configuration.mjs +58 -58
- package/{esm2020 → esm2022}/lib/core/client-generated/encoder.mjs +16 -16
- package/{esm2020 → esm2022}/lib/core/client-generated/model/applicationUserModel.mjs +19 -19
- package/{esm2020 → esm2022}/lib/core/client-generated/model/assertedUserModel.mjs +1 -1
- package/{esm2020 → esm2022}/lib/core/client-generated/model/brandingModel.mjs +1 -1
- package/{esm2020 → esm2022}/lib/core/client-generated/model/errorModel.mjs +12 -12
- package/{esm2020 → esm2022}/lib/core/client-generated/model/folderLink.mjs +12 -12
- package/{esm2020 → esm2022}/lib/core/client-generated/model/identityProfile.mjs +1 -1
- package/{esm2020 → esm2022}/lib/core/client-generated/model/models.mjs +19 -19
- package/{esm2020 → esm2022}/lib/core/client-generated/model/oAuthModel.mjs +12 -12
- package/{esm2020 → esm2022}/lib/core/client-generated/model/preferencesRow.mjs +12 -12
- package/{esm2020 → esm2022}/lib/core/client-generated/model/rolesRow.mjs +12 -12
- package/{esm2020 → esm2022}/lib/core/client-generated/model/sessionGetResponseModel.mjs +1 -1
- package/{esm2020 → esm2022}/lib/core/client-generated/model/sessionPostRequestModel.mjs +1 -1
- package/{esm2020 → esm2022}/lib/core/client-generated/model/sessionPostResponseModel.mjs +1 -1
- package/{esm2020 → esm2022}/lib/core/client-generated/model/sessionPutRequestModel.mjs +1 -1
- package/{esm2020 → esm2022}/lib/core/client-generated/model/sessionPutResponseModel.mjs +1 -1
- package/{esm2020 → esm2022}/lib/core/client-generated/model/sessionResponseModel.mjs +1 -1
- package/{esm2020 → esm2022}/lib/core/client-generated/model/settingsProfile.mjs +1 -1
- package/{esm2020 → esm2022}/lib/core/client-generated/model/themePaletteColorsModel.mjs +12 -12
- package/{esm2020 → esm2022}/lib/core/client-generated/model/themePaletteModel.mjs +1 -1
- package/{esm2020 → esm2022}/lib/core/client-generated/model/trackingModel.mjs +12 -12
- package/{esm2020 → esm2022}/lib/core/client-generated/model/validationRecordsRow.mjs +12 -12
- package/{esm2020 → esm2022}/lib/core/client-generated/variables.mjs +8 -8
- package/esm2022/lib/core/components/app-template/app-template.component.mjs +250 -0
- package/{esm2020 → esm2022}/lib/core/functions/guid.mjs +10 -10
- package/{esm2020 → esm2022}/lib/core/functions/naming-convention.mjs +32 -32
- package/{esm2020 → esm2022}/lib/core/functions/route-to-pre-login-route.mjs +12 -12
- package/{esm2020 → esm2022}/lib/core/initializer/abstract-startup-service.mjs +3 -3
- package/esm2022/lib/core/initializer/initializer.service.mjs +286 -0
- package/{esm2020 → esm2022}/lib/core/interceptors/armature-auth-token-append.interceptor.mjs +73 -73
- package/esm2022/lib/core/models/base-config.mjs +2 -0
- package/esm2022/lib/core/models/constants.mjs +13 -0
- package/{esm2020 → esm2022}/lib/core/models/data-store-config.mjs +3 -3
- package/{esm2020 → esm2022}/lib/core/models/header-config.mjs +1 -1
- package/{esm2020 → esm2022}/lib/core/models/http-verbs.mjs +8 -8
- package/{esm2020 → esm2022}/lib/core/models/navigation-config.mjs +1 -1
- package/{esm2020 → esm2022}/lib/core/models/oidc-auth-settings.mjs +1 -1
- package/{esm2020 → esm2022}/lib/core/models/route-path.mjs +6 -6
- package/{esm2020 → esm2022}/lib/core/models/session-config.mjs +3 -3
- package/{esm2020 → esm2022}/lib/core/models/styles.mjs +1 -1
- package/{esm2020 → esm2022}/lib/core/models/subdomain-config.mjs +1 -1
- package/{esm2020 → esm2022}/lib/core/models/typed-session.mjs +3 -3
- package/{esm2020 → esm2022}/lib/core/models/user-entity-service-config.mjs +11 -11
- package/{esm2020 → esm2022}/lib/core/services/authorization.service.mjs +175 -175
- package/{esm2020 → esm2022}/lib/core/services/banner.service.mjs +43 -43
- package/{esm2020 → esm2022}/lib/core/services/base-config.service.mjs +32 -32
- package/{esm2020 → esm2022}/lib/core/services/custom-auth-config.service.mjs +3 -3
- package/{esm2020 → esm2022}/lib/core/services/default-config.service.mjs +19 -19
- package/{esm2020 → esm2022}/lib/core/services/session.service.mjs +385 -385
- package/{esm2020 → esm2022}/lib/core/services/user-entity.service.mjs +140 -140
- package/{esm2020 → esm2022}/lib/distributed-cache/client-generated/api/api.mjs +3 -3
- package/{esm2020 → esm2022}/lib/distributed-cache/client-generated/api/cache.service.mjs +213 -213
- package/{esm2020 → esm2022}/lib/distributed-cache/client-generated/configuration.mjs +58 -58
- package/{esm2020 → esm2022}/lib/distributed-cache/client-generated/encoder.mjs +16 -16
- package/{esm2020 → esm2022}/lib/distributed-cache/client-generated/model/cacheExpirationType.mjs +15 -15
- package/{esm2020 → esm2022}/lib/distributed-cache/client-generated/model/createCacheEntryRequestModel.mjs +1 -1
- package/{esm2020 → esm2022}/lib/distributed-cache/client-generated/model/models.mjs +4 -4
- package/{esm2020 → esm2022}/lib/distributed-cache/client-generated/model/retrieveCacheEntryResponseModel.mjs +12 -12
- package/{esm2020 → esm2022}/lib/distributed-cache/client-generated/model/updateCacheEntryRequestModel.mjs +12 -12
- package/{esm2020 → esm2022}/lib/distributed-cache/client-generated/variables.mjs +8 -8
- package/{esm2020 → esm2022}/lib/distributed-cache/distributed-cache-api.mjs +7 -7
- package/esm2022/lib/distributed-cache/distributed-cache.module.mjs +38 -0
- package/{esm2020 → esm2022}/lib/distributed-cache/models/constants.mjs +2 -2
- package/{esm2020 → esm2022}/lib/distributed-cache/models/policy-person.mjs +8 -8
- package/{esm2020 → esm2022}/lib/distributed-cache/services/server-cache.service.mjs +48 -48
- package/{esm2020 → esm2022}/lib/error/components/error-common/error-common.component.mjs +25 -25
- package/{esm2020 → esm2022}/lib/error/error-api.mjs +6 -6
- package/{esm2020 → esm2022}/lib/error/error.module.mjs +31 -31
- package/{esm2020 → esm2022}/lib/error/models/error-common-config.mjs +7 -7
- package/esm2022/lib/faq/components/faq/faq.component.mjs +40 -0
- package/{esm2020 → esm2022}/lib/faq/faq-api.mjs +7 -7
- package/{esm2020 → esm2022}/lib/faq/faq.module.mjs +41 -41
- package/{esm2020 → esm2022}/lib/faq/models/faq-config.mjs +3 -3
- package/{esm2020 → esm2022}/lib/faq/models/faq.mjs +7 -7
- package/esm2022/lib/feedback-tool/components/feedback-tool/feedback-tool.component.mjs +81 -0
- package/esm2022/lib/feedback-tool/feedback-tool-api.mjs +5 -0
- package/esm2022/lib/feedback-tool/feedback-tool.module.mjs +44 -0
- package/esm2022/lib/footer/components/footer/footer.component.mjs +25 -0
- package/{esm2020 → esm2022}/lib/footer/components/site-map/site-map.component.mjs +25 -25
- package/{esm2020 → esm2022}/lib/footer/footer-api.mjs +9 -9
- package/{esm2020 → esm2022}/lib/footer/footer.module.mjs +45 -45
- package/{esm2020 → esm2022}/lib/footer/models/enum/site-map-direction.mjs +14 -14
- package/{esm2020 → esm2022}/lib/footer/models/footer-config.mjs +3 -3
- package/{esm2020 → esm2022}/lib/footer/models/site-map-models.mjs +1 -1
- package/{esm2020 → esm2022}/lib/forms/components/sof-address/sof-address.component.mjs +110 -110
- package/{esm2020 → esm2022}/lib/forms/directives/alphanumeric/alphanumeric.directive.mjs +78 -78
- package/{esm2020 → esm2022}/lib/forms/directives/input-trim/input-trim.directive.mjs +110 -110
- package/{esm2020 → esm2022}/lib/forms/directives/letters-characters/letters-characters.directive.mjs +87 -87
- package/{esm2020 → esm2022}/lib/forms/directives/letters-only/letters-only.directive.mjs +85 -85
- package/{esm2020 → esm2022}/lib/forms/directives/numbers-only/numbers-only.directive.mjs +55 -55
- package/{esm2020 → esm2022}/lib/forms/forms-api.mjs +19 -19
- package/{esm2020 → esm2022}/lib/forms/forms.module.mjs +87 -87
- package/{esm2020 → esm2022}/lib/forms/models/address.mjs +1 -1
- package/esm2022/lib/forms/models/constants.mjs +10 -0
- package/{esm2020 → esm2022}/lib/forms/models/county.mjs +1 -1
- package/{esm2020 → esm2022}/lib/forms/models/enums/states.mjs +65 -65
- package/{esm2020 → esm2022}/lib/forms/pipes/phone-format.pipe.mjs +33 -33
- package/{esm2020 → esm2022}/lib/forms/services/alert.service.mjs +167 -167
- package/esm2022/lib/header/components/header/header.component.mjs +161 -0
- package/{esm2020 → esm2022}/lib/header/components/mobile-header-menu/mobile-header-menu.component.mjs +39 -39
- package/{esm2020 → esm2022}/lib/header/header-api.mjs +11 -11
- package/{esm2020 → esm2022}/lib/header/header.module.mjs +85 -85
- package/{esm2020 → esm2022}/lib/header/models/header-auth.settings.mjs +31 -31
- package/{esm2020 → esm2022}/lib/header/models/header-language.settings.mjs +1 -1
- package/{esm2020 → esm2022}/lib/header/models/header-theme.settings.mjs +1 -1
- package/{esm2020 → esm2022}/lib/header/models/header.settings.mjs +1 -1
- package/{esm2020 → esm2022}/lib/header/models/mobile-header-nav.settings.mjs +1 -1
- package/esm2022/lib/navigation/components/navigation/navigation.component.mjs +556 -0
- package/{esm2020 → esm2022}/lib/navigation/models/nav-theme.settings.mjs +1 -1
- package/{esm2020 → esm2022}/lib/navigation/models/nav.settings.mjs +1 -1
- package/{esm2020 → esm2022}/lib/navigation/models/navigation.mjs +1 -1
- package/{esm2020 → esm2022}/lib/navigation/navigation-api.mjs +8 -8
- package/{esm2020 → esm2022}/lib/navigation/navigation.module.mjs +126 -126
- package/{esm2020 → esm2022}/lib/oauth/models/constants.mjs +5 -5
- package/{esm2020 → esm2022}/lib/oauth/models/generated/accountManagementAssertionModel.mjs +1 -1
- package/{esm2020 → esm2022}/lib/oauth/models/generated/accountManagementRefreshRequestModel.mjs +1 -1
- package/{esm2020 → esm2022}/lib/oauth/models/generated/accountManagementResponseModel.mjs +1 -1
- package/{esm2020 → esm2022}/lib/oauth/models/generated/coverageDetail.mjs +18 -18
- package/{esm2020 → esm2022}/lib/oauth/models/generated/finance.mjs +12 -12
- package/{esm2020 → esm2022}/lib/oauth/models/generated/iSsoResponseModel.mjs +12 -12
- package/{esm2020 → esm2022}/lib/oauth/models/generated/iSsoResponseModelAccountManagementAssertionModel.mjs +1 -1
- package/{esm2020 → esm2022}/lib/oauth/models/generated/person.mjs +12 -12
- package/{esm2020 → esm2022}/lib/oauth/models/generated/policy.mjs +1 -1
- package/{esm2020 → esm2022}/lib/oauth/models/generated/refreshResponseModel.mjs +12 -12
- package/{esm2020 → esm2022}/lib/oauth/models/hybrid-saml-oauth-config.mjs +3 -3
- package/{esm2020 → esm2022}/lib/oauth/oauth-api.mjs +14 -14
- package/{esm2020 → esm2022}/lib/oauth/oauth.module.mjs +29 -29
- package/{esm2020 → esm2022}/lib/oauth/services/hybrid-saml-oauth.service.mjs +201 -201
- package/{esm2020 → esm2022}/lib/rbac/directives/rbac-action.directive.mjs +50 -50
- package/{esm2020 → esm2022}/lib/rbac/models/access-token-claims.mjs +22 -22
- package/{esm2020 → esm2022}/lib/rbac/models/constants.mjs +3 -3
- package/{esm2020 → esm2022}/lib/rbac/models/decoded-access-token.mjs +68 -68
- package/{esm2020 → esm2022}/lib/rbac/models/rbac-config.mjs +3 -3
- package/{esm2020 → esm2022}/lib/rbac/models/role-access.mjs +9 -9
- package/{esm2020 → esm2022}/lib/rbac/rbac-api.mjs +14 -14
- package/{esm2020 → esm2022}/lib/rbac/rbac.module.mjs +51 -51
- package/{esm2020 → esm2022}/lib/rbac/services/ar-role-nav.service.mjs +104 -104
- package/{esm2020 → esm2022}/lib/rbac/services/oauth2-role.service.mjs +114 -114
- package/{esm2020 → esm2022}/lib/rbac/services/role-nav.service.mjs +3 -3
- package/{esm2020 → esm2022}/lib/rbac/services/tokens.mjs +3 -3
- package/{esm2020 → esm2022}/lib/resize-panels/components/resize-panels/resize-panels.component.mjs +156 -156
- package/{esm2020 → esm2022}/lib/resize-panels/models/resize-event.mjs +1 -1
- package/{esm2020 → esm2022}/lib/resize-panels/resize-panels-api.mjs +4 -4
- package/{esm2020 → esm2022}/lib/resize-panels/resize-panels.module.mjs +23 -23
- package/{esm2020 → esm2022}/lib/rum/models/arm-error.mjs +28 -28
- package/{esm2020 → esm2022}/lib/rum/models/rum-config.mjs +3 -3
- package/{esm2020 → esm2022}/lib/rum/rum-api.mjs +9 -9
- package/{esm2020 → esm2022}/lib/rum/rum.module.mjs +48 -48
- package/{esm2020 → esm2022}/lib/rum/services/rum.service.mjs +115 -115
- package/{esm2020 → esm2022}/lib/rum/services/shared-error.service.mjs +45 -45
- package/{esm2020 → esm2022}/lib/rum/services/softheon-error-handler.service.mjs +76 -76
- package/{esm2020 → esm2022}/lib/saml/components/redirect-saml/redirect-saml.component.mjs +79 -79
- package/{esm2020 → esm2022}/lib/saml/models/i-saml-request.mjs +1 -1
- package/{esm2020 → esm2022}/lib/saml/models/i-saml-response.mjs +1 -1
- package/{esm2020 → esm2022}/lib/saml/models/redirect-saml-request.mjs +3 -3
- package/{esm2020 → esm2022}/lib/saml/models/sso-gateway-model.mjs +3 -3
- package/{esm2020 → esm2022}/lib/saml/saml-api.mjs +14 -14
- package/{esm2020 → esm2022}/lib/saml/saml.module.mjs +43 -43
- package/{esm2020 → esm2022}/lib/saml/services/entry/abstract-saml-entry.service.mjs +3 -3
- package/{esm2020 → esm2022}/lib/saml/services/entry/sso-gateway-entry.service.mjs +36 -36
- package/{esm2020 → esm2022}/lib/saml/services/send-off/abstract-saml.service.mjs +3 -3
- package/{esm2020 → esm2022}/lib/saml/services/send-off/saml.service.mjs +39 -39
- package/{esm2020 → esm2022}/lib/sof-pipe/constants/constants.mjs +16 -16
- package/{esm2020 → esm2022}/lib/sof-pipe/models/sof-date-pipe-format.mjs +1 -1
- package/{esm2020 → esm2022}/lib/sof-pipe/pipes/sof-blank/sof-blank.pipe.mjs +39 -39
- package/{esm2020 → esm2022}/lib/sof-pipe/pipes/sof-date/sof-date.pipe.mjs +59 -59
- package/{esm2020 → esm2022}/lib/sof-pipe/pipes/sof-ssn/sof-ssn.pipe.mjs +28 -28
- package/{esm2020 → esm2022}/lib/sof-pipe/sof-pipe.api.mjs +8 -8
- package/{esm2020 → esm2022}/lib/sof-pipe/sof-pipe.module.mjs +39 -39
- package/{esm2020 → esm2022}/lib/theming/directives/css-override.directive.mjs +69 -69
- package/{esm2020 → esm2022}/lib/theming/models/css-override.mjs +10 -10
- package/{esm2020 → esm2022}/lib/theming/services/theme.service.mjs +169 -169
- package/{esm2020 → esm2022}/lib/theming/theme-api.mjs +5 -5
- package/{esm2020 → esm2022}/lib/theming/theme.module.mjs +31 -31
- package/esm2022/public-api.mjs +52 -0
- package/{esm2020 → esm2022}/softheon-armature.mjs +4 -4
- package/fesm2022/softheon-armature.mjs +7439 -0
- package/fesm2022/softheon-armature.mjs.map +1 -0
- package/index.d.ts +5 -5
- package/lib/alert-banner/alert-banner-api.d.ts +7 -7
- package/lib/alert-banner/alert-banner.module.d.ts +11 -11
- package/lib/alert-banner/components/alert-banner/alert-banner.component.d.ts +40 -40
- package/lib/alert-banner/models/alert-banner-config.d.ts +20 -20
- package/lib/alert-banner/models/alert-banner-context.d.ts +18 -18
- package/lib/alert-banner/models/constants.d.ts +15 -15
- package/lib/alert-banner/services/alert-banner.service.d.ts +28 -28
- package/lib/armature.module.d.ts +46 -46
- package/lib/base-components/base-component-api.d.ts +13 -13
- package/lib/base-components/base-component.module.d.ts +35 -35
- package/lib/base-components/sof-alert/sof-alert.component.d.ts +40 -40
- package/lib/base-components/sof-badge/sof-badge.component.d.ts +26 -26
- package/lib/base-components/sof-banner/sof-banner.component.d.ts +34 -34
- package/lib/base-components/sof-button-toggle-group/sof-button-toggle-group.component.d.ts +100 -100
- package/lib/base-components/sof-confirm-address/sof-confirm-address.component.d.ts +61 -61
- package/lib/base-components/sof-image-checkbox/sof-image-checkbox.component.d.ts +28 -28
- package/lib/base-components/sof-modal/sof-modal.component.d.ts +51 -51
- package/lib/base-components/sof-progress-bar/sof-progress-bar.component.d.ts +40 -40
- package/lib/base-components/sof-radio-card/sof-radio-card.component.d.ts +20 -20
- package/lib/base-components/sof-simple-alert/sof-simple-alert.component.d.ts +29 -29
- package/lib/base-components/sof-star-rating/sof-star-rating.component.d.ts +25 -25
- package/lib/component-save-print/components/component-save-print/component-save-print.component.d.ts +46 -46
- package/lib/component-save-print/services/component-save-print.service.d.ts +18 -18
- package/lib/component-save-print/sof-ar-component-save-print.module.d.ts +9 -9
- package/lib/core/client-generated/api/session.service.d.ts +94 -94
- package/lib/core/client-generated/configuration.d.ts +48 -48
- package/lib/core/client-generated/encoder.d.ts +10 -10
- package/lib/core/client-generated/model/applicationUserModel.d.ts +54 -54
- package/lib/core/client-generated/model/assertedUserModel.d.ts +25 -25
- package/lib/core/client-generated/model/brandingModel.d.ts +33 -33
- package/lib/core/client-generated/model/errorModel.d.ts +24 -24
- package/lib/core/client-generated/model/folderLink.d.ts +34 -34
- package/lib/core/client-generated/model/identityProfile.d.ts +82 -82
- package/lib/core/client-generated/model/models.d.ts +19 -19
- package/lib/core/client-generated/model/oAuthModel.d.ts +28 -28
- package/lib/core/client-generated/model/preferencesRow.d.ts +15 -15
- package/lib/core/client-generated/model/rolesRow.d.ts +17 -17
- package/lib/core/client-generated/model/sessionGetResponseModel.d.ts +23 -23
- package/lib/core/client-generated/model/sessionPostRequestModel.d.ts +39 -39
- package/lib/core/client-generated/model/sessionPostResponseModel.d.ts +23 -23
- package/lib/core/client-generated/model/sessionPutRequestModel.d.ts +39 -39
- package/lib/core/client-generated/model/sessionPutResponseModel.d.ts +23 -23
- package/lib/core/client-generated/model/sessionResponseModel.d.ts +43 -43
- package/lib/core/client-generated/model/settingsProfile.d.ts +21 -21
- package/lib/core/client-generated/model/themePaletteColorsModel.d.ts +72 -72
- package/lib/core/client-generated/model/themePaletteModel.d.ts +65 -65
- package/lib/core/client-generated/model/trackingModel.d.ts +24 -24
- package/lib/core/client-generated/model/validationRecordsRow.d.ts +17 -17
- package/lib/core/client-generated/variables.d.ts +8 -8
- package/lib/core/components/app-template/app-template.component.d.ts +61 -67
- package/lib/core/functions/guid.d.ts +4 -4
- package/lib/core/functions/naming-convention.d.ts +6 -6
- package/lib/core/functions/route-to-pre-login-route.d.ts +6 -6
- package/lib/core/initializer/abstract-startup-service.d.ts +5 -5
- package/lib/core/initializer/initializer.service.d.ts +79 -87
- package/lib/core/interceptors/armature-auth-token-append.interceptor.d.ts +31 -31
- package/lib/core/models/base-config.d.ts +18 -23
- package/lib/core/models/constants.d.ts +13 -17
- package/lib/core/models/data-store-config.d.ts +27 -27
- package/lib/core/models/header-config.d.ts +9 -9
- package/lib/core/models/http-verbs.d.ts +10 -10
- package/lib/core/models/navigation-config.d.ts +14 -14
- package/lib/core/models/oidc-auth-settings.d.ts +11 -11
- package/lib/core/models/route-path.d.ts +5 -5
- package/lib/core/models/session-config.d.ts +18 -18
- package/lib/core/models/styles.d.ts +11 -11
- package/lib/core/models/subdomain-config.d.ts +7 -7
- package/lib/core/models/typed-session.d.ts +17 -17
- package/lib/core/models/user-entity-service-config.d.ts +14 -14
- package/lib/core/services/authorization.service.d.ts +54 -54
- package/lib/core/services/banner.service.d.ts +31 -31
- package/lib/core/services/base-config.service.d.ts +21 -21
- package/lib/core/services/custom-auth-config.service.d.ts +6 -6
- package/lib/core/services/default-config.service.d.ts +8 -8
- package/lib/core/services/session.service.d.ts +127 -127
- package/lib/core/services/user-entity.service.d.ts +47 -47
- package/lib/distributed-cache/client-generated/api/api.d.ts +3 -3
- package/lib/distributed-cache/client-generated/api/cache.service.d.ts +72 -72
- package/lib/distributed-cache/client-generated/configuration.d.ts +48 -48
- package/lib/distributed-cache/client-generated/encoder.d.ts +10 -10
- package/lib/distributed-cache/client-generated/model/cacheExpirationType.d.ts +19 -19
- package/lib/distributed-cache/client-generated/model/createCacheEntryRequestModel.d.ts +33 -33
- package/lib/distributed-cache/client-generated/model/models.d.ts +4 -4
- package/lib/distributed-cache/client-generated/model/retrieveCacheEntryResponseModel.d.ts +20 -20
- package/lib/distributed-cache/client-generated/model/updateCacheEntryRequestModel.d.ts +20 -20
- package/lib/distributed-cache/client-generated/variables.d.ts +8 -8
- package/lib/distributed-cache/distributed-cache-api.d.ts +7 -7
- package/lib/distributed-cache/distributed-cache.module.d.ts +8 -8
- package/lib/distributed-cache/models/constants.d.ts +2 -2
- package/lib/distributed-cache/models/policy-person.d.ts +19 -19
- package/lib/distributed-cache/services/server-cache.service.d.ts +72 -72
- package/lib/error/components/error-common/error-common.component.d.ts +14 -14
- package/lib/error/error-api.d.ts +4 -4
- package/lib/error/error.module.d.ts +11 -11
- package/lib/error/models/error-common-config.d.ts +21 -21
- package/lib/faq/components/faq/faq.component.d.ts +19 -19
- package/lib/faq/faq-api.d.ts +5 -5
- package/lib/faq/faq.module.d.ts +15 -15
- package/lib/faq/models/faq-config.d.ts +13 -13
- package/lib/faq/models/faq.d.ts +9 -9
- package/lib/feedback-tool/components/feedback-tool/feedback-tool.component.d.ts +62 -0
- package/lib/feedback-tool/feedback-tool-api.d.ts +3 -0
- package/lib/feedback-tool/feedback-tool.module.d.ts +14 -0
- package/lib/footer/components/footer/footer.component.d.ts +14 -14
- package/lib/footer/components/site-map/site-map.component.d.ts +13 -13
- package/lib/footer/footer-api.d.ts +7 -7
- package/lib/footer/footer.module.d.ts +14 -14
- package/lib/footer/models/enum/site-map-direction.d.ts +13 -13
- package/lib/footer/models/footer-config.d.ts +7 -7
- package/lib/footer/models/site-map-models.d.ts +41 -41
- package/lib/forms/components/sof-address/sof-address.component.d.ts +53 -53
- package/lib/forms/directives/alphanumeric/alphanumeric.directive.d.ts +31 -31
- package/lib/forms/directives/input-trim/input-trim.directive.d.ts +58 -58
- package/lib/forms/directives/letters-characters/letters-characters.directive.d.ts +27 -27
- package/lib/forms/directives/letters-only/letters-only.directive.d.ts +27 -27
- package/lib/forms/directives/numbers-only/numbers-only.directive.d.ts +22 -22
- package/lib/forms/forms-api.d.ts +14 -14
- package/lib/forms/forms.module.d.ts +21 -21
- package/lib/forms/models/address.d.ts +14 -14
- package/lib/forms/models/constants.d.ts +9 -9
- package/lib/forms/models/county.d.ts +13 -13
- package/lib/forms/models/enums/states.d.ts +64 -64
- package/lib/forms/pipes/phone-format.pipe.d.ts +10 -10
- package/lib/forms/services/alert.service.d.ts +60 -60
- package/lib/header/components/header/header.component.d.ts +120 -120
- package/lib/header/components/mobile-header-menu/mobile-header-menu.component.d.ts +26 -26
- package/lib/header/header-api.d.ts +9 -9
- package/lib/header/header.module.d.ts +20 -20
- package/lib/header/models/header-auth.settings.d.ts +30 -30
- package/lib/header/models/header-language.settings.d.ts +10 -10
- package/lib/header/models/header-theme.settings.d.ts +19 -19
- package/lib/header/models/header.settings.d.ts +53 -53
- package/lib/header/models/mobile-header-nav.settings.d.ts +11 -11
- package/lib/navigation/components/navigation/navigation.component.d.ts +200 -200
- package/lib/navigation/models/nav-theme.settings.d.ts +25 -25
- package/lib/navigation/models/nav.settings.d.ts +64 -64
- package/lib/navigation/models/navigation.d.ts +40 -40
- package/lib/navigation/navigation-api.d.ts +6 -6
- package/lib/navigation/navigation.module.d.ts +25 -25
- package/lib/oauth/models/constants.d.ts +6 -6
- package/lib/oauth/models/generated/accountManagementAssertionModel.d.ts +49 -49
- package/lib/oauth/models/generated/accountManagementRefreshRequestModel.d.ts +21 -21
- package/lib/oauth/models/generated/accountManagementResponseModel.d.ts +45 -45
- package/lib/oauth/models/generated/coverageDetail.d.ts +67 -67
- package/lib/oauth/models/generated/finance.d.ts +36 -36
- package/lib/oauth/models/generated/iSsoResponseModel.d.ts +44 -44
- package/lib/oauth/models/generated/iSsoResponseModelAccountManagementAssertionModel.d.ts +45 -45
- package/lib/oauth/models/generated/person.d.ts +53 -53
- package/lib/oauth/models/generated/policy.d.ts +51 -51
- package/lib/oauth/models/generated/refreshResponseModel.d.ts +20 -20
- package/lib/oauth/models/hybrid-saml-oauth-config.d.ts +14 -14
- package/lib/oauth/oauth-api.d.ts +12 -12
- package/lib/oauth/oauth.module.d.ts +9 -9
- package/lib/oauth/services/hybrid-saml-oauth.service.d.ts +59 -59
- package/lib/rbac/directives/rbac-action.directive.d.ts +27 -27
- package/lib/rbac/models/access-token-claims.d.ts +18 -18
- package/lib/rbac/models/constants.d.ts +4 -4
- package/lib/rbac/models/decoded-access-token.d.ts +43 -43
- package/lib/rbac/models/rbac-config.d.ts +15 -15
- package/lib/rbac/models/role-access.d.ts +7 -7
- package/lib/rbac/rbac-api.d.ts +11 -11
- package/lib/rbac/rbac.module.d.ts +19 -19
- package/lib/rbac/services/ar-role-nav.service.d.ts +25 -25
- package/lib/rbac/services/oauth2-role.service.d.ts +51 -51
- package/lib/rbac/services/role-nav.service.d.ts +12 -12
- package/lib/rbac/services/tokens.d.ts +3 -3
- package/lib/resize-panels/components/resize-panels/resize-panels.component.d.ts +64 -64
- package/lib/resize-panels/models/resize-event.d.ts +6 -6
- package/lib/resize-panels/resize-panels-api.d.ts +4 -4
- package/lib/resize-panels/resize-panels.module.d.ts +9 -9
- package/lib/rum/models/arm-error.d.ts +27 -27
- package/lib/rum/models/rum-config.d.ts +9 -9
- package/lib/rum/rum-api.d.ts +7 -7
- package/lib/rum/rum.module.d.ts +14 -14
- package/lib/rum/services/rum.service.d.ts +47 -47
- package/lib/rum/services/shared-error.service.d.ts +27 -27
- package/lib/rum/services/softheon-error-handler.service.d.ts +32 -32
- package/lib/saml/components/redirect-saml/redirect-saml.component.d.ts +41 -41
- package/lib/saml/models/i-saml-request.d.ts +4 -4
- package/lib/saml/models/i-saml-response.d.ts +4 -4
- package/lib/saml/models/redirect-saml-request.d.ts +24 -24
- package/lib/saml/models/sso-gateway-model.d.ts +17 -17
- package/lib/saml/saml-api.d.ts +11 -11
- package/lib/saml/saml.module.d.ts +9 -9
- package/lib/saml/services/entry/abstract-saml-entry.service.d.ts +16 -16
- package/lib/saml/services/entry/sso-gateway-entry.service.d.ts +22 -22
- package/lib/saml/services/send-off/abstract-saml.service.d.ts +20 -20
- package/lib/saml/services/send-off/saml.service.d.ts +32 -32
- package/lib/sof-pipe/constants/constants.d.ts +8 -8
- package/lib/sof-pipe/models/sof-date-pipe-format.d.ts +7 -7
- package/lib/sof-pipe/pipes/sof-blank/sof-blank.pipe.d.ts +19 -19
- package/lib/sof-pipe/pipes/sof-date/sof-date.pipe.d.ts +21 -21
- package/lib/sof-pipe/pipes/sof-ssn/sof-ssn.pipe.d.ts +12 -12
- package/lib/sof-pipe/sof-pipe.api.d.ts +7 -7
- package/lib/sof-pipe/sof-pipe.module.d.ts +10 -10
- package/lib/theming/directives/css-override.directive.d.ts +20 -20
- package/lib/theming/models/css-override.d.ts +15 -15
- package/lib/theming/services/theme.service.d.ts +48 -48
- package/lib/theming/theme-api.d.ts +5 -5
- package/lib/theming/theme.module.d.ts +9 -9
- package/package.json +17 -23
- package/public-api.d.ts +49 -48
- package/esm2020/lib/armature.module.mjs +0 -179
- package/esm2020/lib/base-components/sof-banner/sof-banner.component.mjs +0 -49
- package/esm2020/lib/base-components/sof-image-checkbox/sof-image-checkbox.component.mjs +0 -58
- package/esm2020/lib/base-components/sof-modal/sof-modal.component.mjs +0 -58
- package/esm2020/lib/base-components/sof-progress-bar/sof-progress-bar.component.mjs +0 -79
- package/esm2020/lib/base-components/sof-star-rating/sof-star-rating.component.mjs +0 -40
- package/esm2020/lib/component-save-print/sof-ar-component-save-print.module.mjs +0 -32
- package/esm2020/lib/core/components/app-template/app-template.component.mjs +0 -258
- package/esm2020/lib/core/initializer/initializer.service.mjs +0 -302
- package/esm2020/lib/core/models/base-config.mjs +0 -2
- package/esm2020/lib/core/models/constants.mjs +0 -17
- package/esm2020/lib/core/models/federated-module-config.mjs +0 -2
- package/esm2020/lib/core/services/federated-module.service.mjs +0 -60
- package/esm2020/lib/distributed-cache/distributed-cache.module.mjs +0 -38
- package/esm2020/lib/faq/components/faq/faq.component.mjs +0 -40
- package/esm2020/lib/footer/components/footer/footer.component.mjs +0 -25
- package/esm2020/lib/forms/models/constants.mjs +0 -10
- package/esm2020/lib/header/components/header/header.component.mjs +0 -161
- package/esm2020/lib/navigation/components/navigation/navigation.component.mjs +0 -556
- package/esm2020/public-api.mjs +0 -51
- package/fesm2015/softheon-armature.mjs +0 -7361
- package/fesm2015/softheon-armature.mjs.map +0 -1
- package/fesm2020/softheon-armature.mjs +0 -7416
- package/fesm2020/softheon-armature.mjs.map +0 -1
- package/lib/core/models/federated-module-config.d.ts +0 -3
- package/lib/core/services/federated-module.service.d.ts +0 -23
|
@@ -1,302 +0,0 @@
|
|
|
1
|
-
import { Injectable, Optional, Inject } from '@angular/core';
|
|
2
|
-
import { AuthConfig } from 'angular-oauth2-oidc';
|
|
3
|
-
import { JwksValidationHandler } from 'angular-oauth2-oidc-jwks';
|
|
4
|
-
import * as _ from 'lodash';
|
|
5
|
-
import { BehaviorSubject, lastValueFrom, throwError } from 'rxjs';
|
|
6
|
-
import { federatedModuleConfigStorageKey, languageStorageKey, preSignInRouteStorageKey, WINDOW } from '../models/constants';
|
|
7
|
-
import * as i0 from "@angular/core";
|
|
8
|
-
import * as i1 from "@angular/common/http";
|
|
9
|
-
import * as i2 from "@ngx-translate/core";
|
|
10
|
-
import * as i3 from "../../theming/services/theme.service";
|
|
11
|
-
import * as i4 from "../services/base-config.service";
|
|
12
|
-
import * as i5 from "angular-oauth2-oidc";
|
|
13
|
-
import * as i6 from "@angular/router";
|
|
14
|
-
import * as i7 from "@angular/common";
|
|
15
|
-
import * as i8 from "../services/federated-module.service";
|
|
16
|
-
import * as i9 from "../services/custom-auth-config.service";
|
|
17
|
-
/**
|
|
18
|
-
* The startup service is used to call methods that should be run when initially loading the application
|
|
19
|
-
*/
|
|
20
|
-
export class Initializer {
|
|
21
|
-
/** Gets the configurations */
|
|
22
|
-
get isInitialized() {
|
|
23
|
-
return this.isInitializedBs.value;
|
|
24
|
-
}
|
|
25
|
-
/**
|
|
26
|
-
* Constructs the startup service. Include any services that should be used during startup
|
|
27
|
-
* @param http The http client
|
|
28
|
-
* @param translateService The translate service
|
|
29
|
-
* @param themeService The theme service
|
|
30
|
-
* @param configService The config service
|
|
31
|
-
* @param oAuthService The oauth service
|
|
32
|
-
* @param router The router
|
|
33
|
-
* @param location The location
|
|
34
|
-
* @param federatedModuleService The federated module service
|
|
35
|
-
* @param customAuthConfigService The custom auth config service
|
|
36
|
-
* @param _window The window injection
|
|
37
|
-
*/
|
|
38
|
-
constructor(http, translateService, themeService, configService, oAuthService, router, location, federatedModuleService, customAuthConfigService, _window) {
|
|
39
|
-
this.http = http;
|
|
40
|
-
this.translateService = translateService;
|
|
41
|
-
this.themeService = themeService;
|
|
42
|
-
this.configService = configService;
|
|
43
|
-
this.oAuthService = oAuthService;
|
|
44
|
-
this.router = router;
|
|
45
|
-
this.location = location;
|
|
46
|
-
this.federatedModuleService = federatedModuleService;
|
|
47
|
-
this.customAuthConfigService = customAuthConfigService;
|
|
48
|
-
this._window = _window;
|
|
49
|
-
/** The configuration behavior subject */
|
|
50
|
-
this.isInitializedBs = new BehaviorSubject(false);
|
|
51
|
-
/** The example the subdomain substring */
|
|
52
|
-
this.exampleSubdomain = 'example';
|
|
53
|
-
/** The www substring for subdomain route finding */
|
|
54
|
-
this.wwwSubstring = 'www';
|
|
55
|
-
/** The lvh substring for subdomain route finding */
|
|
56
|
-
this.lvhSubstring = 'lvh';
|
|
57
|
-
this.isInitialized$ = this.isInitializedBs.asObservable();
|
|
58
|
-
this.window = _window || window;
|
|
59
|
-
}
|
|
60
|
-
/**
|
|
61
|
-
* Loads all data that is needed upon initial loading of the website
|
|
62
|
-
*/
|
|
63
|
-
async initialize() {
|
|
64
|
-
// reads the language from local storage set in the parent app
|
|
65
|
-
// language loading
|
|
66
|
-
// Set languages for translation service
|
|
67
|
-
const lang = this.window.localStorage.getItem(languageStorageKey) || this.window.sessionStorage.getItem(languageStorageKey) || 'en';
|
|
68
|
-
this.translateService.setDefaultLang(lang);
|
|
69
|
-
this.translateService.use(lang);
|
|
70
|
-
// Adapted from https://stackoverflow.com/a/41636880
|
|
71
|
-
// Adapted from https://stackoverflow.com/a/41736293
|
|
72
|
-
// A callback used to initialize the promise. This callback is passed two arguments:
|
|
73
|
-
// a resolve callback used resolve the promise with a value or the result of another promise,
|
|
74
|
-
// and a reject callback used to reject the promise with a provided reason or error.
|
|
75
|
-
return new Promise(async (resolve, reject) => {
|
|
76
|
-
// Go through all services and complete any API calls necessary.
|
|
77
|
-
// At the end, if all works and loads as expected, resolve the promise and set startup success to true.
|
|
78
|
-
// If an issue is encountered, you can call reject() to hit the catch() code below.
|
|
79
|
-
// First, load the configurations
|
|
80
|
-
const assetPartial = !this.federatedModuleService.isFederatedModule ? './assets' : `./assets/federation/${this.federatedModuleService.federatedModuleId}/assets`;
|
|
81
|
-
let [baseConfig, overrideConfig, baseLang, overrideLang, theme] = [JSON, JSON, JSON, JSON, JSON];
|
|
82
|
-
try {
|
|
83
|
-
[baseConfig, overrideConfig, baseLang, overrideLang, theme] = await Promise.all([
|
|
84
|
-
this.http.get(`${assetPartial}/baseline/appsettings.json`).toPromise(),
|
|
85
|
-
this.http.get(`${assetPartial}/configurations/appsettings.json`).toPromise(),
|
|
86
|
-
this.http.get(`${assetPartial}/i18n/${this.translateService.currentLang}.json`).toPromise(),
|
|
87
|
-
this.http.get(`${assetPartial}/configurations/${this.translateService.currentLang}.json`).toPromise(),
|
|
88
|
-
this.http.get(`${assetPartial}/configurations/theme.json`).toPromise()
|
|
89
|
-
]);
|
|
90
|
-
this.configService.config = _.mergeWith(baseConfig, overrideConfig, this.mergeCustomizer);
|
|
91
|
-
const mergedLanguage = _.mergeWith(baseLang, overrideLang, this.mergeCustomizer);
|
|
92
|
-
this.translateService.setTranslation(this.translateService.currentLang, mergedLanguage);
|
|
93
|
-
const configurePartial = (t) => {
|
|
94
|
-
const configSnapShot = this.configService.config;
|
|
95
|
-
configSnapShot.theme = t;
|
|
96
|
-
this.configService.config = configSnapShot;
|
|
97
|
-
this.themeService.initPalette(t);
|
|
98
|
-
};
|
|
99
|
-
const subdomain = this.getSubdomain();
|
|
100
|
-
if (subdomain && this.configService.config.subdomain) {
|
|
101
|
-
try {
|
|
102
|
-
let [subdomainConfigs, subdomainLanguage, subdomainTheme] = await Promise.all([
|
|
103
|
-
lastValueFrom(this.http.get(`${assetPartial}/configurations/${subdomain}.${this.translateService.currentLang}.json`)),
|
|
104
|
-
lastValueFrom(this.http.get(`${assetPartial}/configurations/${subdomain}.appsettings.json`)),
|
|
105
|
-
lastValueFrom(this.http.get(`${assetPartial}/configurations/${subdomain}.theme.json`))
|
|
106
|
-
]);
|
|
107
|
-
this.configService.config = _.mergeWith(this.configService.config, subdomainConfigs, this.mergeCustomizer);
|
|
108
|
-
this.translateService.setTranslation(this.translateService.currentLang, _.mergeWith(mergedLanguage, subdomainLanguage, this.mergeCustomizer));
|
|
109
|
-
const mergedTheme = _.mergeWith(theme, subdomainTheme, this.mergeCustomizer);
|
|
110
|
-
configurePartial(mergedTheme);
|
|
111
|
-
}
|
|
112
|
-
catch (e) {
|
|
113
|
-
if (this.configService.config.subdomain && this.configService.config.subdomain.subdomains.length && !this.configService.config.subdomain.subdomains.includes(subdomain)) {
|
|
114
|
-
this.router.dispose();
|
|
115
|
-
const error = `Invalid subdomain: ${subdomain}`;
|
|
116
|
-
console.error(error);
|
|
117
|
-
throw new Error(error);
|
|
118
|
-
}
|
|
119
|
-
else if (this.configService.config.subdomain?.requireConfiguredSubdomain && this.configService.config.subdomain?.subdomains.includes(subdomain)) {
|
|
120
|
-
this.router.dispose();
|
|
121
|
-
const error = `Configured subdomain: ${subdomain} does not have any subdomain specific configurations`;
|
|
122
|
-
reject(error);
|
|
123
|
-
console.error(error);
|
|
124
|
-
throw new Error(error);
|
|
125
|
-
}
|
|
126
|
-
configurePartial(theme);
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
else {
|
|
130
|
-
configurePartial(theme);
|
|
131
|
-
}
|
|
132
|
-
this.trySetUpFederatedModules();
|
|
133
|
-
}
|
|
134
|
-
catch (error) {
|
|
135
|
-
// Catch any errors during the get configurations API call
|
|
136
|
-
console.error('Error Loading Configurations or Languages');
|
|
137
|
-
// Reject the promise
|
|
138
|
-
reject('error');
|
|
139
|
-
return throwError(error.error || 'Server error');
|
|
140
|
-
}
|
|
141
|
-
try {
|
|
142
|
-
if (this.customAuthConfigService) {
|
|
143
|
-
await this.customAuthConfigService.configureAuthSettings().then(authConfig => {
|
|
144
|
-
if (authConfig) {
|
|
145
|
-
const config = this.configService.config.oAuthSettings;
|
|
146
|
-
return this.login(config);
|
|
147
|
-
}
|
|
148
|
-
else {
|
|
149
|
-
return Promise.resolve(false);
|
|
150
|
-
}
|
|
151
|
-
});
|
|
152
|
-
}
|
|
153
|
-
else {
|
|
154
|
-
const oAuth = await this.setUpOAuth();
|
|
155
|
-
}
|
|
156
|
-
}
|
|
157
|
-
catch (error) {
|
|
158
|
-
reject(error);
|
|
159
|
-
return throwError(error);
|
|
160
|
-
}
|
|
161
|
-
// Navigate to the requested route
|
|
162
|
-
if (this.configService.config.oAuthSettings?.preserveRoute) {
|
|
163
|
-
this.router.navigateByUrl(this.oAuthService.state);
|
|
164
|
-
}
|
|
165
|
-
this.isInitializedBs.next(true);
|
|
166
|
-
resolve(true);
|
|
167
|
-
}).catch((error) => {
|
|
168
|
-
// Catch the error
|
|
169
|
-
console.error('There was an error loading the startup configurations.');
|
|
170
|
-
});
|
|
171
|
-
}
|
|
172
|
-
/**
|
|
173
|
-
* Configure implicit flow
|
|
174
|
-
*/
|
|
175
|
-
async setUpOAuth() {
|
|
176
|
-
if (this.configService.config?.oAuthSettings?.issuer) {
|
|
177
|
-
const config = this.configService.config.oAuthSettings;
|
|
178
|
-
const authConfig = new AuthConfig({
|
|
179
|
-
clientId: config.clientId,
|
|
180
|
-
redirectUri: config.redirectUri,
|
|
181
|
-
issuer: config.issuer,
|
|
182
|
-
scope: config.scope,
|
|
183
|
-
skipIssuerCheck: config.skipIssuerCheck != undefined ? config.skipIssuerCheck : true,
|
|
184
|
-
timeoutFactor: config.timeoutFactor || 0.75,
|
|
185
|
-
postLogoutRedirectUri: config.postLogoutRedirectUri,
|
|
186
|
-
loginUrl: config.loginUrl,
|
|
187
|
-
strictDiscoveryDocumentValidation: false,
|
|
188
|
-
responseType: config.responseType || 'code'
|
|
189
|
-
});
|
|
190
|
-
this.oAuthService.configure(authConfig);
|
|
191
|
-
this.oAuthService.skipIssuerCheck = true;
|
|
192
|
-
this.oAuthService.responseType = config.responseType || 'code';
|
|
193
|
-
this.oAuthService.strictDiscoveryDocumentValidation = false;
|
|
194
|
-
this.oAuthService.tokenValidationHandler = new JwksValidationHandler();
|
|
195
|
-
this.oAuthService.timeoutFactor = 0.75;
|
|
196
|
-
this.oAuthService.setupAutomaticSilentRefresh({}, 'access_token');
|
|
197
|
-
// set initialized on start up to true
|
|
198
|
-
config.authSetOnStartup = true;
|
|
199
|
-
const parentConfig = this.configService.config;
|
|
200
|
-
parentConfig.oAuthSettings = config;
|
|
201
|
-
this.configService.config = parentConfig;
|
|
202
|
-
return this.login(config);
|
|
203
|
-
}
|
|
204
|
-
return Promise.resolve(true);
|
|
205
|
-
}
|
|
206
|
-
/**
|
|
207
|
-
* Handle Login
|
|
208
|
-
* @param config The Oidc Auth Settings
|
|
209
|
-
*/
|
|
210
|
-
async login(config) {
|
|
211
|
-
const isValid = this.validateExistingTokenAgainstConfigs();
|
|
212
|
-
const preservedRoute = this.window.sessionStorage.getItem(preSignInRouteStorageKey);
|
|
213
|
-
if (!preservedRoute) {
|
|
214
|
-
this.window.sessionStorage.setItem(preSignInRouteStorageKey, this.location.path());
|
|
215
|
-
}
|
|
216
|
-
if (config.requireLoginOnStartup || !isValid) {
|
|
217
|
-
return this.oAuthService.loadDiscoveryDocumentAndLogin({ state: this.location.path() })
|
|
218
|
-
// handles the case for expired access token or invalid nonce or people bookmarking the ids login page
|
|
219
|
-
.catch(async (res) => {
|
|
220
|
-
this.oAuthService.initLoginFlow(this.location.path());
|
|
221
|
-
return Promise.resolve(true);
|
|
222
|
-
});
|
|
223
|
-
}
|
|
224
|
-
else {
|
|
225
|
-
return this.oAuthService.loadDiscoveryDocumentAndTryLogin()
|
|
226
|
-
// handles the case for expired access token or invalid nonce or people bookmarking the ids login page
|
|
227
|
-
.catch(async (res) => {
|
|
228
|
-
this.oAuthService.initLoginFlow();
|
|
229
|
-
return Promise.resolve(true);
|
|
230
|
-
});
|
|
231
|
-
}
|
|
232
|
-
}
|
|
233
|
-
/**
|
|
234
|
-
* Merges the two config objects ignoring the array type
|
|
235
|
-
* @param objValue The default config value
|
|
236
|
-
* @param srcValue The target switchboard config value
|
|
237
|
-
* @returns The merge of the two configs provided
|
|
238
|
-
*/
|
|
239
|
-
mergeCustomizer(objValue, srcValue) {
|
|
240
|
-
if (_.isArray(objValue) && srcValue) {
|
|
241
|
-
return srcValue;
|
|
242
|
-
}
|
|
243
|
-
}
|
|
244
|
-
/**
|
|
245
|
-
* Validates the existing token against the configurations
|
|
246
|
-
* @returns true when token is valid
|
|
247
|
-
*/
|
|
248
|
-
validateExistingTokenAgainstConfigs() {
|
|
249
|
-
if (this.configService.config.oAuthSettings.disableStartupTokenValidation) {
|
|
250
|
-
return true;
|
|
251
|
-
}
|
|
252
|
-
if (!this.window.sessionStorage.getItem('access_token')) {
|
|
253
|
-
return true;
|
|
254
|
-
}
|
|
255
|
-
const grantedScopes = this.oAuthService.getGrantedScopes();
|
|
256
|
-
const configuredScopes = this.configService.config.oAuthSettings.scope.split(' ');
|
|
257
|
-
const diffs = grantedScopes.filter(x => !configuredScopes.includes(x))
|
|
258
|
-
.concat(configuredScopes.filter(x => !grantedScopes.includes(x)));
|
|
259
|
-
if (diffs.length || this.oAuthService.getIdentityClaims()['aud'] !== this.configService.config.oAuthSettings.clientId) {
|
|
260
|
-
this.window.sessionStorage.removeItem('access_token');
|
|
261
|
-
return false;
|
|
262
|
-
}
|
|
263
|
-
return true;
|
|
264
|
-
}
|
|
265
|
-
/** Getting the subdomain from url */
|
|
266
|
-
getSubdomain() {
|
|
267
|
-
const domain = this.window.location.hostname;
|
|
268
|
-
if (domain.indexOf('.') < 0 ||
|
|
269
|
-
domain.split('.')[0] === this.exampleSubdomain || domain.split('.')[0] === this.lvhSubstring || domain.split('.')[0] === this.wwwSubstring) {
|
|
270
|
-
return '';
|
|
271
|
-
}
|
|
272
|
-
else {
|
|
273
|
-
return domain.split('.')[0];
|
|
274
|
-
}
|
|
275
|
-
}
|
|
276
|
-
/**
|
|
277
|
-
* Tries to set up the federated modules when configured
|
|
278
|
-
*/
|
|
279
|
-
trySetUpFederatedModules() {
|
|
280
|
-
if (this.federatedModuleService.isFederatedModule || !this.configService.config.federatedModules || !Object.keys(this.configService.config.federatedModules).length) {
|
|
281
|
-
return false;
|
|
282
|
-
}
|
|
283
|
-
this.window.sessionStorage.setItem(federatedModuleConfigStorageKey, JSON.stringify(this.configService.config.federatedModules));
|
|
284
|
-
return true;
|
|
285
|
-
}
|
|
286
|
-
}
|
|
287
|
-
Initializer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: Initializer, deps: [{ token: i1.HttpClient }, { token: i2.TranslateService }, { token: i3.ThemeService }, { token: i4.BaseConfigService }, { token: i5.OAuthService }, { token: i6.Router }, { token: i7.Location }, { token: i8.FederatedModuleService }, { token: i9.CustomAuthConfigService, optional: true }, { token: WINDOW, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
288
|
-
Initializer.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: Initializer, providedIn: 'root' });
|
|
289
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: Initializer, decorators: [{
|
|
290
|
-
type: Injectable,
|
|
291
|
-
args: [{
|
|
292
|
-
providedIn: 'root'
|
|
293
|
-
}]
|
|
294
|
-
}], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.TranslateService }, { type: i3.ThemeService }, { type: i4.BaseConfigService }, { type: i5.OAuthService }, { type: i6.Router }, { type: i7.Location }, { type: i8.FederatedModuleService }, { type: i9.CustomAuthConfigService, decorators: [{
|
|
295
|
-
type: Optional
|
|
296
|
-
}] }, { type: undefined, decorators: [{
|
|
297
|
-
type: Optional
|
|
298
|
-
}, {
|
|
299
|
-
type: Inject,
|
|
300
|
-
args: [WINDOW]
|
|
301
|
-
}] }]; } });
|
|
302
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5pdGlhbGl6ZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FybWF0dXJlL3NyYy9saWIvY29yZS9pbml0aWFsaXplci9pbml0aWFsaXplci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUc3RCxPQUFPLEVBQUUsVUFBVSxFQUFnQixNQUFNLHFCQUFxQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2pFLE9BQU8sS0FBSyxDQUFDLE1BQU0sUUFBUSxDQUFDO0FBQzVCLE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFjLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUc5RSxPQUFPLEVBQUUsK0JBQStCLEVBQUUsa0JBQWtCLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7Ozs7Ozs7O0FBUTVIOztHQUVHO0FBTUgsTUFBTSxPQUFPLFdBQVc7SUFpQnRCLDhCQUE4QjtJQUM5QixJQUFXLGFBQWE7UUFDdEIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQztJQUNwQyxDQUFDO0lBS0Q7Ozs7Ozs7Ozs7OztPQVlHO0lBQ0gsWUFDbUIsSUFBZ0IsRUFDaEIsZ0JBQWtDLEVBQ2xDLFlBQTBCLEVBQzFCLGFBQWdDLEVBQ2hDLFlBQTBCLEVBQzFCLE1BQWMsRUFDZCxRQUFrQixFQUNsQixzQkFBOEMsRUFDbEMsdUJBQWdELEVBQ3hDLE9BQVk7UUFUaEMsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUNoQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLGtCQUFhLEdBQWIsYUFBYSxDQUFtQjtRQUNoQyxp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QyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUM7UUFDaEksT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDOzt3R0EzU1UsV0FBVyxnVEFnREEsTUFBTTs0R0FoRGpCLFdBQVcsY0FIUixNQUFNOzJGQUdULFdBQVc7a0JBTHZCLFVBQVU7bUJBQ1Q7b0JBQ0UsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkFpREUsUUFBUTs7MEJBQ1IsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgSW5qZWN0YWJsZSwgT3B0aW9uYWwsIEluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xyXG5pbXBvcnQgeyBBdXRoQ29uZmlnLCBPQXV0aFNlcnZpY2UgfSBmcm9tICdhbmd1bGFyLW9hdXRoMi1vaWRjJztcclxuaW1wb3J0IHsgSndrc1ZhbGlkYXRpb25IYW5kbGVyIH0gZnJvbSAnYW5ndWxhci1vYXV0aDItb2lkYy1qd2tzJztcclxuaW1wb3J0ICogYXMgXyBmcm9tICdsb2Rhc2gnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGxhc3RWYWx1ZUZyb20sIE9ic2VydmFibGUsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcclxuXHJcbmltcG9ydCB7IFRoZW1lU2VydmljZSB9IGZyb20gJy4uLy4uL3RoZW1pbmcvc2VydmljZXMvdGhlbWUuc2VydmljZSc7XHJcbmltcG9ydCB7IGZlZGVyYXRlZE1vZHVsZUNvbmZpZ1N0b3JhZ2VLZXksIGxhbmd1YWdlU3RvcmFnZUtleSwgcHJlU2lnbkluUm91dGVTdG9yYWdlS2V5LCBXSU5ET1cgfSBmcm9tICcuLi9tb2RlbHMvY29uc3RhbnRzJztcclxuaW1wb3J0IHsgT2lkY0F1dGhTZXR0aW5ncyB9IGZyb20gJy4uL21vZGVscy9vaWRjLWF1dGgtc2V0dGluZ3MnO1xyXG5pbXBvcnQgeyBCYXNlQ29uZmlnU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2Jhc2UtY29uZmlnLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDdXN0b21BdXRoQ29uZmlnU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2N1c3RvbS1hdXRoLWNvbmZpZy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgTG9jYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBGZWRlcmF0ZWRNb2R1bGVTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvZmVkZXJhdGVkLW1vZHVsZS5zZXJ2aWNlJztcclxuXHJcbi8qKlxyXG4gKiBUaGUgc3RhcnR1cCBzZXJ2aWNlIGlzIHVzZWQgdG8gY2FsbCBtZXRob2RzIHRoYXQgc2hvdWxkIGJlIHJ1biB3aGVuIGluaXRpYWxseSBsb2FkaW5nIHRoZSBhcHBsaWNhdGlvblxyXG4gKi9cclxuQEluamVjdGFibGUoXHJcbiAge1xyXG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbiAgfVxyXG4pXHJcbmV4cG9ydCBjbGFzcyBJbml0aWFsaXplciB7XHJcblxyXG4gIC8qKiBUaGUgY29uZmlndXJhdGlvbiBiZWhhdmlvciBzdWJqZWN0ICovXHJcbiAgcHJpdmF0ZSByZWFkb25seSBpc0luaXRpYWxpemVkQnM6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xyXG5cclxuICAvKiogVGhlIGJyb3dzZXIgd2luZG93ICovXHJcbiAgcHJpdmF0ZSByZWFkb25seSB3aW5kb3c6IFdpbmRvdztcclxuXHJcbiAgLyoqIFRoZSBleGFtcGxlIHRoZSBzdWJkb21haW4gc3Vic3RyaW5nICovXHJcbiAgcHJpdmF0ZSByZWFkb25seSBleGFtcGxlU3ViZG9tYWluOiBzdHJpbmcgPSAnZXhhbXBsZSc7XHJcblxyXG4gIC8qKiBUaGUgd3d3IHN1YnN0cmluZyBmb3Igc3ViZG9tYWluIHJvdXRlIGZpbmRpbmcgKi9cclxuICBwcml2YXRlIHJlYWRvbmx5IHd3d1N1YnN0cmluZzogc3RyaW5nID0gJ3d3dyc7XHJcblxyXG4gIC8qKiBUaGUgbHZoIHN1YnN0cmluZyBmb3Igc3ViZG9tYWluIHJvdXRlIGZpbmRpbmcgKi9cclxuICBwcml2YXRlIHJlYWRvbmx5IGx2aFN1YnN0cmluZzogc3RyaW5nID0gJ2x2aCdcclxuXHJcbiAgLyoqIEdldHMgdGhlIGNvbmZpZ3VyYXRpb25zICovXHJcbiAgcHVibGljIGdldCBpc0luaXRpYWxpemVkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaXNJbml0aWFsaXplZEJzLnZhbHVlO1xyXG4gIH1cclxuXHJcbiAgLyoqIFRoZSBjb25maWd1cmF0aW9uIG9ic2VydmFibGUgKi9cclxuICBwdWJsaWMgcmVhZG9ubHkgaXNJbml0aWFsaXplZCQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XHJcblxyXG4gIC8qKlxyXG4gICAqIENvbnN0cnVjdHMgdGhlIHN0YXJ0dXAgc2VydmljZS4gSW5jbHVkZSBhbnkgc2VydmljZXMgdGhhdCBzaG91bGQgYmUgdXNlZCBkdXJpbmcgc3RhcnR1cFxyXG4gICAqIEBwYXJhbSBodHRwIFRoZSBodHRwIGNsaWVudFxyXG4gICAqIEBwYXJhbSB0cmFuc2xhdGVTZXJ2aWNlIFRoZSB0cmFuc2xhdGUgc2VydmljZVxyXG4gICAqIEBwYXJhbSB0aGVtZVNlcnZpY2UgVGhlIHRoZW1lIHNlcnZpY2VcclxuICAgKiBAcGFyYW0gY29uZmlnU2VydmljZSBUaGUgY29uZmlnIHNlcnZpY2VcclxuICAgKiBAcGFyYW0gb0F1dGhTZXJ2aWNlIFRoZSBvYXV0aCBzZXJ2aWNlXHJcbiAgICogQHBhcmFtIHJvdXRlciBUaGUgcm91dGVyXHJcbiAgICogQHBhcmFtIGxvY2F0aW9uIFRoZSBsb2NhdGlvblxyXG4gICAqIEBwYXJhbSBmZWRlcmF0ZWRNb2R1bGVTZXJ2aWNlIFRoZSBmZWRlcmF0ZWQgbW9kdWxlIHNlcnZpY2VcclxuICAgKiBAcGFyYW0gY3VzdG9tQXV0aENvbmZpZ1NlcnZpY2UgVGhlIGN1c3RvbSBhdXRoIGNvbmZpZyBzZXJ2aWNlXHJcbiAgICogQHBhcmFtIF93aW5kb3cgVGhlIHdpbmRvdyBpbmplY3Rpb25cclxuICAgKi9cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgaHR0cDogSHR0cENsaWVudCxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgdGhlbWVTZXJ2aWNlOiBUaGVtZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvbmZpZ1NlcnZpY2U6IEJhc2VDb25maWdTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBvQXV0aFNlcnZpY2U6IE9BdXRoU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGxvY2F0aW9uOiBMb2NhdGlvbixcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgZmVkZXJhdGVkTW9kdWxlU2VydmljZTogRmVkZXJhdGVkTW9kdWxlU2VydmljZSxcclxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgcmVhZG9ubHkgY3VzdG9tQXV0aENvbmZpZ1NlcnZpY2U6IEN1c3RvbUF1dGhDb25maWdTZXJ2aWNlLFxyXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChXSU5ET1cpIHJlYWRvbmx5IF93aW5kb3c6IGFueVxyXG4gICkge1xyXG4gICAgdGhpcy5pc0luaXRpYWxpemVkJCA9IHRoaXMuaXNJbml0aWFsaXplZEJzLmFzT2JzZXJ2YWJsZSgpO1xyXG4gICAgdGhpcy53aW5kb3cgPSBfd2luZG93IHx8IHdpbmRvdztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIExvYWRzIGFsbCBkYXRhIHRoYXQgaXMgbmVlZGVkIHVwb24gaW5pdGlhbCBsb2FkaW5nIG9mIHRoZSB3ZWJzaXRlXHJcbiAgICovXHJcbiAgcHVibGljIGFzeW5jIGluaXRpYWxpemUoKTogUHJvbWlzZTxhbnk+IHtcclxuICAgIC8vIHJlYWRzIHRoZSBsYW5ndWFnZSBmcm9tIGxvY2FsIHN0b3JhZ2Ugc2V0IGluIHRoZSBwYXJlbnQgYXBwXHJcbiAgICAvLyBsYW5ndWFnZSBsb2FkaW5nXHJcblxyXG4gICAgLy8gU2V0IGxhbmd1YWdlcyBmb3IgdHJhbnNsYXRpb24gc2VydmljZVxyXG4gICAgY29uc3QgbGFuZyA9IHRoaXMud2luZG93LmxvY2FsU3RvcmFnZS5nZXRJdGVtKGxhbmd1YWdlU3RvcmFnZUtleSkgfHwgdGhpcy53aW5kb3cuc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShsYW5ndWFnZVN0b3JhZ2VLZXkpIHx8ICdlbic7XHJcbiAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2Uuc2V0RGVmYXVsdExhbmcobGFuZyk7XHJcbiAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UudXNlKGxhbmcpO1xyXG5cclxuICAgIC8vIEFkYXB0ZWQgZnJvbSBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL2EvNDE2MzY4ODBcclxuICAgIC8vIEFkYXB0ZWQgZnJvbSBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL2EvNDE3MzYyOTNcclxuXHJcbiAgICAvLyBBIGNhbGxiYWNrIHVzZWQgdG8gaW5pdGlhbGl6ZSB0aGUgcHJvbWlzZS4gVGhpcyBjYWxsYmFjayBpcyBwYXNzZWQgdHdvIGFyZ3VtZW50czpcclxuICAgIC8vIGEgcmVzb2x2ZSBjYWxsYmFjayB1c2VkIHJlc29sdmUgdGhlIHByb21pc2Ugd2l0aCBhIHZhbHVlIG9yIHRoZSByZXN1bHQgb2YgYW5vdGhlciBwcm9taXNlLFxyXG4gICAgLy8gYW5kIGEgcmVqZWN0IGNhbGxiYWNrIHVzZWQgdG8gcmVqZWN0IHRoZSBwcm9taXNlIHdpdGggYSBwcm92aWRlZCByZWFzb24gb3IgZXJyb3IuXHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoYXN5bmMgKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICAvLyBHbyB0aHJvdWdoIGFsbCBzZXJ2aWNlcyBhbmQgY29tcGxldGUgYW55IEFQSSBjYWxscyBuZWNlc3NhcnkuXHJcbiAgICAgIC8vIEF0IHRoZSBlbmQsIGlmIGFsbCB3b3JrcyBhbmQgbG9hZHMgYXMgZXhwZWN0ZWQsIHJlc29sdmUgdGhlIHByb21pc2UgYW5kIHNldCBzdGFydHVwIHN1Y2Nlc3MgdG8gdHJ1ZS5cclxuICAgICAgLy8gSWYgYW4gaXNzdWUgaXMgZW5jb3VudGVyZWQsIHlvdSBjYW4gY2FsbCByZWplY3QoKSB0byBoaXQgdGhlIGNhdGNoKCkgY29kZSBiZWxvdy5cclxuXHJcbiAgICAgIC8vIEZpcnN0LCBsb2FkIHRoZSBjb25maWd1cmF0aW9uc1xyXG4gICAgICBjb25zdCBhc3NldFBhcnRpYWwgPSAhdGhpcy5mZWRlcmF0ZWRNb2R1bGVTZXJ2aWNlLmlzRmVkZXJhdGVkTW9kdWxlID8gJy4vYXNzZXRzJyA6IGAuL2Fzc2V0cy9mZWRlcmF0aW9uLyR7dGhpcy5mZWRlcmF0ZWRNb2R1bGVTZXJ2aWNlLmZlZGVyYXRlZE1vZHVsZUlkfS9hc3NldHNgO1xyXG4gICAgICBsZXQgW2Jhc2VDb25maWcsIG92ZXJyaWRlQ29uZmlnLCBiYXNlTGFuZywgb3ZlcnJpZGVMYW5nLCB0aGVtZV0gPSBbSlNPTiwgSlNPTiwgSlNPTiwgSlNPTiwgSlNPTl07XHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgW2Jhc2VDb25maWcsIG92ZXJyaWRlQ29uZmlnLCBiYXNlTGFuZywgb3ZlcnJpZGVMYW5nLCB0aGVtZV0gPSBhd2FpdCBQcm9taXNlLmFsbChbXHJcbiAgICAgICAgICB0aGlzLmh0dHAuZ2V0PEpTT04+KGAke2Fzc2V0UGFydGlhbH0vYmFzZWxpbmUvYXBwc2V0dGluZ3MuanNvbmApLnRvUHJvbWlzZSgpLFxyXG4gICAgICAgICAgdGhpcy5odHRwLmdldDxKU09OPihgJHthc3NldFBhcnRpYWx9L2NvbmZpZ3VyYXRpb25zL2FwcHNldHRpbmdzLmpzb25gKS50b1Byb21pc2UoKSxcclxuICAgICAgICAgIHRoaXMuaHR0cC5nZXQ8SlNPTj4oYCR7YXNzZXRQYXJ0aWFsfS9pMThuLyR7dGhpcy50cmFuc2xhdGVTZXJ2aWNlLmN1cnJlbnRMYW5nfS5qc29uYCkudG9Qcm9taXNlKCksXHJcbiAgICAgICAgICB0aGlzLmh0dHAuZ2V0PEpTT04+KGAke2Fzc2V0UGFydGlhbH0vY29uZmlndXJhdGlvbnMvJHt0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuY3VycmVudExhbmd9Lmpzb25gKS50b1Byb21pc2UoKSxcclxuICAgICAgICAgIHRoaXMuaHR0cC5nZXQ8SlNPTj4oYCR7YXNzZXRQYXJ0aWFsfS9jb25maWd1cmF0aW9ucy90aGVtZS5qc29uYCkudG9Qcm9taXNlKClcclxuICAgICAgICBdKTtcclxuICAgICAgICB0aGlzLmNvbmZpZ1NlcnZpY2UuY29uZmlnID0gXy5tZXJnZVdpdGgoYmFzZUNvbmZpZywgb3ZlcnJpZGVDb25maWcsIHRoaXMubWVyZ2VDdXN0b21pemVyKTtcclxuICAgICAgICBjb25zdCBtZXJnZWRMYW5ndWFnZSA9IF8ubWVyZ2VXaXRoKGJhc2VMYW5nLCBvdmVycmlkZUxhbmcsIHRoaXMubWVyZ2VDdXN0b21pemVyKTtcclxuICAgICAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2Uuc2V0VHJhbnNsYXRpb24odGhpcy50cmFuc2xhdGVTZXJ2aWNlLmN1cnJlbnRMYW5nLCBtZXJnZWRMYW5ndWFnZSk7XHJcblxyXG4gICAgICAgIGNvbnN0IGNvbmZpZ3VyZVBhcnRpYWwgPSAodCkgPT4ge1xyXG4gICAgICAgICAgY29uc3QgY29uZmlnU25hcFNob3QgPSB0aGlzLmNvbmZpZ1NlcnZpY2UuY29uZmlnO1xyXG4gICAgICAgICAgY29uZmlnU25hcFNob3QudGhlbWUgPSB0IGFzIGFueTtcclxuICAgICAgICAgIHRoaXMuY29uZmlnU2VydmljZS5jb25maWcgPSBjb25maWdTbmFwU2hvdDtcclxuICAgICAgICAgIHRoaXMudGhlbWVTZXJ2aWNlLmluaXRQYWxldHRlKHQgYXMgYW55KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3Qgc3ViZG9tYWluID0gdGhpcy5nZXRTdWJkb21haW4oKTtcclxuICAgICAgICBpZiAoc3ViZG9tYWluICYmIHRoaXMuY29uZmlnU2VydmljZS5jb25maWcuc3ViZG9tYWluKSB7XHJcbiAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBsZXQgW3N1YmRvbWFpbkNvbmZpZ3MsIHN1YmRvbWFpbkxhbmd1YWdlLCBzdWJkb21haW5UaGVtZV0gPSBhd2FpdCBQcm9taXNlLmFsbChbXHJcbiAgICAgICAgICAgICAgbGFzdFZhbHVlRnJvbSh0aGlzLmh0dHAuZ2V0PEpTT04+KGAke2Fzc2V0UGFydGlhbH0vY29uZmlndXJhdGlvbnMvJHtzdWJkb21haW59LiR7dGhpcy50cmFuc2xhdGVTZXJ2aWNlLmN1cnJlbnRMYW5nfS5qc29uYCkpLFxyXG4gICAgICAgICAgICAgIGxhc3RWYWx1ZUZyb20odGhpcy5odHRwLmdldDxKU09OPihgJHthc3NldFBhcnRpYWx9L2NvbmZpZ3VyYXRpb25zLyR7c3ViZG9tYWlufS5hcHBzZXR0aW5ncy5qc29uYCkpLFxyXG4gICAgICAgICAgICAgIGxhc3RWYWx1ZUZyb20odGhpcy5odHRwLmdldDxKU09OPihgJHthc3NldFBhcnRpYWx9L2NvbmZpZ3VyYXRpb25zLyR7c3ViZG9tYWlufS50aGVtZS5qc29uYCkpXHJcbiAgICAgICAgICAgIF0pO1xyXG4gICAgICAgICAgICB0aGlzLmNvbmZpZ1NlcnZpY2UuY29uZmlnID0gXy5tZXJnZVdpdGgodGhpcy5jb25maWdTZXJ2aWNlLmNvbmZpZywgc3ViZG9tYWluQ29uZmlncywgdGhpcy5tZXJnZUN1c3RvbWl6ZXIpO1xyXG4gICAgICAgICAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2Uuc2V0VHJhbnNsYXRpb24odGhpcy50cmFuc2xhdGVTZXJ2aWNlLmN1cnJlbnRMYW5nLCBfLm1lcmdlV2l0aChtZXJnZWRMYW5ndWFnZSwgc3ViZG9tYWluTGFuZ3VhZ2UsIHRoaXMubWVyZ2VDdXN0b21pemVyKSk7XHJcbiAgICAgICAgICAgIGNvbnN0IG1lcmdlZFRoZW1lID0gXy5tZXJnZVdpdGgodGhlbWUsIHN1YmRvbWFpblRoZW1lLCB0aGlzLm1lcmdlQ3VzdG9taXplcik7XHJcbiAgICAgICAgICAgIGNvbmZpZ3VyZVBhcnRpYWwobWVyZ2VkVGhlbWUpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuY29uZmlnU2VydmljZS5jb25maWcuc3ViZG9tYWluICYmIHRoaXMuY29uZmlnU2VydmljZS5jb25maWcuc3ViZG9tYWluLnN1YmRvbWFpbnMubGVuZ3RoICYmICF0aGlzLmNvbmZpZ1NlcnZpY2UuY29uZmlnLnN1YmRvbWFpbi5zdWJkb21haW5zLmluY2x1ZGVzKHN1YmRvbWFpbikpIHtcclxuICAgICAgICAgICAgICB0aGlzLnJvdXRlci5kaXNwb3NlKCk7XHJcbiAgICAgICAgICAgICAgY29uc3QgZXJyb3IgPSBgSW52YWxpZCBzdWJkb21haW46ICR7c3ViZG9tYWlufWA7XHJcbiAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XHJcbiAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmICh0aGlzLmNvbmZpZ1NlcnZpY2UuY29uZmlnLnN1YmRvbWFpbj8ucmVxdWlyZUNvbmZpZ3VyZWRTdWJkb21haW4gJiYgdGhpcy5jb25maWdTZXJ2aWNlLmNvbmZpZy5zdWJkb21haW4/LnN1YmRvbWFpbnMuaW5jbHVkZXMoc3ViZG9tYWluKSkge1xyXG4gICAgICAgICAgICAgIHRoaXMucm91dGVyLmRpc3Bvc2UoKTtcclxuICAgICAgICAgICAgICBjb25zdCBlcnJvciA9IGBDb25maWd1cmVkIHN1YmRvbWFpbjogJHtzdWJkb21haW59IGRvZXMgbm90IGhhdmUgYW55IHN1YmRvbWFpbiBzcGVjaWZpYyBjb25maWd1cmF0aW9uc2A7XHJcbiAgICAgICAgICAgICAgcmVqZWN0KGVycm9yKTtcclxuICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcclxuICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbmZpZ3VyZVBhcnRpYWwodGhlbWUpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIGNvbmZpZ3VyZVBhcnRpYWwodGhlbWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnRyeVNldFVwRmVkZXJhdGVkTW9kdWxlcygpO1xyXG4gICAgICB9XHJcbiAgICAgIGNhdGNoIChlcnJvcikge1xyXG4gICAgICAgIC8vIENhdGNoIGFueSBlcnJvcnMgZHVyaW5nIHRoZSBnZXQgY29uZmlndXJhdGlvbnMgQVBJIGNhbGxcclxuICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBMb2FkaW5nIENvbmZpZ3VyYXRpb25zIG9yIExhbmd1YWdlcycpO1xyXG4gICAgICAgIC8vIFJlamVjdCB0aGUgcHJvbWlzZVxyXG4gICAgICAgIHJlamVjdCgnZXJyb3InKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXJyb3IuZXJyb3IgfHwgJ1NlcnZlciBlcnJvcicpO1xyXG4gICAgICB9XHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgaWYgKHRoaXMuY3VzdG9tQXV0aENvbmZpZ1NlcnZpY2UpIHtcclxuICAgICAgICAgIGF3YWl0IHRoaXMuY3VzdG9tQXV0aENvbmZpZ1NlcnZpY2UuY29uZmlndXJlQXV0aFNldHRpbmdzKCkudGhlbihhdXRoQ29uZmlnID0+IHtcclxuICAgICAgICAgICAgaWYgKGF1dGhDb25maWcpIHtcclxuICAgICAgICAgICAgICBjb25zdCBjb25maWcgPSB0aGlzLmNvbmZpZ1NlcnZpY2UuY29uZmlnLm9BdXRoU2V0dGluZ3M7XHJcblxyXG4gICAgICAgICAgICAgIHJldHVybiB0aGlzLmxvZ2luKGNvbmZpZyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShmYWxzZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIGNvbnN0IG9BdXRoID0gYXdhaXQgdGhpcy5zZXRVcE9BdXRoKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGNhdGNoIChlcnJvcikge1xyXG4gICAgICAgIHJlamVjdChlcnJvcik7XHJcblxyXG4gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVycm9yKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gTmF2aWdhdGUgdG8gdGhlIHJlcXVlc3RlZCByb3V0ZVxyXG4gICAgICBpZiAodGhpcy5jb25maWdTZXJ2aWNlLmNvbmZpZy5vQXV0aFNldHRpbmdzPy5wcmVzZXJ2ZVJvdXRlKSB7XHJcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCh0aGlzLm9BdXRoU2VydmljZS5zdGF0ZSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuaXNJbml0aWFsaXplZEJzLm5leHQodHJ1ZSk7XHJcbiAgICAgIHJlc29sdmUodHJ1ZSk7XHJcbiAgICB9KS5jYXRjaCgoZXJyb3IpID0+IHtcclxuICAgICAgLy8gQ2F0Y2ggdGhlIGVycm9yXHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ1RoZXJlIHdhcyBhbiBlcnJvciBsb2FkaW5nIHRoZSBzdGFydHVwIGNvbmZpZ3VyYXRpb25zLicpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDb25maWd1cmUgaW1wbGljaXQgZmxvd1xyXG4gICAqL1xyXG4gIHByaXZhdGUgYXN5bmMgc2V0VXBPQXV0aCgpOiBQcm9taXNlPGJvb2xlYW4+IHtcclxuICAgIGlmICh0aGlzLmNvbmZpZ1NlcnZpY2UuY29uZmlnPy5vQXV0aFNldHRpbmdzPy5pc3N1ZXIpIHtcclxuICAgICAgY29uc3QgY29uZmlnID0gdGhpcy5jb25maWdTZXJ2aWNlLmNvbmZpZy5vQXV0aFNldHRpbmdzO1xyXG4gICAgICBjb25zdCBhdXRoQ29uZmlnID0gbmV3IEF1dGhDb25maWcoe1xyXG4gICAgICAgIGNsaWVudElkOiBjb25maWcuY2xpZW50SWQsXHJcbiAgICAgICAgcmVkaXJlY3RVcmk6IGNvbmZpZy5yZWRpcmVjdFVyaSxcclxuICAgICAgICBpc3N1ZXI6IGNvbmZpZy5pc3N1ZXIsXHJcbiAgICAgICAgc2NvcGU6IGNvbmZpZy5zY29wZSxcclxuICAgICAgICBza2lwSXNzdWVyQ2hlY2s6IGNvbmZpZy5za2lwSXNzdWVyQ2hlY2sgIT0gdW5kZWZpbmVkID8gY29uZmlnLnNraXBJc3N1ZXJDaGVjayA6IHRydWUsXHJcbiAgICAgICAgdGltZW91dEZhY3RvcjogY29uZmlnLnRpbWVvdXRGYWN0b3IgfHwgMC43NSxcclxuICAgICAgICBwb3N0TG9nb3V0UmVkaXJlY3RVcmk6IGNvbmZpZy5wb3N0TG9nb3V0UmVkaXJlY3RVcmksXHJcbiAgICAgICAgbG9naW5Vcmw6IGNvbmZpZy5sb2dpblVybCxcclxuICAgICAgICBzdHJpY3REaXNjb3ZlcnlEb2N1bWVudFZhbGlkYXRpb246IGZhbHNlLFxyXG4gICAgICAgIHJlc3BvbnNlVHlwZTogY29uZmlnLnJlc3BvbnNlVHlwZSB8fCAnY29kZSdcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMub0F1dGhTZXJ2aWNlLmNvbmZpZ3VyZShhdXRoQ29uZmlnKTtcclxuICAgICAgdGhpcy5vQXV0aFNlcnZpY2Uuc2tpcElzc3VlckNoZWNrID0gdHJ1ZTtcclxuICAgICAgdGhpcy5vQXV0aFNlcnZpY2UucmVzcG9uc2VUeXBlID0gY29uZmlnLnJlc3BvbnNlVHlwZSB8fCAnY29kZSc7XHJcbiAgICAgIHRoaXMub0F1dGhTZXJ2aWNlLnN0cmljdERpc2NvdmVyeURvY3VtZW50VmFsaWRhdGlvbiA9IGZhbHNlO1xyXG4gICAgICB0aGlzLm9BdXRoU2VydmljZS50b2tlblZhbGlkYXRpb25IYW5kbGVyID0gbmV3IEp3a3NWYWxpZGF0aW9uSGFuZGxlcigpO1xyXG4gICAgICB0aGlzLm9BdXRoU2VydmljZS50aW1lb3V0RmFjdG9yID0gMC43NTtcclxuICAgICAgdGhpcy5vQXV0aFNlcnZpY2Uuc2V0dXBBdXRvbWF0aWNTaWxlbnRSZWZyZXNoKHt9LCAnYWNjZXNzX3Rva2VuJyk7XHJcblxyXG4gICAgICAvLyBzZXQgaW5pdGlhbGl6ZWQgb24gc3RhcnQgdXAgdG8gdHJ1ZVxyXG4gICAgICBjb25maWcuYXV0aFNldE9uU3RhcnR1cCA9IHRydWU7XHJcbiAgICAgIGNvbnN0IHBhcmVudENvbmZpZyA9IHRoaXMuY29uZmlnU2VydmljZS5jb25maWc7XHJcbiAgICAgIHBhcmVudENvbmZpZy5vQXV0aFNldHRpbmdzID0gY29uZmlnO1xyXG4gICAgICB0aGlzLmNvbmZpZ1NlcnZpY2UuY29uZmlnID0gcGFyZW50Q29uZmlnO1xyXG5cclxuICAgICAgcmV0dXJuIHRoaXMubG9naW4oY29uZmlnKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRydWUpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSGFuZGxlIExvZ2luXHJcbiAgICogQHBhcmFtIGNvbmZpZyBUaGUgT2lkYyBBdXRoIFNldHRpbmdzXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBhc3luYyBsb2dpbihjb25maWc6IE9pZGNBdXRoU2V0dGluZ3MpOiBQcm9taXNlPGJvb2xlYW4+IHtcclxuICAgIGNvbnN0IGlzVmFsaWQgPSB0aGlzLnZhbGlkYXRlRXhpc3RpbmdUb2tlbkFnYWluc3RDb25maWdzKCk7XHJcbiAgICBjb25zdCBwcmVzZXJ2ZWRSb3V0ZSA9IHRoaXMud2luZG93LnNlc3Npb25TdG9yYWdlLmdldEl0ZW0ocHJlU2lnbkluUm91dGVTdG9yYWdlS2V5KTtcclxuICAgIGlmICghcHJlc2VydmVkUm91dGUpIHtcclxuICAgICAgdGhpcy53aW5kb3cuc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbShwcmVTaWduSW5Sb3V0ZVN0b3JhZ2VLZXksIHRoaXMubG9jYXRpb24ucGF0aCgpKTtcclxuICAgIH1cclxuICAgIGlmIChjb25maWcucmVxdWlyZUxvZ2luT25TdGFydHVwIHx8ICFpc1ZhbGlkKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLm9BdXRoU2VydmljZS5sb2FkRGlzY292ZXJ5RG9jdW1lbnRBbmRMb2dpbih7c3RhdGU6IHRoaXMubG9jYXRpb24ucGF0aCgpfSlcclxuICAgICAgICAvLyBoYW5kbGVzIHRoZSBjYXNlIGZvciBleHBpcmVkIGFjY2VzcyB0b2tlbiBvciBpbnZhbGlkIG5vbmNlIG9yIHBlb3BsZSBib29rbWFya2luZyB0aGUgaWRzIGxvZ2luIHBhZ2VcclxuICAgICAgICAuY2F0Y2goYXN5bmMgKHJlcykgPT4ge1xyXG4gICAgICAgICAgdGhpcy5vQXV0aFNlcnZpY2UuaW5pdExvZ2luRmxvdyh0aGlzLmxvY2F0aW9uLnBhdGgoKSk7XHJcblxyXG4gICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh0cnVlKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICByZXR1cm4gdGhpcy5vQXV0aFNlcnZpY2UubG9hZERpc2NvdmVyeURvY3VtZW50QW5kVHJ5TG9naW4oKVxyXG4gICAgICAgIC8vIGhhbmRsZXMgdGhlIGNhc2UgZm9yIGV4cGlyZWQgYWNjZXNzIHRva2VuIG9yIGludmFsaWQgbm9uY2Ugb3IgcGVvcGxlIGJvb2ttYXJraW5nIHRoZSBpZHMgbG9naW4gcGFnZVxyXG4gICAgICAgIC5jYXRjaChhc3luYyAocmVzKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLm9BdXRoU2VydmljZS5pbml0TG9naW5GbG93KCk7XHJcblxyXG4gICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh0cnVlKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1lcmdlcyB0aGUgdHdvIGNvbmZpZyBvYmplY3RzIGlnbm9yaW5nIHRoZSBhcnJheSB0eXBlXHJcbiAgICogQHBhcmFtIG9ialZhbHVlIFRoZSBkZWZhdWx0IGNvbmZpZyB2YWx1ZVxyXG4gICAqIEBwYXJhbSBzcmNWYWx1ZSBUaGUgdGFyZ2V0IHN3aXRjaGJvYXJkIGNvbmZpZyB2YWx1ZVxyXG4gICAqIEByZXR1cm5zIFRoZSBtZXJnZSBvZiB0aGUgdHdvIGNvbmZpZ3MgcHJvdmlkZWRcclxuICAgKi9cclxuICBwcml2YXRlIG1lcmdlQ3VzdG9taXplcihvYmpWYWx1ZTogYW55LCBzcmNWYWx1ZTogYW55KTogYW55IHtcclxuICAgIGlmIChfLmlzQXJyYXkob2JqVmFsdWUpICYmIHNyY1ZhbHVlKSB7XHJcbiAgICAgIHJldHVybiBzcmNWYWx1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFZhbGlkYXRlcyB0aGUgZXhpc3RpbmcgdG9rZW4gYWdhaW5zdCB0aGUgY29uZmlndXJhdGlvbnNcclxuICAgKiBAcmV0dXJucyB0cnVlIHdoZW4gdG9rZW4gaXMgdmFsaWRcclxuICAgKi9cclxuICBwcml2YXRlIHZhbGlkYXRlRXhpc3RpbmdUb2tlbkFnYWluc3RDb25maWdzKCk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKHRoaXMuY29uZmlnU2VydmljZS5jb25maWcub0F1dGhTZXR0aW5ncy5kaXNhYmxlU3RhcnR1cFRva2VuVmFsaWRhdGlvbikge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICAgIGlmICghdGhpcy53aW5kb3cuc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgnYWNjZXNzX3Rva2VuJykpIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgICBjb25zdCBncmFudGVkU2NvcGVzOiBBcnJheTxzdHJpbmc+ID0gIHRoaXMub0F1dGhTZXJ2aWNlLmdldEdyYW50ZWRTY29wZXMoKSBhcyBBcnJheTxzdHJpbmc+O1xyXG4gICAgY29uc3QgY29uZmlndXJlZFNjb3BlcyA9IHRoaXMuY29uZmlnU2VydmljZS5jb25maWcub0F1dGhTZXR0aW5ncy5zY29wZS5zcGxpdCgnICcpO1xyXG4gICAgY29uc3QgZGlmZnMgPSBncmFudGVkU2NvcGVzLmZpbHRlcih4ID0+ICFjb25maWd1cmVkU2NvcGVzLmluY2x1ZGVzKHgpKVxyXG4gICAgICAuY29uY2F0KGNvbmZpZ3VyZWRTY29wZXMuZmlsdGVyKHggPT4gIWdyYW50ZWRTY29wZXMuaW5jbHVkZXMoeCkpKTtcclxuICAgIGlmIChkaWZmcy5sZW5ndGggfHwgdGhpcy5vQXV0aFNlcnZpY2UuZ2V0SWRlbnRpdHlDbGFpbXMoKVsnYXVkJ10gIT09IHRoaXMuY29uZmlnU2VydmljZS5jb25maWcub0F1dGhTZXR0aW5ncy5jbGllbnRJZCkge1xyXG4gICAgICB0aGlzLndpbmRvdy5zZXNzaW9uU3RvcmFnZS5yZW1vdmVJdGVtKCdhY2Nlc3NfdG9rZW4nKTtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICAvKiogR2V0dGluZyB0aGUgc3ViZG9tYWluIGZyb20gdXJsICovXHJcbiAgcHJpdmF0ZSBnZXRTdWJkb21haW4oKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IGRvbWFpbiA9IHRoaXMud2luZG93LmxvY2F0aW9uLmhvc3RuYW1lO1xyXG4gICAgaWYgKGRvbWFpbi5pbmRleE9mKCcuJykgPCAwIHx8XHJcbiAgICAgIGRvbWFpbi5zcGxpdCgnLicpWzBdID09PSB0aGlzLmV4YW1wbGVTdWJkb21haW4gfHwgZG9tYWluLnNwbGl0KCcuJylbMF0gPT09IHRoaXMubHZoU3Vic3RyaW5nIHx8IGRvbWFpbi5zcGxpdCgnLicpWzBdID09PSB0aGlzLnd3d1N1YnN0cmluZykge1xyXG4gICAgICByZXR1cm4gJyc7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gZG9tYWluLnNwbGl0KCcuJylbMF07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBUcmllcyB0byBzZXQgdXAgdGhlIGZlZGVyYXRlZCBtb2R1bGVzIHdoZW4gY29uZmlndXJlZFxyXG4gICAqL1xyXG4gIHByaXZhdGUgdHJ5U2V0VXBGZWRlcmF0ZWRNb2R1bGVzKCk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKHRoaXMuZmVkZXJhdGVkTW9kdWxlU2VydmljZS5pc0ZlZGVyYXRlZE1vZHVsZSB8fCAhdGhpcy5jb25maWdTZXJ2aWNlLmNvbmZpZy5mZWRlcmF0ZWRNb2R1bGVzIHx8ICFPYmplY3Qua2V5cyh0aGlzLmNvbmZpZ1NlcnZpY2UuY29uZmlnLmZlZGVyYXRlZE1vZHVsZXMpLmxlbmd0aCkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICB0aGlzLndpbmRvdy5zZXNzaW9uU3RvcmFnZS5zZXRJdGVtKGZlZGVyYXRlZE1vZHVsZUNvbmZpZ1N0b3JhZ2VLZXksIEpTT04uc3RyaW5naWZ5KHRoaXMuY29uZmlnU2VydmljZS5jb25maWcuZmVkZXJhdGVkTW9kdWxlcykpO1xyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcm1hdHVyZS9zcmMvbGliL2NvcmUvbW9kZWxzL2Jhc2UtY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUaGVtZVBhbGV0dGVNb2RlbCB9IGZyb20gJy4uL2NsaWVudC1nZW5lcmF0ZWQvbW9kZWwvdGhlbWVQYWxldHRlTW9kZWwnO1xyXG5pbXBvcnQgeyBGZWRlcmF0ZWRNb2R1bGVDb25maWcgfSBmcm9tICcuL2ZlZGVyYXRlZC1tb2R1bGUtY29uZmlnJztcclxuaW1wb3J0IHsgSGVhZGVyQ29uZmlnIH0gZnJvbSAnLi9oZWFkZXItY29uZmlnJztcclxuaW1wb3J0IHsgTmF2aWdhdGlvbkNvbmZpZyB9IGZyb20gJy4vbmF2aWdhdGlvbi1jb25maWcnO1xyXG5pbXBvcnQgeyBPaWRjQXV0aFNldHRpbmdzIH0gZnJvbSAnLi9vaWRjLWF1dGgtc2V0dGluZ3MnO1xyXG5pbXBvcnQgeyBTdWJkb21haW5Db25maWcgfSBmcm9tICcuL3N1YmRvbWFpbi1jb25maWcnO1xyXG5cclxuLyoqIFRoZSBiYXNlIGNvbmZpZ3VyYXRpb24gaW50ZXJmYWNlICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgQmFzZUNvbmZpZyB7XHJcbiAgICAvKiogVGhlIG9pZGMgc2V0dGluZ3MgKi9cclxuICAgIG9BdXRoU2V0dGluZ3M6IE9pZGNBdXRoU2V0dGluZ3M7XHJcblxyXG4gICAgLyoqIFRoZSBoZWFkZXIgY29uZmlndXJhdGlvbnMgKi9cclxuICAgIGhlYWRlcjogSGVhZGVyQ29uZmlnO1xyXG5cclxuICAgIC8qKiBUaGUgdGhlbWUgcGFsZXR0ZSAqL1xyXG4gICAgdGhlbWU6IFRoZW1lUGFsZXR0ZU1vZGVsO1xyXG5cclxuICAgIC8qKiBUaGUgbmF2aWdhdGlvbiBjb25maWcgKi9cclxuICAgIG5hdmlnYXRpb246IE5hdmlnYXRpb25Db25maWc7XHJcblxyXG4gICAgLyoqIFRoZSBzdWIgZG9tYWluIGNvbmZpZ3VyYXRpb25zICovXHJcbiAgICBzdWJkb21haW4/OiBTdWJkb21haW5Db25maWc7XHJcblxyXG4gICAgLyoqIFRoZSBmZWRlcmF0ZWQgbW9kdWxlIGNvbmZpZ3VyYXRpb24gZGljdGlvbmFyeSAqL1xyXG4gICAgZmVkZXJhdGVkTW9kdWxlcz86IHtba2V5OiBzdHJpbmddIDogRmVkZXJhdGVkTW9kdWxlQ29uZmlnfVxyXG59XHJcbiJdfQ==
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { InjectionToken } from '@angular/core';
|
|
2
|
-
// Injection tokens
|
|
3
|
-
/** The session configs */
|
|
4
|
-
export const SESSION_CONFIG = new InjectionToken('SessionConfig');
|
|
5
|
-
/** The window interface */
|
|
6
|
-
export const WINDOW = new InjectionToken('Window');
|
|
7
|
-
/** The user entity service configs */
|
|
8
|
-
export const USER_ENTITY_SERVICE_CONFIG = new InjectionToken('UserEntityServiceConfig');
|
|
9
|
-
/** The pre sign in route storage key */
|
|
10
|
-
export const preSignInRouteStorageKey = 'preSignInRoute';
|
|
11
|
-
/** The language storage key */
|
|
12
|
-
export const languageStorageKey = 'language';
|
|
13
|
-
/** The federated module configuration storage key */
|
|
14
|
-
export const federatedModuleConfigStorageKey = 'sofAr-federatedModule-config';
|
|
15
|
-
/** The federated module id of the application, this should be set when the application is allowed to run as a federated module */
|
|
16
|
-
export const FEDERATED_MODULE_ID = new InjectionToken('FederatedModuleId');
|
|
17
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJtYXR1cmUvc3JjL2xpYi9jb3JlL21vZGVscy9jb25zdGFudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUsvQyxtQkFBbUI7QUFDbkIsMEJBQTBCO0FBQzFCLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBa0MsSUFBSSxjQUFjLENBQWdCLGVBQWUsQ0FBQyxDQUFDO0FBRWhILDJCQUEyQjtBQUMzQixNQUFNLENBQUMsTUFBTSxNQUFNLEdBQTJCLElBQUksY0FBYyxDQUFTLFFBQVEsQ0FBQyxDQUFDO0FBRW5GLHNDQUFzQztBQUN0QyxNQUFNLENBQUMsTUFBTSwwQkFBMEIsR0FBNEMsSUFBSSxjQUFjLENBQTBCLHlCQUF5QixDQUFDLENBQUM7QUFFMUosd0NBQXdDO0FBQ3hDLE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFXLGdCQUFnQixDQUFDO0FBRWpFLCtCQUErQjtBQUMvQixNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBVyxVQUFVLENBQUM7QUFFckQscURBQXFEO0FBQ3JELE1BQU0sQ0FBQyxNQUFNLCtCQUErQixHQUFXLDhCQUE4QixDQUFDO0FBRXRGLGtJQUFrSTtBQUNsSSxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBMkIsSUFBSSxjQUFjLENBQVMsbUJBQW1CLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBTZXNzaW9uQ29uZmlnIH0gZnJvbSAnLi9zZXNzaW9uLWNvbmZpZyc7XHJcbmltcG9ydCB7IFVzZXJFbnRpdHlTZXJ2aWNlQ29uZmlnIH0gZnJvbSAnLi91c2VyLWVudGl0eS1zZXJ2aWNlLWNvbmZpZyc7XHJcblxyXG4vLyBJbmplY3Rpb24gdG9rZW5zXHJcbi8qKiBUaGUgc2Vzc2lvbiBjb25maWdzICovXHJcbmV4cG9ydCBjb25zdCBTRVNTSU9OX0NPTkZJRzogSW5qZWN0aW9uVG9rZW48U2Vzc2lvbkNvbmZpZz4gPSBuZXcgSW5qZWN0aW9uVG9rZW48U2Vzc2lvbkNvbmZpZz4oJ1Nlc3Npb25Db25maWcnKTtcclxuXHJcbi8qKiBUaGUgd2luZG93IGludGVyZmFjZSAqL1xyXG5leHBvcnQgY29uc3QgV0lORE9XOiBJbmplY3Rpb25Ub2tlbjxXaW5kb3c+ID0gbmV3IEluamVjdGlvblRva2VuPFdpbmRvdz4oJ1dpbmRvdycpO1xyXG5cclxuLyoqIFRoZSB1c2VyIGVudGl0eSBzZXJ2aWNlIGNvbmZpZ3MgKi9cclxuZXhwb3J0IGNvbnN0IFVTRVJfRU5USVRZX1NFUlZJQ0VfQ09ORklHOiBJbmplY3Rpb25Ub2tlbjxVc2VyRW50aXR5U2VydmljZUNvbmZpZz4gPSBuZXcgSW5qZWN0aW9uVG9rZW48VXNlckVudGl0eVNlcnZpY2VDb25maWc+KCdVc2VyRW50aXR5U2VydmljZUNvbmZpZycpO1xyXG5cclxuLyoqIFRoZSBwcmUgc2lnbiBpbiByb3V0ZSBzdG9yYWdlIGtleSAqL1xyXG5leHBvcnQgY29uc3QgcHJlU2lnbkluUm91dGVTdG9yYWdlS2V5OiBzdHJpbmcgPSAncHJlU2lnbkluUm91dGUnO1xyXG5cclxuLyoqIFRoZSBsYW5ndWFnZSBzdG9yYWdlIGtleSAqL1xyXG5leHBvcnQgY29uc3QgbGFuZ3VhZ2VTdG9yYWdlS2V5OiBzdHJpbmcgPSAnbGFuZ3VhZ2UnO1xyXG5cclxuLyoqIFRoZSBmZWRlcmF0ZWQgbW9kdWxlIGNvbmZpZ3VyYXRpb24gc3RvcmFnZSBrZXkgKi9cclxuZXhwb3J0IGNvbnN0IGZlZGVyYXRlZE1vZHVsZUNvbmZpZ1N0b3JhZ2VLZXk6IHN0cmluZyA9ICdzb2ZBci1mZWRlcmF0ZWRNb2R1bGUtY29uZmlnJztcclxuXHJcbi8qKiBUaGUgZmVkZXJhdGVkIG1vZHVsZSBpZCBvZiB0aGUgYXBwbGljYXRpb24sIHRoaXMgc2hvdWxkIGJlIHNldCB3aGVuIHRoZSBhcHBsaWNhdGlvbiBpcyBhbGxvd2VkIHRvIHJ1biBhcyBhIGZlZGVyYXRlZCBtb2R1bGUgKi9cclxuZXhwb3J0IGNvbnN0IEZFREVSQVRFRF9NT0RVTEVfSUQ6IEluamVjdGlvblRva2VuPHN0cmluZz4gPSBuZXcgSW5qZWN0aW9uVG9rZW48c3RyaW5nPignRmVkZXJhdGVkTW9kdWxlSWQnKTtcclxuIl19
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVkZXJhdGVkLW1vZHVsZS1jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcm1hdHVyZS9zcmMvbGliL2NvcmUvbW9kZWxzL2ZlZGVyYXRlZC1tb2R1bGUtY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIEZlZGVyYXRlZE1vZHVsZUNvbmZpZyB7XHJcbiAgICBkaXNwbGF5TmFtZTogc3RyaW5nO1xyXG59Il19
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
import { Inject, Injectable, Optional } from '@angular/core';
|
|
2
|
-
import { federatedModuleConfigStorageKey, FEDERATED_MODULE_ID, WINDOW } from '../models/constants';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
/** The federated module service */
|
|
5
|
-
export class FederatedModuleService {
|
|
6
|
-
/** The federated module configuration */
|
|
7
|
-
get federatedModuleConfig() {
|
|
8
|
-
if (this.federatedModuleId) {
|
|
9
|
-
const configs = this.federatedModuleConfigDict;
|
|
10
|
-
return configs.get(this.federatedModuleId);
|
|
11
|
-
}
|
|
12
|
-
return undefined;
|
|
13
|
-
}
|
|
14
|
-
/** True when application is running as a federated module */
|
|
15
|
-
get isFederatedModule() {
|
|
16
|
-
return !!this.federatedModuleConfig;
|
|
17
|
-
}
|
|
18
|
-
/** Gets the federated module config dictionary */
|
|
19
|
-
get federatedModuleConfigDict() {
|
|
20
|
-
const storageItem = this.window.sessionStorage.getItem(federatedModuleConfigStorageKey);
|
|
21
|
-
if (!storageItem) {
|
|
22
|
-
return undefined;
|
|
23
|
-
}
|
|
24
|
-
const dict = JSON.parse(storageItem);
|
|
25
|
-
const result = new Map();
|
|
26
|
-
Object.keys(dict).forEach(key => {
|
|
27
|
-
result.set(key, dict[key]);
|
|
28
|
-
});
|
|
29
|
-
return result;
|
|
30
|
-
}
|
|
31
|
-
/**
|
|
32
|
-
* Constructs the service
|
|
33
|
-
* @param _window The browser window
|
|
34
|
-
* @param federatedModuleId The federated module id
|
|
35
|
-
*/
|
|
36
|
-
constructor(_window, federatedModuleId) {
|
|
37
|
-
this._window = _window;
|
|
38
|
-
this.federatedModuleId = federatedModuleId;
|
|
39
|
-
this.window = _window || window;
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
FederatedModuleService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: FederatedModuleService, deps: [{ token: WINDOW, optional: true }, { token: FEDERATED_MODULE_ID, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
43
|
-
FederatedModuleService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: FederatedModuleService, providedIn: 'root' });
|
|
44
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: FederatedModuleService, decorators: [{
|
|
45
|
-
type: Injectable,
|
|
46
|
-
args: [{
|
|
47
|
-
providedIn: 'root'
|
|
48
|
-
}]
|
|
49
|
-
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
50
|
-
type: Optional
|
|
51
|
-
}, {
|
|
52
|
-
type: Inject,
|
|
53
|
-
args: [WINDOW]
|
|
54
|
-
}] }, { type: undefined, decorators: [{
|
|
55
|
-
type: Optional
|
|
56
|
-
}, {
|
|
57
|
-
type: Inject,
|
|
58
|
-
args: [FEDERATED_MODULE_ID]
|
|
59
|
-
}] }]; } });
|
|
60
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVkZXJhdGVkLW1vZHVsZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJtYXR1cmUvc3JjL2xpYi9jb3JlL3NlcnZpY2VzL2ZlZGVyYXRlZC1tb2R1bGUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0QsT0FBTyxFQUFFLCtCQUErQixFQUFFLG1CQUFtQixFQUFFLE1BQU0sRUFBRSxNQUFNLHFCQUFxQixDQUFDOztBQUduRyxtQ0FBbUM7QUFJbkMsTUFBTSxPQUFPLHNCQUFzQjtJQUVqQyx5Q0FBeUM7SUFDekMsSUFBVyxxQkFBcUI7UUFDOUIsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUU7WUFDMUIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLHlCQUF5QixDQUFDO1lBQy9DLE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztTQUM1QztRQUNELE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7SUFFRCw2REFBNkQ7SUFDN0QsSUFBVyxpQkFBaUI7UUFDMUIsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFBO0lBQ3JDLENBQUM7SUFFRCxrREFBa0Q7SUFDbEQsSUFBWSx5QkFBeUI7UUFDbkMsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLCtCQUErQixDQUFDLENBQUM7UUFDeEYsSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNoQixPQUFPLFNBQVMsQ0FBQztTQUNsQjtRQUNELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUEyQyxDQUFDO1FBQy9FLE1BQU0sTUFBTSxHQUFHLElBQUksR0FBRyxFQUFpQyxDQUFDO1FBQ3hELE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQzlCLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQzdCLENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUtEOzs7O09BSUc7SUFDSCxZQUMrQyxPQUFZLEVBQ0EsaUJBQXlCO1FBRHJDLFlBQU8sR0FBUCxPQUFPLENBQUs7UUFDQSxzQkFBaUIsR0FBakIsaUJBQWlCLENBQVE7UUFFbEYsSUFBSSxDQUFDLE1BQU0sR0FBRyxPQUFPLElBQUksTUFBTSxDQUFDO0lBQ2xDLENBQUM7O21IQTNDVSxzQkFBc0Isa0JBdUNYLE1BQU0sNkJBQ04sbUJBQW1CO3VIQXhDOUIsc0JBQXNCLGNBRnJCLE1BQU07MkZBRVAsc0JBQXNCO2tCQUhsQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBd0NJLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsTUFBTTs7MEJBQ3pCLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBmZWRlcmF0ZWRNb2R1bGVDb25maWdTdG9yYWdlS2V5LCBGRURFUkFURURfTU9EVUxFX0lELCBXSU5ET1cgfSBmcm9tICcuLi9tb2RlbHMvY29uc3RhbnRzJztcclxuaW1wb3J0IHsgRmVkZXJhdGVkTW9kdWxlQ29uZmlnIH0gZnJvbSAnLi4vbW9kZWxzL2ZlZGVyYXRlZC1tb2R1bGUtY29uZmlnJztcclxuXHJcbi8qKiBUaGUgZmVkZXJhdGVkIG1vZHVsZSBzZXJ2aWNlICovXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIEZlZGVyYXRlZE1vZHVsZVNlcnZpY2Uge1xyXG5cclxuICAvKiogVGhlIGZlZGVyYXRlZCBtb2R1bGUgY29uZmlndXJhdGlvbiAqL1xyXG4gIHB1YmxpYyBnZXQgZmVkZXJhdGVkTW9kdWxlQ29uZmlnKCk6IEZlZGVyYXRlZE1vZHVsZUNvbmZpZyB7XHJcbiAgICBpZiAodGhpcy5mZWRlcmF0ZWRNb2R1bGVJZCkge1xyXG4gICAgICBjb25zdCBjb25maWdzID0gdGhpcy5mZWRlcmF0ZWRNb2R1bGVDb25maWdEaWN0O1xyXG4gICAgICByZXR1cm4gY29uZmlncy5nZXQodGhpcy5mZWRlcmF0ZWRNb2R1bGVJZCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gIH1cclxuXHJcbiAgLyoqIFRydWUgd2hlbiBhcHBsaWNhdGlvbiBpcyBydW5uaW5nIGFzIGEgZmVkZXJhdGVkIG1vZHVsZSAqL1xyXG4gIHB1YmxpYyBnZXQgaXNGZWRlcmF0ZWRNb2R1bGUoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gISF0aGlzLmZlZGVyYXRlZE1vZHVsZUNvbmZpZ1xyXG4gIH1cclxuXHJcbiAgLyoqIEdldHMgdGhlIGZlZGVyYXRlZCBtb2R1bGUgY29uZmlnIGRpY3Rpb25hcnkgKi9cclxuICBwcml2YXRlIGdldCBmZWRlcmF0ZWRNb2R1bGVDb25maWdEaWN0KCk6IE1hcDxzdHJpbmcsIEZlZGVyYXRlZE1vZHVsZUNvbmZpZz4ge1xyXG4gICAgY29uc3Qgc3RvcmFnZUl0ZW0gPSB0aGlzLndpbmRvdy5zZXNzaW9uU3RvcmFnZS5nZXRJdGVtKGZlZGVyYXRlZE1vZHVsZUNvbmZpZ1N0b3JhZ2VLZXkpO1xyXG4gICAgaWYgKCFzdG9yYWdlSXRlbSkge1xyXG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgfVxyXG4gICAgY29uc3QgZGljdCA9IEpTT04ucGFyc2Uoc3RvcmFnZUl0ZW0pIGFzIHtba2V5OiBzdHJpbmddOiBGZWRlcmF0ZWRNb2R1bGVDb25maWd9O1xyXG4gICAgY29uc3QgcmVzdWx0ID0gbmV3IE1hcDxzdHJpbmcsIEZlZGVyYXRlZE1vZHVsZUNvbmZpZz4oKTtcclxuICAgIE9iamVjdC5rZXlzKGRpY3QpLmZvckVhY2goa2V5ID0+IHtcclxuICAgICAgcmVzdWx0LnNldChrZXksIGRpY3Rba2V5XSk7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiByZXN1bHQ7XHJcbiAgfVxyXG5cclxuICAvKiogVGhlIHdpbmRvdyBpbnRlcmZhY2UgKi9cclxuICBwcml2YXRlIHJlYWRvbmx5IHdpbmRvdzogV2luZG93XHJcblxyXG4gIC8qKlxyXG4gICAqIENvbnN0cnVjdHMgdGhlIHNlcnZpY2VcclxuICAgKiBAcGFyYW0gX3dpbmRvdyBUaGUgYnJvd3NlciB3aW5kb3dcclxuICAgKiBAcGFyYW0gZmVkZXJhdGVkTW9kdWxlSWQgVGhlIGZlZGVyYXRlZCBtb2R1bGUgaWRcclxuICAgKi9cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoV0lORE9XKSBwcml2YXRlIHJlYWRvbmx5IF93aW5kb3c6IGFueSxcclxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoRkVERVJBVEVEX01PRFVMRV9JRCkgcHVibGljIHJlYWRvbmx5IGZlZGVyYXRlZE1vZHVsZUlkOiBzdHJpbmdcclxuICApIHtcclxuICAgIHRoaXMud2luZG93ID0gX3dpbmRvdyB8fCB3aW5kb3c7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import { NgModule } from '@angular/core';
|
|
2
|
-
import { CommonModule } from '@angular/common';
|
|
3
|
-
import { CacheService } from './client-generated/api/cache.service';
|
|
4
|
-
import { BASE_PATH } from './client-generated/variables';
|
|
5
|
-
import { ServerCacheService } from './services/server-cache.service';
|
|
6
|
-
import { DISTRIBUTED_CACHE_BASE_PATH } from './models/constants';
|
|
7
|
-
import * as i0 from "@angular/core";
|
|
8
|
-
/** The distributed cache module */
|
|
9
|
-
export class DistributedCacheModule {
|
|
10
|
-
}
|
|
11
|
-
DistributedCacheModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: DistributedCacheModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
12
|
-
DistributedCacheModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.7", ngImport: i0, type: DistributedCacheModule, imports: [CommonModule] });
|
|
13
|
-
DistributedCacheModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: DistributedCacheModule, providers: [
|
|
14
|
-
{
|
|
15
|
-
provide: BASE_PATH,
|
|
16
|
-
useExisting: DISTRIBUTED_CACHE_BASE_PATH
|
|
17
|
-
},
|
|
18
|
-
CacheService,
|
|
19
|
-
ServerCacheService
|
|
20
|
-
], imports: [CommonModule] });
|
|
21
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: DistributedCacheModule, decorators: [{
|
|
22
|
-
type: NgModule,
|
|
23
|
-
args: [{
|
|
24
|
-
declarations: [],
|
|
25
|
-
imports: [
|
|
26
|
-
CommonModule
|
|
27
|
-
],
|
|
28
|
-
providers: [
|
|
29
|
-
{
|
|
30
|
-
provide: BASE_PATH,
|
|
31
|
-
useExisting: DISTRIBUTED_CACHE_BASE_PATH
|
|
32
|
-
},
|
|
33
|
-
CacheService,
|
|
34
|
-
ServerCacheService
|
|
35
|
-
]
|
|
36
|
-
}]
|
|
37
|
-
}] });
|
|
38
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlzdHJpYnV0ZWQtY2FjaGUubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJtYXR1cmUvc3JjL2xpYi9kaXN0cmlidXRlZC1jYWNoZS9kaXN0cmlidXRlZC1jYWNoZS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBdUMsTUFBTSxlQUFlLENBQUM7QUFDOUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUNwRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDekQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDckUsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7O0FBRWpFLG1DQUFtQztBQWVuQyxNQUFNLE9BQU8sc0JBQXNCOzttSEFBdEIsc0JBQXNCO29IQUF0QixzQkFBc0IsWUFYL0IsWUFBWTtvSEFXSCxzQkFBc0IsYUFUdEI7UUFDVDtZQUNFLE9BQU8sRUFBRSxTQUFTO1lBQ2xCLFdBQVcsRUFBRSwyQkFBMkI7U0FDekM7UUFDRCxZQUFZO1FBQ1osa0JBQWtCO0tBQ25CLFlBVEMsWUFBWTsyRkFXSCxzQkFBc0I7a0JBZGxDLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLEVBQUU7b0JBQ2hCLE9BQU8sRUFBRTt3QkFDUCxZQUFZO3FCQUNiO29CQUNELFNBQVMsRUFBRTt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsU0FBUzs0QkFDbEIsV0FBVyxFQUFFLDJCQUEyQjt5QkFDekM7d0JBQ0QsWUFBWTt3QkFDWixrQkFBa0I7cUJBQ25CO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUsIEluamVjdGlvblRva2VuLCBNb2R1bGVXaXRoUHJvdmlkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IENhY2hlU2VydmljZSB9IGZyb20gJy4vY2xpZW50LWdlbmVyYXRlZC9hcGkvY2FjaGUuc2VydmljZSc7XHJcbmltcG9ydCB7IEJBU0VfUEFUSCB9IGZyb20gJy4vY2xpZW50LWdlbmVyYXRlZC92YXJpYWJsZXMnO1xyXG5pbXBvcnQgeyBTZXJ2ZXJDYWNoZVNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL3NlcnZlci1jYWNoZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRElTVFJJQlVURURfQ0FDSEVfQkFTRV9QQVRIIH0gZnJvbSAnLi9tb2RlbHMvY29uc3RhbnRzJztcclxuXHJcbi8qKiBUaGUgZGlzdHJpYnV0ZWQgY2FjaGUgbW9kdWxlICovXHJcbkBOZ01vZHVsZSh7XHJcbiAgZGVjbGFyYXRpb25zOiBbXSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGVcclxuICBdLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBCQVNFX1BBVEgsXHJcbiAgICAgIHVzZUV4aXN0aW5nOiBESVNUUklCVVRFRF9DQUNIRV9CQVNFX1BBVEhcclxuICAgIH0sXHJcbiAgICBDYWNoZVNlcnZpY2UsXHJcbiAgICBTZXJ2ZXJDYWNoZVNlcnZpY2VcclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEaXN0cmlidXRlZENhY2hlTW9kdWxlIHt9XHJcbiJdfQ==
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import { Component, Input } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
import * as i1 from "@angular/common";
|
|
4
|
-
import * as i2 from "@angular/material/expansion";
|
|
5
|
-
import * as i3 from "@angular/material/icon";
|
|
6
|
-
import * as i4 from "@angular/flex-layout/flex";
|
|
7
|
-
import * as i5 from "@angular/flex-layout/extended";
|
|
8
|
-
import * as i6 from "@ngx-translate/core";
|
|
9
|
-
/** FAQ Component */
|
|
10
|
-
export class FaqComponent {
|
|
11
|
-
/** The constructor */
|
|
12
|
-
constructor() {
|
|
13
|
-
/** The array of all FAQs */
|
|
14
|
-
this.allFaqs = [];
|
|
15
|
-
/** The icon color */
|
|
16
|
-
this.iconColor = '';
|
|
17
|
-
}
|
|
18
|
-
/** Life cycle hook for component initialization */
|
|
19
|
-
ngOnInit() {
|
|
20
|
-
if (this.faqConfig && this.faqConfig.iconHexColor) {
|
|
21
|
-
if (this.faqConfig.iconHexColor.indexOf('#') > -1) {
|
|
22
|
-
this.iconColor = this.faqConfig.iconHexColor;
|
|
23
|
-
}
|
|
24
|
-
else {
|
|
25
|
-
this.iconColor = `#${this.faqConfig.iconHexColor}`;
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
FaqComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: FaqComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
31
|
-
FaqComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: FaqComponent, selector: "sof-ar-faq", inputs: { faqConfig: "faqConfig", allFaqs: "allFaqs" }, ngImport: i0, template: "<div class=\"sof-ar-faq-container\">\r\n<div fxLayout=\"column\" class=\"all-faqs\" full-width>\r\n <div fxLayout=\"row\" fxLayoutAlign=\"left\" class=\"faq-container\">\r\n <mat-accordion fxFlex=\"60%\" fxFlex.lt-md=\"100%\">\r\n <div *ngFor=\"let faq of allFaqs; let i = index\">\r\n <mat-expansion-panel hideToggle=\"true\" [id]=\"'exp'+i\" (click)=\"faq.expanded = !faq.expanded\" full-width>\r\n <mat-expansion-panel-header class=\"panel-header\" ngClass.lt-md=\"faq-header-small\">\r\n <mat-panel-title>\r\n <mat-icon>\r\n <i *ngIf=\"!faq.expanded; else remove\" class=\"{{faqConfig.expandIconClass}}\" [ngStyle]=\"{'color': iconColor}\">{{faqConfig.expandIconText}}</i>\r\n <ng-template #remove>\r\n <i class=\"{{faqConfig.minimizeIconClass}}\" [ngStyle]=\"{'color': iconColor}\">{{faqConfig.minimizeIconText}}</i>\r\n </ng-template>\r\n </mat-icon>\r\n <div class=\"question\" [innerHTML]=\"faq.title | translate\"></div>\r\n </mat-panel-title>\r\n </mat-expansion-panel-header>\r\n <ng-template matExpansionPanelContent>\r\n <div [innerHTML]=\"faq.description | translate\"></div>\r\n </ng-template>\r\n </mat-expansion-panel>\r\n </div>\r\n </mat-accordion>\r\n </div>\r\n </div>\r\n</div>", styles: ["@import\"https://fonts.googleapis.com/icon?family=Material+Icons\";.mat-ripple{overflow:hidden;position:relative}.mat-ripple:not(:empty){transform:translateZ(0)}.mat-ripple.mat-ripple-unbounded{overflow:visible}.mat-ripple-element{position:absolute;border-radius:50%;pointer-events:none;transition:opacity,transform 0ms cubic-bezier(0,0,.2,1);transform:scale3d(0,0,0)}.cdk-high-contrast-active .mat-ripple-element{display:none}.cdk-visually-hidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap;outline:0;-webkit-appearance:none;-moz-appearance:none;left:0}[dir=rtl] .cdk-visually-hidden{left:auto;right:0}.cdk-overlay-container,.cdk-global-overlay-wrapper{pointer-events:none;top:0;left:0;height:100%;width:100%}.cdk-overlay-container{position:fixed;z-index:1000}.cdk-overlay-container:empty{display:none}.cdk-global-overlay-wrapper{display:flex;position:absolute;z-index:1000}.cdk-overlay-pane{position:absolute;pointer-events:auto;box-sizing:border-box;z-index:1000;display:flex;max-width:100%;max-height:100%}.cdk-overlay-backdrop{position:absolute;inset:0;z-index:1000;pointer-events:auto;-webkit-tap-highlight-color:transparent;transition:opacity .4s cubic-bezier(.25,.8,.25,1);opacity:0}.cdk-overlay-backdrop.cdk-overlay-backdrop-showing{opacity:1}.cdk-high-contrast-active .cdk-overlay-backdrop.cdk-overlay-backdrop-showing{opacity:.6}.cdk-overlay-dark-backdrop{background:rgba(0,0,0,.32)}.cdk-overlay-transparent-backdrop{transition:visibility 1ms linear,opacity 1ms linear;visibility:hidden;opacity:1}.cdk-overlay-transparent-backdrop.cdk-overlay-backdrop-showing{opacity:0;visibility:visible}.cdk-overlay-backdrop-noop-animation{transition:none}.cdk-overlay-connected-position-bounding-box{position:absolute;z-index:1000;display:flex;flex-direction:column;min-width:1px;min-height:1px}.cdk-global-scrollblock{position:fixed;width:100%;overflow-y:scroll}textarea.cdk-textarea-autosize{resize:none}textarea.cdk-textarea-autosize-measuring{padding:2px 0!important;box-sizing:content-box!important;height:auto!important;overflow:hidden!important}textarea.cdk-textarea-autosize-measuring-firefox{padding:2px 0!important;box-sizing:content-box!important;height:0!important}@keyframes cdk-text-field-autofill-start{}@keyframes cdk-text-field-autofill-end{}.cdk-text-field-autofill-monitored:-webkit-autofill{animation:cdk-text-field-autofill-start 0s 1ms}.cdk-text-field-autofill-monitored:not(:-webkit-autofill){animation:cdk-text-field-autofill-end 0s 1ms}.mat-focus-indicator{position:relative}.mat-focus-indicator:before{inset:0;position:absolute;box-sizing:border-box;pointer-events:none;display:var(--mat-focus-indicator-display, none);border:var(--mat-focus-indicator-border-width, 3px) var(--mat-focus-indicator-border-style, solid) var(--mat-focus-indicator-border-color, transparent);border-radius:var(--mat-focus-indicator-border-radius, 4px)}.mat-focus-indicator:focus:before{content:\"\"}.cdk-high-contrast-active{--mat-focus-indicator-display: block}.mat-mdc-focus-indicator{position:relative}.mat-mdc-focus-indicator:before{inset:0;position:absolute;box-sizing:border-box;pointer-events:none;display:var(--mat-mdc-focus-indicator-display, none);border:var(--mat-mdc-focus-indicator-border-width, 3px) var(--mat-mdc-focus-indicator-border-style, solid) var(--mat-mdc-focus-indicator-border-color, transparent);border-radius:var(--mat-mdc-focus-indicator-border-radius, 4px)}.mat-mdc-focus-indicator:focus:before{content:\"\"}.cdk-high-contrast-active{--mat-mdc-focus-indicator-display: block}.faq-header-small{min-height:80px}i.warning{color:#0d47a1}.all-faqs{padding-left:60px;padding-top:40px;margin-top:50px}.question{margin-left:20px;padding-top:10px;padding-bottom:10px}.panel-header{background-color:#f7f3f2}.faq-container{margin-top:25px;margin-bottom:25px}\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: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2.MatAccordion, selector: "mat-accordion", inputs: ["multi", "hideToggle", "displayMode", "togglePosition"], exportAs: ["matAccordion"] }, { kind: "component", type: i2.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["disabled", "expanded", "hideToggle", "togglePosition"], outputs: ["opened", "closed", "expandedChange", "afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { kind: "component", type: i2.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["tabIndex", "expandedHeight", "collapsedHeight"] }, { kind: "directive", type: i2.MatExpansionPanelTitle, selector: "mat-panel-title" }, { kind: "directive", type: i2.MatExpansionPanelContent, selector: "ng-template[matExpansionPanelContent]" }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i4.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i4.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i4.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "directive", type: i5.DefaultClassDirective, selector: " [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl], [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl], [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]", inputs: ["ngClass", "ngClass.xs", "ngClass.sm", "ngClass.md", "ngClass.lg", "ngClass.xl", "ngClass.lt-sm", "ngClass.lt-md", "ngClass.lt-lg", "ngClass.lt-xl", "ngClass.gt-xs", "ngClass.gt-sm", "ngClass.gt-md", "ngClass.gt-lg"] }, { kind: "directive", type: i5.DefaultStyleDirective, selector: " [ngStyle], [ngStyle.xs], [ngStyle.sm], [ngStyle.md], [ngStyle.lg], [ngStyle.xl], [ngStyle.lt-sm], [ngStyle.lt-md], [ngStyle.lt-lg], [ngStyle.lt-xl], [ngStyle.gt-xs], [ngStyle.gt-sm], [ngStyle.gt-md], [ngStyle.gt-lg]", inputs: ["ngStyle", "ngStyle.xs", "ngStyle.sm", "ngStyle.md", "ngStyle.lg", "ngStyle.xl", "ngStyle.lt-sm", "ngStyle.lt-md", "ngStyle.lt-lg", "ngStyle.lt-xl", "ngStyle.gt-xs", "ngStyle.gt-sm", "ngStyle.gt-md", "ngStyle.gt-lg"] }, { kind: "pipe", type: i6.TranslatePipe, name: "translate" }] });
|
|
32
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: FaqComponent, decorators: [{
|
|
33
|
-
type: Component,
|
|
34
|
-
args: [{ selector: 'sof-ar-faq', template: "<div class=\"sof-ar-faq-container\">\r\n<div fxLayout=\"column\" class=\"all-faqs\" full-width>\r\n <div fxLayout=\"row\" fxLayoutAlign=\"left\" class=\"faq-container\">\r\n <mat-accordion fxFlex=\"60%\" fxFlex.lt-md=\"100%\">\r\n <div *ngFor=\"let faq of allFaqs; let i = index\">\r\n <mat-expansion-panel hideToggle=\"true\" [id]=\"'exp'+i\" (click)=\"faq.expanded = !faq.expanded\" full-width>\r\n <mat-expansion-panel-header class=\"panel-header\" ngClass.lt-md=\"faq-header-small\">\r\n <mat-panel-title>\r\n <mat-icon>\r\n <i *ngIf=\"!faq.expanded; else remove\" class=\"{{faqConfig.expandIconClass}}\" [ngStyle]=\"{'color': iconColor}\">{{faqConfig.expandIconText}}</i>\r\n <ng-template #remove>\r\n <i class=\"{{faqConfig.minimizeIconClass}}\" [ngStyle]=\"{'color': iconColor}\">{{faqConfig.minimizeIconText}}</i>\r\n </ng-template>\r\n </mat-icon>\r\n <div class=\"question\" [innerHTML]=\"faq.title | translate\"></div>\r\n </mat-panel-title>\r\n </mat-expansion-panel-header>\r\n <ng-template matExpansionPanelContent>\r\n <div [innerHTML]=\"faq.description | translate\"></div>\r\n </ng-template>\r\n </mat-expansion-panel>\r\n </div>\r\n </mat-accordion>\r\n </div>\r\n </div>\r\n</div>", styles: ["@import\"https://fonts.googleapis.com/icon?family=Material+Icons\";.mat-ripple{overflow:hidden;position:relative}.mat-ripple:not(:empty){transform:translateZ(0)}.mat-ripple.mat-ripple-unbounded{overflow:visible}.mat-ripple-element{position:absolute;border-radius:50%;pointer-events:none;transition:opacity,transform 0ms cubic-bezier(0,0,.2,1);transform:scale3d(0,0,0)}.cdk-high-contrast-active .mat-ripple-element{display:none}.cdk-visually-hidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap;outline:0;-webkit-appearance:none;-moz-appearance:none;left:0}[dir=rtl] .cdk-visually-hidden{left:auto;right:0}.cdk-overlay-container,.cdk-global-overlay-wrapper{pointer-events:none;top:0;left:0;height:100%;width:100%}.cdk-overlay-container{position:fixed;z-index:1000}.cdk-overlay-container:empty{display:none}.cdk-global-overlay-wrapper{display:flex;position:absolute;z-index:1000}.cdk-overlay-pane{position:absolute;pointer-events:auto;box-sizing:border-box;z-index:1000;display:flex;max-width:100%;max-height:100%}.cdk-overlay-backdrop{position:absolute;inset:0;z-index:1000;pointer-events:auto;-webkit-tap-highlight-color:transparent;transition:opacity .4s cubic-bezier(.25,.8,.25,1);opacity:0}.cdk-overlay-backdrop.cdk-overlay-backdrop-showing{opacity:1}.cdk-high-contrast-active .cdk-overlay-backdrop.cdk-overlay-backdrop-showing{opacity:.6}.cdk-overlay-dark-backdrop{background:rgba(0,0,0,.32)}.cdk-overlay-transparent-backdrop{transition:visibility 1ms linear,opacity 1ms linear;visibility:hidden;opacity:1}.cdk-overlay-transparent-backdrop.cdk-overlay-backdrop-showing{opacity:0;visibility:visible}.cdk-overlay-backdrop-noop-animation{transition:none}.cdk-overlay-connected-position-bounding-box{position:absolute;z-index:1000;display:flex;flex-direction:column;min-width:1px;min-height:1px}.cdk-global-scrollblock{position:fixed;width:100%;overflow-y:scroll}textarea.cdk-textarea-autosize{resize:none}textarea.cdk-textarea-autosize-measuring{padding:2px 0!important;box-sizing:content-box!important;height:auto!important;overflow:hidden!important}textarea.cdk-textarea-autosize-measuring-firefox{padding:2px 0!important;box-sizing:content-box!important;height:0!important}@keyframes cdk-text-field-autofill-start{}@keyframes cdk-text-field-autofill-end{}.cdk-text-field-autofill-monitored:-webkit-autofill{animation:cdk-text-field-autofill-start 0s 1ms}.cdk-text-field-autofill-monitored:not(:-webkit-autofill){animation:cdk-text-field-autofill-end 0s 1ms}.mat-focus-indicator{position:relative}.mat-focus-indicator:before{inset:0;position:absolute;box-sizing:border-box;pointer-events:none;display:var(--mat-focus-indicator-display, none);border:var(--mat-focus-indicator-border-width, 3px) var(--mat-focus-indicator-border-style, solid) var(--mat-focus-indicator-border-color, transparent);border-radius:var(--mat-focus-indicator-border-radius, 4px)}.mat-focus-indicator:focus:before{content:\"\"}.cdk-high-contrast-active{--mat-focus-indicator-display: block}.mat-mdc-focus-indicator{position:relative}.mat-mdc-focus-indicator:before{inset:0;position:absolute;box-sizing:border-box;pointer-events:none;display:var(--mat-mdc-focus-indicator-display, none);border:var(--mat-mdc-focus-indicator-border-width, 3px) var(--mat-mdc-focus-indicator-border-style, solid) var(--mat-mdc-focus-indicator-border-color, transparent);border-radius:var(--mat-mdc-focus-indicator-border-radius, 4px)}.mat-mdc-focus-indicator:focus:before{content:\"\"}.cdk-high-contrast-active{--mat-mdc-focus-indicator-display: block}.faq-header-small{min-height:80px}i.warning{color:#0d47a1}.all-faqs{padding-left:60px;padding-top:40px;margin-top:50px}.question{margin-left:20px;padding-top:10px;padding-bottom:10px}.panel-header{background-color:#f7f3f2}.faq-container{margin-top:25px;margin-bottom:25px}\n"] }]
|
|
35
|
-
}], ctorParameters: function () { return []; }, propDecorators: { faqConfig: [{
|
|
36
|
-
type: Input
|
|
37
|
-
}], allFaqs: [{
|
|
38
|
-
type: Input
|
|
39
|
-
}] } });
|
|
40
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFxLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FybWF0dXJlL3NyYy9saWIvZmFxL2NvbXBvbmVudHMvZmFxL2ZhcS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcm1hdHVyZS9zcmMvbGliL2ZhcS9jb21wb25lbnRzL2ZhcS9mYXEuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7O0FBS3pELG9CQUFvQjtBQU1wQixNQUFNLE9BQU8sWUFBWTtJQVd2QixzQkFBc0I7SUFDdEI7UUFQQSw0QkFBNEI7UUFDWixZQUFPLEdBQWUsRUFBRSxDQUFDO1FBRXpDLHFCQUFxQjtRQUNkLGNBQVMsR0FBVyxFQUFFLENBQUM7SUFHZCxDQUFDO0lBRWpCLG1EQUFtRDtJQUM1QyxRQUFRO1FBQ2IsSUFBSSxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxFQUFFO1lBQ2pELElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFO2dCQUNqRCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDO2FBQzlDO2lCQUNJO2dCQUNILElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksRUFBRSxDQUFDO2FBQ3BEO1NBQ0Y7SUFDSCxDQUFDOzt5R0F4QlUsWUFBWTs2RkFBWixZQUFZLDBHQ1h6Qix3NkNBeUJNOzJGRGRPLFlBQVk7a0JBTHhCLFNBQVM7K0JBQ0UsWUFBWTswRUFPYixTQUFTO3NCQUFqQixLQUFLO2dCQUdVLE9BQU87c0JBQXRCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IEZBUSB9IGZyb20gJy4uLy4uL21vZGVscy9mYXEnO1xyXG5pbXBvcnQgeyBGQVFDb25maWcgfSBmcm9tICcuLi8uLi9tb2RlbHMvZmFxLWNvbmZpZyc7XHJcblxyXG4vKiogRkFRIENvbXBvbmVudCAqL1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3NvZi1hci1mYXEnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9mYXEuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2ZhcS5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGYXFDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICAvKiogVGhlIEZBUSBJTnB1dCBDb25maWcgKi9cclxuICBASW5wdXQoKSBmYXFDb25maWc6IEZBUUNvbmZpZztcclxuXHJcbiAgLyoqIFRoZSBhcnJheSBvZiBhbGwgRkFRcyAqL1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBhbGxGYXFzOiBBcnJheTxGQVE+ID0gW107XHJcblxyXG4gIC8qKiBUaGUgaWNvbiBjb2xvciAqL1xyXG4gIHB1YmxpYyBpY29uQ29sb3I6IHN0cmluZyA9ICcnO1xyXG5cclxuICAvKiogVGhlIGNvbnN0cnVjdG9yICovXHJcbiAgY29uc3RydWN0b3IoKSB7IH1cclxuXHJcbiAgLyoqIExpZmUgY3ljbGUgaG9vayBmb3IgY29tcG9uZW50IGluaXRpYWxpemF0aW9uICovXHJcbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuZmFxQ29uZmlnICYmIHRoaXMuZmFxQ29uZmlnLmljb25IZXhDb2xvcikge1xyXG4gICAgICBpZiAodGhpcy5mYXFDb25maWcuaWNvbkhleENvbG9yLmluZGV4T2YoJyMnKSA+IC0xKSB7XHJcbiAgICAgICAgdGhpcy5pY29uQ29sb3IgPSB0aGlzLmZhcUNvbmZpZy5pY29uSGV4Q29sb3I7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgdGhpcy5pY29uQ29sb3IgPSBgIyR7dGhpcy5mYXFDb25maWcuaWNvbkhleENvbG9yfWA7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJzb2YtYXItZmFxLWNvbnRhaW5lclwiPlxyXG48ZGl2IGZ4TGF5b3V0PVwiY29sdW1uXCIgY2xhc3M9XCJhbGwtZmFxc1wiIGZ1bGwtd2lkdGg+XHJcbiAgICA8ZGl2IGZ4TGF5b3V0PVwicm93XCIgZnhMYXlvdXRBbGlnbj1cImxlZnRcIiBjbGFzcz1cImZhcS1jb250YWluZXJcIj5cclxuICAgICAgPG1hdC1hY2NvcmRpb24gZnhGbGV4PVwiNjAlXCIgZnhGbGV4Lmx0LW1kPVwiMTAwJVwiPlxyXG4gICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGZhcSBvZiBhbGxGYXFzOyBsZXQgaSA9IGluZGV4XCI+XHJcbiAgICAgICAgICA8bWF0LWV4cGFuc2lvbi1wYW5lbCBoaWRlVG9nZ2xlPVwidHJ1ZVwiIFtpZF09XCInZXhwJytpXCIgKGNsaWNrKT1cImZhcS5leHBhbmRlZCA9ICFmYXEuZXhwYW5kZWRcIiBmdWxsLXdpZHRoPlxyXG4gICAgICAgICAgICA8bWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXIgY2xhc3M9XCJwYW5lbC1oZWFkZXJcIiBuZ0NsYXNzLmx0LW1kPVwiZmFxLWhlYWRlci1zbWFsbFwiPlxyXG4gICAgICAgICAgICAgIDxtYXQtcGFuZWwtdGl0bGU+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgIDxpICpuZ0lmPVwiIWZhcS5leHBhbmRlZDsgZWxzZSByZW1vdmVcIiBjbGFzcz1cInt7ZmFxQ29uZmlnLmV4cGFuZEljb25DbGFzc319XCIgW25nU3R5bGVdPVwieydjb2xvcic6IGljb25Db2xvcn1cIj57e2ZhcUNvbmZpZy5leHBhbmRJY29uVGV4dH19PC9pPlxyXG4gICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI3JlbW92ZT5cclxuICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cInt7ZmFxQ29uZmlnLm1pbmltaXplSWNvbkNsYXNzfX1cIiBbbmdTdHlsZV09XCJ7J2NvbG9yJzogaWNvbkNvbG9yfVwiPnt7ZmFxQ29uZmlnLm1pbmltaXplSWNvblRleHR9fTwvaT5cclxuICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgIDwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicXVlc3Rpb25cIiBbaW5uZXJIVE1MXT1cImZhcS50aXRsZSB8IHRyYW5zbGF0ZVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvbWF0LXBhbmVsLXRpdGxlPlxyXG4gICAgICAgICAgICA8L21hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxyXG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgbWF0RXhwYW5zaW9uUGFuZWxDb250ZW50PlxyXG4gICAgICAgICAgICAgIDxkaXYgW2lubmVySFRNTF09XCJmYXEuZGVzY3JpcHRpb24gfCB0cmFuc2xhdGVcIj48L2Rpdj5cclxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgIDwvbWF0LWV4cGFuc2lvbi1wYW5lbD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9tYXQtYWNjb3JkaW9uPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PiJdfQ==
|