@bravobit/bb-foundation 0.21.6 → 0.22.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/auth/lib/auth.interceptor.d.ts +1 -1
- package/auth/lib/auth.module.d.ts +4 -5
- package/auth/lib/auth.service.d.ts +4 -7
- package/auth/lib/directives/abstract.directive.d.ts +12 -0
- package/auth/lib/directives/authenticated.directive.d.ts +7 -4
- package/auth/lib/directives/permission.directive.d.ts +11 -11
- package/auth/lib/guards/anonymous.guard.d.ts +8 -5
- package/auth/lib/guards/authenticated.guard.d.ts +8 -5
- package/auth/lib/guards/permission.guard.d.ts +15 -0
- package/auth/lib/interfaces/config.interface.d.ts +14 -8
- package/auth/lib/interfaces/permission.interface.d.ts +6 -0
- package/auth/lib/interfaces/provider.interface.d.ts +10 -3
- package/auth/lib/permissions/permissions.handler.d.ts +9 -0
- package/auth/lib/permissions/permissions.service.d.ts +16 -0
- package/auth/lib/providers/email.provider.d.ts +2 -8
- package/auth/lib/providers/verify.provider.d.ts +2 -6
- package/auth/public_api.d.ts +4 -4
- package/controls/lib/checkbox/checkbox/checkbox.component.d.ts +5 -1
- package/controls/lib/control-error/control-error/control-error.animation.d.ts +1 -0
- package/controls/lib/control-error/control-error/control-error.component.d.ts +17 -0
- package/controls/lib/control-error/control-error-submit.directive.d.ts +15 -0
- package/controls/lib/control-error/control-error.defaults.d.ts +2 -0
- package/controls/lib/control-error/control-error.interface.d.ts +12 -0
- package/controls/lib/control-error/control-error.module.d.ts +9 -0
- package/controls/lib/controls.interfaces.d.ts +4 -0
- package/controls/lib/controls.module.d.ts +7 -2
- package/controls/lib/form-control/form-control/form-control.component.d.ts +31 -0
- package/controls/lib/form-control/form-control-addon/form-control-addon.component.d.ts +6 -0
- package/controls/lib/form-control/form-control-input.directive.d.ts +35 -0
- package/controls/lib/form-control/form-control.module.d.ts +11 -0
- package/controls/public_api.d.ts +9 -0
- package/dashboard/lib/dashboard/dashboard.component.d.ts +2 -1
- package/dialog/lib/dialog-confirm/dialog-confirm.component.d.ts +10 -5
- package/dialog/lib/dialog-container/dialog-container.animations.d.ts +1 -0
- package/dialog/lib/dialog-container/dialog-container.component.d.ts +5 -7
- package/dialog/lib/dialog-header/dialog-header.component.d.ts +1 -3
- package/dialog/lib/dialog-modal/dialog-modal.component.d.ts +7 -3
- package/dialog/lib/dialog-overlay/dialog-overlay.animations.d.ts +1 -0
- package/dialog/lib/dialog-overlay/dialog-overlay.component.d.ts +5 -7
- package/dialog/lib/dialog.service.d.ts +4 -3
- package/elements/lib/directives/focus-trap.directive.d.ts +1 -1
- package/elements/lib/directives/focus.directive.d.ts +1 -3
- package/elements/lib/pipes/file-image.pipe.d.ts +2 -1
- package/esm2020/auth/lib/auth.interceptor.mjs +9 -12
- package/esm2020/auth/lib/auth.module.mjs +7 -17
- package/esm2020/auth/lib/auth.service.mjs +29 -55
- package/esm2020/auth/lib/directives/abstract.directive.mjs +40 -0
- package/esm2020/auth/lib/directives/authenticated.directive.mjs +25 -14
- package/esm2020/auth/lib/directives/permission.directive.mjs +24 -46
- package/esm2020/auth/lib/guards/anonymous.guard.mjs +28 -19
- package/esm2020/auth/lib/guards/authenticated.guard.mjs +31 -20
- package/esm2020/auth/lib/guards/permission.guard.mjs +53 -0
- package/esm2020/auth/lib/helpers/jwt.helper.mjs +7 -7
- package/esm2020/auth/lib/interfaces/config.interface.mjs +1 -1
- package/esm2020/auth/lib/interfaces/permission.interface.mjs +2 -0
- package/esm2020/auth/lib/interfaces/provider.interface.mjs +1 -1
- package/esm2020/auth/lib/permissions/permissions.handler.mjs +33 -0
- package/esm2020/auth/lib/permissions/permissions.service.mjs +64 -0
- package/esm2020/auth/lib/providers/email.provider.mjs +8 -9
- package/esm2020/auth/lib/providers/verify.provider.mjs +8 -5
- package/esm2020/auth/public_api.mjs +5 -5
- package/esm2020/collections/lib/collections.module.mjs +4 -4
- package/esm2020/collections/lib/components/collections-pager/collections-pager.component.mjs +3 -3
- package/esm2020/collections/lib/components/collections-viewer/collections-viewer.component.mjs +3 -3
- package/esm2020/collections/lib/components/collections.directive.mjs +12 -12
- package/esm2020/controls/lib/checkbox/checkbox/checkbox.component.mjs +19 -6
- package/esm2020/controls/lib/checkbox/checkbox-group/checkbox-group.component.mjs +4 -4
- package/esm2020/controls/lib/checkbox/checkbox.module.mjs +4 -4
- package/esm2020/controls/lib/control-error/control-error/control-error.animation.mjs +14 -0
- package/esm2020/controls/lib/control-error/control-error/control-error.component.mjs +63 -0
- package/esm2020/controls/lib/control-error/control-error-submit.directive.mjs +47 -0
- package/esm2020/controls/lib/control-error/control-error.defaults.mjs +26 -0
- package/esm2020/controls/lib/control-error/control-error.interface.mjs +3 -0
- package/esm2020/controls/lib/control-error/control-error.module.mjs +19 -0
- package/esm2020/controls/lib/controls.interfaces.mjs +2 -0
- package/esm2020/controls/lib/controls.module.mjs +45 -8
- package/esm2020/controls/lib/form-control/form-control/form-control.component.mjs +94 -0
- package/esm2020/controls/lib/form-control/form-control-addon/form-control-addon.component.mjs +22 -0
- package/esm2020/controls/lib/form-control/form-control-input.directive.mjs +124 -0
- package/esm2020/controls/lib/form-control/form-control.module.mjs +33 -0
- package/esm2020/controls/public_api.mjs +10 -1
- package/esm2020/dashboard/lib/dashboard/dashboard.component.mjs +7 -6
- package/esm2020/dashboard/lib/dashboard-header/dashboard-header.component.mjs +3 -3
- package/esm2020/dashboard/lib/dashboard-menu/dashboard-menu.component.mjs +3 -3
- package/esm2020/dashboard/lib/dashboard-menu-item/dashboard-menu-item.component.mjs +3 -3
- package/esm2020/dashboard/lib/dashboard-sidebar/dashboard-sidebar.component.mjs +3 -3
- package/esm2020/dashboard/lib/dashboard-sidebar-group/dashboard-sidebar-group.component.mjs +3 -3
- package/esm2020/dashboard/lib/dashboard-sidebar-item/dashboard-sidebar-item.component.mjs +3 -3
- package/esm2020/dashboard/lib/dashboard.module.mjs +4 -4
- package/esm2020/dialog/lib/dialog-actions/dialog-actions.component.mjs +3 -3
- package/esm2020/dialog/lib/dialog-confirm/dialog-confirm.component.mjs +17 -11
- package/esm2020/dialog/lib/dialog-container/dialog-container.animations.mjs +29 -0
- package/esm2020/dialog/lib/dialog-container/dialog-container.component.mjs +28 -104
- package/esm2020/dialog/lib/dialog-header/dialog-header.component.mjs +7 -14
- package/esm2020/dialog/lib/dialog-link/dialog-link.component.mjs +4 -4
- package/esm2020/dialog/lib/dialog-modal/dialog-modal.component.mjs +29 -8
- package/esm2020/dialog/lib/dialog-overlay/dialog-overlay.animations.mjs +26 -0
- package/esm2020/dialog/lib/dialog-overlay/dialog-overlay.component.mjs +29 -84
- package/esm2020/dialog/lib/dialog.insertion.mjs +3 -3
- package/esm2020/dialog/lib/dialog.module.mjs +4 -4
- package/esm2020/dialog/lib/dialog.service.mjs +8 -7
- package/esm2020/elements/lib/avatar/avatar.component.mjs +8 -6
- package/esm2020/elements/lib/button/button.component.mjs +6 -6
- package/esm2020/elements/lib/checkbox/checkbox.component.mjs +3 -3
- package/esm2020/elements/lib/date-picker/date-picker.component.mjs +3 -3
- package/esm2020/elements/lib/directives/addon.directive.mjs +6 -6
- package/esm2020/elements/lib/directives/autosize.directive.mjs +3 -3
- package/esm2020/elements/lib/directives/focus-trap.directive.mjs +5 -5
- package/esm2020/elements/lib/directives/focus.directive.mjs +7 -9
- package/esm2020/elements/lib/directives/form-submit.directive.mjs +3 -3
- package/esm2020/elements/lib/directives/form-submitter.directive.mjs +3 -3
- package/esm2020/elements/lib/directives/input.directive.mjs +6 -6
- package/esm2020/elements/lib/directives/template.directive.mjs +3 -3
- package/esm2020/elements/lib/dropdown/dropdown.component.mjs +6 -6
- package/esm2020/elements/lib/elements.module.mjs +4 -4
- package/esm2020/elements/lib/file-picker/file-picker.component.mjs +3 -3
- package/esm2020/elements/lib/form-control/form-control.component.mjs +3 -3
- package/esm2020/elements/lib/form-error/form-error.component.mjs +3 -3
- package/esm2020/elements/lib/form-group/form-group.component.mjs +3 -3
- package/esm2020/elements/lib/icon/icon.component.mjs +3 -3
- package/esm2020/elements/lib/image-picker/image-picker.component.mjs +3 -3
- package/esm2020/elements/lib/pipes/file-image.pipe.mjs +8 -7
- package/esm2020/elements/lib/pipes/file-size.pipe.mjs +3 -3
- package/esm2020/elements/lib/pipes/relative-time.pipe.mjs +3 -3
- package/esm2020/elements/lib/spinner/spinner.component.mjs +3 -3
- package/esm2020/elements/lib/tag/tag.component.mjs +3 -3
- package/esm2020/http/lib/http.module.mjs +4 -4
- package/esm2020/http/lib/interceptors/base-url.interceptor.mjs +3 -3
- package/esm2020/http/lib/interceptors/error.interceptor.mjs +3 -3
- package/esm2020/lib/core/services/clipboard.service.mjs +5 -5
- package/esm2020/lib/core/services/exif.service.mjs +5 -5
- package/esm2020/lib/core/services/file-loader.service.mjs +3 -3
- package/esm2020/lib/core/services/image-converter.service.mjs +5 -5
- package/esm2020/lib/core/services/languages.service.mjs +3 -3
- package/esm2020/lib/core/services/network.service.mjs +7 -7
- package/esm2020/lib/core/services/patch.service.mjs +7 -7
- package/esm2020/localize/lib/localize.module.mjs +4 -4
- package/esm2020/localize/lib/localize.pipe.mjs +3 -3
- package/esm2020/localize/lib/localize.service.mjs +5 -5
- package/esm2020/localize/lib/views/localize-string/localize-string.component.mjs +3 -3
- package/esm2020/localize/lib/views/localize-template-or-string.directive.mjs +3 -3
- package/esm2020/localize/lib/views/localize-template.directive.mjs +3 -3
- package/esm2020/masking/lib/directives/currency-mask.directive.mjs +3 -3
- package/esm2020/masking/lib/directives/date-mask.directive.mjs +3 -3
- package/esm2020/masking/lib/directives/input-mask.directive.mjs +3 -3
- package/esm2020/masking/lib/masking.module.mjs +4 -4
- package/esm2020/masking/lib/masking.service.mjs +3 -3
- package/esm2020/notifications/lib/notifications-item/notifications-item.component.mjs +5 -5
- package/esm2020/notifications/lib/notifications-list/notifications-list.component.mjs +7 -7
- package/esm2020/notifications/lib/notifications.module.mjs +4 -4
- package/esm2020/notifications/lib/notifications.service.mjs +5 -5
- package/esm2020/public_api.mjs +1 -2
- package/esm2020/recaptcha/lib/recaptcha/recaptcha.component.mjs +3 -3
- package/esm2020/recaptcha/lib/recaptcha-loader.service.mjs +10 -10
- package/esm2020/recaptcha/lib/recaptcha.module.mjs +4 -4
- package/esm2020/storage/lib/storage.service.mjs +5 -5
- package/esm2020/table/lib/components/table/table.component.mjs +9 -9
- package/esm2020/table/lib/components/table-cell/table-cell.component.mjs +3 -3
- package/esm2020/table/lib/components/table-header-cell/table-header-cell.component.mjs +3 -3
- package/esm2020/table/lib/components/table-pager/table-pager.component.mjs +3 -3
- package/esm2020/table/lib/table.module.mjs +4 -4
- package/esm2020/theming/lib/themes/checkbox-group.theme.mjs +17 -2
- package/esm2020/theming/lib/themes/checkbox.theme.mjs +35 -2
- package/esm2020/theming/lib/themes/control-error.theme.mjs +11 -0
- package/esm2020/theming/lib/themes/form-control-addon.theme.mjs +6 -0
- package/esm2020/theming/lib/themes/form-control.theme.mjs +45 -0
- package/esm2020/theming/lib/theming.data.mjs +82 -0
- package/esm2020/theming/lib/theming.directive.mjs +38 -0
- package/esm2020/theming/lib/theming.interface.mjs +2 -3
- package/esm2020/theming/lib/theming.module.mjs +12 -34
- package/esm2020/theming/lib/utils/theming.variable.mjs +41 -0
- package/esm2020/theming/public_api.mjs +6 -3
- package/fesm2015/bravobit-bb-foundation-auth.mjs +326 -284
- package/fesm2015/bravobit-bb-foundation-auth.mjs.map +1 -1
- package/fesm2015/bravobit-bb-foundation-collections.mjs +22 -22
- package/fesm2015/bravobit-bb-foundation-controls.mjs +493 -24
- package/fesm2015/bravobit-bb-foundation-controls.mjs.map +1 -1
- package/fesm2015/bravobit-bb-foundation-dashboard.mjs +29 -28
- package/fesm2015/bravobit-bb-foundation-dashboard.mjs.map +1 -1
- package/fesm2015/bravobit-bb-foundation-dialog.mjs +185 -233
- package/fesm2015/bravobit-bb-foundation-dialog.mjs.map +1 -1
- package/fesm2015/bravobit-bb-foundation-elements.mjs +99 -97
- package/fesm2015/bravobit-bb-foundation-elements.mjs.map +1 -1
- package/fesm2015/bravobit-bb-foundation-http.mjs +10 -10
- package/fesm2015/bravobit-bb-foundation-localize.mjs +20 -20
- package/fesm2015/bravobit-bb-foundation-localize.mjs.map +1 -1
- package/fesm2015/bravobit-bb-foundation-masking.mjs +16 -16
- package/fesm2015/bravobit-bb-foundation-notifications.mjs +18 -17
- package/fesm2015/bravobit-bb-foundation-notifications.mjs.map +1 -1
- package/fesm2015/bravobit-bb-foundation-recaptcha.mjs +16 -16
- package/fesm2015/bravobit-bb-foundation-recaptcha.mjs.map +1 -1
- package/fesm2015/bravobit-bb-foundation-storage.mjs +4 -4
- package/fesm2015/bravobit-bb-foundation-storage.mjs.map +1 -1
- package/fesm2015/bravobit-bb-foundation-table.mjs +22 -22
- package/fesm2015/bravobit-bb-foundation-theming.mjs +251 -128
- package/fesm2015/bravobit-bb-foundation-theming.mjs.map +1 -1
- package/fesm2015/bravobit-bb-foundation.mjs +33 -73
- package/fesm2015/bravobit-bb-foundation.mjs.map +1 -1
- package/fesm2020/bravobit-bb-foundation-auth.mjs +306 -277
- package/fesm2020/bravobit-bb-foundation-auth.mjs.map +1 -1
- package/fesm2020/bravobit-bb-foundation-collections.mjs +22 -22
- package/fesm2020/bravobit-bb-foundation-controls.mjs +477 -24
- package/fesm2020/bravobit-bb-foundation-controls.mjs.map +1 -1
- package/fesm2020/bravobit-bb-foundation-dashboard.mjs +29 -28
- package/fesm2020/bravobit-bb-foundation-dashboard.mjs.map +1 -1
- package/fesm2020/bravobit-bb-foundation-dialog.mjs +175 -233
- package/fesm2020/bravobit-bb-foundation-dialog.mjs.map +1 -1
- package/fesm2020/bravobit-bb-foundation-elements.mjs +99 -97
- package/fesm2020/bravobit-bb-foundation-elements.mjs.map +1 -1
- package/fesm2020/bravobit-bb-foundation-http.mjs +10 -10
- package/fesm2020/bravobit-bb-foundation-localize.mjs +20 -20
- package/fesm2020/bravobit-bb-foundation-localize.mjs.map +1 -1
- package/fesm2020/bravobit-bb-foundation-masking.mjs +16 -16
- package/fesm2020/bravobit-bb-foundation-notifications.mjs +17 -17
- package/fesm2020/bravobit-bb-foundation-notifications.mjs.map +1 -1
- package/fesm2020/bravobit-bb-foundation-recaptcha.mjs +16 -16
- package/fesm2020/bravobit-bb-foundation-recaptcha.mjs.map +1 -1
- package/fesm2020/bravobit-bb-foundation-storage.mjs +4 -4
- package/fesm2020/bravobit-bb-foundation-storage.mjs.map +1 -1
- package/fesm2020/bravobit-bb-foundation-table.mjs +22 -22
- package/fesm2020/bravobit-bb-foundation-theming.mjs +252 -120
- package/fesm2020/bravobit-bb-foundation-theming.mjs.map +1 -1
- package/fesm2020/bravobit-bb-foundation.mjs +32 -70
- package/fesm2020/bravobit-bb-foundation.mjs.map +1 -1
- package/lib/core/services/clipboard.service.d.ts +2 -2
- package/lib/core/services/exif.service.d.ts +1 -1
- package/lib/core/services/image-converter.service.d.ts +1 -1
- package/lib/core/services/network.service.d.ts +4 -4
- package/lib/core/services/patch.service.d.ts +4 -4
- package/localize/lib/localize.service.d.ts +1 -1
- package/notifications/lib/notifications-item/notifications-item.component.d.ts +1 -1
- package/notifications/lib/notifications.service.d.ts +1 -1
- package/package.json +4 -4
- package/public_api.d.ts +0 -1
- package/recaptcha/lib/recaptcha-loader.service.d.ts +3 -3
- package/storage/lib/storage.service.d.ts +1 -1
- package/theming/lib/themes/checkbox-group.theme.d.ts +14 -3
- package/theming/lib/themes/checkbox.theme.d.ts +30 -17
- package/theming/lib/themes/control-error.theme.d.ts +9 -0
- package/theming/lib/themes/form-control-addon.theme.d.ts +5 -0
- package/theming/lib/themes/form-control.theme.d.ts +32 -0
- package/theming/lib/theming.data.d.ts +17 -0
- package/theming/lib/theming.directive.d.ts +13 -0
- package/theming/lib/theming.interface.d.ts +19 -8
- package/theming/lib/theming.module.d.ts +3 -9
- package/theming/lib/utils/theming.variable.d.ts +16 -0
- package/theming/public_api.d.ts +5 -2
- package/auth/lib/directives/role.directive.d.ts +0 -16
- package/auth/lib/helpers/mapper.helper.d.ts +0 -23
- package/auth/lib/interfaces/mapper.interface.d.ts +0 -19
- package/auth/lib/permissions.service.d.ts +0 -14
- package/esm2020/auth/lib/directives/role.directive.mjs +0 -37
- package/esm2020/auth/lib/helpers/mapper.helper.mjs +0 -35
- package/esm2020/auth/lib/interfaces/mapper.interface.mjs +0 -2
- package/esm2020/auth/lib/permissions.service.mjs +0 -56
- package/esm2020/lib/core/services/platform.service.mjs +0 -42
- package/esm2020/theming/lib/themes/theme.mjs +0 -34
- package/esm2020/theming/lib/theming.service.mjs +0 -77
- package/lib/core/services/platform.service.d.ts +0 -18
- package/theming/lib/themes/theme.d.ts +0 -12
- package/theming/lib/theming.service.d.ts +0 -22
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ApplicationRef, ComponentFactoryResolver, Injector, TemplateRef } from '@angular/core';
|
|
2
2
|
import { Notification, NotificationAction, NotificationsConfig } from './notifications.interfaces';
|
|
3
3
|
import { Localize } from '@bravobit/bb-foundation/localize';
|
|
4
|
-
import { Platform } from '@
|
|
4
|
+
import { Platform } from '@angular/cdk/platform';
|
|
5
5
|
import * as i0 from "@angular/core";
|
|
6
6
|
export declare class Notifications {
|
|
7
7
|
private _injector;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bravobit/bb-foundation",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.22.0",
|
|
4
4
|
"description": "The Angular core foundation of the Bravobit team.",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Stan van Heumen",
|
|
@@ -8,9 +8,9 @@
|
|
|
8
8
|
"url": "https://bravobit.nl"
|
|
9
9
|
},
|
|
10
10
|
"peerDependencies": {
|
|
11
|
-
"@angular/common": "^14.
|
|
12
|
-
"@angular/core": "^14.
|
|
13
|
-
"@angular/cdk": "^14.
|
|
11
|
+
"@angular/common": "^14.1.0",
|
|
12
|
+
"@angular/core": "^14.1.0",
|
|
13
|
+
"@angular/cdk": "^14.1.0"
|
|
14
14
|
},
|
|
15
15
|
"dependencies": {
|
|
16
16
|
"tslib": "^2.4.0",
|
package/public_api.d.ts
CHANGED
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
/// <reference types="grecaptcha" />
|
|
2
2
|
import { RendererFactory2 } from '@angular/core';
|
|
3
3
|
import { RecaptchaConfig } from './recaptcha.interface';
|
|
4
|
-
import { Platform } from '@
|
|
4
|
+
import { Platform } from '@angular/cdk/platform';
|
|
5
5
|
import { BehaviorSubject } from 'rxjs';
|
|
6
6
|
import * as i0 from "@angular/core";
|
|
7
7
|
export declare class RecaptchaLoader {
|
|
8
8
|
private _platform;
|
|
9
9
|
private _renderFactory;
|
|
10
|
-
private _document?;
|
|
11
10
|
private _localeId?;
|
|
11
|
+
private _document?;
|
|
12
12
|
private _config?;
|
|
13
13
|
readonly ready$: BehaviorSubject<ReCaptchaV2.ReCaptcha | null> | null;
|
|
14
14
|
private readonly _windowLoadFn;
|
|
15
15
|
private readonly _renderer;
|
|
16
|
-
constructor(_platform: Platform, _renderFactory: RendererFactory2,
|
|
16
|
+
constructor(_platform: Platform, _renderFactory: RendererFactory2, _localeId?: string, _document?: Document, _config?: RecaptchaConfig);
|
|
17
17
|
private createScript;
|
|
18
18
|
private getUrl;
|
|
19
19
|
private getQueryParams;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { StorageOption, StorageStrategy } from './interfaces/strategy.interface';
|
|
2
2
|
import { StorageAttributes } from './interfaces/attributes.interface';
|
|
3
|
-
import { Platform } from '@
|
|
3
|
+
import { Platform } from '@angular/cdk/platform';
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
5
5
|
export declare class Storage implements StorageStrategy {
|
|
6
6
|
private _platform;
|
|
@@ -1,5 +1,16 @@
|
|
|
1
|
+
import { ThemeVariable } from '../utils/theming.variable';
|
|
1
2
|
export interface CheckboxGroupTheme {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
grouping: ThemeVariable;
|
|
4
|
+
label: {
|
|
5
|
+
color: ThemeVariable;
|
|
6
|
+
fontSize: ThemeVariable;
|
|
7
|
+
fontWeight: ThemeVariable;
|
|
8
|
+
lineHeight: ThemeVariable;
|
|
9
|
+
offset: ThemeVariable;
|
|
10
|
+
};
|
|
11
|
+
spacing: {
|
|
12
|
+
horizontal: ThemeVariable;
|
|
13
|
+
vertical: ThemeVariable;
|
|
14
|
+
};
|
|
5
15
|
}
|
|
16
|
+
export declare function checkboxGroupThemeFactory(): CheckboxGroupTheme;
|
|
@@ -1,19 +1,32 @@
|
|
|
1
|
+
import { ThemeVariable } from '../utils/theming.variable';
|
|
1
2
|
export interface CheckboxTheme {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
3
|
+
size: ThemeVariable;
|
|
4
|
+
grouping: ThemeVariable;
|
|
5
|
+
colors: {
|
|
6
|
+
accent: ThemeVariable;
|
|
7
|
+
disabled: ThemeVariable;
|
|
8
|
+
};
|
|
9
|
+
border: {
|
|
10
|
+
color: ThemeVariable;
|
|
11
|
+
thickness: ThemeVariable;
|
|
12
|
+
radius: ThemeVariable;
|
|
13
|
+
};
|
|
14
|
+
outline: {
|
|
15
|
+
color: ThemeVariable;
|
|
16
|
+
offset: ThemeVariable;
|
|
17
|
+
thickness: ThemeVariable;
|
|
18
|
+
};
|
|
19
|
+
check: {
|
|
20
|
+
size: ThemeVariable;
|
|
21
|
+
color: ThemeVariable;
|
|
22
|
+
thickness: ThemeVariable;
|
|
23
|
+
};
|
|
24
|
+
label: {
|
|
25
|
+
color: ThemeVariable;
|
|
26
|
+
fontSize: ThemeVariable;
|
|
27
|
+
fontWeight: ThemeVariable;
|
|
28
|
+
lineHeight: ThemeVariable;
|
|
29
|
+
offset: ThemeVariable;
|
|
30
|
+
};
|
|
19
31
|
}
|
|
32
|
+
export declare function checkboxThemeFactory(): CheckboxTheme;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { ThemeVariable } from '../utils/theming.variable';
|
|
2
|
+
export interface ControlErrorTheme {
|
|
3
|
+
color: ThemeVariable;
|
|
4
|
+
fontSize: ThemeVariable;
|
|
5
|
+
lineHeight: ThemeVariable;
|
|
6
|
+
fontWeight: ThemeVariable;
|
|
7
|
+
spacing: ThemeVariable;
|
|
8
|
+
}
|
|
9
|
+
export declare function controlErrorThemeFactory(): ControlErrorTheme;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { ThemeVariable } from '../utils/theming.variable';
|
|
2
|
+
interface BorderTheme {
|
|
3
|
+
radius: ThemeVariable;
|
|
4
|
+
width: ThemeVariable;
|
|
5
|
+
style: ThemeVariable;
|
|
6
|
+
color: ThemeVariable;
|
|
7
|
+
}
|
|
8
|
+
export interface FormControlTheme {
|
|
9
|
+
grouping: ThemeVariable;
|
|
10
|
+
color: ThemeVariable;
|
|
11
|
+
background: ThemeVariable;
|
|
12
|
+
error: {
|
|
13
|
+
color: ThemeVariable;
|
|
14
|
+
background: ThemeVariable;
|
|
15
|
+
placeholderColor: ThemeVariable;
|
|
16
|
+
};
|
|
17
|
+
border: BorderTheme;
|
|
18
|
+
focused: {
|
|
19
|
+
color: ThemeVariable;
|
|
20
|
+
background: ThemeVariable;
|
|
21
|
+
shadow: ThemeVariable;
|
|
22
|
+
border: BorderTheme;
|
|
23
|
+
};
|
|
24
|
+
disabled: {
|
|
25
|
+
color: ThemeVariable;
|
|
26
|
+
background: ThemeVariable;
|
|
27
|
+
opacity: ThemeVariable;
|
|
28
|
+
border: BorderTheme;
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
export declare function formControlThemeFactory(): FormControlTheme;
|
|
32
|
+
export {};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { GlobalTheme, GlobalVariables, PartialGlobalTheme } from './theming.interface';
|
|
2
|
+
export declare class Theme {
|
|
3
|
+
protected readonly data: GlobalTheme;
|
|
4
|
+
protected readonly globals: GlobalVariables;
|
|
5
|
+
constructor(theme?: PartialGlobalTheme);
|
|
6
|
+
variables(): any;
|
|
7
|
+
protected defaultFactories(): GlobalTheme;
|
|
8
|
+
protected getContents(data: object, scope?: string | null): any;
|
|
9
|
+
protected getToken(key: string, scope: string): string;
|
|
10
|
+
protected tokenize(value: string): string;
|
|
11
|
+
protected mergeThemeData(target: GlobalTheme, ...sources: PartialGlobalTheme[]): any;
|
|
12
|
+
protected getGlobals(): {
|
|
13
|
+
accentColor: `#${string}`;
|
|
14
|
+
errorColor: `#${string}`;
|
|
15
|
+
};
|
|
16
|
+
private isObject;
|
|
17
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { ElementRef, Renderer2 } from '@angular/core';
|
|
2
|
+
import { Theme } from './theming.data';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export declare class BbiTheming {
|
|
5
|
+
private _renderer;
|
|
6
|
+
private _elementRef;
|
|
7
|
+
set theme(theme: Theme | null);
|
|
8
|
+
private _theme;
|
|
9
|
+
constructor(_renderer: Renderer2, _elementRef: ElementRef);
|
|
10
|
+
private setTheme;
|
|
11
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<BbiTheming, never>;
|
|
12
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<BbiTheming, "[bbiTheming]", never, { "theme": "bbiTheming"; }, {}, never, never, false>;
|
|
13
|
+
}
|
|
@@ -1,15 +1,26 @@
|
|
|
1
|
+
import { FormControlAddonTheme } from './themes/form-control-addon.theme';
|
|
1
2
|
import { CheckboxGroupTheme } from './themes/checkbox-group.theme';
|
|
3
|
+
import { ControlErrorTheme } from './themes/control-error.theme';
|
|
4
|
+
import { FormControlTheme } from './themes/form-control.theme';
|
|
2
5
|
import { CheckboxTheme } from './themes/checkbox.theme';
|
|
3
|
-
import { Theme } from './themes/theme';
|
|
4
|
-
export declare class ThemingOptions {
|
|
5
|
-
themes: Theme[];
|
|
6
|
-
}
|
|
7
6
|
export declare type ThemeDataRecord = Record<string, string> | string;
|
|
8
|
-
export
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
7
|
+
export declare type ColorString = `#${string}`;
|
|
8
|
+
export interface GlobalTheme {
|
|
9
|
+
accentColor: ColorString;
|
|
10
|
+
errorColor: ColorString;
|
|
11
|
+
formControl: FormControlTheme;
|
|
12
|
+
formControlAddon: FormControlAddonTheme;
|
|
13
|
+
checkbox: CheckboxTheme;
|
|
14
|
+
checkboxGroup: CheckboxGroupTheme;
|
|
15
|
+
controlError: ControlErrorTheme;
|
|
12
16
|
custom?: {
|
|
13
17
|
[key: string]: ThemeDataRecord;
|
|
14
18
|
};
|
|
15
19
|
}
|
|
20
|
+
declare type Subset<K> = {
|
|
21
|
+
[attr in keyof K]?: K[attr] extends object ? Subset<K[attr]> : K[attr];
|
|
22
|
+
};
|
|
23
|
+
export declare type PartialGlobalTheme = Subset<GlobalTheme>;
|
|
24
|
+
export declare type GlobalVariables = Pick<GlobalTheme, 'accentColor' | 'errorColor'>;
|
|
25
|
+
export declare type GlobalVariablesKey = keyof GlobalVariables;
|
|
26
|
+
export {};
|
|
@@ -1,13 +1,7 @@
|
|
|
1
|
-
import { ModuleWithProviders } from '@angular/core';
|
|
2
|
-
import { ThemingOptions } from './theming.interface';
|
|
3
|
-
import { Theming } from './theming.service';
|
|
4
1
|
import * as i0 from "@angular/core";
|
|
2
|
+
import * as i1 from "./theming.directive";
|
|
5
3
|
export declare class ThemingModule {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
static forRoot(options: ThemingOptions): ModuleWithProviders<ThemingModule>;
|
|
9
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<ThemingModule, [{ optional: true; skipSelf: true; }]>;
|
|
10
|
-
static ɵmod: i0.ɵɵNgModuleDeclaration<ThemingModule, never, never, never>;
|
|
4
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ThemingModule, never>;
|
|
5
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<ThemingModule, [typeof i1.BbiTheming], never, [typeof i1.BbiTheming]>;
|
|
11
6
|
static ɵinj: i0.ɵɵInjectorDeclaration<ThemingModule>;
|
|
12
7
|
}
|
|
13
|
-
export declare function initializeTheme(_: Theming): () => {};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { GlobalVariables, GlobalVariablesKey } from '../theming.interface';
|
|
2
|
+
export declare type ThemeVariable = ThemeVariableFunction | string;
|
|
3
|
+
export declare abstract class ThemeVariableFunction {
|
|
4
|
+
private _key;
|
|
5
|
+
protected constructor(_key: GlobalVariablesKey);
|
|
6
|
+
abstract format(value: string): string;
|
|
7
|
+
toString(variables: GlobalVariables): string;
|
|
8
|
+
}
|
|
9
|
+
export declare class ThemeColorVariable extends ThemeVariableFunction {
|
|
10
|
+
private _opacity;
|
|
11
|
+
constructor(key: GlobalVariablesKey);
|
|
12
|
+
format(value: string): string;
|
|
13
|
+
opacity(value: number): this;
|
|
14
|
+
private toRgba;
|
|
15
|
+
private hexToRgb;
|
|
16
|
+
}
|
package/theming/public_api.d.ts
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
export * from './lib/theming.interface';
|
|
2
|
-
export * from './lib/theming.
|
|
2
|
+
export * from './lib/theming.directive';
|
|
3
|
+
export * from './lib/theming.data';
|
|
3
4
|
export * from './lib/theming.module';
|
|
4
5
|
export * from './lib/themes/checkbox.theme';
|
|
5
6
|
export * from './lib/themes/checkbox-group.theme';
|
|
6
|
-
export * from './lib/themes/theme';
|
|
7
|
+
export * from './lib/themes/form-control.theme';
|
|
8
|
+
export * from './lib/themes/form-control-addon.theme';
|
|
9
|
+
export * from './lib/utils/theming.variable';
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { OnDestroy, OnInit, TemplateRef, ViewContainerRef } from '@angular/core';
|
|
2
|
-
import { Auth } from '../auth.service';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
export declare class BbRole implements OnInit, OnDestroy {
|
|
5
|
-
private _auth;
|
|
6
|
-
private _template;
|
|
7
|
-
private _viewContainerRef;
|
|
8
|
-
bbRole: string | string[];
|
|
9
|
-
private _subscription;
|
|
10
|
-
constructor(_auth: Auth, _template: TemplateRef<any>, _viewContainerRef: ViewContainerRef);
|
|
11
|
-
ngOnInit(): void;
|
|
12
|
-
ngOnDestroy(): void;
|
|
13
|
-
private getAllowedRoles;
|
|
14
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<BbRole, never>;
|
|
15
|
-
static ɵdir: i0.ɵɵDirectiveDeclaration<BbRole, "[bbRole]", never, { "bbRole": "bbRole"; }, {}, never, never, false>;
|
|
16
|
-
}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import { AuthMapperProtocol } from '../interfaces/mapper.interface';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
export declare class AuthMapper implements AuthMapperProtocol {
|
|
4
|
-
me: string;
|
|
5
|
-
register: string;
|
|
6
|
-
resendCode: string;
|
|
7
|
-
logout: string;
|
|
8
|
-
refresh: string;
|
|
9
|
-
requestPassword: string;
|
|
10
|
-
resetPassword: string;
|
|
11
|
-
role(data: any): any;
|
|
12
|
-
toRegister(data: any): {
|
|
13
|
-
accessToken: any;
|
|
14
|
-
refreshToken: any;
|
|
15
|
-
user: any;
|
|
16
|
-
};
|
|
17
|
-
toRefresh(data: any): {
|
|
18
|
-
accessToken: any;
|
|
19
|
-
refreshToken: any;
|
|
20
|
-
};
|
|
21
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<AuthMapper, never>;
|
|
22
|
-
static ɵprov: i0.ɵɵInjectableDeclaration<AuthMapper>;
|
|
23
|
-
}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
export interface AuthMapperProtocol {
|
|
2
|
-
me: string;
|
|
3
|
-
register: string;
|
|
4
|
-
logout: string;
|
|
5
|
-
refresh: string;
|
|
6
|
-
resendCode: string;
|
|
7
|
-
resetPassword: string;
|
|
8
|
-
requestPassword: string;
|
|
9
|
-
role(data: any): string;
|
|
10
|
-
toRegister(data: any): AuthUserTokenResponse;
|
|
11
|
-
toRefresh(data: any): AuthTokenResponse;
|
|
12
|
-
}
|
|
13
|
-
export interface AuthTokenResponse {
|
|
14
|
-
accessToken: string;
|
|
15
|
-
refreshToken: string;
|
|
16
|
-
}
|
|
17
|
-
export interface AuthUserTokenResponse extends AuthTokenResponse {
|
|
18
|
-
user: object;
|
|
19
|
-
}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { AuthConfig } from './interfaces/config.interface';
|
|
2
|
-
import { Auth } from './auth.service';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
export declare class Permissions {
|
|
5
|
-
private _auth;
|
|
6
|
-
private _config?;
|
|
7
|
-
private readonly _permissions;
|
|
8
|
-
private readonly _role$;
|
|
9
|
-
constructor(_auth: Auth, _config?: AuthConfig);
|
|
10
|
-
has(value: string | string[]): import("rxjs").Observable<boolean>;
|
|
11
|
-
private validatePermission;
|
|
12
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<Permissions, [null, { optional: true; }]>;
|
|
13
|
-
static ɵprov: i0.ɵɵInjectableDeclaration<Permissions>;
|
|
14
|
-
}
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import { Directive, Input } from '@angular/core';
|
|
2
|
-
import { distinctUntilChanged, map } from 'rxjs/operators';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "../auth.service";
|
|
5
|
-
export class BbRole {
|
|
6
|
-
constructor(_auth, _template, _viewContainerRef) {
|
|
7
|
-
this._auth = _auth;
|
|
8
|
-
this._template = _template;
|
|
9
|
-
this._viewContainerRef = _viewContainerRef;
|
|
10
|
-
this.getAllowedRoles = (value) => {
|
|
11
|
-
return Array.isArray(value) ? value : [value];
|
|
12
|
-
};
|
|
13
|
-
}
|
|
14
|
-
ngOnInit() {
|
|
15
|
-
this._subscription = this._auth.user.pipe(map(user => user?.role ?? null), distinctUntilChanged()).subscribe(role => {
|
|
16
|
-
const allowedRoles = this.getAllowedRoles(this.bbRole);
|
|
17
|
-
if (!allowedRoles.includes(role)) {
|
|
18
|
-
return this._viewContainerRef.clear();
|
|
19
|
-
}
|
|
20
|
-
this._viewContainerRef.createEmbeddedView(this._template);
|
|
21
|
-
});
|
|
22
|
-
}
|
|
23
|
-
ngOnDestroy() {
|
|
24
|
-
this._subscription?.unsubscribe();
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
BbRole.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.5", ngImport: i0, type: BbRole, deps: [{ token: i1.Auth }, { token: i0.TemplateRef }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
28
|
-
BbRole.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.0.5", type: BbRole, selector: "[bbRole]", inputs: { bbRole: "bbRole" }, ngImport: i0 });
|
|
29
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.5", ngImport: i0, type: BbRole, decorators: [{
|
|
30
|
-
type: Directive,
|
|
31
|
-
args: [{
|
|
32
|
-
selector: '[bbRole]'
|
|
33
|
-
}]
|
|
34
|
-
}], ctorParameters: function () { return [{ type: i1.Auth }, { type: i0.TemplateRef }, { type: i0.ViewContainerRef }]; }, propDecorators: { bbRole: [{
|
|
35
|
-
type: Input
|
|
36
|
-
}] } });
|
|
37
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9sZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYi1mb3VuZGF0aW9uL2F1dGgvc3JjL2xpYi9kaXJlY3RpdmVzL3JvbGUuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsS0FBSyxFQUFtRCxNQUFNLGVBQWUsQ0FBQztBQUNqRyxPQUFPLEVBQUMsb0JBQW9CLEVBQUUsR0FBRyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7OztBQU96RCxNQUFNLE9BQU8sTUFBTTtJQVFmLFlBQW9CLEtBQVcsRUFDWCxTQUEyQixFQUMzQixpQkFBbUM7UUFGbkMsVUFBSyxHQUFMLEtBQUssQ0FBTTtRQUNYLGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBQzNCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBa0I7UUFzQi9DLG9CQUFlLEdBQUcsQ0FBQyxLQUF3QixFQUFFLEVBQUU7WUFDbkQsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbEQsQ0FBQyxDQUFDO0lBdkJGLENBQUM7SUFFRCxRQUFRO1FBQ0osSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQ3JDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxJQUFJLElBQUksSUFBSSxDQUFDLEVBQy9CLG9CQUFvQixFQUFFLENBQ3pCLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ2YsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7WUFFdkQsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQzlCLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssRUFBRSxDQUFDO2FBQ3pDO1lBRUQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM5RCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxXQUFXO1FBQ1AsSUFBSSxDQUFDLGFBQWEsRUFBRSxXQUFXLEVBQUUsQ0FBQztJQUN0QyxDQUFDOzttR0E5QlEsTUFBTTt1RkFBTixNQUFNOzJGQUFOLE1BQU07a0JBSGxCLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLFVBQVU7aUJBQ3ZCO29KQUlZLE1BQU07c0JBQWQsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RGlyZWN0aXZlLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIFRlbXBsYXRlUmVmLCBWaWV3Q29udGFpbmVyUmVmfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7ZGlzdGluY3RVbnRpbENoYW5nZWQsIG1hcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtBdXRofSBmcm9tICcuLi9hdXRoLnNlcnZpY2UnO1xuaW1wb3J0IHtTdWJzY3JpcHRpb259IGZyb20gJ3J4anMnO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tiYlJvbGVdJ1xufSlcbmV4cG9ydCBjbGFzcyBCYlJvbGUgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG5cbiAgICAvLyBJbnB1dHMuXG4gICAgQElucHV0KCkgYmJSb2xlOiBzdHJpbmcgfCBzdHJpbmdbXTtcblxuICAgIC8vIFN1YnNjcmlwdGlvbnMuXG4gICAgcHJpdmF0ZSBfc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9hdXRoOiBBdXRoLFxuICAgICAgICAgICAgICAgIHByaXZhdGUgX3RlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+LFxuICAgICAgICAgICAgICAgIHByaXZhdGUgX3ZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYpIHtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5fc3Vic2NyaXB0aW9uID0gdGhpcy5fYXV0aC51c2VyLnBpcGUoXG4gICAgICAgICAgICBtYXAodXNlciA9PiB1c2VyPy5yb2xlID8/IG51bGwpLFxuICAgICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKVxuICAgICAgICApLnN1YnNjcmliZShyb2xlID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGFsbG93ZWRSb2xlcyA9IHRoaXMuZ2V0QWxsb3dlZFJvbGVzKHRoaXMuYmJSb2xlKTtcblxuICAgICAgICAgICAgaWYgKCFhbGxvd2VkUm9sZXMuaW5jbHVkZXMocm9sZSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fdmlld0NvbnRhaW5lclJlZi5jbGVhcigpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLl92aWV3Q29udGFpbmVyUmVmLmNyZWF0ZUVtYmVkZGVkVmlldyh0aGlzLl90ZW1wbGF0ZSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLl9zdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRBbGxvd2VkUm9sZXMgPSAodmFsdWU6IHN0cmluZyB8IHN0cmluZ1tdKSA9PiB7XG4gICAgICAgIHJldHVybiBBcnJheS5pc0FycmF5KHZhbHVlKSA/IHZhbHVlIDogW3ZhbHVlXTtcbiAgICB9O1xuXG59XG4iXX0=
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
export class AuthMapper {
|
|
4
|
-
constructor() {
|
|
5
|
-
// Routes.
|
|
6
|
-
this.me = 'auth/me';
|
|
7
|
-
this.register = 'auth/register';
|
|
8
|
-
this.resendCode = 'auth/resend';
|
|
9
|
-
this.logout = 'auth/logout';
|
|
10
|
-
this.refresh = 'auth/refresh';
|
|
11
|
-
this.requestPassword = 'auth/reset';
|
|
12
|
-
this.resetPassword = 'auth/reset-password';
|
|
13
|
-
}
|
|
14
|
-
role(data) {
|
|
15
|
-
return (data && data.role) || null;
|
|
16
|
-
}
|
|
17
|
-
toRegister(data) {
|
|
18
|
-
// Retrieve the params.
|
|
19
|
-
const { token, refresh_token, user } = data;
|
|
20
|
-
// Map the data to the correct format.
|
|
21
|
-
return { accessToken: token, refreshToken: refresh_token, user: user };
|
|
22
|
-
}
|
|
23
|
-
toRefresh(data) {
|
|
24
|
-
// Retrieve the params.
|
|
25
|
-
const { token, refresh_token } = data;
|
|
26
|
-
// Map the data to the correct format.
|
|
27
|
-
return { accessToken: token, refreshToken: refresh_token };
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
AuthMapper.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.5", ngImport: i0, type: AuthMapper, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
31
|
-
AuthMapper.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.0.5", ngImport: i0, type: AuthMapper });
|
|
32
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.5", ngImport: i0, type: AuthMapper, decorators: [{
|
|
33
|
-
type: Injectable
|
|
34
|
-
}] });
|
|
35
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwcGVyLmhlbHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JiLWZvdW5kYXRpb24vYXV0aC9zcmMvbGliL2hlbHBlcnMvbWFwcGVyLmhlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDOztBQUd6QyxNQUFNLE9BQU8sVUFBVTtJQUR2QjtRQUdJLFVBQVU7UUFDVixPQUFFLEdBQVcsU0FBUyxDQUFDO1FBQ3ZCLGFBQVEsR0FBVyxlQUFlLENBQUM7UUFDbkMsZUFBVSxHQUFXLGFBQWEsQ0FBQztRQUNuQyxXQUFNLEdBQVcsYUFBYSxDQUFDO1FBQy9CLFlBQU8sR0FBVyxjQUFjLENBQUM7UUFDakMsb0JBQWUsR0FBVyxZQUFZLENBQUM7UUFDdkMsa0JBQWEsR0FBVyxxQkFBcUIsQ0FBQztLQXNCakQ7SUFwQkcsSUFBSSxDQUFDLElBQVM7UUFDVixPQUFPLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUM7SUFDdkMsQ0FBQztJQUVELFVBQVUsQ0FBQyxJQUFTO1FBQ2hCLHVCQUF1QjtRQUN2QixNQUFNLEVBQUMsS0FBSyxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUMsR0FBRyxJQUFJLENBQUM7UUFFMUMsc0NBQXNDO1FBQ3RDLE9BQU8sRUFBQyxXQUFXLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBQyxDQUFDO0lBQ3pFLENBQUM7SUFFRCxTQUFTLENBQUMsSUFBUztRQUNmLHVCQUF1QjtRQUN2QixNQUFNLEVBQUMsS0FBSyxFQUFFLGFBQWEsRUFBQyxHQUFHLElBQUksQ0FBQztRQUVwQyxzQ0FBc0M7UUFDdEMsT0FBTyxFQUFDLFdBQVcsRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBQyxDQUFDO0lBQzdELENBQUM7O3VHQTdCUSxVQUFVOzJHQUFWLFVBQVU7MkZBQVYsVUFBVTtrQkFEdEIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QXV0aE1hcHBlclByb3RvY29sfSBmcm9tICcuLi9pbnRlcmZhY2VzL21hcHBlci5pbnRlcmZhY2UnO1xuaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEF1dGhNYXBwZXIgaW1wbGVtZW50cyBBdXRoTWFwcGVyUHJvdG9jb2wge1xuXG4gICAgLy8gUm91dGVzLlxuICAgIG1lOiBzdHJpbmcgPSAnYXV0aC9tZSc7XG4gICAgcmVnaXN0ZXI6IHN0cmluZyA9ICdhdXRoL3JlZ2lzdGVyJztcbiAgICByZXNlbmRDb2RlOiBzdHJpbmcgPSAnYXV0aC9yZXNlbmQnO1xuICAgIGxvZ291dDogc3RyaW5nID0gJ2F1dGgvbG9nb3V0JztcbiAgICByZWZyZXNoOiBzdHJpbmcgPSAnYXV0aC9yZWZyZXNoJztcbiAgICByZXF1ZXN0UGFzc3dvcmQ6IHN0cmluZyA9ICdhdXRoL3Jlc2V0JztcbiAgICByZXNldFBhc3N3b3JkOiBzdHJpbmcgPSAnYXV0aC9yZXNldC1wYXNzd29yZCc7XG5cbiAgICByb2xlKGRhdGE6IGFueSkge1xuICAgICAgICByZXR1cm4gKGRhdGEgJiYgZGF0YS5yb2xlKSB8fCBudWxsO1xuICAgIH1cblxuICAgIHRvUmVnaXN0ZXIoZGF0YTogYW55KSB7XG4gICAgICAgIC8vIFJldHJpZXZlIHRoZSBwYXJhbXMuXG4gICAgICAgIGNvbnN0IHt0b2tlbiwgcmVmcmVzaF90b2tlbiwgdXNlcn0gPSBkYXRhO1xuXG4gICAgICAgIC8vIE1hcCB0aGUgZGF0YSB0byB0aGUgY29ycmVjdCBmb3JtYXQuXG4gICAgICAgIHJldHVybiB7YWNjZXNzVG9rZW46IHRva2VuLCByZWZyZXNoVG9rZW46IHJlZnJlc2hfdG9rZW4sIHVzZXI6IHVzZXJ9O1xuICAgIH1cblxuICAgIHRvUmVmcmVzaChkYXRhOiBhbnkpIHtcbiAgICAgICAgLy8gUmV0cmlldmUgdGhlIHBhcmFtcy5cbiAgICAgICAgY29uc3Qge3Rva2VuLCByZWZyZXNoX3Rva2VufSA9IGRhdGE7XG5cbiAgICAgICAgLy8gTWFwIHRoZSBkYXRhIHRvIHRoZSBjb3JyZWN0IGZvcm1hdC5cbiAgICAgICAgcmV0dXJuIHthY2Nlc3NUb2tlbjogdG9rZW4sIHJlZnJlc2hUb2tlbjogcmVmcmVzaF90b2tlbn07XG4gICAgfVxuXG59XG4iXX0=
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwcGVyLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JiLWZvdW5kYXRpb24vYXV0aC9zcmMvbGliL2ludGVyZmFjZXMvbWFwcGVyLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBBdXRoTWFwcGVyUHJvdG9jb2wge1xuICAgIC8vIFJvdXRlcy5cbiAgICBtZTogc3RyaW5nO1xuICAgIHJlZ2lzdGVyOiBzdHJpbmc7XG4gICAgbG9nb3V0OiBzdHJpbmc7XG4gICAgcmVmcmVzaDogc3RyaW5nO1xuICAgIHJlc2VuZENvZGU6IHN0cmluZztcbiAgICByZXNldFBhc3N3b3JkOiBzdHJpbmc7XG4gICAgcmVxdWVzdFBhc3N3b3JkOiBzdHJpbmc7XG5cbiAgICAvLyBNZXRob2RzLlxuICAgIHJvbGUoZGF0YTogYW55KTogc3RyaW5nO1xuXG4gICAgdG9SZWdpc3RlcihkYXRhOiBhbnkpOiBBdXRoVXNlclRva2VuUmVzcG9uc2U7XG5cbiAgICB0b1JlZnJlc2goZGF0YTogYW55KTogQXV0aFRva2VuUmVzcG9uc2U7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXV0aFRva2VuUmVzcG9uc2Uge1xuICAgIGFjY2Vzc1Rva2VuOiBzdHJpbmc7XG4gICAgcmVmcmVzaFRva2VuOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXV0aFVzZXJUb2tlblJlc3BvbnNlIGV4dGVuZHMgQXV0aFRva2VuUmVzcG9uc2Uge1xuICAgIHVzZXI6IG9iamVjdDtcbn1cbiJdfQ==
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
import { distinctUntilChanged, map } from 'rxjs/operators';
|
|
2
|
-
import { Injectable, Optional } from '@angular/core';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "./auth.service";
|
|
5
|
-
import * as i2 from "./interfaces/config.interface";
|
|
6
|
-
export class Permissions {
|
|
7
|
-
constructor(_auth, _config) {
|
|
8
|
-
this._auth = _auth;
|
|
9
|
-
this._config = _config;
|
|
10
|
-
// Data.
|
|
11
|
-
this._permissions = this._config?.permissions ?? {};
|
|
12
|
-
this._role$ = this._auth.user.pipe(map(user => user?.role ?? null), distinctUntilChanged());
|
|
13
|
-
}
|
|
14
|
-
has(value) {
|
|
15
|
-
const requiredPermissions = Array.isArray(value)
|
|
16
|
-
? value
|
|
17
|
-
: [value];
|
|
18
|
-
return this._role$.pipe(map(role => {
|
|
19
|
-
if (role === null || role === undefined) {
|
|
20
|
-
return false;
|
|
21
|
-
}
|
|
22
|
-
for (const requiredPermission of requiredPermissions) {
|
|
23
|
-
const result = this.validatePermission(requiredPermission, role);
|
|
24
|
-
if (!result) {
|
|
25
|
-
return false;
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
return true;
|
|
29
|
-
}));
|
|
30
|
-
}
|
|
31
|
-
validatePermission(type, role) {
|
|
32
|
-
const permission = this._permissions?.[type] ?? null;
|
|
33
|
-
if (!permission) {
|
|
34
|
-
console?.warn?.(`Permissions: Invalid permission requested "${type}".`);
|
|
35
|
-
return false;
|
|
36
|
-
}
|
|
37
|
-
if (permission?.length <= 0) {
|
|
38
|
-
console?.warn?.(`Permissions: No roles were set, please add some roles to this permission.`);
|
|
39
|
-
return false;
|
|
40
|
-
}
|
|
41
|
-
// If the permission includes a "*" we allow everyone.
|
|
42
|
-
if (permission.includes('*')) {
|
|
43
|
-
return true;
|
|
44
|
-
}
|
|
45
|
-
// Validate the role against the permissions.
|
|
46
|
-
return permission?.includes(role) ?? false;
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
Permissions.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.5", ngImport: i0, type: Permissions, deps: [{ token: i1.Auth }, { token: i2.AuthConfig, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
50
|
-
Permissions.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.0.5", ngImport: i0, type: Permissions });
|
|
51
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.5", ngImport: i0, type: Permissions, decorators: [{
|
|
52
|
-
type: Injectable
|
|
53
|
-
}], ctorParameters: function () { return [{ type: i1.Auth }, { type: i2.AuthConfig, decorators: [{
|
|
54
|
-
type: Optional
|
|
55
|
-
}] }]; } });
|
|
56
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbnMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JiLWZvdW5kYXRpb24vYXV0aC9zcmMvbGliL3Blcm1pc3Npb25zLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLG9CQUFvQixFQUFFLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRXpELE9BQU8sRUFBQyxVQUFVLEVBQUUsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDOzs7O0FBSW5ELE1BQU0sT0FBTyxXQUFXO0lBU3BCLFlBQW9CLEtBQVcsRUFDQyxPQUFvQjtRQURoQyxVQUFLLEdBQUwsS0FBSyxDQUFNO1FBQ0MsWUFBTyxHQUFQLE9BQU8sQ0FBYTtRQVJwRCxRQUFRO1FBQ1MsaUJBQVksR0FBdUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxXQUFXLElBQUksRUFBRSxDQUFDO1FBQ25GLFdBQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQzFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxJQUFjLElBQUksSUFBSSxDQUFDLEVBQ3pDLG9CQUFvQixFQUFFLENBQ3pCLENBQUM7SUFJRixDQUFDO0lBRUQsR0FBRyxDQUFDLEtBQXdCO1FBQ3hCLE1BQU0sbUJBQW1CLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7WUFDNUMsQ0FBQyxDQUFDLEtBQUs7WUFDUCxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUVkLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQ25CLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNQLElBQUksSUFBSSxLQUFLLElBQUksSUFBSSxJQUFJLEtBQUssU0FBUyxFQUFFO2dCQUNyQyxPQUFPLEtBQUssQ0FBQzthQUNoQjtZQUVELEtBQUssTUFBTSxrQkFBa0IsSUFBSSxtQkFBbUIsRUFBRTtnQkFDbEQsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGtCQUFrQixFQUFFLElBQUksQ0FBQyxDQUFDO2dCQUNqRSxJQUFJLENBQUMsTUFBTSxFQUFFO29CQUNULE9BQU8sS0FBSyxDQUFDO2lCQUNoQjthQUNKO1lBRUQsT0FBTyxJQUFJLENBQUM7UUFDaEIsQ0FBQyxDQUFDLENBQ0wsQ0FBQztJQUNOLENBQUM7SUFFTyxrQkFBa0IsQ0FBQyxJQUFZLEVBQUUsSUFBWTtRQUNqRCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDO1FBQ3JELElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDYixPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsOENBQThDLElBQUksSUFBSSxDQUFDLENBQUM7WUFDeEUsT0FBTyxLQUFLLENBQUM7U0FDaEI7UUFDRCxJQUFJLFVBQVUsRUFBRSxNQUFNLElBQUksQ0FBQyxFQUFFO1lBQ3pCLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQywyRUFBMkUsQ0FBQyxDQUFDO1lBQzdGLE9BQU8sS0FBSyxDQUFDO1NBQ2hCO1FBRUQsc0RBQXNEO1FBQ3RELElBQUksVUFBVSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUMxQixPQUFPLElBQUksQ0FBQztTQUNmO1FBRUQsNkNBQTZDO1FBQzdDLE9BQU8sVUFBVSxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUM7SUFDL0MsQ0FBQzs7d0dBdERRLFdBQVc7NEdBQVgsV0FBVzsyRkFBWCxXQUFXO2tCQUR2QixVQUFVOzswQkFXTSxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtkaXN0aW5jdFVudGlsQ2hhbmdlZCwgbWFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge0F1dGhDb25maWd9IGZyb20gJy4vaW50ZXJmYWNlcy9jb25maWcuaW50ZXJmYWNlJztcbmltcG9ydCB7SW5qZWN0YWJsZSwgT3B0aW9uYWx9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtBdXRofSBmcm9tICcuL2F1dGguc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBQZXJtaXNzaW9ucyB7XG5cbiAgICAvLyBEYXRhLlxuICAgIHByaXZhdGUgcmVhZG9ubHkgX3Blcm1pc3Npb25zOiB7IFtwZXJtaXNzaW9uOiBzdHJpbmddOiBzdHJpbmdbXSB9ID0gdGhpcy5fY29uZmlnPy5wZXJtaXNzaW9ucyA/PyB7fTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9yb2xlJCA9IHRoaXMuX2F1dGgudXNlci5waXBlKFxuICAgICAgICBtYXAodXNlciA9PiB1c2VyPy5yb2xlIGFzIHN0cmluZyA/PyBudWxsKSxcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKVxuICAgICk7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9hdXRoOiBBdXRoLFxuICAgICAgICAgICAgICAgIEBPcHRpb25hbCgpIHByaXZhdGUgX2NvbmZpZz86IEF1dGhDb25maWcpIHtcbiAgICB9XG5cbiAgICBoYXModmFsdWU6IHN0cmluZyB8IHN0cmluZ1tdKSB7XG4gICAgICAgIGNvbnN0IHJlcXVpcmVkUGVybWlzc2lvbnMgPSBBcnJheS5pc0FycmF5KHZhbHVlKVxuICAgICAgICAgICAgPyB2YWx1ZVxuICAgICAgICAgICAgOiBbdmFsdWVdO1xuXG4gICAgICAgIHJldHVybiB0aGlzLl9yb2xlJC5waXBlKFxuICAgICAgICAgICAgbWFwKHJvbGUgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChyb2xlID09PSBudWxsIHx8IHJvbGUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCByZXF1aXJlZFBlcm1pc3Npb24gb2YgcmVxdWlyZWRQZXJtaXNzaW9ucykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByZXN1bHQgPSB0aGlzLnZhbGlkYXRlUGVybWlzc2lvbihyZXF1aXJlZFBlcm1pc3Npb24sIHJvbGUpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgdmFsaWRhdGVQZXJtaXNzaW9uKHR5cGU6IHN0cmluZywgcm9sZTogc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IHBlcm1pc3Npb24gPSB0aGlzLl9wZXJtaXNzaW9ucz8uW3R5cGVdID8/IG51bGw7XG4gICAgICAgIGlmICghcGVybWlzc2lvbikge1xuICAgICAgICAgICAgY29uc29sZT8ud2Fybj8uKGBQZXJtaXNzaW9uczogSW52YWxpZCBwZXJtaXNzaW9uIHJlcXVlc3RlZCBcIiR7dHlwZX1cIi5gKTtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocGVybWlzc2lvbj8ubGVuZ3RoIDw9IDApIHtcbiAgICAgICAgICAgIGNvbnNvbGU/Lndhcm4/LihgUGVybWlzc2lvbnM6IE5vIHJvbGVzIHdlcmUgc2V0LCBwbGVhc2UgYWRkIHNvbWUgcm9sZXMgdG8gdGhpcyBwZXJtaXNzaW9uLmApO1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gSWYgdGhlIHBlcm1pc3Npb24gaW5jbHVkZXMgYSBcIipcIiB3ZSBhbGxvdyBldmVyeW9uZS5cbiAgICAgICAgaWYgKHBlcm1pc3Npb24uaW5jbHVkZXMoJyonKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBWYWxpZGF0ZSB0aGUgcm9sZSBhZ2FpbnN0IHRoZSBwZXJtaXNzaW9ucy5cbiAgICAgICAgcmV0dXJuIHBlcm1pc3Npb24/LmluY2x1ZGVzKHJvbGUpID8/IGZhbHNlO1xuICAgIH1cblxufVxuIl19
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
import { Inject, Injectable, PLATFORM_ID } from '@angular/core';
|
|
2
|
-
import { isPlatformBrowser } from '@angular/common';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
let hasV8BreakIterator;
|
|
5
|
-
try {
|
|
6
|
-
hasV8BreakIterator = (typeof Intl !== 'undefined' && Intl.v8BreakIterator);
|
|
7
|
-
}
|
|
8
|
-
catch {
|
|
9
|
-
hasV8BreakIterator = false;
|
|
10
|
-
}
|
|
11
|
-
export class Platform {
|
|
12
|
-
constructor(_platformId) {
|
|
13
|
-
this._platformId = _platformId;
|
|
14
|
-
// Browser check.
|
|
15
|
-
this.isBrowser = this._platformId
|
|
16
|
-
? isPlatformBrowser(this._platformId)
|
|
17
|
-
: typeof document === 'object' && !!document;
|
|
18
|
-
// Is checks.
|
|
19
|
-
this.isEdge = this.isBrowser && /(edge)/i.test(navigator.userAgent);
|
|
20
|
-
this.isTrident = this.isBrowser && /(msie|trident)/i.test(navigator.userAgent);
|
|
21
|
-
this.isBlink = this.isBrowser && (!!(window.chrome || hasV8BreakIterator) && typeof CSS !== 'undefined' && !this.isEdge && !this.isTrident);
|
|
22
|
-
this.isWebkit = this.isBrowser && /AppleWebKit/i.test(navigator.userAgent) && !this.isBlink && !this.isEdge && !this.isTrident;
|
|
23
|
-
this.isChrome = this.isBrowser && /Google Inc./.test(navigator.vendor);
|
|
24
|
-
this.isFirefox = this.isBrowser && /(firefox|minefield)/i.test(navigator.userAgent);
|
|
25
|
-
this.isSafari = this.isBrowser && /safari/i.test(navigator.userAgent) && this.isWebkit;
|
|
26
|
-
this.isAndroid = this.isBrowser && /android/i.test(navigator.userAgent) && !this.isTrident;
|
|
27
|
-
this.isIos = this.isBrowser && /iPad|iPhone|iPod/.test(navigator.userAgent) && !('MSStream' in window);
|
|
28
|
-
this.isDesktop = this.isBrowser && !(/(iPhone|iPod|iPad|Android|BlackBerry|IEMobile)/.test(navigator.userAgent));
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
Platform.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.5", ngImport: i0, type: Platform, deps: [{ token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
32
|
-
Platform.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.0.5", ngImport: i0, type: Platform, providedIn: 'root' });
|
|
33
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.5", ngImport: i0, type: Platform, decorators: [{
|
|
34
|
-
type: Injectable,
|
|
35
|
-
args: [{
|
|
36
|
-
providedIn: 'root'
|
|
37
|
-
}]
|
|
38
|
-
}], ctorParameters: function () { return [{ type: Object, decorators: [{
|
|
39
|
-
type: Inject,
|
|
40
|
-
args: [PLATFORM_ID]
|
|
41
|
-
}] }]; } });
|
|
42
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhdGZvcm0uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JiLWZvdW5kYXRpb24vc3JjL2xpYi9jb3JlL3NlcnZpY2VzL3BsYXRmb3JtLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLE1BQU0sRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLGlCQUFpQixDQUFDOztBQUVsRCxJQUFJLGtCQUEyQixDQUFDO0FBQ2hDLElBQUk7SUFDQSxrQkFBa0IsR0FBRyxDQUFDLE9BQU8sSUFBSSxLQUFLLFdBQVcsSUFBSyxJQUFZLENBQUMsZUFBZSxDQUFDLENBQUM7Q0FDdkY7QUFBQyxNQUFNO0lBQ0osa0JBQWtCLEdBQUcsS0FBSyxDQUFDO0NBQzlCO0FBS0QsTUFBTSxPQUFPLFFBQVE7SUFFakIsWUFBeUMsV0FBbUI7UUFBbkIsZ0JBQVcsR0FBWCxXQUFXLENBQVE7UUFHNUQsaUJBQWlCO1FBQ2pCLGNBQVMsR0FBRyxJQUFJLENBQUMsV0FBVztZQUN4QixDQUFDLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQztZQUNyQyxDQUFDLENBQUMsT0FBTyxRQUFRLEtBQUssUUFBUSxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUM7UUFFakQsYUFBYTtRQUNiLFdBQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxJQUFJLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQy9ELGNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxJQUFJLGlCQUFpQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDMUUsWUFBTyxHQUFHLElBQUksQ0FBQyxTQUFTLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBRSxNQUFjLENBQUMsTUFBTSxJQUFJLGtCQUFrQixDQUFDLElBQUksT0FBTyxHQUFHLEtBQUssV0FBVyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNoSixhQUFRLEdBQUcsSUFBSSxDQUFDLFNBQVMsSUFBSSxjQUFjLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQztRQUMxSCxhQUFRLEdBQUcsSUFBSSxDQUFDLFNBQVMsSUFBSSxhQUFhLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNsRSxjQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsSUFBSSxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQy9FLGFBQVEsR0FBRyxJQUFJLENBQUMsU0FBUyxJQUFJLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDbEYsY0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLElBQUksVUFBVSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBQ3RGLFVBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxJQUFJLGtCQUFrQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLFVBQVUsSUFBSSxNQUFNLENBQUMsQ0FBQztRQUNsRyxjQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsSUFBSSxDQUFDLENBQUMsZ0RBQWdELENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO0lBakI1RyxDQUFDOztxR0FIUSxRQUFRLGtCQUVHLFdBQVc7eUdBRnRCLFFBQVEsY0FGTCxNQUFNOzJGQUVULFFBQVE7a0JBSHBCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCOzBEQUd5RCxNQUFNOzBCQUEvQyxNQUFNOzJCQUFDLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdCwgSW5qZWN0YWJsZSwgUExBVEZPUk1fSUR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtpc1BsYXRmb3JtQnJvd3Nlcn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxubGV0IGhhc1Y4QnJlYWtJdGVyYXRvcjogYm9vbGVhbjtcbnRyeSB7XG4gICAgaGFzVjhCcmVha0l0ZXJhdG9yID0gKHR5cGVvZiBJbnRsICE9PSAndW5kZWZpbmVkJyAmJiAoSW50bCBhcyBhbnkpLnY4QnJlYWtJdGVyYXRvcik7XG59IGNhdGNoIHtcbiAgICBoYXNWOEJyZWFrSXRlcmF0b3IgPSBmYWxzZTtcbn1cblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBQbGF0Zm9ybSB7XG5cbiAgICBjb25zdHJ1Y3RvcihASW5qZWN0KFBMQVRGT1JNX0lEKSBwcml2YXRlIF9wbGF0Zm9ybUlkOiBPYmplY3QpIHtcbiAgICB9XG5cbiAgICAvLyBCcm93c2VyIGNoZWNrLlxuICAgIGlzQnJvd3NlciA9IHRoaXMuX3BsYXRmb3JtSWRcbiAgICAgICAgPyBpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLl9wbGF0Zm9ybUlkKVxuICAgICAgICA6IHR5cGVvZiBkb2N1bWVudCA9PT0gJ29iamVjdCcgJiYgISFkb2N1bWVudDtcblxuICAgIC8vIElzIGNoZWNrcy5cbiAgICBpc0VkZ2UgPSB0aGlzLmlzQnJvd3NlciAmJiAvKGVkZ2UpL2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KTtcbiAgICBpc1RyaWRlbnQgPSB0aGlzLmlzQnJvd3NlciAmJiAvKG1zaWV8dHJpZGVudCkvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpO1xuICAgIGlzQmxpbmsgPSB0aGlzLmlzQnJvd3NlciAmJiAoISEoKHdpbmRvdyBhcyBhbnkpLmNocm9tZSB8fCBoYXNWOEJyZWFrSXRlcmF0b3IpICYmIHR5cGVvZiBDU1MgIT09ICd1bmRlZmluZWQnICYmICF0aGlzLmlzRWRnZSAmJiAhdGhpcy5pc1RyaWRlbnQpO1xuICAgIGlzV2Via2l0ID0gdGhpcy5pc0Jyb3dzZXIgJiYgL0FwcGxlV2ViS2l0L2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSAmJiAhdGhpcy5pc0JsaW5rICYmICF0aGlzLmlzRWRnZSAmJiAhdGhpcy5pc1RyaWRlbnQ7XG4gICAgaXNDaHJvbWUgPSB0aGlzLmlzQnJvd3NlciAmJiAvR29vZ2xlIEluYy4vLnRlc3QobmF2aWdhdG9yLnZlbmRvcik7XG4gICAgaXNGaXJlZm94ID0gdGhpcy5pc0Jyb3dzZXIgJiYgLyhmaXJlZm94fG1pbmVmaWVsZCkvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpO1xuICAgIGlzU2FmYXJpID0gdGhpcy5pc0Jyb3dzZXIgJiYgL3NhZmFyaS9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkgJiYgdGhpcy5pc1dlYmtpdDtcbiAgICBpc0FuZHJvaWQgPSB0aGlzLmlzQnJvd3NlciAmJiAvYW5kcm9pZC9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkgJiYgIXRoaXMuaXNUcmlkZW50O1xuICAgIGlzSW9zID0gdGhpcy5pc0Jyb3dzZXIgJiYgL2lQYWR8aVBob25lfGlQb2QvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkgJiYgISgnTVNTdHJlYW0nIGluIHdpbmRvdyk7XG4gICAgaXNEZXNrdG9wID0gdGhpcy5pc0Jyb3dzZXIgJiYgISgvKGlQaG9uZXxpUG9kfGlQYWR8QW5kcm9pZHxCbGFja0JlcnJ5fElFTW9iaWxlKS8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSk7XG5cbn1cbiJdfQ==
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
export class Theme {
|
|
2
|
-
constructor(_name, _data) {
|
|
3
|
-
this._name = _name;
|
|
4
|
-
this._data = _data;
|
|
5
|
-
this._parsed = this.parseData(_data ?? {});
|
|
6
|
-
}
|
|
7
|
-
get name() {
|
|
8
|
-
return this._name;
|
|
9
|
-
}
|
|
10
|
-
get data() {
|
|
11
|
-
return this._parsed;
|
|
12
|
-
}
|
|
13
|
-
update(data) {
|
|
14
|
-
this._parsed = { ...this._parsed, ...this.parseData(data) };
|
|
15
|
-
return this;
|
|
16
|
-
}
|
|
17
|
-
parseData(data, scope = null) {
|
|
18
|
-
return Object.keys(data).reduce((previous, current) => {
|
|
19
|
-
const value = data?.[current];
|
|
20
|
-
const token = this.getFormattedToken(current, scope);
|
|
21
|
-
if (typeof value === 'object' && value !== null) {
|
|
22
|
-
const formatted = this.parseData(value, token);
|
|
23
|
-
return { ...previous, ...formatted };
|
|
24
|
-
}
|
|
25
|
-
return { ...previous, [`--${token}`]: value };
|
|
26
|
-
}, {});
|
|
27
|
-
}
|
|
28
|
-
getFormattedToken(key, scope = null) {
|
|
29
|
-
const result = key.replace(/([A-Z])/g, ' $1');
|
|
30
|
-
const current = result.split(' ').join('-').toLowerCase();
|
|
31
|
-
return [scope, current].filter(item => !!item).join('-');
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhlbWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYi1mb3VuZGF0aW9uL3RoZW1pbmcvc3JjL2xpYi90aGVtZXMvdGhlbWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxPQUFPLEtBQUs7SUFLZCxZQUFvQixLQUFhLEVBQ2IsS0FBaUI7UUFEakIsVUFBSyxHQUFMLEtBQUssQ0FBUTtRQUNiLFVBQUssR0FBTCxLQUFLLENBQVk7UUFDakMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRUQsSUFBSSxJQUFJO1FBQ0osT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3RCLENBQUM7SUFFRCxJQUFJLElBQUk7UUFDSixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDeEIsQ0FBQztJQUVELE1BQU0sQ0FBQyxJQUFlO1FBQ2xCLElBQUksQ0FBQyxPQUFPLEdBQUcsRUFBQyxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFDLENBQUM7UUFDMUQsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVTLFNBQVMsQ0FBQyxJQUFZLEVBQUUsUUFBdUIsSUFBSTtRQUN6RCxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBUSxFQUFFLE9BQU8sRUFBRSxFQUFFO1lBQ2xELE1BQU0sS0FBSyxHQUFHLElBQUksRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzlCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDckQsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksS0FBSyxLQUFLLElBQUksRUFBRTtnQkFDN0MsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7Z0JBQy9DLE9BQU8sRUFBQyxHQUFHLFFBQVEsRUFBRSxHQUFHLFNBQVMsRUFBQyxDQUFDO2FBQ3RDO1lBQ0QsT0FBTyxFQUFDLEdBQUcsUUFBUSxFQUFFLENBQUMsS0FBSyxLQUFLLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBQyxDQUFDO1FBQ2hELENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNYLENBQUM7SUFFUyxpQkFBaUIsQ0FBQyxHQUFXLEVBQUUsUUFBdUIsSUFBSTtRQUNoRSxNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUM5QyxNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUMxRCxPQUFPLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDN0QsQ0FBQztDQUVKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtUaGVtZURhdGF9IGZyb20gJy4uL3RoZW1pbmcuaW50ZXJmYWNlJztcblxuZXhwb3J0IGNsYXNzIFRoZW1lIHtcblxuICAgIC8vIFJlYWRvbmx5IGRhdGEuXG4gICAgcHJpdmF0ZSBfcGFyc2VkOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBfbmFtZTogc3RyaW5nLFxuICAgICAgICAgICAgICAgIHByaXZhdGUgX2RhdGE/OiBUaGVtZURhdGEpIHtcbiAgICAgICAgdGhpcy5fcGFyc2VkID0gdGhpcy5wYXJzZURhdGEoX2RhdGEgPz8ge30pO1xuICAgIH1cblxuICAgIGdldCBuYW1lKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fbmFtZTtcbiAgICB9XG5cbiAgICBnZXQgZGF0YSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3BhcnNlZDtcbiAgICB9XG5cbiAgICB1cGRhdGUoZGF0YTogVGhlbWVEYXRhKSB7XG4gICAgICAgIHRoaXMuX3BhcnNlZCA9IHsuLi50aGlzLl9wYXJzZWQsIC4uLnRoaXMucGFyc2VEYXRhKGRhdGEpfTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHBhcnNlRGF0YShkYXRhOiBvYmplY3QsIHNjb3BlOiBzdHJpbmcgfCBudWxsID0gbnVsbCkge1xuICAgICAgICByZXR1cm4gT2JqZWN0LmtleXMoZGF0YSkucmVkdWNlKChwcmV2aW91cywgY3VycmVudCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBkYXRhPy5bY3VycmVudF07XG4gICAgICAgICAgICBjb25zdCB0b2tlbiA9IHRoaXMuZ2V0Rm9ybWF0dGVkVG9rZW4oY3VycmVudCwgc2NvcGUpO1xuICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBmb3JtYXR0ZWQgPSB0aGlzLnBhcnNlRGF0YSh2YWx1ZSwgdG9rZW4pO1xuICAgICAgICAgICAgICAgIHJldHVybiB7Li4ucHJldmlvdXMsIC4uLmZvcm1hdHRlZH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gey4uLnByZXZpb3VzLCBbYC0tJHt0b2tlbn1gXTogdmFsdWV9O1xuICAgICAgICB9LCB7fSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldEZvcm1hdHRlZFRva2VuKGtleTogc3RyaW5nLCBzY29wZTogc3RyaW5nIHwgbnVsbCA9IG51bGwpIHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0ga2V5LnJlcGxhY2UoLyhbQS1aXSkvZywgJyAkMScpO1xuICAgICAgICBjb25zdCBjdXJyZW50ID0gcmVzdWx0LnNwbGl0KCcgJykuam9pbignLScpLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIHJldHVybiBbc2NvcGUsIGN1cnJlbnRdLmZpbHRlcihpdGVtID0+ICEhaXRlbSkuam9pbignLScpO1xuICAgIH1cblxufVxuIl19
|