simpo-component-library 3.6.642 → 3.6.644
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/esm2022/lib/ecommerce/sections/authentication-required/authentication-required.component.mjs +89 -170
- package/esm2022/lib/ecommerce/sections/product-desc/product-desc.component.mjs +12 -18
- package/esm2022/lib/ecommerce/sections/product-list/product-list.component.mjs +17 -74
- package/esm2022/lib/ecommerce/sections/refer-earn/refer-earn.component.mjs +76 -0
- package/esm2022/lib/ecommerce/sections/refer-earn/refer-earn.modal.mjs +2 -0
- package/esm2022/lib/elements/below-image-card/below-image-card.component.mjs +2 -2
- package/esm2022/lib/elements/covering-image-card/covering-image-card.component.mjs +2 -2
- package/esm2022/lib/elements/simpo-button/simpo-button.component.mjs +3 -9
- package/esm2022/lib/elements/top-of-image-card/top-of-image-card.component.mjs +2 -2
- package/esm2022/lib/sections/appointment-form/appointment-form.component.mjs +2 -2
- package/esm2022/lib/sections/banner-carousel/banner-carousel.component.mjs +2 -2
- package/esm2022/lib/sections/banner-grid-section/banner-grid-section.component.mjs +2 -2
- package/esm2022/lib/sections/banner-section/banner-section.component.mjs +2 -2
- package/esm2022/lib/sections/carousel-banner/carousel-banner.component.mjs +2 -2
- package/esm2022/lib/sections/condensed-and-gradient/condensed-and-gradient.component.mjs +2 -2
- package/esm2022/lib/sections/countdown-banner/countdown-banner.component.mjs +2 -2
- package/esm2022/lib/sections/footer-section/footer-section.component.mjs +2 -2
- package/esm2022/lib/sections/header-section/header-section.component.mjs +2 -2
- package/esm2022/lib/sections/header-text/header-text.component.mjs +2 -2
- package/esm2022/lib/sections/image-background/image-background/image-background.component.mjs +2 -2
- package/esm2022/lib/sections/image-section/image-section.component.mjs +2 -2
- package/esm2022/lib/sections/logo-showcase/logo-showcase.component.mjs +2 -2
- package/esm2022/lib/sections/navbar-section/navbar-section.component.mjs +2 -2
- package/esm2022/lib/sections/new-services/new-services.component.mjs +2 -2
- package/esm2022/lib/sections/new-testimonials/new-testimonials.component.mjs +2 -2
- package/esm2022/lib/sections/overlapping-image/overlapping-image.component.mjs +2 -2
- package/esm2022/lib/sections/pricing-section/pricing-section.component.mjs +2 -2
- package/esm2022/lib/sections/service-section/service-section.component.mjs +2 -2
- package/esm2022/lib/sections/team-member-section/team-member-section.component.mjs +2 -2
- package/esm2022/lib/sections/text-image-section/text-image-section.component.mjs +2 -2
- package/esm2022/lib/sections/text-section/text-section.component.mjs +2 -2
- package/esm2022/lib/services/cart.service.mjs +5 -44
- package/esm2022/lib/services/rest.service.mjs +1 -5
- package/esm2022/lib/styles/index.mjs +2 -2
- package/esm2022/public-api.mjs +2 -1
- package/fesm2022/simpo-component-library.mjs +193 -470
- package/fesm2022/simpo-component-library.mjs.map +1 -1
- package/lib/components/input-fields/input-fields.component.d.ts +1 -1
- package/lib/ecommerce/sections/authentication-required/authentication-required.component.d.ts +3 -12
- package/lib/ecommerce/sections/product-desc/product-desc.component.d.ts +2 -4
- package/lib/ecommerce/sections/product-list/product-list.component.d.ts +1 -6
- package/lib/ecommerce/sections/refer-earn/refer-earn.component.d.ts +25 -0
- package/lib/ecommerce/sections/refer-earn/refer-earn.modal.d.ts +29 -0
- package/lib/ecommerce/sections/schemes/schemes.component.d.ts +1 -1
- package/lib/elements/link-editor/link-editor.component.d.ts +1 -1
- package/lib/elements/simpo-button/simpo-button.component.d.ts +1 -3
- package/lib/sections/banner-carousel/banner-carousel.component.d.ts +2 -2
- package/lib/sections/carousel-banner/carousel-banner.component.d.ts +1 -1
- package/lib/sections/contact-us/contact-us.component.d.ts +1 -1
- package/lib/sections/faq-section/faq-section.component.d.ts +1 -1
- package/lib/sections/image-section/image-section.component.d.ts +2 -2
- package/lib/sections/logo-showcase/logo-showcase.component.d.ts +2 -2
- package/lib/sections/new-testimonials/new-testimonials.component.d.ts +1 -1
- package/lib/sections/pricing-section/pricing-section.component.d.ts +2 -2
- package/lib/services/cart.service.d.ts +1 -7
- package/lib/services/rest.service.d.ts +0 -1
- package/lib/styles/index.d.ts +1 -1
- package/package.json +1 -1
- package/public-api.d.ts +1 -0
- package/simpo-component-library-3.6.644.tgz +0 -0
- package/esm2022/lib/services/analytics.service.mjs +0 -160
- package/lib/services/analytics.service.d.ts +0 -33
- package/simpo-component-library-3.6.642.tgz +0 -0
|
@@ -13,7 +13,7 @@ export declare class InputFieldsComponent implements OnChanges {
|
|
|
13
13
|
constructor(elementRef: ElementRef);
|
|
14
14
|
ngOnChanges(changes: SimpleChanges): void;
|
|
15
15
|
handleMoneyInput(event: any): void;
|
|
16
|
-
get getTextColor(): "#
|
|
16
|
+
get getTextColor(): "#FFF" | "#000";
|
|
17
17
|
interpolateColor(color1: string, color2: string, factor: number): string;
|
|
18
18
|
padZero(str: string, length: number): string;
|
|
19
19
|
generateColorBasedOnNumber(number: number): string;
|
package/lib/ecommerce/sections/authentication-required/authentication-required.component.d.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import { ElementRef
|
|
2
|
-
import { FormArray, FormControl } from '@angular/forms';
|
|
1
|
+
import { ElementRef } from '@angular/core';
|
|
3
2
|
import { RestService } from '../../../services/rest.service';
|
|
4
3
|
import { ActivatedRoute, Router } from '@angular/router';
|
|
5
4
|
import { MessageService } from 'primeng/api';
|
|
@@ -20,7 +19,7 @@ export declare class AuthenticationRequiredComponent extends BaseSection {
|
|
|
20
19
|
private elementRef;
|
|
21
20
|
private readonly dialogRef;
|
|
22
21
|
private readonly bottomsheetRef;
|
|
23
|
-
data?: AuthenticationModel
|
|
22
|
+
data?: AuthenticationModel;
|
|
24
23
|
index?: number;
|
|
25
24
|
edit?: boolean;
|
|
26
25
|
delete?: boolean;
|
|
@@ -32,7 +31,6 @@ export declare class AuthenticationRequiredComponent extends BaseSection {
|
|
|
32
31
|
email: string;
|
|
33
32
|
mobile: string;
|
|
34
33
|
otp: string;
|
|
35
|
-
otpControls: FormArray<FormControl<string | null>>;
|
|
36
34
|
password: string;
|
|
37
35
|
confPassword: string;
|
|
38
36
|
userName: string;
|
|
@@ -51,15 +49,8 @@ export declare class AuthenticationRequiredComponent extends BaseSection {
|
|
|
51
49
|
proceedToEnrollment: boolean;
|
|
52
50
|
tryAtHome: boolean;
|
|
53
51
|
navigateToSchemeDetails: boolean;
|
|
54
|
-
inputs: QueryList<ElementRef>;
|
|
55
52
|
ngOnInit(): void;
|
|
56
53
|
ngAfterViewInit(): void;
|
|
57
|
-
onInput(index: number): void;
|
|
58
|
-
onKeyDown(event: KeyboardEvent, index: number): void;
|
|
59
|
-
getGradientDirection(direction: string | undefined): string;
|
|
60
|
-
get fontColor(): string;
|
|
61
|
-
get accentBackground(): string;
|
|
62
|
-
getFormOtp(): string;
|
|
63
54
|
loginType: "PASSWORD" | "OTP";
|
|
64
55
|
generateOtp: boolean;
|
|
65
56
|
loginAuthentication(loginType: "PASSWORD" | "OTP"): void;
|
|
@@ -81,7 +72,7 @@ export declare class AuthenticationRequiredComponent extends BaseSection {
|
|
|
81
72
|
validateNumber(event: KeyboardEvent): void;
|
|
82
73
|
validateOTP(event: KeyboardEvent): void;
|
|
83
74
|
checkStrength(): void;
|
|
84
|
-
getStrengthColor(index: number): "
|
|
75
|
+
getStrengthColor(index: number): "yellow" | "tomato" | "#d3d3d3ba" | "orange" | "lightgreen";
|
|
85
76
|
emailDebounceTimer: any;
|
|
86
77
|
onEmailChange(): void;
|
|
87
78
|
emailCheck: boolean;
|
|
@@ -14,7 +14,6 @@ import { Meta, Title } from '@angular/platform-browser';
|
|
|
14
14
|
import { MatDialog } from '@angular/material/dialog';
|
|
15
15
|
import { MatBottomSheet } from '@angular/material/bottom-sheet';
|
|
16
16
|
import { CustomerReviewComponent } from '../../sections/customer-review/customer-review.component';
|
|
17
|
-
import { AnalyticsService } from '../../../services/analytics.service';
|
|
18
17
|
import * as i0 from "@angular/core";
|
|
19
18
|
export declare class ProductDescComponent extends BaseSection {
|
|
20
19
|
private platformId;
|
|
@@ -30,7 +29,6 @@ export declare class ProductDescComponent extends BaseSection {
|
|
|
30
29
|
private readonly bottomSheet;
|
|
31
30
|
private renderer;
|
|
32
31
|
private matDialog;
|
|
33
|
-
private analyticsService;
|
|
34
32
|
reviewComponent: CustomerReviewComponent;
|
|
35
33
|
aboveHeight: ElementRef<HTMLDivElement>;
|
|
36
34
|
container: ElementRef<HTMLDivElement>;
|
|
@@ -54,7 +52,7 @@ export declare class ProductDescComponent extends BaseSection {
|
|
|
54
52
|
showReview: boolean;
|
|
55
53
|
selectedReview: any;
|
|
56
54
|
currentImageIndex: number;
|
|
57
|
-
constructor(platformId: Object, _eventService: EventsService, router: Router, activatedRoute: ActivatedRoute, restService: RestService, cartService: CartService, storageService: StorageServiceService, messageService: MessageService, metaTagService: Meta, titleService: Title, bottomSheet: MatBottomSheet, renderer: Renderer2, matDialog: MatDialog
|
|
55
|
+
constructor(platformId: Object, _eventService: EventsService, router: Router, activatedRoute: ActivatedRoute, restService: RestService, cartService: CartService, storageService: StorageServiceService, messageService: MessageService, metaTagService: Meta, titleService: Title, bottomSheet: MatBottomSheet, renderer: Renderer2, matDialog: MatDialog);
|
|
58
56
|
buttonId?: string;
|
|
59
57
|
button?: ButtonModel;
|
|
60
58
|
styles?: ProductDescStylesModal;
|
|
@@ -119,7 +117,7 @@ export declare class ProductDescComponent extends BaseSection {
|
|
|
119
117
|
getTextColor(color: any): "#000000" | "#ffffff";
|
|
120
118
|
languages: string[];
|
|
121
119
|
selectedLang: string;
|
|
122
|
-
getClass(map: any): "col-
|
|
120
|
+
getClass(map: any): "col-4" | "col-6" | "col-3" | "width-max";
|
|
123
121
|
onFindInStore(id: string): void;
|
|
124
122
|
onBookAppointment(): void;
|
|
125
123
|
isDetails: boolean;
|
|
@@ -12,7 +12,6 @@ import { MatDialog } from '@angular/material/dialog';
|
|
|
12
12
|
import { CartService } from '../../../services/cart.service';
|
|
13
13
|
import { MenuItem, MessageService } from 'primeng/api';
|
|
14
14
|
import { ProductCardTheme } from '../../../styles/index';
|
|
15
|
-
import { AnalyticsService } from '../../../services/analytics.service';
|
|
16
15
|
import * as i0 from "@angular/core";
|
|
17
16
|
interface BaseModel {
|
|
18
17
|
option: string;
|
|
@@ -32,7 +31,6 @@ export declare class ProductListComponent extends BaseSection {
|
|
|
32
31
|
private readonly cartService;
|
|
33
32
|
private readonly messageService;
|
|
34
33
|
private renderer;
|
|
35
|
-
private readonly analyticsService;
|
|
36
34
|
responseData?: Product[];
|
|
37
35
|
data?: ProductListModal;
|
|
38
36
|
index?: number;
|
|
@@ -71,7 +69,6 @@ export declare class ProductListComponent extends BaseSection {
|
|
|
71
69
|
searchTxt: string;
|
|
72
70
|
theme: typeof ProductCardTheme;
|
|
73
71
|
items: MenuItem[] | null;
|
|
74
|
-
latestAnalyicsEvent: string;
|
|
75
72
|
private filterBottomSheetRef;
|
|
76
73
|
private sortingDialogRef;
|
|
77
74
|
categories: BaseModel[];
|
|
@@ -80,7 +77,7 @@ export declare class ProductListComponent extends BaseSection {
|
|
|
80
77
|
listScrollContainer: ElementRef<HTMLDivElement>;
|
|
81
78
|
getScreenSize(): void;
|
|
82
79
|
onWindowScroll(event: Event): void;
|
|
83
|
-
constructor(platformId: Object, _eventService: EventsService, restService: RestService, router: Router, activatedRoute: ActivatedRoute, storageService: StorageServiceService, matBottomSheet: MatBottomSheet, matDialog: MatDialog, cartService: CartService, messageService: MessageService, renderer: Renderer2
|
|
80
|
+
constructor(platformId: Object, _eventService: EventsService, restService: RestService, router: Router, activatedRoute: ActivatedRoute, storageService: StorageServiceService, matBottomSheet: MatBottomSheet, matDialog: MatDialog, cartService: CartService, messageService: MessageService, renderer: Renderer2);
|
|
84
81
|
get stylesLayout(): LayOutModel;
|
|
85
82
|
isOpen: boolean;
|
|
86
83
|
toggleDropdown(): void;
|
|
@@ -106,8 +103,6 @@ export declare class ProductListComponent extends BaseSection {
|
|
|
106
103
|
toShowInJewellery: boolean;
|
|
107
104
|
IsEcommerce: boolean;
|
|
108
105
|
ngOnInit(): void;
|
|
109
|
-
fetchAnalytics(): void;
|
|
110
|
-
getCategoriesAndCollection(): void;
|
|
111
106
|
get selectedCategoryCollectionChips(): {
|
|
112
107
|
id: string;
|
|
113
108
|
name: string;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { OnInit } from '@angular/core';
|
|
2
|
+
import { LayOutModel } from '../../../styles/style.model';
|
|
3
|
+
import { ProductDescStylesModal } from './refer-earn.modal';
|
|
4
|
+
import { StorageServiceService } from '../../../services/storage.service';
|
|
5
|
+
import { Router } from '@angular/router';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
export declare class ReferEarnComponent implements OnInit {
|
|
8
|
+
private readonly storageService;
|
|
9
|
+
private readonly router;
|
|
10
|
+
data?: any;
|
|
11
|
+
styles?: ProductDescStylesModal;
|
|
12
|
+
userDetail: any;
|
|
13
|
+
constructor(storageService: StorageServiceService, router: Router);
|
|
14
|
+
ngOnInit(): void;
|
|
15
|
+
get stylesLayout(): LayOutModel;
|
|
16
|
+
get isMobile(): boolean;
|
|
17
|
+
get getBusinessId(): string | null;
|
|
18
|
+
get getUserId(): any;
|
|
19
|
+
get getEmail(): any;
|
|
20
|
+
get getMobile(): any;
|
|
21
|
+
get getName(): any;
|
|
22
|
+
get getWebUrl(): string;
|
|
23
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ReferEarnComponent, never>;
|
|
24
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<ReferEarnComponent, "simpo-refer-earn", never, { "data": { "alias": "data"; "required": false; }; }, {}, never, never, true, never>;
|
|
25
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { FooterSocialLinkModel } from "../../../sections/footer-section/footer-section.modal";
|
|
2
|
+
import { AnimationModel, BackgroundModel, DeviderModel, InputTextModel, LayOutModel } from "../../../styles/style.model";
|
|
3
|
+
import { ActionModel } from '../../../styles/style.model';
|
|
4
|
+
import { Corners } from "../../../styles/index";
|
|
5
|
+
import { GRID_STYLE } from "../../../styles/types";
|
|
6
|
+
export interface ProductDescModal {
|
|
7
|
+
id: string;
|
|
8
|
+
sectionType: string;
|
|
9
|
+
sectionName: string;
|
|
10
|
+
content: ProductDescContentModal;
|
|
11
|
+
styles: ProductDescStylesModal;
|
|
12
|
+
action: ActionModel;
|
|
13
|
+
}
|
|
14
|
+
export interface ProductDescStylesModal {
|
|
15
|
+
layout: LayOutModel;
|
|
16
|
+
background: BackgroundModel;
|
|
17
|
+
animation: AnimationModel;
|
|
18
|
+
maximumProduct: number;
|
|
19
|
+
direction: "ROW" | "COLUMN";
|
|
20
|
+
devider: DeviderModel;
|
|
21
|
+
corners: Corners;
|
|
22
|
+
gridStyle: GRID_STYLE;
|
|
23
|
+
customization: GRID_STYLE;
|
|
24
|
+
}
|
|
25
|
+
export interface ProductDescContentModal {
|
|
26
|
+
button: string;
|
|
27
|
+
socialLinks: FooterSocialLinkModel;
|
|
28
|
+
inputText: InputTextModel[];
|
|
29
|
+
}
|
|
@@ -21,7 +21,7 @@ export declare class SchemesComponent extends BaseSection {
|
|
|
21
21
|
get stylesLayout(): LayOutModel;
|
|
22
22
|
get spacingLayout(): SpacingModel;
|
|
23
23
|
getParentClass(): "" | "overflow-scroll flex-nowrap";
|
|
24
|
-
getClass(index: number): "col-
|
|
24
|
+
getClass(index: number): "col-12" | "col-6" | "col-6 mb-2" | "col-12 mb-2";
|
|
25
25
|
showSchemeDetails(scheme: any): void;
|
|
26
26
|
static ɵfac: i0.ɵɵFactoryDeclaration<SchemesComponent, never>;
|
|
27
27
|
static ɵcmp: i0.ɵɵComponentDeclaration<SchemesComponent, "simpo-schemes", never, { "data": { "alias": "data"; "required": false; }; "edit": { "alias": "edit"; "required": false; }; "delete": { "alias": "delete"; "required": false; }; "index": { "alias": "index"; "required": false; }; }, {}, never, never, true, never>;
|
|
@@ -31,7 +31,7 @@ export declare class LinkEditorComponent {
|
|
|
31
31
|
changeButtonStyle(): void;
|
|
32
32
|
getContrastTextColor(backgroundHex: any): void;
|
|
33
33
|
backgroundType: string[];
|
|
34
|
-
setBorderRadius(): "0px" | "
|
|
34
|
+
setBorderRadius(): "0px" | "99px" | "7px";
|
|
35
35
|
setBorder(): string;
|
|
36
36
|
setColor(): any;
|
|
37
37
|
setBackground(): any;
|
|
@@ -10,11 +10,9 @@ export declare class SimpoButtonComponent {
|
|
|
10
10
|
sectionId?: string;
|
|
11
11
|
edit?: boolean;
|
|
12
12
|
backgroundInfo?: BackgroundModel;
|
|
13
|
-
disabled?: boolean;
|
|
14
|
-
loading?: boolean;
|
|
15
13
|
constructor(_eventService: EventsService);
|
|
16
14
|
ngOnInit(): void;
|
|
17
15
|
redirectTo(): void;
|
|
18
16
|
static ɵfac: i0.ɵɵFactoryDeclaration<SimpoButtonComponent, never>;
|
|
19
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<SimpoButtonComponent, "app-button-element", never, { "buttonContent": { "alias": "buttonContent"; "required": false; }; "buttonStyle": { "alias": "buttonStyle"; "required": false; }; "buttonId": { "alias": "buttonId"; "required": false; }; "color": { "alias": "color"; "required": false; }; "sectionId": { "alias": "sectionId"; "required": false; }; "edit": { "alias": "edit"; "required": false; }; "backgroundInfo": { "alias": "backgroundInfo"; "required": false; };
|
|
17
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<SimpoButtonComponent, "app-button-element", never, { "buttonContent": { "alias": "buttonContent"; "required": false; }; "buttonStyle": { "alias": "buttonStyle"; "required": false; }; "buttonId": { "alias": "buttonId"; "required": false; }; "color": { "alias": "color"; "required": false; }; "sectionId": { "alias": "sectionId"; "required": false; }; "edit": { "alias": "edit"; "required": false; }; "backgroundInfo": { "alias": "backgroundInfo"; "required": false; }; }, {}, never, never, true, never>;
|
|
20
18
|
}
|
|
@@ -25,8 +25,8 @@ export declare class BannerCarouselComponent extends BaseSection implements OnIn
|
|
|
25
25
|
get stylesLayout(): LayOutModel;
|
|
26
26
|
get getBlurValue(): "NONE" | "LIGHT" | "MODERATE" | "STRONG" | "VERY_STRONG" | undefined;
|
|
27
27
|
get getBackgroundColor(): BackgroundModel;
|
|
28
|
-
get getBackgroundOpacity(): "
|
|
29
|
-
opacityValue(value: OverlayValue): "
|
|
28
|
+
get getBackgroundOpacity(): "1" | "0" | "0.7" | "0.5" | "0.6" | "0.8";
|
|
29
|
+
opacityValue(value: OverlayValue): "1" | "0.7" | "0.5" | "0.6" | "0.8";
|
|
30
30
|
editSection(): void;
|
|
31
31
|
getScreenSize(): number;
|
|
32
32
|
static ɵfac: i0.ɵɵFactoryDeclaration<BannerCarouselComponent, never>;
|
|
@@ -25,7 +25,7 @@ export declare class CarouselBannerComponent extends BaseSection implements OnIn
|
|
|
25
25
|
get canMergeNavbar(): boolean | undefined;
|
|
26
26
|
get isBorderlessImage(): boolean | undefined;
|
|
27
27
|
get getPositionLayout(): PositionLayoutModal;
|
|
28
|
-
opacityValue(value: OverlayValue): "0" | "0.
|
|
28
|
+
opacityValue(value: OverlayValue): "0" | "0.7" | "0.5" | "0.3" | "0.2";
|
|
29
29
|
editSection(): void;
|
|
30
30
|
static ɵfac: i0.ɵɵFactoryDeclaration<CarouselBannerComponent, never>;
|
|
31
31
|
static ɵcmp: i0.ɵɵComponentDeclaration<CarouselBannerComponent, "simpo-carousel-banner", never, { "data": { "alias": "data"; "required": false; }; "index": { "alias": "index"; "required": false; }; "edit": { "alias": "edit"; "required": false; }; "delete": { "alias": "delete"; "required": false; }; "customClass": { "alias": "customClass"; "required": false; }; "nextComponentColor": { "alias": "nextComponentColor"; "required": false; }; }, {}, never, never, true, never>;
|
|
@@ -30,7 +30,7 @@ export declare class ContactUsComponent extends BaseSection implements OnInit {
|
|
|
30
30
|
shouldShowDropdown(field: any): boolean;
|
|
31
31
|
getCardStyle(): {};
|
|
32
32
|
getTextColor(bgColor: string): "#000000" | "#ffffff" | "#ffffff;";
|
|
33
|
-
getAlignment(): "justify-content-start" | "justify-content-
|
|
33
|
+
getAlignment(): "justify-content-start" | "justify-content-center" | "justify-content-end";
|
|
34
34
|
static ɵfac: i0.ɵɵFactoryDeclaration<ContactUsComponent, never>;
|
|
35
35
|
static ɵcmp: i0.ɵɵComponentDeclaration<ContactUsComponent, "simpo-contact-us", never, { "data": { "alias": "data"; "required": false; }; "index": { "alias": "index"; "required": false; }; "edit": { "alias": "edit"; "required": false; }; "delete": { "alias": "delete"; "required": false; }; "customClass": { "alias": "customClass"; "required": false; }; "nextComponentColor": { "alias": "nextComponentColor"; "required": false; }; }, {}, never, never, true, never>;
|
|
36
36
|
}
|
|
@@ -23,7 +23,7 @@ export declare class FaqSectionComponent extends BaseSection {
|
|
|
23
23
|
toggleContent(idx: number): void;
|
|
24
24
|
editSection(): void;
|
|
25
25
|
getScreenSize(): void;
|
|
26
|
-
getLayout(): "justify-content-start" | "justify-content-
|
|
26
|
+
getLayout(): "justify-content-start" | "justify-content-center" | "justify-content-end";
|
|
27
27
|
static ɵfac: i0.ɵɵFactoryDeclaration<FaqSectionComponent, never>;
|
|
28
28
|
static ɵcmp: i0.ɵɵComponentDeclaration<FaqSectionComponent, "simpo-faq-section", never, { "data": { "alias": "data"; "required": false; }; "index": { "alias": "index"; "required": false; }; "edit": { "alias": "edit"; "required": false; }; "delete": { "alias": "delete"; "required": false; }; "customClass": { "alias": "customClass"; "required": false; }; "nextComponentColor": { "alias": "nextComponentColor"; "required": false; }; }, {}, never, never, true, never>;
|
|
29
29
|
}
|
|
@@ -20,9 +20,9 @@ export declare class ImageSectionComponent extends BaseSection {
|
|
|
20
20
|
constructor(_eventService: EventsService);
|
|
21
21
|
ngOnInit(): void;
|
|
22
22
|
get canMergeNavbar(): boolean | undefined;
|
|
23
|
-
get getBackgroundOpacity(): "
|
|
23
|
+
get getBackgroundOpacity(): "1" | "0.7" | "0.5" | "0.3" | "0.2";
|
|
24
24
|
get stylesLayout(): LayOutModel;
|
|
25
|
-
opacityValue(value: OverlayValue): "
|
|
25
|
+
opacityValue(value: OverlayValue): "1" | "0.7" | "0.5" | "0.3" | "0.2";
|
|
26
26
|
editSection(): void;
|
|
27
27
|
redirectTo(): void;
|
|
28
28
|
static ɵfac: i0.ɵɵFactoryDeclaration<ImageSectionComponent, never>;
|
|
@@ -23,8 +23,8 @@ export declare class LogoShowcaseComponent extends BaseSection implements OnInit
|
|
|
23
23
|
constructor(_eventService: EventsService);
|
|
24
24
|
ngOnInit(): void;
|
|
25
25
|
get stylesLayout(): LayOutModel;
|
|
26
|
-
get animationDuration(): "3s" | "
|
|
27
|
-
get animationDirection(): "reverse" | "normal"
|
|
26
|
+
get animationDuration(): "3s" | "4s" | logoSpeed.Normal | "6s" | "5s";
|
|
27
|
+
get animationDirection(): logoDirection.Left | "reverse" | "normal";
|
|
28
28
|
get isMobile(): boolean;
|
|
29
29
|
get getPositionLayout(): PositionLayoutModal;
|
|
30
30
|
screenWidth: number;
|
|
@@ -24,7 +24,7 @@ export declare class NewTestimonialsComponent extends BaseSection {
|
|
|
24
24
|
idx: number;
|
|
25
25
|
getImageData(): import("../../styles/style.model").Image | undefined;
|
|
26
26
|
getImageUrl(): string | undefined;
|
|
27
|
-
getImageType(): "
|
|
27
|
+
getImageType(): "Image" | "Video";
|
|
28
28
|
getLength(): number;
|
|
29
29
|
editSection(): void;
|
|
30
30
|
stopPropagation(event: any): void;
|
|
@@ -23,8 +23,8 @@ export declare class PricingSectionComponent extends BaseSection {
|
|
|
23
23
|
getButtonId(): string;
|
|
24
24
|
editSection(): void;
|
|
25
25
|
redirectTo(data: any): void;
|
|
26
|
-
getClass(): "col-
|
|
27
|
-
getAlignment(): "justify-content-start" | "justify-content-
|
|
26
|
+
getClass(): "col-4" | "col-12" | "col-6" | "col-3";
|
|
27
|
+
getAlignment(): "justify-content-start" | "justify-content-center" | "justify-content-end";
|
|
28
28
|
static ɵfac: i0.ɵɵFactoryDeclaration<PricingSectionComponent, never>;
|
|
29
29
|
static ɵcmp: i0.ɵɵComponentDeclaration<PricingSectionComponent, "simpo-pricing-section", never, { "data": { "alias": "data"; "required": false; }; "index": { "alias": "index"; "required": false; }; "edit": { "alias": "edit"; "required": false; }; "customClass": { "alias": "customClass"; "required": false; }; "delete": { "alias": "delete"; "required": false; }; "nextComponentColor": { "alias": "nextComponentColor"; "required": false; }; }, {}, never, never, true, never>;
|
|
30
30
|
}
|
|
@@ -2,20 +2,15 @@ import { OrderedItems } from '../ecommerce/styles/OrderedItems.modal';
|
|
|
2
2
|
import { Product } from '../ecommerce/styles/product.modal';
|
|
3
3
|
import { RestService } from './rest.service';
|
|
4
4
|
import { StorageServiceService } from './storage.service';
|
|
5
|
-
import { Router } from '@angular/router';
|
|
6
|
-
import { StorageLike } from '../services/storage-like';
|
|
7
5
|
import * as i0 from "@angular/core";
|
|
8
6
|
export declare class CartService {
|
|
9
7
|
private readonly storageService;
|
|
10
8
|
private readonly restService;
|
|
11
|
-
|
|
12
|
-
private storage;
|
|
13
|
-
constructor(storageService: StorageServiceService, restService: RestService, router: Router, storage: StorageLike);
|
|
9
|
+
constructor(storageService: StorageServiceService, restService: RestService);
|
|
14
10
|
addItemFromCartPage(product: OrderedItems, userCart: any): import("rxjs").Observable<Object>;
|
|
15
11
|
addItemFromWishlistPage(product: OrderedItems, userWishlist: any): import("rxjs").Observable<Object>;
|
|
16
12
|
removeItemFromWishlistPage(product: OrderedItems, userWishlist: any): import("rxjs").Observable<Object>;
|
|
17
13
|
addItemToCart(product: Product | OrderedItems, varientId?: string): void | IDBRequest<IDBValidKey>;
|
|
18
|
-
captureCartAnalytics(productId: string, type: 'ADD_TO_CART' | 'REMOVE_FROM_CART', variantId?: string): void;
|
|
19
14
|
addItemToFavourite(product: Product, varientId?: string): void;
|
|
20
15
|
addItemToTrial(product: Product, varientId?: string): Promise<boolean>;
|
|
21
16
|
addItemToFavFromCart(product: OrderedItems): void;
|
|
@@ -23,7 +18,6 @@ export declare class CartService {
|
|
|
23
18
|
removeItemFromFavourite(varientId: string): void;
|
|
24
19
|
removeItemFromCart(product: Product | OrderedItems): void;
|
|
25
20
|
private objectMapper;
|
|
26
|
-
trackUser(event: any, eventType: string): void;
|
|
27
21
|
static ɵfac: i0.ɵɵFactoryDeclaration<CartService, never>;
|
|
28
22
|
static ɵprov: i0.ɵɵInjectableDeclaration<CartService>;
|
|
29
23
|
}
|
|
@@ -135,7 +135,6 @@ export declare class RestService implements OnDestroy {
|
|
|
135
135
|
createLead(payload: any): Observable<Object>;
|
|
136
136
|
getAppointmentPaymentStatus(orderId: any): Observable<Object>;
|
|
137
137
|
getOtpForLogin(payload: any): Observable<Object>;
|
|
138
|
-
flush(eventsToSend: any): void;
|
|
139
138
|
static ɵfac: i0.ɵɵFactoryDeclaration<RestService, never>;
|
|
140
139
|
static ɵprov: i0.ɵɵInjectableDeclaration<RestService>;
|
|
141
140
|
}
|
package/lib/styles/index.d.ts
CHANGED
package/package.json
CHANGED
package/public-api.d.ts
CHANGED
|
@@ -69,6 +69,7 @@ export * from './lib/ecommerce/sections/returns-calculator/returns-calculator.co
|
|
|
69
69
|
export * from './lib/ecommerce/sections/book-appointment/book-appointment.component';
|
|
70
70
|
export * from './lib/sections/appointment-form/appointment-booking/appointment-booking/appointment-booking.component';
|
|
71
71
|
export * from './lib/sections/video-grid-section/video-grid-section.component';
|
|
72
|
+
export * from './lib/ecommerce/sections/refer-earn/refer-earn.component';
|
|
72
73
|
export * from './lib/sections/countdown-banner/countdown-banner.component';
|
|
73
74
|
export * from './lib/sections/overlapping-image/overlapping-image.component';
|
|
74
75
|
export * from './lib/sections/image-background/image-background/image-background.component';
|
|
Binary file
|
|
@@ -1,160 +0,0 @@
|
|
|
1
|
-
import { Inject, Injectable, PLATFORM_ID } from '@angular/core';
|
|
2
|
-
import { interval } from 'rxjs';
|
|
3
|
-
import { DOCUMENT } from '@angular/common';
|
|
4
|
-
import { API_URL } from '../tokens/api-token';
|
|
5
|
-
import { LOCAL_STORAGE } from '../services/local-storage.token';
|
|
6
|
-
import { NavigationEnd } from '@angular/router';
|
|
7
|
-
import * as i0 from "@angular/core";
|
|
8
|
-
import * as i1 from "@angular/common/http";
|
|
9
|
-
import * as i2 from "./storage.service";
|
|
10
|
-
import * as i3 from "@angular/router";
|
|
11
|
-
export class AnalyticsService {
|
|
12
|
-
constructor(http, platformId, document, storageService, API_URL, storage, router) {
|
|
13
|
-
this.http = http;
|
|
14
|
-
this.platformId = platformId;
|
|
15
|
-
this.document = document;
|
|
16
|
-
this.storageService = storageService;
|
|
17
|
-
this.API_URL = API_URL;
|
|
18
|
-
this.storage = storage;
|
|
19
|
-
this.router = router;
|
|
20
|
-
this.eventQueue = [];
|
|
21
|
-
this.BATCH_SIZE = 10;
|
|
22
|
-
this.FLUSH_INTERVAL = 5000; // 5 seconds
|
|
23
|
-
// ===== Duration Tracking =====
|
|
24
|
-
this.currentPage = '';
|
|
25
|
-
this.currentContextMetadata = null;
|
|
26
|
-
this.contextStartTime = null;
|
|
27
|
-
this.contextActiveTime = 0;
|
|
28
|
-
this.currentEvent = '';
|
|
29
|
-
this.startAutoFlush();
|
|
30
|
-
this.listenToUnload();
|
|
31
|
-
this.listenToRouteChange();
|
|
32
|
-
}
|
|
33
|
-
startNewContext(metadata, event) {
|
|
34
|
-
this.closeCurrentContext(); // close previous filter session
|
|
35
|
-
this.currentContextMetadata = metadata;
|
|
36
|
-
this.contextStartTime = Date.now();
|
|
37
|
-
this.contextActiveTime = 0;
|
|
38
|
-
this.currentEvent = event;
|
|
39
|
-
}
|
|
40
|
-
getCurrentContext() {
|
|
41
|
-
return this.currentContextMetadata;
|
|
42
|
-
}
|
|
43
|
-
closeCurrentContext(useBeacon = false) {
|
|
44
|
-
if (!this.currentContextMetadata)
|
|
45
|
-
return;
|
|
46
|
-
if (this.contextStartTime) {
|
|
47
|
-
this.contextActiveTime += Date.now() - this.contextStartTime;
|
|
48
|
-
}
|
|
49
|
-
const user = this.storageService.getUser();
|
|
50
|
-
const requestFrom = this.storage.getItem('REQUEST_FROM');
|
|
51
|
-
if (!user || requestFrom === 'ECOMMERCE')
|
|
52
|
-
return;
|
|
53
|
-
const event = {
|
|
54
|
-
businessId: this.storage.getItem('bId') || '',
|
|
55
|
-
businessName: this.storage.getItem('bName') || '',
|
|
56
|
-
userId: user.userId,
|
|
57
|
-
createdTimeStamp: new Date().toISOString(),
|
|
58
|
-
page: this.currentPage,
|
|
59
|
-
duration: this.contextActiveTime,
|
|
60
|
-
eventType: this.currentEvent,
|
|
61
|
-
metadata: this.currentContextMetadata
|
|
62
|
-
};
|
|
63
|
-
if (useBeacon) {
|
|
64
|
-
fetch(this.API_URL + 'ecommerce/analytics/batch', {
|
|
65
|
-
method: 'POST',
|
|
66
|
-
body: JSON.stringify([event]),
|
|
67
|
-
headers: {
|
|
68
|
-
'Content-Type': 'application/json'
|
|
69
|
-
},
|
|
70
|
-
keepalive: true
|
|
71
|
-
});
|
|
72
|
-
}
|
|
73
|
-
else {
|
|
74
|
-
this.eventQueue.push(event);
|
|
75
|
-
}
|
|
76
|
-
this.currentContextMetadata = null;
|
|
77
|
-
this.contextStartTime = null;
|
|
78
|
-
this.contextActiveTime = 0;
|
|
79
|
-
this.currentEvent = '';
|
|
80
|
-
}
|
|
81
|
-
// ===============================
|
|
82
|
-
// 🔥 ROUTE CHANGE LISTENER
|
|
83
|
-
// ===============================
|
|
84
|
-
listenToRouteChange() {
|
|
85
|
-
this.router.events.subscribe(event => {
|
|
86
|
-
if (event instanceof NavigationEnd) {
|
|
87
|
-
// Close previous page context
|
|
88
|
-
this.closeCurrentContext();
|
|
89
|
-
this.currentPage = this.router.url.split('?')[0];
|
|
90
|
-
this.contextStartTime = Date.now();
|
|
91
|
-
this.contextActiveTime = 0;
|
|
92
|
-
}
|
|
93
|
-
});
|
|
94
|
-
}
|
|
95
|
-
trackUser(event, eventType) {
|
|
96
|
-
const user = this.storageService.getUser();
|
|
97
|
-
const requestFrom = this.storage.getItem('REQUEST_FROM');
|
|
98
|
-
if (user === null || requestFrom === 'ECOMMERCE') {
|
|
99
|
-
return;
|
|
100
|
-
}
|
|
101
|
-
const page = this.router.url.split('?')[0];
|
|
102
|
-
this.eventQueue.push({
|
|
103
|
-
businessId: this.storage.getItem('bId') || '',
|
|
104
|
-
businessName: this.storage.getItem('bName') || '',
|
|
105
|
-
userId: user?.userId,
|
|
106
|
-
createdTimeStamp: new Date().toISOString(),
|
|
107
|
-
page: page,
|
|
108
|
-
metadata: event,
|
|
109
|
-
eventType: eventType
|
|
110
|
-
});
|
|
111
|
-
if (this.eventQueue.length >= this.BATCH_SIZE) {
|
|
112
|
-
this.flush();
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
startAutoFlush() {
|
|
116
|
-
interval(this.FLUSH_INTERVAL).subscribe(() => {
|
|
117
|
-
if (this.eventQueue.length > 0) {
|
|
118
|
-
this.flush();
|
|
119
|
-
}
|
|
120
|
-
});
|
|
121
|
-
}
|
|
122
|
-
flush() {
|
|
123
|
-
const eventsToSend = [...this.eventQueue];
|
|
124
|
-
this.eventQueue = [];
|
|
125
|
-
this.http.post(this.API_URL + 'ecommerce/analytics/batch', eventsToSend)
|
|
126
|
-
.subscribe({ error: () => { } });
|
|
127
|
-
}
|
|
128
|
-
listenToUnload() {
|
|
129
|
-
this.document.addEventListener('visibilitychange', () => {
|
|
130
|
-
if (this.document.visibilityState === 'visible') {
|
|
131
|
-
this.contextStartTime = Date.now();
|
|
132
|
-
}
|
|
133
|
-
else {
|
|
134
|
-
if (this.contextStartTime) {
|
|
135
|
-
this.contextActiveTime += Date.now() - this.contextStartTime;
|
|
136
|
-
}
|
|
137
|
-
this.closeCurrentContext(true);
|
|
138
|
-
}
|
|
139
|
-
});
|
|
140
|
-
}
|
|
141
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AnalyticsService, deps: [{ token: i1.HttpClient }, { token: PLATFORM_ID }, { token: DOCUMENT }, { token: i2.StorageServiceService }, { token: API_URL }, { token: LOCAL_STORAGE }, { token: i3.Router }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
142
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AnalyticsService, providedIn: 'root' }); }
|
|
143
|
-
}
|
|
144
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AnalyticsService, decorators: [{
|
|
145
|
-
type: Injectable,
|
|
146
|
-
args: [{ providedIn: 'root' }]
|
|
147
|
-
}], ctorParameters: () => [{ type: i1.HttpClient }, { type: Object, decorators: [{
|
|
148
|
-
type: Inject,
|
|
149
|
-
args: [PLATFORM_ID]
|
|
150
|
-
}] }, { type: Document, decorators: [{
|
|
151
|
-
type: Inject,
|
|
152
|
-
args: [DOCUMENT]
|
|
153
|
-
}] }, { type: i2.StorageServiceService }, { type: undefined, decorators: [{
|
|
154
|
-
type: Inject,
|
|
155
|
-
args: [API_URL]
|
|
156
|
-
}] }, { type: undefined, decorators: [{
|
|
157
|
-
type: Inject,
|
|
158
|
-
args: [LOCAL_STORAGE]
|
|
159
|
-
}] }, { type: i3.Router }] });
|
|
160
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5hbHl0aWNzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL3NlcnZpY2VzL2FuYWx5dGljcy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVoRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2hDLE9BQU8sRUFBRSxRQUFRLEVBQXFCLE1BQU0saUJBQWlCLENBQUM7QUFFOUQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRzlDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNoRSxPQUFPLEVBQUUsYUFBYSxFQUFVLE1BQU0saUJBQWlCLENBQUM7Ozs7O0FBR3hELE1BQU0sT0FBTyxnQkFBZ0I7SUFhekIsWUFBb0IsSUFBZ0IsRUFDSCxVQUFrQixFQUNyQixRQUFrQixFQUMzQixjQUFxQyxFQUM3QixPQUFlLEVBQ1QsT0FBb0IsRUFDM0MsTUFBYztRQU5OLFNBQUksR0FBSixJQUFJLENBQVk7UUFDSCxlQUFVLEdBQVYsVUFBVSxDQUFRO1FBQ3JCLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDM0IsbUJBQWMsR0FBZCxjQUFjLENBQXVCO1FBQzdCLFlBQU8sR0FBUCxPQUFPLENBQVE7UUFDVCxZQUFPLEdBQVAsT0FBTyxDQUFhO1FBQzNDLFdBQU0sR0FBTixNQUFNLENBQVE7UUFqQmxCLGVBQVUsR0FBVSxFQUFFLENBQUM7UUFDdkIsZUFBVSxHQUFHLEVBQUUsQ0FBQztRQUNoQixtQkFBYyxHQUFHLElBQUksQ0FBQyxDQUFDLFlBQVk7UUFFM0MsZ0NBQWdDO1FBQ3hCLGdCQUFXLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLDJCQUFzQixHQUFRLElBQUksQ0FBQztRQUNuQyxx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QUFDLGlCQUFpQixJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7Z0JBQ2pFLENBQUM7Z0JBRUQsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ25DLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7K0dBNUpRLGdCQUFnQiw0Q0FjYixXQUFXLGFBQ1gsUUFBUSxrREFFUixPQUFPLGFBQ1AsYUFBYTttSEFsQmhCLGdCQUFnQixjQURILE1BQU07OzRGQUNuQixnQkFBZ0I7a0JBRDVCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFOzswQkFlekIsTUFBTTsyQkFBQyxXQUFXOzswQkFDbEIsTUFBTTsyQkFBQyxRQUFROzswQkFFZixNQUFNOzJCQUFDLE9BQU87OzBCQUNkLE1BQU07MkJBQUMsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgUExBVEZPUk1fSUQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgaW50ZXJ2YWwgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgRE9DVU1FTlQsIGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgU3RvcmFnZVNlcnZpY2VTZXJ2aWNlIH0gZnJvbSAnLi9zdG9yYWdlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBUElfVVJMIH0gZnJvbSAnLi4vdG9rZW5zL2FwaS10b2tlbic7XHJcbmltcG9ydCB7IFVzZXIgfSBmcm9tICcuLi9lY29tbWVyY2Uvc3R5bGVzL3VzZXIubW9kYWwnO1xyXG5pbXBvcnQgeyBTdG9yYWdlTGlrZSB9IGZyb20gJy4uL3NlcnZpY2VzL3N0b3JhZ2UtbGlrZSc7XHJcbmltcG9ydCB7IExPQ0FMX1NUT1JBR0UgfSBmcm9tICcuLi9zZXJ2aWNlcy9sb2NhbC1zdG9yYWdlLnRva2VuJztcclxuaW1wb3J0IHsgTmF2aWdhdGlvbkVuZCwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuXHJcbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXHJcbmV4cG9ydCBjbGFzcyBBbmFseXRpY3NTZXJ2aWNlIHtcclxuXHJcbiAgICBwcml2YXRlIGV2ZW50UXVldWU6IGFueVtdID0gW107XHJcbiAgICBwcml2YXRlIEJBVENIX1NJWkUgPSAxMDtcclxuICAgIHByaXZhdGUgRkxVU0hfSU5URVJWQUwgPSA1MDAwOyAvLyA1IHNlY29uZHNcclxuXHJcbiAgICAvLyA9PT09PSBEdXJhdGlvbiBUcmFja2luZyA9PT09PVxyXG4gICAgcHJpdmF0ZSBjdXJyZW50UGFnZSA9ICcnO1xyXG4gICAgcHJpdmF0ZSBjdXJyZW50Q29udGV4dE1ldGFkYXRhOiBhbnkgPSBudWxsO1xyXG4gICAgcHJpdmF0ZSBjb250ZXh0U3RhcnRUaW1lOiBudW1iZXIgfCBudWxsID0gbnVsbDtcclxuICAgIHByaXZhdGUgY29udGV4dEFjdGl2ZVRpbWUgPSAwO1xyXG4gICAgcHJpdmF0ZSBjdXJyZW50RXZlbnQgPSAnJztcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXHJcbiAgICAgICAgQEluamVjdChQTEFURk9STV9JRCkgcHJpdmF0ZSBwbGF0Zm9ybUlkOiBPYmplY3QsXHJcbiAgICAgICAgQEluamVjdChET0NVTUVOVCkgcHJpdmF0ZSBkb2N1bWVudDogRG9jdW1lbnQsXHJcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBzdG9yYWdlU2VydmljZTogU3RvcmFnZVNlcnZpY2VTZXJ2aWNlLFxyXG4gICAgICAgIEBJbmplY3QoQVBJX1VSTCkgcHJpdmF0ZSBBUElfVVJMOiBzdHJpbmcsXHJcbiAgICAgICAgQEluamVjdChMT0NBTF9TVE9SQUdFKSBwcml2YXRlIHN0b3JhZ2U6IFN0b3JhZ2VMaWtlLFxyXG4gICAgICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXJcclxuICAgICkge1xyXG4gICAgICAgIHRoaXMuc3RhcnRBdXRvRmx1c2goKTtcclxuICAgICAgICB0aGlzLmxpc3RlblRvVW5sb2FkKCk7XHJcbiAgICAgICAgdGhpcy5saXN0ZW5Ub1JvdXRlQ2hhbmdlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhcnROZXdDb250ZXh0KG1ldGFkYXRhOiBhbnksIGV2ZW50OiBzdHJpbmcpIHtcclxuICAgICAgICB0aGlzLmNsb3NlQ3VycmVudENvbnRleHQoKTsgICAvLyBjbG9zZSBwcmV2aW91cyBmaWx0ZXIgc2Vzc2lvblxyXG5cclxuICAgICAgICB0aGlzLmN1cnJlbnRDb250ZXh0TWV0YWRhdGEgPSBtZXRhZGF0YTtcclxuICAgICAgICB0aGlzLmNvbnRleHRTdGFydFRpbWUgPSBEYXRlLm5vdygpO1xyXG4gICAgICAgIHRoaXMuY29udGV4dEFjdGl2ZVRpbWUgPSAwO1xyXG4gICAgICAgIHRoaXMuY3VycmVudEV2ZW50ID0gZXZlbnQ7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0Q3VycmVudENvbnRleHQoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudENvbnRleHRNZXRhZGF0YTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGNsb3NlQ3VycmVudENvbnRleHQodXNlQmVhY29uOiBib29sZWFuID0gZmFsc2UpIHtcclxuXHJcbiAgICAgICAgaWYgKCF0aGlzLmN1cnJlbnRDb250ZXh0TWV0YWRhdGEpIHJldHVybjtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuY29udGV4dFN0YXJ0VGltZSkge1xyXG4gICAgICAgICAgICB0aGlzLmNvbnRleHRBY3RpdmVUaW1lICs9IERhdGUubm93KCkgLSB0aGlzLmNvbnRleHRTdGFydFRpbWU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCB1c2VyOiBVc2VyIHwgbnVsbCA9IHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0VXNlcigpO1xyXG4gICAgICAgIGNvbnN0IHJlcXVlc3RGcm9tID0gdGhpcy5zdG9yYWdlLmdldEl0ZW0oJ1JFUVVFU1RfRlJPTScpO1xyXG5cclxuICAgICAgICBpZiAoIXVzZXIgfHwgcmVxdWVzdEZyb20gPT09ICdFQ09NTUVSQ0UnKSByZXR1cm47XHJcblxyXG4gICAgICAgIGNvbnN0IGV2ZW50ID0ge1xyXG4gICAgICAgICAgICBidXNpbmVzc0lkOiB0aGlzLnN0b3JhZ2UuZ2V0SXRlbSgnYklkJykgfHwgJycsXHJcbiAgICAgICAgICAgIGJ1c2luZXNzTmFtZTogdGhpcy5zdG9yYWdlLmdldEl0ZW0oJ2JOYW1lJykgfHwgJycsXHJcbiAgICAgICAgICAgIHVzZXJJZDogdXNlci51c2VySWQsXHJcbiAgICAgICAgICAgIGNyZWF0ZWRUaW1lU3RhbXA6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcclxuICAgICAgICAgICAgcGFnZTogdGhpcy5jdXJyZW50UGFnZSxcclxuICAgICAgICAgICAgZHVyYXRpb246IHRoaXMuY29udGV4dEFjdGl2ZVRpbWUsXHJcbiAgICAgICAgICAgIGV2ZW50VHlwZTogIHRoaXMuY3VycmVudEV2ZW50LFxyXG4gICAgICAgICAgICBtZXRhZGF0YTogdGhpcy5jdXJyZW50Q29udGV4dE1ldGFkYXRhXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgaWYgKHVzZUJlYWNvbikge1xyXG5cclxuICAgICAgICAgICBmZXRjaCh0aGlzLkFQSV9VUkwgKyAnZWNvbW1lcmNlL2FuYWx5dGljcy9iYXRjaCcsIHtcclxuICAgICAgICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLFxyXG4gICAgICAgICAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoW2V2ZW50XSksXHJcbiAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XHJcbiAgICAgICAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAga2VlcGFsaXZlOiB0cnVlXHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmV2ZW50UXVldWUucHVzaChldmVudCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmN1cnJlbnRDb250ZXh0TWV0YWRhdGEgPSBudWxsO1xyXG4gICAgICAgIHRoaXMuY29udGV4dFN0YXJ0VGltZSA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5jb250ZXh0QWN0aXZlVGltZSA9IDA7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50RXZlbnQgPSAnJztcclxuICAgIH1cclxuXHJcbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcbiAgICAvLyDwn5SlIFJPVVRFIENIQU5HRSBMSVNURU5FUlxyXG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxyXG4gICAgcHJpdmF0ZSBsaXN0ZW5Ub1JvdXRlQ2hhbmdlKCkge1xyXG4gICAgICAgIHRoaXMucm91dGVyLmV2ZW50cy5zdWJzY3JpYmUoZXZlbnQgPT4ge1xyXG4gICAgICAgICAgICBpZiAoZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSB7XHJcblxyXG4gICAgICAgICAgICAgICAgLy8gQ2xvc2UgcHJldmlvdXMgcGFnZSBjb250ZXh0XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNsb3NlQ3VycmVudENvbnRleHQoKTtcclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRQYWdlID0gdGhpcy5yb3V0ZXIudXJsLnNwbGl0KCc/JylbMF07XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHRTdGFydFRpbWUgPSBEYXRlLm5vdygpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0QWN0aXZlVGltZSA9IDA7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICB0cmFja1VzZXIoZXZlbnQ6IGFueSwgZXZlbnRUeXBlOiBzdHJpbmcpIHtcclxuICAgICAgICBjb25zdCB1c2VyOiBVc2VyIHwgbnVsbCA9IHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0VXNlcigpO1xyXG4gICAgICAgIGNvbnN0IHJlcXVlc3RGcm9tID0gdGhpcy5zdG9yYWdlLmdldEl0ZW0oJ1JFUVVFU1RfRlJPTScpXHJcblxyXG4gICAgICAgIGlmICh1c2VyID09PSBudWxsIHx8IHJlcXVlc3RGcm9tID09PSAnRUNPTU1FUkNFJykge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBwYWdlID0gdGhpcy5yb3V0ZXIudXJsLnNwbGl0KCc/JylbMF07XHJcblxyXG4gICAgICAgIHRoaXMuZXZlbnRRdWV1ZS5wdXNoKHtcclxuICAgICAgICAgICAgYnVzaW5lc3NJZDogdGhpcy5zdG9yYWdlLmdldEl0ZW0oJ2JJZCcpIHx8ICcnLFxyXG4gICAgICAgICAgICBidXNpbmVzc05hbWU6IHRoaXMuc3RvcmFnZS5nZXRJdGVtKCdiTmFtZScpIHx8ICcnLFxyXG4gICAgICAgICAgICB1c2VySWQ6IHVzZXI/LnVzZXJJZCxcclxuICAgICAgICAgICAgY3JlYXRlZFRpbWVTdGFtcDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxyXG4gICAgICAgICAgICBwYWdlOiBwYWdlLFxyXG4gICAgICAgICAgICBtZXRhZGF0YTogZXZlbnQsXHJcbiAgICAgICAgICAgIGV2ZW50VHlwZTogZXZlbnRUeXBlXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmV2ZW50UXVldWUubGVuZ3RoID49IHRoaXMuQkFUQ0hfU0laRSkge1xyXG4gICAgICAgICAgICB0aGlzLmZsdXNoKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgc3RhcnRBdXRvRmx1c2goKSB7XHJcbiAgICAgICAgaW50ZXJ2YWwodGhpcy5GTFVTSF9JTlRFUlZBTCkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuZXZlbnRRdWV1ZS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmZsdXNoKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGZsdXNoKCkge1xyXG4gICAgICAgIGNvbnN0IGV2ZW50c1RvU2VuZCA9IFsuLi50aGlzLmV2ZW50UXVldWVdO1xyXG4gICAgICAgIHRoaXMuZXZlbnRRdWV1ZSA9IFtdO1xyXG5cclxuICAgICAgICB0aGlzLmh0dHAucG9zdCh0aGlzLkFQSV9VUkwgKyAnZWNvbW1lcmNlL2FuYWx5dGljcy9iYXRjaCcsIGV2ZW50c1RvU2VuZClcclxuICAgICAgICAgICAgLnN1YnNjcmliZSh7IGVycm9yOiAoKSA9PiB7IH0gfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBsaXN0ZW5Ub1VubG9hZCgpIHtcclxuICAgICAgICB0aGlzLmRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3Zpc2liaWxpdHljaGFuZ2UnLCAoKSA9PiB7XHJcblxyXG4gICAgICAgICAgICBpZiAodGhpcy5kb2N1bWVudC52aXNpYmlsaXR5U3RhdGUgPT09ICd2aXNpYmxlJykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0U3RhcnRUaW1lID0gRGF0ZS5ub3coKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5jb250ZXh0U3RhcnRUaW1lKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0QWN0aXZlVGltZSArPSBEYXRlLm5vdygpIC0gdGhpcy5jb250ZXh0U3RhcnRUaW1lO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMuY2xvc2VDdXJyZW50Q29udGV4dCh0cnVlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG59Il19
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import { HttpClient } from '@angular/common/http';
|
|
2
|
-
import { StorageServiceService } from './storage.service';
|
|
3
|
-
import { StorageLike } from '../services/storage-like';
|
|
4
|
-
import { Router } from '@angular/router';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
export declare class AnalyticsService {
|
|
7
|
-
private http;
|
|
8
|
-
private platformId;
|
|
9
|
-
private document;
|
|
10
|
-
private readonly storageService;
|
|
11
|
-
private API_URL;
|
|
12
|
-
private storage;
|
|
13
|
-
private router;
|
|
14
|
-
private eventQueue;
|
|
15
|
-
private BATCH_SIZE;
|
|
16
|
-
private FLUSH_INTERVAL;
|
|
17
|
-
private currentPage;
|
|
18
|
-
private currentContextMetadata;
|
|
19
|
-
private contextStartTime;
|
|
20
|
-
private contextActiveTime;
|
|
21
|
-
private currentEvent;
|
|
22
|
-
constructor(http: HttpClient, platformId: Object, document: Document, storageService: StorageServiceService, API_URL: string, storage: StorageLike, router: Router);
|
|
23
|
-
startNewContext(metadata: any, event: string): void;
|
|
24
|
-
getCurrentContext(): any;
|
|
25
|
-
private closeCurrentContext;
|
|
26
|
-
private listenToRouteChange;
|
|
27
|
-
trackUser(event: any, eventType: string): void;
|
|
28
|
-
private startAutoFlush;
|
|
29
|
-
private flush;
|
|
30
|
-
private listenToUnload;
|
|
31
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<AnalyticsService, never>;
|
|
32
|
-
static ɵprov: i0.ɵɵInjectableDeclaration<AnalyticsService>;
|
|
33
|
-
}
|
|
Binary file
|