@ts-core/angular 15.0.60 → 17.0.10
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/asset/AssetBackgroundDirective.d.ts +1 -1
- package/cookie/CookieService.d.ts +1 -3
- package/directive/AspectRatioResizeDirective.d.ts +1 -1
- package/directive/AutoScrollBottomDirective.d.ts +1 -1
- package/directive/ClickToCopyDirective.d.ts +1 -1
- package/directive/FocusDirective.d.ts +1 -1
- package/directive/HTMLContentTitleDirective.d.ts +1 -1
- package/directive/HTMLTitleDirective.d.ts +1 -1
- package/directive/InfiniteScrollDirective.d.ts +1 -1
- package/directive/ResizeDirective.d.ts +1 -1
- package/directive/ScrollCheckDirective.d.ts +1 -1
- package/directive/ScrollDirective.d.ts +1 -1
- package/esm2022/VIModule.mjs +190 -0
- package/esm2022/application/ApplicationBaseComponent.mjs +96 -0
- package/esm2022/application/ApplicationComponent.mjs +64 -0
- package/esm2022/application/MessageBaseComponent.mjs +60 -0
- package/esm2022/asset/AssetBackgroundDirective.mjs +152 -0
- package/{esm2020 → esm2022}/asset/AssetBackgroundPipe.mjs +4 -4
- package/{esm2020 → esm2022}/asset/AssetFilePipe.mjs +4 -4
- package/{esm2020 → esm2022}/asset/AssetIconPipe.mjs +4 -4
- package/{esm2020 → esm2022}/asset/AssetImagePipe.mjs +4 -4
- package/{esm2020 → esm2022}/asset/AssetModule.mjs +5 -5
- package/{esm2020 → esm2022}/asset/AssetSoundPipe.mjs +4 -4
- package/{esm2020 → esm2022}/asset/AssetVideoPipe.mjs +4 -4
- package/{esm2020 → esm2022}/cookie/CookieModule.mjs +5 -5
- package/{esm2020 → esm2022}/cookie/CookieOptions.mjs +7 -1
- package/esm2022/cookie/CookieService.mjs +71 -0
- package/esm2022/directive/AspectRatioResizeDirective.mjs +134 -0
- package/esm2022/directive/AutoScrollBottomDirective.mjs +122 -0
- package/esm2022/directive/ClickToCopyDirective.mjs +53 -0
- package/esm2022/directive/ClickToSelectDirective.mjs +55 -0
- package/esm2022/directive/FocusDirective.mjs +60 -0
- package/esm2022/directive/HTMLContentTitleDirective.mjs +74 -0
- package/esm2022/directive/HTMLTitleDirective.mjs +73 -0
- package/esm2022/directive/InfiniteScrollDirective.mjs +71 -0
- package/{esm2020 → esm2022}/directive/IsBrowserDirective.mjs +5 -5
- package/{esm2020 → esm2022}/directive/IsServerDirective.mjs +5 -5
- package/esm2022/directive/ResizeDirective.mjs +80 -0
- package/esm2022/directive/ScrollCheckDirective.mjs +104 -0
- package/esm2022/directive/ScrollDirective.mjs +120 -0
- package/esm2022/directive/SelectOnFocusDirective.mjs +48 -0
- package/esm2022/directive/StructureDirective.mjs +80 -0
- package/esm2022/language/LanguageDirective.mjs +102 -0
- package/esm2022/language/LanguageHasDirective.mjs +87 -0
- package/{esm2020 → esm2022}/language/LanguageModule.mjs +5 -5
- package/esm2022/language/LanguagePipe.mjs +88 -0
- package/esm2022/language/LanguagePipeHas.mjs +64 -0
- package/esm2022/language/LanguagePipeHasPure.mjs +41 -0
- package/esm2022/language/LanguagePipePure.mjs +40 -0
- package/esm2022/language/LanguageRequireResolver.mjs +37 -0
- package/{esm2020 → esm2022}/language/LanguageResolver.mjs +5 -5
- package/esm2022/list/ListItem.mjs +148 -0
- package/esm2022/list/ListItems.mjs +107 -0
- package/esm2022/list/select/RouterSelectListItems.mjs +60 -0
- package/esm2022/list/select/SelectListItem.mjs +67 -0
- package/esm2022/list/select/SelectListItems.mjs +130 -0
- package/esm2022/login/LoginBaseService.mjs +191 -0
- package/esm2022/login/LoginGuard.mjs +41 -0
- package/esm2022/login/LoginIfCanGuard.mjs +55 -0
- package/esm2022/login/LoginNotGuard.mjs +41 -0
- package/esm2022/login/LoginRequireResolver.mjs +40 -0
- package/{esm2020 → esm2022}/login/LoginResolver.mjs +6 -6
- package/esm2022/login/LoginTokenStorage.mjs +18 -0
- package/esm2022/manager/FocusManager.mjs +54 -0
- package/esm2022/manager/ResizeManager.mjs +90 -0
- package/esm2022/menu/MenuItem.mjs +20 -0
- package/esm2022/menu/MenuItemBase.mjs +56 -0
- package/esm2022/menu/MenuItems.mjs +111 -0
- package/esm2022/menu/NavigationMenuItem.mjs +20 -0
- package/esm2022/module/LazyModuleLoader.mjs +97 -0
- package/esm2022/notification/INotification.mjs +16 -0
- package/esm2022/notification/INotificationContent.mjs +141 -0
- package/esm2022/notification/NotificationConfig.mjs +27 -0
- package/{esm2020 → esm2022}/pipe/CamelCasePipe.mjs +4 -4
- package/esm2022/pipe/FinancePipe.mjs +53 -0
- package/esm2022/pipe/MomentDateAdaptivePipe.mjs +51 -0
- package/{esm2020 → esm2022}/pipe/MomentDateFromNowPipe.mjs +4 -4
- package/esm2022/pipe/MomentDatePipe.mjs +71 -0
- package/esm2022/pipe/MomentTimePipe.mjs +35 -0
- package/esm2022/pipe/NgModelErrorPipe.mjs +43 -0
- package/esm2022/pipe/PrettifyPipe.mjs +38 -0
- package/esm2022/pipe/SanitizePipe.mjs +48 -0
- package/{esm2020 → esm2022}/pipe/StartCasePipe.mjs +4 -4
- package/esm2022/pipe/TimePipe.mjs +38 -0
- package/{esm2020 → esm2022}/pipe/TruncatePipe.mjs +4 -4
- package/esm2022/public-api.mjs +138 -0
- package/esm2022/question/QuestionManager.mjs +107 -0
- package/esm2022/service/PipeBaseService.mjs +140 -0
- package/esm2022/service/PlatformService.mjs +45 -0
- package/esm2022/service/RouterBaseService.mjs +236 -0
- package/esm2022/storage/DateValueStorage.mjs +46 -0
- package/esm2022/storage/LocalStorageService.mjs +58 -0
- package/esm2022/storage/ValueStorage.mjs +75 -0
- package/{esm2020 → esm2022}/theme/ThemeAssetBackgroundDirective.mjs +5 -5
- package/esm2022/theme/ThemeAssetDirective.mjs +251 -0
- package/{esm2020 → esm2022}/theme/ThemeAssetIconDirective.mjs +5 -5
- package/{esm2020 → esm2022}/theme/ThemeAssetImageDirective.mjs +5 -5
- package/{esm2020 → esm2022}/theme/ThemeModule.mjs +15 -15
- package/esm2022/theme/ThemeStyleDirective.mjs +125 -0
- package/esm2022/theme/ThemeStyleHoverDirective.mjs +107 -0
- package/esm2022/theme/ThemeToggleDirective.mjs +63 -0
- package/esm2022/transport/TransportLazy.mjs +93 -0
- package/esm2022/transport/TransportLazyModule.mjs +30 -0
- package/esm2022/transport/TransportLazyModuleLoadedEvent.mjs +18 -0
- package/esm2022/user/IUser.mjs +9 -0
- package/esm2022/user/UserBaseService.mjs +124 -0
- package/esm2022/util/ViewUtil.mjs +589 -0
- package/esm2022/window/IWindow.mjs +31 -0
- package/esm2022/window/IWindowContent.mjs +142 -0
- package/esm2022/window/WindowBase.mjs +177 -0
- package/esm2022/window/WindowClosedError.mjs +19 -0
- package/esm2022/window/WindowConfig.mjs +218 -0
- package/{fesm2020 → fesm2022}/ts-core-angular.mjs +1118 -958
- package/fesm2022/ts-core-angular.mjs.map +1 -0
- package/language/LanguageDirective.d.ts +1 -1
- package/language/LanguageHasDirective.d.ts +1 -1
- package/module/LazyModuleLoader.d.ts +1 -1
- package/notification/INotificationContent.d.ts +1 -1
- package/notification/NotificationConfig.d.ts +1 -1
- package/notification/NotificationService.d.ts +1 -1
- package/package.json +19 -26
- package/pipe/MomentDatePipe.d.ts +1 -1
- package/public-api.d.ts +0 -2
- package/theme/ThemeAssetBackgroundDirective.d.ts +1 -1
- package/theme/ThemeAssetDirective.d.ts +1 -1
- package/theme/ThemeAssetIconDirective.d.ts +1 -1
- package/theme/ThemeAssetImageDirective.d.ts +1 -1
- package/theme/ThemeStyleDirective.d.ts +1 -1
- package/theme/ThemeStyleHoverDirective.d.ts +1 -1
- package/user/IUser.d.ts +1 -1
- package/util/ViewUtil.d.ts +1 -1
- package/window/IWindowContent.d.ts +2 -2
- package/window/WindowConfig.d.ts +1 -1
- package/window/WindowService.d.ts +1 -1
- package/esm2020/VIModule.mjs +0 -187
- package/esm2020/application/ApplicationBaseComponent.mjs +0 -88
- package/esm2020/application/ApplicationComponent.mjs +0 -58
- package/esm2020/application/MessageBaseComponent.mjs +0 -52
- package/esm2020/asset/AssetBackgroundDirective.mjs +0 -150
- package/esm2020/cookie/CookieService.mjs +0 -79
- package/esm2020/directive/AspectRatioResizeDirective.mjs +0 -131
- package/esm2020/directive/AutoScrollBottomDirective.mjs +0 -122
- package/esm2020/directive/ClickToCopyDirective.mjs +0 -49
- package/esm2020/directive/ClickToSelectDirective.mjs +0 -49
- package/esm2020/directive/FocusDirective.mjs +0 -54
- package/esm2020/directive/HTMLContentTitleDirective.mjs +0 -67
- package/esm2020/directive/HTMLTitleDirective.mjs +0 -66
- package/esm2020/directive/InfiniteScrollDirective.mjs +0 -74
- package/esm2020/directive/ResizeDirective.mjs +0 -79
- package/esm2020/directive/ScrollCheckDirective.mjs +0 -102
- package/esm2020/directive/ScrollDirective.mjs +0 -118
- package/esm2020/directive/SelectOnFocusDirective.mjs +0 -47
- package/esm2020/directive/StructureDirective.mjs +0 -71
- package/esm2020/form/FormElementAsync.mjs +0 -27
- package/esm2020/form/FormElementSync.mjs +0 -69
- package/esm2020/form/ValueAccessor.mjs +0 -62
- package/esm2020/form/validate.mjs +0 -59
- package/esm2020/language/LanguageDirective.mjs +0 -92
- package/esm2020/language/LanguageHasDirective.mjs +0 -80
- package/esm2020/language/LanguagePipe.mjs +0 -78
- package/esm2020/language/LanguagePipeHas.mjs +0 -56
- package/esm2020/language/LanguagePipeHasPure.mjs +0 -40
- package/esm2020/language/LanguagePipePure.mjs +0 -39
- package/esm2020/language/LanguageRequireResolver.mjs +0 -36
- package/esm2020/list/ListItem.mjs +0 -134
- package/esm2020/list/ListItems.mjs +0 -97
- package/esm2020/list/select/RouterSelectListItems.mjs +0 -53
- package/esm2020/list/select/SelectListItem.mjs +0 -59
- package/esm2020/list/select/SelectListItems.mjs +0 -121
- package/esm2020/login/LoginBaseService.mjs +0 -184
- package/esm2020/login/LoginGuard.mjs +0 -40
- package/esm2020/login/LoginIfCanGuard.mjs +0 -54
- package/esm2020/login/LoginNotGuard.mjs +0 -40
- package/esm2020/login/LoginRequireResolver.mjs +0 -39
- package/esm2020/login/LoginTokenStorage.mjs +0 -18
- package/esm2020/manager/FocusManager.mjs +0 -46
- package/esm2020/manager/ResizeManager.mjs +0 -81
- package/esm2020/menu/MenuItem.mjs +0 -13
- package/esm2020/menu/MenuItemBase.mjs +0 -46
- package/esm2020/menu/MenuItems.mjs +0 -102
- package/esm2020/menu/NavigationMenuItem.mjs +0 -14
- package/esm2020/module/LazyModuleLoader.mjs +0 -89
- package/esm2020/notification/INotification.mjs +0 -7
- package/esm2020/notification/INotificationContent.mjs +0 -132
- package/esm2020/notification/NotificationConfig.mjs +0 -16
- package/esm2020/pipe/FinancePipe.mjs +0 -53
- package/esm2020/pipe/MomentDateAdaptivePipe.mjs +0 -51
- package/esm2020/pipe/MomentDatePipe.mjs +0 -71
- package/esm2020/pipe/MomentTimePipe.mjs +0 -35
- package/esm2020/pipe/NgModelErrorPipe.mjs +0 -42
- package/esm2020/pipe/PrettifyPipe.mjs +0 -38
- package/esm2020/pipe/SanitizePipe.mjs +0 -47
- package/esm2020/pipe/TimePipe.mjs +0 -38
- package/esm2020/public-api.mjs +0 -141
- package/esm2020/question/QuestionManager.mjs +0 -93
- package/esm2020/service/PipeBaseService.mjs +0 -132
- package/esm2020/service/PlatformService.mjs +0 -38
- package/esm2020/service/RouterBaseService.mjs +0 -224
- package/esm2020/storage/DateValueStorage.mjs +0 -49
- package/esm2020/storage/LocalStorageService.mjs +0 -57
- package/esm2020/storage/ValueStorage.mjs +0 -67
- package/esm2020/theme/ThemeAssetDirective.mjs +0 -240
- package/esm2020/theme/ThemeStyleDirective.mjs +0 -115
- package/esm2020/theme/ThemeStyleHoverDirective.mjs +0 -107
- package/esm2020/theme/ThemeToggleDirective.mjs +0 -62
- package/esm2020/transport/TransportLazy.mjs +0 -92
- package/esm2020/transport/TransportLazyModule.mjs +0 -28
- package/esm2020/transport/TransportLazyModuleLoadedEvent.mjs +0 -18
- package/esm2020/user/IUser.mjs +0 -3
- package/esm2020/user/UserBaseService.mjs +0 -116
- package/esm2020/util/ViewUtil.mjs +0 -589
- package/esm2020/window/IWindow.mjs +0 -33
- package/esm2020/window/IWindowContent.mjs +0 -135
- package/esm2020/window/WindowBase.mjs +0 -177
- package/esm2020/window/WindowClosedError.mjs +0 -19
- package/esm2020/window/WindowConfig.mjs +0 -197
- package/fesm2015/ts-core-angular.mjs +0 -7015
- package/fesm2015/ts-core-angular.mjs.map +0 -1
- package/fesm2020/ts-core-angular.mjs.map +0 -1
- package/form/FormElementAsync.d.ts +0 -13
- package/form/FormElementSync.d.ts +0 -22
- package/form/ValueAccessor.d.ts +0 -16
- package/form/validate.d.ts +0 -9
- /package/{esm2020 → esm2022}/ApplicationInjector.mjs +0 -0
- /package/{esm2020 → esm2022}/bottomSheet/BottomSheetService.mjs +0 -0
- /package/{esm2020 → esm2022}/list/IListItem.mjs +0 -0
- /package/{esm2020 → esm2022}/list/select/ISelectListItem.mjs +0 -0
- /package/{esm2020 → esm2022}/notification/INotificationConfig.mjs +0 -0
- /package/{esm2020 → esm2022}/notification/NotificationService.mjs +0 -0
- /package/{esm2020 → esm2022}/notification/NotificationServiceEvent.mjs +0 -0
- /package/{esm2020 → esm2022}/question/IQuestion.mjs +0 -0
- /package/{esm2020 → esm2022}/service/route/CanDeactivateGuard.mjs +0 -0
- /package/{esm2020 → esm2022}/service/route/IRouterDeactivatable.mjs +0 -0
- /package/{esm2020 → esm2022}/storage/BooleanValueStorage.mjs +0 -0
- /package/{esm2020 → esm2022}/storage/IValueStorage.mjs +0 -0
- /package/{esm2020 → esm2022}/ts-core-angular.mjs +0 -0
- /package/{esm2020 → esm2022}/window/IWindowConfig.mjs +0 -0
- /package/{esm2020 → esm2022}/window/WindowService.mjs +0 -0
- /package/{esm2020 → esm2022}/window/WindowServiceEvent.mjs +0 -0
|
@@ -26,5 +26,5 @@ export declare class AssetBackgroundDirective extends Destroyable {
|
|
|
26
26
|
set background(value: string);
|
|
27
27
|
get background(): string;
|
|
28
28
|
static ɵfac: i0.ɵɵFactoryDeclaration<AssetBackgroundDirective, never>;
|
|
29
|
-
static ɵdir: i0.ɵɵDirectiveDeclaration<AssetBackgroundDirective, "[vi-asset-background]", never, { "isIcon": "isIcon"; "isImage": "isImage"; "isUrl": "isUrl"; "repeat": "repeat"; "extension": "extension"; "background": "vi-asset-background"; }, {}, never, never, false, never>;
|
|
29
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<AssetBackgroundDirective, "[vi-asset-background]", never, { "isIcon": { "alias": "isIcon"; "required": false; }; "isImage": { "alias": "isImage"; "required": false; }; "isUrl": { "alias": "isUrl"; "required": false; }; "repeat": { "alias": "repeat"; "required": false; }; "extension": { "alias": "extension"; "required": false; }; "background": { "alias": "vi-asset-background"; "required": false; }; }, {}, never, never, false, never>;
|
|
30
30
|
}
|
|
@@ -3,8 +3,7 @@ import * as Cookie from 'ngx-cookie';
|
|
|
3
3
|
import { PlatformService } from '../service/PlatformService';
|
|
4
4
|
import { CookieOptions } from './CookieOptions';
|
|
5
5
|
export declare class CookieService extends Cookie.CookieService implements ICookieService {
|
|
6
|
-
|
|
7
|
-
constructor(options: CookieOptions, platform: PlatformService, item?: Document);
|
|
6
|
+
constructor(options: CookieOptions, platform: PlatformService, document: Document);
|
|
8
7
|
has(key: string): boolean;
|
|
9
8
|
get<T = string>(key: string, defaultValue?: T): T;
|
|
10
9
|
getObject<T = any>(key: string, defaultValue?: T): T;
|
|
@@ -12,5 +11,4 @@ export declare class CookieService extends Cookie.CookieService implements ICook
|
|
|
12
11
|
putObject<T = any>(key: string, value: T, options?: CookieOptions): void;
|
|
13
12
|
update(key: string, value: string, options?: ICookieOptions): void;
|
|
14
13
|
updateObject(key: string, value: Object, options?: ICookieOptions): void;
|
|
15
|
-
private get document();
|
|
16
14
|
}
|
|
@@ -20,7 +20,7 @@ export declare class AspectRatioResizeDirective extends DestroyableContainer imp
|
|
|
20
20
|
set ratio(value: number);
|
|
21
21
|
get ratio(): number;
|
|
22
22
|
static ɵfac: i0.ɵɵFactoryDeclaration<AspectRatioResizeDirective, never>;
|
|
23
|
-
static ɵdir: i0.ɵɵDirectiveDeclaration<AspectRatioResizeDirective, "[vi-aspect-ratio]", never, { "direction": "vi-aspect-ratio"; "ratio": "ratio"; }, {}, never, never, false, never>;
|
|
23
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<AspectRatioResizeDirective, "[vi-aspect-ratio]", never, { "direction": { "alias": "vi-aspect-ratio"; "required": false; }; "ratio": { "alias": "ratio"; "required": false; }; }, {}, never, never, false, never>;
|
|
24
24
|
}
|
|
25
25
|
export declare enum Direction {
|
|
26
26
|
VERTICAL = "VERTICAL",
|
|
@@ -20,5 +20,5 @@ export declare class AutoScrollBottomDirective extends InfiniteScrollDirective {
|
|
|
20
20
|
destroy(): void;
|
|
21
21
|
set trigger(value: number);
|
|
22
22
|
static ɵfac: i0.ɵɵFactoryDeclaration<AutoScrollBottomDirective, never>;
|
|
23
|
-
static ɵdir: i0.ɵɵDirectiveDeclaration<AutoScrollBottomDirective, "[vi-auto-scroll-bottom]", never, { "behavior": "behavior"; "trigger": "vi-auto-scroll-bottom"; }, { "triggerChanged": "triggerChanged"; }, never, never, false, never>;
|
|
23
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<AutoScrollBottomDirective, "[vi-auto-scroll-bottom]", never, { "behavior": { "alias": "behavior"; "required": false; }; "trigger": { "alias": "vi-auto-scroll-bottom"; "required": false; }; }, { "triggerChanged": "triggerChanged"; }, never, never, false, never>;
|
|
24
24
|
}
|
|
@@ -7,5 +7,5 @@ export declare class ClickToCopyDirective extends Destroyable {
|
|
|
7
7
|
private selectionRemove;
|
|
8
8
|
destroy(): void;
|
|
9
9
|
static ɵfac: i0.ɵɵFactoryDeclaration<ClickToCopyDirective, never>;
|
|
10
|
-
static ɵdir: i0.ɵɵDirectiveDeclaration<ClickToCopyDirective, "[vi-click-to-copy]", never, { "element": "vi-click-to-copy"; }, {}, never, never, false, never>;
|
|
10
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<ClickToCopyDirective, "[vi-click-to-copy]", never, { "element": { "alias": "vi-click-to-copy"; "required": false; }; }, {}, never, never, false, never>;
|
|
11
11
|
}
|
|
@@ -8,5 +8,5 @@ export declare class FocusDirective<T = any> extends Destroyable {
|
|
|
8
8
|
destroy(): void;
|
|
9
9
|
set trigger(value: T);
|
|
10
10
|
static ɵfac: i0.ɵɵFactoryDeclaration<FocusDirective<any>, never>;
|
|
11
|
-
static ɵdir: i0.ɵɵDirectiveDeclaration<FocusDirective<any>, "[vi-focus]", never, { "trigger": "vi-focus"; }, {}, never, never, false, never>;
|
|
11
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<FocusDirective<any>, "[vi-focus]", never, { "trigger": { "alias": "vi-focus"; "required": false; }; }, {}, never, never, false, never>;
|
|
12
12
|
}
|
|
@@ -10,5 +10,5 @@ export declare class HTMLContentTitleDirective extends Destroyable {
|
|
|
10
10
|
set value(value: string);
|
|
11
11
|
get value(): string;
|
|
12
12
|
static ɵfac: i0.ɵɵFactoryDeclaration<HTMLContentTitleDirective, never>;
|
|
13
|
-
static ɵdir: i0.ɵɵDirectiveDeclaration<HTMLContentTitleDirective, "[vi-html-content-title]", never, { "value": "vi-html-content-title"; }, {}, never, never, false, never>;
|
|
13
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<HTMLContentTitleDirective, "[vi-html-content-title]", never, { "value": { "alias": "vi-html-content-title"; "required": false; }; }, {}, never, never, false, never>;
|
|
14
14
|
}
|
|
@@ -10,5 +10,5 @@ export declare class HTMLTitleDirective extends Destroyable {
|
|
|
10
10
|
set value(value: string);
|
|
11
11
|
get value(): string;
|
|
12
12
|
static ɵfac: i0.ɵɵFactoryDeclaration<HTMLTitleDirective, never>;
|
|
13
|
-
static ɵdir: i0.ɵɵDirectiveDeclaration<HTMLTitleDirective, "[vi-html-title]", never, { "value": "vi-html-title"; }, {}, never, never, false, never>;
|
|
13
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<HTMLTitleDirective, "[vi-html-title]", never, { "value": { "alias": "vi-html-title"; "required": false; }; }, {}, never, never, false, never>;
|
|
14
14
|
}
|
|
@@ -10,5 +10,5 @@ export declare class InfiniteScrollDirective extends ScrollDirective {
|
|
|
10
10
|
protected get clientHeight(): number;
|
|
11
11
|
protected get scrollHeight(): number;
|
|
12
12
|
static ɵfac: i0.ɵɵFactoryDeclaration<InfiniteScrollDirective, never>;
|
|
13
|
-
static ɵdir: i0.ɵɵDirectiveDeclaration<InfiniteScrollDirective, "[vi-infinite-scroll]", never, { "elementHeight": "elementHeight"; }, { "top": "top"; "bottom": "bottom"; }, never, never, false, never>;
|
|
13
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<InfiniteScrollDirective, "[vi-infinite-scroll]", never, { "elementHeight": { "alias": "elementHeight"; "required": false; }; }, { "top": "top"; "bottom": "bottom"; }, never, never, false, never>;
|
|
14
14
|
}
|
|
@@ -12,5 +12,5 @@ export declare class ResizeDirective extends Destroyable {
|
|
|
12
12
|
private resizeHandler;
|
|
13
13
|
destroy(): void;
|
|
14
14
|
static ɵfac: i0.ɵɵFactoryDeclaration<ResizeDirective, never>;
|
|
15
|
-
static ɵdir: i0.ɵɵDirectiveDeclaration<ResizeDirective, "[vi-resize]", never, { "isTop": "isTop"; "isLeft": "isLeft"; "isRight": "isRight"; "isBottom": "isBottom"; }, { "resized": "resized"; }, never, never, false, never>;
|
|
15
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<ResizeDirective, "[vi-resize]", never, { "isTop": { "alias": "isTop"; "required": false; }; "isLeft": { "alias": "isLeft"; "required": false; }; "isRight": { "alias": "isRight"; "required": false; }; "isBottom": { "alias": "isBottom"; "required": false; }; }, { "resized": "resized"; }, never, never, false, never>;
|
|
16
16
|
}
|
|
@@ -18,5 +18,5 @@ export declare class ScrollCheckDirective extends DestroyableContainer {
|
|
|
18
18
|
set scrollLimit(value: number);
|
|
19
19
|
get scrollLimit(): number;
|
|
20
20
|
static ɵfac: i0.ɵɵFactoryDeclaration<ScrollCheckDirective, never>;
|
|
21
|
-
static ɵdir: i0.ɵɵDirectiveDeclaration<ScrollCheckDirective, "[vi-scroll-check]", never, { "delay": "delay"; "offset": "offset"; "scrollLimit": "vi-scroll-check"; }, { "top": "top"; "bottom": "bottom"; "limitExceed": "limitExceed"; }, never, never, false, never>;
|
|
21
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<ScrollCheckDirective, "[vi-scroll-check]", never, { "delay": { "alias": "delay"; "required": false; }; "offset": { "alias": "offset"; "required": false; }; "scrollLimit": { "alias": "vi-scroll-check"; "required": false; }; }, { "top": "top"; "bottom": "bottom"; "limitExceed": "limitExceed"; }, never, never, false, never>;
|
|
22
22
|
}
|
|
@@ -19,5 +19,5 @@ export declare class ScrollDirective extends Destroyable {
|
|
|
19
19
|
set scrollValue(value: number);
|
|
20
20
|
get scrollValue(): number;
|
|
21
21
|
static ɵfac: i0.ɵɵFactoryDeclaration<ScrollDirective, never>;
|
|
22
|
-
static ɵdir: i0.ɵɵDirectiveDeclaration<ScrollDirective, "[vi-scroll]", never, { "scrollValue": "scrollValue"; }, { "scrolled": "scrolled"; }, never, never, false, never>;
|
|
22
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<ScrollDirective, "[vi-scroll]", never, { "scrollValue": { "alias": "scrollValue"; "required": false; }; }, { "scrolled": "scrolled"; }, never, never, false, never>;
|
|
23
23
|
}
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
import { APP_INITIALIZER, InjectionToken, NgModule, RendererFactory2 } from '@angular/core';
|
|
2
|
+
import { Logger, LoggerLevel } from '@ts-core/common';
|
|
3
|
+
import { ICookieOptions } from '@ts-core/frontend';
|
|
4
|
+
import { DefaultLogger } from '@ts-core/frontend';
|
|
5
|
+
import { LoadingService, NativeWindowService } from '@ts-core/frontend';
|
|
6
|
+
import { AssetModule } from './asset/AssetModule';
|
|
7
|
+
import { CookieModule } from './cookie/CookieModule';
|
|
8
|
+
import { CanDeactivateGuard } from './service/route/CanDeactivateGuard';
|
|
9
|
+
import { AspectRatioResizeDirective } from './directive/AspectRatioResizeDirective';
|
|
10
|
+
import { AutoScrollBottomDirective } from './directive/AutoScrollBottomDirective';
|
|
11
|
+
import { ClickToCopyDirective } from './directive/ClickToCopyDirective';
|
|
12
|
+
import { ClickToSelectDirective } from './directive/ClickToSelectDirective';
|
|
13
|
+
import { FocusDirective } from './directive/FocusDirective';
|
|
14
|
+
import { SelectOnFocusDirective } from './directive/SelectOnFocusDirective';
|
|
15
|
+
import { HTMLTitleDirective } from './directive/HTMLTitleDirective';
|
|
16
|
+
import { HTMLContentTitleDirective } from './directive/HTMLContentTitleDirective';
|
|
17
|
+
import { InfiniteScrollDirective } from './directive/InfiniteScrollDirective';
|
|
18
|
+
import { ResizeDirective } from './directive/ResizeDirective';
|
|
19
|
+
import { ScrollCheckDirective } from './directive/ScrollCheckDirective';
|
|
20
|
+
import { ScrollDirective } from './directive/ScrollDirective';
|
|
21
|
+
import { LanguageModule } from './language/LanguageModule';
|
|
22
|
+
import { CamelCasePipe } from './pipe/CamelCasePipe';
|
|
23
|
+
import { FinancePipe } from './pipe/FinancePipe';
|
|
24
|
+
import { MomentDateAdaptivePipe } from './pipe/MomentDateAdaptivePipe';
|
|
25
|
+
import { MomentDateFromNowPipe } from './pipe/MomentDateFromNowPipe';
|
|
26
|
+
import { MomentDatePipe } from './pipe/MomentDatePipe';
|
|
27
|
+
import { MomentTimePipe } from './pipe/MomentTimePipe';
|
|
28
|
+
import { NgModelErrorPipe } from './pipe/NgModelErrorPipe';
|
|
29
|
+
import { SanitizePipe } from './pipe/SanitizePipe';
|
|
30
|
+
import { StartCasePipe } from './pipe/StartCasePipe';
|
|
31
|
+
import { TimePipe } from './pipe/TimePipe';
|
|
32
|
+
import { TruncatePipe } from './pipe/TruncatePipe';
|
|
33
|
+
import { PrettifyPipe } from './pipe/PrettifyPipe';
|
|
34
|
+
import { ThemeModule } from './theme/ThemeModule';
|
|
35
|
+
import { IsServerDirective } from './directive/IsServerDirective';
|
|
36
|
+
import { IsBrowserDirective } from './directive/IsBrowserDirective';
|
|
37
|
+
import { DOCUMENT } from '@angular/common';
|
|
38
|
+
import { PlatformService } from './service/PlatformService';
|
|
39
|
+
import { ViewUtil } from './util/ViewUtil';
|
|
40
|
+
import { CookieService } from './cookie/CookieService';
|
|
41
|
+
import { LoginTokenStorage } from './login/LoginTokenStorage';
|
|
42
|
+
import { LocalStorageService } from './storage/LocalStorageService';
|
|
43
|
+
import * as _ from 'lodash';
|
|
44
|
+
import * as i0 from "@angular/core";
|
|
45
|
+
let imports = [CookieModule, ThemeModule, LanguageModule, AssetModule];
|
|
46
|
+
let declarations = [
|
|
47
|
+
TimePipe,
|
|
48
|
+
FinancePipe,
|
|
49
|
+
SanitizePipe,
|
|
50
|
+
TruncatePipe,
|
|
51
|
+
PrettifyPipe,
|
|
52
|
+
CamelCasePipe,
|
|
53
|
+
StartCasePipe,
|
|
54
|
+
NgModelErrorPipe,
|
|
55
|
+
IsServerDirective,
|
|
56
|
+
IsBrowserDirective,
|
|
57
|
+
MomentDatePipe,
|
|
58
|
+
MomentTimePipe,
|
|
59
|
+
MomentDateFromNowPipe,
|
|
60
|
+
MomentDateAdaptivePipe,
|
|
61
|
+
FocusDirective,
|
|
62
|
+
ResizeDirective,
|
|
63
|
+
ScrollDirective,
|
|
64
|
+
ScrollCheckDirective,
|
|
65
|
+
ClickToCopyDirective,
|
|
66
|
+
SelectOnFocusDirective,
|
|
67
|
+
ClickToSelectDirective,
|
|
68
|
+
InfiniteScrollDirective,
|
|
69
|
+
HTMLTitleDirective,
|
|
70
|
+
HTMLContentTitleDirective,
|
|
71
|
+
AutoScrollBottomDirective,
|
|
72
|
+
AspectRatioResizeDirective
|
|
73
|
+
];
|
|
74
|
+
let exports = [...imports, ...declarations];
|
|
75
|
+
export class VIModule {
|
|
76
|
+
// --------------------------------------------------------------------------
|
|
77
|
+
//
|
|
78
|
+
// Static Methods
|
|
79
|
+
//
|
|
80
|
+
// --------------------------------------------------------------------------
|
|
81
|
+
static forRoot(options) {
|
|
82
|
+
return {
|
|
83
|
+
ngModule: VIModule,
|
|
84
|
+
providers: [
|
|
85
|
+
{
|
|
86
|
+
provide: APP_INITIALIZER,
|
|
87
|
+
deps: [NativeWindowService, RendererFactory2],
|
|
88
|
+
useFactory: initializerFactory,
|
|
89
|
+
multi: true
|
|
90
|
+
},
|
|
91
|
+
LoadingService,
|
|
92
|
+
PlatformService,
|
|
93
|
+
CanDeactivateGuard,
|
|
94
|
+
{ provide: VI_ANGULAR_OPTIONS, useValue: options || {} },
|
|
95
|
+
{ provide: Logger, deps: [VI_ANGULAR_OPTIONS], useFactory: loggerServiceFactory },
|
|
96
|
+
{ provide: NativeWindowService, deps: [DOCUMENT], useFactory: nativeWindowServiceFactory },
|
|
97
|
+
{ provide: LocalStorageService, deps: [NativeWindowService], useFactory: localStorageServiceFactory },
|
|
98
|
+
{ provide: LoginTokenStorage, deps: [LocalStorageService, CookieService], useFactory: loginTokenStorageServiceFactory },
|
|
99
|
+
...CookieModule.forRoot(options).providers,
|
|
100
|
+
...ThemeModule.forRoot(options ? options.themeOptions : null).providers,
|
|
101
|
+
...LanguageModule.forRoot(options ? options.languageOptions : null).providers
|
|
102
|
+
]
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: VIModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
106
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.8", ngImport: i0, type: VIModule, declarations: [TimePipe,
|
|
107
|
+
FinancePipe,
|
|
108
|
+
SanitizePipe,
|
|
109
|
+
TruncatePipe,
|
|
110
|
+
PrettifyPipe,
|
|
111
|
+
CamelCasePipe,
|
|
112
|
+
StartCasePipe,
|
|
113
|
+
NgModelErrorPipe,
|
|
114
|
+
IsServerDirective,
|
|
115
|
+
IsBrowserDirective,
|
|
116
|
+
MomentDatePipe,
|
|
117
|
+
MomentTimePipe,
|
|
118
|
+
MomentDateFromNowPipe,
|
|
119
|
+
MomentDateAdaptivePipe,
|
|
120
|
+
FocusDirective,
|
|
121
|
+
ResizeDirective,
|
|
122
|
+
ScrollDirective,
|
|
123
|
+
ScrollCheckDirective,
|
|
124
|
+
ClickToCopyDirective,
|
|
125
|
+
SelectOnFocusDirective,
|
|
126
|
+
ClickToSelectDirective,
|
|
127
|
+
InfiniteScrollDirective,
|
|
128
|
+
HTMLTitleDirective,
|
|
129
|
+
HTMLContentTitleDirective,
|
|
130
|
+
AutoScrollBottomDirective,
|
|
131
|
+
AspectRatioResizeDirective], imports: [CookieModule, ThemeModule, LanguageModule, AssetModule], exports: [CookieModule, ThemeModule, LanguageModule, AssetModule, TimePipe,
|
|
132
|
+
FinancePipe,
|
|
133
|
+
SanitizePipe,
|
|
134
|
+
TruncatePipe,
|
|
135
|
+
PrettifyPipe,
|
|
136
|
+
CamelCasePipe,
|
|
137
|
+
StartCasePipe,
|
|
138
|
+
NgModelErrorPipe,
|
|
139
|
+
IsServerDirective,
|
|
140
|
+
IsBrowserDirective,
|
|
141
|
+
MomentDatePipe,
|
|
142
|
+
MomentTimePipe,
|
|
143
|
+
MomentDateFromNowPipe,
|
|
144
|
+
MomentDateAdaptivePipe,
|
|
145
|
+
FocusDirective,
|
|
146
|
+
ResizeDirective,
|
|
147
|
+
ScrollDirective,
|
|
148
|
+
ScrollCheckDirective,
|
|
149
|
+
ClickToCopyDirective,
|
|
150
|
+
SelectOnFocusDirective,
|
|
151
|
+
ClickToSelectDirective,
|
|
152
|
+
InfiniteScrollDirective,
|
|
153
|
+
HTMLTitleDirective,
|
|
154
|
+
HTMLContentTitleDirective,
|
|
155
|
+
AutoScrollBottomDirective,
|
|
156
|
+
AspectRatioResizeDirective] });
|
|
157
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: VIModule, imports: [imports, CookieModule, ThemeModule, LanguageModule, AssetModule] });
|
|
158
|
+
}
|
|
159
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: VIModule, decorators: [{
|
|
160
|
+
type: NgModule,
|
|
161
|
+
args: [{
|
|
162
|
+
imports,
|
|
163
|
+
declarations,
|
|
164
|
+
exports
|
|
165
|
+
}]
|
|
166
|
+
}] });
|
|
167
|
+
export class IVIOptions extends ICookieOptions {
|
|
168
|
+
loggerLevel;
|
|
169
|
+
themeOptions;
|
|
170
|
+
languageOptions;
|
|
171
|
+
}
|
|
172
|
+
export function initializerFactory(nativeWindow, rendererFactory2) {
|
|
173
|
+
ViewUtil.renderer = rendererFactory2.createRenderer(null, null);
|
|
174
|
+
ViewUtil.document = nativeWindow.document;
|
|
175
|
+
return () => Promise.resolve();
|
|
176
|
+
}
|
|
177
|
+
export function loggerServiceFactory(options) {
|
|
178
|
+
return new DefaultLogger(!_.isNil(options.loggerLevel) ? options.loggerLevel : LoggerLevel.ALL);
|
|
179
|
+
}
|
|
180
|
+
export function nativeWindowServiceFactory(document) {
|
|
181
|
+
return new NativeWindowService(document);
|
|
182
|
+
}
|
|
183
|
+
export function localStorageServiceFactory(nativeWindow) {
|
|
184
|
+
return new LocalStorageService(nativeWindow);
|
|
185
|
+
}
|
|
186
|
+
export function loginTokenStorageServiceFactory(storage, cookies) {
|
|
187
|
+
return new LoginTokenStorage(storage, cookies);
|
|
188
|
+
}
|
|
189
|
+
export const VI_ANGULAR_OPTIONS = new InjectionToken(`VI_ANGULAR_OPTIONS`);
|
|
190
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVklNb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvVklNb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxjQUFjLEVBQXVCLFFBQVEsRUFBYSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1SCxPQUFPLEVBQVcsTUFBTSxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUVuRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRXhFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDckQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDeEUsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDcEYsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDbEYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDeEUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDNUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzVELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHFD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QWtDO0lBQ3BHLFFBQVEsQ0FBQyxRQUFRLEdBQUcsZ0JBQWdCLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNoRSxRQUFRLENBQUMsUUFBUSxHQUFHLFlBQVksQ0FBQyxRQUFRLENBQUM7SUFDMUMsT0FBTyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7QUFDbkMsQ0FBQztBQUVELE1BQU0sVUFBVSxvQkFBb0IsQ0FBQyxPQUFtQjtJQUNwRCxPQUFPLElBQUksYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNwRyxDQUFDO0FBRUQsTUFBTSxVQUFVLDBCQUEwQixDQUFDLFFBQWtCO0lBQ3pELE9BQU8sSUFBSSxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUM3QyxDQUFDO0FBRUQsTUFBTSxVQUFVLDBCQUEwQixDQUFDLFlBQWlDO0lBQ3hFLE9BQU8sSUFBSSxtQkFBbUIsQ0FBQyxZQUFZLENBQUMsQ0FBQztBQUNqRCxDQUFDO0FBRUQsTUFBTSxVQUFVLCtCQUErQixDQUFDLE9BQTRCLEVBQUUsT0FBc0I7SUFDaEcsT0FBTyxJQUFJLGlCQUFpQixDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztBQUNuRCxDQUFDO0FBRUQsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxjQUFjLENBQWEsb0JBQW9CLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFQUF9JTklUSUFMSVpFUiwgSW5qZWN0aW9uVG9rZW4sIE1vZHVsZVdpdGhQcm92aWRlcnMsIE5nTW9kdWxlLCBSZW5kZXJlcjIsIFJlbmRlcmVyRmFjdG9yeTIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElMb2dnZXIsIExvZ2dlciwgTG9nZ2VyTGV2ZWwgfSBmcm9tICdAdHMtY29yZS9jb21tb24nO1xuaW1wb3J0IHsgSUNvb2tpZU9wdGlvbnMgfSBmcm9tICdAdHMtY29yZS9mcm9udGVuZCc7XG5pbXBvcnQgeyBJTGFuZ3VhZ2VTZXJ2aWNlT3B0aW9ucyB9IGZyb20gJ0B0cy1jb3JlL2Zyb250ZW5kJztcbmltcG9ydCB7IERlZmF1bHRMb2dnZXIgfSBmcm9tICdAdHMtY29yZS9mcm9udGVuZCc7XG5pbXBvcnQgeyBMb2FkaW5nU2VydmljZSwgTmF0aXZlV2luZG93U2VydmljZSB9IGZyb20gJ0B0cy1jb3JlL2Zyb250ZW5kJztcbmltcG9ydCB7IElUaGVtZVNlcnZpY2VPcHRpb25zIH0gZnJvbSAnQHRzLWNvcmUvZnJvbnRlbmQnO1xuaW1wb3J0IHsgQXNzZXRNb2R1bGUgfSBmcm9tICcuL2Fzc2V0L0Fzc2V0TW9kdWxlJztcbmltcG9ydCB7IENvb2tpZU1vZHVsZSB9IGZyb20gJy4vY29va2llL0Nvb2tpZU1vZHVsZSc7XG5pbXBvcnQgeyBDYW5EZWFjdGl2YXRlR3VhcmQgfSBmcm9tICcuL3NlcnZpY2Uvcm91dGUvQ2FuRGVhY3RpdmF0ZUd1YXJkJztcbmltcG9ydCB7IEFzcGVjdFJhdGlvUmVzaXplRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmUvQXNwZWN0UmF0aW9SZXNpemVEaXJlY3RpdmUnO1xuaW1wb3J0IHsgQXV0b1Njcm9sbEJvdHRvbURpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlL0F1dG9TY3JvbGxCb3R0b21EaXJlY3RpdmUnO1xuaW1wb3J0IHsgQ2xpY2tUb0NvcHlEaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZS9DbGlja1RvQ29weURpcmVjdGl2ZSc7XG5pbXBvcnQgeyBDbGlja1RvU2VsZWN0RGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmUvQ2xpY2tUb1NlbGVjdERpcmVjdGl2ZSc7XG5pbXBvcnQgeyBGb2N1c0RpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlL0ZvY3VzRGlyZWN0aXZlJztcbmltcG9ydCB7IFNlbGVjdE9uRm9jdXNEaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZS9TZWxlY3RPbkZvY3VzRGlyZWN0aXZlJztcbmltcG9ydCB7IEhUTUxUaXRsZURpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlL0hUTUxUaXRsZURpcmVjdGl2ZSc7XG5pbXBvcnQgeyBIVE1MQ29udGVudFRpdGxlRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmUvSFRNTENvbnRlbnRUaXRsZURpcmVjdGl2ZSc7XG5pbXBvcnQgeyBJbmZpbml0ZVNjcm9sbERpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlL0luZmluaXRlU2Nyb2xsRGlyZWN0aXZlJztcbmltcG9ydCB7IFJlc2l6ZURpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlL1Jlc2l6ZURpcmVjdGl2ZSc7XG5pbXBvcnQgeyBTY3JvbGxDaGVja0RpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlL1Njcm9sbENoZWNrRGlyZWN0aXZlJztcbmltcG9ydCB7IFNjcm9sbERpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlL1Njcm9sbERpcmVjdGl2ZSc7XG5pbXBvcnQgeyBMYW5ndWFnZU1vZHVsZSB9IGZyb20gJy4vbGFuZ3VhZ2UvTGFuZ3VhZ2VNb2R1bGUnO1xuaW1wb3J0IHsgQ2FtZWxDYXNlUGlwZSB9IGZyb20gJy4vcGlwZS9DYW1lbENhc2VQaXBlJztcbmltcG9ydCB7IEZpbmFuY2VQaXBlIH0gZnJvbSAnLi9waXBlL0ZpbmFuY2VQaXBlJztcbmltcG9ydCB7IE1vbWVudERhdGVBZGFwdGl2ZVBpcGUgfSBmcm9tICcuL3BpcGUvTW9tZW50RGF0ZUFkYXB0aXZlUGlwZSc7XG5pbXBvcnQgeyBNb21lbnREYXRlRnJvbU5vd1BpcGUgfSBmcm9tICcuL3BpcGUvTW9tZW50RGF0ZUZyb21Ob3dQaXBlJztcbmltcG9ydCB7IE1vbWVudERhdGVQaXBlIH0gZnJvbSAnLi9waXBlL01vbWVudERhdGVQaXBlJztcbmltcG9ydCB7IE1vbWVudFRpbWVQaXBlIH0gZnJvbSAnLi9waXBlL01vbWVudFRpbWVQaXBlJztcbmltcG9ydCB7IE5nTW9kZWxFcnJvclBpcGUgfSBmcm9tICcuL3BpcGUvTmdNb2RlbEVycm9yUGlwZSc7XG5pbXBvcnQgeyBTYW5pdGl6ZVBpcGUgfSBmcm9tICcuL3BpcGUvU2FuaXRpemVQaXBlJztcbmltcG9ydCB7IFN0YXJ0Q2FzZVBpcGUgfSBmcm9tICcuL3BpcGUvU3RhcnRDYXNlUGlwZSc7XG5pbXBvcnQgeyBUaW1lUGlwZSB9IGZyb20gJy4vcGlwZS9UaW1lUGlwZSc7XG5pbXBvcnQgeyBUcnVuY2F0ZVBpcGUgfSBmcm9tICcuL3BpcGUvVHJ1bmNhdGVQaXBlJztcbmltcG9ydCB7IFByZXR0aWZ5UGlwZSB9IGZyb20gJy4vcGlwZS9QcmV0dGlmeVBpcGUnO1xuaW1wb3J0IHsgVGhlbWVNb2R1bGUgfSBmcm9tICcuL3RoZW1lL1RoZW1lTW9kdWxlJztcbmltcG9ydCB7IElzU2VydmVyRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmUvSXNTZXJ2ZXJEaXJlY3RpdmUnO1xuaW1wb3J0IHsgSXNCcm93c2VyRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmUvSXNCcm93c2VyRGlyZWN0aXZlJztcbmltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFBsYXRmb3JtU2VydmljZSB9IGZyb20gJy4vc2VydmljZS9QbGF0Zm9ybVNlcnZpY2UnO1xuaW1wb3J0IHsgVmlld1V0aWwgfSBmcm9tICcuL3V0aWwvVmlld1V0aWwnO1xuaW1wb3J0IHsgQ29va2llU2VydmljZSB9IGZyb20gJy4vY29va2llL0Nvb2tpZVNlcnZpY2UnO1xuaW1wb3J0IHsgTG9naW5Ub2tlblN0b3JhZ2UgfSBmcm9tICcuL2xvZ2luL0xvZ2luVG9rZW5TdG9yYWdlJztcbmltcG9ydCB7IExvY2FsU3RvcmFnZVNlcnZpY2UgfSBmcm9tICcuL3N0b3JhZ2UvTG9jYWxTdG9yYWdlU2VydmljZSc7XG5pbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaCc7XG5cbmxldCBpbXBvcnRzID0gW0Nvb2tpZU1vZHVsZSwgVGhlbWVNb2R1bGUsIExhbmd1YWdlTW9kdWxlLCBBc3NldE1vZHVsZV07XG5cbmxldCBkZWNsYXJhdGlvbnMgPSBbXG4gICAgVGltZVBpcGUsXG4gICAgRmluYW5jZVBpcGUsXG4gICAgU2FuaXRpemVQaXBlLFxuICAgIFRydW5jYXRlUGlwZSxcbiAgICBQcmV0dGlmeVBpcGUsXG4gICAgQ2FtZWxDYXNlUGlwZSxcbiAgICBTdGFydENhc2VQaXBlLFxuICAgIE5nTW9kZWxFcnJvclBpcGUsXG5cbiAgICBJc1NlcnZlckRpcmVjdGl2ZSxcbiAgICBJc0Jyb3dzZXJEaXJlY3RpdmUsXG5cbiAgICBNb21lbnREYXRlUGlwZSxcbiAgICBNb21lbnRUaW1lUGlwZSxcbiAgICBNb21lbnREYXRlRnJvbU5vd1BpcGUsXG4gICAgTW9tZW50RGF0ZUFkYXB0aXZlUGlwZSxcblxuICAgIEZvY3VzRGlyZWN0aXZlLFxuICAgIFJlc2l6ZURpcmVjdGl2ZSxcbiAgICBTY3JvbGxEaXJlY3RpdmUsXG4gICAgU2Nyb2xsQ2hlY2tEaXJlY3RpdmUsXG4gICAgQ2xpY2tUb0NvcHlEaXJlY3RpdmUsXG4gICAgU2VsZWN0T25Gb2N1c0RpcmVjdGl2ZSxcbiAgICBDbGlja1RvU2VsZWN0RGlyZWN0aXZlLFxuICAgIEluZmluaXRlU2Nyb2xsRGlyZWN0aXZlLFxuICAgIEhUTUxUaXRsZURpcmVjdGl2ZSxcbiAgICBIVE1MQ29udGVudFRpdGxlRGlyZWN0aXZlLFxuICAgIEF1dG9TY3JvbGxCb3R0b21EaXJlY3RpdmUsXG4gICAgQXNwZWN0UmF0aW9SZXNpemVEaXJlY3RpdmVcbl07XG5cbmxldCBleHBvcnRzID0gWy4uLmltcG9ydHMsIC4uLmRlY2xhcmF0aW9uc107XG5cbkBOZ01vZHVsZSh7XG4gICAgaW1wb3J0cyxcbiAgICBkZWNsYXJhdGlvbnMsXG4gICAgZXhwb3J0c1xufSlcbmV4cG9ydCBjbGFzcyBWSU1vZHVsZSB7XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvL1xuICAgIC8vIFx0U3RhdGljIE1ldGhvZHNcbiAgICAvL1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICBwdWJsaWMgc3RhdGljIGZvclJvb3Qob3B0aW9ucz86IElWSU9wdGlvbnMpOiBNb2R1bGVXaXRoUHJvdmlkZXJzPFZJTW9kdWxlPiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBuZ01vZHVsZTogVklNb2R1bGUsXG4gICAgICAgICAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHByb3ZpZGU6IEFQUF9JTklUSUFMSVpFUixcbiAgICAgICAgICAgICAgICAgICAgZGVwczogW05hdGl2ZVdpbmRvd1NlcnZpY2UsIFJlbmRlcmVyRmFjdG9yeTJdLFxuICAgICAgICAgICAgICAgICAgICB1c2VGYWN0b3J5OiBpbml0aWFsaXplckZhY3RvcnksXG4gICAgICAgICAgICAgICAgICAgIG11bHRpOiB0cnVlXG4gICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgIExvYWRpbmdTZXJ2aWNlLFxuICAgICAgICAgICAgICAgIFBsYXRmb3JtU2VydmljZSxcbiAgICAgICAgICAgICAgICBDYW5EZWFjdGl2YXRlR3VhcmQsXG5cbiAgICAgICAgICAgICAgICB7IHByb3ZpZGU6IFZJX0FOR1VMQVJfT1BUSU9OUywgdXNlVmFsdWU6IG9wdGlvbnMgfHwge30gfSxcbiAgICAgICAgICAgICAgICB7IHByb3ZpZGU6IExvZ2dlciwgZGVwczogW1ZJX0FOR1VMQVJfT1BUSU9OU10sIHVzZUZhY3Rvcnk6IGxvZ2dlclNlcnZpY2VGYWN0b3J5IH0sXG4gICAgICAgICAgICAgICAgeyBwcm92aWRlOiBOYXRpdmVXaW5kb3dTZXJ2aWNlLCBkZXBzOiBbRE9DVU1FTlRdLCB1c2VGYWN0b3J5OiBuYXRpdmVXaW5kb3dTZXJ2aWNlRmFjdG9yeSB9LFxuICAgICAgICAgICAgICAgIHsgcHJvdmlkZTogTG9jYWxTdG9yYWdlU2VydmljZSwgZGVwczogW05hdGl2ZVdpbmRvd1NlcnZpY2VdLCB1c2VGYWN0b3J5OiBsb2NhbFN0b3JhZ2VTZXJ2aWNlRmFjdG9yeSB9LFxuICAgICAgICAgICAgICAgIHsgcHJvdmlkZTogTG9naW5Ub2tlblN0b3JhZ2UsIGRlcHM6IFtMb2NhbFN0b3JhZ2VTZXJ2aWNlLCBDb29raWVTZXJ2aWNlXSwgdXNlRmFjdG9yeTogbG9naW5Ub2tlblN0b3JhZ2VTZXJ2aWNlRmFjdG9yeSB9LFxuXG4gICAgICAgICAgICAgICAgLi4uQ29va2llTW9kdWxlLmZvclJvb3Qob3B0aW9ucykucHJvdmlkZXJzLFxuICAgICAgICAgICAgICAgIC4uLlRoZW1lTW9kdWxlLmZvclJvb3Qob3B0aW9ucyA/IG9wdGlvbnMudGhlbWVPcHRpb25zIDogbnVsbCkucHJvdmlkZXJzLFxuICAgICAgICAgICAgICAgIC4uLkxhbmd1YWdlTW9kdWxlLmZvclJvb3Qob3B0aW9ucyA/IG9wdGlvbnMubGFuZ3VhZ2VPcHRpb25zIDogbnVsbCkucHJvdmlkZXJzXG4gICAgICAgICAgICBdXG4gICAgICAgIH07XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgSVZJT3B0aW9ucyBleHRlbmRzIElDb29raWVPcHRpb25zIHtcbiAgICBsb2dnZXJMZXZlbD86IExvZ2dlckxldmVsO1xuICAgIHRoZW1lT3B0aW9ucz86IElUaGVtZVNlcnZpY2VPcHRpb25zO1xuICAgIGxhbmd1YWdlT3B0aW9ucz86IElMYW5ndWFnZVNlcnZpY2VPcHRpb25zO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5pdGlhbGl6ZXJGYWN0b3J5KG5hdGl2ZVdpbmRvdzogTmF0aXZlV2luZG93U2VydmljZSwgcmVuZGVyZXJGYWN0b3J5MjogUmVuZGVyZXJGYWN0b3J5Mik6IFZpZXdVdGlsIHtcbiAgICBWaWV3VXRpbC5yZW5kZXJlciA9IHJlbmRlcmVyRmFjdG9yeTIuY3JlYXRlUmVuZGVyZXIobnVsbCwgbnVsbCk7XG4gICAgVmlld1V0aWwuZG9jdW1lbnQgPSBuYXRpdmVXaW5kb3cuZG9jdW1lbnQ7XG4gICAgcmV0dXJuICgpID0+IFByb21pc2UucmVzb2x2ZSgpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbG9nZ2VyU2VydmljZUZhY3Rvcnkob3B0aW9uczogSVZJT3B0aW9ucyk6IElMb2dnZXIge1xuICAgIHJldHVybiBuZXcgRGVmYXVsdExvZ2dlcighXy5pc05pbChvcHRpb25zLmxvZ2dlckxldmVsKSA/IG9wdGlvbnMubG9nZ2VyTGV2ZWwgOiBMb2dnZXJMZXZlbC5BTEwpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbmF0aXZlV2luZG93U2VydmljZUZhY3RvcnkoZG9jdW1lbnQ6IERvY3VtZW50KTogTmF0aXZlV2luZG93U2VydmljZSB7XG4gICAgcmV0dXJuIG5ldyBOYXRpdmVXaW5kb3dTZXJ2aWNlKGRvY3VtZW50KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxvY2FsU3RvcmFnZVNlcnZpY2VGYWN0b3J5KG5hdGl2ZVdpbmRvdzogTmF0aXZlV2luZG93U2VydmljZSk6IExvY2FsU3RvcmFnZVNlcnZpY2Uge1xuICAgIHJldHVybiBuZXcgTG9jYWxTdG9yYWdlU2VydmljZShuYXRpdmVXaW5kb3cpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbG9naW5Ub2tlblN0b3JhZ2VTZXJ2aWNlRmFjdG9yeShzdG9yYWdlOiBMb2NhbFN0b3JhZ2VTZXJ2aWNlLCBjb29raWVzOiBDb29raWVTZXJ2aWNlKTogTG9naW5Ub2tlblN0b3JhZ2Uge1xuICAgIHJldHVybiBuZXcgTG9naW5Ub2tlblN0b3JhZ2Uoc3RvcmFnZSwgY29va2llcyk7XG59XG5cbmV4cG9ydCBjb25zdCBWSV9BTkdVTEFSX09QVElPTlMgPSBuZXcgSW5qZWN0aW9uVG9rZW48SVZJT3B0aW9ucz4oYFZJX0FOR1VMQVJfT1BUSU9OU2ApO1xuIl19
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import { Component } from '@angular/core';
|
|
2
|
+
import { DestroyableContainer } from '@ts-core/common';
|
|
3
|
+
import { PromiseHandler } from '@ts-core/common';
|
|
4
|
+
import * as _ from 'lodash';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
export class ApplicationBaseComponent extends DestroyableContainer {
|
|
7
|
+
// --------------------------------------------------------------------------
|
|
8
|
+
//
|
|
9
|
+
// Properties
|
|
10
|
+
//
|
|
11
|
+
// --------------------------------------------------------------------------
|
|
12
|
+
timeout;
|
|
13
|
+
isReadyAlreadyCalled;
|
|
14
|
+
viewReadyDelay = NaN;
|
|
15
|
+
viewReadyPromise;
|
|
16
|
+
// --------------------------------------------------------------------------
|
|
17
|
+
//
|
|
18
|
+
// Constructor
|
|
19
|
+
//
|
|
20
|
+
// --------------------------------------------------------------------------
|
|
21
|
+
constructor() {
|
|
22
|
+
super();
|
|
23
|
+
this.viewReadyPromise = PromiseHandler.create();
|
|
24
|
+
}
|
|
25
|
+
// --------------------------------------------------------------------------
|
|
26
|
+
//
|
|
27
|
+
// Private Methods
|
|
28
|
+
//
|
|
29
|
+
// --------------------------------------------------------------------------
|
|
30
|
+
makeViewReady = () => {
|
|
31
|
+
this.viewReadyPromise.resolve();
|
|
32
|
+
this.viewReadyHandler();
|
|
33
|
+
this.checkReady();
|
|
34
|
+
};
|
|
35
|
+
// --------------------------------------------------------------------------
|
|
36
|
+
//
|
|
37
|
+
// Protected Methods
|
|
38
|
+
//
|
|
39
|
+
// --------------------------------------------------------------------------
|
|
40
|
+
checkReady() {
|
|
41
|
+
if (this.isReadyAlreadyCalled || !this.isReady()) {
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
this.isReadyAlreadyCalled = true;
|
|
45
|
+
this.readyHandler();
|
|
46
|
+
}
|
|
47
|
+
isReady() {
|
|
48
|
+
return this.isViewReady;
|
|
49
|
+
}
|
|
50
|
+
viewReadyHandler() { }
|
|
51
|
+
// --------------------------------------------------------------------------
|
|
52
|
+
//
|
|
53
|
+
// Public Methods
|
|
54
|
+
//
|
|
55
|
+
// --------------------------------------------------------------------------
|
|
56
|
+
ngAfterViewInit() {
|
|
57
|
+
if (this.viewReadyDelay > 0) {
|
|
58
|
+
PromiseHandler.delay(this.viewReadyDelay).then(this.makeViewReady);
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
this.makeViewReady();
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
destroy() {
|
|
65
|
+
if (this.isDestroyed) {
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
super.destroy();
|
|
69
|
+
if (!_.isNil(this.viewReadyPromise)) {
|
|
70
|
+
this.viewReadyPromise.reject();
|
|
71
|
+
this.viewReadyPromise = null;
|
|
72
|
+
}
|
|
73
|
+
if (!_.isNil(this.timeout)) {
|
|
74
|
+
clearTimeout(this.timeout);
|
|
75
|
+
this.timeout = null;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
// --------------------------------------------------------------------------
|
|
79
|
+
//
|
|
80
|
+
// Public Properties
|
|
81
|
+
//
|
|
82
|
+
// --------------------------------------------------------------------------
|
|
83
|
+
get isViewReady() {
|
|
84
|
+
return !_.isNil(this.viewReadyPromise) ? this.viewReadyPromise.isResolved : false;
|
|
85
|
+
}
|
|
86
|
+
get viewReady() {
|
|
87
|
+
return !_.isNil(this.viewReadyPromise) ? this.viewReadyPromise.promise : null;
|
|
88
|
+
}
|
|
89
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: ApplicationBaseComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
90
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.8", type: ApplicationBaseComponent, selector: "ng-component", usesInheritance: true, ngImport: i0, template: '', isInline: true });
|
|
91
|
+
}
|
|
92
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: ApplicationBaseComponent, decorators: [{
|
|
93
|
+
type: Component,
|
|
94
|
+
args: [{ template: '' }]
|
|
95
|
+
}], ctorParameters: () => [] });
|
|
96
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXBwbGljYXRpb25CYXNlQ29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwcGxpY2F0aW9uL0FwcGxpY2F0aW9uQmFzZUNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakQsT0FBTyxLQUFLLENBQUMsTUFBTSxRQUFRLENBQUM7O0FBRzVCLE1BQU0sT0FBZ0Isd0JBQXlCLFNBQVEsb0JBQW9CO0lBQ3ZFLDZFQUE2RTtJQUM3RSxFQUFFO0lBQ0YsY0FBYztJQUNkLEVBQUU7SUFDRiw2RUFBNkU7SUFFbkUsT0FBTyxDQUFNO0lBQ2Isb0JBQW9CLENBQVU7SUFFOUIsY0FBYyxHQUFXLEdBQUcsQ0FBQztJQUM3QixnQkFBZ0IsQ0FBNkI7SUFFdkQsNkVBQTZFO0lBQzdFLEVBQUU7SUFDRixlQUFlO0lBQ2YsRUFBRTtJQUNGLDZFQUE2RTtJQUU3RTtRQUNJLEtBQUssRUFBRSxDQUFDO1FBQ1IsSUFBSSxDQUFDLGdCQUFnQixHQUFHLGNBQWMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUNwRCxDQUFDO0lBRUQsNkVBQTZFO0lBQzdFLEVBQUU7SUFDRixtQkFBbUI7SUFDbkIsRUFBRTtJQUNGLDZFQUE2RTtJQUVyRSxhQUFhLEdBQUcsR0FBUyxFQUFFO1FBQy9CLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNoQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDdEIsQ0FBQyxDQUFDO0lBRUYsNkVBQTZFO0lBQzdFLEVBQUU7SUFDRixxQkFBcUI7SUFDckIsRUFBRTtJQUNGLDZFQUE2RTtJQUVuRSxVQUFVO1FBQ2hCLElBQUksSUFBSSxDQUFDLG9CQUFvQixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQzlDLE9BQU87U0FDVjtRQUNELElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUM7UUFDakMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFUyxPQUFPO1FBQ2IsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzVCLENBQUM7SUFFUyxnQkFBZ0IsS0FBVSxDQUFDO0lBSXJDLDZFQUE2RTtJQUM3RSxFQUFFO0lBQ0Ysa0JBQWtCO0lBQ2xCLEVBQUU7SUFDRiw2RUFBNkU7SUFFdEUsZUFBZTtRQUNsQixJQUFJLElBQUksQ0FBQyxjQUFjLEdBQUcsQ0FBQyxFQUFFO1lBQ3pCLGNBQWMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7U0FDdEU7YUFBTTtZQUNILElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztTQUN4QjtJQUNMLENBQUM7SUFFTSxPQUFPO1FBQ1YsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ2xCLE9BQU87U0FDVjtRQUNELEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUVoQixJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsRUFBRTtZQUNqQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDL0IsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQztTQUNoQztRQUVELElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUN4QixZQUFZLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzNCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1NBQ3ZCO0lBQ0wsQ0FBQztJQUVELDZFQUE2RTtJQUM3RSxFQUFFO0lBQ0YscUJBQXFCO0lBQ3JCLEVBQUU7SUFDRiw2RUFBNkU7SUFFN0UsSUFBVyxXQUFXO1FBQ2xCLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDdEYsQ0FBQztJQUNELElBQVcsU0FBUztRQUNoQixPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ2xGLENBQUM7dUdBcEdpQix3QkFBd0I7MkZBQXhCLHdCQUF3QiwyRUFEdkIsRUFBRTs7MkZBQ0gsd0JBQXdCO2tCQUQ3QyxTQUFTO21CQUFDLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRGVzdHJveWFibGVDb250YWluZXIgfSBmcm9tICdAdHMtY29yZS9jb21tb24nO1xuaW1wb3J0IHsgUHJvbWlzZUhhbmRsZXIgfSBmcm9tICdAdHMtY29yZS9jb21tb24nO1xuaW1wb3J0ICogYXMgXyBmcm9tICdsb2Rhc2gnO1xuXG5AQ29tcG9uZW50KHsgdGVtcGxhdGU6ICcnIH0pXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQXBwbGljYXRpb25CYXNlQ29tcG9uZW50IGV4dGVuZHMgRGVzdHJveWFibGVDb250YWluZXIgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vXG4gICAgLy8gXHRQcm9wZXJ0aWVzXG4gICAgLy9cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgcHJvdGVjdGVkIHRpbWVvdXQ6IGFueTtcbiAgICBwcm90ZWN0ZWQgaXNSZWFkeUFscmVhZHlDYWxsZWQ6IGJvb2xlYW47XG5cbiAgICBwcm90ZWN0ZWQgdmlld1JlYWR5RGVsYXk6IG51bWJlciA9IE5hTjtcbiAgICBwcm90ZWN0ZWQgdmlld1JlYWR5UHJvbWlzZTogUHJvbWlzZUhhbmRsZXI8dm9pZCwgdm9pZD47XG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vXG4gICAgLy8gXHRDb25zdHJ1Y3RvclxuICAgIC8vXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLnZpZXdSZWFkeVByb21pc2UgPSBQcm9taXNlSGFuZGxlci5jcmVhdGUoKTtcbiAgICB9XG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vXG4gICAgLy8gXHRQcml2YXRlIE1ldGhvZHNcbiAgICAvL1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICBwcml2YXRlIG1ha2VWaWV3UmVhZHkgPSAoKTogdm9pZCA9PiB7XG4gICAgICAgIHRoaXMudmlld1JlYWR5UHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgICAgIHRoaXMudmlld1JlYWR5SGFuZGxlcigpO1xuICAgICAgICB0aGlzLmNoZWNrUmVhZHkoKTtcbiAgICB9O1xuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvL1xuICAgIC8vIFx0UHJvdGVjdGVkIE1ldGhvZHNcbiAgICAvL1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICBwcm90ZWN0ZWQgY2hlY2tSZWFkeSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuaXNSZWFkeUFscmVhZHlDYWxsZWQgfHwgIXRoaXMuaXNSZWFkeSgpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5pc1JlYWR5QWxyZWFkeUNhbGxlZCA9IHRydWU7XG4gICAgICAgIHRoaXMucmVhZHlIYW5kbGVyKCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGlzUmVhZHkoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzVmlld1JlYWR5O1xuICAgIH1cblxuICAgIHByb3RlY3RlZCB2aWV3UmVhZHlIYW5kbGVyKCk6IHZvaWQge31cblxuICAgIHByb3RlY3RlZCBhYnN0cmFjdCByZWFkeUhhbmRsZXIoKTogdm9pZCB8IFByb21pc2U8dm9pZD47XG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vXG4gICAgLy8gXHRQdWJsaWMgTWV0aG9kc1xuICAgIC8vXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnZpZXdSZWFkeURlbGF5ID4gMCkge1xuICAgICAgICAgICAgUHJvbWlzZUhhbmRsZXIuZGVsYXkodGhpcy52aWV3UmVhZHlEZWxheSkudGhlbih0aGlzLm1ha2VWaWV3UmVhZHkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5tYWtlVmlld1JlYWR5KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgZGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuaXNEZXN0cm95ZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBzdXBlci5kZXN0cm95KCk7XG5cbiAgICAgICAgaWYgKCFfLmlzTmlsKHRoaXMudmlld1JlYWR5UHJvbWlzZSkpIHtcbiAgICAgICAgICAgIHRoaXMudmlld1JlYWR5UHJvbWlzZS5yZWplY3QoKTtcbiAgICAgICAgICAgIHRoaXMudmlld1JlYWR5UHJvbWlzZSA9IG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIV8uaXNOaWwodGhpcy50aW1lb3V0KSkge1xuICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMudGltZW91dCk7XG4gICAgICAgICAgICB0aGlzLnRpbWVvdXQgPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvL1xuICAgIC8vIFx0UHVibGljIFByb3BlcnRpZXNcbiAgICAvL1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICBwdWJsaWMgZ2V0IGlzVmlld1JlYWR5KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gIV8uaXNOaWwodGhpcy52aWV3UmVhZHlQcm9taXNlKSA/IHRoaXMudmlld1JlYWR5UHJvbWlzZS5pc1Jlc29sdmVkIDogZmFsc2U7XG4gICAgfVxuICAgIHB1YmxpYyBnZXQgdmlld1JlYWR5KCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gIV8uaXNOaWwodGhpcy52aWV3UmVhZHlQcm9taXNlKSA/IHRoaXMudmlld1JlYWR5UHJvbWlzZS5wcm9taXNlIDogbnVsbDtcbiAgICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { LoadableEvent } from '@ts-core/common';
|
|
2
|
+
import { Assets, AssetUrlProvider } from '@ts-core/frontend';
|
|
3
|
+
import { takeUntil } from 'rxjs';
|
|
4
|
+
import { ApplicationBaseComponent } from './ApplicationBaseComponent';
|
|
5
|
+
import moment from 'moment';
|
|
6
|
+
import numeral from 'numeral';
|
|
7
|
+
export class ApplicationComponent extends ApplicationBaseComponent {
|
|
8
|
+
// --------------------------------------------------------------------------
|
|
9
|
+
//
|
|
10
|
+
// Properties
|
|
11
|
+
//
|
|
12
|
+
// --------------------------------------------------------------------------
|
|
13
|
+
isLanguageLoaded;
|
|
14
|
+
// --------------------------------------------------------------------------
|
|
15
|
+
//
|
|
16
|
+
// Private Methods
|
|
17
|
+
//
|
|
18
|
+
// --------------------------------------------------------------------------
|
|
19
|
+
initialize() {
|
|
20
|
+
this.initializeAssets();
|
|
21
|
+
this.initializeTheme();
|
|
22
|
+
this.initializeLanguage();
|
|
23
|
+
}
|
|
24
|
+
initializeAssets() {
|
|
25
|
+
Assets.provider = new AssetUrlProvider(this.settings.assetsUrl);
|
|
26
|
+
}
|
|
27
|
+
initializeTheme() {
|
|
28
|
+
this.theme.initialize(this.settings.themes);
|
|
29
|
+
}
|
|
30
|
+
initializeLanguage() {
|
|
31
|
+
this.language.initialize(`${this.settings.assetsUrl}language/`, this.settings.languages);
|
|
32
|
+
this.language.events.pipe(takeUntil(this.destroyed)).subscribe(data => {
|
|
33
|
+
switch (data.type) {
|
|
34
|
+
case LoadableEvent.COMPLETE:
|
|
35
|
+
this.languageLoadingComplete(data.data);
|
|
36
|
+
break;
|
|
37
|
+
case LoadableEvent.ERROR:
|
|
38
|
+
this.languageLoadingError(data.data, data.error);
|
|
39
|
+
break;
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
isReady() {
|
|
44
|
+
return super.isReady() && this.isLanguageLoaded;
|
|
45
|
+
}
|
|
46
|
+
// --------------------------------------------------------------------------
|
|
47
|
+
//
|
|
48
|
+
// Event Handlers
|
|
49
|
+
//
|
|
50
|
+
// --------------------------------------------------------------------------
|
|
51
|
+
languageLoadingComplete(item) {
|
|
52
|
+
this.isLanguageLoaded = true;
|
|
53
|
+
this.setLocale(item);
|
|
54
|
+
this.checkReady();
|
|
55
|
+
}
|
|
56
|
+
viewReadyHandler() {
|
|
57
|
+
this.initialize();
|
|
58
|
+
}
|
|
59
|
+
setLocale(item) {
|
|
60
|
+
moment.locale(item.locale);
|
|
61
|
+
numeral.locale(item.locale);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXBwbGljYXRpb25Db21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwbGljYXRpb24vQXBwbGljYXRpb25Db21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxNQUFNLEVBQUUsZ0JBQWdCLEVBQXNELE1BQU0sbUJBQW1CLENBQUM7QUFFakgsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNqQyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUV0RSxPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFDNUIsT0FBTyxPQUFPLE1BQU0sU0FBUyxDQUFDO0FBRTlCLE1BQU0sT0FBZ0Isb0JBQW9ELFNBQVEsd0JBQXdCO0lBQ3RHLDZFQUE2RTtJQUM3RSxFQUFFO0lBQ0YsY0FBYztJQUNkLEVBQUU7SUFDRiw2RUFBNkU7SUFFckUsZ0JBQWdCLENBQVU7SUFFbEMsNkVBQTZFO0lBQzdFLEVBQUU7SUFDRixtQkFBbUI7SUFDbkIsRUFBRTtJQUNGLDZFQUE2RTtJQUVuRSxVQUFVO1FBQ2hCLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztJQUM5QixDQUFDO0lBRVMsZ0JBQWdCO1FBQ3RCLE1BQU0sQ0FBQyxRQUFRLEdBQUcsSUFBSSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3BFLENBQUM7SUFFUyxlQUFlO1FBQ3JCLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVTLGtCQUFrQjtRQUN4QixJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxXQUFXLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN6RixJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNsRSxRQUFRLElBQUksQ0FBQyxJQUFJLEVBQUU7Z0JBQ2YsS0FBSyxhQUFhLENBQUMsUUFBUTtvQkFDdkIsSUFBSSxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxJQUFnQixDQUFDLENBQUM7b0JBQ3BELE1BQU07Z0JBQ1YsS0FBSyxhQUFhLENBQUMsS0FBSztvQkFDcEIsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxJQUFnQixFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDN0QsTUFBTTthQUNiO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRVMsT0FBTztRQUNiLE9BQU8sS0FBSyxDQUFDLE9BQU8sRUFBRSxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztJQUNwRCxDQUFDO0lBRUQsNkVBQTZFO0lBQzdFLEVBQUU7SUFDRixrQkFBa0I7SUFDbEIsRUFBRTtJQUNGLDZFQUE2RTtJQUVuRSx1QkFBdUIsQ0FBQyxJQUFjO1FBQzVDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7UUFDN0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNyQixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUlTLGdCQUFnQjtRQUN0QixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVTLFNBQVMsQ0FBQyxJQUFjO1FBQzlCLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzNCLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2hDLENBQUM7Q0FZSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExvYWRhYmxlRXZlbnQgfSBmcm9tICdAdHMtY29yZS9jb21tb24nO1xuaW1wb3J0IHsgQXNzZXRzLCBBc3NldFVybFByb3ZpZGVyLCBUaGVtZVNlcnZpY2UsIExhbmd1YWdlU2VydmljZSwgU2V0dGluZ3NCYXNlU2VydmljZSB9IGZyb20gJ0B0cy1jb3JlL2Zyb250ZW5kJztcbmltcG9ydCB7IExhbmd1YWdlIH0gZnJvbSAnQHRzLWNvcmUvbGFuZ3VhZ2UnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBcHBsaWNhdGlvbkJhc2VDb21wb25lbnQgfSBmcm9tICcuL0FwcGxpY2F0aW9uQmFzZUNvbXBvbmVudCc7XG5pbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgbnVtZXJhbCBmcm9tICdudW1lcmFsJztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFwcGxpY2F0aW9uQ29tcG9uZW50PFQgZXh0ZW5kcyBTZXR0aW5nc0Jhc2VTZXJ2aWNlPiBleHRlbmRzIEFwcGxpY2F0aW9uQmFzZUNvbXBvbmVudCB7XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvL1xuICAgIC8vIFx0UHJvcGVydGllc1xuICAgIC8vXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIHByaXZhdGUgaXNMYW5ndWFnZUxvYWRlZDogYm9vbGVhbjtcblxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy9cbiAgICAvLyBcdFByaXZhdGUgTWV0aG9kc1xuICAgIC8vXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIHByb3RlY3RlZCBpbml0aWFsaXplKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmluaXRpYWxpemVBc3NldHMoKTtcbiAgICAgICAgdGhpcy5pbml0aWFsaXplVGhlbWUoKTtcbiAgICAgICAgdGhpcy5pbml0aWFsaXplTGFuZ3VhZ2UoKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgaW5pdGlhbGl6ZUFzc2V0cygpOiB2b2lkIHtcbiAgICAgICAgQXNzZXRzLnByb3ZpZGVyID0gbmV3IEFzc2V0VXJsUHJvdmlkZXIodGhpcy5zZXR0aW5ncy5hc3NldHNVcmwpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBpbml0aWFsaXplVGhlbWUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMudGhlbWUuaW5pdGlhbGl6ZSh0aGlzLnNldHRpbmdzLnRoZW1lcyk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGluaXRpYWxpemVMYW5ndWFnZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5sYW5ndWFnZS5pbml0aWFsaXplKGAke3RoaXMuc2V0dGluZ3MuYXNzZXRzVXJsfWxhbmd1YWdlL2AsIHRoaXMuc2V0dGluZ3MubGFuZ3VhZ2VzKTtcbiAgICAgICAgdGhpcy5sYW5ndWFnZS5ldmVudHMucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95ZWQpKS5zdWJzY3JpYmUoZGF0YSA9PiB7XG4gICAgICAgICAgICBzd2l0Y2ggKGRhdGEudHlwZSkge1xuICAgICAgICAgICAgICAgIGNhc2UgTG9hZGFibGVFdmVudC5DT01QTEVURTpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sYW5ndWFnZUxvYWRpbmdDb21wbGV0ZShkYXRhLmRhdGEgYXMgTGFuZ3VhZ2UpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIExvYWRhYmxlRXZlbnQuRVJST1I6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubGFuZ3VhZ2VMb2FkaW5nRXJyb3IoZGF0YS5kYXRhIGFzIExhbmd1YWdlLCBkYXRhLmVycm9yKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBpc1JlYWR5KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gc3VwZXIuaXNSZWFkeSgpICYmIHRoaXMuaXNMYW5ndWFnZUxvYWRlZDtcbiAgICB9XG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vXG4gICAgLy8gXHRFdmVudCBIYW5kbGVyc1xuICAgIC8vXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIHByb3RlY3RlZCBsYW5ndWFnZUxvYWRpbmdDb21wbGV0ZShpdGVtOiBMYW5ndWFnZSk6IHZvaWQge1xuICAgICAgICB0aGlzLmlzTGFuZ3VhZ2VMb2FkZWQgPSB0cnVlO1xuICAgICAgICB0aGlzLnNldExvY2FsZShpdGVtKTtcbiAgICAgICAgdGhpcy5jaGVja1JlYWR5KCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IGxhbmd1YWdlTG9hZGluZ0Vycm9yKGl0ZW06IExhbmd1YWdlLCBlcnJvcjogRXJyb3IpOiB2b2lkO1xuXG4gICAgcHJvdGVjdGVkIHZpZXdSZWFkeUhhbmRsZXIoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaW5pdGlhbGl6ZSgpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBzZXRMb2NhbGUoaXRlbTogTGFuZ3VhZ2UpOiB2b2lkIHtcbiAgICAgICAgbW9tZW50LmxvY2FsZShpdGVtLmxvY2FsZSk7XG4gICAgICAgIG51bWVyYWwubG9jYWxlKGl0ZW0ubG9jYWxlKTtcbiAgICB9XG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vXG4gICAgLy8gXHRQcm90ZWN0ZWQgU2VydmljZSBQcm9wZXJ0aWVzXG4gICAgLy9cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IGdldCBzZXR0aW5ncygpOiBUO1xuXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IGdldCB0aGVtZSgpOiBUaGVtZVNlcnZpY2U7XG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IGdldCBsYW5ndWFnZSgpOiBMYW5ndWFnZVNlcnZpY2U7XG59XG4iXX0=
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { DestroyableContainer } from '@ts-core/common';
|
|
2
|
+
import * as _ from 'lodash';
|
|
3
|
+
import { takeUntil } from 'rxjs';
|
|
4
|
+
export class MessageBaseComponent extends DestroyableContainer {
|
|
5
|
+
route;
|
|
6
|
+
language;
|
|
7
|
+
// --------------------------------------------------------------------------
|
|
8
|
+
//
|
|
9
|
+
// Properties
|
|
10
|
+
//
|
|
11
|
+
// --------------------------------------------------------------------------
|
|
12
|
+
text;
|
|
13
|
+
refreshText = 'Refresh';
|
|
14
|
+
// --------------------------------------------------------------------------
|
|
15
|
+
//
|
|
16
|
+
// Constructor
|
|
17
|
+
//
|
|
18
|
+
// --------------------------------------------------------------------------
|
|
19
|
+
constructor(route, language) {
|
|
20
|
+
super();
|
|
21
|
+
this.route = route;
|
|
22
|
+
this.language = language;
|
|
23
|
+
// this.login.isAutoLogin = true
|
|
24
|
+
this.text = this.getText();
|
|
25
|
+
if (this.language.isLoaded) {
|
|
26
|
+
this.commitLanguageProperties();
|
|
27
|
+
}
|
|
28
|
+
language.completed.pipe(takeUntil(this.destroyed)).subscribe(() => this.commitLanguageProperties());
|
|
29
|
+
}
|
|
30
|
+
// --------------------------------------------------------------------------
|
|
31
|
+
//
|
|
32
|
+
// Private Methods
|
|
33
|
+
//
|
|
34
|
+
// --------------------------------------------------------------------------
|
|
35
|
+
commitLanguageProperties() {
|
|
36
|
+
if (this.language.isHasTranslation('general.refresh')) {
|
|
37
|
+
this.refreshText = this.language.translate('general.refresh');
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
getText() {
|
|
41
|
+
let value = this.getValue(this.route.snapshot.queryParams);
|
|
42
|
+
if (_.isNil(value)) {
|
|
43
|
+
value = this.getValue(this.route.snapshot.params);
|
|
44
|
+
}
|
|
45
|
+
return value;
|
|
46
|
+
}
|
|
47
|
+
getValue(data) {
|
|
48
|
+
for (let item of this.getMessageFields()) {
|
|
49
|
+
let value = data[item];
|
|
50
|
+
if (!_.isEmpty(value)) {
|
|
51
|
+
return value;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
return null;
|
|
55
|
+
}
|
|
56
|
+
getMessageFields() {
|
|
57
|
+
return ['text', 'message', 'error'];
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWVzc2FnZUJhc2VDb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwbGljYXRpb24vTWVzc2FnZUJhc2VDb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFdkQsT0FBTyxLQUFLLENBQUMsTUFBTSxRQUFRLENBQUM7QUFDNUIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVqQyxNQUFNLE9BQWdCLG9CQUFxQixTQUFRLG9CQUFvQjtJQWdCN0M7SUFBaUM7SUFmdkQsNkVBQTZFO0lBQzdFLEVBQUU7SUFDRixhQUFhO0lBQ2IsRUFBRTtJQUNGLDZFQUE2RTtJQUV0RSxJQUFJLENBQVM7SUFDYixXQUFXLEdBQVcsU0FBUyxDQUFDO0lBRXZDLDZFQUE2RTtJQUM3RSxFQUFFO0lBQ0YsY0FBYztJQUNkLEVBQUU7SUFDRiw2RUFBNkU7SUFFN0UsWUFBc0IsS0FBcUIsRUFBWSxRQUF5QjtRQUM1RSxLQUFLLEVBQUUsQ0FBQztRQURVLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBQVksYUFBUSxHQUFSLFFBQVEsQ0FBaUI7UUFFNUUsZ0NBQWdDO1FBRWhDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQzNCLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUU7WUFDeEIsSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7U0FDbkM7UUFDRCxRQUFRLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDLENBQUM7SUFDeEcsQ0FBQztJQUVELDZFQUE2RTtJQUM3RSxFQUFFO0lBQ0Ysa0JBQWtCO0lBQ2xCLEVBQUU7SUFDRiw2RUFBNkU7SUFFbkUsd0JBQXdCO1FBQzlCLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFO1lBQ25ELElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsaUJBQWlCLENBQUMsQ0FBQztTQUNqRTtJQUNMLENBQUM7SUFFUyxPQUFPO1FBQ2IsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUMzRCxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDaEIsS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDckQ7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBRVMsUUFBUSxDQUFDLElBQVM7UUFDeEIsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsRUFBRTtZQUN0QyxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDdkIsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7Z0JBQ25CLE9BQU8sS0FBSyxDQUFDO2FBQ2hCO1NBQ0o7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRVMsZ0JBQWdCO1FBQ3RCLE9BQU8sQ0FBQyxNQUFNLEVBQUUsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3hDLENBQUM7Q0FTSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IERlc3Ryb3lhYmxlQ29udGFpbmVyIH0gZnJvbSAnQHRzLWNvcmUvY29tbW9uJztcbmltcG9ydCB7IExhbmd1YWdlU2VydmljZSB9IGZyb20gJ0B0cy1jb3JlL2Zyb250ZW5kJztcbmltcG9ydCAqIGFzIF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgTWVzc2FnZUJhc2VDb21wb25lbnQgZXh0ZW5kcyBEZXN0cm95YWJsZUNvbnRhaW5lciB7XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvL1xuICAgIC8vXHRQcm9wZXJ0aWVzXG4gICAgLy9cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgcHVibGljIHRleHQ6IHN0cmluZztcbiAgICBwdWJsaWMgcmVmcmVzaFRleHQ6IHN0cmluZyA9ICdSZWZyZXNoJztcblxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy9cbiAgICAvL1x0Q29uc3RydWN0b3JcbiAgICAvL1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgcm91dGU6IEFjdGl2YXRlZFJvdXRlLCBwcm90ZWN0ZWQgbGFuZ3VhZ2U6IExhbmd1YWdlU2VydmljZSkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICAvLyB0aGlzLmxvZ2luLmlzQXV0b0xvZ2luID0gdHJ1ZVxuXG4gICAgICAgIHRoaXMudGV4dCA9IHRoaXMuZ2V0VGV4dCgpO1xuICAgICAgICBpZiAodGhpcy5sYW5ndWFnZS5pc0xvYWRlZCkge1xuICAgICAgICAgICAgdGhpcy5jb21taXRMYW5ndWFnZVByb3BlcnRpZXMoKTtcbiAgICAgICAgfVxuICAgICAgICBsYW5ndWFnZS5jb21wbGV0ZWQucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95ZWQpKS5zdWJzY3JpYmUoKCkgPT4gdGhpcy5jb21taXRMYW5ndWFnZVByb3BlcnRpZXMoKSk7XG4gICAgfVxuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvL1xuICAgIC8vXHRQcml2YXRlIE1ldGhvZHNcbiAgICAvL1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICBwcm90ZWN0ZWQgY29tbWl0TGFuZ3VhZ2VQcm9wZXJ0aWVzKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5sYW5ndWFnZS5pc0hhc1RyYW5zbGF0aW9uKCdnZW5lcmFsLnJlZnJlc2gnKSkge1xuICAgICAgICAgICAgdGhpcy5yZWZyZXNoVGV4dCA9IHRoaXMubGFuZ3VhZ2UudHJhbnNsYXRlKCdnZW5lcmFsLnJlZnJlc2gnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXRUZXh0KCk6IHN0cmluZyB7XG4gICAgICAgIGxldCB2YWx1ZSA9IHRoaXMuZ2V0VmFsdWUodGhpcy5yb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtcyk7XG4gICAgICAgIGlmIChfLmlzTmlsKHZhbHVlKSkge1xuICAgICAgICAgICAgdmFsdWUgPSB0aGlzLmdldFZhbHVlKHRoaXMucm91dGUuc25hcHNob3QucGFyYW1zKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldFZhbHVlKGRhdGE6IGFueSk6IHN0cmluZyB7XG4gICAgICAgIGZvciAobGV0IGl0ZW0gb2YgdGhpcy5nZXRNZXNzYWdlRmllbGRzKCkpIHtcbiAgICAgICAgICAgIGxldCB2YWx1ZSA9IGRhdGFbaXRlbV07XG4gICAgICAgICAgICBpZiAoIV8uaXNFbXB0eSh2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldE1lc3NhZ2VGaWVsZHMoKTogQXJyYXk8c3RyaW5nPiB7XG4gICAgICAgIHJldHVybiBbJ3RleHQnLCAnbWVzc2FnZScsICdlcnJvciddO1xuICAgIH1cblxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy9cbiAgICAvL1x0UHVibGljIE1ldGhvZHNcbiAgICAvL1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICBwdWJsaWMgYWJzdHJhY3QgcmVmcmVzaCgpOiB2b2lkO1xufVxuIl19
|