ngx-firebase 1.1.13 → 22.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +121 -13
- package/fesm2022/ngx-firebase.mjs +158 -0
- package/fesm2022/ngx-firebase.mjs.map +1 -0
- package/package.json +39 -30
- package/types/ngx-firebase.d.ts +55 -0
- package/bundles/ngx-firebase-capacitor.umd.js +0 -763
- package/bundles/ngx-firebase-capacitor.umd.js.map +0 -1
- package/bundles/ngx-firebase-capacitor.umd.min.js +0 -16
- package/bundles/ngx-firebase-capacitor.umd.min.js.map +0 -1
- package/bundles/ngx-firebase-iap.umd.js +0 -718
- package/bundles/ngx-firebase-iap.umd.js.map +0 -1
- package/bundles/ngx-firebase-iap.umd.min.js +0 -2
- package/bundles/ngx-firebase-iap.umd.min.js.map +0 -1
- package/bundles/ngx-firebase-ionic-auth-ui.umd.js +0 -2116
- package/bundles/ngx-firebase-ionic-auth-ui.umd.js.map +0 -1
- package/bundles/ngx-firebase-ionic-auth-ui.umd.min.js +0 -16
- package/bundles/ngx-firebase-ionic-auth-ui.umd.min.js.map +0 -1
- package/bundles/ngx-firebase-ionic.umd.js +0 -979
- package/bundles/ngx-firebase-ionic.umd.js.map +0 -1
- package/bundles/ngx-firebase-ionic.umd.min.js +0 -16
- package/bundles/ngx-firebase-ionic.umd.min.js.map +0 -1
- package/bundles/ngx-firebase-testing.umd.js +0 -801
- package/bundles/ngx-firebase-testing.umd.js.map +0 -1
- package/bundles/ngx-firebase-testing.umd.min.js +0 -2
- package/bundles/ngx-firebase-testing.umd.min.js.map +0 -1
- package/bundles/ngx-firebase.umd.js +0 -2299
- package/bundles/ngx-firebase.umd.js.map +0 -1
- package/bundles/ngx-firebase.umd.min.js +0 -2
- package/bundles/ngx-firebase.umd.min.js.map +0 -1
- package/capacitor/capacitor.module.d.ts +0 -9
- package/capacitor/interfaces/config.d.ts +0 -12
- package/capacitor/interfaces/index.d.ts +0 -1
- package/capacitor/ngx-firebase-capacitor.d.ts +0 -5
- package/capacitor/ngx-firebase-capacitor.metadata.json +0 -1
- package/capacitor/package.json +0 -25
- package/capacitor/public-api.d.ts +0 -3
- package/capacitor/services/analytics-firebase-capacitor.service.d.ts +0 -9
- package/capacitor/services/crashlytics-firebase-capacitor.service.d.ts +0 -8
- package/capacitor/services/credential-factory-capacitor.service.d.ts +0 -18
- package/capacitor/services/index.d.ts +0 -3
- package/esm2015/capacitor/capacitor.module.js +0 -78
- package/esm2015/capacitor/interfaces/config.js +0 -3
- package/esm2015/capacitor/interfaces/index.js +0 -2
- package/esm2015/capacitor/ngx-firebase-capacitor.js +0 -6
- package/esm2015/capacitor/public-api.js +0 -4
- package/esm2015/capacitor/services/analytics-firebase-capacitor.service.js +0 -43
- package/esm2015/capacitor/services/crashlytics-firebase-capacitor.service.js +0 -40
- package/esm2015/capacitor/services/credential-factory-capacitor.service.js +0 -182
- package/esm2015/capacitor/services/index.js +0 -4
- package/esm2015/iap/iap.module.js +0 -32
- package/esm2015/iap/interfaces/index.js +0 -5
- package/esm2015/iap/ngx-firebase-iap.js +0 -5
- package/esm2015/iap/public-api.js +0 -5
- package/esm2015/iap/services/iap.service.js +0 -317
- package/esm2015/iap/tokens/index.js +0 -4
- package/esm2015/ionic/animations/index.js +0 -30
- package/esm2015/ionic/components/avatar/avatar.component.js +0 -98
- package/esm2015/ionic/components/avatar/index.js +0 -2
- package/esm2015/ionic/components/index.js +0 -3
- package/esm2015/ionic/components/popover-menu/index.js +0 -3
- package/esm2015/ionic/components/popover-menu/interface.js +0 -2
- package/esm2015/ionic/components/popover-menu/popover-menu.component.js +0 -34
- package/esm2015/ionic/ionic.module.js +0 -46
- package/esm2015/ionic/ngx-firebase-ionic.js +0 -5
- package/esm2015/ionic/public-api.js +0 -5
- package/esm2015/ionic/services/alerts-ionic.service.js +0 -107
- package/esm2015/ionic/services/index.js +0 -6
- package/esm2015/ionic/services/legality-dialog-ionic.service.js +0 -85
- package/esm2015/ionic/services/loading-ionic.service.js +0 -46
- package/esm2015/ionic/services/picker-ionic.service.js +0 -44
- package/esm2015/ionic/services/toast-ionic.service.js +0 -49
- package/esm2015/ionic-auth-ui/animations/index.js +0 -30
- package/esm2015/ionic-auth-ui/components/email-confirmation/email-confirmation.component.js +0 -99
- package/esm2015/ionic-auth-ui/components/email-field/email-field.component.js +0 -25
- package/esm2015/ionic-auth-ui/components/form-field/form-field.component.js +0 -82
- package/esm2015/ionic-auth-ui/components/index.js +0 -12
- package/esm2015/ionic-auth-ui/components/name-field/name-field.component.js +0 -30
- package/esm2015/ionic-auth-ui/components/or-divider/or-divider.component.js +0 -11
- package/esm2015/ionic-auth-ui/components/password-field/password-field.component.js +0 -138
- package/esm2015/ionic-auth-ui/components/password-field/passwordValidatorFunctions.js +0 -62
- package/esm2015/ionic-auth-ui/components/providers/providers.component.js +0 -70
- package/esm2015/ionic-auth-ui/components/reauthenticate/reauthenticate.component.js +0 -99
- package/esm2015/ionic-auth-ui/components/register/register.component.js +0 -142
- package/esm2015/ionic-auth-ui/components/register-with-email/register-with-email.component.js +0 -60
- package/esm2015/ionic-auth-ui/components/register-with-email-popover/register-with-email-popover.component.js +0 -26
- package/esm2015/ionic-auth-ui/components/signin/signin.component.js +0 -92
- package/esm2015/ionic-auth-ui/components/terms-field/terms-field.component.js +0 -99
- package/esm2015/ionic-auth-ui/components/user/user.component.js +0 -195
- package/esm2015/ionic-auth-ui/ionic-auth-ui.module.js +0 -92
- package/esm2015/ionic-auth-ui/ngx-firebase-ionic-auth-ui.js +0 -23
- package/esm2015/ionic-auth-ui/pages/index.js +0 -5
- package/esm2015/ionic-auth-ui/pages/register/index.js +0 -2
- package/esm2015/ionic-auth-ui/pages/register/register.page.js +0 -56
- package/esm2015/ionic-auth-ui/pages/signin/index.js +0 -2
- package/esm2015/ionic-auth-ui/pages/signin/signin.page.js +0 -78
- package/esm2015/ionic-auth-ui/pages/user/index.js +0 -2
- package/esm2015/ionic-auth-ui/pages/user/user.page.js +0 -11
- package/esm2015/ionic-auth-ui/pages/verifyemail/index.js +0 -2
- package/esm2015/ionic-auth-ui/pages/verifyemail/verifyemail.page.js +0 -85
- package/esm2015/ionic-auth-ui/public-api.js +0 -5
- package/esm2015/ngx-firebase.js +0 -6
- package/esm2015/public-api.js +0 -6
- package/esm2015/shared/guards/index.js +0 -3
- package/esm2015/shared/guards/logged-in.guard.js +0 -60
- package/esm2015/shared/guards/verify-email.guard.js +0 -41
- package/esm2015/shared/interfaces/accounts.enum.js +0 -9
- package/esm2015/shared/interfaces/authprovider.enum.js +0 -15
- package/esm2015/shared/interfaces/config.interface.js +0 -61
- package/esm2015/shared/interfaces/index.js +0 -8
- package/esm2015/shared/interfaces/main.interface.js +0 -7
- package/esm2015/shared/interfaces/providers.interface.js +0 -2
- package/esm2015/shared/interfaces/tokens.js +0 -19
- package/esm2015/shared/interfaces/ui-providers.interface.js +0 -2
- package/esm2015/shared/services/analytics.service.js +0 -24
- package/esm2015/shared/services/auth-process.service.js +0 -779
- package/esm2015/shared/services/crashlytics.service.js +0 -42
- package/esm2015/shared/services/device-info.service.js +0 -14
- package/esm2015/shared/services/firebase.service.js +0 -37
- package/esm2015/shared/services/firestore-sync.service.js +0 -60
- package/esm2015/shared/services/index.js +0 -10
- package/esm2015/shared/services/performance.service.js +0 -28
- package/esm2015/shared/services/remoteconfig.service.js +0 -49
- package/esm2015/shared/services/ui.service.js +0 -45
- package/esm2015/shared/shared.module.js +0 -175
- package/esm2015/shared/types/DisplayWidth.js +0 -9
- package/esm2015/shared/types/Location.js +0 -2
- package/esm2015/shared/types/ValueAccessorControlComponent.js +0 -85
- package/esm2015/shared/types/ValueAccessorValueComponent.js +0 -40
- package/esm2015/shared/types/index.js +0 -5
- package/esm2015/testing/fakeavatar.module.js +0 -22
- package/esm2015/testing/fakes/FakeAuthProcessService.js +0 -31
- package/esm2015/testing/fakes/FakeAvatarComponent.js +0 -13
- package/esm2015/testing/fakes/FakeFireService.js +0 -21
- package/esm2015/testing/fakes/FakeFirestoreSyncService.js +0 -11
- package/esm2015/testing/fakes/FakeIAPurchaseService.js +0 -11
- package/esm2015/testing/fakes/FakePickerService.js +0 -9
- package/esm2015/testing/fakes/FakeRemoteConfigService.js +0 -44
- package/esm2015/testing/fakes/FakeTranslateService.js +0 -21
- package/esm2015/testing/fakes/FakeUiService.js +0 -26
- package/esm2015/testing/fakes/angular-fire/FakeAngularFireAuth.js +0 -30
- package/esm2015/testing/fakes/angular-fire/FakeAngularFireFunctions.js +0 -17
- package/esm2015/testing/fakes/angular-fire/FakeAngularFirePerformance.js +0 -17
- package/esm2015/testing/fakes/angular-fire/FakeAngularFireStorage.js +0 -8
- package/esm2015/testing/fakes/angular-fire/FakeAngularFirestore.js +0 -8
- package/esm2015/testing/fakes/angular-fire/FakeUserCredential.js +0 -18
- package/esm2015/testing/fakes/index.js +0 -19
- package/esm2015/testing/ngx-firebase-testing.js +0 -6
- package/esm2015/testing/public-api.js +0 -5
- package/esm2015/testing/test.module.js +0 -66
- package/esm2015/testing/utils/index.js +0 -17
- package/esm2015/testing/utils/patchConsole.js +0 -14
- package/fesm2015/ngx-firebase-capacitor.js +0 -328
- package/fesm2015/ngx-firebase-capacitor.js.map +0 -1
- package/fesm2015/ngx-firebase-iap.js +0 -354
- package/fesm2015/ngx-firebase-iap.js.map +0 -1
- package/fesm2015/ngx-firebase-ionic-auth-ui.js +0 -1482
- package/fesm2015/ngx-firebase-ionic-auth-ui.js.map +0 -1
- package/fesm2015/ngx-firebase-ionic.js +0 -495
- package/fesm2015/ngx-firebase-ionic.js.map +0 -1
- package/fesm2015/ngx-firebase-testing.js +0 -388
- package/fesm2015/ngx-firebase-testing.js.map +0 -1
- package/fesm2015/ngx-firebase.js +0 -1509
- package/fesm2015/ngx-firebase.js.map +0 -1
- package/iap/iap.module.d.ts +0 -5
- package/iap/interfaces/index.d.ts +0 -11
- package/iap/ngx-firebase-iap.d.ts +0 -4
- package/iap/ngx-firebase-iap.metadata.json +0 -1
- package/iap/package.json +0 -23
- package/iap/public-api.d.ts +0 -4
- package/iap/services/iap.service.d.ts +0 -47
- package/iap/tokens/index.d.ts +0 -3
- package/ionic/animations/index.d.ts +0 -1
- package/ionic/components/avatar/avatar.component.d.ts +0 -27
- package/ionic/components/avatar/index.d.ts +0 -1
- package/ionic/components/index.d.ts +0 -2
- package/ionic/components/popover-menu/index.d.ts +0 -2
- package/ionic/components/popover-menu/interface.d.ts +0 -6
- package/ionic/components/popover-menu/popover-menu.component.d.ts +0 -10
- package/ionic/ionic.module.d.ts +0 -2
- package/ionic/ngx-firebase-ionic.d.ts +0 -4
- package/ionic/ngx-firebase-ionic.metadata.json +0 -1
- package/ionic/package.json +0 -30
- package/ionic/public-api.d.ts +0 -4
- package/ionic/services/alerts-ionic.service.d.ts +0 -13
- package/ionic/services/index.d.ts +0 -5
- package/ionic/services/legality-dialog-ionic.service.d.ts +0 -10
- package/ionic/services/loading-ionic.service.d.ts +0 -17
- package/ionic/services/picker-ionic.service.d.ts +0 -9
- package/ionic/services/toast-ionic.service.d.ts +0 -11
- package/ionic-auth-ui/animations/index.d.ts +0 -1
- package/ionic-auth-ui/components/email-confirmation/email-confirmation.component.d.ts +0 -31
- package/ionic-auth-ui/components/email-field/email-field.component.d.ts +0 -7
- package/ionic-auth-ui/components/form-field/form-field.component.d.ts +0 -28
- package/ionic-auth-ui/components/index.d.ts +0 -11
- package/ionic-auth-ui/components/name-field/name-field.component.d.ts +0 -8
- package/ionic-auth-ui/components/or-divider/or-divider.component.d.ts +0 -2
- package/ionic-auth-ui/components/password-field/password-field.component.d.ts +0 -34
- package/ionic-auth-ui/components/password-field/passwordValidatorFunctions.d.ts +0 -4
- package/ionic-auth-ui/components/providers/providers.component.d.ts +0 -26
- package/ionic-auth-ui/components/reauthenticate/reauthenticate.component.d.ts +0 -30
- package/ionic-auth-ui/components/register/register.component.d.ts +0 -26
- package/ionic-auth-ui/components/register-with-email/register-with-email.component.d.ts +0 -24
- package/ionic-auth-ui/components/register-with-email-popover/register-with-email-popover.component.d.ts +0 -7
- package/ionic-auth-ui/components/signin/signin.component.d.ts +0 -28
- package/ionic-auth-ui/components/terms-field/terms-field.component.d.ts +0 -27
- package/ionic-auth-ui/components/user/user.component.d.ts +0 -45
- package/ionic-auth-ui/ionic-auth-ui.module.d.ts +0 -32
- package/ionic-auth-ui/ngx-firebase-ionic-auth-ui.d.ts +0 -22
- package/ionic-auth-ui/ngx-firebase-ionic-auth-ui.metadata.json +0 -1
- package/ionic-auth-ui/package.json +0 -30
- package/ionic-auth-ui/pages/index.d.ts +0 -4
- package/ionic-auth-ui/pages/register/index.d.ts +0 -1
- package/ionic-auth-ui/pages/register/register.page.d.ts +0 -16
- package/ionic-auth-ui/pages/signin/index.d.ts +0 -1
- package/ionic-auth-ui/pages/signin/signin.page.d.ts +0 -22
- package/ionic-auth-ui/pages/user/index.d.ts +0 -1
- package/ionic-auth-ui/pages/user/user.page.d.ts +0 -3
- package/ionic-auth-ui/pages/verifyemail/index.d.ts +0 -1
- package/ionic-auth-ui/pages/verifyemail/verifyemail.page.d.ts +0 -19
- package/ionic-auth-ui/public-api.d.ts +0 -4
- package/ngx-firebase.d.ts +0 -5
- package/ngx-firebase.metadata.json +0 -1
- package/public-api.d.ts +0 -5
- package/shared/guards/index.d.ts +0 -2
- package/shared/guards/logged-in.guard.d.ts +0 -13
- package/shared/guards/verify-email.guard.d.ts +0 -11
- package/shared/interfaces/accounts.enum.d.ts +0 -7
- package/shared/interfaces/authprovider.enum.d.ts +0 -13
- package/shared/interfaces/config.interface.d.ts +0 -63
- package/shared/interfaces/index.d.ts +0 -7
- package/shared/interfaces/main.interface.d.ts +0 -13
- package/shared/interfaces/providers.interface.d.ts +0 -70
- package/shared/interfaces/tokens.d.ts +0 -16
- package/shared/interfaces/ui-providers.interface.d.ts +0 -66
- package/shared/services/analytics.service.d.ts +0 -10
- package/shared/services/auth-process.service.d.ts +0 -197
- package/shared/services/crashlytics.service.d.ts +0 -11
- package/shared/services/device-info.service.d.ts +0 -3
- package/shared/services/firebase.service.d.ts +0 -16
- package/shared/services/firestore-sync.service.d.ts +0 -16
- package/shared/services/index.d.ts +0 -9
- package/shared/services/performance.service.d.ts +0 -12
- package/shared/services/remoteconfig.service.d.ts +0 -18
- package/shared/services/ui.service.d.ts +0 -22
- package/shared/shared.module.d.ts +0 -14
- package/shared/types/DisplayWidth.d.ts +0 -7
- package/shared/types/Location.d.ts +0 -8
- package/shared/types/ValueAccessorControlComponent.d.ts +0 -27
- package/shared/types/ValueAccessorValueComponent.d.ts +0 -19
- package/shared/types/index.d.ts +0 -4
- package/testing/fakeavatar.module.d.ts +0 -2
- package/testing/fakes/FakeAuthProcessService.d.ts +0 -28
- package/testing/fakes/FakeAvatarComponent.d.ts +0 -3
- package/testing/fakes/FakeFireService.d.ts +0 -20
- package/testing/fakes/FakeFirestoreSyncService.d.ts +0 -9
- package/testing/fakes/FakeIAPurchaseService.d.ts +0 -9
- package/testing/fakes/FakePickerService.d.ts +0 -6
- package/testing/fakes/FakeRemoteConfigService.d.ts +0 -19
- package/testing/fakes/FakeTranslateService.d.ts +0 -15
- package/testing/fakes/FakeUiService.d.ts +0 -25
- package/testing/fakes/angular-fire/FakeAngularFireAuth.d.ts +0 -52
- package/testing/fakes/angular-fire/FakeAngularFireFunctions.d.ts +0 -11
- package/testing/fakes/angular-fire/FakeAngularFirePerformance.d.ts +0 -10
- package/testing/fakes/angular-fire/FakeAngularFireStorage.d.ts +0 -5
- package/testing/fakes/angular-fire/FakeAngularFirestore.d.ts +0 -5
- package/testing/fakes/angular-fire/FakeUserCredential.d.ts +0 -9
- package/testing/fakes/index.d.ts +0 -16
- package/testing/ngx-firebase-testing.d.ts +0 -5
- package/testing/ngx-firebase-testing.metadata.json +0 -1
- package/testing/package.json +0 -29
- package/testing/public-api.d.ts +0 -4
- package/testing/test.module.d.ts +0 -4
- package/testing/utils/index.d.ts +0 -5
- package/testing/utils/patchConsole.d.ts +0 -4
|
@@ -1,317 +0,0 @@
|
|
|
1
|
-
import { __awaiter } from "tslib";
|
|
2
|
-
import { forwardRef, Inject, Injectable, NgZone, Optional } from '@angular/core';
|
|
3
|
-
import { AuthProcessService, FirebaseService, MalSharedConfigToken } from 'ngx-firebase';
|
|
4
|
-
import { Platform } from '@ionic/angular';
|
|
5
|
-
import { InAppPurchase2 } from '@ionic-native/in-app-purchase-2/ngx';
|
|
6
|
-
import { BehaviorSubject, Observable, of } from 'rxjs';
|
|
7
|
-
import { distinctUntilChanged, map } from 'rxjs/operators';
|
|
8
|
-
import { Capacitor } from '@capacitor/core';
|
|
9
|
-
import { MalIAPOptionsToken } from '../tokens';
|
|
10
|
-
import { IAPProductTypes } from '../interfaces';
|
|
11
|
-
import * as i0 from "@angular/core";
|
|
12
|
-
import * as i1 from "@ionic/angular";
|
|
13
|
-
import * as i2 from "@ionic-native/in-app-purchase-2/ngx/index";
|
|
14
|
-
import * as i3 from "ngx-firebase";
|
|
15
|
-
import * as i4 from "../tokens/index";
|
|
16
|
-
export function slimDown(p) {
|
|
17
|
-
if (Array.isArray(p)) {
|
|
18
|
-
return p.map(i => slimDown(i));
|
|
19
|
-
}
|
|
20
|
-
else {
|
|
21
|
-
return { owned: p.owned, id: p.id, canPurchase: p.canPurchase, state: p.state };
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
export var ProductStates;
|
|
25
|
-
(function (ProductStates) {
|
|
26
|
-
ProductStates["owned"] = "owned";
|
|
27
|
-
ProductStates["approved"] = "approved";
|
|
28
|
-
ProductStates["initiated"] = "initiated";
|
|
29
|
-
ProductStates["requested"] = "requested";
|
|
30
|
-
ProductStates["valid"] = "valid";
|
|
31
|
-
ProductStates["registered"] = "registered";
|
|
32
|
-
ProductStates["downloading"] = "downloading";
|
|
33
|
-
ProductStates["downloaded"] = "downloaded";
|
|
34
|
-
ProductStates["finsihed"] = "finished";
|
|
35
|
-
})(ProductStates || (ProductStates = {}));
|
|
36
|
-
export class IAPurchaseService {
|
|
37
|
-
/*
|
|
38
|
-
private updateProduct(p: IAPProduct) {
|
|
39
|
-
const i = this.products.findIndex(item => p.id === item.id);
|
|
40
|
-
this.products[i] = p;
|
|
41
|
-
}
|
|
42
|
-
*/
|
|
43
|
-
constructor(plt, store, aps, ngZone, fire, options, sharedConfig) {
|
|
44
|
-
this.plt = plt;
|
|
45
|
-
this.store = store;
|
|
46
|
-
this.aps = aps;
|
|
47
|
-
this.ngZone = ngZone;
|
|
48
|
-
this.fire = fire;
|
|
49
|
-
this.options = options;
|
|
50
|
-
this.sharedConfig = sharedConfig;
|
|
51
|
-
this.activeStates = [
|
|
52
|
-
ProductStates.valid,
|
|
53
|
-
ProductStates.requested,
|
|
54
|
-
ProductStates.initiated,
|
|
55
|
-
ProductStates.initiated,
|
|
56
|
-
ProductStates.downloading,
|
|
57
|
-
ProductStates.downloaded,
|
|
58
|
-
ProductStates.finsihed,
|
|
59
|
-
ProductStates.owned
|
|
60
|
-
];
|
|
61
|
-
this._isLoading$ = new BehaviorSubject(false);
|
|
62
|
-
this.isLoading$ = this._isLoading$.asObservable();
|
|
63
|
-
this.isModuleEnabled = this.store && Capacitor.isNative && (false !== this.sharedConfig.services.inAppPurchase);
|
|
64
|
-
this.products$ = (this.isModuleEnabled) ? this.selectAllProducts() : of([]);
|
|
65
|
-
this.activeProducts$ = this.products$
|
|
66
|
-
.pipe(map(products => products.filter(item => this.activeStates.includes(item.state) && item.title)));
|
|
67
|
-
this.productsHeld$ = this.products$
|
|
68
|
-
.pipe(map(products => products.filter(item => item.owned)));
|
|
69
|
-
if (this.isModuleEnabled && this.options.validatorUrl) {
|
|
70
|
-
this.plt.ready().then(() => __awaiter(this, void 0, void 0, function* () {
|
|
71
|
-
this.isLoading = true;
|
|
72
|
-
this.aps.user$.subscribe(user => {
|
|
73
|
-
this.store.applicationUsername = (user === null || user === void 0 ? void 0 : user.uid) || '';
|
|
74
|
-
});
|
|
75
|
-
this.store.validator = this.options.validatorUrl;
|
|
76
|
-
/* For debug
|
|
77
|
-
this.store.when('product').updated((p: IAPProduct) => {
|
|
78
|
-
console.log('C:UPDTED>', slimDown(p));
|
|
79
|
-
});
|
|
80
|
-
*/
|
|
81
|
-
this.store.when('product').approved((p) => {
|
|
82
|
-
p.verify();
|
|
83
|
-
});
|
|
84
|
-
this.store.error((error) => {
|
|
85
|
-
this.fire.recordException(error);
|
|
86
|
-
});
|
|
87
|
-
try {
|
|
88
|
-
yield this.load(this.options.products);
|
|
89
|
-
}
|
|
90
|
-
catch (error) {
|
|
91
|
-
this.fire.recordException(error);
|
|
92
|
-
}
|
|
93
|
-
finally {
|
|
94
|
-
this.isLoading = false;
|
|
95
|
-
}
|
|
96
|
-
}));
|
|
97
|
-
}
|
|
98
|
-
else {
|
|
99
|
-
this.fire.addLogMessage('Not starting IAP as not a device');
|
|
100
|
-
console.warn('Not starting IAP as not a device');
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
get isLoading() { return this._isLoading$.value; }
|
|
104
|
-
set isLoading(val) { this.ngZone.run(() => this._isLoading$.next(val)); }
|
|
105
|
-
selectAllProducts() {
|
|
106
|
-
if (this.isModuleEnabled) {
|
|
107
|
-
return new Observable(subscriber => {
|
|
108
|
-
this.store.ready(() => {
|
|
109
|
-
this.ngZone.run(() => {
|
|
110
|
-
subscriber.next(this.store.products);
|
|
111
|
-
});
|
|
112
|
-
});
|
|
113
|
-
this.store.when('product').updated((p) => {
|
|
114
|
-
this.ngZone.run(() => {
|
|
115
|
-
subscriber.next(this.store.products);
|
|
116
|
-
});
|
|
117
|
-
});
|
|
118
|
-
});
|
|
119
|
-
}
|
|
120
|
-
else {
|
|
121
|
-
return of([]);
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
selectProduct(product) {
|
|
125
|
-
if (this.isModuleEnabled) {
|
|
126
|
-
return new Observable(subscriber => {
|
|
127
|
-
this.store.when(product).registered((p) => {
|
|
128
|
-
this.ngZone.run(() => {
|
|
129
|
-
subscriber.next(p);
|
|
130
|
-
});
|
|
131
|
-
});
|
|
132
|
-
this.store.when(product).updated((p) => {
|
|
133
|
-
this.ngZone.run(() => {
|
|
134
|
-
subscriber.next(p);
|
|
135
|
-
});
|
|
136
|
-
});
|
|
137
|
-
});
|
|
138
|
-
}
|
|
139
|
-
else {
|
|
140
|
-
return of();
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
selectIsOwned(product) {
|
|
144
|
-
return this.selectProduct(product)
|
|
145
|
-
.pipe(map(p => p.owned), distinctUntilChanged());
|
|
146
|
-
}
|
|
147
|
-
selectVerified(product = 'product') {
|
|
148
|
-
if (this.isModuleEnabled) {
|
|
149
|
-
return new Observable(subscriber => {
|
|
150
|
-
this.store.when(product).verified((p) => {
|
|
151
|
-
this.ngZone.run(() => {
|
|
152
|
-
subscriber.next(p);
|
|
153
|
-
});
|
|
154
|
-
});
|
|
155
|
-
});
|
|
156
|
-
}
|
|
157
|
-
else {
|
|
158
|
-
return of();
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
selectOwned(product = 'product') {
|
|
162
|
-
if (this.isModuleEnabled) {
|
|
163
|
-
return new Observable(subscriber => {
|
|
164
|
-
this.store.when(product).owned((p) => {
|
|
165
|
-
this.ngZone.run(() => {
|
|
166
|
-
subscriber.next(p);
|
|
167
|
-
});
|
|
168
|
-
});
|
|
169
|
-
});
|
|
170
|
-
}
|
|
171
|
-
else {
|
|
172
|
-
return of();
|
|
173
|
-
}
|
|
174
|
-
}
|
|
175
|
-
load(products) {
|
|
176
|
-
return new Promise((resolve, reject) => {
|
|
177
|
-
try {
|
|
178
|
-
this.fire.addLogMessage('Error registering products');
|
|
179
|
-
this.store.register(products.map(item => {
|
|
180
|
-
let type;
|
|
181
|
-
switch (item.type) {
|
|
182
|
-
case IAPProductTypes.PAID_SUBSCRIPTION:
|
|
183
|
-
type = this.store.PAID_SUBSCRIPTION;
|
|
184
|
-
break;
|
|
185
|
-
default: throw new Error('Product type not recognised');
|
|
186
|
-
}
|
|
187
|
-
return Object.assign(Object.assign({}, item), { type });
|
|
188
|
-
}));
|
|
189
|
-
}
|
|
190
|
-
catch (error) {
|
|
191
|
-
this.fire.recordException(error);
|
|
192
|
-
}
|
|
193
|
-
this.store.ready(() => {
|
|
194
|
-
// console.log('READY READY 1>', consoleDebug(this.store.products));
|
|
195
|
-
resolve(this.store.products);
|
|
196
|
-
});
|
|
197
|
-
this.store.error((error) => {
|
|
198
|
-
this.fire.recordException(error);
|
|
199
|
-
reject(error);
|
|
200
|
-
});
|
|
201
|
-
try {
|
|
202
|
-
this.fire.addLogMessage('Starting store refresh');
|
|
203
|
-
this.store.refresh();
|
|
204
|
-
}
|
|
205
|
-
catch (error) {
|
|
206
|
-
this.fire.recordException(error);
|
|
207
|
-
}
|
|
208
|
-
});
|
|
209
|
-
}
|
|
210
|
-
purchase(product, waitForOwned = true) {
|
|
211
|
-
try {
|
|
212
|
-
if (!this.isModuleEnabled) {
|
|
213
|
-
throw new Error('IAP Module not enabled');
|
|
214
|
-
}
|
|
215
|
-
if (!this.store.applicationUsername) {
|
|
216
|
-
throw new Error('Unable to puchase when store.applicationUsername is not set');
|
|
217
|
-
}
|
|
218
|
-
return new Observable(subscriber => {
|
|
219
|
-
this.store.when(product).requested((p) => {
|
|
220
|
-
subscriber.next(p);
|
|
221
|
-
});
|
|
222
|
-
this.store.when(product).initiated((p) => {
|
|
223
|
-
subscriber.next(p);
|
|
224
|
-
});
|
|
225
|
-
this.store.when(product).approved((p) => {
|
|
226
|
-
subscriber.next(p);
|
|
227
|
-
});
|
|
228
|
-
this.store.when(product).verified((p) => __awaiter(this, void 0, void 0, function* () {
|
|
229
|
-
// console.log('P:VERIFIED>', consoleDebug(p));
|
|
230
|
-
subscriber.next(p);
|
|
231
|
-
if (!waitForOwned) {
|
|
232
|
-
subscriber.complete();
|
|
233
|
-
} // HERE WE ARE RELAIANT ON SOMETHING EXTERNAL FULLFILLING
|
|
234
|
-
}));
|
|
235
|
-
this.store.once(product).owned((p) => __awaiter(this, void 0, void 0, function* () {
|
|
236
|
-
// console.log('P:OWNED>', consoleDebug(p));
|
|
237
|
-
subscriber.next(p);
|
|
238
|
-
subscriber.complete();
|
|
239
|
-
}));
|
|
240
|
-
this.store.once(product).cancelled((p) => {
|
|
241
|
-
// console.log('P:CANCELLED>', consoleDebug(p));
|
|
242
|
-
subscriber.next(p);
|
|
243
|
-
subscriber.complete();
|
|
244
|
-
});
|
|
245
|
-
this.store.once(product).error((error) => {
|
|
246
|
-
this.fire.recordException(error);
|
|
247
|
-
subscriber.error(error);
|
|
248
|
-
});
|
|
249
|
-
this.store.order(product).then((p) => {
|
|
250
|
-
// Purchase in progress!
|
|
251
|
-
}, (error) => {
|
|
252
|
-
this.fire.recordException(error);
|
|
253
|
-
subscriber.error(error);
|
|
254
|
-
});
|
|
255
|
-
});
|
|
256
|
-
}
|
|
257
|
-
catch (error) {
|
|
258
|
-
this.fire.recordException(error);
|
|
259
|
-
throw error;
|
|
260
|
-
}
|
|
261
|
-
}
|
|
262
|
-
finish(product) {
|
|
263
|
-
try {
|
|
264
|
-
if (!this.isModuleEnabled) {
|
|
265
|
-
throw new Error('IAP Module not enabled');
|
|
266
|
-
}
|
|
267
|
-
return new Promise((resolve, reject) => {
|
|
268
|
-
this.store.once(product).owned((p) => {
|
|
269
|
-
// console.log('P:OWNED>', consoleDebug(p));
|
|
270
|
-
resolve(p);
|
|
271
|
-
});
|
|
272
|
-
this.store.once(product).error((error) => {
|
|
273
|
-
this.fire.recordException(error);
|
|
274
|
-
reject(error);
|
|
275
|
-
});
|
|
276
|
-
try {
|
|
277
|
-
this.fire.addLogMessage('Starting finsih product');
|
|
278
|
-
product.finish();
|
|
279
|
-
}
|
|
280
|
-
catch (error) {
|
|
281
|
-
this.fire.recordException(error);
|
|
282
|
-
}
|
|
283
|
-
});
|
|
284
|
-
}
|
|
285
|
-
catch (error) {
|
|
286
|
-
this.fire.recordException(error);
|
|
287
|
-
}
|
|
288
|
-
}
|
|
289
|
-
// To comply with AppStore rules
|
|
290
|
-
refresh() {
|
|
291
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
292
|
-
if (this.isModuleEnabled) {
|
|
293
|
-
try {
|
|
294
|
-
this.fire.addLogMessage('Starting store refresh');
|
|
295
|
-
yield this.store.refresh();
|
|
296
|
-
}
|
|
297
|
-
catch (error) {
|
|
298
|
-
this.fire.recordException(error);
|
|
299
|
-
}
|
|
300
|
-
}
|
|
301
|
-
});
|
|
302
|
-
}
|
|
303
|
-
}
|
|
304
|
-
IAPurchaseService.ɵprov = i0.ɵɵdefineInjectable({ factory: function IAPurchaseService_Factory() { return new IAPurchaseService(i0.ɵɵinject(i1.Platform), i0.ɵɵinject(i2.InAppPurchase2, 8), i0.ɵɵinject(i3.AuthProcessService), i0.ɵɵinject(i0.NgZone), i0.ɵɵinject(i3.FirebaseService), i0.ɵɵinject(i4.MalIAPOptionsToken), i0.ɵɵinject(i3.MalSharedConfigToken)); }, token: IAPurchaseService, providedIn: "root" });
|
|
305
|
-
IAPurchaseService.decorators = [
|
|
306
|
-
{ type: Injectable, args: [{ providedIn: 'root' },] }
|
|
307
|
-
];
|
|
308
|
-
IAPurchaseService.ctorParameters = () => [
|
|
309
|
-
{ type: Platform },
|
|
310
|
-
{ type: InAppPurchase2, decorators: [{ type: Optional }] },
|
|
311
|
-
{ type: AuthProcessService },
|
|
312
|
-
{ type: NgZone },
|
|
313
|
-
{ type: FirebaseService },
|
|
314
|
-
{ type: undefined, decorators: [{ type: Inject, args: [forwardRef(() => MalIAPOptionsToken),] }] },
|
|
315
|
-
{ type: undefined, decorators: [{ type: Inject, args: [forwardRef(() => MalSharedConfigToken),] }] }
|
|
316
|
-
];
|
|
317
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWFwLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtZmlyZWJhc2UvaWFwL3NyYy9zZXJ2aWNlcy9pYXAuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGVBQWUsRUFBbUIsb0JBQW9CLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDMUcsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxjQUFjLEVBQWMsTUFBTSxxQ0FBcUMsQ0FBQztBQUNqRixPQUFPLEVBQUUsZUFBZSxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdkQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM1QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDL0MsT0FBTyxFQUFFLGVBQWUsRUFBdUMsTUFBTSxlQUFlLENBQUM7Ozs7OztBQUlyRixNQUFNLFVBQVUsUUFBUSxDQUFDLENBQTRCO0lBQ25ELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRTtRQUNwQixPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUNoQztTQUFNO1FBQ0wsT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLFdBQVcsRUFBRSxDQUFD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UUFBUTtZQWxKSixrQkFBa0I7WUFEYyxNQUFNO1lBQ2xCLGVBQWU7NENBc0p2QyxNQUFNLFNBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLGtCQUFrQixDQUFDOzRDQUMzQyxNQUFNLFNBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLG9CQUFvQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZm9yd2FyZFJlZiwgSW5qZWN0LCBJbmplY3RhYmxlLCBOZ1pvbmUsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBdXRoUHJvY2Vzc1NlcnZpY2UsIEZpcmViYXNlU2VydmljZSwgTWFsU2hhcmVkQ29uZmlnLCBNYWxTaGFyZWRDb25maWdUb2tlbiB9IGZyb20gJ25neC1maXJlYmFzZSc7XG5pbXBvcnQgeyBQbGF0Zm9ybSB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyJztcbmltcG9ydCB7IEluQXBwUHVyY2hhc2UyLCBJQVBQcm9kdWN0IH0gZnJvbSAnQGlvbmljLW5hdGl2ZS9pbi1hcHAtcHVyY2hhc2UtMi9uZ3gnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGlzdGluY3RVbnRpbENoYW5nZWQsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IENhcGFjaXRvciB9IGZyb20gJ0BjYXBhY2l0b3IvY29yZSc7XG5pbXBvcnQgeyBNYWxJQVBPcHRpb25zVG9rZW4gfSBmcm9tICcuLi90b2tlbnMnO1xuaW1wb3J0IHsgSUFQUHJvZHVjdFR5cGVzLCBNYWxJQVBPcHRpb25zLCBNYWxJQVBQcm9kdWN0T3B0aW9ucyB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuXG5leHBvcnQgZnVuY3Rpb24gc2xpbURvd24ocDogSUFQUHJvZHVjdFtdKTogUGFydGlhbDxJQVBQcm9kdWN0PltdO1xuZXhwb3J0IGZ1bmN0aW9uIHNsaW1Eb3duKHA6IElBUFByb2R1Y3QpOiBQYXJ0aWFsPElBUFByb2R1Y3Q+O1xuZXhwb3J0IGZ1bmN0aW9uIHNsaW1Eb3duKHA6IElBUFByb2R1Y3QgfCBJQVBQcm9kdWN0W10pOiBQYXJ0aWFsPElBUFByb2R1Y3Q+IHwgUGFydGlhbDxJQVBQcm9kdWN0PltdIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkocCkpIHtcbiAgICByZXR1cm4gcC5tYXAoaSA9PiBzbGltRG93bihpKSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHsgb3duZWQ6IHAub3duZWQsIGlkOiBwLmlkLCBjYW5QdXJjaGFzZTogcC5jYW5QdXJjaGFzZSwgc3RhdGU6IHAuc3RhdGUgfTtcbiAgfVxufVxuXG5leHBvcnQgZW51bSBQcm9kdWN0U3RhdGVzIHtcbiAgb3duZWQgPSAnb3duZWQnLFxuICBhcHByb3ZlZCA9ICdhcHByb3ZlZCcsXG4gIGluaXRpYXRlZCA9ICdpbml0aWF0ZWQnLFxuICByZXF1ZXN0ZWQgPSAncmVxdWVzdGVkJyxcbiAgdmFsaWQgPSAndmFsaWQnLFxuICByZWdpc3RlcmVkID0gJ3JlZ2lzdGVyZWQnLFxuICBkb3dubG9hZGluZyA9ICdkb3dubG9hZGluZycsXG4gIGRvd25sb2FkZWQgPSAnZG93bmxvYWRlZCcsXG4gIGZpbnNpaGVkID0gJ2ZpbmlzaGVkJ1xuXG59XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgSUFQdXJjaGFzZVNlcnZpY2Uge1xuXG4gIHJlYWRvbmx5IGFjdGl2ZVN0YXRlczogc3RyaW5nW10gPSBbXG4gICAgUHJvZHVjdFN0YXRlcy52YWxpZCxcbiAgICBQcm9kdWN0U3RhdGVzLnJlcXVlc3RlZCxcbiAgICBQcm9kdWN0U3RhdGVzLmluaXRpYXRlZCxcbiAgICBQcm9kdWN0U3RhdGVzLmluaXRpYXRlZCxcbiAgICBQcm9kdWN0U3RhdGVzLmRvd25sb2FkaW5nLFxuICAgIFByb2R1Y3RTdGF0ZXMuZG93bmxvYWRlZCxcbiAgICBQcm9kdWN0U3RhdGVzLmZpbnNpaGVkLFxuICAgIFByb2R1Y3RTdGF0ZXMub3duZWRcbiAgXSBhcyBzdHJpbmdbXTtcblxuICBwcml2YXRlIF9pc0xvYWRpbmckOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcHVibGljIGlzTG9hZGluZyQgPSB0aGlzLl9pc0xvYWRpbmckLmFzT2JzZXJ2YWJsZSgpO1xuICBwdWJsaWMgZ2V0IGlzTG9hZGluZygpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMuX2lzTG9hZGluZyQudmFsdWU7IH1cbiAgcHVibGljIHNldCBpc0xvYWRpbmcodmFsOiBib29sZWFuKSB7IHRoaXMubmdab25lLnJ1bigoKSA9PiB0aGlzLl9pc0xvYWRpbmckLm5leHQodmFsKSk7IH1cblxuICBwcml2YXRlIHJlYWRvbmx5IGlzTW9kdWxlRW5hYmxlZCA9IHRoaXMuc3RvcmUgJiYgQ2FwYWNpdG9yLmlzTmF0aXZlICYmIChmYWxzZSAhPT0gdGhpcy5zaGFyZWRDb25maWcuc2VydmljZXMuaW5BcHBQdXJjaGFzZSk7XG5cbiAgcHVibGljIHJlYWRvbmx5IHByb2R1Y3RzJDogT2JzZXJ2YWJsZTxJQVBQcm9kdWN0W10+ID0gKHRoaXMuaXNNb2R1bGVFbmFibGVkKSA/IHRoaXMuc2VsZWN0QWxsUHJvZHVjdHMoKSA6IG9mKFtdKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgYWN0aXZlUHJvZHVjdHMkOiBPYnNlcnZhYmxlPElBUFByb2R1Y3RbXT4gPSB0aGlzLnByb2R1Y3RzJFxuICAgIC5waXBlKFxuICAgICAgbWFwKHByb2R1Y3RzID0+IHByb2R1Y3RzLmZpbHRlcihpdGVtID0+IHRoaXMuYWN0aXZlU3RhdGVzLmluY2x1ZGVzKGl0ZW0uc3RhdGUpICYmIGl0ZW0udGl0bGUpKVxuICAgICk7XG5cbiAgcHVibGljIHJlYWRvbmx5IHByb2R1Y3RzSGVsZCQ6IE9ic2VydmFibGU8SUFQUHJvZHVjdFtdPiA9IHRoaXMucHJvZHVjdHMkXG4gICAgLnBpcGUobWFwKHByb2R1Y3RzID0+IHByb2R1Y3RzLmZpbHRlcihpdGVtID0+IGl0ZW0ub3duZWQpKSk7XG5cbiAgc2VsZWN0QWxsUHJvZHVjdHMoKTogT2JzZXJ2YWJsZTxJQVBQcm9kdWN0W10+IHtcbiAgICBpZiAodGhpcy5pc01vZHVsZUVuYWJsZWQpIHtcbiAgICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZTxJQVBQcm9kdWN0W10+KHN1YnNjcmliZXIgPT4ge1xuICAgICAgICB0aGlzLnN0b3JlLnJlYWR5KCgpID0+IHtcbiAgICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgICAgc3Vic2NyaWJlci5uZXh0KHRoaXMuc3RvcmUucHJvZHVjdHMpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5zdG9yZS53aGVuKCdwcm9kdWN0JykudXBkYXRlZCgocDogSUFQUHJvZHVjdCkgPT4ge1xuICAgICAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgICBzdWJzY3JpYmVyLm5leHQodGhpcy5zdG9yZS5wcm9kdWN0cyk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBvZihbXSk7XG4gICAgfVxuICB9XG5cbiAgc2VsZWN0UHJvZHVjdChwcm9kdWN0OiBzdHJpbmcgfCBJQVBQcm9kdWN0KTogT2JzZXJ2YWJsZTxJQVBQcm9kdWN0PiB7XG4gICAgaWYgKHRoaXMuaXNNb2R1bGVFbmFibGVkKSB7XG4gICAgICByZXR1cm4gbmV3IE9ic2VydmFibGU8SUFQUHJvZHVjdD4oc3Vic2NyaWJlciA9PiB7XG4gICAgICAgIHRoaXMuc3RvcmUud2hlbihwcm9kdWN0KS5yZWdpc3RlcmVkKChwOiBJQVBQcm9kdWN0KSA9PiB7XG4gICAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICAgIHN1YnNjcmliZXIubmV4dChwKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuc3RvcmUud2hlbihwcm9kdWN0KS51cGRhdGVkKChwOiBJQVBQcm9kdWN0KSA9PiB7XG4gICAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICAgIHN1YnNjcmliZXIubmV4dChwKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG9mKCk7XG4gICAgfVxuICB9XG5cbiAgc2VsZWN0SXNPd25lZChwcm9kdWN0OiBzdHJpbmcgfCBJQVBQcm9kdWN0KTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0UHJvZHVjdChwcm9kdWN0KVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcChwID0+IHAub3duZWQpLFxuICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpXG4gICAgICApO1xuICB9XG5cbiAgc2VsZWN0VmVyaWZpZWQocHJvZHVjdDogc3RyaW5nIHwgSUFQUHJvZHVjdCA9ICdwcm9kdWN0Jyk6IE9ic2VydmFibGU8SUFQUHJvZHVjdD4ge1xuICAgIGlmICh0aGlzLmlzTW9kdWxlRW5hYmxlZCkge1xuICAgICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlPElBUFByb2R1Y3Q+KHN1YnNjcmliZXIgPT4ge1xuICAgICAgICB0aGlzLnN0b3JlLndoZW4ocHJvZHVjdCkudmVyaWZpZWQoKHA6IElBUFByb2R1Y3QpID0+IHtcbiAgICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgICAgc3Vic2NyaWJlci5uZXh0KHApO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gb2YoKTtcbiAgICB9XG4gIH1cblxuICBzZWxlY3RPd25lZChwcm9kdWN0OiBzdHJpbmcgfCBJQVBQcm9kdWN0ID0gJ3Byb2R1Y3QnKTogT2JzZXJ2YWJsZTxJQVBQcm9kdWN0PiB7XG4gICAgaWYgKHRoaXMuaXNNb2R1bGVFbmFibGVkKSB7XG4gICAgICByZXR1cm4gbmV3IE9ic2VydmFibGU8SUFQUHJvZHVjdD4oc3Vic2NyaWJlciA9PiB7XG4gICAgICAgIHRoaXMuc3RvcmUud2hlbihwcm9kdWN0KS5vd25lZCgocDogSUFQUHJvZHVjdCkgPT4ge1xuICAgICAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgICBzdWJzY3JpYmVyLm5leHQocCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBvZigpO1xuICAgIH1cbiAgfVxuXG4gIC8qXG4gIHByaXZhdGUgdXBkYXRlUHJvZHVjdChwOiBJQVBQcm9kdWN0KSB7XG4gICAgY29uc3QgaSA9IHRoaXMucHJvZHVjdHMuZmluZEluZGV4KGl0ZW0gPT4gcC5pZCA9PT0gaXRlbS5pZCk7XG4gICAgdGhpcy5wcm9kdWN0c1tpXSA9IHA7XG4gIH1cbiAgKi9cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHBsdDogUGxhdGZvcm0sXG4gICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBzdG9yZTogSW5BcHBQdXJjaGFzZTIsXG4gICAgcHJpdmF0ZSBhcHM6IEF1dGhQcm9jZXNzU2VydmljZSxcbiAgICBwcml2YXRlIG5nWm9uZTogTmdab25lLFxuICAgIHByaXZhdGUgZmlyZTogRmlyZWJhc2VTZXJ2aWNlLFxuICAgIEBJbmplY3QoZm9yd2FyZFJlZigoKSA9PiBNYWxJQVBPcHRpb25zVG9rZW4pKSBwcml2YXRlIG9wdGlvbnM6IE1hbElBUE9wdGlvbnMsXG4gICAgQEluamVjdChmb3J3YXJkUmVmKCgpID0+IE1hbFNoYXJlZENvbmZpZ1Rva2VuKSkgcHJpdmF0ZSBzaGFyZWRDb25maWc6IE1hbFNoYXJlZENvbmZpZ1xuICApIHtcbiAgICBpZiAodGhpcy5pc01vZHVsZUVuYWJsZWQgJiYgdGhpcy5vcHRpb25zLnZhbGlkYXRvclVybCkge1xuICAgICAgdGhpcy5wbHQucmVhZHkoKS50aGVuKGFzeW5jICgpID0+IHtcbiAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSB0cnVlO1xuXG4gICAgICAgIHRoaXMuYXBzLnVzZXIkLnN1YnNjcmliZShcbiAgICAgICAgICB1c2VyID0+IHtcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuYXBwbGljYXRpb25Vc2VybmFtZSA9IHVzZXI/LnVpZCB8fCAnJztcbiAgICAgICAgICB9XG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5zdG9yZS52YWxpZGF0b3IgPSB0aGlzLm9wdGlvbnMudmFsaWRhdG9yVXJsO1xuXG4gICAgICAgIC8qIEZvciBkZWJ1Z1xuICAgICAgICB0aGlzLnN0b3JlLndoZW4oJ3Byb2R1Y3QnKS51cGRhdGVkKChwOiBJQVBQcm9kdWN0KSA9PiB7XG4gICAgICAgICAgIGNvbnNvbGUubG9nKCdDOlVQRFRFRD4nLCBzbGltRG93bihwKSk7XG4gICAgICAgIH0pO1xuICAgICAgICAqL1xuICAgICAgICB0aGlzLnN0b3JlLndoZW4oJ3Byb2R1Y3QnKS5hcHByb3ZlZCgocDogSUFQUHJvZHVjdCkgPT4ge1xuICAgICAgICAgIHAudmVyaWZ5KCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuc3RvcmUuZXJyb3IoKGVycm9yOiBhbnkpID0+IHtcbiAgICAgICAgICB0aGlzLmZpcmUucmVjb3JkRXhjZXB0aW9uKGVycm9yKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBhd2FpdCB0aGlzLmxvYWQodGhpcy5vcHRpb25zLnByb2R1Y3RzKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICB0aGlzLmZpcmUucmVjb3JkRXhjZXB0aW9uKGVycm9yKTtcbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZpcmUuYWRkTG9nTWVzc2FnZSgnTm90IHN0YXJ0aW5nIElBUCBhcyBub3QgYSBkZXZpY2UnKTtcbiAgICAgIGNvbnNvbGUud2FybignTm90IHN0YXJ0aW5nIElBUCBhcyBub3QgYSBkZXZpY2UnKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGxvYWQocHJvZHVjdHM6IE1hbElBUFByb2R1Y3RPcHRpb25zW10pOiBQcm9taXNlPElBUFByb2R1Y3RbXT4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZTxJQVBQcm9kdWN0W10+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHRoaXMuZmlyZS5hZGRMb2dNZXNzYWdlKCdFcnJvciByZWdpc3RlcmluZyBwcm9kdWN0cycpO1xuICAgICAgICB0aGlzLnN0b3JlLnJlZ2lzdGVyKHByb2R1Y3RzLm1hcChpdGVtID0+IHtcbiAgICAgICAgICBsZXQgdHlwZTogc3RyaW5nO1xuICAgICAgICAgIHN3aXRjaCAoaXRlbS50eXBlKSB7XG4gICAgICAgICAgICBjYXNlIElBUFByb2R1Y3RUeXBlcy5QQUlEX1NVQlNDUklQVElPTjogdHlwZSA9IHRoaXMuc3RvcmUuUEFJRF9TVUJTQ1JJUFRJT047IGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDogdGhyb3cgbmV3IEVycm9yKCdQcm9kdWN0IHR5cGUgbm90IHJlY29nbmlzZWQnKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLml0ZW0sXG4gICAgICAgICAgICB0eXBlXG4gICAgICAgICAgfTtcbiAgICAgICAgfSkpO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgdGhpcy5maXJlLnJlY29yZEV4Y2VwdGlvbihlcnJvcik7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuc3RvcmUucmVhZHkoKCkgPT4ge1xuICAgICAgICAvLyBjb25zb2xlLmxvZygnUkVBRFkgUkVBRFkgMT4nLCBjb25zb2xlRGVidWcodGhpcy5zdG9yZS5wcm9kdWN0cykpO1xuICAgICAgICByZXNvbHZlKHRoaXMuc3RvcmUucHJvZHVjdHMpO1xuICAgICAgfSk7XG5cbiAgICAgIHRoaXMuc3RvcmUuZXJyb3IoKGVycm9yOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5maXJlLnJlY29yZEV4Y2VwdGlvbihlcnJvcik7XG4gICAgICAgIHJlamVjdChlcnJvcik7XG4gICAgICB9KTtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgdGhpcy5maXJlLmFkZExvZ01lc3NhZ2UoJ1N0YXJ0aW5nIHN0b3JlIHJlZnJlc2gnKTtcbiAgICAgICAgdGhpcy5zdG9yZS5yZWZyZXNoKCk7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICB0aGlzLmZpcmUucmVjb3JkRXhjZXB0aW9uKGVycm9yKTtcbiAgICAgIH1cblxuICAgIH0pO1xuICB9XG5cbiAgcHVyY2hhc2UocHJvZHVjdDogSUFQUHJvZHVjdCB8IHN0cmluZywgd2FpdEZvck93bmVkID0gdHJ1ZSk6IE9ic2VydmFibGU8SUFQUHJvZHVjdD4ge1xuICAgIHRyeSB7XG5cbiAgICAgIGlmICghdGhpcy5pc01vZHVsZUVuYWJsZWQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJQVAgTW9kdWxlIG5vdCBlbmFibGVkJyk7XG4gICAgICB9XG4gICAgICBpZiAoIXRoaXMuc3RvcmUuYXBwbGljYXRpb25Vc2VybmFtZSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1VuYWJsZSB0byBwdWNoYXNlIHdoZW4gc3RvcmUuYXBwbGljYXRpb25Vc2VybmFtZSBpcyBub3Qgc2V0Jyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gbmV3IE9ic2VydmFibGU8SUFQUHJvZHVjdD4oc3Vic2NyaWJlciA9PiB7XG4gICAgICAgIHRoaXMuc3RvcmUud2hlbihwcm9kdWN0KS5yZXF1ZXN0ZWQoKHA6IElBUFByb2R1Y3QpID0+IHtcbiAgICAgICAgICBzdWJzY3JpYmVyLm5leHQocCk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnN0b3JlLndoZW4ocHJvZHVjdCkuaW5pdGlhdGVkKChwOiBJQVBQcm9kdWN0KSA9PiB7XG4gICAgICAgICAgc3Vic2NyaWJlci5uZXh0KHApO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5zdG9yZS53aGVuKHByb2R1Y3QpLmFwcHJvdmVkKChwOiBJQVBQcm9kdWN0KSA9PiB7XG4gICAgICAgICAgc3Vic2NyaWJlci5uZXh0KHApO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5zdG9yZS53aGVuKHByb2R1Y3QpLnZlcmlmaWVkKGFzeW5jIChwOiBJQVBQcm9kdWN0KSA9PiB7XG4gICAgICAgICAgLy8gY29uc29sZS5sb2coJ1A6VkVSSUZJRUQ+JywgY29uc29sZURlYnVnKHApKTtcbiAgICAgICAgICBzdWJzY3JpYmVyLm5leHQocCk7XG4gICAgICAgICAgaWYgKCF3YWl0Rm9yT3duZWQpIHtcbiAgICAgICAgICAgIHN1YnNjcmliZXIuY29tcGxldGUoKTtcbiAgICAgICAgICB9IC8vIEhFUkUgV0UgQVJFIFJFTEFJQU5UIE9OIFNPTUVUSElORyBFWFRFUk5BTCBGVUxMRklMTElOR1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5zdG9yZS5vbmNlKHByb2R1Y3QpLm93bmVkKGFzeW5jIChwOiBJQVBQcm9kdWN0KSA9PiB7XG4gICAgICAgICAgLy8gY29uc29sZS5sb2coJ1A6T1dORUQ+JywgY29uc29sZURlYnVnKHApKTtcbiAgICAgICAgICBzdWJzY3JpYmVyLm5leHQocCk7XG4gICAgICAgICAgc3Vic2NyaWJlci5jb21wbGV0ZSgpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5zdG9yZS5vbmNlKHByb2R1Y3QpLmNhbmNlbGxlZCgocDogSUFQUHJvZHVjdCkgPT4ge1xuICAgICAgICAgIC8vIGNvbnNvbGUubG9nKCdQOkNBTkNFTExFRD4nLCBjb25zb2xlRGVidWcocCkpO1xuICAgICAgICAgIHN1YnNjcmliZXIubmV4dChwKTtcbiAgICAgICAgICBzdWJzY3JpYmVyLmNvbXBsZXRlKCk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnN0b3JlLm9uY2UocHJvZHVjdCkuZXJyb3IoKGVycm9yOiBhbnkpID0+IHtcbiAgICAgICAgICB0aGlzLmZpcmUucmVjb3JkRXhjZXB0aW9uKGVycm9yKTtcbiAgICAgICAgICBzdWJzY3JpYmVyLmVycm9yKGVycm9yKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuc3RvcmUub3JkZXIocHJvZHVjdCkudGhlbigocDogYW55KSA9PiB7XG4gICAgICAgICAgLy8gUHVyY2hhc2UgaW4gcHJvZ3Jlc3MhXG4gICAgICAgIH0sIChlcnJvcjogYW55KSA9PiB7XG4gICAgICAgICAgdGhpcy5maXJlLnJlY29yZEV4Y2VwdGlvbihlcnJvcik7XG4gICAgICAgICAgc3Vic2NyaWJlci5lcnJvcihlcnJvcik7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRoaXMuZmlyZS5yZWNvcmRFeGNlcHRpb24oZXJyb3IpO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICB9XG5cbiAgZmluaXNoKHByb2R1Y3Q6IElBUFByb2R1Y3QpOiBQcm9taXNlPElBUFByb2R1Y3Q+IHtcbiAgICB0cnkge1xuICAgICAgaWYgKCF0aGlzLmlzTW9kdWxlRW5hYmxlZCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0lBUCBNb2R1bGUgbm90IGVuYWJsZWQnKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBuZXcgUHJvbWlzZTxJQVBQcm9kdWN0PigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIHRoaXMuc3RvcmUub25jZShwcm9kdWN0KS5vd25lZCgocDogSUFQUHJvZHVjdCkgPT4ge1xuICAgICAgICAgIC8vIGNvbnNvbGUubG9nKCdQOk9XTkVEPicsIGNvbnNvbGVEZWJ1ZyhwKSk7XG4gICAgICAgICAgcmVzb2x2ZShwKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuc3RvcmUub25jZShwcm9kdWN0KS5lcnJvcigoZXJyb3I6IGFueSkgPT4ge1xuICAgICAgICAgIHRoaXMuZmlyZS5yZWNvcmRFeGNlcHRpb24oZXJyb3IpO1xuICAgICAgICAgIHJlamVjdChlcnJvcik7XG4gICAgICAgIH0pO1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHRoaXMuZmlyZS5hZGRMb2dNZXNzYWdlKCdTdGFydGluZyBmaW5zaWggcHJvZHVjdCcpO1xuICAgICAgICAgIHByb2R1Y3QuZmluaXNoKCk7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgdGhpcy5maXJlLnJlY29yZEV4Y2VwdGlvbihlcnJvcik7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aGlzLmZpcmUucmVjb3JkRXhjZXB0aW9uKGVycm9yKTtcbiAgICB9XG4gIH1cblxuICAvLyBUbyBjb21wbHkgd2l0aCBBcHBTdG9yZSBydWxlc1xuICBhc3luYyByZWZyZXNoKCkge1xuICAgIGlmICh0aGlzLmlzTW9kdWxlRW5hYmxlZCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgdGhpcy5maXJlLmFkZExvZ01lc3NhZ2UoJ1N0YXJ0aW5nIHN0b3JlIHJlZnJlc2gnKTtcbiAgICAgICAgYXdhaXQgdGhpcy5zdG9yZS5yZWZyZXNoKCk7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICB0aGlzLmZpcmUucmVjb3JkRXhjZXB0aW9uKGVycm9yKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxufVxuIl19
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
// This token is the official token containing the final configuration; ie. the merge between default and user provided configurations
|
|
2
|
-
import { InjectionToken } from '@angular/core';
|
|
3
|
-
export const MalIAPOptionsToken = new InjectionToken('IAPOptionsToken');
|
|
4
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtZmlyZWJhc2UvaWFwL3NyYy90b2tlbnMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsc0lBQXNJO0FBQ3RJLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHL0MsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxjQUFjLENBQWtCLGlCQUFpQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBUaGlzIHRva2VuIGlzIHRoZSBvZmZpY2lhbCB0b2tlbiBjb250YWluaW5nIHRoZSBmaW5hbCBjb25maWd1cmF0aW9uOyBpZS4gdGhlIG1lcmdlIGJldHdlZW4gZGVmYXVsdCBhbmQgdXNlciBwcm92aWRlZCBjb25maWd1cmF0aW9uc1xuaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hbElBUE9wdGlvbnMgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcblxuZXhwb3J0IGNvbnN0IE1hbElBUE9wdGlvbnNUb2tlbiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxNYWxJQVBPcHRpb25zW10+KCdJQVBPcHRpb25zVG9rZW4nKTtcbiJdfQ==
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import { animate, animateChild, animation, query, stagger, state, style, transition, trigger, useAnimation } from '@angular/animations';
|
|
2
|
-
const customAnimation = animation([
|
|
3
|
-
style({
|
|
4
|
-
opacity: '{{opacity}}',
|
|
5
|
-
transform: 'scale({{scale}}) translate3d({{x}}, {{y}}, {{z}})'
|
|
6
|
-
}),
|
|
7
|
-
animate('{{duration}} {{delay}} cubic-bezier(0.0, 0.0, 0.2, 1)', style('*'))
|
|
8
|
-
], {
|
|
9
|
-
params: {
|
|
10
|
-
duration: '200ms',
|
|
11
|
-
delay: '0ms',
|
|
12
|
-
opacity: '0',
|
|
13
|
-
scale: '1',
|
|
14
|
-
x: '0',
|
|
15
|
-
y: '0',
|
|
16
|
-
z: '0'
|
|
17
|
-
}
|
|
18
|
-
});
|
|
19
|
-
export const NgxAuthFirebaseuiAnimations = [
|
|
20
|
-
trigger('animate', [transition('void => *', [useAnimation(customAnimation)])]),
|
|
21
|
-
trigger('animateStagger', [
|
|
22
|
-
state('50', style('*')),
|
|
23
|
-
state('100', style('*')),
|
|
24
|
-
state('200', style('*')),
|
|
25
|
-
transition('void => 50', query('@*', [stagger('50ms', [animateChild()])], { optional: true })),
|
|
26
|
-
transition('void => 100', query('@*', [stagger('100ms', [animateChild()])], { optional: true })),
|
|
27
|
-
transition('void => 200', query('@*', [stagger('200ms', [animateChild()])], { optional: true }))
|
|
28
|
-
]),
|
|
29
|
-
];
|
|
30
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtZmlyZWJhc2UvaW9uaWMvc3JjL2FuaW1hdGlvbnMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLE9BQU8sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBRXRJLE1BQU0sZUFBZSxHQUFHLFNBQVMsQ0FDL0I7SUFDRSxLQUFLLENBQUM7UUFDSixPQUFPLEVBQUUsYUFBYTtRQUN0QixTQUFTLEVBQUUsbURBQW1EO0tBQy9ELENBQUM7SUFDRixPQUFPLENBQUMsdURBQXVELEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0NBQzdFLEVBQ0Q7SUFDRSxNQUFNLEVBQUU7UUFDTixRQUFRLEVBQUUsT0FBTztRQUNqQixLQUFLLEVBQUUsS0FBSztRQUNaLE9BQU8sRUFBRSxHQUFHO1FBQ1osS0FBSyxFQUFFLEdBQUc7UUFDVixDQUFDLEVBQUUsR0FBRztRQUNOLENBQUMsRUFBRSxHQUFHO1FBQ04sQ0FBQyxFQUFFLEdBQUc7S0FDUDtDQUNGLENBQ0YsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLDJCQUEyQixHQUFHO0lBQ3pDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQyxVQUFVLENBQUMsV0FBVyxFQUFFLENBQUMsWUFBWSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRTlFLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRTtRQUN4QixLQUFLLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN2QixLQUFLLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN4QixLQUFLLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUV4QixVQUFVLENBQUMsWUFBWSxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBQyxRQUFRLEVBQUUsSUFBSSxFQUFDLENBQUMsQ0FBQztRQUM1RixVQUFVLENBQUMsYUFBYSxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBQyxRQUFRLEVBQUUsSUFBSSxFQUFDLENBQUMsQ0FBQztRQUM5RixVQUFVLENBQUMsYUFBYSxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBQyxRQUFRLEVBQUUsSUFBSSxFQUFDLENBQUMsQ0FBQztLQUMvRixDQUFDO0NBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7YW5pbWF0ZSwgYW5pbWF0ZUNoaWxkLCBhbmltYXRpb24sIHF1ZXJ5LCBzdGFnZ2VyLCBzdGF0ZSwgc3R5bGUsIHRyYW5zaXRpb24sIHRyaWdnZXIsIHVzZUFuaW1hdGlvbn0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XG5cbmNvbnN0IGN1c3RvbUFuaW1hdGlvbiA9IGFuaW1hdGlvbihcbiAgW1xuICAgIHN0eWxlKHtcbiAgICAgIG9wYWNpdHk6ICd7e29wYWNpdHl9fScsXG4gICAgICB0cmFuc2Zvcm06ICdzY2FsZSh7e3NjYWxlfX0pIHRyYW5zbGF0ZTNkKHt7eH19LCB7e3l9fSwge3t6fX0pJ1xuICAgIH0pLFxuICAgIGFuaW1hdGUoJ3t7ZHVyYXRpb259fSB7e2RlbGF5fX0gY3ViaWMtYmV6aWVyKDAuMCwgMC4wLCAwLjIsIDEpJywgc3R5bGUoJyonKSlcbiAgXSxcbiAge1xuICAgIHBhcmFtczoge1xuICAgICAgZHVyYXRpb246ICcyMDBtcycsXG4gICAgICBkZWxheTogJzBtcycsXG4gICAgICBvcGFjaXR5OiAnMCcsXG4gICAgICBzY2FsZTogJzEnLFxuICAgICAgeDogJzAnLFxuICAgICAgeTogJzAnLFxuICAgICAgejogJzAnXG4gICAgfVxuICB9XG4pO1xuXG5leHBvcnQgY29uc3QgTmd4QXV0aEZpcmViYXNldWlBbmltYXRpb25zID0gW1xuICB0cmlnZ2VyKCdhbmltYXRlJywgW3RyYW5zaXRpb24oJ3ZvaWQgPT4gKicsIFt1c2VBbmltYXRpb24oY3VzdG9tQW5pbWF0aW9uKV0pXSksXG5cbiAgdHJpZ2dlcignYW5pbWF0ZVN0YWdnZXInLCBbXG4gICAgc3RhdGUoJzUwJywgc3R5bGUoJyonKSksXG4gICAgc3RhdGUoJzEwMCcsIHN0eWxlKCcqJykpLFxuICAgIHN0YXRlKCcyMDAnLCBzdHlsZSgnKicpKSxcblxuICAgIHRyYW5zaXRpb24oJ3ZvaWQgPT4gNTAnLCBxdWVyeSgnQConLCBbc3RhZ2dlcignNTBtcycsIFthbmltYXRlQ2hpbGQoKV0pXSwge29wdGlvbmFsOiB0cnVlfSkpLFxuICAgIHRyYW5zaXRpb24oJ3ZvaWQgPT4gMTAwJywgcXVlcnkoJ0AqJywgW3N0YWdnZXIoJzEwMG1zJywgW2FuaW1hdGVDaGlsZCgpXSldLCB7b3B0aW9uYWw6IHRydWV9KSksXG4gICAgdHJhbnNpdGlvbigndm9pZCA9PiAyMDAnLCBxdWVyeSgnQConLCBbc3RhZ2dlcignMjAwbXMnLCBbYW5pbWF0ZUNoaWxkKCldKV0sIHtvcHRpb25hbDogdHJ1ZX0pKVxuICBdKSxcbl07XG4iXX0=
|
|
@@ -1,98 +0,0 @@
|
|
|
1
|
-
import { __awaiter } from "tslib";
|
|
2
|
-
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
3
|
-
import { map } from 'rxjs/operators';
|
|
4
|
-
import { PopoverController } from '@ionic/angular';
|
|
5
|
-
import { AuthPopoverMenuComponent } from '../popover-menu';
|
|
6
|
-
import { AuthProcessService, UiService, FirebaseService } from 'ngx-firebase';
|
|
7
|
-
export class AuthAvatarComponent {
|
|
8
|
-
constructor(aps, popoverController, ui, fire) {
|
|
9
|
-
this.aps = aps;
|
|
10
|
-
this.popoverController = popoverController;
|
|
11
|
-
this.ui = ui;
|
|
12
|
-
this.fire = fire;
|
|
13
|
-
this.layout = 'default';
|
|
14
|
-
this.canLogout = true;
|
|
15
|
-
this.links = [];
|
|
16
|
-
this.canViewAccount = true;
|
|
17
|
-
this.canDeleteAccount = true;
|
|
18
|
-
this.canEditAccount = true;
|
|
19
|
-
this.showIfAnon = false;
|
|
20
|
-
this.showProfileDialog = new EventEmitter();
|
|
21
|
-
// tslint:disable-next-line no-output-on-prefix
|
|
22
|
-
this.onSignOut = new EventEmitter();
|
|
23
|
-
this.user$ = this.aps.user$
|
|
24
|
-
.pipe(map(user => ((null !== user && (this.showIfAnon || !user.isAnonymous)) ? user : null)));
|
|
25
|
-
this.displayNameInitials$ = this.user$
|
|
26
|
-
.pipe(map(user => {
|
|
27
|
-
if (!user || !user.displayName) {
|
|
28
|
-
return '';
|
|
29
|
-
}
|
|
30
|
-
const initialsRegExp = user.displayName.match(/\b\w/g) || [];
|
|
31
|
-
const initials = ((initialsRegExp.shift() || '') + (initialsRegExp.pop() || '')).toUpperCase();
|
|
32
|
-
return initials || '';
|
|
33
|
-
}));
|
|
34
|
-
}
|
|
35
|
-
openAvatarMenu(ev) {
|
|
36
|
-
return new Promise((resolve) => __awaiter(this, void 0, void 0, function* () {
|
|
37
|
-
const popover = yield this.popoverController.create({
|
|
38
|
-
component: AuthPopoverMenuComponent,
|
|
39
|
-
componentProps: {
|
|
40
|
-
links: [
|
|
41
|
-
...(this.canViewAccount) ? [{ text: 'auth.menu.profile', callback: this.doShowProfile.bind(this) }] : [],
|
|
42
|
-
...(this.canLogout) ? [{ text: 'auth.menu.signOut', callback: this.signOut.bind(this) }] : []
|
|
43
|
-
]
|
|
44
|
-
},
|
|
45
|
-
event: ev,
|
|
46
|
-
translucent: true
|
|
47
|
-
});
|
|
48
|
-
popover.onDidDismiss().then(data => {
|
|
49
|
-
resolve();
|
|
50
|
-
});
|
|
51
|
-
popover.present();
|
|
52
|
-
}));
|
|
53
|
-
}
|
|
54
|
-
doShowProfile(ev) {
|
|
55
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
56
|
-
this.showProfileDialog.emit(ev);
|
|
57
|
-
this.aps.showProfileDialog.emit(ev);
|
|
58
|
-
});
|
|
59
|
-
}
|
|
60
|
-
signOut() {
|
|
61
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
62
|
-
try {
|
|
63
|
-
this.fire.addLogMessage('Starting signOut');
|
|
64
|
-
yield this.aps.signOut();
|
|
65
|
-
// Sign-out successful.
|
|
66
|
-
this.onSignOut.emit();
|
|
67
|
-
}
|
|
68
|
-
catch (error) {
|
|
69
|
-
this.ui.logError(error);
|
|
70
|
-
}
|
|
71
|
-
});
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
AuthAvatarComponent.decorators = [
|
|
75
|
-
{ type: Component, args: [{
|
|
76
|
-
selector: 'mal-auth-avatar',
|
|
77
|
-
template: "<ng-container *ngIf=\"(user$ | async) as user\">\n <ion-avatar name='auth-avatar' class=\"avatar\" *ngIf=\"user?.photoURL || !(displayNameInitials$ | async)\" (click)=\"openAvatarMenu($event)\">\n <img [alt]=\"user.name\" [src]=\"user.photoURL\" onerror=\"this.onerror=null;this.src='/assets/images/person.png';\">\n </ion-avatar>\n <ion-button class=\"avatar\" *ngIf=\"!user?.photoURL && (displayNameInitials$ | async)\" (click)=\"openAvatarMenu($event)\">\n {{ displayNameInitials$ | async }}\n </ion-button>\n</ng-container>",
|
|
78
|
-
styles: ["ion-button.avatar{background-color:var(--ion-color-primary-tint);border-radius:50%;font-weight:700}.avatar{border:.75px solid var(--ion-color-primary);box-shadow:2px 2px var(--ion-color-primary-tint);max-width:var(--mal-avatar-size,35px)!important;max-height:var(--mal-avatar-size,35px)!important}"]
|
|
79
|
-
},] }
|
|
80
|
-
];
|
|
81
|
-
AuthAvatarComponent.ctorParameters = () => [
|
|
82
|
-
{ type: AuthProcessService },
|
|
83
|
-
{ type: PopoverController },
|
|
84
|
-
{ type: UiService },
|
|
85
|
-
{ type: FirebaseService }
|
|
86
|
-
];
|
|
87
|
-
AuthAvatarComponent.propDecorators = {
|
|
88
|
-
layout: [{ type: Input }],
|
|
89
|
-
canLogout: [{ type: Input }],
|
|
90
|
-
links: [{ type: Input }],
|
|
91
|
-
canViewAccount: [{ type: Input }],
|
|
92
|
-
canDeleteAccount: [{ type: Input }],
|
|
93
|
-
canEditAccount: [{ type: Input }],
|
|
94
|
-
showIfAnon: [{ type: Input }],
|
|
95
|
-
showProfileDialog: [{ type: Output }],
|
|
96
|
-
onSignOut: [{ type: Output }]
|
|
97
|
-
};
|
|
98
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXZhdGFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1maXJlYmFzZS9pb25pYy9zcmMvY29tcG9uZW50cy9hdmF0YXIvYXZhdGFyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUd2RSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkQsT0FBTyxFQUFnQix3QkFBd0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBTzlFLE1BQU0sT0FBTyxtQkFBbUI7SUErQzlCLFlBQ1MsR0FBdUIsRUFDdEIsaUJBQW9DLEVBQ3BDLEVBQWEsRUFDYixJQUFxQjtRQUh0QixRQUFHLEdBQUgsR0FBRyxDQUFvQjtRQUN0QixzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQ3BDLE9BQUUsR0FBRixFQUFFLENBQVc7UUFDYixTQUFJLEdBQUosSUFBSSxDQUFpQjtRQWhEL0IsV0FBTSxHQUF5QixTQUFTLENBQUM7UUFHekMsY0FBUyxHQUFHLElBQUksQ0FBQztRQUdqQixVQUFLLEdBQW1CLEVBQUUsQ0FBQztRQUczQixtQkFBYyxHQUFHLElBQUksQ0FBQztRQUd0QixxQkFBZ0IsR0FBRyxJQUFJLENBQUM7UUFHeEIsbUJBQWMsR0FBRyxJQUFJLENBQUM7UUFHdEIsZUFBVSxHQUFHLEtBQUssQ0FBQztRQUduQixzQkFBaUIsR0FBc0IsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUUvRCwrQ0FBK0M7UUFFL0MsY0FBUyxHQUF1QixJQUFJ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QUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUN6QjtRQUNILENBQUM7S0FBQTs7O1lBaEdGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsaUJBQWlCO2dCQUMzQixxaUJBQXNDOzthQUV2Qzs7O1lBTlEsa0JBQWtCO1lBRmxCLGlCQUFpQjtZQUVHLFNBQVM7WUFBRSxlQUFlOzs7cUJBU3BELEtBQUs7d0JBR0wsS0FBSztvQkFHTCxLQUFLOzZCQUdMLEtBQUs7K0JBR0wsS0FBSzs2QkFHTCxLQUFLO3lCQUdMLEtBQUs7Z0NBR0wsTUFBTTt3QkFJTixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFVzZXIgfSBmcm9tICdAZmlyZWJhc2UvYXV0aC10eXBlcyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBQb3BvdmVyQ29udHJvbGxlciB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyJztcbmltcG9ydCB7IExpbmtNZW51SXRlbSwgQXV0aFBvcG92ZXJNZW51Q29tcG9uZW50IH0gZnJvbSAnLi4vcG9wb3Zlci1tZW51JztcbmltcG9ydCB7IEF1dGhQcm9jZXNzU2VydmljZSwgVWlTZXJ2aWNlLCBGaXJlYmFzZVNlcnZpY2UgfSBmcm9tICduZ3gtZmlyZWJhc2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtYWwtYXV0aC1hdmF0YXInLFxuICB0ZW1wbGF0ZVVybDogJy4vYXZhdGFyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vYXZhdGFyLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgQXV0aEF2YXRhckNvbXBvbmVudCB7XG5cbiAgQElucHV0KClcbiAgbGF5b3V0OiAnZGVmYXVsdCcgfCAnc2ltcGxlJyA9ICdkZWZhdWx0JztcblxuICBASW5wdXQoKVxuICBjYW5Mb2dvdXQgPSB0cnVlO1xuXG4gIEBJbnB1dCgpXG4gIGxpbmtzOiBMaW5rTWVudUl0ZW1bXSA9IFtdO1xuXG4gIEBJbnB1dCgpXG4gIGNhblZpZXdBY2NvdW50ID0gdHJ1ZTtcblxuICBASW5wdXQoKVxuICBjYW5EZWxldGVBY2NvdW50ID0gdHJ1ZTtcblxuICBASW5wdXQoKVxuICBjYW5FZGl0QWNjb3VudCA9IHRydWU7XG5cbiAgQElucHV0KClcbiAgc2hvd0lmQW5vbiA9IGZhbHNlO1xuXG4gIEBPdXRwdXQoKVxuICBzaG93UHJvZmlsZURpYWxvZzogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmUgbm8tb3V0cHV0LW9uLXByZWZpeFxuICBAT3V0cHV0KClcbiAgb25TaWduT3V0OiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgdXNlciQ6IE9ic2VydmFibGU8VXNlciB8IG51bGw+ID0gdGhpcy5hcHMudXNlciRcbiAgICAucGlwZShcbiAgICAgIG1hcCh1c2VyID0+ICgobnVsbCAhPT0gdXNlciAmJiAodGhpcy5zaG93SWZBbm9uIHx8ICF1c2VyLmlzQW5vbnltb3VzKSkgPyB1c2VyIDogbnVsbCkpLFxuICAgICk7XG5cbiAgZGlzcGxheU5hbWVJbml0aWFscyQ6IE9ic2VydmFibGU8c3RyaW5nPiA9IHRoaXMudXNlciRcbiAgICAucGlwZShcbiAgICAgIG1hcCh1c2VyID0+IHtcbiAgICAgICAgaWYgKCF1c2VyIHx8ICF1c2VyLmRpc3BsYXlOYW1lKSB7XG4gICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGluaXRpYWxzUmVnRXhwOiBSZWdFeHBNYXRjaEFycmF5ID0gdXNlci5kaXNwbGF5TmFtZS5tYXRjaCgvXFxiXFx3L2cpIHx8IFtdO1xuICAgICAgICBjb25zdCBpbml0aWFscyA9ICgoaW5pdGlhbHNSZWdFeHAuc2hpZnQoKSB8fCAnJykgKyAoaW5pdGlhbHNSZWdFeHAucG9wKCkgfHwgJycpKS50b1VwcGVyQ2FzZSgpO1xuICAgICAgICByZXR1cm4gaW5pdGlhbHMgfHwgJyc7XG4gICAgICB9KVxuICAgICk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGFwczogQXV0aFByb2Nlc3NTZXJ2aWNlLFxuICAgIHByaXZhdGUgcG9wb3ZlckNvbnRyb2xsZXI6IFBvcG92ZXJDb250cm9sbGVyLFxuICAgIHByaXZhdGUgdWk6IFVpU2VydmljZSxcbiAgICBwcml2YXRlIGZpcmU6IEZpcmViYXNlU2VydmljZVxuICApIHtcbiAgfVxuXG4gIG9wZW5BdmF0YXJNZW51KGV2OiBhbnkpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2U8dm9pZD4oYXN5bmMgcmVzb2x2ZSA9PiB7XG4gICAgICBjb25zdCBwb3BvdmVyID0gYXdhaXQgdGhpcy5wb3BvdmVyQ29udHJvbGxlci5jcmVhdGUoe1xuICAgICAgICBjb21wb25lbnQ6IEF1dGhQb3BvdmVyTWVudUNvbXBvbmVudCxcbiAgICAgICAgY29tcG9uZW50UHJvcHM6IHtcbiAgICAgICAgICBsaW5rczogW1xuICAgICAgICAgICAgLi4uKHRoaXMuY2FuVmlld0FjY291bnQpID8gW3sgdGV4dDogJ2F1dGgubWVudS5wcm9maWxlJywgY2FsbGJhY2s6IHRoaXMuZG9TaG93UHJvZmlsZS5iaW5kKHRoaXMpIH1dIDogW10sXG4gICAgICAgICAgICAuLi4odGhpcy5jYW5Mb2dvdXQpID8gW3sgdGV4dDogJ2F1dGgubWVudS5zaWduT3V0JywgY2FsbGJhY2s6IHRoaXMuc2lnbk91dC5iaW5kKHRoaXMpIH1dIDogW11cbiAgICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgICAgIGV2ZW50OiBldixcbiAgICAgICAgdHJhbnNsdWNlbnQ6IHRydWVcbiAgICAgIH0pO1xuICAgICAgcG9wb3Zlci5vbkRpZERpc21pc3MoKS50aGVuKFxuICAgICAgICBkYXRhID0+IHtcbiAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgICBwb3BvdmVyLnByZXNlbnQoKTtcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIGRvU2hvd1Byb2ZpbGUoZXY6IGFueSk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMuc2hvd1Byb2ZpbGVEaWFsb2cuZW1pdChldik7XG4gICAgdGhpcy5hcHMuc2hvd1Byb2ZpbGVEaWFsb2cuZW1pdChldik7XG4gIH1cblxuICBhc3luYyBzaWduT3V0KCkge1xuICAgIHRyeSB7XG4gICAgICB0aGlzLmZpcmUuYWRkTG9nTWVzc2FnZSgnU3RhcnRpbmcgc2lnbk91dCcpO1xuICAgICAgYXdhaXQgdGhpcy5hcHMuc2lnbk91dCgpO1xuICAgICAgLy8gU2lnbi1vdXQgc3VjY2Vzc2Z1bC5cbiAgICAgIHRoaXMub25TaWduT3V0LmVtaXQoKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGhpcy51aS5sb2dFcnJvcihlcnJvcik7XG4gICAgfVxuICB9XG5cbn1cbiJdfQ==
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export * from './avatar.component';
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtZmlyZWJhc2UvaW9uaWMvc3JjL2NvbXBvbmVudHMvYXZhdGFyL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsb0JBQW9CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2F2YXRhci5jb21wb25lbnQnOyJdfQ==
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
export * from './avatar/index';
|
|
2
|
-
export * from './popover-menu/index';
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtZmlyZWJhc2UvaW9uaWMvc3JjL2NvbXBvbmVudHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLHNCQUFzQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9hdmF0YXIvaW5kZXgnO1xuZXhwb3J0ICogZnJvbSAnLi9wb3BvdmVyLW1lbnUvaW5kZXgnO1xuIl19
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
export * from './popover-menu.component';
|
|
2
|
-
export * from './interface';
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtZmlyZWJhc2UvaW9uaWMvc3JjL2NvbXBvbmVudHMvcG9wb3Zlci1tZW51L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYyxhQUFhLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3BvcG92ZXItbWVudS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9pbnRlcmZhY2UnOyJdfQ==
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWZpcmViYXNlL2lvbmljL3NyYy9jb21wb25lbnRzL3BvcG92ZXItbWVudS9pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgTGlua01lbnVJdGVtIHtcbiAgICB0ZXh0OiBzdHJpbmc7XG4gICAgaWNvbj86IHN0cmluZztcbiAgICBkaXNhYmxlZD86IGJvb2xlYW47XG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lIGJhbi10eXBlc1xuICAgIGNhbGxiYWNrPzogRnVuY3Rpb247XG4gIH0iXX0=
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import { Component, Input } from '@angular/core';
|
|
2
|
-
import { PopoverController } from '@ionic/angular';
|
|
3
|
-
import { UiService } from 'ngx-firebase';
|
|
4
|
-
export class AuthPopoverMenuComponent {
|
|
5
|
-
constructor(popoverController, ui) {
|
|
6
|
-
this.popoverController = popoverController;
|
|
7
|
-
this.ui = ui;
|
|
8
|
-
this.links = [];
|
|
9
|
-
}
|
|
10
|
-
doLinkClick(link) {
|
|
11
|
-
try {
|
|
12
|
-
this.popoverController.dismiss();
|
|
13
|
-
if (link.callback) {
|
|
14
|
-
link.callback();
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
catch (error) {
|
|
18
|
-
this.ui.logError(error);
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
AuthPopoverMenuComponent.decorators = [
|
|
23
|
-
{ type: Component, args: [{
|
|
24
|
-
template: "<ion-button *ngFor=\"let link of links\"\n expand=\"block\"\n [disabled]=\"link.disabled\"\n (click)=\"doLinkClick(link)\">\n {{ link.text | translate }}\n</ion-button>"
|
|
25
|
-
},] }
|
|
26
|
-
];
|
|
27
|
-
AuthPopoverMenuComponent.ctorParameters = () => [
|
|
28
|
-
{ type: PopoverController },
|
|
29
|
-
{ type: UiService }
|
|
30
|
-
];
|
|
31
|
-
AuthPopoverMenuComponent.propDecorators = {
|
|
32
|
-
links: [{ type: Input }]
|
|
33
|
-
};
|
|
34
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci1tZW51LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1maXJlYmFzZS9pb25pYy9zcmMvY29tcG9uZW50cy9wb3BvdmVyLW1lbnUvcG9wb3Zlci1tZW51LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBTXpDLE1BQU0sT0FBTyx3QkFBd0I7SUFLbkMsWUFDVSxpQkFBb0MsRUFDcEMsRUFBYTtRQURiLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDcEMsT0FBRSxHQUFGLEVBQUUsQ0FBVztRQUp2QixVQUFLLEdBQW1CLEVBQUUsQ0FBQztJQUt2QixDQUFDO0lBRUwsV0FBVyxDQUFDLElBQWtCO1FBQzVCLElBQUk7WUFDRixJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDakMsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO2dCQUNqQixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7YUFDakI7U0FDRjtRQUFDLE9BQU8sS0FBSyxFQUFFO1lBQ2QsSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDekI7SUFDSCxDQUFDOzs7WUF0QkYsU0FBUyxTQUFDO2dCQUNULGdPQUE0QzthQUM3Qzs7O1lBTlEsaUJBQWlCO1lBQ2pCLFNBQVM7OztvQkFRZixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUG9wb3ZlckNvbnRyb2xsZXIgfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XG5pbXBvcnQgeyBVaVNlcnZpY2UgfSBmcm9tICduZ3gtZmlyZWJhc2UnO1xuaW1wb3J0IHsgTGlua01lbnVJdGVtIH0gZnJvbSAnLi9pbnRlcmZhY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgdGVtcGxhdGVVcmw6ICcuL3BvcG92ZXItbWVudS5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgQXV0aFBvcG92ZXJNZW51Q29tcG9uZW50IHtcblxuICBASW5wdXQoKVxuICBsaW5rczogTGlua01lbnVJdGVtW10gPSBbXTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHBvcG92ZXJDb250cm9sbGVyOiBQb3BvdmVyQ29udHJvbGxlcixcbiAgICBwcml2YXRlIHVpOiBVaVNlcnZpY2VcbiAgKSB7IH1cblxuICBkb0xpbmtDbGljayhsaW5rOiBMaW5rTWVudUl0ZW0pIHtcbiAgICB0cnkge1xuICAgICAgdGhpcy5wb3BvdmVyQ29udHJvbGxlci5kaXNtaXNzKCk7XG4gICAgICBpZiAobGluay5jYWxsYmFjaykge1xuICAgICAgICBsaW5rLmNhbGxiYWNrKCk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRoaXMudWkubG9nRXJyb3IoZXJyb3IpO1xuICAgIH1cbiAgfVxuXG59Il19
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
// @angular/*
|
|
2
|
-
import { NgModule } from '@angular/core';
|
|
3
|
-
import { HttpClientModule } from '@angular/common/http';
|
|
4
|
-
import { CommonModule } from '@angular/common';
|
|
5
|
-
// Ionic
|
|
6
|
-
import { IonicModule } from '@ionic/angular';
|
|
7
|
-
// Mal
|
|
8
|
-
import { MalSharedModule } from 'ngx-firebase';
|
|
9
|
-
// components
|
|
10
|
-
import { AuthAvatarComponent } from './components/avatar/avatar.component';
|
|
11
|
-
import { AuthPopoverMenuComponent } from './components/popover-menu/popover-menu.component';
|
|
12
|
-
// services
|
|
13
|
-
import { MalIonicAlertsService } from './services/alerts-ionic.service';
|
|
14
|
-
import { MalIonicLoadingService } from './services/loading-ionic.service';
|
|
15
|
-
import { MalIonicPickerService } from './services/picker-ionic.service';
|
|
16
|
-
import { MalIonicToastService } from './services/toast-ionic.service';
|
|
17
|
-
import { MalIonicLegalityDialogService } from './services/legality-dialog-ionic.service';
|
|
18
|
-
// interfaces
|
|
19
|
-
import { MalToastUIProviderToken, MalAlertsUIProviderToken, MalLoadingUIProviderToken, MalPickerUIProviderToken, MalLegaliyDialogUIProiderToken } from 'ngx-firebase';
|
|
20
|
-
// pages
|
|
21
|
-
const COMPONENTS = [
|
|
22
|
-
AuthAvatarComponent,
|
|
23
|
-
AuthPopoverMenuComponent
|
|
24
|
-
];
|
|
25
|
-
export class MalIonicModule {
|
|
26
|
-
}
|
|
27
|
-
MalIonicModule.decorators = [
|
|
28
|
-
{ type: NgModule, args: [{
|
|
29
|
-
imports: [
|
|
30
|
-
MalSharedModule,
|
|
31
|
-
CommonModule,
|
|
32
|
-
HttpClientModule,
|
|
33
|
-
IonicModule
|
|
34
|
-
],
|
|
35
|
-
exports: COMPONENTS,
|
|
36
|
-
declarations: COMPONENTS,
|
|
37
|
-
providers: [
|
|
38
|
-
{ provide: MalAlertsUIProviderToken, useClass: MalIonicAlertsService },
|
|
39
|
-
{ provide: MalLoadingUIProviderToken, useClass: MalIonicLoadingService },
|
|
40
|
-
{ provide: MalPickerUIProviderToken, useClass: MalIonicPickerService },
|
|
41
|
-
{ provide: MalToastUIProviderToken, useClass: MalIonicToastService },
|
|
42
|
-
{ provide: MalLegaliyDialogUIProiderToken, useClass: MalIonicLegalityDialogService }
|
|
43
|
-
]
|
|
44
|
-
},] }
|
|
45
|
-
];
|
|
46
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW9uaWMubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWZpcmViYXNlL2lvbmljL3NyYy9pb25pYy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsYUFBYTtBQUNiLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBRTlDLFFBQVE7QUFDUixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFN0MsTUFBTTtBQUNOLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFL0MsYUFBYTtBQUNiLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBRTVGLFdBQVc7QUFDWCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN4RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUMxRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN4RSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN0RSxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUN6RixhQUFhO0FBQ2IsT0FBTyxFQUNMLHVCQUF1QixFQUFFLHdCQUF3QixFQUFFLHlCQUF5QixFQUM1RSx3QkFBd0IsRUFBRSw4QkFBOEIsRUFDekQsTUFBTSxjQUFjLENBQUM7QUFDdEIsUUFBUTtBQUVSLE1BQU0sVUFBVSxHQUFHO0lBQ2pCLG1CQUFtQjtJQUNuQix3QkFBd0I7Q0FDekIsQ0FBQztBQW9CRixNQUFNLE9BQU8sY0FBYzs7O1lBbEIxQixRQUFRLFNBQUM7Z0JBQ1IsT0FBTyxFQUFFO29CQUNQLGVBQWU7b0JBQ2YsWUFBWTtvQkFDWixnQkFBZ0I7b0JBQ2hCLFdBQVc7aUJBQ1o7Z0JBQ0QsT0FBTyxFQUFFLFVBQVU7Z0JBQ25CLFlBQVksRUFBRSxVQUFVO2dCQUN4QixTQUFTLEVBQ1A7b0JBQ0UsRUFBRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsUUFBUSxFQUFFLHFCQUFxQixFQUFFO29CQUN0RSxFQUFFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxRQUFRLEVBQUUsc0JBQXNCLEVBQUU7b0JBQ3hFLEVBQUUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLFFBQVEsRUFBRSxxQkFBcUIsRUFBRTtvQkFDdEUsRUFBRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsUUFBUSxFQUFFLG9CQUFvQixFQUFFO29CQUNwRSxFQUFFLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxRQUFRLEVBQUUsNkJBQTZCLEVBQUU7aUJBQ3JGO2FBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAYW5ndWxhci8qXG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSHR0cENsaWVudE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbidcblxuLy8gSW9uaWNcbmltcG9ydCB7IElvbmljTW9kdWxlIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xuXG4vLyBNYWxcbmltcG9ydCB7IE1hbFNoYXJlZE1vZHVsZSB9IGZyb20gJ25neC1maXJlYmFzZSc7XG5cbi8vIGNvbXBvbmVudHNcbmltcG9ydCB7IEF1dGhBdmF0YXJDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvYXZhdGFyL2F2YXRhci5jb21wb25lbnQnO1xuaW1wb3J0IHsgQXV0aFBvcG92ZXJNZW51Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3BvcG92ZXItbWVudS9wb3BvdmVyLW1lbnUuY29tcG9uZW50JztcblxuLy8gc2VydmljZXNcbmltcG9ydCB7IE1hbElvbmljQWxlcnRzU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvYWxlcnRzLWlvbmljLnNlcnZpY2UnO1xuaW1wb3J0IHsgTWFsSW9uaWNMb2FkaW5nU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvbG9hZGluZy1pb25pYy5zZXJ2aWNlJztcbmltcG9ydCB7IE1hbElvbmljUGlja2VyU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvcGlja2VyLWlvbmljLnNlcnZpY2UnO1xuaW1wb3J0IHsgTWFsSW9uaWNUb2FzdFNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL3RvYXN0LWlvbmljLnNlcnZpY2UnO1xuaW1wb3J0IHsgTWFsSW9uaWNMZWdhbGl0eURpYWxvZ1NlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2xlZ2FsaXR5LWRpYWxvZy1pb25pYy5zZXJ2aWNlJztcbi8vIGludGVyZmFjZXNcbmltcG9ydCB7XG4gIE1hbFRvYXN0VUlQcm92aWRlclRva2VuLCBNYWxBbGVydHNVSVByb3ZpZGVyVG9rZW4sIE1hbExvYWRpbmdVSVByb3ZpZGVyVG9rZW4sXG4gIE1hbFBpY2tlclVJUHJvdmlkZXJUb2tlbiwgTWFsTGVnYWxpeURpYWxvZ1VJUHJvaWRlclRva2VuXG59IGZyb20gJ25neC1maXJlYmFzZSc7XG4vLyBwYWdlc1xuXG5jb25zdCBDT01QT05FTlRTID0gW1xuICBBdXRoQXZhdGFyQ29tcG9uZW50LFxuICBBdXRoUG9wb3Zlck1lbnVDb21wb25lbnRcbl07XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtcbiAgICBNYWxTaGFyZWRNb2R1bGUsXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEh0dHBDbGllbnRNb2R1bGUsXG4gICAgSW9uaWNNb2R1bGVcbiAgXSxcbiAgZXhwb3J0czogQ09NUE9ORU5UUyxcbiAgZGVjbGFyYXRpb25zOiBDT01QT05FTlRTLFxuICBwcm92aWRlcnM6XG4gICAgW1xuICAgICAgeyBwcm92aWRlOiBNYWxBbGVydHNVSVByb3ZpZGVyVG9rZW4sIHVzZUNsYXNzOiBNYWxJb25pY0FsZXJ0c1NlcnZpY2UgfSxcbiAgICAgIHsgcHJvdmlkZTogTWFsTG9hZGluZ1VJUHJvdmlkZXJUb2tlbiwgdXNlQ2xhc3M6IE1hbElvbmljTG9hZGluZ1NlcnZpY2UgfSxcbiAgICAgIHsgcHJvdmlkZTogTWFsUGlja2VyVUlQcm92aWRlclRva2VuLCB1c2VDbGFzczogTWFsSW9uaWNQaWNrZXJTZXJ2aWNlIH0sXG4gICAgICB7IHByb3ZpZGU6IE1hbFRvYXN0VUlQcm92aWRlclRva2VuLCB1c2VDbGFzczogTWFsSW9uaWNUb2FzdFNlcnZpY2UgfSxcbiAgICAgIHsgcHJvdmlkZTogTWFsTGVnYWxpeURpYWxvZ1VJUHJvaWRlclRva2VuLCB1c2VDbGFzczogTWFsSW9uaWNMZWdhbGl0eURpYWxvZ1NlcnZpY2UgfVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgTWFsSW9uaWNNb2R1bGUge1xuXG59XG4iXX0=
|