@naniteninja/dashboard-components-lib 2.0.2 → 2.0.4

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.
@@ -1,20 +1,20 @@
1
1
  import * as i1 from '@angular/common';
2
2
  import { CommonModule, formatDate, formatNumber } from '@angular/common';
3
3
  import * as i0 from '@angular/core';
4
- import { EventEmitter, Output, Input, ViewChild, Optional, Inject, Component, CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, NgModule, LOCALE_ID, Injectable, Pipe, inject, ChangeDetectorRef, ElementRef, Renderer2, InjectionToken, NgZone, ViewEncapsulation, ContentChild } from '@angular/core';
4
+ import { EventEmitter, Output, Input, ViewChild, Optional, Inject, Component, ChangeDetectionStrategy, NgModule, LOCALE_ID, Injectable, Pipe, inject, ChangeDetectorRef, ElementRef, Renderer2, InjectionToken, NgZone, ViewEncapsulation, ContentChild, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
5
5
  import { MatButtonModule } from '@angular/material/button';
6
6
  import { MatMenuModule } from '@angular/material/menu';
7
- import * as i3 from '@ngx-translate/core';
7
+ import * as i1$1 from '@ngx-translate/core';
8
8
  import { TranslateModule } from '@ngx-translate/core';
9
- import { interval, take, takeUntil, Subject, map, debounceTime, distinctUntilChanged, switchMap, first, BehaviorSubject, animationFrameScheduler, defer, finalize, shareReplay, from, concatMap, Observable, of } from 'rxjs';
9
+ import { interval, take, takeUntil, Subject, map, debounceTime, distinctUntilChanged, switchMap, first, of, BehaviorSubject, animationFrameScheduler, defer, finalize, shareReplay, from, concatMap, Observable } from 'rxjs';
10
10
  import * as i2 from '@naniteninja/ionic-lib';
11
- import { MODAL_DATA, BaseCardModule, ButtonsModule, PopperModule, LibModalComponent, InputFieldModule, DirectiveModule, AvatarComponent, FormFieldModule, BaseComponent, DateRangeValidator, TimeRangeValidator, LibMapModule, DashedCheckboxModule, InputDateFieldModule, InputFieldSelectModule, InputTimeFieldModule, LibModalModule, LibErrorMessageComponent, SectionSeparatorComponent, FormFieldType as FormFieldType$1, PopupModalService, ToggleModule, ImageCardModule, PipeModule } from '@naniteninja/ionic-lib';
11
+ import { MODAL_DATA, BaseCardModule, ButtonsModule, PopperModule, LibModalComponent, DirectiveModule, AvatarComponent, InputFieldModule, FormFieldModule, BaseComponent, DateRangeValidator, TimeRangeValidator, LibMapModule, DashedCheckboxModule, InputDateFieldModule, InputFieldSelectModule, InputTimeFieldModule, LibModalModule, LibErrorMessageComponent, SectionSeparatorComponent, FormFieldType as FormFieldType$1, PopupModalService, ToggleModule, ImageCardModule, PipeModule } from '@naniteninja/ionic-lib';
12
12
  import { trigger, transition, style, query, sequence, animate, stagger } from '@angular/animations';
13
- import * as i1$1 from '@angular/forms';
14
- import { FormControl, ReactiveFormsModule, FormsModule, Validators, FormGroup, NG_VALUE_ACCESSOR } from '@angular/forms';
15
13
  import { addDays, set, isSameDay, getHours, isEqual, startOfDay, isBefore, isSameWeek, getDay, differenceInMinutes, getMinutes, addMinutes, endOfDay } from 'date-fns';
16
14
  import * as i2$1 from '@ionic/angular';
17
15
  import { IonicModule } from '@ionic/angular';
16
+ import * as i1$2 from '@angular/forms';
17
+ import { FormControl, FormsModule, ReactiveFormsModule, Validators, FormGroup, NG_VALUE_ACCESSOR } from '@angular/forms';
18
18
  import { RRule } from 'rrule';
19
19
  import { Weekday } from 'rrule/dist/esm/weekday';
20
20
  import * as i4 from '@angular/material/icon';
@@ -33,6 +33,221 @@ import { TraitVisualComponent } from '@naniteninja/trait-visual';
33
33
  import { register } from 'swiper/element/bundle';
34
34
  import moment from 'moment';
35
35
 
36
+ var AgendaItemType;
37
+ (function (AgendaItemType) {
38
+ AgendaItemType["DAY"] = "day";
39
+ AgendaItemType["AD"] = "ad";
40
+ })(AgendaItemType || (AgendaItemType = {}));
41
+
42
+ var AlertStatusFields;
43
+ (function (AlertStatusFields) {
44
+ AlertStatusFields["upcomingDates"] = "upcomingDates";
45
+ AlertStatusFields["compatibilityProfileTrait"] = "compatibilityProfileTrait";
46
+ AlertStatusFields["compatibilityProfileSpider"] = "compatibilityProfileSpider";
47
+ AlertStatusFields["chatHandoff"] = "chatHandoff";
48
+ AlertStatusFields["chatProgress"] = "chatProgress";
49
+ AlertStatusFields["chatMeetupAgenda"] = "chatMeetupAgenda";
50
+ AlertStatusFields["face"] = "face";
51
+ })(AlertStatusFields || (AlertStatusFields = {}));
52
+
53
+ var AutoDelegationEventTypes;
54
+ (function (AutoDelegationEventTypes) {
55
+ AutoDelegationEventTypes["Click"] = "click";
56
+ AutoDelegationEventTypes["Countdown"] = "countdown";
57
+ })(AutoDelegationEventTypes || (AutoDelegationEventTypes = {}));
58
+
59
+ var AutoDelegationEventValue;
60
+ (function (AutoDelegationEventValue) {
61
+ AutoDelegationEventValue["CountdownCompleted"] = "countdown-completed";
62
+ AutoDelegationEventValue["RequestRejected"] = "request-rejected";
63
+ AutoDelegationEventValue["RequestAcceped"] = "request-accepted";
64
+ })(AutoDelegationEventValue || (AutoDelegationEventValue = {}));
65
+
66
+ var CalendarAccountEnum;
67
+ (function (CalendarAccountEnum) {
68
+ CalendarAccountEnum["GOOGLE"] = "Google";
69
+ CalendarAccountEnum["MICROSOFT"] = "Microsoft";
70
+ })(CalendarAccountEnum || (CalendarAccountEnum = {}));
71
+
72
+ var CalendarAccountIconsEnum;
73
+ (function (CalendarAccountIconsEnum) {
74
+ CalendarAccountIconsEnum["Google"] = "googleCalender";
75
+ CalendarAccountIconsEnum["Microsoft"] = "microsoft";
76
+ })(CalendarAccountIconsEnum || (CalendarAccountIconsEnum = {}));
77
+
78
+ var CircleVariable;
79
+ (function (CircleVariable) {
80
+ CircleVariable["Partial"] = "partial";
81
+ CircleVariable["Complete"] = "complete";
82
+ })(CircleVariable || (CircleVariable = {}));
83
+
84
+ var ClientDashboardTabs;
85
+ (function (ClientDashboardTabs) {
86
+ ClientDashboardTabs[ClientDashboardTabs["ChatScheduler"] = 0] = "ChatScheduler";
87
+ ClientDashboardTabs[ClientDashboardTabs["ChatCompatibility"] = 1] = "ChatCompatibility";
88
+ ClientDashboardTabs[ClientDashboardTabs["ChatHandoff"] = 2] = "ChatHandoff";
89
+ })(ClientDashboardTabs || (ClientDashboardTabs = {}));
90
+
91
+ var ClientHomeComponent;
92
+ (function (ClientHomeComponent) {
93
+ ClientHomeComponent["ChatCompatibility"] = "ChatCompatibility";
94
+ ClientHomeComponent["ChatHandoff"] = "ChatHandoff";
95
+ ClientHomeComponent["ChatScheduler"] = "ChatScheduler";
96
+ ClientHomeComponent["ClientMatchSpiderChart"] = "ClientMatchSpiderChart";
97
+ ClientHomeComponent["ClientMatchTraitChart"] = "ClientMatchTraitChart";
98
+ })(ClientHomeComponent || (ClientHomeComponent = {}));
99
+
100
+ var CONVERSATION_FLAG;
101
+ (function (CONVERSATION_FLAG) {
102
+ CONVERSATION_FLAG["UNRESPONSIVE"] = "unresponsive";
103
+ CONVERSATION_FLAG["REDELEGATION"] = "redelegation";
104
+ })(CONVERSATION_FLAG || (CONVERSATION_FLAG = {}));
105
+
106
+ var COUNTER_FLAG_BASE;
107
+ (function (COUNTER_FLAG_BASE) {
108
+ COUNTER_FLAG_BASE["StartConversation"] = "startConversation";
109
+ COUNTER_FLAG_BASE["LastResponse"] = "lastResponse";
110
+ })(COUNTER_FLAG_BASE || (COUNTER_FLAG_BASE = {}));
111
+
112
+ var Direction;
113
+ (function (Direction) {
114
+ Direction["horizontal"] = "horizontal";
115
+ Direction["vertical"] = "vertical";
116
+ })(Direction || (Direction = {}));
117
+
118
+ var EventTypes;
119
+ (function (EventTypes) {
120
+ EventTypes["DATE"] = "Date";
121
+ EventTypes["GOOGLE"] = "Google";
122
+ EventTypes["MICROSOFT"] = "Microsoft";
123
+ EventTypes["SYSTEM"] = "System";
124
+ EventTypes["USER"] = "User";
125
+ EventTypes["ITINERARY"] = "Itinerary";
126
+ })(EventTypes || (EventTypes = {}));
127
+
128
+ var FormFieldType;
129
+ (function (FormFieldType) {
130
+ FormFieldType["date"] = "date";
131
+ FormFieldType["text"] = "text";
132
+ FormFieldType["textarea"] = "textarea";
133
+ FormFieldType["typeahead"] = "typeahead";
134
+ FormFieldType["multiselect"] = "multiselect";
135
+ FormFieldType["select"] = "select";
136
+ FormFieldType["checkbox"] = "checkbox";
137
+ FormFieldType["toggle"] = "toggle";
138
+ FormFieldType["radio"] = "radio";
139
+ FormFieldType["textlist"] = "textlist";
140
+ FormFieldType["number"] = "number";
141
+ FormFieldType["message"] = "message";
142
+ FormFieldType["time"] = "time";
143
+ FormFieldType["multifield"] = "multifield";
144
+ FormFieldType["action"] = "action";
145
+ FormFieldType["currency"] = "currency";
146
+ FormFieldType["banner"] = "banner";
147
+ FormFieldType["percentage"] = "percentage";
148
+ FormFieldType["multiselectdropdown"] = "multiselectdropdown";
149
+ FormFieldType["hyperlink"] = "hyperlink";
150
+ FormFieldType["injectable"] = "injectable";
151
+ FormFieldType["datetime"] = "datetime";
152
+ FormFieldType["rating"] = "rating";
153
+ FormFieldType["incrementer"] = "incrementer";
154
+ FormFieldType["range"] = "range";
155
+ FormFieldType["password"] = "password";
156
+ })(FormFieldType || (FormFieldType = {}));
157
+
158
+ var HandoffPanelVersion;
159
+ (function (HandoffPanelVersion) {
160
+ HandoffPanelVersion["STANDARD"] = "standard";
161
+ HandoffPanelVersion["PRO"] = "pro";
162
+ HandoffPanelVersion["SUPER"] = "super";
163
+ })(HandoffPanelVersion || (HandoffPanelVersion = {}));
164
+
165
+ var INNER_CIRCLE_STATE;
166
+ (function (INNER_CIRCLE_STATE) {
167
+ INNER_CIRCLE_STATE["Waiting"] = "waiting";
168
+ INNER_CIRCLE_STATE["Quiet"] = "quiet";
169
+ INNER_CIRCLE_STATE["Unresponsive"] = "unresponsive";
170
+ INNER_CIRCLE_STATE["Redelegation"] = "redelegation";
171
+ })(INNER_CIRCLE_STATE || (INNER_CIRCLE_STATE = {}));
172
+
173
+ var LocalStorageKeys;
174
+ (function (LocalStorageKeys) {
175
+ LocalStorageKeys["LongPressForSendImmediately"] = "longPressForSendImmediately";
176
+ })(LocalStorageKeys || (LocalStorageKeys = {}));
177
+
178
+ var MatcherStatuses;
179
+ (function (MatcherStatuses) {
180
+ MatcherStatuses["STATUS0"] = "no contact";
181
+ MatcherStatuses["STATUS1"] = "1st exchange";
182
+ MatcherStatuses["STATUS2"] = "2nd exchange";
183
+ MatcherStatuses["STATUS3"] = "3rd exchange";
184
+ MatcherStatuses["STATUS4"] = "2+ laughs";
185
+ MatcherStatuses["STATUS5"] = "idea signalled";
186
+ MatcherStatuses["STATUS6"] = "alt contact";
187
+ MatcherStatuses["STATUS7"] = "any romance";
188
+ MatcherStatuses["STATUS8"] = "locale confirmed";
189
+ MatcherStatuses["STATUS9"] = "time confirmed";
190
+ MatcherStatuses["STATUS10"] = "all followup";
191
+ })(MatcherStatuses || (MatcherStatuses = {}));
192
+
193
+ var EditRecurringEventOptions;
194
+ (function (EditRecurringEventOptions) {
195
+ EditRecurringEventOptions["CURRENT"] = "CURRENT";
196
+ EditRecurringEventOptions["FOLLOWING"] = "FOLLOWING";
197
+ EditRecurringEventOptions["ALL"] = "ALL";
198
+ })(EditRecurringEventOptions || (EditRecurringEventOptions = {}));
199
+
200
+ var RecurringTypes;
201
+ (function (RecurringTypes) {
202
+ RecurringTypes["DAILY"] = "DAILY";
203
+ RecurringTypes["WEEKLY"] = "WEEKLY";
204
+ RecurringTypes["MONTHLY"] = "MONTHLY";
205
+ RecurringTypes["ANNUALLY"] = "ANNUALLY";
206
+ })(RecurringTypes || (RecurringTypes = {}));
207
+
208
+ var ScheduleDateStatus;
209
+ (function (ScheduleDateStatus) {
210
+ ScheduleDateStatus["Suggested"] = "suggested";
211
+ ScheduleDateStatus["Canceled"] = "canceled";
212
+ ScheduleDateStatus["Pending"] = "pending";
213
+ })(ScheduleDateStatus || (ScheduleDateStatus = {}));
214
+
215
+ var SenderTypes;
216
+ (function (SenderTypes) {
217
+ SenderTypes["USER"] = "user";
218
+ SenderTypes["OTHER"] = "other";
219
+ })(SenderTypes || (SenderTypes = {}));
220
+
221
+ var StatusTypes;
222
+ (function (StatusTypes) {
223
+ StatusTypes["Info"] = "info";
224
+ StatusTypes["Warning"] = "warning";
225
+ StatusTypes["Error"] = "error";
226
+ StatusTypes["Success"] = "success";
227
+ })(StatusTypes || (StatusTypes = {}));
228
+
229
+ var SendMessageType;
230
+ (function (SendMessageType) {
231
+ SendMessageType["INMEDIATELY"] = "send_immediately";
232
+ SendMessageType["AFTER"] = "send_after";
233
+ SendMessageType["SPECIFIC"] = "specify_time";
234
+ })(SendMessageType || (SendMessageType = {}));
235
+
236
+ var VisualManagerModalEventTypes;
237
+ (function (VisualManagerModalEventTypes) {
238
+ VisualManagerModalEventTypes["Click"] = "click";
239
+ VisualManagerModalEventTypes["Close"] = "close";
240
+ })(VisualManagerModalEventTypes || (VisualManagerModalEventTypes = {}));
241
+
242
+ var VisualManagerModalEventValue;
243
+ (function (VisualManagerModalEventValue) {
244
+ VisualManagerModalEventValue["Apply"] = "apply";
245
+ VisualManagerModalEventValue["Reset"] = "reset";
246
+ VisualManagerModalEventValue["AddPreference"] = "add-preference";
247
+ VisualManagerModalEventValue["RemovePreference"] = "remove-preference";
248
+ VisualManagerModalEventValue["Close"] = "close";
249
+ })(VisualManagerModalEventValue || (VisualManagerModalEventValue = {}));
250
+
36
251
  /**
37
252
  * operations.ts - Contains common operations utility functions.
38
253
  *
@@ -71,19 +286,6 @@ const SeeMoreAnimation = trigger('dropDownMenu', [
71
286
  ]),
72
287
  ]);
73
288
 
74
- var AutoDelegationEventTypes;
75
- (function (AutoDelegationEventTypes) {
76
- AutoDelegationEventTypes["Click"] = "click";
77
- AutoDelegationEventTypes["Countdown"] = "countdown";
78
- })(AutoDelegationEventTypes || (AutoDelegationEventTypes = {}));
79
-
80
- var AutoDelegationEventValue;
81
- (function (AutoDelegationEventValue) {
82
- AutoDelegationEventValue["CountdownCompleted"] = "countdown-completed";
83
- AutoDelegationEventValue["RequestRejected"] = "request-rejected";
84
- AutoDelegationEventValue["RequestAcceped"] = "request-accepted";
85
- })(AutoDelegationEventValue || (AutoDelegationEventValue = {}));
86
-
87
289
  class LibAutoDelegationModalComponent {
88
290
  constructor(changeDetectorRef, popupModalService, modalData) {
89
291
  this.changeDetectorRef = changeDetectorRef;
@@ -98,291 +300,63 @@ class LibAutoDelegationModalComponent {
98
300
  this.componentData = null;
99
301
  if (modalData) {
100
302
  // Can use that component as modal and pass Inputs
101
- this.componentData = modalData;
102
- }
103
- }
104
- ngOnInit() {
105
- if (!this.componentData) {
106
- // Can use that component as child and pass Inputs
107
- this.componentData = {
108
- countdown: this.countdown,
109
- expandedBaseCard: this.expandedBaseCard,
110
- menuItems: this.menuItems,
111
- data: this.data || null,
112
- };
113
- }
114
- }
115
- ngAfterViewInit() {
116
- this.activeCountdownPathId = CommonOperations.randomString(100);
117
- interval(1000)
118
- .pipe(take(this.componentData?.countdown + 1))
119
- .subscribe({
120
- next: (elapsedSeconds) => {
121
- this.currentCountdownAt = this.componentData?.countdown - elapsedSeconds;
122
- this.strokeDashOffset = this.totalStrokeLength * ((this.componentData?.countdown - this.currentCountdownAt) / this.componentData?.countdown);
123
- this.changeDetectorRef.detectChanges();
124
- },
125
- complete: () => {
126
- if (this.data) {
127
- this.event.emit({ type: AutoDelegationEventTypes.Countdown, value: AutoDelegationEventValue.CountdownCompleted });
128
- }
129
- else {
130
- this.popupModalService.hide({ type: AutoDelegationEventTypes.Countdown, value: AutoDelegationEventValue.CountdownCompleted });
131
- }
132
- },
133
- });
134
- this.popupModalService.setChildModalElementRef(this.childModalElementRef);
135
- }
136
- reject() {
137
- if (this.data) {
138
- this.event.emit({ type: AutoDelegationEventTypes.Click, value: AutoDelegationEventValue.RequestRejected });
139
- }
140
- else {
141
- this.popupModalService.hide({ type: AutoDelegationEventTypes.Click, value: AutoDelegationEventValue.RequestRejected });
142
- }
143
- }
144
- accept() {
145
- if (this.data) {
146
- this.event.emit({ type: AutoDelegationEventTypes.Click, value: AutoDelegationEventValue.RequestAcceped });
147
- }
148
- else {
149
- this.popupModalService.hide({ type: AutoDelegationEventTypes.Click, value: AutoDelegationEventValue.RequestAcceped });
150
- }
151
- }
152
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: LibAutoDelegationModalComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i2.PopupModalService }, { token: MODAL_DATA, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
153
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.14", type: LibAutoDelegationModalComponent, isStandalone: true, selector: "lib-auto-delegation-modal", inputs: { countdown: "countdown", expandedBaseCard: "expandedBaseCard", data: "data", menuItems: "menuItems" }, outputs: { event: "event" }, providers: [LibModalComponent], viewQueries: [{ propertyName: "childModalElementRef", first: true, predicate: ["childModalElementRef"], descendants: true }], ngImport: i0, template: "<div class=\"auto-delegation\" [ngClass]=\"{ 'edit-radus': !componentData?.expandedBaseCard }\">\n <header class=\"auto-delegation__header\">\n <div class=\"auto-delegation__info\">\n <img class=\"auto-delegation__avatar\" [src]=\"componentData?.data?.imgSrc\" alt=\"User Avatar\" />\n <div class=\"auto-delegation__wapper overflow\">\n <div class=\"auto-delegation__title overflow\">{{ componentData?.data?.title }}</div>\n <span class=\"auto-delegation__name\">{{ componentData?.data?.name }}, </span>\n <span class=\"auto-delegation__location\">{{ componentData?.data?.location }}</span>\n </div>\n </div>\n @if (componentData?.menuItems?.length) {\n <div class=\"auto-delegation__menu\">\n <div>\n <lib-menu-btn [disableTranslation]=\"true\" [menuItems]=\"componentData?.menuItems\">\n <img height=\"25px\" width=\"5px\" src=\"assets/auto-delegation-modal/menu.svg\" alt=\"\" />\n </lib-menu-btn>\n </div>\n </div>\n }\n </header>\n <div class=\"auto-delegation__details\">\n <div class=\"auto-delegation__meetings\">\n <div class=\"auto-delegation__meetings-count gradient-text\">{{ componentData?.data?.meetings }} {{ 'AUTO_DELEGATION.MEETINGS' | translate }}</div>\n <div class=\"auto-delegation__meetings-duration gradient-text\">{{ componentData?.data?.days }}</div>\n </div>\n <div class=\"auto-delegation__price\">\n <div class=\"auto-delegation__price-value gradient-text\">\n $\n <div class=\"auto-delegation__price-number gradient-text\">{{ componentData?.data?.price }}</div>\n </div>\n </div>\n </div>\n <div class=\"auto-delegation__lists\">\n <ul class=\"auto-delegation__lists-features\">\n @for (opt of componentData?.data?.planOptions; track opt) {\n <li class=\"auto-delegation__lists-feature\">{{ opt }}</li>\n }\n </ul>\n </div>\n\n <div class=\"auto-delegation__action\">\n <div class=\"auto-delegation__action-timer\">\n <div class=\"auto-delegation__countdown\">\n <!-- Background Image -->\n <img class=\"auto-delegation__countdown-background-image\" src=\"assets/auto-delegation-modal/timer-center-dot.svg\" />\n <!-- SVG Countdown Animation -->\n <svg class=\"auto-delegation__countdown-active-stroke\" width=\"100%\" height=\"100%\" viewBox=\"0 0 103 103\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g\n class=\"auto-delegation__countdown-active-g\"\n [attr.mask]=\"'url(#' + activeCountdownPathId + ')'\"\n opacity=\"1\"\n [style.transform]=\"'rotate(' + 0 + 'deg)'\"\n style=\"transform-origin: center\"\n >\n <circle cx=\"50\" cy=\"50\" r=\"50\" fill=\"#FFB5E9\" />\n </g>\n <defs>\n <mask [attr.id]=\"activeCountdownPathId\">\n <circle\n d=\"M 9.04 78.68 A 50 50 0 1 1 90.96 78.68\"\n class=\"auto-delegation__animated-path\"\n cx=\"50\"\n cy=\"50\"\n r=\"42.5\"\n stroke=\"white\"\n stroke-linecap=\"round\"\n stroke-width=\"10.64\"\n [attr.stroke-dasharray]=\"totalStrokeLength\"\n [attr.stroke-dashoffset]=\"strokeDashOffset\"\n />\n </mask>\n </defs>\n </svg>\n\n <!-- Countdown Timer -->\n <div class=\"auto-delegation__countdown-number\">{{ currentCountdownAt }} s</div>\n </div>\n </div>\n\n <div #childModalElementRef class=\"auto-delegation__glowing-text\" (click)=\"accept()\">{{ 'AUTO_DELEGATION.ACCEPT_REQUEST' | translate }}</div>\n <div class=\"auto-delegation__close-button\" (click)=\"reject()\">\n <img class=\"auto-delegation__close-icon\" src=\"assets/auto-delegation-modal/cross.svg\" alt=\"cross-icon\" />\n </div>\n </div>\n <div class=\"auto-delegation__dropDown\">\n <span (click)=\"componentData.expandedBaseCard = !componentData.expandedBaseCard\"\n >{{ 'DASHBOARD.SEE_' + (componentData?.expandedBaseCard ? 'LESS' : 'MORE') | translate }}...\n </span>\n </div>\n\n @if (componentData?.expandedBaseCard) {\n <div class=\"auto-delegation__profile\" [@dropDownMenu]>\n <div class=\"auto-delegation__profile-header\">\n <div>\n <h3 class=\"red-text\">{{ 'AUTO_DELEGATION.SCORE_PREFERRED' | translate }}</h3>\n <p>{{ componentData?.data?.score }} / {{ componentData?.data?.preferred }}+</p>\n </div>\n <div>\n <h3 class=\"red-text text-right\">{{ 'AUTO_DELEGATION.LIFE_TIME_FEE' | translate }}</h3>\n <p class=\"text-right\">{{ componentData?.data?.lifeTimeFee }}</p>\n </div>\n </div>\n <div class=\"auto-delegation__profile-header\">\n <div>\n <h3 class=\"red-text\">{{ 'AUTO_DELEGATION.LIFE_TIME_MEETUPS' | translate }}</h3>\n <p>{{ componentData?.data?.lifeTimeMeetups }}</p>\n </div>\n <div>\n <h3 class=\"red-text text-right\">{{ 'AUTO_DELEGATION.JOIN_DATE' | translate }}</h3>\n <p class=\"text-right\">{{ componentData?.data?.joinDate }}</p>\n </div>\n </div>\n <div class=\"auto-delegation__profile-summary-container\">\n <div class=\"auto-delegation__profile-summary\">\n <div>\n <h4>{{ 'AUTO_DELEGATION.PREFERENCES' | translate }} <br />{{ 'AUTO_DELEGATION.SUMMARY' | translate }}:</h4>\n <div>\n <p>\n {{ componentData?.data?.preferences?.bust?.value }}\u00B1{{ componentData?.data?.preferences?.bust?.moe }} {{ componentData?.data?.preferences?.waist?.value }}\u00B1{{\n componentData?.data?.preferences?.waist?.moe\n }}\n {{ componentData?.data?.preferences?.height?.value }}\u00B1{{ componentData?.data?.preferences?.height?.moe }}\n </p>\n </div>\n <div>\n <p>{{ 'AUTO_DELEGATION.CELIBACY' | translate }} {{ componentData?.data?.preferences.celibacy }}+</p>\n <p>{{ 'AUTO_DELEGATION.COOPERATION' | translate }} {{ componentData?.data?.preferences.cooperation }}+</p>\n <p>{{ 'AUTO_DELEGATION.INTELLIGENCE' | translate }} {{ componentData?.data?.preferences.intelligence }}+</p>\n </div>\n </div>\n <div>\n <h4 class=\"text-right\">{{ 'AUTO_DELEGATION.PREFERENCES_PROFILE' | translate }}</h4>\n <p class=\"text-right\">{{ componentData?.data?.preferencesProfile }}</p>\n <div>\n <h4 class=\"text-right\">{{ 'AUTO_DELEGATION.WEIGHT_HEIGHT_PREF' | translate }}</h4>\n <p class=\"text-right\">{{ componentData?.data?.weight }}/{{ componentData?.data?.heightpref }}</p>\n </div>\n </div>\n </div>\n <div class=\"auto-delegation__profile-summary\">\n <div>\n <h4>\n {{ 'AUTO_DELEGATION.PROFILE' | translate }} <br />\n {{ 'AUTO_DELEGATION.SUMMARY' | translate }}:\n </h4>\n <div *ngFor=\"let item of componentData?.data?.profile\">\n <p>{{ item }}</p>\n </div>\n </div>\n <div class=\"auto-delegation__col-center\">\n <h4 class=\"text-right\">{{ 'AUTO_DELEGATION.COMMUNICATION_STYLE' | translate }}</h4>\n <p class=\"text-right\">{{ componentData?.data?.communicationStyle }}</p>\n <div>\n <h4 class=\"text-right\">{{ 'AUTO_DELEGATION.GOAL' | translate }}</h4>\n <p class=\"text-right\">{{ componentData?.data?.goal }}</p>\n </div>\n </div>\n </div>\n </div>\n </div>\n }\n</div>\n", styles: [":host{font-size:clamp(0px,3.2dvw,15px)}:host *{box-sizing:border-box}.auto-delegation{-webkit-backdrop-filter:blur(.625em);backdrop-filter:blur(.625em);background:#d3d3d333;color:#fff;padding:1.625em 2.75em 2.25em;width:28.125em;margin:0 auto;border-radius:1.5625em;font-family:Gilroy;overflow-y:scroll;max-height:95vh}.auto-delegation__header{display:flex;justify-content:space-between;align-items:flex-start}.auto-delegation__details{display:flex;justify-content:space-between;align-items:center}.auto-delegation__avatar{width:3.75em;height:3.75em;border-radius:50%;object-fit:cover}.auto-delegation__wapper{padding-bottom:.375em}.auto-delegation__info{display:flex;gap:.75em;align-items:center;width:18.75em;height:4.6875em}.auto-delegation__title{font-size:1.875em;font-weight:400;padding-bottom:.5em;font-family:Calistoga;width:13.75em}.auto-delegation__name{font-size:.875em;font-weight:600;font-family:Gilroy}.auto-delegation__menu{cursor:pointer}.auto-delegation__location{font-size:.875em;font-weight:400;font-family:Gilroy;color:#ccc}.auto-delegation__meeting{width:100%;height:100%}.auto-delegation__meetings-count,.auto-delegation__meetings-duration{font-family:Gilroy;font-size:1.0625em;font-weight:400}.auto-delegation__price{text-align:end}.auto-delegation__price-value{display:flex;justify-content:flex-end;align-items:flex-start;gap:.25em}.auto-delegation__price-number{font-size:2.25em;font-weight:400}.auto-delegation__price-market{font-size:.5em;color:#8e8e8e}.auto-delegation__lists-features{padding-left:.9375em}.auto-delegation__lists{list-style:none;display:flex;justify-content:space-between;align-items:flex-start}.auto-delegation__action{border-radius:2em;background-color:#2b2929;display:flex;align-items:center;margin-top:.3125em;padding:0;height:3.4375em;justify-content:space-between}.auto-delegation__action__timer{border:.0625em solid gray;border-radius:100%;height:3.125em;width:3.125em;font-size:.875em;color:#f39c12}.auto-delegation__summary,.auto-delegation__preferences{margin-top:1em;font-size:.875em;line-height:1.5}.auto-delegation__preferences-summary{font-size:.75em;color:#aaa}.auto-delegation__glowing-text{font-family:Calistoga;font-size:1.5em;font-weight:800;color:#fff;text-align:center;margin-right:1.25em;text-shadow:0 0 .3125em #ff89ac,0 0 .625em #ff89ac,0 0 1.25em #ff89ac,0 0 2.5em #ff2475,0 0 5em #ff2475;-webkit-text-fill-color:#fff;cursor:pointer}.auto-delegation__close-button{display:flex;align-items:center;background:linear-gradient(228deg,#101113 10%,#2b2f33);padding:.625em;border-radius:100%;border:.0625em solid black;margin-right:.3125em;cursor:pointer}.auto-delegation__close-icon{width:1.375em;height:1.375em}.auto-delegation__dropDown{margin-top:.9375em;margin-bottom:.625em;display:flex;justify-content:center}.auto-delegation__dropDown>span{font-family:Gilroy;cursor:pointer;font-size:.625em;color:#8e8e8e}.auto-delegation__profile-summary-container{margin-top:1.25em}.auto-delegation__profile{overflow:hidden}.auto-delegation__profile-header,.auto-delegation__profile-summary{display:flex;justify-content:space-between}.auto-delegation__profile-header>div,.auto-delegation__profile-summary>div{text-align:left;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;width:11.25em}.auto-delegation__profile-summary div h4{font-weight:500;font-family:Gilroy;font-size:1em;margin-bottom:0;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.auto-delegation__profile-summary div p{color:#8e8e8e;font-size:.85em;font-weight:400;font-family:Gilroy;margin:.125em!important;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.auto-delegation__countdown{position:relative;width:4.375em;height:4.375em;right:.75em}.auto-delegation__countdown-background-image{background:linear-gradient(274deg,#232323 50%,#2b2f33);box-shadow:.01em -.0525em 1.53em #82676e,.49em .49em 1.715em #141415;border:2px solid #464646;border-radius:100%;position:absolute;top:.6em;left:.9em;width:3.2em;height:3.2em}.auto-delegation__countdown-active-stroke{position:absolute;width:3.5em;height:3.5em;top:.6em;left:.6em;animation-duration:.8s;transform:rotate(90deg)}.auto-delegation__countdown-number{height:3em;width:3em;display:flex;justify-content:center;align-items:center;background:linear-gradient(66deg,#101113 12%,#2b2f33);box-shadow:inset -.49em -.49em 1.715em #453d3f,inset .49em .49em 1.715em #141415;border:2px solid #333333;border-radius:100%;position:absolute;top:50%;left:57%;transform:translate(-50%,-50%);font-weight:600;font-size:.6em;color:#fff}.auto-delegation__col-center{display:flex;flex-direction:column;justify-content:center}.auto-delegation__animated-path{transition:stroke-dashoffset 1s linear}.gradient-text{background:linear-gradient(to top,#efc5d1,#fe638e);-webkit-background-clip:text;-webkit-text-fill-color:transparent}.auto-delegation:before{content:\"\";position:absolute;inset:0;border-radius:1.5625em;padding:.125em;background:linear-gradient(to top,transparent,transparent,#ccabc4);-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:exclude;z-index:-1}.red-text{font-family:Gilroy;margin-top:.5em;margin-bottom:0;font-size:1.0625em;color:#f4446c;font-weight:600}.text-right{text-align:end}.overflow{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}@media (max-width: 768px){:host{font-size:calc(clamp(0px,3.2dvw,15px)*.8)}}.edit-radus{border-radius:5.5625em!important}.edit-radus:before{border-radius:5.5625em!important}::-webkit-scrollbar{width:0;background:transparent}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: BaseCardModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "ngmodule", type: ButtonsModule }, { kind: "component", type: i2.MenuBtnComponent, selector: "lib-menu-btn", inputs: ["menuBtnIcon", "menuBtnTooltip", "menuBtnTooltipPosition", "menuBtnIconName", "menuBtnImgUrl", "menuBtnNotificationIconUrl", "menuDirection", "hasNotification", "menuItems", "disableTranslation", "listItem", "listItemIndex", "selectable", "overlayClass", "isUserMenu", "onlyCloseOnClickOutside", "hoverOutline", "disabled", "type", "form", "label", "showArrowIcon", "disableTextShadow", "loading$"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "ngmodule", type: MatButtonModule }, { kind: "ngmodule", type: PopperModule }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }], animations: [SeeMoreAnimation] }); }
154
- }
155
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: LibAutoDelegationModalComponent, decorators: [{
156
- type: Component,
157
- args: [{ selector: 'lib-auto-delegation-modal', animations: [SeeMoreAnimation], imports: [CommonModule, BaseCardModule, TranslateModule, ButtonsModule, MatMenuModule, MatButtonModule, PopperModule], providers: [LibModalComponent], template: "<div class=\"auto-delegation\" [ngClass]=\"{ 'edit-radus': !componentData?.expandedBaseCard }\">\n <header class=\"auto-delegation__header\">\n <div class=\"auto-delegation__info\">\n <img class=\"auto-delegation__avatar\" [src]=\"componentData?.data?.imgSrc\" alt=\"User Avatar\" />\n <div class=\"auto-delegation__wapper overflow\">\n <div class=\"auto-delegation__title overflow\">{{ componentData?.data?.title }}</div>\n <span class=\"auto-delegation__name\">{{ componentData?.data?.name }}, </span>\n <span class=\"auto-delegation__location\">{{ componentData?.data?.location }}</span>\n </div>\n </div>\n @if (componentData?.menuItems?.length) {\n <div class=\"auto-delegation__menu\">\n <div>\n <lib-menu-btn [disableTranslation]=\"true\" [menuItems]=\"componentData?.menuItems\">\n <img height=\"25px\" width=\"5px\" src=\"assets/auto-delegation-modal/menu.svg\" alt=\"\" />\n </lib-menu-btn>\n </div>\n </div>\n }\n </header>\n <div class=\"auto-delegation__details\">\n <div class=\"auto-delegation__meetings\">\n <div class=\"auto-delegation__meetings-count gradient-text\">{{ componentData?.data?.meetings }} {{ 'AUTO_DELEGATION.MEETINGS' | translate }}</div>\n <div class=\"auto-delegation__meetings-duration gradient-text\">{{ componentData?.data?.days }}</div>\n </div>\n <div class=\"auto-delegation__price\">\n <div class=\"auto-delegation__price-value gradient-text\">\n $\n <div class=\"auto-delegation__price-number gradient-text\">{{ componentData?.data?.price }}</div>\n </div>\n </div>\n </div>\n <div class=\"auto-delegation__lists\">\n <ul class=\"auto-delegation__lists-features\">\n @for (opt of componentData?.data?.planOptions; track opt) {\n <li class=\"auto-delegation__lists-feature\">{{ opt }}</li>\n }\n </ul>\n </div>\n\n <div class=\"auto-delegation__action\">\n <div class=\"auto-delegation__action-timer\">\n <div class=\"auto-delegation__countdown\">\n <!-- Background Image -->\n <img class=\"auto-delegation__countdown-background-image\" src=\"assets/auto-delegation-modal/timer-center-dot.svg\" />\n <!-- SVG Countdown Animation -->\n <svg class=\"auto-delegation__countdown-active-stroke\" width=\"100%\" height=\"100%\" viewBox=\"0 0 103 103\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g\n class=\"auto-delegation__countdown-active-g\"\n [attr.mask]=\"'url(#' + activeCountdownPathId + ')'\"\n opacity=\"1\"\n [style.transform]=\"'rotate(' + 0 + 'deg)'\"\n style=\"transform-origin: center\"\n >\n <circle cx=\"50\" cy=\"50\" r=\"50\" fill=\"#FFB5E9\" />\n </g>\n <defs>\n <mask [attr.id]=\"activeCountdownPathId\">\n <circle\n d=\"M 9.04 78.68 A 50 50 0 1 1 90.96 78.68\"\n class=\"auto-delegation__animated-path\"\n cx=\"50\"\n cy=\"50\"\n r=\"42.5\"\n stroke=\"white\"\n stroke-linecap=\"round\"\n stroke-width=\"10.64\"\n [attr.stroke-dasharray]=\"totalStrokeLength\"\n [attr.stroke-dashoffset]=\"strokeDashOffset\"\n />\n </mask>\n </defs>\n </svg>\n\n <!-- Countdown Timer -->\n <div class=\"auto-delegation__countdown-number\">{{ currentCountdownAt }} s</div>\n </div>\n </div>\n\n <div #childModalElementRef class=\"auto-delegation__glowing-text\" (click)=\"accept()\">{{ 'AUTO_DELEGATION.ACCEPT_REQUEST' | translate }}</div>\n <div class=\"auto-delegation__close-button\" (click)=\"reject()\">\n <img class=\"auto-delegation__close-icon\" src=\"assets/auto-delegation-modal/cross.svg\" alt=\"cross-icon\" />\n </div>\n </div>\n <div class=\"auto-delegation__dropDown\">\n <span (click)=\"componentData.expandedBaseCard = !componentData.expandedBaseCard\"\n >{{ 'DASHBOARD.SEE_' + (componentData?.expandedBaseCard ? 'LESS' : 'MORE') | translate }}...\n </span>\n </div>\n\n @if (componentData?.expandedBaseCard) {\n <div class=\"auto-delegation__profile\" [@dropDownMenu]>\n <div class=\"auto-delegation__profile-header\">\n <div>\n <h3 class=\"red-text\">{{ 'AUTO_DELEGATION.SCORE_PREFERRED' | translate }}</h3>\n <p>{{ componentData?.data?.score }} / {{ componentData?.data?.preferred }}+</p>\n </div>\n <div>\n <h3 class=\"red-text text-right\">{{ 'AUTO_DELEGATION.LIFE_TIME_FEE' | translate }}</h3>\n <p class=\"text-right\">{{ componentData?.data?.lifeTimeFee }}</p>\n </div>\n </div>\n <div class=\"auto-delegation__profile-header\">\n <div>\n <h3 class=\"red-text\">{{ 'AUTO_DELEGATION.LIFE_TIME_MEETUPS' | translate }}</h3>\n <p>{{ componentData?.data?.lifeTimeMeetups }}</p>\n </div>\n <div>\n <h3 class=\"red-text text-right\">{{ 'AUTO_DELEGATION.JOIN_DATE' | translate }}</h3>\n <p class=\"text-right\">{{ componentData?.data?.joinDate }}</p>\n </div>\n </div>\n <div class=\"auto-delegation__profile-summary-container\">\n <div class=\"auto-delegation__profile-summary\">\n <div>\n <h4>{{ 'AUTO_DELEGATION.PREFERENCES' | translate }} <br />{{ 'AUTO_DELEGATION.SUMMARY' | translate }}:</h4>\n <div>\n <p>\n {{ componentData?.data?.preferences?.bust?.value }}\u00B1{{ componentData?.data?.preferences?.bust?.moe }} {{ componentData?.data?.preferences?.waist?.value }}\u00B1{{\n componentData?.data?.preferences?.waist?.moe\n }}\n {{ componentData?.data?.preferences?.height?.value }}\u00B1{{ componentData?.data?.preferences?.height?.moe }}\n </p>\n </div>\n <div>\n <p>{{ 'AUTO_DELEGATION.CELIBACY' | translate }} {{ componentData?.data?.preferences.celibacy }}+</p>\n <p>{{ 'AUTO_DELEGATION.COOPERATION' | translate }} {{ componentData?.data?.preferences.cooperation }}+</p>\n <p>{{ 'AUTO_DELEGATION.INTELLIGENCE' | translate }} {{ componentData?.data?.preferences.intelligence }}+</p>\n </div>\n </div>\n <div>\n <h4 class=\"text-right\">{{ 'AUTO_DELEGATION.PREFERENCES_PROFILE' | translate }}</h4>\n <p class=\"text-right\">{{ componentData?.data?.preferencesProfile }}</p>\n <div>\n <h4 class=\"text-right\">{{ 'AUTO_DELEGATION.WEIGHT_HEIGHT_PREF' | translate }}</h4>\n <p class=\"text-right\">{{ componentData?.data?.weight }}/{{ componentData?.data?.heightpref }}</p>\n </div>\n </div>\n </div>\n <div class=\"auto-delegation__profile-summary\">\n <div>\n <h4>\n {{ 'AUTO_DELEGATION.PROFILE' | translate }} <br />\n {{ 'AUTO_DELEGATION.SUMMARY' | translate }}:\n </h4>\n <div *ngFor=\"let item of componentData?.data?.profile\">\n <p>{{ item }}</p>\n </div>\n </div>\n <div class=\"auto-delegation__col-center\">\n <h4 class=\"text-right\">{{ 'AUTO_DELEGATION.COMMUNICATION_STYLE' | translate }}</h4>\n <p class=\"text-right\">{{ componentData?.data?.communicationStyle }}</p>\n <div>\n <h4 class=\"text-right\">{{ 'AUTO_DELEGATION.GOAL' | translate }}</h4>\n <p class=\"text-right\">{{ componentData?.data?.goal }}</p>\n </div>\n </div>\n </div>\n </div>\n </div>\n }\n</div>\n", styles: [":host{font-size:clamp(0px,3.2dvw,15px)}:host *{box-sizing:border-box}.auto-delegation{-webkit-backdrop-filter:blur(.625em);backdrop-filter:blur(.625em);background:#d3d3d333;color:#fff;padding:1.625em 2.75em 2.25em;width:28.125em;margin:0 auto;border-radius:1.5625em;font-family:Gilroy;overflow-y:scroll;max-height:95vh}.auto-delegation__header{display:flex;justify-content:space-between;align-items:flex-start}.auto-delegation__details{display:flex;justify-content:space-between;align-items:center}.auto-delegation__avatar{width:3.75em;height:3.75em;border-radius:50%;object-fit:cover}.auto-delegation__wapper{padding-bottom:.375em}.auto-delegation__info{display:flex;gap:.75em;align-items:center;width:18.75em;height:4.6875em}.auto-delegation__title{font-size:1.875em;font-weight:400;padding-bottom:.5em;font-family:Calistoga;width:13.75em}.auto-delegation__name{font-size:.875em;font-weight:600;font-family:Gilroy}.auto-delegation__menu{cursor:pointer}.auto-delegation__location{font-size:.875em;font-weight:400;font-family:Gilroy;color:#ccc}.auto-delegation__meeting{width:100%;height:100%}.auto-delegation__meetings-count,.auto-delegation__meetings-duration{font-family:Gilroy;font-size:1.0625em;font-weight:400}.auto-delegation__price{text-align:end}.auto-delegation__price-value{display:flex;justify-content:flex-end;align-items:flex-start;gap:.25em}.auto-delegation__price-number{font-size:2.25em;font-weight:400}.auto-delegation__price-market{font-size:.5em;color:#8e8e8e}.auto-delegation__lists-features{padding-left:.9375em}.auto-delegation__lists{list-style:none;display:flex;justify-content:space-between;align-items:flex-start}.auto-delegation__action{border-radius:2em;background-color:#2b2929;display:flex;align-items:center;margin-top:.3125em;padding:0;height:3.4375em;justify-content:space-between}.auto-delegation__action__timer{border:.0625em solid gray;border-radius:100%;height:3.125em;width:3.125em;font-size:.875em;color:#f39c12}.auto-delegation__summary,.auto-delegation__preferences{margin-top:1em;font-size:.875em;line-height:1.5}.auto-delegation__preferences-summary{font-size:.75em;color:#aaa}.auto-delegation__glowing-text{font-family:Calistoga;font-size:1.5em;font-weight:800;color:#fff;text-align:center;margin-right:1.25em;text-shadow:0 0 .3125em #ff89ac,0 0 .625em #ff89ac,0 0 1.25em #ff89ac,0 0 2.5em #ff2475,0 0 5em #ff2475;-webkit-text-fill-color:#fff;cursor:pointer}.auto-delegation__close-button{display:flex;align-items:center;background:linear-gradient(228deg,#101113 10%,#2b2f33);padding:.625em;border-radius:100%;border:.0625em solid black;margin-right:.3125em;cursor:pointer}.auto-delegation__close-icon{width:1.375em;height:1.375em}.auto-delegation__dropDown{margin-top:.9375em;margin-bottom:.625em;display:flex;justify-content:center}.auto-delegation__dropDown>span{font-family:Gilroy;cursor:pointer;font-size:.625em;color:#8e8e8e}.auto-delegation__profile-summary-container{margin-top:1.25em}.auto-delegation__profile{overflow:hidden}.auto-delegation__profile-header,.auto-delegation__profile-summary{display:flex;justify-content:space-between}.auto-delegation__profile-header>div,.auto-delegation__profile-summary>div{text-align:left;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;width:11.25em}.auto-delegation__profile-summary div h4{font-weight:500;font-family:Gilroy;font-size:1em;margin-bottom:0;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.auto-delegation__profile-summary div p{color:#8e8e8e;font-size:.85em;font-weight:400;font-family:Gilroy;margin:.125em!important;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.auto-delegation__countdown{position:relative;width:4.375em;height:4.375em;right:.75em}.auto-delegation__countdown-background-image{background:linear-gradient(274deg,#232323 50%,#2b2f33);box-shadow:.01em -.0525em 1.53em #82676e,.49em .49em 1.715em #141415;border:2px solid #464646;border-radius:100%;position:absolute;top:.6em;left:.9em;width:3.2em;height:3.2em}.auto-delegation__countdown-active-stroke{position:absolute;width:3.5em;height:3.5em;top:.6em;left:.6em;animation-duration:.8s;transform:rotate(90deg)}.auto-delegation__countdown-number{height:3em;width:3em;display:flex;justify-content:center;align-items:center;background:linear-gradient(66deg,#101113 12%,#2b2f33);box-shadow:inset -.49em -.49em 1.715em #453d3f,inset .49em .49em 1.715em #141415;border:2px solid #333333;border-radius:100%;position:absolute;top:50%;left:57%;transform:translate(-50%,-50%);font-weight:600;font-size:.6em;color:#fff}.auto-delegation__col-center{display:flex;flex-direction:column;justify-content:center}.auto-delegation__animated-path{transition:stroke-dashoffset 1s linear}.gradient-text{background:linear-gradient(to top,#efc5d1,#fe638e);-webkit-background-clip:text;-webkit-text-fill-color:transparent}.auto-delegation:before{content:\"\";position:absolute;inset:0;border-radius:1.5625em;padding:.125em;background:linear-gradient(to top,transparent,transparent,#ccabc4);-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:exclude;z-index:-1}.red-text{font-family:Gilroy;margin-top:.5em;margin-bottom:0;font-size:1.0625em;color:#f4446c;font-weight:600}.text-right{text-align:end}.overflow{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}@media (max-width: 768px){:host{font-size:calc(clamp(0px,3.2dvw,15px)*.8)}}.edit-radus{border-radius:5.5625em!important}.edit-radus:before{border-radius:5.5625em!important}::-webkit-scrollbar{width:0;background:transparent}\n"] }]
158
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i2.PopupModalService }, { type: undefined, decorators: [{
159
- type: Optional
160
- }, {
161
- type: Inject,
162
- args: [MODAL_DATA]
163
- }] }], propDecorators: { childModalElementRef: [{
164
- type: ViewChild,
165
- args: ['childModalElementRef']
166
- }], countdown: [{
167
- type: Input
168
- }], expandedBaseCard: [{
169
- type: Input
170
- }], data: [{
171
- type: Input
172
- }], menuItems: [{
173
- type: Input
174
- }], event: [{
175
- type: Output
176
- }] } });
177
-
178
- var VisualManagerModalEventTypes;
179
- (function (VisualManagerModalEventTypes) {
180
- VisualManagerModalEventTypes["Click"] = "click";
181
- VisualManagerModalEventTypes["Close"] = "close";
182
- })(VisualManagerModalEventTypes || (VisualManagerModalEventTypes = {}));
183
-
184
- var VisualManagerModalEventValue;
185
- (function (VisualManagerModalEventValue) {
186
- VisualManagerModalEventValue["Apply"] = "apply";
187
- VisualManagerModalEventValue["Reset"] = "reset";
188
- VisualManagerModalEventValue["AddPreference"] = "add-preference";
189
- VisualManagerModalEventValue["RemovePreference"] = "remove-preference";
190
- VisualManagerModalEventValue["Close"] = "close";
191
- })(VisualManagerModalEventValue || (VisualManagerModalEventValue = {}));
192
-
193
- class LibVisualManagerModalComponent {
194
- get selectedItems() {
195
- return this.preferences.filter((p) => p.isSelected);
196
- }
197
- get deselectedItems() {
198
- return this.preferences.filter((p) => !p.isSelected);
199
- }
200
- constructor(changeDetectorRef, popupModalService, modalData) {
201
- this.changeDetectorRef = changeDetectorRef;
202
- this.popupModalService = popupModalService;
203
- this.modalData = modalData;
204
- this.event = new EventEmitter();
205
- this.componentData = null;
206
- this.preferences = [];
207
- this.originalPreferences = [];
208
- this.preferenceControls = new Map();
209
- if (modalData) {
210
- this.componentData = modalData;
211
- }
212
- }
213
- ngOnInit() {
214
- if (!this.componentData) {
215
- this.componentData = {
216
- data: this.data || { preferences: [] },
217
- };
218
- }
219
- // Create a deep copy for working state
220
- this.preferences = JSON.parse(JSON.stringify(this.componentData.data.preferences || []));
221
- // Keep original for reset
222
- this.originalPreferences = JSON.parse(JSON.stringify(this.componentData.data.preferences || []));
223
- // Create FormControls for each preference name
224
- this.preferences.forEach((preference) => {
225
- this.preferenceControls.set(preference.id, new FormControl(preference.name));
226
- });
227
- }
228
- ngAfterViewInit() {
229
- if (this.childModalElementRef) {
230
- this.popupModalService.setChildModalElementRef(this.childModalElementRef);
231
- }
232
- }
233
- togglePreference(preference, event) {
234
- if (event) {
235
- event.preventDefault();
236
- event.stopPropagation();
237
- }
238
- const index = this.preferences.findIndex((p) => p.id === preference.id);
239
- if (index !== -1) {
240
- const wasSelected = this.preferences[index].isSelected;
241
- this.preferences[index].isSelected = !wasSelected;
242
- // Force change detection to update the view
243
- this.changeDetectorRef.detectChanges();
244
- const eventValue = this.preferences[index].isSelected
245
- ? VisualManagerModalEventValue.AddPreference
246
- : VisualManagerModalEventValue.RemovePreference;
247
- // Emit event but don't close the modal - user can continue toggling items
248
- if (this.data) {
249
- this.event.emit({
250
- type: VisualManagerModalEventTypes.Click,
251
- value: eventValue,
252
- data: { preferenceId: preference.id, preferences: this.preferences },
253
- });
254
- }
255
- }
256
- }
257
- apply() {
258
- if (this.data) {
259
- this.event.emit({
260
- type: VisualManagerModalEventTypes.Click,
261
- value: VisualManagerModalEventValue.Apply,
262
- data: { preferences: this.preferences },
263
- });
264
- }
265
- else {
266
- this.popupModalService.hide({
267
- type: VisualManagerModalEventTypes.Click,
268
- value: VisualManagerModalEventValue.Apply,
269
- data: { preferences: this.preferences },
270
- });
303
+ this.componentData = modalData;
271
304
  }
272
305
  }
273
- reset() {
274
- // Reset to original state
275
- this.preferences = JSON.parse(JSON.stringify(this.originalPreferences));
276
- // Reset FormControls
277
- this.preferences.forEach((preference) => {
278
- const control = this.preferenceControls.get(preference.id);
279
- if (control) {
280
- control.setValue(preference.name);
281
- }
282
- else {
283
- this.preferenceControls.set(preference.id, new FormControl(preference.name));
284
- }
306
+ ngOnInit() {
307
+ if (!this.componentData) {
308
+ // Can use that component as child and pass Inputs
309
+ this.componentData = {
310
+ countdown: this.countdown,
311
+ expandedBaseCard: this.expandedBaseCard,
312
+ menuItems: this.menuItems,
313
+ data: this.data || null,
314
+ };
315
+ }
316
+ }
317
+ ngAfterViewInit() {
318
+ this.activeCountdownPathId = CommonOperations.randomString(100);
319
+ interval(1000)
320
+ .pipe(take(this.componentData?.countdown + 1))
321
+ .subscribe({
322
+ next: (elapsedSeconds) => {
323
+ this.currentCountdownAt = this.componentData?.countdown - elapsedSeconds;
324
+ this.strokeDashOffset = this.totalStrokeLength * ((this.componentData?.countdown - this.currentCountdownAt) / this.componentData?.countdown);
325
+ this.changeDetectorRef.detectChanges();
326
+ },
327
+ complete: () => {
328
+ if (this.data) {
329
+ this.event.emit({ type: AutoDelegationEventTypes.Countdown, value: AutoDelegationEventValue.CountdownCompleted });
330
+ }
331
+ else {
332
+ this.popupModalService.hide({ type: AutoDelegationEventTypes.Countdown, value: AutoDelegationEventValue.CountdownCompleted });
333
+ }
334
+ },
285
335
  });
286
- this.changeDetectorRef.detectChanges();
336
+ this.popupModalService.setChildModalElementRef(this.childModalElementRef);
337
+ }
338
+ reject() {
287
339
  if (this.data) {
288
- this.event.emit({
289
- type: VisualManagerModalEventTypes.Click,
290
- value: VisualManagerModalEventValue.Reset,
291
- data: { preferences: this.preferences },
292
- });
340
+ this.event.emit({ type: AutoDelegationEventTypes.Click, value: AutoDelegationEventValue.RequestRejected });
293
341
  }
294
342
  else {
295
- this.popupModalService.hide({
296
- type: VisualManagerModalEventTypes.Click,
297
- value: VisualManagerModalEventValue.Reset,
298
- data: { preferences: this.preferences },
299
- });
343
+ this.popupModalService.hide({ type: AutoDelegationEventTypes.Click, value: AutoDelegationEventValue.RequestRejected });
300
344
  }
301
345
  }
302
- close() {
346
+ accept() {
303
347
  if (this.data) {
304
- this.event.emit({
305
- type: VisualManagerModalEventTypes.Close,
306
- value: VisualManagerModalEventValue.Close,
307
- });
348
+ this.event.emit({ type: AutoDelegationEventTypes.Click, value: AutoDelegationEventValue.RequestAcceped });
308
349
  }
309
350
  else {
310
- this.popupModalService.hide({
311
- type: VisualManagerModalEventTypes.Close,
312
- value: VisualManagerModalEventValue.Close,
313
- });
314
- }
315
- }
316
- onPreferenceNameChange(preference, newName) {
317
- const index = this.preferences.findIndex((p) => p.id === preference.id);
318
- if (index !== -1) {
319
- this.preferences[index].name = newName || '';
320
- const control = this.preferenceControls.get(preference.id);
321
- if (control && control.value !== newName) {
322
- control.setValue(newName || '', { emitEvent: false });
323
- }
324
- this.changeDetectorRef.detectChanges();
325
- }
326
- }
327
- getPreferenceControl(preferenceId) {
328
- return this.preferenceControls.get(preferenceId) || new FormControl('');
329
- }
330
- onDragStart(event, preference, isSelected) {
331
- if (event.dataTransfer) {
332
- event.dataTransfer.effectAllowed = 'move';
333
- event.dataTransfer.setData('text/plain', JSON.stringify({ id: preference.id, isSelected }));
334
- }
335
- if (event.target) {
336
- event.target.style.opacity = '0.5';
337
- }
338
- }
339
- onDragEnd(event) {
340
- if (event.target) {
341
- event.target.style.opacity = '1';
342
- }
343
- }
344
- onDragOver(event) {
345
- event.preventDefault();
346
- if (event.dataTransfer) {
347
- event.dataTransfer.dropEffect = 'move';
348
- }
349
- }
350
- onDrop(event, targetPreference, isSelected) {
351
- event.preventDefault();
352
- event.stopPropagation();
353
- if (!event.dataTransfer) {
354
- return;
355
- }
356
- const data = event.dataTransfer.getData('text/plain');
357
- if (!data) {
358
- return;
359
- }
360
- try {
361
- const { id: draggedId, isSelected: draggedIsSelected } = JSON.parse(data);
362
- // Only allow reordering within the same section (selected or deselected)
363
- if (draggedIsSelected !== isSelected) {
364
- return;
365
- }
366
- const draggedIndex = this.preferences.findIndex((p) => p.id === draggedId);
367
- const targetIndex = this.preferences.findIndex((p) => p.id === targetPreference.id);
368
- if (draggedIndex === -1 || targetIndex === -1 || draggedIndex === targetIndex) {
369
- return;
370
- }
371
- // Reorder the items
372
- const [draggedItem] = this.preferences.splice(draggedIndex, 1);
373
- this.preferences.splice(targetIndex, 0, draggedItem);
374
- this.changeDetectorRef.detectChanges();
375
- }
376
- catch (error) {
377
- console.error('Error handling drop:', error);
351
+ this.popupModalService.hide({ type: AutoDelegationEventTypes.Click, value: AutoDelegationEventValue.RequestAcceped });
378
352
  }
379
353
  }
380
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: LibVisualManagerModalComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i2.PopupModalService }, { token: MODAL_DATA, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
381
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.14", type: LibVisualManagerModalComponent, isStandalone: true, selector: "lib-visual-manager-modal", inputs: { data: "data" }, outputs: { event: "event" }, providers: [LibModalComponent], viewQueries: [{ propertyName: "childModalElementRef", first: true, predicate: ["childModalElementRef"], descendants: true }], ngImport: i0, template: "<div class=\"visual-manager-modal\" #childModalElementRef>\n <header class=\"visual-manager-modal__header\">\n <div class=\"visual-manager-modal__header-left\">\n <img class=\"visual-manager-modal__filter-icon\" src=\"assets/icons/filter-icon.svg\" alt=\"Filter icon\" />\n <h2 class=\"visual-manager-modal__title\">{{ 'VISUAL_MANAGER_MODAL.TITLE' | translate }}</h2>\n </div>\n <button class=\"visual-manager-modal__close-button\" (click)=\"close()\">\n <img class=\"visual-manager-modal__close-icon\" src=\"assets/icons/close-icon.svg\" alt=\"Close\" />\n </button>\n </header>\n\n <div class=\"visual-manager-modal__content\">\n <!-- Selected Items Section -->\n @if (selectedItems.length > 0) {\n <div class=\"visual-manager-modal__section\">\n <ol class=\"visual-manager-modal__list visual-manager-modal__list--ordered\">\n @for (preference of selectedItems; track preference.id; let i = $index) {\n <li \n class=\"visual-manager-modal__item\"\n (dragover)=\"onDragOver($event)\"\n (drop)=\"onDrop($event, preference, true)\"\n >\n <span class=\"visual-manager-modal__item-number\">{{ i + 1 }}</span>\n <div class=\"visual-manager-modal__input-wrapper\">\n <lib-input-field\n class=\"visual-manager-modal__item-name\"\n [formControl]=\"getPreferenceControl(preference.id)\"\n (valueChange)=\"onPreferenceNameChange(preference, $event)\"\n ></lib-input-field>\n <button class=\"visual-manager-modal__action-button1\" > </button>\n <button\n class=\"visual-manager-modal__action-button\"\n (click)=\"togglePreference(preference, $event)\"\n >\n <img class=\"visual-manager-modal__action-icon\" src=\"assets/icons/close-icon.svg\" alt=\"Remove\" />\n </button>\n </div>\n <img \n class=\"visual-manager-modal__drag-handle\" \n src=\"assets/icons/drag-handle.svg\" \n alt=\"Drag handle\"\n draggable=\"true\"\n (dragstart)=\"onDragStart($event, preference, true)\"\n (dragend)=\"onDragEnd($event)\"\n />\n </li>\n }\n </ol>\n </div>\n }\n\n <!-- Separator -->\n @if (selectedItems.length > 0 && deselectedItems.length > 0) {\n <div class=\"visual-manager-modal__separator\"></div>\n }\n\n <!-- Deselected Items Section -->\n @if (deselectedItems.length > 0) {\n <div class=\"visual-manager-modal__section\">\n <ul class=\"visual-manager-modal__list\">\n @for (preference of deselectedItems; track preference.id) {\n <li \n class=\"visual-manager-modal__item\"\n (dragover)=\"onDragOver($event)\"\n (drop)=\"onDrop($event, preference, false)\"\n >\n <div class=\"visual-manager-modal__input-wrapper\">\n <lib-input-field\n class=\"visual-manager-modal__item-name\"\n [formControl]=\"getPreferenceControl(preference.id)\"\n (valueChange)=\"onPreferenceNameChange(preference, $event)\"\n ></lib-input-field>\n <button class=\"visual-manager-modal__action-button1\" > </button>\n <button\n class=\"visual-manager-modal__action-button\"\n (click)=\"togglePreference(preference, $event)\"\n >\n <img class=\"visual-manager-modal__action-icon\" src=\"assets/icons/plus.svg\" alt=\"Add\" />\n </button>\n </div>\n <img \n class=\"visual-manager-modal__drag-handle\" \n src=\"assets/icons/drag-handle.svg\" \n alt=\"Drag handle\"\n draggable=\"true\"\n (dragstart)=\"onDragStart($event, preference, false)\"\n (dragend)=\"onDragEnd($event)\"\n />\n </li>\n }\n </ul>\n </div>\n }\n </div>\n\n <footer class=\"visual-manager-modal__footer\">\n <lib-secondary-btn (click)=\"reset()\">\n {{ 'VISUAL_MANAGER_MODAL.RESET' | translate }}\n </lib-secondary-btn>\n <lib-primary-btn (click)=\"apply()\">\n {{ 'VISUAL_MANAGER_MODAL.APPLY' | translate }}\n </lib-primary-btn>\n </footer>\n</div>\n\n", styles: [":host{font-size:clamp(0px,3.2dvw,15px)}:host *{box-sizing:border-box}.visual-manager-modal{-webkit-backdrop-filter:blur(.625em);backdrop-filter:blur(.625em);background:linear-gradient(180deg,#323133,#1f1e20);color:#fff;padding:1.5em 2em;width:28.125em;margin:0 auto;border-radius:1.5625em;font-family:Gilroy;box-shadow:.5em .5em 1em #00000080,-.5em -.5em 1em #ffffff0d;position:relative;display:flex;flex-direction:column}.visual-manager-modal__header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:1.5em;padding-bottom:1em;border-bottom:1px solid rgba(255,255,255,.1);gap:.75em}.visual-manager-modal__header-left{display:flex;flex-direction:column;align-items:center;gap:.5em;flex:1}.visual-manager-modal__filter-icon{width:3em;height:3em;cursor:pointer;flex-shrink:0}.visual-manager-modal__title{font-size:1.25em;font-weight:500;font-family:Gilroy;margin:0;color:#fff}.visual-manager-modal__close-button{background:transparent;border:none;cursor:pointer;padding:.25em;display:flex;align-items:center;justify-content:center;border-radius:50%;transition:background .2s}.visual-manager-modal__close-button:hover{background:#ffffff1a}.visual-manager-modal__close-icon{width:2em;height:2em;filter:brightness(0) saturate(100%) invert(39%) sepia(0%) saturate(0%) hue-rotate(0deg) brightness(98%) contrast(105%)}.visual-manager-modal__content{margin-bottom:1.5em;max-height:50vh;overflow-y:auto;flex:1;display:flex;flex-direction:column;gap:1em}.visual-manager-modal__section{display:flex;flex-direction:column;gap:.75em}.visual-manager-modal__section-label{font-size:.9em;font-weight:500;color:#4a9eff;margin-bottom:.25em}.visual-manager-modal__separator{height:1px;background:#ffffff1a;margin:.5em 0}.visual-manager-modal__list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:.75em}.visual-manager-modal__list--ordered{list-style:none}.visual-manager-modal__item{display:flex;align-items:center;gap:.5em;width:100%}.visual-manager-modal__item-number{display:flex;align-items:center;justify-content:center;min-width:1.5em;height:1.5em;font-size:.9em;font-weight:500;color:#ffffffb3;flex-shrink:0}.visual-manager-modal__input-wrapper{position:relative;flex:1;min-width:0}.visual-manager-modal__item-name{width:100%}.visual-manager-modal__item-name ::ng-deep .content-wrapper{position:relative}.visual-manager-modal__item-name ::ng-deep .input-field,.visual-manager-modal__item-name ::ng-deep .input-field-readonly{padding-right:2.5em}.visual-manager-modal__action-button{position:absolute;right:.4em;top:50%;transform:translateY(-50%);background:linear-gradient(174.9deg,#595859cf -26.99%,#29252dcf 22.7% 100.94%);border:none;cursor:pointer;padding:0;display:flex;align-items:center;justify-content:center;z-index:10;transition:all .2s;width:3em;height:3em;border-radius:50%;pointer-events:auto;-webkit-backdrop-filter:blur(.5326657891px);backdrop-filter:blur(.5326657891px);box-shadow:7.24px 6.58px 17.77px 1.65px #121212a6,0 0 2.45px #0000004d}.visual-manager-modal__action-button:active{opacity:.9;box-shadow:inset 2px 2px 4px #0006,inset -2px -2px 4px #ffffff14}.visual-manager-modal__action-button1{position:absolute;right:.4em;top:50%;transform:translateY(-50%);background:linear-gradient(174.9deg,#69686acf 28.4%,#29252dcf 92.06% 100.94%);border:none;cursor:pointer;padding:0;display:flex;align-items:center;justify-content:center;z-index:10;transition:all .2s;width:3em;height:3em;border-radius:50%;pointer-events:auto;-webkit-backdrop-filter:blur(.5326657891px);backdrop-filter:blur(.5326657891px);box-shadow:0 2.56px 2.56px .82px #0000006e,0 0 10.65px 5.33px #4242429c}.visual-manager-modal__action-icon{width:1em;height:1em;display:block}.visual-manager-modal__drag-handle{width:1em;height:1em;cursor:grab;flex-shrink:0;opacity:.6;-webkit-user-select:none;user-select:none}.visual-manager-modal__drag-handle:active{cursor:grabbing}.visual-manager-modal__item.dragging{opacity:.5}.visual-manager-modal__footer{display:flex;justify-content:space-between;gap:1em;padding-top:1em;border-top:1px solid rgba(255,255,255,.1);margin-top:auto}.visual-manager-modal__footer lib-secondary-btn,.visual-manager-modal__footer lib-primary-btn{flex:1}.visual-manager-modal__content::-webkit-scrollbar{width:.5em}.visual-manager-modal__content::-webkit-scrollbar-track{background:#0003;border-radius:.25em}.visual-manager-modal__content::-webkit-scrollbar-thumb{background:#fff3;border-radius:.25em}.visual-manager-modal__content::-webkit-scrollbar-thumb:hover{background:#ffffff4d}@media (max-width: 768px){:host{font-size:calc(clamp(0px,3.2dvw,15px)*.8)}.visual-manager-modal{width:90%;padding:1.25em 1.5em}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "ngmodule", type: ButtonsModule }, { kind: "component", type: i2.PrimaryBtnComponent, selector: "lib-primary-btn", inputs: ["hoverOutline", "disabled", "type", "form", "label", "showArrowIcon", "disableTextShadow", "loading$"] }, { kind: "component", type: i2.SecondaryBtnComponent, selector: "lib-secondary-btn", inputs: ["hoverOutline", "disabled", "type", "form", "label", "showArrowIcon", "disableTextShadow", "loading$"] }, { kind: "ngmodule", type: InputFieldModule }, { kind: "component", type: i2.InputFieldComponent, selector: "lib-input-field,[lib-input-field]", inputs: ["name", "autocomplete", "label", "placeholder", "type", "readonly", "focus", "enableGoogleAddress", "locationAutocompleteConfig", "defaultLocation", "mask", "prefix", "suffix", "maxLength", "value", "address", "textarea", "resize", "counter", "patterns", "trimWhiteSpace", "disabled"], outputs: ["mapError", "locationChange", "keyDown", "onBlur"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }] }); }
354
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: LibAutoDelegationModalComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i2.PopupModalService }, { token: MODAL_DATA, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
355
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.14", type: LibAutoDelegationModalComponent, isStandalone: true, selector: "lib-auto-delegation-modal", inputs: { countdown: "countdown", expandedBaseCard: "expandedBaseCard", data: "data", menuItems: "menuItems" }, outputs: { event: "event" }, providers: [LibModalComponent], viewQueries: [{ propertyName: "childModalElementRef", first: true, predicate: ["childModalElementRef"], descendants: true }], ngImport: i0, template: "<div class=\"auto-delegation\" [ngClass]=\"{ 'edit-radus': !componentData?.expandedBaseCard }\">\n <header class=\"auto-delegation__header\">\n <div class=\"auto-delegation__info\">\n <img class=\"auto-delegation__avatar\" [src]=\"componentData?.data?.imgSrc\" alt=\"User Avatar\" />\n <div class=\"auto-delegation__wapper overflow\">\n <div class=\"auto-delegation__title overflow\">{{ componentData?.data?.title }}</div>\n <span class=\"auto-delegation__name\">{{ componentData?.data?.name }}, </span>\n <span class=\"auto-delegation__location\">{{ componentData?.data?.location }}</span>\n </div>\n </div>\n @if (componentData?.menuItems?.length) {\n <div class=\"auto-delegation__menu\">\n <div>\n <lib-menu-btn [disableTranslation]=\"true\" [menuItems]=\"componentData?.menuItems\">\n <img height=\"25px\" width=\"5px\" src=\"assets/auto-delegation-modal/menu.svg\" alt=\"\" />\n </lib-menu-btn>\n </div>\n </div>\n }\n </header>\n <div class=\"auto-delegation__details\">\n <div class=\"auto-delegation__meetings\">\n <div class=\"auto-delegation__meetings-count gradient-text\">{{ componentData?.data?.meetings }} {{ 'AUTO_DELEGATION.MEETINGS' | translate }}</div>\n <div class=\"auto-delegation__meetings-duration gradient-text\">{{ componentData?.data?.days }}</div>\n </div>\n <div class=\"auto-delegation__price\">\n <div class=\"auto-delegation__price-value gradient-text\">\n $\n <div class=\"auto-delegation__price-number gradient-text\">{{ componentData?.data?.price }}</div>\n </div>\n </div>\n </div>\n <div class=\"auto-delegation__lists\">\n <ul class=\"auto-delegation__lists-features\">\n @for (opt of componentData?.data?.planOptions; track opt) {\n <li class=\"auto-delegation__lists-feature\">{{ opt }}</li>\n }\n </ul>\n </div>\n\n <div class=\"auto-delegation__action\">\n <div class=\"auto-delegation__action-timer\">\n <div class=\"auto-delegation__countdown\">\n <!-- Background Image -->\n <img class=\"auto-delegation__countdown-background-image\" src=\"assets/auto-delegation-modal/timer-center-dot.svg\" />\n <!-- SVG Countdown Animation -->\n <svg class=\"auto-delegation__countdown-active-stroke\" width=\"100%\" height=\"100%\" viewBox=\"0 0 103 103\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g\n class=\"auto-delegation__countdown-active-g\"\n [attr.mask]=\"'url(#' + activeCountdownPathId + ')'\"\n opacity=\"1\"\n [style.transform]=\"'rotate(' + 0 + 'deg)'\"\n style=\"transform-origin: center\"\n >\n <circle cx=\"50\" cy=\"50\" r=\"50\" fill=\"#FFB5E9\" />\n </g>\n <defs>\n <mask [attr.id]=\"activeCountdownPathId\">\n <circle\n d=\"M 9.04 78.68 A 50 50 0 1 1 90.96 78.68\"\n class=\"auto-delegation__animated-path\"\n cx=\"50\"\n cy=\"50\"\n r=\"42.5\"\n stroke=\"white\"\n stroke-linecap=\"round\"\n stroke-width=\"10.64\"\n [attr.stroke-dasharray]=\"totalStrokeLength\"\n [attr.stroke-dashoffset]=\"strokeDashOffset\"\n />\n </mask>\n </defs>\n </svg>\n\n <!-- Countdown Timer -->\n <div class=\"auto-delegation__countdown-number\">{{ currentCountdownAt }} s</div>\n </div>\n </div>\n\n <div #childModalElementRef class=\"auto-delegation__glowing-text\" (click)=\"accept()\">{{ 'AUTO_DELEGATION.ACCEPT_REQUEST' | translate }}</div>\n <div class=\"auto-delegation__close-button\" (click)=\"reject()\">\n <img class=\"auto-delegation__close-icon\" src=\"assets/auto-delegation-modal/cross.svg\" alt=\"cross-icon\" />\n </div>\n </div>\n <div class=\"auto-delegation__dropDown\">\n <span (click)=\"componentData.expandedBaseCard = !componentData.expandedBaseCard\"\n >{{ 'DASHBOARD.SEE_' + (componentData?.expandedBaseCard ? 'LESS' : 'MORE') | translate }}...\n </span>\n </div>\n\n @if (componentData?.expandedBaseCard) {\n <div class=\"auto-delegation__profile\" [@dropDownMenu]>\n <div class=\"auto-delegation__profile-header\">\n <div>\n <h3 class=\"red-text\">{{ 'AUTO_DELEGATION.SCORE_PREFERRED' | translate }}</h3>\n <p>{{ componentData?.data?.score }} / {{ componentData?.data?.preferred }}+</p>\n </div>\n <div>\n <h3 class=\"red-text text-right\">{{ 'AUTO_DELEGATION.LIFE_TIME_FEE' | translate }}</h3>\n <p class=\"text-right\">{{ componentData?.data?.lifeTimeFee }}</p>\n </div>\n </div>\n <div class=\"auto-delegation__profile-header\">\n <div>\n <h3 class=\"red-text\">{{ 'AUTO_DELEGATION.LIFE_TIME_MEETUPS' | translate }}</h3>\n <p>{{ componentData?.data?.lifeTimeMeetups }}</p>\n </div>\n <div>\n <h3 class=\"red-text text-right\">{{ 'AUTO_DELEGATION.JOIN_DATE' | translate }}</h3>\n <p class=\"text-right\">{{ componentData?.data?.joinDate }}</p>\n </div>\n </div>\n <div class=\"auto-delegation__profile-summary-container\">\n <div class=\"auto-delegation__profile-summary\">\n <div>\n <h4>{{ 'AUTO_DELEGATION.PREFERENCES' | translate }} <br />{{ 'AUTO_DELEGATION.SUMMARY' | translate }}:</h4>\n <div>\n <p>\n {{ componentData?.data?.preferences?.bust?.value }}\u00B1{{ componentData?.data?.preferences?.bust?.moe }} {{ componentData?.data?.preferences?.waist?.value }}\u00B1{{\n componentData?.data?.preferences?.waist?.moe\n }}\n {{ componentData?.data?.preferences?.height?.value }}\u00B1{{ componentData?.data?.preferences?.height?.moe }}\n </p>\n </div>\n <div>\n <p>{{ 'AUTO_DELEGATION.CELIBACY' | translate }} {{ componentData?.data?.preferences.celibacy }}+</p>\n <p>{{ 'AUTO_DELEGATION.COOPERATION' | translate }} {{ componentData?.data?.preferences.cooperation }}+</p>\n <p>{{ 'AUTO_DELEGATION.INTELLIGENCE' | translate }} {{ componentData?.data?.preferences.intelligence }}+</p>\n </div>\n </div>\n <div>\n <h4 class=\"text-right\">{{ 'AUTO_DELEGATION.PREFERENCES_PROFILE' | translate }}</h4>\n <p class=\"text-right\">{{ componentData?.data?.preferencesProfile }}</p>\n <div>\n <h4 class=\"text-right\">{{ 'AUTO_DELEGATION.WEIGHT_HEIGHT_PREF' | translate }}</h4>\n <p class=\"text-right\">{{ componentData?.data?.weight }}/{{ componentData?.data?.heightpref }}</p>\n </div>\n </div>\n </div>\n <div class=\"auto-delegation__profile-summary\">\n <div>\n <h4>\n {{ 'AUTO_DELEGATION.PROFILE' | translate }} <br />\n {{ 'AUTO_DELEGATION.SUMMARY' | translate }}:\n </h4>\n <div *ngFor=\"let item of componentData?.data?.profile\">\n <p>{{ item }}</p>\n </div>\n </div>\n <div class=\"auto-delegation__col-center\">\n <h4 class=\"text-right\">{{ 'AUTO_DELEGATION.COMMUNICATION_STYLE' | translate }}</h4>\n <p class=\"text-right\">{{ componentData?.data?.communicationStyle }}</p>\n <div>\n <h4 class=\"text-right\">{{ 'AUTO_DELEGATION.GOAL' | translate }}</h4>\n <p class=\"text-right\">{{ componentData?.data?.goal }}</p>\n </div>\n </div>\n </div>\n </div>\n </div>\n }\n</div>\n", styles: [":host{font-size:clamp(0px,3.2dvw,15px)}:host *{box-sizing:border-box}.auto-delegation{-webkit-backdrop-filter:blur(.625em);backdrop-filter:blur(.625em);background:#d3d3d333;color:#fff;padding:1.625em 2.75em 2.25em;width:28.125em;margin:0 auto;border-radius:1.5625em;font-family:Gilroy;overflow-y:scroll;max-height:95vh}.auto-delegation__header{display:flex;justify-content:space-between;align-items:flex-start}.auto-delegation__details{display:flex;justify-content:space-between;align-items:center}.auto-delegation__avatar{width:3.75em;height:3.75em;border-radius:50%;object-fit:cover}.auto-delegation__wapper{padding-bottom:.375em}.auto-delegation__info{display:flex;gap:.75em;align-items:center;width:18.75em;height:4.6875em}.auto-delegation__title{font-size:1.875em;font-weight:400;padding-bottom:.5em;font-family:Calistoga;width:13.75em}.auto-delegation__name{font-size:.875em;font-weight:600;font-family:Gilroy}.auto-delegation__menu{cursor:pointer}.auto-delegation__location{font-size:.875em;font-weight:400;font-family:Gilroy;color:#ccc}.auto-delegation__meeting{width:100%;height:100%}.auto-delegation__meetings-count,.auto-delegation__meetings-duration{font-family:Gilroy;font-size:1.0625em;font-weight:400}.auto-delegation__price{text-align:end}.auto-delegation__price-value{display:flex;justify-content:flex-end;align-items:flex-start;gap:.25em}.auto-delegation__price-number{font-size:2.25em;font-weight:400}.auto-delegation__price-market{font-size:.5em;color:#8e8e8e}.auto-delegation__lists-features{padding-left:.9375em}.auto-delegation__lists{list-style:none;display:flex;justify-content:space-between;align-items:flex-start}.auto-delegation__action{border-radius:2em;background-color:#2b2929;display:flex;align-items:center;margin-top:.3125em;padding:0;height:3.4375em;justify-content:space-between}.auto-delegation__action__timer{border:.0625em solid gray;border-radius:100%;height:3.125em;width:3.125em;font-size:.875em;color:#f39c12}.auto-delegation__summary,.auto-delegation__preferences{margin-top:1em;font-size:.875em;line-height:1.5}.auto-delegation__preferences-summary{font-size:.75em;color:#aaa}.auto-delegation__glowing-text{font-family:Calistoga;font-size:1.5em;font-weight:800;color:#fff;text-align:center;margin-right:1.25em;text-shadow:0 0 .3125em #ff89ac,0 0 .625em #ff89ac,0 0 1.25em #ff89ac,0 0 2.5em #ff2475,0 0 5em #ff2475;-webkit-text-fill-color:#fff;cursor:pointer}.auto-delegation__close-button{display:flex;align-items:center;background:linear-gradient(228deg,#101113 10%,#2b2f33);padding:.625em;border-radius:100%;border:.0625em solid black;margin-right:.3125em;cursor:pointer}.auto-delegation__close-icon{width:1.375em;height:1.375em}.auto-delegation__dropDown{margin-top:.9375em;margin-bottom:.625em;display:flex;justify-content:center}.auto-delegation__dropDown>span{font-family:Gilroy;cursor:pointer;font-size:.625em;color:#8e8e8e}.auto-delegation__profile-summary-container{margin-top:1.25em}.auto-delegation__profile{overflow:hidden}.auto-delegation__profile-header,.auto-delegation__profile-summary{display:flex;justify-content:space-between}.auto-delegation__profile-header>div,.auto-delegation__profile-summary>div{text-align:left;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;width:11.25em}.auto-delegation__profile-summary div h4{font-weight:500;font-family:Gilroy;font-size:1em;margin-bottom:0;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.auto-delegation__profile-summary div p{color:#8e8e8e;font-size:.85em;font-weight:400;font-family:Gilroy;margin:.125em!important;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.auto-delegation__countdown{position:relative;width:4.375em;height:4.375em;right:.75em}.auto-delegation__countdown-background-image{background:linear-gradient(274deg,#232323 50%,#2b2f33);box-shadow:.01em -.0525em 1.53em #82676e,.49em .49em 1.715em #141415;border:2px solid #464646;border-radius:100%;position:absolute;top:.6em;left:.9em;width:3.2em;height:3.2em}.auto-delegation__countdown-active-stroke{position:absolute;width:3.5em;height:3.5em;top:.6em;left:.6em;animation-duration:.8s;transform:rotate(90deg)}.auto-delegation__countdown-number{height:3em;width:3em;display:flex;justify-content:center;align-items:center;background:linear-gradient(66deg,#101113 12%,#2b2f33);box-shadow:inset -.49em -.49em 1.715em #453d3f,inset .49em .49em 1.715em #141415;border:2px solid #333333;border-radius:100%;position:absolute;top:50%;left:57%;transform:translate(-50%,-50%);font-weight:600;font-size:.6em;color:#fff}.auto-delegation__col-center{display:flex;flex-direction:column;justify-content:center}.auto-delegation__animated-path{transition:stroke-dashoffset 1s linear}.gradient-text{background:linear-gradient(to top,#efc5d1,#fe638e);-webkit-background-clip:text;-webkit-text-fill-color:transparent}.auto-delegation:before{content:\"\";position:absolute;inset:0;border-radius:1.5625em;padding:.125em;background:linear-gradient(to top,transparent,transparent,#ccabc4);-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:exclude;z-index:-1}.red-text{font-family:Gilroy;margin-top:.5em;margin-bottom:0;font-size:1.0625em;color:#f4446c;font-weight:600}.text-right{text-align:end}.overflow{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}@media (max-width: 768px){:host{font-size:calc(clamp(0px,3.2dvw,15px)*.8)}}.edit-radus{border-radius:5.5625em!important}.edit-radus:before{border-radius:5.5625em!important}::-webkit-scrollbar{width:0;background:transparent}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: BaseCardModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "ngmodule", type: ButtonsModule }, { kind: "component", type: i2.MenuBtnComponent, selector: "lib-menu-btn", inputs: ["menuBtnIcon", "menuBtnTooltip", "menuBtnTooltipPosition", "menuBtnIconName", "menuBtnImgUrl", "menuBtnNotificationIconUrl", "menuDirection", "hasNotification", "menuItems", "disableTranslation", "listItem", "listItemIndex", "selectable", "overlayClass", "isUserMenu", "onlyCloseOnClickOutside", "hoverOutline", "disabled", "type", "form", "label", "showArrowIcon", "disableTextShadow", "loading$"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "ngmodule", type: MatButtonModule }, { kind: "ngmodule", type: PopperModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], animations: [SeeMoreAnimation] }); }
382
356
  }
383
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: LibVisualManagerModalComponent, decorators: [{
357
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: LibAutoDelegationModalComponent, decorators: [{
384
358
  type: Component,
385
- args: [{ selector: 'lib-visual-manager-modal', standalone: true, imports: [CommonModule, TranslateModule, ButtonsModule, InputFieldModule, ReactiveFormsModule], providers: [LibModalComponent], schemas: [CUSTOM_ELEMENTS_SCHEMA], template: "<div class=\"visual-manager-modal\" #childModalElementRef>\n <header class=\"visual-manager-modal__header\">\n <div class=\"visual-manager-modal__header-left\">\n <img class=\"visual-manager-modal__filter-icon\" src=\"assets/icons/filter-icon.svg\" alt=\"Filter icon\" />\n <h2 class=\"visual-manager-modal__title\">{{ 'VISUAL_MANAGER_MODAL.TITLE' | translate }}</h2>\n </div>\n <button class=\"visual-manager-modal__close-button\" (click)=\"close()\">\n <img class=\"visual-manager-modal__close-icon\" src=\"assets/icons/close-icon.svg\" alt=\"Close\" />\n </button>\n </header>\n\n <div class=\"visual-manager-modal__content\">\n <!-- Selected Items Section -->\n @if (selectedItems.length > 0) {\n <div class=\"visual-manager-modal__section\">\n <ol class=\"visual-manager-modal__list visual-manager-modal__list--ordered\">\n @for (preference of selectedItems; track preference.id; let i = $index) {\n <li \n class=\"visual-manager-modal__item\"\n (dragover)=\"onDragOver($event)\"\n (drop)=\"onDrop($event, preference, true)\"\n >\n <span class=\"visual-manager-modal__item-number\">{{ i + 1 }}</span>\n <div class=\"visual-manager-modal__input-wrapper\">\n <lib-input-field\n class=\"visual-manager-modal__item-name\"\n [formControl]=\"getPreferenceControl(preference.id)\"\n (valueChange)=\"onPreferenceNameChange(preference, $event)\"\n ></lib-input-field>\n <button class=\"visual-manager-modal__action-button1\" > </button>\n <button\n class=\"visual-manager-modal__action-button\"\n (click)=\"togglePreference(preference, $event)\"\n >\n <img class=\"visual-manager-modal__action-icon\" src=\"assets/icons/close-icon.svg\" alt=\"Remove\" />\n </button>\n </div>\n <img \n class=\"visual-manager-modal__drag-handle\" \n src=\"assets/icons/drag-handle.svg\" \n alt=\"Drag handle\"\n draggable=\"true\"\n (dragstart)=\"onDragStart($event, preference, true)\"\n (dragend)=\"onDragEnd($event)\"\n />\n </li>\n }\n </ol>\n </div>\n }\n\n <!-- Separator -->\n @if (selectedItems.length > 0 && deselectedItems.length > 0) {\n <div class=\"visual-manager-modal__separator\"></div>\n }\n\n <!-- Deselected Items Section -->\n @if (deselectedItems.length > 0) {\n <div class=\"visual-manager-modal__section\">\n <ul class=\"visual-manager-modal__list\">\n @for (preference of deselectedItems; track preference.id) {\n <li \n class=\"visual-manager-modal__item\"\n (dragover)=\"onDragOver($event)\"\n (drop)=\"onDrop($event, preference, false)\"\n >\n <div class=\"visual-manager-modal__input-wrapper\">\n <lib-input-field\n class=\"visual-manager-modal__item-name\"\n [formControl]=\"getPreferenceControl(preference.id)\"\n (valueChange)=\"onPreferenceNameChange(preference, $event)\"\n ></lib-input-field>\n <button class=\"visual-manager-modal__action-button1\" > </button>\n <button\n class=\"visual-manager-modal__action-button\"\n (click)=\"togglePreference(preference, $event)\"\n >\n <img class=\"visual-manager-modal__action-icon\" src=\"assets/icons/plus.svg\" alt=\"Add\" />\n </button>\n </div>\n <img \n class=\"visual-manager-modal__drag-handle\" \n src=\"assets/icons/drag-handle.svg\" \n alt=\"Drag handle\"\n draggable=\"true\"\n (dragstart)=\"onDragStart($event, preference, false)\"\n (dragend)=\"onDragEnd($event)\"\n />\n </li>\n }\n </ul>\n </div>\n }\n </div>\n\n <footer class=\"visual-manager-modal__footer\">\n <lib-secondary-btn (click)=\"reset()\">\n {{ 'VISUAL_MANAGER_MODAL.RESET' | translate }}\n </lib-secondary-btn>\n <lib-primary-btn (click)=\"apply()\">\n {{ 'VISUAL_MANAGER_MODAL.APPLY' | translate }}\n </lib-primary-btn>\n </footer>\n</div>\n\n", styles: [":host{font-size:clamp(0px,3.2dvw,15px)}:host *{box-sizing:border-box}.visual-manager-modal{-webkit-backdrop-filter:blur(.625em);backdrop-filter:blur(.625em);background:linear-gradient(180deg,#323133,#1f1e20);color:#fff;padding:1.5em 2em;width:28.125em;margin:0 auto;border-radius:1.5625em;font-family:Gilroy;box-shadow:.5em .5em 1em #00000080,-.5em -.5em 1em #ffffff0d;position:relative;display:flex;flex-direction:column}.visual-manager-modal__header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:1.5em;padding-bottom:1em;border-bottom:1px solid rgba(255,255,255,.1);gap:.75em}.visual-manager-modal__header-left{display:flex;flex-direction:column;align-items:center;gap:.5em;flex:1}.visual-manager-modal__filter-icon{width:3em;height:3em;cursor:pointer;flex-shrink:0}.visual-manager-modal__title{font-size:1.25em;font-weight:500;font-family:Gilroy;margin:0;color:#fff}.visual-manager-modal__close-button{background:transparent;border:none;cursor:pointer;padding:.25em;display:flex;align-items:center;justify-content:center;border-radius:50%;transition:background .2s}.visual-manager-modal__close-button:hover{background:#ffffff1a}.visual-manager-modal__close-icon{width:2em;height:2em;filter:brightness(0) saturate(100%) invert(39%) sepia(0%) saturate(0%) hue-rotate(0deg) brightness(98%) contrast(105%)}.visual-manager-modal__content{margin-bottom:1.5em;max-height:50vh;overflow-y:auto;flex:1;display:flex;flex-direction:column;gap:1em}.visual-manager-modal__section{display:flex;flex-direction:column;gap:.75em}.visual-manager-modal__section-label{font-size:.9em;font-weight:500;color:#4a9eff;margin-bottom:.25em}.visual-manager-modal__separator{height:1px;background:#ffffff1a;margin:.5em 0}.visual-manager-modal__list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:.75em}.visual-manager-modal__list--ordered{list-style:none}.visual-manager-modal__item{display:flex;align-items:center;gap:.5em;width:100%}.visual-manager-modal__item-number{display:flex;align-items:center;justify-content:center;min-width:1.5em;height:1.5em;font-size:.9em;font-weight:500;color:#ffffffb3;flex-shrink:0}.visual-manager-modal__input-wrapper{position:relative;flex:1;min-width:0}.visual-manager-modal__item-name{width:100%}.visual-manager-modal__item-name ::ng-deep .content-wrapper{position:relative}.visual-manager-modal__item-name ::ng-deep .input-field,.visual-manager-modal__item-name ::ng-deep .input-field-readonly{padding-right:2.5em}.visual-manager-modal__action-button{position:absolute;right:.4em;top:50%;transform:translateY(-50%);background:linear-gradient(174.9deg,#595859cf -26.99%,#29252dcf 22.7% 100.94%);border:none;cursor:pointer;padding:0;display:flex;align-items:center;justify-content:center;z-index:10;transition:all .2s;width:3em;height:3em;border-radius:50%;pointer-events:auto;-webkit-backdrop-filter:blur(.5326657891px);backdrop-filter:blur(.5326657891px);box-shadow:7.24px 6.58px 17.77px 1.65px #121212a6,0 0 2.45px #0000004d}.visual-manager-modal__action-button:active{opacity:.9;box-shadow:inset 2px 2px 4px #0006,inset -2px -2px 4px #ffffff14}.visual-manager-modal__action-button1{position:absolute;right:.4em;top:50%;transform:translateY(-50%);background:linear-gradient(174.9deg,#69686acf 28.4%,#29252dcf 92.06% 100.94%);border:none;cursor:pointer;padding:0;display:flex;align-items:center;justify-content:center;z-index:10;transition:all .2s;width:3em;height:3em;border-radius:50%;pointer-events:auto;-webkit-backdrop-filter:blur(.5326657891px);backdrop-filter:blur(.5326657891px);box-shadow:0 2.56px 2.56px .82px #0000006e,0 0 10.65px 5.33px #4242429c}.visual-manager-modal__action-icon{width:1em;height:1em;display:block}.visual-manager-modal__drag-handle{width:1em;height:1em;cursor:grab;flex-shrink:0;opacity:.6;-webkit-user-select:none;user-select:none}.visual-manager-modal__drag-handle:active{cursor:grabbing}.visual-manager-modal__item.dragging{opacity:.5}.visual-manager-modal__footer{display:flex;justify-content:space-between;gap:1em;padding-top:1em;border-top:1px solid rgba(255,255,255,.1);margin-top:auto}.visual-manager-modal__footer lib-secondary-btn,.visual-manager-modal__footer lib-primary-btn{flex:1}.visual-manager-modal__content::-webkit-scrollbar{width:.5em}.visual-manager-modal__content::-webkit-scrollbar-track{background:#0003;border-radius:.25em}.visual-manager-modal__content::-webkit-scrollbar-thumb{background:#fff3;border-radius:.25em}.visual-manager-modal__content::-webkit-scrollbar-thumb:hover{background:#ffffff4d}@media (max-width: 768px){:host{font-size:calc(clamp(0px,3.2dvw,15px)*.8)}.visual-manager-modal{width:90%;padding:1.25em 1.5em}}\n"] }]
359
+ args: [{ selector: 'lib-auto-delegation-modal', animations: [SeeMoreAnimation], imports: [CommonModule, BaseCardModule, TranslateModule, ButtonsModule, MatMenuModule, MatButtonModule, PopperModule], providers: [LibModalComponent], template: "<div class=\"auto-delegation\" [ngClass]=\"{ 'edit-radus': !componentData?.expandedBaseCard }\">\n <header class=\"auto-delegation__header\">\n <div class=\"auto-delegation__info\">\n <img class=\"auto-delegation__avatar\" [src]=\"componentData?.data?.imgSrc\" alt=\"User Avatar\" />\n <div class=\"auto-delegation__wapper overflow\">\n <div class=\"auto-delegation__title overflow\">{{ componentData?.data?.title }}</div>\n <span class=\"auto-delegation__name\">{{ componentData?.data?.name }}, </span>\n <span class=\"auto-delegation__location\">{{ componentData?.data?.location }}</span>\n </div>\n </div>\n @if (componentData?.menuItems?.length) {\n <div class=\"auto-delegation__menu\">\n <div>\n <lib-menu-btn [disableTranslation]=\"true\" [menuItems]=\"componentData?.menuItems\">\n <img height=\"25px\" width=\"5px\" src=\"assets/auto-delegation-modal/menu.svg\" alt=\"\" />\n </lib-menu-btn>\n </div>\n </div>\n }\n </header>\n <div class=\"auto-delegation__details\">\n <div class=\"auto-delegation__meetings\">\n <div class=\"auto-delegation__meetings-count gradient-text\">{{ componentData?.data?.meetings }} {{ 'AUTO_DELEGATION.MEETINGS' | translate }}</div>\n <div class=\"auto-delegation__meetings-duration gradient-text\">{{ componentData?.data?.days }}</div>\n </div>\n <div class=\"auto-delegation__price\">\n <div class=\"auto-delegation__price-value gradient-text\">\n $\n <div class=\"auto-delegation__price-number gradient-text\">{{ componentData?.data?.price }}</div>\n </div>\n </div>\n </div>\n <div class=\"auto-delegation__lists\">\n <ul class=\"auto-delegation__lists-features\">\n @for (opt of componentData?.data?.planOptions; track opt) {\n <li class=\"auto-delegation__lists-feature\">{{ opt }}</li>\n }\n </ul>\n </div>\n\n <div class=\"auto-delegation__action\">\n <div class=\"auto-delegation__action-timer\">\n <div class=\"auto-delegation__countdown\">\n <!-- Background Image -->\n <img class=\"auto-delegation__countdown-background-image\" src=\"assets/auto-delegation-modal/timer-center-dot.svg\" />\n <!-- SVG Countdown Animation -->\n <svg class=\"auto-delegation__countdown-active-stroke\" width=\"100%\" height=\"100%\" viewBox=\"0 0 103 103\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g\n class=\"auto-delegation__countdown-active-g\"\n [attr.mask]=\"'url(#' + activeCountdownPathId + ')'\"\n opacity=\"1\"\n [style.transform]=\"'rotate(' + 0 + 'deg)'\"\n style=\"transform-origin: center\"\n >\n <circle cx=\"50\" cy=\"50\" r=\"50\" fill=\"#FFB5E9\" />\n </g>\n <defs>\n <mask [attr.id]=\"activeCountdownPathId\">\n <circle\n d=\"M 9.04 78.68 A 50 50 0 1 1 90.96 78.68\"\n class=\"auto-delegation__animated-path\"\n cx=\"50\"\n cy=\"50\"\n r=\"42.5\"\n stroke=\"white\"\n stroke-linecap=\"round\"\n stroke-width=\"10.64\"\n [attr.stroke-dasharray]=\"totalStrokeLength\"\n [attr.stroke-dashoffset]=\"strokeDashOffset\"\n />\n </mask>\n </defs>\n </svg>\n\n <!-- Countdown Timer -->\n <div class=\"auto-delegation__countdown-number\">{{ currentCountdownAt }} s</div>\n </div>\n </div>\n\n <div #childModalElementRef class=\"auto-delegation__glowing-text\" (click)=\"accept()\">{{ 'AUTO_DELEGATION.ACCEPT_REQUEST' | translate }}</div>\n <div class=\"auto-delegation__close-button\" (click)=\"reject()\">\n <img class=\"auto-delegation__close-icon\" src=\"assets/auto-delegation-modal/cross.svg\" alt=\"cross-icon\" />\n </div>\n </div>\n <div class=\"auto-delegation__dropDown\">\n <span (click)=\"componentData.expandedBaseCard = !componentData.expandedBaseCard\"\n >{{ 'DASHBOARD.SEE_' + (componentData?.expandedBaseCard ? 'LESS' : 'MORE') | translate }}...\n </span>\n </div>\n\n @if (componentData?.expandedBaseCard) {\n <div class=\"auto-delegation__profile\" [@dropDownMenu]>\n <div class=\"auto-delegation__profile-header\">\n <div>\n <h3 class=\"red-text\">{{ 'AUTO_DELEGATION.SCORE_PREFERRED' | translate }}</h3>\n <p>{{ componentData?.data?.score }} / {{ componentData?.data?.preferred }}+</p>\n </div>\n <div>\n <h3 class=\"red-text text-right\">{{ 'AUTO_DELEGATION.LIFE_TIME_FEE' | translate }}</h3>\n <p class=\"text-right\">{{ componentData?.data?.lifeTimeFee }}</p>\n </div>\n </div>\n <div class=\"auto-delegation__profile-header\">\n <div>\n <h3 class=\"red-text\">{{ 'AUTO_DELEGATION.LIFE_TIME_MEETUPS' | translate }}</h3>\n <p>{{ componentData?.data?.lifeTimeMeetups }}</p>\n </div>\n <div>\n <h3 class=\"red-text text-right\">{{ 'AUTO_DELEGATION.JOIN_DATE' | translate }}</h3>\n <p class=\"text-right\">{{ componentData?.data?.joinDate }}</p>\n </div>\n </div>\n <div class=\"auto-delegation__profile-summary-container\">\n <div class=\"auto-delegation__profile-summary\">\n <div>\n <h4>{{ 'AUTO_DELEGATION.PREFERENCES' | translate }} <br />{{ 'AUTO_DELEGATION.SUMMARY' | translate }}:</h4>\n <div>\n <p>\n {{ componentData?.data?.preferences?.bust?.value }}\u00B1{{ componentData?.data?.preferences?.bust?.moe }} {{ componentData?.data?.preferences?.waist?.value }}\u00B1{{\n componentData?.data?.preferences?.waist?.moe\n }}\n {{ componentData?.data?.preferences?.height?.value }}\u00B1{{ componentData?.data?.preferences?.height?.moe }}\n </p>\n </div>\n <div>\n <p>{{ 'AUTO_DELEGATION.CELIBACY' | translate }} {{ componentData?.data?.preferences.celibacy }}+</p>\n <p>{{ 'AUTO_DELEGATION.COOPERATION' | translate }} {{ componentData?.data?.preferences.cooperation }}+</p>\n <p>{{ 'AUTO_DELEGATION.INTELLIGENCE' | translate }} {{ componentData?.data?.preferences.intelligence }}+</p>\n </div>\n </div>\n <div>\n <h4 class=\"text-right\">{{ 'AUTO_DELEGATION.PREFERENCES_PROFILE' | translate }}</h4>\n <p class=\"text-right\">{{ componentData?.data?.preferencesProfile }}</p>\n <div>\n <h4 class=\"text-right\">{{ 'AUTO_DELEGATION.WEIGHT_HEIGHT_PREF' | translate }}</h4>\n <p class=\"text-right\">{{ componentData?.data?.weight }}/{{ componentData?.data?.heightpref }}</p>\n </div>\n </div>\n </div>\n <div class=\"auto-delegation__profile-summary\">\n <div>\n <h4>\n {{ 'AUTO_DELEGATION.PROFILE' | translate }} <br />\n {{ 'AUTO_DELEGATION.SUMMARY' | translate }}:\n </h4>\n <div *ngFor=\"let item of componentData?.data?.profile\">\n <p>{{ item }}</p>\n </div>\n </div>\n <div class=\"auto-delegation__col-center\">\n <h4 class=\"text-right\">{{ 'AUTO_DELEGATION.COMMUNICATION_STYLE' | translate }}</h4>\n <p class=\"text-right\">{{ componentData?.data?.communicationStyle }}</p>\n <div>\n <h4 class=\"text-right\">{{ 'AUTO_DELEGATION.GOAL' | translate }}</h4>\n <p class=\"text-right\">{{ componentData?.data?.goal }}</p>\n </div>\n </div>\n </div>\n </div>\n </div>\n }\n</div>\n", styles: [":host{font-size:clamp(0px,3.2dvw,15px)}:host *{box-sizing:border-box}.auto-delegation{-webkit-backdrop-filter:blur(.625em);backdrop-filter:blur(.625em);background:#d3d3d333;color:#fff;padding:1.625em 2.75em 2.25em;width:28.125em;margin:0 auto;border-radius:1.5625em;font-family:Gilroy;overflow-y:scroll;max-height:95vh}.auto-delegation__header{display:flex;justify-content:space-between;align-items:flex-start}.auto-delegation__details{display:flex;justify-content:space-between;align-items:center}.auto-delegation__avatar{width:3.75em;height:3.75em;border-radius:50%;object-fit:cover}.auto-delegation__wapper{padding-bottom:.375em}.auto-delegation__info{display:flex;gap:.75em;align-items:center;width:18.75em;height:4.6875em}.auto-delegation__title{font-size:1.875em;font-weight:400;padding-bottom:.5em;font-family:Calistoga;width:13.75em}.auto-delegation__name{font-size:.875em;font-weight:600;font-family:Gilroy}.auto-delegation__menu{cursor:pointer}.auto-delegation__location{font-size:.875em;font-weight:400;font-family:Gilroy;color:#ccc}.auto-delegation__meeting{width:100%;height:100%}.auto-delegation__meetings-count,.auto-delegation__meetings-duration{font-family:Gilroy;font-size:1.0625em;font-weight:400}.auto-delegation__price{text-align:end}.auto-delegation__price-value{display:flex;justify-content:flex-end;align-items:flex-start;gap:.25em}.auto-delegation__price-number{font-size:2.25em;font-weight:400}.auto-delegation__price-market{font-size:.5em;color:#8e8e8e}.auto-delegation__lists-features{padding-left:.9375em}.auto-delegation__lists{list-style:none;display:flex;justify-content:space-between;align-items:flex-start}.auto-delegation__action{border-radius:2em;background-color:#2b2929;display:flex;align-items:center;margin-top:.3125em;padding:0;height:3.4375em;justify-content:space-between}.auto-delegation__action__timer{border:.0625em solid gray;border-radius:100%;height:3.125em;width:3.125em;font-size:.875em;color:#f39c12}.auto-delegation__summary,.auto-delegation__preferences{margin-top:1em;font-size:.875em;line-height:1.5}.auto-delegation__preferences-summary{font-size:.75em;color:#aaa}.auto-delegation__glowing-text{font-family:Calistoga;font-size:1.5em;font-weight:800;color:#fff;text-align:center;margin-right:1.25em;text-shadow:0 0 .3125em #ff89ac,0 0 .625em #ff89ac,0 0 1.25em #ff89ac,0 0 2.5em #ff2475,0 0 5em #ff2475;-webkit-text-fill-color:#fff;cursor:pointer}.auto-delegation__close-button{display:flex;align-items:center;background:linear-gradient(228deg,#101113 10%,#2b2f33);padding:.625em;border-radius:100%;border:.0625em solid black;margin-right:.3125em;cursor:pointer}.auto-delegation__close-icon{width:1.375em;height:1.375em}.auto-delegation__dropDown{margin-top:.9375em;margin-bottom:.625em;display:flex;justify-content:center}.auto-delegation__dropDown>span{font-family:Gilroy;cursor:pointer;font-size:.625em;color:#8e8e8e}.auto-delegation__profile-summary-container{margin-top:1.25em}.auto-delegation__profile{overflow:hidden}.auto-delegation__profile-header,.auto-delegation__profile-summary{display:flex;justify-content:space-between}.auto-delegation__profile-header>div,.auto-delegation__profile-summary>div{text-align:left;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;width:11.25em}.auto-delegation__profile-summary div h4{font-weight:500;font-family:Gilroy;font-size:1em;margin-bottom:0;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.auto-delegation__profile-summary div p{color:#8e8e8e;font-size:.85em;font-weight:400;font-family:Gilroy;margin:.125em!important;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.auto-delegation__countdown{position:relative;width:4.375em;height:4.375em;right:.75em}.auto-delegation__countdown-background-image{background:linear-gradient(274deg,#232323 50%,#2b2f33);box-shadow:.01em -.0525em 1.53em #82676e,.49em .49em 1.715em #141415;border:2px solid #464646;border-radius:100%;position:absolute;top:.6em;left:.9em;width:3.2em;height:3.2em}.auto-delegation__countdown-active-stroke{position:absolute;width:3.5em;height:3.5em;top:.6em;left:.6em;animation-duration:.8s;transform:rotate(90deg)}.auto-delegation__countdown-number{height:3em;width:3em;display:flex;justify-content:center;align-items:center;background:linear-gradient(66deg,#101113 12%,#2b2f33);box-shadow:inset -.49em -.49em 1.715em #453d3f,inset .49em .49em 1.715em #141415;border:2px solid #333333;border-radius:100%;position:absolute;top:50%;left:57%;transform:translate(-50%,-50%);font-weight:600;font-size:.6em;color:#fff}.auto-delegation__col-center{display:flex;flex-direction:column;justify-content:center}.auto-delegation__animated-path{transition:stroke-dashoffset 1s linear}.gradient-text{background:linear-gradient(to top,#efc5d1,#fe638e);-webkit-background-clip:text;-webkit-text-fill-color:transparent}.auto-delegation:before{content:\"\";position:absolute;inset:0;border-radius:1.5625em;padding:.125em;background:linear-gradient(to top,transparent,transparent,#ccabc4);-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:exclude;z-index:-1}.red-text{font-family:Gilroy;margin-top:.5em;margin-bottom:0;font-size:1.0625em;color:#f4446c;font-weight:600}.text-right{text-align:end}.overflow{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}@media (max-width: 768px){:host{font-size:calc(clamp(0px,3.2dvw,15px)*.8)}}.edit-radus{border-radius:5.5625em!important}.edit-radus:before{border-radius:5.5625em!important}::-webkit-scrollbar{width:0;background:transparent}\n"] }]
386
360
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i2.PopupModalService }, { type: undefined, decorators: [{
387
361
  type: Optional
388
362
  }, {
@@ -391,24 +365,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImpo
391
365
  }] }], propDecorators: { childModalElementRef: [{
392
366
  type: ViewChild,
393
367
  args: ['childModalElementRef']
368
+ }], countdown: [{
369
+ type: Input
370
+ }], expandedBaseCard: [{
371
+ type: Input
394
372
  }], data: [{
395
373
  type: Input
374
+ }], menuItems: [{
375
+ type: Input
396
376
  }], event: [{
397
377
  type: Output
398
378
  }] } });
399
379
 
400
- var Direction;
401
- (function (Direction) {
402
- Direction["horizontal"] = "horizontal";
403
- Direction["vertical"] = "vertical";
404
- })(Direction || (Direction = {}));
405
-
406
- var AgendaItemType;
407
- (function (AgendaItemType) {
408
- AgendaItemType["DAY"] = "day";
409
- AgendaItemType["AD"] = "ad";
410
- })(AgendaItemType || (AgendaItemType = {}));
411
-
412
380
  class AgendaDayCardComponent {
413
381
  constructor() {
414
382
  this.fullName = '';
@@ -568,24 +536,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImpo
568
536
  }]
569
537
  }] });
570
538
 
571
- var EventTypes;
572
- (function (EventTypes) {
573
- EventTypes["DATE"] = "Date";
574
- EventTypes["GOOGLE"] = "Google";
575
- EventTypes["MICROSOFT"] = "Microsoft";
576
- EventTypes["SYSTEM"] = "System";
577
- EventTypes["USER"] = "User";
578
- EventTypes["ITINERARY"] = "Itinerary";
579
- })(EventTypes || (EventTypes = {}));
580
-
581
- var RecurringTypes;
582
- (function (RecurringTypes) {
583
- RecurringTypes["DAILY"] = "DAILY";
584
- RecurringTypes["WEEKLY"] = "WEEKLY";
585
- RecurringTypes["MONTHLY"] = "MONTHLY";
586
- RecurringTypes["ANNUALLY"] = "ANNUALLY";
587
- })(RecurringTypes || (RecurringTypes = {}));
588
-
589
539
  const recurringOptions = [
590
540
  { title: 'CALENDAR.DOES_NOT_REPEAT', type: null, name: 'Does not repeat' },
591
541
  {
@@ -826,9 +776,8 @@ class FallbackTranslatePipe {
826
776
  const translated = this.translate.instant(key);
827
777
  return translated === key ? fallback : translated;
828
778
  }
829
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: FallbackTranslatePipe, deps: [{ token: i3.TranslateService }], target: i0.ɵɵFactoryTarget.Pipe }); }
779
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: FallbackTranslatePipe, deps: [{ token: i1$1.TranslateService }], target: i0.ɵɵFactoryTarget.Pipe }); }
830
780
  static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.3.14", ngImport: i0, type: FallbackTranslatePipe, isStandalone: true, name: "fallbackTranslate" }); }
831
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: FallbackTranslatePipe, providedIn: 'root' }); }
832
781
  }
833
782
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: FallbackTranslatePipe, decorators: [{
834
783
  type: Pipe,
@@ -836,12 +785,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImpo
836
785
  name: 'fallbackTranslate',
837
786
  standalone: true,
838
787
  }]
839
- }, {
840
- type: Injectable,
841
- args: [{
842
- providedIn: 'root',
843
- }]
844
- }], ctorParameters: () => [{ type: i3.TranslateService }] });
788
+ }], ctorParameters: () => [{ type: i1$1.TranslateService }] });
845
789
 
846
790
  class LibEventInfoComponent {
847
791
  constructor(fallbackTranslatePipe, calendarUtilService) {
@@ -861,54 +805,17 @@ class LibEventInfoComponent {
861
805
  this.note = this.recurringException?.note || this.updatedRecurringException?.note || this.event.note;
862
806
  }
863
807
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: LibEventInfoComponent, deps: [{ token: FallbackTranslatePipe }, { token: CalendarUtilsService }], target: i0.ɵɵFactoryTarget.Component }); }
864
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.14", type: LibEventInfoComponent, isStandalone: true, selector: "lib-event-info", inputs: { event: "event", calendars: "calendars" }, ngImport: i0, template: "<div class=\"event-info-body\">\n <div class=\"data-item\" *ngIf=\"event.allDay\">\n <span><mat-icon class=\"all-day\">done_all</mat-icon> {{ 'CALENDAR.ALL_DAY' | translate }}</span>\n </div>\n <div class=\"data-item\">\n <span> <mat-icon>event</mat-icon> {{ 'CALENDAR.STARTS' | translate }}</span>\n <span class=\"event-time\">\n {{ recurringException?.startDate || event.recurringStartDate || event.startDate | date: 'yyyy-MM-dd' }}\n <span *ngIf=\"!event.allDay\"> - {{ event.startTime | date: 'h:mm a' }}</span>\n </span>\n </div>\n <div class=\"data-item\">\n <span><mat-icon>event_available</mat-icon> {{ 'CALENDAR.ENDS' | translate }}</span>\n <span class=\"event-time\">\n {{ recurringException?.endDate || event.recurringEndDate || event.endDate | date: 'yyyy-MM-dd' }}\n <span *ngIf=\"!event.allDay\"> - {{ event.endTime | date: 'h:mm a' }}</span>\n </span>\n </div>\n\n <div class=\"data-item\">\n @if (event.recurringPattern?.type) {\n <span><mat-icon>event_repeat</mat-icon> {{ 'CALENDAR.RECURRING' | translate }}</span>\n <span class=\"recurring-type\">{{ 'CALENDAR.' + event.recurringPattern.type | translate }}</span>\n } @else if (address) {\n <span><mat-icon>location_on</mat-icon> {{ 'LOCATION.TITLE' | translate }}</span>\n <span [innerHTML]=\"address\"></span>\n } @else if (calendarAccount) {\n <span><mat-icon>email</mat-icon> {{ 'CALENDAR.ACCOUNT' | translate }}</span>\n <span [style.color]=\"calendarAccount.theme?.backgroundColor || ''\">{{ calendarAccount.email }}</span>\n } @else if (note) {\n <span><mat-icon>event_note</mat-icon> {{ 'FIELDS.NOTE' | translate }}</span>\n <span class=\"event-note\" [innerHTML]=\"note\"></span>\n }\n </div>\n</div>\n", styles: [".text-style,.event-info-body .data-item{font-family:Gilroy-Regular,serif;font-style:normal;font-weight:500;font-size:16px}.event-info-body{padding:0 15px 20px;max-height:calc(var(--viewport-height) * 60);position:relative;display:block;overflow:auto}.event-info-body .data-item{margin-top:20px;display:flex}.event-info-body .data-item.centred{flex-direction:column;align-items:center;margin-bottom:10px}.event-info-body .data-item span{font-size:14px}.event-info-body .data-item span:first-child{min-width:85px}.event-info-body .data-item span:first-child .mat-icon{position:relative;top:-4px}.event-info-body .data-item span.event-time{display:flex;gap:5px}.event-info-body .data-item span .mat-icon{margin:0 5px 0 0}.event-info-body .data-item span:nth-child(1){display:flex;font-weight:500}.event-info-body .data-item span:nth-child(2){margin-left:20px;opacity:.7}.event-info-body .data-item span.recurring-type{background:var(--cyrano-pink-shade-2);color:#fff;padding:5px 10px;border-radius:30px;height:25px;margin-top:-5px}.event-info-body .data-item .mat-icon.all-day{color:var(--cyrano-pink-shade-1)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.DatePipe, name: "date" }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
808
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.14", type: LibEventInfoComponent, isStandalone: true, selector: "lib-event-info", inputs: { event: "event", calendars: "calendars" }, providers: [FallbackTranslatePipe, CalendarUtilsService], ngImport: i0, template: "<div class=\"event-info-body\">\n <div class=\"data-item\" *ngIf=\"event.allDay\">\n <span><mat-icon class=\"all-day\">done_all</mat-icon> {{ 'CALENDAR.ALL_DAY' | translate }}</span>\n </div>\n <div class=\"data-item\">\n <span> <mat-icon>event</mat-icon> {{ 'CALENDAR.STARTS' | translate }}</span>\n <span class=\"event-time\">\n {{ recurringException?.startDate || event.recurringStartDate || event.startDate | date: 'yyyy-MM-dd' }}\n <span *ngIf=\"!event.allDay\"> - {{ event.startTime | date: 'h:mm a' }}</span>\n </span>\n </div>\n <div class=\"data-item\">\n <span><mat-icon>event_available</mat-icon> {{ 'CALENDAR.ENDS' | translate }}</span>\n <span class=\"event-time\">\n {{ recurringException?.endDate || event.recurringEndDate || event.endDate | date: 'yyyy-MM-dd' }}\n <span *ngIf=\"!event.allDay\"> - {{ event.endTime | date: 'h:mm a' }}</span>\n </span>\n </div>\n\n <div class=\"data-item\">\n @if (event.recurringPattern?.type) {\n <span><mat-icon>event_repeat</mat-icon> {{ 'CALENDAR.RECURRING' | translate }}</span>\n <span class=\"recurring-type\">{{ 'CALENDAR.' + event.recurringPattern.type | translate }}</span>\n } @else if (address) {\n <span><mat-icon>location_on</mat-icon> {{ 'LOCATION.TITLE' | translate }}</span>\n <span [innerHTML]=\"address\"></span>\n } @else if (calendarAccount) {\n <span><mat-icon>email</mat-icon> {{ 'CALENDAR.ACCOUNT' | translate }}</span>\n <span [style.color]=\"calendarAccount.theme?.backgroundColor || ''\">{{ calendarAccount.email }}</span>\n } @else if (note) {\n <span><mat-icon>event_note</mat-icon> {{ 'FIELDS.NOTE' | translate }}</span>\n <span class=\"event-note\" [innerHTML]=\"note\"></span>\n }\n </div>\n</div>\n", styles: [".text-style,.event-info-body .data-item{font-family:Gilroy-Regular,serif;font-style:normal;font-weight:500;font-size:16px}.event-info-body{padding:0 15px 20px;max-height:calc(var(--viewport-height) * 60);position:relative;display:block;overflow:auto}.event-info-body .data-item{margin-top:20px;display:flex}.event-info-body .data-item.centred{flex-direction:column;align-items:center;margin-bottom:10px}.event-info-body .data-item span{font-size:14px}.event-info-body .data-item span:first-child{min-width:85px}.event-info-body .data-item span:first-child .mat-icon{position:relative;top:-4px}.event-info-body .data-item span.event-time{display:flex;gap:5px}.event-info-body .data-item span .mat-icon{margin:0 5px 0 0}.event-info-body .data-item span:nth-child(1){display:flex;font-weight:500}.event-info-body .data-item span:nth-child(2){margin-left:20px;opacity:.7}.event-info-body .data-item span.recurring-type{background:var(--cyrano-pink-shade-2);color:#fff;padding:5px 10px;border-radius:30px;height:25px;margin-top:-5px}.event-info-body .data-item .mat-icon.all-day{color:var(--cyrano-pink-shade-1)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.DatePipe, name: "date" }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
865
809
  }
866
810
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: LibEventInfoComponent, decorators: [{
867
811
  type: Component,
868
- args: [{ selector: 'lib-event-info', changeDetection: ChangeDetectionStrategy.OnPush, imports: [CommonModule, MatIconModule, FallbackTranslatePipe, TranslateModule], template: "<div class=\"event-info-body\">\n <div class=\"data-item\" *ngIf=\"event.allDay\">\n <span><mat-icon class=\"all-day\">done_all</mat-icon> {{ 'CALENDAR.ALL_DAY' | translate }}</span>\n </div>\n <div class=\"data-item\">\n <span> <mat-icon>event</mat-icon> {{ 'CALENDAR.STARTS' | translate }}</span>\n <span class=\"event-time\">\n {{ recurringException?.startDate || event.recurringStartDate || event.startDate | date: 'yyyy-MM-dd' }}\n <span *ngIf=\"!event.allDay\"> - {{ event.startTime | date: 'h:mm a' }}</span>\n </span>\n </div>\n <div class=\"data-item\">\n <span><mat-icon>event_available</mat-icon> {{ 'CALENDAR.ENDS' | translate }}</span>\n <span class=\"event-time\">\n {{ recurringException?.endDate || event.recurringEndDate || event.endDate | date: 'yyyy-MM-dd' }}\n <span *ngIf=\"!event.allDay\"> - {{ event.endTime | date: 'h:mm a' }}</span>\n </span>\n </div>\n\n <div class=\"data-item\">\n @if (event.recurringPattern?.type) {\n <span><mat-icon>event_repeat</mat-icon> {{ 'CALENDAR.RECURRING' | translate }}</span>\n <span class=\"recurring-type\">{{ 'CALENDAR.' + event.recurringPattern.type | translate }}</span>\n } @else if (address) {\n <span><mat-icon>location_on</mat-icon> {{ 'LOCATION.TITLE' | translate }}</span>\n <span [innerHTML]=\"address\"></span>\n } @else if (calendarAccount) {\n <span><mat-icon>email</mat-icon> {{ 'CALENDAR.ACCOUNT' | translate }}</span>\n <span [style.color]=\"calendarAccount.theme?.backgroundColor || ''\">{{ calendarAccount.email }}</span>\n } @else if (note) {\n <span><mat-icon>event_note</mat-icon> {{ 'FIELDS.NOTE' | translate }}</span>\n <span class=\"event-note\" [innerHTML]=\"note\"></span>\n }\n </div>\n</div>\n", styles: [".text-style,.event-info-body .data-item{font-family:Gilroy-Regular,serif;font-style:normal;font-weight:500;font-size:16px}.event-info-body{padding:0 15px 20px;max-height:calc(var(--viewport-height) * 60);position:relative;display:block;overflow:auto}.event-info-body .data-item{margin-top:20px;display:flex}.event-info-body .data-item.centred{flex-direction:column;align-items:center;margin-bottom:10px}.event-info-body .data-item span{font-size:14px}.event-info-body .data-item span:first-child{min-width:85px}.event-info-body .data-item span:first-child .mat-icon{position:relative;top:-4px}.event-info-body .data-item span.event-time{display:flex;gap:5px}.event-info-body .data-item span .mat-icon{margin:0 5px 0 0}.event-info-body .data-item span:nth-child(1){display:flex;font-weight:500}.event-info-body .data-item span:nth-child(2){margin-left:20px;opacity:.7}.event-info-body .data-item span.recurring-type{background:var(--cyrano-pink-shade-2);color:#fff;padding:5px 10px;border-radius:30px;height:25px;margin-top:-5px}.event-info-body .data-item .mat-icon.all-day{color:var(--cyrano-pink-shade-1)}\n"] }]
812
+ args: [{ selector: 'lib-event-info', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, MatIconModule, TranslateModule], providers: [FallbackTranslatePipe, CalendarUtilsService], template: "<div class=\"event-info-body\">\n <div class=\"data-item\" *ngIf=\"event.allDay\">\n <span><mat-icon class=\"all-day\">done_all</mat-icon> {{ 'CALENDAR.ALL_DAY' | translate }}</span>\n </div>\n <div class=\"data-item\">\n <span> <mat-icon>event</mat-icon> {{ 'CALENDAR.STARTS' | translate }}</span>\n <span class=\"event-time\">\n {{ recurringException?.startDate || event.recurringStartDate || event.startDate | date: 'yyyy-MM-dd' }}\n <span *ngIf=\"!event.allDay\"> - {{ event.startTime | date: 'h:mm a' }}</span>\n </span>\n </div>\n <div class=\"data-item\">\n <span><mat-icon>event_available</mat-icon> {{ 'CALENDAR.ENDS' | translate }}</span>\n <span class=\"event-time\">\n {{ recurringException?.endDate || event.recurringEndDate || event.endDate | date: 'yyyy-MM-dd' }}\n <span *ngIf=\"!event.allDay\"> - {{ event.endTime | date: 'h:mm a' }}</span>\n </span>\n </div>\n\n <div class=\"data-item\">\n @if (event.recurringPattern?.type) {\n <span><mat-icon>event_repeat</mat-icon> {{ 'CALENDAR.RECURRING' | translate }}</span>\n <span class=\"recurring-type\">{{ 'CALENDAR.' + event.recurringPattern.type | translate }}</span>\n } @else if (address) {\n <span><mat-icon>location_on</mat-icon> {{ 'LOCATION.TITLE' | translate }}</span>\n <span [innerHTML]=\"address\"></span>\n } @else if (calendarAccount) {\n <span><mat-icon>email</mat-icon> {{ 'CALENDAR.ACCOUNT' | translate }}</span>\n <span [style.color]=\"calendarAccount.theme?.backgroundColor || ''\">{{ calendarAccount.email }}</span>\n } @else if (note) {\n <span><mat-icon>event_note</mat-icon> {{ 'FIELDS.NOTE' | translate }}</span>\n <span class=\"event-note\" [innerHTML]=\"note\"></span>\n }\n </div>\n</div>\n", styles: [".text-style,.event-info-body .data-item{font-family:Gilroy-Regular,serif;font-style:normal;font-weight:500;font-size:16px}.event-info-body{padding:0 15px 20px;max-height:calc(var(--viewport-height) * 60);position:relative;display:block;overflow:auto}.event-info-body .data-item{margin-top:20px;display:flex}.event-info-body .data-item.centred{flex-direction:column;align-items:center;margin-bottom:10px}.event-info-body .data-item span{font-size:14px}.event-info-body .data-item span:first-child{min-width:85px}.event-info-body .data-item span:first-child .mat-icon{position:relative;top:-4px}.event-info-body .data-item span.event-time{display:flex;gap:5px}.event-info-body .data-item span .mat-icon{margin:0 5px 0 0}.event-info-body .data-item span:nth-child(1){display:flex;font-weight:500}.event-info-body .data-item span:nth-child(2){margin-left:20px;opacity:.7}.event-info-body .data-item span.recurring-type{background:var(--cyrano-pink-shade-2);color:#fff;padding:5px 10px;border-radius:30px;height:25px;margin-top:-5px}.event-info-body .data-item .mat-icon.all-day{color:var(--cyrano-pink-shade-1)}\n"] }]
869
813
  }], ctorParameters: () => [{ type: FallbackTranslatePipe }, { type: CalendarUtilsService }], propDecorators: { event: [{
870
814
  type: Input
871
815
  }], calendars: [{
872
816
  type: Input
873
817
  }] } });
874
818
 
875
- var FormFieldType;
876
- (function (FormFieldType) {
877
- FormFieldType["date"] = "date";
878
- FormFieldType["text"] = "text";
879
- FormFieldType["textarea"] = "textarea";
880
- FormFieldType["typeahead"] = "typeahead";
881
- FormFieldType["multiselect"] = "multiselect";
882
- FormFieldType["select"] = "select";
883
- FormFieldType["checkbox"] = "checkbox";
884
- FormFieldType["toggle"] = "toggle";
885
- FormFieldType["radio"] = "radio";
886
- FormFieldType["textlist"] = "textlist";
887
- FormFieldType["number"] = "number";
888
- FormFieldType["message"] = "message";
889
- FormFieldType["time"] = "time";
890
- FormFieldType["multifield"] = "multifield";
891
- FormFieldType["action"] = "action";
892
- FormFieldType["currency"] = "currency";
893
- FormFieldType["banner"] = "banner";
894
- FormFieldType["percentage"] = "percentage";
895
- FormFieldType["multiselectdropdown"] = "multiselectdropdown";
896
- FormFieldType["hyperlink"] = "hyperlink";
897
- FormFieldType["injectable"] = "injectable";
898
- FormFieldType["datetime"] = "datetime";
899
- FormFieldType["rating"] = "rating";
900
- FormFieldType["incrementer"] = "incrementer";
901
- FormFieldType["range"] = "range";
902
- FormFieldType["password"] = "password";
903
- })(FormFieldType || (FormFieldType = {}));
904
-
905
- var EditRecurringEventOptions;
906
- (function (EditRecurringEventOptions) {
907
- EditRecurringEventOptions["CURRENT"] = "CURRENT";
908
- EditRecurringEventOptions["FOLLOWING"] = "FOLLOWING";
909
- EditRecurringEventOptions["ALL"] = "ALL";
910
- })(EditRecurringEventOptions || (EditRecurringEventOptions = {}));
911
-
912
819
  class LibEditRecurringEventComponent {
913
820
  constructor(fallbackTranslatePipe) {
914
821
  this.fallbackTranslatePipe = fallbackTranslatePipe;
@@ -927,11 +834,11 @@ class LibEditRecurringEventComponent {
927
834
  this.editOptionsCtrl.setValue(this.excludeCurrentInstance ? EditRecurringEventOptions.FOLLOWING : EditRecurringEventOptions.CURRENT);
928
835
  }
929
836
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: LibEditRecurringEventComponent, deps: [{ token: FallbackTranslatePipe }], target: i0.ɵɵFactoryTarget.Component }); }
930
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.14", type: LibEditRecurringEventComponent, isStandalone: true, selector: "lib-edit-recurring-event", inputs: { excludeCurrentInstance: "excludeCurrentInstance", editOptionsCtrl: "editOptionsCtrl" }, ngImport: i0, template: "@if (options) {\n <div class=\"edit-recurring-options\">\n <lib-form-field\n class=\"recurring-edit-options\"\n [formFieldControl]=\"editOptionsCtrl\"\n [radioTranslateLabels]=\"true\"\n [radioRippleEffect]=\"false\"\n [options]=\"options\"\n [type]=\"radioFieldType\"\n ></lib-form-field>\n </div>\n}\n", styles: [".edit-recurring-options{padding:20px 10px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "ngmodule", type: InputFieldModule }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: FormFieldModule }, { kind: "component", type: i2.FormFieldComponent, selector: "lib-form-field", inputs: ["fieldName", "label", "placeholder", "message", "useTooltips", "descriptionText", "formFieldControl", "submitted", "required", "type", "plusIconUrl", "minusIconUrl", "maxLength", "max", "min", "pinValue", "dualKnobs", "reverseBarColor", "defaultValue", "noMargin", "options", "iconHtml", "invalidPatternMessage", "dateFormat", "currencySymbol", "hideCents", "isEditable", "rowEditConfirmationObsv", "errorInlineMode", "showLabelInRequiredErrorMessage", "decimalPosition", "hyperlinkTarget", "readOnly", "focus", "showRequiredIndicator", "maxDate", "minDate", "radioTranslateLabels", "radioDeselectable", "radioRippleEffect"], outputs: ["rowEdit", "focusOut", "valueChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
837
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.14", type: LibEditRecurringEventComponent, isStandalone: true, selector: "lib-edit-recurring-event", inputs: { excludeCurrentInstance: "excludeCurrentInstance", editOptionsCtrl: "editOptionsCtrl" }, providers: [FallbackTranslatePipe], ngImport: i0, template: "@if (options) {\n <div class=\"edit-recurring-options\">\n <lib-form-field\n class=\"recurring-edit-options\"\n [formFieldControl]=\"editOptionsCtrl\"\n [radioTranslateLabels]=\"true\"\n [radioRippleEffect]=\"false\"\n [options]=\"options\"\n [type]=\"radioFieldType\"\n ></lib-form-field>\n </div>\n}\n", styles: [".edit-recurring-options{padding:20px 10px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "ngmodule", type: InputFieldModule }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: FormFieldModule }, { kind: "component", type: i2.FormFieldComponent, selector: "lib-form-field", inputs: ["fieldName", "label", "placeholder", "message", "useTooltips", "descriptionText", "formFieldControl", "submitted", "required", "type", "plusIconUrl", "minusIconUrl", "maxLength", "max", "min", "pinValue", "dualKnobs", "reverseBarColor", "defaultValue", "noMargin", "options", "iconHtml", "invalidPatternMessage", "dateFormat", "currencySymbol", "hideCents", "isEditable", "rowEditConfirmationObsv", "errorInlineMode", "showLabelInRequiredErrorMessage", "decimalPosition", "hyperlinkTarget", "readOnly", "focus", "showRequiredIndicator", "maxDate", "minDate", "radioTranslateLabels", "radioDeselectable", "radioRippleEffect"], outputs: ["rowEdit", "focusOut", "valueChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
931
838
  }
932
839
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: LibEditRecurringEventComponent, decorators: [{
933
840
  type: Component,
934
- args: [{ selector: 'lib-edit-recurring-event', changeDetection: ChangeDetectionStrategy.OnPush, imports: [CommonModule, FallbackTranslatePipe, TranslateModule, InputFieldModule, FormsModule, ReactiveFormsModule, FormFieldModule], template: "@if (options) {\n <div class=\"edit-recurring-options\">\n <lib-form-field\n class=\"recurring-edit-options\"\n [formFieldControl]=\"editOptionsCtrl\"\n [radioTranslateLabels]=\"true\"\n [radioRippleEffect]=\"false\"\n [options]=\"options\"\n [type]=\"radioFieldType\"\n ></lib-form-field>\n </div>\n}\n", styles: [".edit-recurring-options{padding:20px 10px}\n"] }]
841
+ args: [{ selector: 'lib-edit-recurring-event', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, TranslateModule, InputFieldModule, FormsModule, ReactiveFormsModule, FormFieldModule], providers: [FallbackTranslatePipe], template: "@if (options) {\n <div class=\"edit-recurring-options\">\n <lib-form-field\n class=\"recurring-edit-options\"\n [formFieldControl]=\"editOptionsCtrl\"\n [radioTranslateLabels]=\"true\"\n [radioRippleEffect]=\"false\"\n [options]=\"options\"\n [type]=\"radioFieldType\"\n ></lib-form-field>\n </div>\n}\n", styles: [".edit-recurring-options{padding:20px 10px}\n"] }]
935
842
  }], ctorParameters: () => [{ type: FallbackTranslatePipe }], propDecorators: { excludeCurrentInstance: [{
936
843
  type: Input
937
844
  }], editOptionsCtrl: [{
@@ -1173,13 +1080,13 @@ class LibEventFormComponent extends BaseComponent {
1173
1080
  this.submitFormEvent(this._draggedEvent, this.draggedEvent);
1174
1081
  }
1175
1082
  }
1176
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: LibEventFormComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1$1.FormBuilder }, { token: CalendarUtilsService }, { token: FallbackTranslatePipe }], target: i0.ɵɵFactoryTarget.Component }); }
1177
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.14", type: LibEventFormComponent, isStandalone: false, selector: "lib-event-form", inputs: { calendars: "calendars", event: "event", draggedEvent: "draggedEvent" }, outputs: { updateRecurringEvent: "updateRecurringEvent", updateDraggedEvent: "updateDraggedEvent", delete: "delete", closeForm: "closeForm", submitForm: "submitForm" }, usesInheritance: true, ngImport: i0, template: "<lib-bottom-modal\n [title]=\"modalTitle\"\n [(isOpen)]=\"openModal\"\n [(showConfirm)]=\"showConfirm\"\n [confirmButton]=\"'CONFIRM.YES' | fallbackTranslate: 'Yes'\"\n [confirmCancelButton]=\"'CONFIRM.No' | fallbackTranslate: 'No'\"\n [confirmationTitle]=\"'CONFIRM.ARE_YOU_SURE' | fallbackTranslate: 'Confirm Deletion'\"\n [confirmationMsg]=\"'CONFIRM.ARE_YOU_SURE_MESSAGE' | fallbackTranslate: 'Sure you want to delete?'\"\n [showCloseBtn]=\"!cancelButtonTitle && editMode\"\n [customClass]=\"'calendar-event-modal'\"\n [loading]=\"loading$ | async\"\n [validModal]=\"(!form || form.valid) && (loading$ | async) !== true\"\n [submitButtonTitle]=\"submitButtonTitle\"\n [secondaryButtonTitle]=\"secondaryButtonTitle\"\n [cancelButtonTitle]=\"cancelButtonTitle\"\n (secondaryButtonClick)=\"onModalSecondaryButtonClick()\"\n (closeModal)=\"resetModal()\"\n (submitModal)=\"onSubmitModal()\"\n (confirmEvent)=\"onDeleteConfirm()\"\n>\n <div class=\"event-modal\">\n <lib-event-info [event]=\"event\" [calendars]=\"calendars\" *ngIf=\"!form && editMode && !openRecurringOptions\"></lib-event-info>\n <lib-edit-recurring-event [editOptionsCtrl]=\"editOptionsCtrl\" [excludeCurrentInstance]=\"recurringTypeChanged\" *ngIf=\"openRecurringOptions\"></lib-edit-recurring-event>\n <ng-content></ng-content>\n <form [formGroup]=\"form\" *ngIf=\"form && !openRecurringOptions\" autocomplete=\"off\" appFocusInvalidInput (ngSubmit)=\"saveEvent()\" (keyup.enter)=\"saveEvent()\" id=\"event-form\">\n <div class=\"form-body\">\n <div class=\"form-row center-content\">\n <div class=\"event-title-field\">\n <lib-input-field\n maxLength=\"2000\"\n formControlName=\"title\"\n type=\"text\"\n [readonly]=\"loading$ | async\"\n [label]=\"'CALENDAR.TITLE_FIELD' | fallbackTranslate: 'Title'\"\n [trimWhiteSpace]=\"false\"\n ></lib-input-field>\n <lib-error-message class=\"input-error event-input-field-error\" [config]=\"{ control: form.controls['title'] }\"></lib-error-message>\n </div>\n </div>\n <div class=\"form-row event-dates\">\n <div class=\"input-field-container input-field-container-group\">\n <div class=\"event-date-container\" [ngClass]=\"{ 'input-field-container-full-row': !form.controls['allDay'].value }\">\n <lib-input-date-field\n class=\"event-date\"\n formControlName=\"startDate\"\n [readonly]=\"loading$ | async\"\n [hieActions]=\"true\"\n [showIcon]=\"true\"\n [label]=\"'CALENDAR.START_DATE' | fallbackTranslate: 'Start Date'\"\n ></lib-input-date-field>\n <lib-error-message class=\"input-error event-input-field-error\" [config]=\"{ control: form.controls['startDate'] }\"></lib-error-message>\n </div>\n @if (form.controls['allDay'].value) {\n <lib-input-date-field\n class=\"event-date event-end-date\"\n formControlName=\"endDate\"\n [disabled]=\"loading$ | async\"\n [hieActions]=\"true\"\n [showIcon]=\"true\"\n [label]=\"'CALENDAR.END_DATE' | fallbackTranslate: 'End Date'\"\n ></lib-input-date-field>\n <lib-error-message class=\"input-error event-input-field-error\" [config]=\"{ control: form.controls['endDate'] }\"></lib-error-message>\n }\n </div>\n </div>\n\n @if (!form.controls['allDay'].value) {\n <div class=\"form-row\">\n <div class=\"input-field-container input-field-container-group time-fields-group\">\n <div class=\"time-field\">\n <lib-input-time-field\n formControlName=\"startTime\"\n [showIcon]=\"true\"\n [startDate]=\"eventStart\"\n [interval]=\"15\"\n [disabled]=\"loading$ | async\"\n [label]=\"'CALENDAR.STARTS' | fallbackTranslate: 'Starts'\"\n ></lib-input-time-field>\n <lib-error-message class=\"input-error event-input-field-error\" [config]=\"{ control: form.controls['startTime'] }\"></lib-error-message>\n </div>\n <div class=\"time-field\">\n <lib-input-time-field\n class=\"end-time\"\n formControlName=\"endTime\"\n [interval]=\"15\"\n [showIcon]=\"true\"\n [displaySlotTime]=\"true\"\n [fromTime]=\"\n form.controls.startTime.value && form.controls.startTime.value['slotValue'] ? form.controls.startTime.value['slotValue'] : form.controls.startTime.value\n \"\n [startDate]=\"eventStart\"\n [disabled]=\"loading$ | async\"\n [label]=\"'CALENDAR.ENDS' | fallbackTranslate: 'Ends'\"\n ></lib-input-time-field>\n <lib-error-message class=\"input-error event-input-field-error\" [config]=\"{ control: form.controls['endTime'] }\"></lib-error-message>\n </div>\n </div>\n </div>\n }\n\n <div class=\"form-row recurring\">\n <div class=\"recurring-select\" formGroupName=\"recurringPattern\">\n <lib-input-field-select\n formControlName=\"type\"\n [optionLabel]=\"(recurringOptions[0].title | fallbackTranslate: 'noTrnslations') === 'noTrnslations' ? 'name' : 'title'\"\n [optionValue]=\"'type'\"\n [options]=\"recurringOptions\"\n [disabled]=\"loading$ | async\"\n >\n </lib-input-field-select>\n </div>\n <div class=\"allDay-container\">\n <ion-item class=\"no-shadow allDay\">\n <label>\n <lib-dashed-checkbox formControlName=\"allDay\" [disabled]=\"loading$ | async\"></lib-dashed-checkbox>\n <span>{{ 'CALENDAR.ALL_DAY' | fallbackTranslate: 'All day' }}</span>\n </label>\n </ion-item>\n </div>\n </div>\n\n <div class=\"form-row address\">\n <div class=\"input-field-container\">\n <lib-input-field\n maxLength=\"2000\"\n [trimWhiteSpace]=\"false\"\n formControlName=\"address\"\n [enableGoogleAddress]=\"true\"\n [address]=\"form.controls['address'].value\"\n (locationChange)=\"onLocationChange($event)\"\n [readonly]=\"loading$ | async\"\n [label]=\"'FIELDS.ADD_LOCATION' | fallbackTranslate: 'Location'\"\n >\n </lib-input-field>\n <lib-error-message class=\"input-error\" [config]=\"{ control: form.controls['address'] }\"></lib-error-message>\n </div>\n </div>\n\n <div class=\"form-row\">\n <div class=\"event-note-field\">\n <lib-input-field\n formControlName=\"note\"\n [textarea]=\"true\"\n [label]=\"'FIELDS.ADD_DESCRIPTION' | fallbackTranslate: 'Description'\"\n maxLength=\"2000\"\n [readonly]=\"loading$ | async\"\n ></lib-input-field>\n </div>\n </div>\n </div>\n </form>\n </div>\n</lib-bottom-modal>\n", styles: [".event-modal{--input-width: 100%;--input-height: 48px;--border-radius: 100px;--input-icon-color: #fe3c72;--input-font-color: #fff;--dropdown-background: linear-gradient(191.18deg, #27242c 61.33%, #0c0b0e 101.43%);--input-font-family: \"Gilroy-Regular\", serif;--label-color: grey;--input-field-box-shadow: inset 17px 22px 20px 2.5px rgba(17, 16, 20, .7), inset -2px -2px 8px rgba(203, 199, 209, .5);--input-number-filed-font: var(--font-family);--textarea-height: 100px !important;position:relative;display:block;width:100%;padding:0 20px 10px;max-height:72vh;overflow:auto}.event-modal .form-row{display:flex;flex-direction:row;margin-bottom:10px}.event-modal .form-row.form-footer{align-items:flex-end;justify-content:flex-end;margin-bottom:-15px}.event-modal .form-row.form-footer lib-primary-btn{width:100px}.event-modal .form-row.form-row-error{margin:-10px 0 0;padding:0;height:20px}.event-modal .form-row.recurring{margin:12px 0;display:flex}.event-modal .form-row.recurring .allDay-container,.event-modal .form-row.recurring .recurring-select{width:50%}.event-modal .form-row.recurring .recurring-select lib-input-field-select{width:100%}.event-modal .form-row.recurring .allDay-container{display:flex;flex-direction:row;justify-content:flex-start;align-items:flex-end;margin-top:-10px}.event-modal form{padding:5px 5px 0}.event-modal form .form-body{max-width:100%;position:relative;display:block}.event-modal ion-item ion-label{font-family:Gilroy-Regular,serif!important}.event-modal ion-item ion-label:not(.allDay){display:flex!important;flex-direction:row;align-items:center;justify-content:center}.event-modal ion-item.allDay{margin-top:-10px;width:fit-content;--min-height: 50px}.event-modal ion-item.allDay label{display:flex;gap:10px;align-items:center;font-family:Gilroy-Regular,serif;cursor:pointer}.event-modal ion-item.allDay lib-dashed-checkbox{--size: 24px;--color: var(--cyrano-pink-shade-1)}.event-modal .event-title-field,.event-modal .event-note-field{position:relative;display:block;width:100%;padding-top:10px}.event-modal .event-title-field lib-input-field,.event-modal .event-note-field lib-input-field{position:relative;width:100%;min-width:100%}.event-modal .input-field-container{padding-top:2px;width:100%}.event-modal .input-field-container.input-field-container-group{display:flex;gap:5px}.event-modal .input-field-container.input-field-container-group div{width:50%}.event-modal .input-field-container.input-field-container-group div.input-field-container-full-row{width:100%}.event-modal .input-field-container .time-fields{display:flex;gap:10px}.event-modal .input-field-container lib-input-field{width:100%}.event-modal .field-error{position:relative;display:block;width:100%}@media screen and (max-width: 500px){.event-modal .event-date-container{margin-bottom:15px}.event-modal .input-field-container-group{display:flex;flex-direction:column}.event-modal .input-field-container-group div{width:100%!important}.event-modal .input-field-container-group.time-fields-group{flex-direction:row}.event-modal .form-row.recurring{display:block}.event-modal .form-row.recurring .allDay-container,.event-modal .form-row.recurring .recurring-select{width:100%}.event-modal .form-row.recurring .allDay-container{display:flex;flex-direction:row;justify-content:flex-start;align-items:flex-end}.event-modal .form-row.recurring .allDay-container ion-item.allDay{padding-left:0;margin-top:10px}.event-modal .form-row.address{margin-top:-20px}.event-modal .form-row.event-dates{margin-bottom:0}}@media screen and (max-width: 350px){.event-modal .input-placeholder.input-placeholder-date .time-placeholder{margin-left:0}}.event-modal .event-input-field-error{margin-top:-20px}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2$1.IonItem, selector: "ion-item", inputs: ["button", "color", "detail", "detailIcon", "disabled", "download", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "directive", type: i1$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i1$1.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { kind: "component", type: i2.DashedCheckboxComponent, selector: "lib-dashed-checkbox", inputs: ["checked", "disabled"], outputs: ["toggle"] }, { kind: "component", type: i2.InputDateFieldComponent, selector: "lib-input-date-field", inputs: ["label", "defaultDate", "maxDate", "minDate", "showTime", "hieActions", "readonly", "defaultDayHighlight", "showIcon", "timeOnly", "view", "disabled", "dateFormat", "placeholder", "appendTo", "stepMinute", "mask", "styleClass", "timeFormat"], outputs: ["focusEvent"] }, { kind: "component", type: i2.InputFieldComponent, selector: "lib-input-field,[lib-input-field]", inputs: ["name", "autocomplete", "label", "placeholder", "type", "readonly", "focus", "enableGoogleAddress", "locationAutocompleteConfig", "defaultLocation", "mask", "prefix", "suffix", "maxLength", "value", "address", "textarea", "resize", "counter", "patterns", "trimWhiteSpace", "disabled"], outputs: ["mapError", "locationChange", "keyDown", "onBlur"] }, { kind: "component", type: i2.InputFieldSelectComponent, selector: "lib-input-field-select", inputs: ["multiple", "label", "placeholder", "optionLabel", "optionValue", "options", "optionsTemplates", "filterBy", "enableFilter", "readonly", "disabled", "showClear", "editable", "withTemplate", "enableTranslation"], outputs: ["valueChange"] }, { kind: "component", type: i2.InputTimeFieldComponent, selector: "lib-input-time-field", inputs: ["startDate", "interval", "displaySlotTime", "fromTime", "format", "label", "readonly", "showIcon", "disabled"], outputs: ["focusEvent"] }, { kind: "component", type: i2.BottomModalComponent, selector: "lib-bottom-modal", inputs: ["breakpoints", "initialBreakpoint", "isOpen", "canDismiss", "showArrow", "showBackBtn", "showConfirm", "showCloseBtn", "loading", "showHeaderSeparator", "title", "confirmationTitle", "confirmationMsg", "confirmButton", "confirmCancelButton", "description", "secondaryButtonTitle", "submitButtonTitle", "cancelButtonTitle", "validModal", "adaptToContentHeight", "customClass"], outputs: ["isOpenChange", "breakpointChange", "closeModal", "submitModal", "secondaryButtonClick", "backClick", "showConfirmChange", "confirmEvent"] }, { kind: "component", type: i2.LibErrorMessageComponent, selector: "lib-error-message", inputs: ["config"] }, { kind: "component", type: LibEventInfoComponent, selector: "lib-event-info", inputs: ["event", "calendars"] }, { kind: "component", type: LibEditRecurringEventComponent, selector: "lib-edit-recurring-event", inputs: ["excludeCurrentInstance", "editOptionsCtrl"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: FallbackTranslatePipe, name: "fallbackTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1083
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: LibEventFormComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1$2.FormBuilder }, { token: CalendarUtilsService }, { token: FallbackTranslatePipe }], target: i0.ɵɵFactoryTarget.Component }); }
1084
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.14", type: LibEventFormComponent, isStandalone: false, selector: "lib-event-form", inputs: { calendars: "calendars", event: "event", draggedEvent: "draggedEvent" }, outputs: { updateRecurringEvent: "updateRecurringEvent", updateDraggedEvent: "updateDraggedEvent", delete: "delete", closeForm: "closeForm", submitForm: "submitForm" }, usesInheritance: true, ngImport: i0, template: "<lib-bottom-modal\n [title]=\"modalTitle\"\n [(isOpen)]=\"openModal\"\n [(showConfirm)]=\"showConfirm\"\n [confirmButton]=\"'CONFIRM.YES' | fallbackTranslate: 'Yes'\"\n [confirmCancelButton]=\"'CONFIRM.No' | fallbackTranslate: 'No'\"\n [confirmationTitle]=\"'CONFIRM.ARE_YOU_SURE' | fallbackTranslate: 'Confirm Deletion'\"\n [confirmationMsg]=\"'CONFIRM.ARE_YOU_SURE_MESSAGE' | fallbackTranslate: 'Sure you want to delete?'\"\n [showCloseBtn]=\"!cancelButtonTitle && editMode\"\n [customClass]=\"'calendar-event-modal'\"\n [loading]=\"loading$ | async\"\n [validModal]=\"(!form || form.valid) && (loading$ | async) !== true\"\n [submitButtonTitle]=\"submitButtonTitle\"\n [secondaryButtonTitle]=\"secondaryButtonTitle\"\n [cancelButtonTitle]=\"cancelButtonTitle\"\n (secondaryButtonClick)=\"onModalSecondaryButtonClick()\"\n (closeModal)=\"resetModal()\"\n (submitModal)=\"onSubmitModal()\"\n (confirmEvent)=\"onDeleteConfirm()\"\n>\n <div class=\"event-modal\">\n <lib-event-info [event]=\"event\" [calendars]=\"calendars\" *ngIf=\"!form && editMode && !openRecurringOptions\"></lib-event-info>\n <lib-edit-recurring-event [editOptionsCtrl]=\"editOptionsCtrl\" [excludeCurrentInstance]=\"recurringTypeChanged\" *ngIf=\"openRecurringOptions\"></lib-edit-recurring-event>\n <ng-content></ng-content>\n <form [formGroup]=\"form\" *ngIf=\"form && !openRecurringOptions\" autocomplete=\"off\" appFocusInvalidInput (ngSubmit)=\"saveEvent()\" (keyup.enter)=\"saveEvent()\" id=\"event-form\">\n <div class=\"form-body\">\n <div class=\"form-row center-content\">\n <div class=\"event-title-field\">\n <lib-input-field\n maxLength=\"2000\"\n formControlName=\"title\"\n type=\"text\"\n [readonly]=\"loading$ | async\"\n [label]=\"'CALENDAR.TITLE_FIELD' | fallbackTranslate: 'Title'\"\n [trimWhiteSpace]=\"false\"\n ></lib-input-field>\n <lib-error-message class=\"input-error event-input-field-error\" [config]=\"{ control: form.controls['title'] }\"></lib-error-message>\n </div>\n </div>\n <div class=\"form-row event-dates\">\n <div class=\"input-field-container input-field-container-group\">\n <div class=\"event-date-container\" [ngClass]=\"{ 'input-field-container-full-row': !form.controls['allDay'].value }\">\n <lib-input-date-field\n class=\"event-date\"\n formControlName=\"startDate\"\n [readonly]=\"loading$ | async\"\n [hieActions]=\"true\"\n [showIcon]=\"true\"\n [label]=\"'CALENDAR.START_DATE' | fallbackTranslate: 'Start Date'\"\n ></lib-input-date-field>\n <lib-error-message class=\"input-error event-input-field-error\" [config]=\"{ control: form.controls['startDate'] }\"></lib-error-message>\n </div>\n @if (form.controls['allDay'].value) {\n <lib-input-date-field\n class=\"event-date event-end-date\"\n formControlName=\"endDate\"\n [disabled]=\"loading$ | async\"\n [hieActions]=\"true\"\n [showIcon]=\"true\"\n [label]=\"'CALENDAR.END_DATE' | fallbackTranslate: 'End Date'\"\n ></lib-input-date-field>\n <lib-error-message class=\"input-error event-input-field-error\" [config]=\"{ control: form.controls['endDate'] }\"></lib-error-message>\n }\n </div>\n </div>\n\n @if (!form.controls['allDay'].value) {\n <div class=\"form-row\">\n <div class=\"input-field-container input-field-container-group time-fields-group\">\n <div class=\"time-field\">\n <lib-input-time-field\n formControlName=\"startTime\"\n [showIcon]=\"true\"\n [startDate]=\"eventStart\"\n [interval]=\"15\"\n [disabled]=\"loading$ | async\"\n [label]=\"'CALENDAR.STARTS' | fallbackTranslate: 'Starts'\"\n ></lib-input-time-field>\n <lib-error-message class=\"input-error event-input-field-error\" [config]=\"{ control: form.controls['startTime'] }\"></lib-error-message>\n </div>\n <div class=\"time-field\">\n <lib-input-time-field\n class=\"end-time\"\n formControlName=\"endTime\"\n [interval]=\"15\"\n [showIcon]=\"true\"\n [displaySlotTime]=\"true\"\n [fromTime]=\"\n form.controls.startTime.value && form.controls.startTime.value['slotValue'] ? form.controls.startTime.value['slotValue'] : form.controls.startTime.value\n \"\n [startDate]=\"eventStart\"\n [disabled]=\"loading$ | async\"\n [label]=\"'CALENDAR.ENDS' | fallbackTranslate: 'Ends'\"\n ></lib-input-time-field>\n <lib-error-message class=\"input-error event-input-field-error\" [config]=\"{ control: form.controls['endTime'] }\"></lib-error-message>\n </div>\n </div>\n </div>\n }\n\n <div class=\"form-row recurring\">\n <div class=\"recurring-select\" formGroupName=\"recurringPattern\">\n <lib-input-field-select\n formControlName=\"type\"\n [optionLabel]=\"(recurringOptions[0].title | fallbackTranslate: 'noTrnslations') === 'noTrnslations' ? 'name' : 'title'\"\n [optionValue]=\"'type'\"\n [options]=\"recurringOptions\"\n [disabled]=\"loading$ | async\"\n >\n </lib-input-field-select>\n </div>\n <div class=\"allDay-container\">\n <ion-item class=\"no-shadow allDay\">\n <label>\n <lib-dashed-checkbox formControlName=\"allDay\" [disabled]=\"loading$ | async\"></lib-dashed-checkbox>\n <span>{{ 'CALENDAR.ALL_DAY' | fallbackTranslate: 'All day' }}</span>\n </label>\n </ion-item>\n </div>\n </div>\n\n <div class=\"form-row address\">\n <div class=\"input-field-container\">\n <lib-input-field\n maxLength=\"2000\"\n [trimWhiteSpace]=\"false\"\n formControlName=\"address\"\n [enableGoogleAddress]=\"true\"\n [address]=\"form.controls['address'].value\"\n (locationChange)=\"onLocationChange($event)\"\n [readonly]=\"loading$ | async\"\n [label]=\"'FIELDS.ADD_LOCATION' | fallbackTranslate: 'Location'\"\n >\n </lib-input-field>\n <lib-error-message class=\"input-error\" [config]=\"{ control: form.controls['address'] }\"></lib-error-message>\n </div>\n </div>\n\n <div class=\"form-row\">\n <div class=\"event-note-field\">\n <lib-input-field\n formControlName=\"note\"\n [textarea]=\"true\"\n [label]=\"'FIELDS.ADD_DESCRIPTION' | fallbackTranslate: 'Description'\"\n maxLength=\"2000\"\n [readonly]=\"loading$ | async\"\n ></lib-input-field>\n </div>\n </div>\n </div>\n </form>\n </div>\n</lib-bottom-modal>\n", styles: [".event-modal{--input-width: 100%;--input-height: 48px;--border-radius: 100px;--input-icon-color: #fe3c72;--input-font-color: #fff;--dropdown-background: linear-gradient(191.18deg, #27242c 61.33%, #0c0b0e 101.43%);--input-font-family: \"Gilroy-Regular\", serif;--label-color: grey;--input-field-box-shadow: inset 17px 22px 20px 2.5px rgba(17, 16, 20, .7), inset -2px -2px 8px rgba(203, 199, 209, .5);--input-number-filed-font: var(--font-family);--textarea-height: 100px !important;position:relative;display:block;width:100%;padding:0 20px 10px;max-height:72vh;overflow:auto}.event-modal .form-row{display:flex;flex-direction:row;margin-bottom:10px}.event-modal .form-row.form-footer{align-items:flex-end;justify-content:flex-end;margin-bottom:-15px}.event-modal .form-row.form-footer lib-primary-btn{width:100px}.event-modal .form-row.form-row-error{margin:-10px 0 0;padding:0;height:20px}.event-modal .form-row.recurring{margin:12px 0;display:flex}.event-modal .form-row.recurring .allDay-container,.event-modal .form-row.recurring .recurring-select{width:50%}.event-modal .form-row.recurring .recurring-select lib-input-field-select{width:100%}.event-modal .form-row.recurring .allDay-container{display:flex;flex-direction:row;justify-content:flex-start;align-items:flex-end;margin-top:-10px}.event-modal form{padding:5px 5px 0}.event-modal form .form-body{max-width:100%;position:relative;display:block}.event-modal ion-item ion-label{font-family:Gilroy-Regular,serif!important}.event-modal ion-item ion-label:not(.allDay){display:flex!important;flex-direction:row;align-items:center;justify-content:center}.event-modal ion-item.allDay{margin-top:-10px;width:fit-content;--min-height: 50px}.event-modal ion-item.allDay label{display:flex;gap:10px;align-items:center;font-family:Gilroy-Regular,serif;cursor:pointer}.event-modal ion-item.allDay lib-dashed-checkbox{--size: 24px;--color: var(--cyrano-pink-shade-1)}.event-modal .event-title-field,.event-modal .event-note-field{position:relative;display:block;width:100%;padding-top:10px}.event-modal .event-title-field lib-input-field,.event-modal .event-note-field lib-input-field{position:relative;width:100%;min-width:100%}.event-modal .input-field-container{padding-top:2px;width:100%}.event-modal .input-field-container.input-field-container-group{display:flex;gap:5px}.event-modal .input-field-container.input-field-container-group div{width:50%}.event-modal .input-field-container.input-field-container-group div.input-field-container-full-row{width:100%}.event-modal .input-field-container .time-fields{display:flex;gap:10px}.event-modal .input-field-container lib-input-field{width:100%}.event-modal .field-error{position:relative;display:block;width:100%}@media screen and (max-width: 500px){.event-modal .event-date-container{margin-bottom:15px}.event-modal .input-field-container-group{display:flex;flex-direction:column}.event-modal .input-field-container-group div{width:100%!important}.event-modal .input-field-container-group.time-fields-group{flex-direction:row}.event-modal .form-row.recurring{display:block}.event-modal .form-row.recurring .allDay-container,.event-modal .form-row.recurring .recurring-select{width:100%}.event-modal .form-row.recurring .allDay-container{display:flex;flex-direction:row;justify-content:flex-start;align-items:flex-end}.event-modal .form-row.recurring .allDay-container ion-item.allDay{padding-left:0;margin-top:10px}.event-modal .form-row.address{margin-top:-20px}.event-modal .form-row.event-dates{margin-bottom:0}}@media screen and (max-width: 350px){.event-modal .input-placeholder.input-placeholder-date .time-placeholder{margin-left:0}}.event-modal .event-input-field-error{margin-top:-20px}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2$1.IonItem, selector: "ion-item", inputs: ["button", "color", "detail", "detailIcon", "disabled", "download", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "directive", type: i1$2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i1$2.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { kind: "component", type: i2.DashedCheckboxComponent, selector: "lib-dashed-checkbox", inputs: ["checked", "disabled"], outputs: ["toggle"] }, { kind: "component", type: i2.InputDateFieldComponent, selector: "lib-input-date-field", inputs: ["label", "defaultDate", "maxDate", "minDate", "showTime", "hieActions", "readonly", "defaultDayHighlight", "showIcon", "timeOnly", "view", "disabled", "dateFormat", "placeholder", "appendTo", "stepMinute", "mask", "styleClass", "timeFormat"], outputs: ["focusEvent"] }, { kind: "component", type: i2.InputFieldComponent, selector: "lib-input-field,[lib-input-field]", inputs: ["name", "autocomplete", "label", "placeholder", "type", "readonly", "focus", "enableGoogleAddress", "locationAutocompleteConfig", "defaultLocation", "mask", "prefix", "suffix", "maxLength", "value", "address", "textarea", "resize", "counter", "patterns", "trimWhiteSpace", "disabled"], outputs: ["mapError", "locationChange", "keyDown", "onBlur"] }, { kind: "component", type: i2.InputFieldSelectComponent, selector: "lib-input-field-select", inputs: ["multiple", "label", "placeholder", "optionLabel", "optionValue", "options", "optionsTemplates", "filterBy", "enableFilter", "readonly", "disabled", "showClear", "editable", "withTemplate", "enableTranslation"], outputs: ["valueChange"] }, { kind: "component", type: i2.InputTimeFieldComponent, selector: "lib-input-time-field", inputs: ["startDate", "interval", "displaySlotTime", "fromTime", "format", "label", "readonly", "showIcon", "disabled"], outputs: ["focusEvent"] }, { kind: "component", type: i2.BottomModalComponent, selector: "lib-bottom-modal", inputs: ["breakpoints", "initialBreakpoint", "isOpen", "canDismiss", "showArrow", "showBackBtn", "showConfirm", "showCloseBtn", "loading", "showHeaderSeparator", "title", "confirmationTitle", "confirmationMsg", "confirmButton", "confirmCancelButton", "description", "secondaryButtonTitle", "submitButtonTitle", "cancelButtonTitle", "validModal", "adaptToContentHeight", "customClass"], outputs: ["isOpenChange", "breakpointChange", "closeModal", "submitModal", "secondaryButtonClick", "backClick", "showConfirmChange", "confirmEvent"] }, { kind: "component", type: i2.LibErrorMessageComponent, selector: "lib-error-message", inputs: ["config"] }, { kind: "component", type: LibEventInfoComponent, selector: "lib-event-info", inputs: ["event", "calendars"] }, { kind: "component", type: LibEditRecurringEventComponent, selector: "lib-edit-recurring-event", inputs: ["excludeCurrentInstance", "editOptionsCtrl"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: FallbackTranslatePipe, name: "fallbackTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1178
1085
  }
1179
1086
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: LibEventFormComponent, decorators: [{
1180
1087
  type: Component,
1181
1088
  args: [{ selector: 'lib-event-form', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<lib-bottom-modal\n [title]=\"modalTitle\"\n [(isOpen)]=\"openModal\"\n [(showConfirm)]=\"showConfirm\"\n [confirmButton]=\"'CONFIRM.YES' | fallbackTranslate: 'Yes'\"\n [confirmCancelButton]=\"'CONFIRM.No' | fallbackTranslate: 'No'\"\n [confirmationTitle]=\"'CONFIRM.ARE_YOU_SURE' | fallbackTranslate: 'Confirm Deletion'\"\n [confirmationMsg]=\"'CONFIRM.ARE_YOU_SURE_MESSAGE' | fallbackTranslate: 'Sure you want to delete?'\"\n [showCloseBtn]=\"!cancelButtonTitle && editMode\"\n [customClass]=\"'calendar-event-modal'\"\n [loading]=\"loading$ | async\"\n [validModal]=\"(!form || form.valid) && (loading$ | async) !== true\"\n [submitButtonTitle]=\"submitButtonTitle\"\n [secondaryButtonTitle]=\"secondaryButtonTitle\"\n [cancelButtonTitle]=\"cancelButtonTitle\"\n (secondaryButtonClick)=\"onModalSecondaryButtonClick()\"\n (closeModal)=\"resetModal()\"\n (submitModal)=\"onSubmitModal()\"\n (confirmEvent)=\"onDeleteConfirm()\"\n>\n <div class=\"event-modal\">\n <lib-event-info [event]=\"event\" [calendars]=\"calendars\" *ngIf=\"!form && editMode && !openRecurringOptions\"></lib-event-info>\n <lib-edit-recurring-event [editOptionsCtrl]=\"editOptionsCtrl\" [excludeCurrentInstance]=\"recurringTypeChanged\" *ngIf=\"openRecurringOptions\"></lib-edit-recurring-event>\n <ng-content></ng-content>\n <form [formGroup]=\"form\" *ngIf=\"form && !openRecurringOptions\" autocomplete=\"off\" appFocusInvalidInput (ngSubmit)=\"saveEvent()\" (keyup.enter)=\"saveEvent()\" id=\"event-form\">\n <div class=\"form-body\">\n <div class=\"form-row center-content\">\n <div class=\"event-title-field\">\n <lib-input-field\n maxLength=\"2000\"\n formControlName=\"title\"\n type=\"text\"\n [readonly]=\"loading$ | async\"\n [label]=\"'CALENDAR.TITLE_FIELD' | fallbackTranslate: 'Title'\"\n [trimWhiteSpace]=\"false\"\n ></lib-input-field>\n <lib-error-message class=\"input-error event-input-field-error\" [config]=\"{ control: form.controls['title'] }\"></lib-error-message>\n </div>\n </div>\n <div class=\"form-row event-dates\">\n <div class=\"input-field-container input-field-container-group\">\n <div class=\"event-date-container\" [ngClass]=\"{ 'input-field-container-full-row': !form.controls['allDay'].value }\">\n <lib-input-date-field\n class=\"event-date\"\n formControlName=\"startDate\"\n [readonly]=\"loading$ | async\"\n [hieActions]=\"true\"\n [showIcon]=\"true\"\n [label]=\"'CALENDAR.START_DATE' | fallbackTranslate: 'Start Date'\"\n ></lib-input-date-field>\n <lib-error-message class=\"input-error event-input-field-error\" [config]=\"{ control: form.controls['startDate'] }\"></lib-error-message>\n </div>\n @if (form.controls['allDay'].value) {\n <lib-input-date-field\n class=\"event-date event-end-date\"\n formControlName=\"endDate\"\n [disabled]=\"loading$ | async\"\n [hieActions]=\"true\"\n [showIcon]=\"true\"\n [label]=\"'CALENDAR.END_DATE' | fallbackTranslate: 'End Date'\"\n ></lib-input-date-field>\n <lib-error-message class=\"input-error event-input-field-error\" [config]=\"{ control: form.controls['endDate'] }\"></lib-error-message>\n }\n </div>\n </div>\n\n @if (!form.controls['allDay'].value) {\n <div class=\"form-row\">\n <div class=\"input-field-container input-field-container-group time-fields-group\">\n <div class=\"time-field\">\n <lib-input-time-field\n formControlName=\"startTime\"\n [showIcon]=\"true\"\n [startDate]=\"eventStart\"\n [interval]=\"15\"\n [disabled]=\"loading$ | async\"\n [label]=\"'CALENDAR.STARTS' | fallbackTranslate: 'Starts'\"\n ></lib-input-time-field>\n <lib-error-message class=\"input-error event-input-field-error\" [config]=\"{ control: form.controls['startTime'] }\"></lib-error-message>\n </div>\n <div class=\"time-field\">\n <lib-input-time-field\n class=\"end-time\"\n formControlName=\"endTime\"\n [interval]=\"15\"\n [showIcon]=\"true\"\n [displaySlotTime]=\"true\"\n [fromTime]=\"\n form.controls.startTime.value && form.controls.startTime.value['slotValue'] ? form.controls.startTime.value['slotValue'] : form.controls.startTime.value\n \"\n [startDate]=\"eventStart\"\n [disabled]=\"loading$ | async\"\n [label]=\"'CALENDAR.ENDS' | fallbackTranslate: 'Ends'\"\n ></lib-input-time-field>\n <lib-error-message class=\"input-error event-input-field-error\" [config]=\"{ control: form.controls['endTime'] }\"></lib-error-message>\n </div>\n </div>\n </div>\n }\n\n <div class=\"form-row recurring\">\n <div class=\"recurring-select\" formGroupName=\"recurringPattern\">\n <lib-input-field-select\n formControlName=\"type\"\n [optionLabel]=\"(recurringOptions[0].title | fallbackTranslate: 'noTrnslations') === 'noTrnslations' ? 'name' : 'title'\"\n [optionValue]=\"'type'\"\n [options]=\"recurringOptions\"\n [disabled]=\"loading$ | async\"\n >\n </lib-input-field-select>\n </div>\n <div class=\"allDay-container\">\n <ion-item class=\"no-shadow allDay\">\n <label>\n <lib-dashed-checkbox formControlName=\"allDay\" [disabled]=\"loading$ | async\"></lib-dashed-checkbox>\n <span>{{ 'CALENDAR.ALL_DAY' | fallbackTranslate: 'All day' }}</span>\n </label>\n </ion-item>\n </div>\n </div>\n\n <div class=\"form-row address\">\n <div class=\"input-field-container\">\n <lib-input-field\n maxLength=\"2000\"\n [trimWhiteSpace]=\"false\"\n formControlName=\"address\"\n [enableGoogleAddress]=\"true\"\n [address]=\"form.controls['address'].value\"\n (locationChange)=\"onLocationChange($event)\"\n [readonly]=\"loading$ | async\"\n [label]=\"'FIELDS.ADD_LOCATION' | fallbackTranslate: 'Location'\"\n >\n </lib-input-field>\n <lib-error-message class=\"input-error\" [config]=\"{ control: form.controls['address'] }\"></lib-error-message>\n </div>\n </div>\n\n <div class=\"form-row\">\n <div class=\"event-note-field\">\n <lib-input-field\n formControlName=\"note\"\n [textarea]=\"true\"\n [label]=\"'FIELDS.ADD_DESCRIPTION' | fallbackTranslate: 'Description'\"\n maxLength=\"2000\"\n [readonly]=\"loading$ | async\"\n ></lib-input-field>\n </div>\n </div>\n </div>\n </form>\n </div>\n</lib-bottom-modal>\n", styles: [".event-modal{--input-width: 100%;--input-height: 48px;--border-radius: 100px;--input-icon-color: #fe3c72;--input-font-color: #fff;--dropdown-background: linear-gradient(191.18deg, #27242c 61.33%, #0c0b0e 101.43%);--input-font-family: \"Gilroy-Regular\", serif;--label-color: grey;--input-field-box-shadow: inset 17px 22px 20px 2.5px rgba(17, 16, 20, .7), inset -2px -2px 8px rgba(203, 199, 209, .5);--input-number-filed-font: var(--font-family);--textarea-height: 100px !important;position:relative;display:block;width:100%;padding:0 20px 10px;max-height:72vh;overflow:auto}.event-modal .form-row{display:flex;flex-direction:row;margin-bottom:10px}.event-modal .form-row.form-footer{align-items:flex-end;justify-content:flex-end;margin-bottom:-15px}.event-modal .form-row.form-footer lib-primary-btn{width:100px}.event-modal .form-row.form-row-error{margin:-10px 0 0;padding:0;height:20px}.event-modal .form-row.recurring{margin:12px 0;display:flex}.event-modal .form-row.recurring .allDay-container,.event-modal .form-row.recurring .recurring-select{width:50%}.event-modal .form-row.recurring .recurring-select lib-input-field-select{width:100%}.event-modal .form-row.recurring .allDay-container{display:flex;flex-direction:row;justify-content:flex-start;align-items:flex-end;margin-top:-10px}.event-modal form{padding:5px 5px 0}.event-modal form .form-body{max-width:100%;position:relative;display:block}.event-modal ion-item ion-label{font-family:Gilroy-Regular,serif!important}.event-modal ion-item ion-label:not(.allDay){display:flex!important;flex-direction:row;align-items:center;justify-content:center}.event-modal ion-item.allDay{margin-top:-10px;width:fit-content;--min-height: 50px}.event-modal ion-item.allDay label{display:flex;gap:10px;align-items:center;font-family:Gilroy-Regular,serif;cursor:pointer}.event-modal ion-item.allDay lib-dashed-checkbox{--size: 24px;--color: var(--cyrano-pink-shade-1)}.event-modal .event-title-field,.event-modal .event-note-field{position:relative;display:block;width:100%;padding-top:10px}.event-modal .event-title-field lib-input-field,.event-modal .event-note-field lib-input-field{position:relative;width:100%;min-width:100%}.event-modal .input-field-container{padding-top:2px;width:100%}.event-modal .input-field-container.input-field-container-group{display:flex;gap:5px}.event-modal .input-field-container.input-field-container-group div{width:50%}.event-modal .input-field-container.input-field-container-group div.input-field-container-full-row{width:100%}.event-modal .input-field-container .time-fields{display:flex;gap:10px}.event-modal .input-field-container lib-input-field{width:100%}.event-modal .field-error{position:relative;display:block;width:100%}@media screen and (max-width: 500px){.event-modal .event-date-container{margin-bottom:15px}.event-modal .input-field-container-group{display:flex;flex-direction:column}.event-modal .input-field-container-group div{width:100%!important}.event-modal .input-field-container-group.time-fields-group{flex-direction:row}.event-modal .form-row.recurring{display:block}.event-modal .form-row.recurring .allDay-container,.event-modal .form-row.recurring .recurring-select{width:100%}.event-modal .form-row.recurring .allDay-container{display:flex;flex-direction:row;justify-content:flex-start;align-items:flex-end}.event-modal .form-row.recurring .allDay-container ion-item.allDay{padding-left:0;margin-top:10px}.event-modal .form-row.address{margin-top:-20px}.event-modal .form-row.event-dates{margin-bottom:0}}@media screen and (max-width: 350px){.event-modal .input-placeholder.input-placeholder-date .time-placeholder{margin-left:0}}.event-modal .event-input-field-error{margin-top:-20px}\n"] }]
1182
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1$1.FormBuilder }, { type: CalendarUtilsService }, { type: FallbackTranslatePipe }], propDecorators: { calendars: [{
1089
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1$2.FormBuilder }, { type: CalendarUtilsService }, { type: FallbackTranslatePipe }], propDecorators: { calendars: [{
1183
1090
  type: Input
1184
1091
  }], event: [{
1185
1092
  type: Input
@@ -1227,7 +1134,7 @@ class LibEventFormModule {
1227
1134
  LibEventInfoComponent,
1228
1135
  LibEditRecurringEventComponent,
1229
1136
  BaseComponent], exports: [LibEventFormComponent] }); }
1230
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: LibEventFormModule, providers: [CalendarUtilsService], imports: [CommonModule,
1137
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: LibEventFormModule, providers: [CalendarUtilsService, FallbackTranslatePipe], imports: [CommonModule,
1231
1138
  IonicModule,
1232
1139
  TranslateModule,
1233
1140
  FormsModule,
@@ -1270,29 +1177,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImpo
1270
1177
  LibEditRecurringEventComponent,
1271
1178
  BaseComponent,
1272
1179
  ],
1273
- providers: [CalendarUtilsService],
1180
+ providers: [CalendarUtilsService, FallbackTranslatePipe],
1274
1181
  }]
1275
1182
  }] });
1276
1183
 
1277
- var CalendarAccountEnum;
1278
- (function (CalendarAccountEnum) {
1279
- CalendarAccountEnum["GOOGLE"] = "Google";
1280
- CalendarAccountEnum["MICROSOFT"] = "Microsoft";
1281
- })(CalendarAccountEnum || (CalendarAccountEnum = {}));
1282
-
1283
- var CalendarAccountIconsEnum;
1284
- (function (CalendarAccountIconsEnum) {
1285
- CalendarAccountIconsEnum["Google"] = "googleCalender";
1286
- CalendarAccountIconsEnum["Microsoft"] = "microsoft";
1287
- })(CalendarAccountIconsEnum || (CalendarAccountIconsEnum = {}));
1288
-
1289
- var ScheduleDateStatus;
1290
- (function (ScheduleDateStatus) {
1291
- ScheduleDateStatus["Suggested"] = "suggested";
1292
- ScheduleDateStatus["Canceled"] = "canceled";
1293
- ScheduleDateStatus["Pending"] = "pending";
1294
- })(ScheduleDateStatus || (ScheduleDateStatus = {}));
1295
-
1296
1184
  const mockSchedule = [
1297
1185
  {
1298
1186
  day: 'Mon',
@@ -1476,7 +1364,7 @@ class LibSchedulerComponent {
1476
1364
  this.cdr.detectChanges();
1477
1365
  }
1478
1366
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: LibSchedulerComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
1479
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.14", type: LibSchedulerComponent, isStandalone: true, selector: "lib-scheduler", inputs: { adsTemplate: "adsTemplate", loading$: "loading$", emptyMessage: "emptyMessage", displayBookedStatuses: "displayBookedStatuses", displayEmptyDays: "displayEmptyDays", events$: "events$", startDate: "startDate", endDate: "endDate", default: "default" }, outputs: { bookEvent: "bookEvent", removeSuggestion: "removeSuggestion" }, ngImport: i0, template: "<div class=\"scheduler-container\" *ngIf=\"(loading$ | async) !== true; else loadingScheduler\">\n <div class=\"title f-lg f-gilroy-regular\" *ngIf=\"displayBookedStatuses\">{{ bookedCount }} {{ 'BOOKED' | translate }} - {{ suggestedCount }} {{ 'SUGGESTED' | translate }}</div>\n <ng-container *ngTemplateOutlet=\"adsTemplate\"></ng-container>\n <div class=\"content wrapper\" libDraggableScroll direction=\"vertical\" *ngIf=\"bookedCount > 0 || suggestedCount > 0 || displayEmptyDays; else emptyScheduler\">\n @for (eventDay of eventsDays; let dayIndex = $index; track eventDay) {\n <div class=\"block\">\n <div class=\"day\">\n <div class=\"day_name f-md f-gilroy-regular\">{{ eventDay.day }} <lib-section-separator></lib-section-separator></div>\n @for (event of eventDay.events; let eventIndex = $index; track event) {\n <div class=\"day-event\" *ngIf=\"event.suggestions?.length > 0\">\n <div class=\"main_block\" [class.expanded]=\"event.expanded && !event.booked\">\n <div class=\"event-header\" (click)=\"toggleExpand(dayIndex, eventIndex)\">\n <img src=\"assets/scheduler/arrow.svg\" class=\"show_more\" />\n <div class=\"time f-calistoga f-lg\">{{ event.start | date: 'h a' }}</div>\n <div class=\"wrapper\">\n <div class=\"free_time f-gilroy-regular f-md\">\n ~{{ event.hours }}\n <span [class.booked]=\"event.booked\">\n {{ (event.booked ? 'BOOKED' : 'FREE') | translate }}\n </span>\n </div>\n <div class=\"suggestions-count f-gilroy-regular f-sm\" *ngIf=\"event.suggestions?.length > 0\">\n <div>{{ event.suggestions.length }} {{ 'EVENT_SUGGETIONS_MSG' | translate }}</div>\n </div>\n </div>\n </div>\n @for (suggestion of event.suggestions; let suggestedIndex = $index; track suggestion) {\n <div class=\"suggestion_items\">\n <div class=\"suggested-by-wrapper\">\n @for (profile of suggestion?.profiles; track profile) {\n <div class=\"suggested-by\">\n <img class=\"profile\" [src]=\"profile?.img || 'assets/icons/default-profile.svg'\" />\n @if (profile?.suggested) {\n <img class=\"heart\" src=\"assets/scheduler/heart.svg\" />\n } @else if (profile?.cancelled) {\n <img class=\"heart\" src=\"assets/scheduler/cancel_active.svg\" />\n }\n </div>\n }\n <span class=\"schedule-title\"> {{ suggestion.title }} </span>\n </div>\n <div class=\"icons\">\n <img [src]=\"'assets/scheduler/cancel' + (suggestion.canceled ? '_active' : '') + '.svg'\" (click)=\"cancelSuggestion(dayIndex, eventIndex, suggestedIndex)\" />\n <img [src]=\"'assets/scheduler/accept' + (suggestion.checked ? '_active' : '') + '.svg'\" (click)=\"acceptSuggestion(dayIndex, eventIndex, suggestedIndex)\" />\n </div>\n </div>\n }\n </div>\n </div>\n }\n </div>\n </div>\n }\n </div>\n <ng-template #emptyScheduler>\n <lib-section-separator></lib-section-separator>\n <div class=\"empty-messsage messsage f-lg f-gilroy-regular\">{{ emptyMessage }}</div>\n </ng-template>\n</div>\n\n<ng-template #loadingScheduler>\n <div class=\"scheduler-container\">\n <div class=\"content\">\n @for (eventDay of eventsDays; let dayIndex = $index; track eventDay) {\n <div class=\"block\">\n <div class=\"day\">\n <div class=\"day_name f-md f-gilroy-regular\">{{ eventDay.day }} <lib-section-separator></lib-section-separator></div>\n <p-skeleton width=\"100%\" height=\"20px\" borderRadius=\"20px\"></p-skeleton>\n </div>\n </div>\n }\n </div>\n </div>\n</ng-template>\n", styles: [".scheduler-container{position:relative;border-radius:16px}.scheduler-container .title{text-align:center;font-weight:500;margin-top:20px}.scheduler-container .empty-messsage{margin-bottom:40px}.scheduler-container .content{display:flex;flex-direction:column;row-gap:3px}.scheduler-container .content .block{position:relative;z-index:1}.scheduler-container .content .block .day{display:flex;flex-direction:column;row-gap:3px}.scheduler-container .content .block .day .day_name{color:#ebebf599;font-weight:500;display:flex;align-items:center}.scheduler-container .content .block .day .day_name lib-section-separator{width:-webkit-fill-available;--margin-top: .1rem;--margin-bottom: .1rem;margin:0 20px}.scheduler-container .content .block .day .day-event{background:linear-gradient(162deg,#c35a8b -9%,#524b57 32%);padding:2px 2px 0;border-radius:15px}.scheduler-container .content .block .day .day-event .main_block{border-radius:15px;background:linear-gradient(90deg,#fe3c7299 -9%,#3a323f 14%);padding:8px 10px;color:#ebebf599;box-shadow:-1px -3px 8px #ffffff1a}.scheduler-container .content .block .day .day-event .main_block .show_more{width:20px;height:20px;transition:.3s;transform:rotate(-90deg)}.scheduler-container .content .block .day .day-event .main_block .time{color:var(--ion-text-color, #fff5f5)}.scheduler-container .content .block .day .day-event .main_block .free_time{font-weight:500}.scheduler-container .content .block .day .day-event .main_block .free_time .blocked{color:#fe3c72}.scheduler-container .content .block .day .day-event .main_block .event-header{cursor:pointer;display:flex;align-items:center;column-gap:10px}.scheduler-container .content .block .day .day-event .main_block .icons{display:flex;column-gap:10px;padding-right:10px}.scheduler-container .content .block .day .day-event .main_block .icons img{width:25px;height:25px;cursor:pointer}.scheduler-container .content .block .day .day-event .main_block .suggestion_items{transition:.3s;height:0;overflow:hidden;display:flex;justify-content:space-between;margin-top:0}.scheduler-container .content .block .day .day-event .main_block .suggestion_items .suggested-by-wrapper{display:flex;align-items:center}.scheduler-container .content .block .day .day-event .main_block .suggestion_items .suggested-by-wrapper .schedule-title{padding-left:30px}.scheduler-container .content .block .day .day-event .main_block .suggestion_items .suggested-by-wrapper .suggested-by{border:2px solid #28252d;width:25px;height:25px;position:relative;border-radius:50%}.scheduler-container .content .block .day .day-event .main_block .suggestion_items .suggested-by-wrapper .suggested-by .profile{position:absolute;width:100%;height:100%;border-radius:50%}.scheduler-container .content .block .day .day-event .main_block .suggestion_items .suggested-by-wrapper .suggested-by .heart{width:25px;height:25px;position:absolute;top:-4px;right:-12px}.scheduler-container .content .block .day .day-event .main_block .wrapper{flex-direction:row;flex-grow:1;display:flex;justify-content:space-between}.scheduler-container .content .block .day .day-event .main_block.expanded .suggestion_items{transition:.3s;height:30px;margin-top:10px}.scheduler-container .content .block .day .day-event .main_block.expanded .show_more{transition:.3s;transform:rotate(0)}.scheduler-container .content .block .day .day-event .booked{pointer-events:none;color:var(--cyrano-pink-shade-1)}@media (max-width: 576px){.scheduler-container .title{margin-top:10px;font-size:10.25px}.scheduler-container .empty-messsage{font-size:8px}.scheduler-container .content,.scheduler-container .content .block .day{row-gap:3px}.scheduler-container .content .block .day .day_name{font-size:8px}.scheduler-container .content .block .day .day-event{margin-bottom:5px}.scheduler-container .content .block .day .day-event .main_block{padding:5px;border-radius:12px}.scheduler-container .content .block .day .day-event .main_block .show_more{width:12px;height:12px}.scheduler-container .content .block .day .day-event .main_block .wrapper{flex-direction:row;display:flex;justify-content:space-between}.scheduler-container .content .block .day .day-event .main_block .time{margin-right:5px;font-size:12px;font-size:10px;justify-content:space-between}.scheduler-container .content .block .day .day-event .main_block .suggestions-count{text-align:right;font-weight:500;line-height:9.42px;letter-spacing:.07px;font-size:8px;padding-right:10px}.scheduler-container .content .block .day .day-event .main_block .free_time{font-size:10.25px}.scheduler-container .content .block .day .day-event .main_block .event-header{column-gap:5px}.scheduler-container .content .block .day .day-event .main_block .icons img{width:10px;height:10px}.scheduler-container .content .block .day .day-event .main_block .suggestion_items{padding-left:23px;font-size:8px;letter-spacing:.07px}.scheduler-container .content .block .day .day-event .expanded .suggestion_items{height:10px;margin-top:7px}}.day-event .main_block:has(.blocked) .suggestion_items{height:0!important;margin-top:0!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "component", type: SectionSeparatorComponent, selector: "lib-section-separator" }, { kind: "ngmodule", type: SkeletonModule }, { kind: "component", type: i2$2.Skeleton, selector: "p-skeleton", inputs: ["styleClass", "shape", "animation", "borderRadius", "size", "width", "height"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i1.DatePipe, name: "date" }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1367
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.14", type: LibSchedulerComponent, isStandalone: true, selector: "lib-scheduler", inputs: { adsTemplate: "adsTemplate", loading$: "loading$", emptyMessage: "emptyMessage", displayBookedStatuses: "displayBookedStatuses", displayEmptyDays: "displayEmptyDays", events$: "events$", startDate: "startDate", endDate: "endDate", default: "default" }, outputs: { bookEvent: "bookEvent", removeSuggestion: "removeSuggestion" }, ngImport: i0, template: "<div class=\"scheduler-container\" *ngIf=\"(loading$ | async) !== true; else loadingScheduler\">\n <div class=\"title f-lg f-gilroy-regular\" *ngIf=\"displayBookedStatuses\">{{ bookedCount }} {{ 'BOOKED' | translate }} - {{ suggestedCount }} {{ 'SUGGESTED' | translate }}</div>\n <ng-container *ngTemplateOutlet=\"adsTemplate\"></ng-container>\n <div class=\"content wrapper\" libDraggableScroll direction=\"vertical\" *ngIf=\"bookedCount > 0 || suggestedCount > 0 || displayEmptyDays; else emptyScheduler\">\n @for (eventDay of eventsDays; let dayIndex = $index; track eventDay) {\n <div class=\"block\">\n <div class=\"day\">\n <div class=\"day_name f-md f-gilroy-regular\">{{ eventDay.day }} <lib-section-separator></lib-section-separator></div>\n @for (event of eventDay.events; let eventIndex = $index; track event) {\n <div class=\"day-event\" *ngIf=\"event.suggestions?.length > 0\">\n <div class=\"main_block\" [class.expanded]=\"event.expanded && !event.booked\">\n <div class=\"event-header\" (click)=\"toggleExpand(dayIndex, eventIndex)\">\n <img src=\"assets/scheduler/arrow.svg\" class=\"show_more\" />\n <div class=\"time f-calistoga f-lg\">{{ event.start | date: 'h a' }}</div>\n <div class=\"wrapper\">\n <div class=\"free_time f-gilroy-regular f-md\">\n ~{{ event.hours }}\n <span [class.booked]=\"event.booked\">\n {{ (event.booked ? 'BOOKED' : 'FREE') | translate }}\n </span>\n </div>\n <div class=\"suggestions-count f-gilroy-regular f-sm\" *ngIf=\"event.suggestions?.length > 0\">\n <div>{{ event.suggestions.length }} {{ 'EVENT_SUGGETIONS_MSG' | translate }}</div>\n </div>\n </div>\n </div>\n @for (suggestion of event.suggestions; let suggestedIndex = $index; track suggestion) {\n <div class=\"suggestion_items\">\n <div class=\"suggested-by-wrapper\">\n @for (profile of suggestion?.profiles; track profile) {\n <div class=\"suggested-by\">\n <img class=\"profile\" [src]=\"profile?.img || 'assets/icons/default-profile.svg'\" />\n @if (profile?.suggested) {\n <img class=\"heart\" src=\"assets/scheduler/heart.svg\" />\n } @else if (profile?.cancelled) {\n <img class=\"heart\" src=\"assets/scheduler/cancel_active.svg\" />\n }\n </div>\n }\n <span class=\"schedule-title\"> {{ suggestion.title }} </span>\n </div>\n <div class=\"icons\">\n <img [src]=\"'assets/scheduler/cancel' + (suggestion.canceled ? '_active' : '') + '.svg'\" (click)=\"cancelSuggestion(dayIndex, eventIndex, suggestedIndex)\" />\n <img [src]=\"'assets/scheduler/accept' + (suggestion.checked ? '_active' : '') + '.svg'\" (click)=\"acceptSuggestion(dayIndex, eventIndex, suggestedIndex)\" />\n </div>\n </div>\n }\n </div>\n </div>\n }\n </div>\n </div>\n }\n </div>\n <ng-template #emptyScheduler>\n <lib-section-separator></lib-section-separator>\n <div class=\"empty-messsage messsage f-lg f-gilroy-regular\">{{ emptyMessage }}</div>\n </ng-template>\n</div>\n\n<ng-template #loadingScheduler>\n <div class=\"scheduler-container\">\n <div class=\"content\">\n @for (eventDay of eventsDays; let dayIndex = $index; track eventDay) {\n <div class=\"block\">\n <div class=\"day\">\n <div class=\"day_name f-md f-gilroy-regular\">{{ eventDay.day }} <lib-section-separator></lib-section-separator></div>\n <p-skeleton width=\"100%\" height=\"20px\" borderRadius=\"20px\"></p-skeleton>\n </div>\n </div>\n }\n </div>\n </div>\n</ng-template>\n", styles: [".scheduler-container{position:relative;border-radius:16px}.scheduler-container .title{text-align:center;font-weight:500;margin-top:20px}.scheduler-container .empty-messsage{margin-bottom:40px}.scheduler-container .content{display:flex;flex-direction:column;row-gap:3px}.scheduler-container .content .block{position:relative;z-index:1}.scheduler-container .content .block .day{display:flex;flex-direction:column;row-gap:3px}.scheduler-container .content .block .day .day_name{color:#ebebf599;font-weight:500;display:flex;align-items:center}.scheduler-container .content .block .day .day_name lib-section-separator{width:-webkit-fill-available;--margin-top: .1rem;--margin-bottom: .1rem;margin:0 20px}.scheduler-container .content .block .day .day-event{background:linear-gradient(162deg,#c35a8b -9%,#524b57 32%);padding:2px 2px 0;border-radius:15px}.scheduler-container .content .block .day .day-event .main_block{border-radius:15px;background:linear-gradient(90deg,#fe3c7299 -9%,#3a323f 14%);padding:8px 10px;color:#ebebf599;box-shadow:-1px -3px 8px #ffffff1a}.scheduler-container .content .block .day .day-event .main_block .show_more{width:20px;height:20px;transition:.3s;transform:rotate(-90deg)}.scheduler-container .content .block .day .day-event .main_block .time{color:var(--ion-text-color, #fff5f5)}.scheduler-container .content .block .day .day-event .main_block .free_time{font-weight:500}.scheduler-container .content .block .day .day-event .main_block .free_time .blocked{color:#fe3c72}.scheduler-container .content .block .day .day-event .main_block .event-header{cursor:pointer;display:flex;align-items:center;column-gap:10px}.scheduler-container .content .block .day .day-event .main_block .icons{display:flex;column-gap:10px;padding-right:10px}.scheduler-container .content .block .day .day-event .main_block .icons img{width:25px;height:25px;cursor:pointer}.scheduler-container .content .block .day .day-event .main_block .suggestion_items{transition:.3s;height:0;overflow:hidden;display:flex;justify-content:space-between;margin-top:0}.scheduler-container .content .block .day .day-event .main_block .suggestion_items .suggested-by-wrapper{display:flex;align-items:center}.scheduler-container .content .block .day .day-event .main_block .suggestion_items .suggested-by-wrapper .schedule-title{padding-left:30px}.scheduler-container .content .block .day .day-event .main_block .suggestion_items .suggested-by-wrapper .suggested-by{border:2px solid #28252d;width:25px;height:25px;position:relative;border-radius:50%}.scheduler-container .content .block .day .day-event .main_block .suggestion_items .suggested-by-wrapper .suggested-by .profile{position:absolute;width:100%;height:100%;border-radius:50%}.scheduler-container .content .block .day .day-event .main_block .suggestion_items .suggested-by-wrapper .suggested-by .heart{width:25px;height:25px;position:absolute;top:-4px;right:-12px}.scheduler-container .content .block .day .day-event .main_block .wrapper{flex-direction:row;flex-grow:1;display:flex;justify-content:space-between}.scheduler-container .content .block .day .day-event .main_block.expanded .suggestion_items{transition:.3s;height:30px;margin-top:10px}.scheduler-container .content .block .day .day-event .main_block.expanded .show_more{transition:.3s;transform:rotate(0)}.scheduler-container .content .block .day .day-event .booked{pointer-events:none;color:var(--cyrano-pink-shade-1)}@media (max-width: 576px){.scheduler-container .title{margin-top:10px;font-size:10.25px}.scheduler-container .empty-messsage{font-size:8px}.scheduler-container .content,.scheduler-container .content .block .day{row-gap:3px}.scheduler-container .content .block .day .day_name{font-size:8px}.scheduler-container .content .block .day .day-event{margin-bottom:5px}.scheduler-container .content .block .day .day-event .main_block{padding:5px;border-radius:12px}.scheduler-container .content .block .day .day-event .main_block .show_more{width:12px;height:12px}.scheduler-container .content .block .day .day-event .main_block .wrapper{flex-direction:row;display:flex;justify-content:space-between}.scheduler-container .content .block .day .day-event .main_block .time{margin-right:5px;font-size:12px;font-size:10px;justify-content:space-between}.scheduler-container .content .block .day .day-event .main_block .suggestions-count{text-align:right;font-weight:500;line-height:9.42px;letter-spacing:.07px;font-size:8px;padding-right:10px}.scheduler-container .content .block .day .day-event .main_block .free_time{font-size:10.25px}.scheduler-container .content .block .day .day-event .main_block .event-header{column-gap:5px}.scheduler-container .content .block .day .day-event .main_block .icons img{width:10px;height:10px}.scheduler-container .content .block .day .day-event .main_block .suggestion_items{padding-left:23px;font-size:8px;letter-spacing:.07px}.scheduler-container .content .block .day .day-event .expanded .suggestion_items{height:10px;margin-top:7px}}.day-event .main_block:has(.blocked) .suggestion_items{height:0!important;margin-top:0!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "component", type: SectionSeparatorComponent, selector: "lib-section-separator" }, { kind: "ngmodule", type: SkeletonModule }, { kind: "component", type: i2$2.Skeleton, selector: "p-skeleton", inputs: ["styleClass", "shape", "animation", "borderRadius", "size", "width", "height"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i1.DatePipe, name: "date" }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1480
1368
  }
1481
1369
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: LibSchedulerComponent, decorators: [{
1482
1370
  type: Component,
@@ -1526,26 +1414,12 @@ const innerProgressTealColors = {
1526
1414
  const progressDefaultColors = {
1527
1415
  primary: '#FE3C72',
1528
1416
  secondary: '#E15561',
1529
- tertiary: '#FE3C3C',
1530
- gradientPrimary: '#f0788d',
1531
- gradientSecondary: '#f84776',
1532
- complete: '#ff858f',
1533
- incomplete: '#E15561',
1534
- };
1535
-
1536
- var INNER_CIRCLE_STATE;
1537
- (function (INNER_CIRCLE_STATE) {
1538
- INNER_CIRCLE_STATE["Waiting"] = "waiting";
1539
- INNER_CIRCLE_STATE["Quiet"] = "quiet";
1540
- INNER_CIRCLE_STATE["Unresponsive"] = "unresponsive";
1541
- INNER_CIRCLE_STATE["Redelegation"] = "redelegation";
1542
- })(INNER_CIRCLE_STATE || (INNER_CIRCLE_STATE = {}));
1543
-
1544
- var CircleVariable;
1545
- (function (CircleVariable) {
1546
- CircleVariable["Partial"] = "partial";
1547
- CircleVariable["Complete"] = "complete";
1548
- })(CircleVariable || (CircleVariable = {}));
1417
+ tertiary: '#FE3C3C',
1418
+ gradientPrimary: '#f0788d',
1419
+ gradientSecondary: '#f84776',
1420
+ complete: '#ff858f',
1421
+ incomplete: '#E15561',
1422
+ };
1549
1423
 
1550
1424
  class CircleProgressComponent {
1551
1425
  set config(newConfig) {
@@ -1710,11 +1584,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImpo
1710
1584
  type: Output
1711
1585
  }] } });
1712
1586
 
1713
- var LocalStorageKeys;
1714
- (function (LocalStorageKeys) {
1715
- LocalStorageKeys["LongPressForSendImmediately"] = "longPressForSendImmediately";
1716
- })(LocalStorageKeys || (LocalStorageKeys = {}));
1717
-
1718
1587
  class AbstractCacheService {
1719
1588
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: AbstractCacheService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1720
1589
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: AbstractCacheService }); }
@@ -1723,7 +1592,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImpo
1723
1592
  type: Injectable
1724
1593
  }] });
1725
1594
 
1726
- class ChatService {
1595
+ let ChatService$1 = class ChatService {
1727
1596
  constructor(cacheService) {
1728
1597
  this.cacheService = cacheService;
1729
1598
  }
@@ -1772,8 +1641,8 @@ class ChatService {
1772
1641
  }
1773
1642
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: ChatService, deps: [{ token: AbstractCacheService }], target: i0.ɵɵFactoryTarget.Injectable }); }
1774
1643
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: ChatService, providedIn: 'root' }); }
1775
- }
1776
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: ChatService, decorators: [{
1644
+ };
1645
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: ChatService$1, decorators: [{
1777
1646
  type: Injectable,
1778
1647
  args: [{
1779
1648
  providedIn: 'root',
@@ -1850,13 +1719,13 @@ class LibMessageModalComponent {
1850
1719
  longPressEnabled: this.toggleLongPress.value,
1851
1720
  });
1852
1721
  }
1853
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: LibMessageModalComponent, deps: [{ token: i1$1.FormBuilder }, { token: i2.PopupModalService }, { token: ChatService }, { token: MODAL_DATA, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
1854
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.14", type: LibMessageModalComponent, isStandalone: false, selector: "lib-message-modal", viewQueries: [{ propertyName: "toggleTemplate", first: true, predicate: ["toggleTemplate"], descendants: true, static: true }], ngImport: i0, template: "<div class=\"message-modal\">\r\n <header class=\"message-modal__header\">\r\n <div class=\"message-modal__info\">\r\n <div class=\"message-modal__title\">Send Message</div>\r\n </div>\r\n </header>\r\n <form class=\"message-modal__radio-btn\" [formGroup]=\"formTime\">\r\n <lib-form-field [formFieldControl]=\"messageType\" [radioTranslateLabels]=\"true\" [options]=\"options\" [type]=\"type\"></lib-form-field>\r\n @if (messageType?.value === 'specify_time') {\r\n <lib-input-date-field [formControlName]=\"'time'\" label=\"\" [timeOnly]=\"true\" [showIcon]=\"true\"></lib-input-date-field>\r\n }\r\n </form>\r\n <div>\r\n <lib-primary-btn (click)=\"onSubmit()\" [disabled]=\"formTime.valid\">Send</lib-primary-btn>\r\n </div>\r\n</div>\r\n\r\n<ng-template #toggleTemplate>\r\n <div class=\"long-press-toggle\">\r\n <lib-toggle [formControl]=\"toggleLongPress\"></lib-toggle>\r\n <div class=\"long-press-toggle__text\">{{ 'MESSAGE_MODAL.LONG_PRESS' | translate }}</div>\r\n </div>\r\n</ng-template>\r\n", styles: [":host{font-size:clamp(0px,3.2dvw,12px)}:host *{box-sizing:border-box}:host lib-toggle{font-size:.6em}.long-press-toggle{margin:10px;display:flex}.long-press-toggle__text{margin-left:.8em;font-size:1.1em;font-family:Gilroy}.message-modal{-webkit-backdrop-filter:blur(.625em);backdrop-filter:blur(.625em);background:linear-gradient(transparent,#b0b0b01f 15%);margin:auto;color:#fff;padding:1.5em 2.5em;width:27em;border-radius:3.6625em;font-family:Gilroy;display:flex;flex-direction:column;gap:17px}.message-modal__header{display:flex;justify-content:center;align-items:flex-start}.message-modal__title{font-size:1.875em;font-weight:300;font-family:Calistoga;color:#fff5f5}.message-modal__radio-btn{display:flex;flex-direction:column}.message-modal:before{content:\"\";position:absolute;inset:0;border-radius:3.6625em;padding:.125em;background:linear-gradient(to top,transparent,transparent,#ccabc4);-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:exclude;z-index:-1}.overflow{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}@media (max-width: 768px){:host{font-size:calc(clamp(0px,3.2dvw,12px)*.8)}}\n"], dependencies: [{ kind: "component", type: i2.FormFieldComponent, selector: "lib-form-field", inputs: ["fieldName", "label", "placeholder", "message", "useTooltips", "descriptionText", "formFieldControl", "submitted", "required", "type", "plusIconUrl", "minusIconUrl", "maxLength", "max", "min", "pinValue", "dualKnobs", "reverseBarColor", "defaultValue", "noMargin", "options", "iconHtml", "invalidPatternMessage", "dateFormat", "currencySymbol", "hideCents", "isEditable", "rowEditConfirmationObsv", "errorInlineMode", "showLabelInRequiredErrorMessage", "decimalPosition", "hyperlinkTarget", "readOnly", "focus", "showRequiredIndicator", "maxDate", "minDate", "radioTranslateLabels", "radioDeselectable", "radioRippleEffect"], outputs: ["rowEdit", "focusOut", "valueChange"] }, { kind: "component", type: i2.PrimaryBtnComponent, selector: "lib-primary-btn", inputs: ["hoverOutline", "disabled", "type", "form", "label", "showArrowIcon", "disableTextShadow", "loading$"] }, { kind: "component", type: i2.InputDateFieldComponent, selector: "lib-input-date-field", inputs: ["label", "defaultDate", "maxDate", "minDate", "showTime", "hieActions", "readonly", "defaultDayHighlight", "showIcon", "timeOnly", "view", "disabled", "dateFormat", "placeholder", "appendTo", "stepMinute", "mask", "styleClass", "timeFormat"], outputs: ["focusEvent"] }, { kind: "directive", type: i1$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i2.ToggleComponent, selector: "lib-toggle", inputs: ["disabled", "toggleState", "variant", "left", "right", "thumbImg", "multipleOptions"], outputs: ["toggleStateChange"] }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1722
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: LibMessageModalComponent, deps: [{ token: i1$2.FormBuilder }, { token: i2.PopupModalService }, { token: ChatService$1 }, { token: MODAL_DATA, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
1723
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.14", type: LibMessageModalComponent, isStandalone: false, selector: "lib-message-modal", viewQueries: [{ propertyName: "toggleTemplate", first: true, predicate: ["toggleTemplate"], descendants: true, static: true }], ngImport: i0, template: "<div class=\"message-modal\">\r\n <header class=\"message-modal__header\">\r\n <div class=\"message-modal__info\">\r\n <div class=\"message-modal__title\">Send Message</div>\r\n </div>\r\n </header>\r\n <form class=\"message-modal__radio-btn\" [formGroup]=\"formTime\">\r\n <lib-form-field [formFieldControl]=\"messageType\" [radioTranslateLabels]=\"true\" [options]=\"options\" [type]=\"type\"></lib-form-field>\r\n @if (messageType?.value === 'specify_time') {\r\n <lib-input-date-field [formControlName]=\"'time'\" label=\"\" [timeOnly]=\"true\" [showIcon]=\"true\"></lib-input-date-field>\r\n }\r\n </form>\r\n <div>\r\n <lib-primary-btn (click)=\"onSubmit()\" [disabled]=\"formTime.valid\">Send</lib-primary-btn>\r\n </div>\r\n</div>\r\n\r\n<ng-template #toggleTemplate>\r\n <div class=\"long-press-toggle\">\r\n <lib-toggle [formControl]=\"toggleLongPress\"></lib-toggle>\r\n <div class=\"long-press-toggle__text\">{{ 'MESSAGE_MODAL.LONG_PRESS' | translate }}</div>\r\n </div>\r\n</ng-template>\r\n", styles: [":host{font-size:clamp(0px,3.2dvw,12px)}:host *{box-sizing:border-box}:host lib-toggle{font-size:.6em}.long-press-toggle{margin:10px;display:flex}.long-press-toggle__text{margin-left:.8em;font-size:1.1em;font-family:Gilroy}.message-modal{-webkit-backdrop-filter:blur(.625em);backdrop-filter:blur(.625em);background:linear-gradient(transparent,#b0b0b01f 15%);margin:auto;color:#fff;padding:1.5em 2.5em;width:27em;border-radius:3.6625em;font-family:Gilroy;display:flex;flex-direction:column;gap:17px}.message-modal__header{display:flex;justify-content:center;align-items:flex-start}.message-modal__title{font-size:1.875em;font-weight:300;font-family:Calistoga;color:#fff5f5}.message-modal__radio-btn{display:flex;flex-direction:column}.message-modal:before{content:\"\";position:absolute;inset:0;border-radius:3.6625em;padding:.125em;background:linear-gradient(to top,transparent,transparent,#ccabc4);-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:exclude;z-index:-1}.overflow{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}@media (max-width: 768px){:host{font-size:calc(clamp(0px,3.2dvw,12px)*.8)}}\n"], dependencies: [{ kind: "component", type: i2.FormFieldComponent, selector: "lib-form-field", inputs: ["fieldName", "label", "placeholder", "message", "useTooltips", "descriptionText", "formFieldControl", "submitted", "required", "type", "plusIconUrl", "minusIconUrl", "maxLength", "max", "min", "pinValue", "dualKnobs", "reverseBarColor", "defaultValue", "noMargin", "options", "iconHtml", "invalidPatternMessage", "dateFormat", "currencySymbol", "hideCents", "isEditable", "rowEditConfirmationObsv", "errorInlineMode", "showLabelInRequiredErrorMessage", "decimalPosition", "hyperlinkTarget", "readOnly", "focus", "showRequiredIndicator", "maxDate", "minDate", "radioTranslateLabels", "radioDeselectable", "radioRippleEffect"], outputs: ["rowEdit", "focusOut", "valueChange"] }, { kind: "component", type: i2.PrimaryBtnComponent, selector: "lib-primary-btn", inputs: ["hoverOutline", "disabled", "type", "form", "label", "showArrowIcon", "disableTextShadow", "loading$"] }, { kind: "component", type: i2.InputDateFieldComponent, selector: "lib-input-date-field", inputs: ["label", "defaultDate", "maxDate", "minDate", "showTime", "hieActions", "readonly", "defaultDayHighlight", "showIcon", "timeOnly", "view", "disabled", "dateFormat", "placeholder", "appendTo", "stepMinute", "mask", "styleClass", "timeFormat"], outputs: ["focusEvent"] }, { kind: "directive", type: i1$2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i2.ToggleComponent, selector: "lib-toggle", inputs: ["disabled", "toggleState", "variant", "left", "right", "thumbImg", "multipleOptions"], outputs: ["toggleStateChange"] }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1855
1724
  }
1856
1725
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: LibMessageModalComponent, decorators: [{
1857
1726
  type: Component,
1858
1727
  args: [{ selector: 'lib-message-modal', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<div class=\"message-modal\">\r\n <header class=\"message-modal__header\">\r\n <div class=\"message-modal__info\">\r\n <div class=\"message-modal__title\">Send Message</div>\r\n </div>\r\n </header>\r\n <form class=\"message-modal__radio-btn\" [formGroup]=\"formTime\">\r\n <lib-form-field [formFieldControl]=\"messageType\" [radioTranslateLabels]=\"true\" [options]=\"options\" [type]=\"type\"></lib-form-field>\r\n @if (messageType?.value === 'specify_time') {\r\n <lib-input-date-field [formControlName]=\"'time'\" label=\"\" [timeOnly]=\"true\" [showIcon]=\"true\"></lib-input-date-field>\r\n }\r\n </form>\r\n <div>\r\n <lib-primary-btn (click)=\"onSubmit()\" [disabled]=\"formTime.valid\">Send</lib-primary-btn>\r\n </div>\r\n</div>\r\n\r\n<ng-template #toggleTemplate>\r\n <div class=\"long-press-toggle\">\r\n <lib-toggle [formControl]=\"toggleLongPress\"></lib-toggle>\r\n <div class=\"long-press-toggle__text\">{{ 'MESSAGE_MODAL.LONG_PRESS' | translate }}</div>\r\n </div>\r\n</ng-template>\r\n", styles: [":host{font-size:clamp(0px,3.2dvw,12px)}:host *{box-sizing:border-box}:host lib-toggle{font-size:.6em}.long-press-toggle{margin:10px;display:flex}.long-press-toggle__text{margin-left:.8em;font-size:1.1em;font-family:Gilroy}.message-modal{-webkit-backdrop-filter:blur(.625em);backdrop-filter:blur(.625em);background:linear-gradient(transparent,#b0b0b01f 15%);margin:auto;color:#fff;padding:1.5em 2.5em;width:27em;border-radius:3.6625em;font-family:Gilroy;display:flex;flex-direction:column;gap:17px}.message-modal__header{display:flex;justify-content:center;align-items:flex-start}.message-modal__title{font-size:1.875em;font-weight:300;font-family:Calistoga;color:#fff5f5}.message-modal__radio-btn{display:flex;flex-direction:column}.message-modal:before{content:\"\";position:absolute;inset:0;border-radius:3.6625em;padding:.125em;background:linear-gradient(to top,transparent,transparent,#ccabc4);-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:exclude;z-index:-1}.overflow{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}@media (max-width: 768px){:host{font-size:calc(clamp(0px,3.2dvw,12px)*.8)}}\n"] }]
1859
- }], ctorParameters: () => [{ type: i1$1.FormBuilder }, { type: i2.PopupModalService }, { type: ChatService }, { type: undefined, decorators: [{
1728
+ }], ctorParameters: () => [{ type: i1$2.FormBuilder }, { type: i2.PopupModalService }, { type: ChatService$1 }, { type: undefined, decorators: [{
1860
1729
  type: Optional
1861
1730
  }, {
1862
1731
  type: Inject,
@@ -1866,19 +1735,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImpo
1866
1735
  args: ['toggleTemplate', { static: true }]
1867
1736
  }] } });
1868
1737
 
1869
- var SenderTypes;
1870
- (function (SenderTypes) {
1871
- SenderTypes["USER"] = "user";
1872
- SenderTypes["OTHER"] = "other";
1873
- })(SenderTypes || (SenderTypes = {}));
1874
-
1875
- var SendMessageType;
1876
- (function (SendMessageType) {
1877
- SendMessageType["INMEDIATELY"] = "send_immediately";
1878
- SendMessageType["AFTER"] = "send_after";
1879
- SendMessageType["SPECIFIC"] = "specify_time";
1880
- })(SendMessageType || (SendMessageType = {}));
1881
-
1882
1738
  class GifSelectorService {
1883
1739
  constructor() {
1884
1740
  this.http = inject(HttpClient);
@@ -1975,7 +1831,7 @@ class GifSelectorComponent {
1975
1831
  this.selectGif.emit(url);
1976
1832
  }
1977
1833
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: GifSelectorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1978
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.14", type: GifSelectorComponent, isStandalone: true, selector: "lib-gif-selector", outputs: { selectGif: "selectGif" }, ngImport: i0, template: "<form [formGroup]=\"form\" autocomplete=\"off\" libFocusInvalidInput *ngIf=\"form\">\n <input type=\"text\" formControlName=\"gifTerm\" />\n <div\n infiniteScroll\n [infiniteScrollDistance]=\"distance\"\n [infiniteScrollThrottle]=\"throttle\"\n [scrollWindow]=\"false\"\n (scrolled)=\"onScrollGifs()\"\n class=\"gifs-container\"\n style=\"display: flex; gap: 1px; flex-wrap: wrap\"\n >\n <img [src]=\"gif.media_formats.nanogif.url\" class=\"gif\" *ngFor=\"let gif of gifs\" (click)=\"onGifClick(gif.media_formats.nanogif.url)\" />\n </div>\n</form>\n", styles: [":host{width:100%;height:100%;font-size:clamp(0px,3.2dvw,15px)}:host form{border-radius:1em 1em 0 0;background-color:#000;width:100%;height:100%}:host form input[type=text]{height:2em;margin:0;font-size:.8em}:host form .gifs-container{height:calc(100% - 3em);overflow-y:auto;display:flex;flex-wrap:wrap;align-items:center}:host form .gifs-container .gif{flex:2 1 auto;width:auto;max-width:33%;max-height:13em;height:fit-content;object-fit:contain;object-position:center}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: InfiniteScrollModule }, { kind: "directive", type: i2$3.InfiniteScrollDirective, selector: "[infiniteScroll], [infinite-scroll], [data-infinite-scroll]", inputs: ["infiniteScrollDistance", "infiniteScrollUpDistance", "infiniteScrollThrottle", "infiniteScrollDisabled", "infiniteScrollContainer", "scrollWindow", "immediateCheck", "horizontal", "alwaysCallback", "fromRoot"], outputs: ["scrolled", "scrolledUp"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1834
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.14", type: GifSelectorComponent, isStandalone: true, selector: "lib-gif-selector", outputs: { selectGif: "selectGif" }, ngImport: i0, template: "<form [formGroup]=\"form\" autocomplete=\"off\" libFocusInvalidInput *ngIf=\"form\">\n <input type=\"text\" formControlName=\"gifTerm\" />\n <div\n infiniteScroll\n [infiniteScrollDistance]=\"distance\"\n [infiniteScrollThrottle]=\"throttle\"\n [scrollWindow]=\"false\"\n (scrolled)=\"onScrollGifs()\"\n class=\"gifs-container\"\n style=\"display: flex; gap: 1px; flex-wrap: wrap\"\n >\n <img [src]=\"gif.media_formats.nanogif.url\" class=\"gif\" *ngFor=\"let gif of gifs\" (click)=\"onGifClick(gif.media_formats.nanogif.url)\" />\n </div>\n</form>\n", styles: [":host{width:100%;height:100%;font-size:clamp(0px,3.2dvw,15px)}:host form{border-radius:1em 1em 0 0;background-color:#000;width:100%;height:100%}:host form input[type=text]{height:2em;margin:0;font-size:.8em}:host form .gifs-container{height:calc(100% - 3em);overflow-y:auto;display:flex;flex-wrap:wrap;align-items:center}:host form .gifs-container .gif{flex:2 1 auto;width:auto;max-width:33%;max-height:13em;height:fit-content;object-fit:contain;object-position:center}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: InfiniteScrollModule }, { kind: "directive", type: i2$3.InfiniteScrollDirective, selector: "[infiniteScroll], [infinite-scroll], [data-infinite-scroll]", inputs: ["infiniteScrollDistance", "infiniteScrollUpDistance", "infiniteScrollThrottle", "infiniteScrollDisabled", "infiniteScrollContainer", "scrollWindow", "immediateCheck", "horizontal", "alwaysCallback", "fromRoot"], outputs: ["scrolled", "scrolledUp"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1979
1835
  }
1980
1836
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: GifSelectorComponent, decorators: [{
1981
1837
  type: Component,
@@ -2003,7 +1859,7 @@ class ChatComponent {
2003
1859
  this.cdr = inject(ChangeDetectorRef);
2004
1860
  this.elementRef = inject(ElementRef);
2005
1861
  this.popupModalService = inject(PopupModalService);
2006
- this.chatService = inject(ChatService);
1862
+ this.chatService = inject(ChatService$1);
2007
1863
  this.renderer = inject(Renderer2);
2008
1864
  this.scrollThreshold = 200;
2009
1865
  this.messages = [];
@@ -2230,7 +2086,7 @@ class ChatComponent {
2230
2086
  useExisting: ChatComponent,
2231
2087
  multi: true,
2232
2088
  },
2233
- ], viewQueries: [{ propertyName: "emojiPickerRef", first: true, predicate: ["emojiPicker"], descendants: true }, { propertyName: "scrollableContainer", first: true, predicate: ["scrollableContainer"], descendants: true }, { propertyName: "chatInput", first: true, predicate: ["chatInput"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"chat-component\">\n <div class=\"chat-container\">\n <div class=\"go-button\" *ngIf=\"isAtStartChat\" (click)=\"scrollToBottom()\">\u2193</div>\n <div\n class=\"dateMessages\"\n #scrollableContainer\n infiniteScroll\n [infiniteScrollDistance]=\"distance\"\n [infiniteScrollThrottle]=\"throttle\"\n [scrollWindow]=\"false\"\n (scrolledUp)=\"onScrollChats()\"\n (scroll)=\"onScrollMessages($event)\"\n >\n <div class=\"chat-item-container chat-item-container_init\">\n <div class=\"date-message\">\n <span>{{ prospectJoinDate ? (prospectJoinDate | date: 'MMM d, HH:mm') : '-' }}</span>\n </div>\n <div class=\"chat-item init-chat\">\n <div class=\"chat-item_text\">{{ 'CHAT.INITIAL_TEXT' | translate }}</div>\n </div>\n </div>\n <div\n *ngFor=\"let dateMessage of messages\"\n class=\"chat-item-container\"\n [class.chat-item-container_user]=\"dateMessage.message.sender === 'user'\"\n [class.chat-item-container_other]=\"dateMessage.message.sender === 'other'\"\n >\n <div class=\"date-message\" *ngIf=\"dateMessage.isFirstMessage && includeTime\">\n <span>{{ dateMessage.date | date: 'MMM d' }}</span>\n </div>\n <div class=\"chat-item\" [class.user-chat]=\"dateMessage.message.sender === 'user'\" [class.other-chat]=\"dateMessage.message.sender === 'other'\">\n @if (dateMessage.message.message !== '') {\n <div class=\"chat-item_text\">{{ dateMessage.message.message }}</div>\n } @else if (dateMessage.message.attachments[0].url !== '') {\n <img class=\"chat-item_image\" [src]=\"dateMessage.message.attachments[0].url\" alt=\"\" />\n }\n <div class=\"chat-item_timestamp\" *ngIf=\"includeTime\">\n {{ dateMessage.message.timestamp | date: 'shortTime' }}\n </div>\n </div>\n </div>\n </div>\n <div class=\"bottom-gradient-fade\"></div>\n </div>\n <form autocomplete=\"off\" libFocusInvalidInput *ngIf=\"textControl\" class=\"message-sender\">\n <lib-input-field\n #chatInput\n [formControl]=\"textControl\"\n [value]=\"newTextMessage\"\n [label]=\"\"\n [textarea]=\"true\"\n placeholder=\"Send Message to Client Prospect\"\n (keyDown)=\"onKeyDown($event)\"\n [maxLength]=\"maxLength\"\n >\n </lib-input-field>\n <div class=\"chat-buttons\">\n <div class=\"send\" libLongPress [longPressEnabled]=\"longPressEnabled\" (shortPress)=\"onSendText()\" (longPress)=\"onLongPress()\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 23 22\" fill=\"none\">\n <g filter=\"url(#filter0_d_748_3387)\">\n <path\n d=\"M14.6311 17.0545L18.3229 5.85996C18.692 4.77867 17.646 3.69738 16.6001 4.07901L5.77092 7.89533C4.54033 8.34056 4.54033 10.1215 5.83244 10.5032L9.46266 11.5208C10.2625 11.7753 10.9394 12.4113 11.1239 13.2381L12.1084 16.9908C12.4776 18.3266 14.2004 18.3266 14.6311 17.0545Z\"\n fill=\"url(#paint0_linear_748_3387)\"\n />\n </g>\n <defs>\n <filter id=\"filter0_d_748_3387\" x=\"0.85553\" y=\"0.000732422\" filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\" values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" result=\"hardAlpha\" />\n <feOffset />\n <feGaussianBlur stdDeviation=\"2\" />\n <feComposite in2=\"hardAlpha\" operator=\"out\" />\n <feColorMatrix type=\"matrix\" values=\"0 0 0 0 1 0 0 0 0 0.0961538 0 0 0 0 0.593269 0 0 0 1 0\" />\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow_748_3387\" />\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_748_3387\" result=\"shape\" />\n </filter>\n <linearGradient id=\"paint0_linear_748_3387\" x1=\"18.5134\" y1=\"2.81097\" x2=\"0.162773\" y2=\"35.3556\" gradientUnits=\"userSpaceOnUse\">\n <stop stop-color=\"#FE3C72\" />\n <stop offset=\"0.384615\" stop-color=\"#FFB5E9\" />\n </linearGradient>\n </defs>\n </svg>\n </div>\n <lib-popup customClass=\"message-modal-container\" [isOpen]=\"toggleMessageModal\" [modalComponent]=\"ModalComponent\" [modalComponentData]=\"{ modal: {} }\"> </lib-popup>\n <div\n [ngClass]=\"{ 'emoji-picker-trigger': true, active: emojiVisibility }\"\n [name]=\"emojiPickerConfig?.pickerIcon ? '' : 'body-outline'\"\n (click)=\"handleEmojiPickerClick()\"\n [src]=\"emojiPickerConfig?.pickerIcon\"\n class=\"emoji\"\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\" fill=\"none\" overflow=\"auto\">\n <g>\n <mask id=\"path-1-outside-1_422_3414\" maskUnits=\"userSpaceOnUse\" x=\"-0.72551\" y=\"-0.713776\" fill=\"url(#paint0_linear_748_3387)\">\n <path\n d=\"M5.13057 0.286224C7.81253 0.286224 9.98665 2.53373 9.98665 5.30623C9.98665 8.07823 7.81205 10.3252 5.13057 10.3252C2.44861 10.3257 0.27449 8.07823 0.27449 5.30623C0.27449 2.53373 2.44861 0.286224 5.13057 0.286224ZM5.13057 1.03908C4.58476 1.03296 4.0432 1.1388 3.53723 1.35049C3.03126 1.56218 2.57092 1.8755 2.18287 2.27233C1.79482 2.66915 1.48675 3.1416 1.2765 3.66233C1.06625 4.18305 0.95799 4.74172 0.95799 5.30598C0.95799 5.87025 1.06625 6.42891 1.2765 6.94964C1.48675 7.47036 1.79482 7.94281 2.18287 8.33964C2.57092 8.73646 3.03126 9.04979 3.53723 9.26147C4.0432 9.47316 4.58476 9.57901 5.13057 9.57289C6.21752 9.5607 7.25594 9.10579 8.02039 8.30691C8.78485 7.50804 9.21362 6.42969 9.21362 5.30598C9.21362 4.18228 8.78485 3.10393 8.02039 2.30505C7.25594 1.50618 6.21752 1.05126 5.13057 1.03908ZM3.41283 6.70302C3.61718 6.97193 3.87803 7.18925 4.17563 7.33855C4.47323 7.48785 4.79978 7.56522 5.13057 7.56479C5.461 7.5652 5.78721 7.48798 6.08453 7.33895C6.38186 7.18992 6.64253 6.97298 6.84685 6.70453C6.8765 6.66574 6.91325 6.63337 6.955 6.60926C6.99675 6.58515 7.04268 6.56978 7.09018 6.56403C7.13767 6.55827 7.1858 6.56224 7.23181 6.57571C7.27782 6.58919 7.32082 6.6119 7.35834 6.64254C7.39586 6.67319 7.42717 6.71118 7.45049 6.75434C7.47381 6.7975 7.48868 6.84498 7.49425 6.89408C7.49982 6.94318 7.49598 6.99293 7.48294 7.0405C7.46991 7.08806 7.44795 7.13251 7.4183 7.1713C7.14582 7.52897 6.79833 7.818 6.40202 8.01658C6.00572 8.21516 5.57097 8.3181 5.13057 8.31764C4.68953 8.31808 4.25416 8.21484 3.8574 8.01572C3.46064 7.8166 3.11287 7.52681 2.84042 7.16828C2.81083 7.12943 2.78894 7.08493 2.77599 7.03733C2.76304 6.98973 2.75929 6.93996 2.76495 6.89086C2.77061 6.84176 2.78556 6.7943 2.80897 6.75117C2.83237 6.70805 2.86376 6.67011 2.90135 6.63953C2.93893 6.60895 2.98198 6.58632 3.02802 6.57293C3.07407 6.55955 3.12221 6.55567 3.16971 6.56152C3.21721 6.56737 3.26312 6.58283 3.30484 6.60702C3.34655 6.63122 3.38325 6.66367 3.41283 6.70252V6.70302ZM3.67404 3.67506C3.75515 3.67268 3.83589 3.68715 3.9115 3.7176C3.98711 3.74805 4.05604 3.79386 4.11422 3.85233C4.17241 3.9108 4.21866 3.98073 4.25024 4.058C4.28182 4.13527 4.29809 4.2183 4.29809 4.30218C4.29809 4.38606 4.28182 4.46909 4.25024 4.54636C4.21866 4.62363 4.17241 4.69356 4.11422 4.75203C4.05604 4.8105 3.98711 4.85631 3.9115 4.88676C3.83589 4.91721 3.75515 4.93168 3.67404 4.92931C3.51612 4.92469 3.36616 4.85659 3.25604 4.73948C3.14592 4.62238 3.08431 4.4655 3.08431 4.30218C3.08431 4.13886 3.14592 3.98198 3.25604 3.86488C3.36616 3.74777 3.51612 3.67968 3.67404 3.67506ZM6.5871 3.67506C6.66821 3.67268 6.74896 3.68715 6.82457 3.7176C6.90018 3.74805 6.96911 3.79386 7.02729 3.85233C7.08547 3.9108 7.13172 3.98073 7.1633 4.058C7.19488 4.13527 7.21116 4.2183 7.21116 4.30218C7.21116 4.38606 7.19488 4.46909 7.1633 4.54636C7.13172 4.62363 7.08547 4.69356 7.02729 4.75203C6.96911 4.8105 6.90018 4.85631 6.82457 4.88676C6.74896 4.91721 6.66821 4.93168 6.5871 4.92931C6.42918 4.92469 6.27923 4.85659 6.16911 4.73948C6.05898 4.62238 5.99738 4.4655 5.99738 4.30218C5.99738 4.13886 6.05898 3.98198 6.16911 3.86488C6.27923 3.74777 6.42918 3.67968 6.5871 3.67506Z\"\n />\n </mask>\n <path\n _ngcontent-ng-c433636891=\"\"\n d=\"M5.13057 0.286224C7.81253 0.286224 9.98665 2.53373 9.98665 5.30623C9.98665 8.07823 7.81205 10.3252 5.13057 10.3252C2.44861 10.3257 0.27449 8.07823 0.27449 5.30623C0.27449 2.53373 2.44861 0.286224 5.13057 0.286224ZM5.13057 1.03908C4.58476 1.03296 4.0432 1.1388 3.53723 1.35049C3.03126 1.56218 2.57092 1.8755 2.18287 2.27233C1.79482 2.66915 1.48675 3.1416 1.2765 3.66233C1.06625 4.18305 0.95799 4.74172 0.95799 5.30598C0.95799 5.87025 1.06625 6.42891 1.2765 6.94964C1.48675 7.47036 1.79482 7.94281 2.18287 8.33964C2.57092 8.73646 3.03126 9.04979 3.53723 9.26147C4.0432 9.47316 4.58476 9.57901 5.13057 9.57289C6.21752 9.5607 7.25594 9.10579 8.02039 8.30691C8.78485 7.50804 9.21362 6.42969 9.21362 5.30598C9.21362 4.18228 8.78485 3.10393 8.02039 2.30505C7.25594 1.50618 6.21752 1.05126 5.13057 1.03908ZM3.41283 6.70302C3.61718 6.97193 3.87803 7.18925 4.17563 7.33855C4.47323 7.48785 4.79978 7.56522 5.13057 7.56479C5.461 7.5652 5.78721 7.48798 6.08453 7.33895C6.38186 7.18992 6.64253 6.97298 6.84685 6.70453C6.8765 6.66574 6.91325 6.63337 6.955 6.60926C6.99675 6.58515 7.04268 6.56978 7.09018 6.56403C7.13767 6.55827 7.1858 6.56224 7.23181 6.57571C7.27782 6.58919 7.32082 6.6119 7.35834 6.64254C7.39586 6.67319 7.42717 6.71118 7.45049 6.75434C7.47381 6.7975 7.48868 6.84498 7.49425 6.89408C7.49982 6.94318 7.49598 6.99293 7.48294 7.0405C7.46991 7.08806 7.44795 7.13251 7.4183 7.1713C7.14582 7.52897 6.79833 7.818 6.40202 8.01658C6.00572 8.21516 5.57097 8.3181 5.13057 8.31764C4.68953 8.31808 4.25416 8.21484 3.8574 8.01572C3.46064 7.8166 3.11287 7.52681 2.84042 7.16828C2.81083 7.12943 2.78894 7.08493 2.77599 7.03733C2.76304 6.98973 2.75929 6.93996 2.76495 6.89086C2.77061 6.84176 2.78556 6.7943 2.80897 6.75117C2.83237 6.70805 2.86376 6.67011 2.90135 6.63953C2.93893 6.60895 2.98198 6.58632 3.02802 6.57293C3.07407 6.55955 3.12221 6.55567 3.16971 6.56152C3.21721 6.56737 3.26312 6.58283 3.30484 6.60702C3.34655 6.63122 3.38325 6.66367 3.41283 6.70252V6.70302ZM3.67404 3.67506C3.75515 3.67268 3.83589 3.68715 3.9115 3.7176C3.98711 3.74805 4.05604 3.79386 4.11422 3.85233C4.17241 3.9108 4.21866 3.98073 4.25024 4.058C4.28182 4.13527 4.29809 4.2183 4.29809 4.30218C4.29809 4.38606 4.28182 4.46909 4.25024 4.54636C4.21866 4.62363 4.17241 4.69356 4.11422 4.75203C4.05604 4.8105 3.98711 4.85631 3.9115 4.88676C3.83589 4.91721 3.75515 4.93168 3.67404 4.92931C3.51612 4.92469 3.36616 4.85659 3.25604 4.73948C3.14592 4.62238 3.08431 4.4655 3.08431 4.30218C3.08431 4.13886 3.14592 3.98198 3.25604 3.86488C3.36616 3.74777 3.51612 3.67968 3.67404 3.67506ZM6.5871 3.67506C6.66821 3.67268 6.74896 3.68715 6.82457 3.7176C6.90018 3.74805 6.96911 3.79386 7.02729 3.85233C7.08547 3.9108 7.13172 3.98073 7.1633 4.058C7.19488 4.13527 7.21116 4.2183 7.21116 4.30218C7.21116 4.38606 7.19488 4.46909 7.1633 4.54636C7.13172 4.62363 7.08547 4.69356 7.02729 4.75203C6.96911 4.8105 6.90018 4.85631 6.82457 4.88676C6.74896 4.91721 6.66821 4.93168 6.5871 4.92931C6.42918 4.92469 6.27923 4.85659 6.16911 4.73948C6.05898 4.62238 5.99738 4.4655 5.99738 4.30218C5.99738 4.13886 6.05898 3.98198 6.16911 3.86488C6.27923 3.74777 6.42918 3.67968 6.5871 3.67506Z\"\n fill=\"url(#paint0_linear_748_3387)\"\n ></path>\n <path\n _ngcontent-ng-c433636891=\"\"\n d=\"M5.13057 0.286224C7.81253 0.286224 9.98665 2.53373 9.98665 5.30623C9.98665 8.07823 7.81205 10.3252 5.13057 10.3252C2.44861 10.3257 0.27449 8.07823 0.27449 5.30623C0.27449 2.53373 2.44861 0.286224 5.13057 0.286224ZM5.13057 1.03908C4.58476 1.03296 4.0432 1.1388 3.53723 1.35049C3.03126 1.56218 2.57092 1.8755 2.18287 2.27233C1.79482 2.66915 1.48675 3.1416 1.2765 3.66233C1.06625 4.18305 0.95799 4.74172 0.95799 5.30598C0.95799 5.87025 1.06625 6.42891 1.2765 6.94964C1.48675 7.47036 1.79482 7.94281 2.18287 8.33964C2.57092 8.73646 3.03126 9.04979 3.53723 9.26147C4.0432 9.47316 4.58476 9.57901 5.13057 9.57289C6.21752 9.5607 7.25594 9.10579 8.02039 8.30691C8.78485 7.50804 9.21362 6.42969 9.21362 5.30598C9.21362 4.18228 8.78485 3.10393 8.02039 2.30505C7.25594 1.50618 6.21752 1.05126 5.13057 1.03908ZM3.41283 6.70302C3.61718 6.97193 3.87803 7.18925 4.17563 7.33855C4.47323 7.48785 4.79978 7.56522 5.13057 7.56479C5.461 7.5652 5.78721 7.48798 6.08453 7.33895C6.38186 7.18992 6.64253 6.97298 6.84685 6.70453C6.8765 6.66574 6.91325 6.63337 6.955 6.60926C6.99675 6.58515 7.04268 6.56978 7.09018 6.56403C7.13767 6.55827 7.1858 6.56224 7.23181 6.57571C7.27782 6.58919 7.32082 6.6119 7.35834 6.64254C7.39586 6.67319 7.42717 6.71118 7.45049 6.75434C7.47381 6.7975 7.48868 6.84498 7.49425 6.89408C7.49982 6.94318 7.49598 6.99293 7.48294 7.0405C7.46991 7.08806 7.44795 7.13251 7.4183 7.1713C7.14582 7.52897 6.79833 7.818 6.40202 8.01658C6.00572 8.21516 5.57097 8.3181 5.13057 8.31764C4.68953 8.31808 4.25416 8.21484 3.8574 8.01572C3.46064 7.8166 3.11287 7.52681 2.84042 7.16828C2.81083 7.12943 2.78894 7.08493 2.77599 7.03733C2.76304 6.98973 2.75929 6.93996 2.76495 6.89086C2.77061 6.84176 2.78556 6.7943 2.80897 6.75117C2.83237 6.70805 2.86376 6.67011 2.90135 6.63953C2.93893 6.60895 2.98198 6.58632 3.02802 6.57293C3.07407 6.55955 3.12221 6.55567 3.16971 6.56152C3.21721 6.56737 3.26312 6.58283 3.30484 6.60702C3.34655 6.63122 3.38325 6.66367 3.41283 6.70252V6.70302ZM3.67404 3.67506C3.75515 3.67268 3.83589 3.68715 3.9115 3.7176C3.98711 3.74805 4.05604 3.79386 4.11422 3.85233C4.17241 3.9108 4.21866 3.98073 4.25024 4.058C4.28182 4.13527 4.29809 4.2183 4.29809 4.30218C4.29809 4.38606 4.28182 4.46909 4.25024 4.54636C4.21866 4.62363 4.17241 4.69356 4.11422 4.75203C4.05604 4.8105 3.98711 4.85631 3.9115 4.88676C3.83589 4.91721 3.75515 4.93168 3.67404 4.92931C3.51612 4.92469 3.36616 4.85659 3.25604 4.73948C3.14592 4.62238 3.08431 4.4655 3.08431 4.30218C3.08431 4.13886 3.14592 3.98198 3.25604 3.86488C3.36616 3.74777 3.51612 3.67968 3.67404 3.67506ZM6.5871 3.67506C6.66821 3.67268 6.74896 3.68715 6.82457 3.7176C6.90018 3.74805 6.96911 3.79386 7.02729 3.85233C7.08547 3.9108 7.13172 3.98073 7.1633 4.058C7.19488 4.13527 7.21116 4.2183 7.21116 4.30218C7.21116 4.38606 7.19488 4.46909 7.1633 4.54636C7.13172 4.62363 7.08547 4.69356 7.02729 4.75203C6.96911 4.8105 6.90018 4.85631 6.82457 4.88676C6.74896 4.91721 6.66821 4.93168 6.5871 4.92931C6.42918 4.92469 6.27923 4.85659 6.16911 4.73948C6.05898 4.62238 5.99738 4.4655 5.99738 4.30218C5.99738 4.13886 6.05898 3.98198 6.16911 3.86488C6.27923 3.74777 6.42918 3.67968 6.5871 3.67506Z\"\n stroke=\"url(#paint0_linear_748_3387)\"\n fill=\"url(#paint0_linear_748_3387)\"\n stroke-width=\"0.492535\"\n mask=\"url(#path-1-outside-1_422_3414)\"\n ></path>\n </g>\n <defs xmlns=\"http://www.w3.org/2000/svg\">\n <filter id=\"filter0_d_748_7685\" x=\"0\" y=\"0\" width=\"30\" height=\"30\" filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\" values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" result=\"hardAlpha\" />\n <feOffset />\n <feGaussianBlur stdDeviation=\"2\" />\n <feComposite in2=\"hardAlpha\" operator=\"out\" />\n <feColorMatrix type=\"matrix\" values=\"0 0 0 0 1 0 0 0 0 0.0961538 0 0 0 0 0.593269 0 0 0 1 0\" />\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow_748_7685\" />\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_748_7685\" result=\"shape\" />\n </filter>\n <linearGradient id=\"paint0_linear_748_7685\" x1=\"14.1509\" y1=\"3.43372\" x2=\"0.992799\" y2=\"26.7715\" gradientUnits=\"userSpaceOnUse\">\n <stop stop-color=\"#FE3C72\" />\n <stop offset=\"0.384615\" stop-color=\"#FFB5E9\" />\n </linearGradient>\n <linearGradient id=\"paint0_linear_748_3387\" x1=\"18.5134\" y1=\"2.81097\" x2=\"0.162773\" y2=\"35.3556\" gradientUnits=\"userSpaceOnUse\">\n <stop stop-color=\"#FE3C72\" />\n <stop offset=\"0.384615\" stop-color=\"#FFB5E9\" />\n </linearGradient>\n </defs>\n </svg>\n </div>\n @if (enableGifPicker) {\n <div class=\"gifs\" (click)=\"handleGifPickerClick()\"></div>\n <div class=\"gifs\" *ngIf=\"includeGifMessage\" (click)=\"handleGifPickerClick()\">\n <svg viewBox=\"0 0 11 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g>\n <path\n d=\"M7.055 10.9995H4.899C3.2535 10.9995 2.4305 10.9995 1.859 10.6005C1.69694 10.4873 1.55167 10.3518 1.4275 10.198C1 9.66501 1 8.89801 1 7.36301V6.09051C1 4.60901 1 3.86801 1.2365 3.27651C1.617 2.32501 2.4215 1.57501 3.4415 1.22001C4.075 0.999512 4.87 0.999512 6.4585 0.999512C7.3665 0.999512 7.82 0.999512 8.1825 1.12551C8.7655 1.32851 9.225 1.75701 9.4425 2.30051C9.5775 2.63851 9.5775 3.06201 9.5775 3.90851V4.99951\"\n stroke=\"url(#paint0_linear_748_3387)\"\n stroke-width=\"0.75\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M1 5.99951C1 5.07951 1.753 4.33301 2.682 4.33301C3.018 4.33301 3.414 4.39101 3.7405 4.30451C3.88281 4.26736 4.01278 4.19328 4.11726 4.08976C4.22174 3.98624 4.29703 3.85697 4.3355 3.71501C4.4225 3.39151 4.364 2.99901 4.364 2.66601C4.364 1.74601 5.117 0.999512 6.045 0.999512M6.046 8.99951H7.3075M4.833 6.92451C4.77 6.52451 4.6925 6.52401 4.028 6.49951H3.523C3.2445 6.49951 3.0185 6.72351 3.0185 6.99951V8.49951C3.0185 8.77551 3.2445 8.99951 3.5235 8.99951H4.4315C4.6265 8.99951 4.833 8.84301 4.833 8.64951V8.09951C4.833 8.04451 4.7765 7.94751 4.721 7.94751H4.159M6.046 6.49951H6.6765M6.6765 6.49951H7.3075M6.6765 6.49951V8.93701M10.2505 6.49951H8.989C8.7105 6.49951 8.4845 6.72351 8.4845 6.99951V7.74951M8.4845 7.74951V8.99951M8.4845 7.74951H9.746\"\n stroke=\"url(#paint0_linear_748_3387)\"\n stroke-width=\"0.75\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </g>\n <defs xmlns=\"http://www.w3.org/2000/svg\">\n <filter id=\"filter0_d_748_7685\" x=\"0\" y=\"0\" width=\"30\" height=\"30\" filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\" values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" result=\"hardAlpha\" />\n <feOffset />\n <feGaussianBlur stdDeviation=\"2\" />\n <feComposite in2=\"hardAlpha\" operator=\"out\" />\n <feColorMatrix type=\"matrix\" values=\"0 0 0 0 1 0 0 0 0 0.0961538 0 0 0 0 0.593269 0 0 0 1 0\" />\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow_748_7685\" />\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_748_7685\" result=\"shape\" />\n </filter>\n <linearGradient id=\"paint0_linear_748_7685\" x1=\"14.1509\" y1=\"3.43372\" x2=\"0.992799\" y2=\"26.7715\" gradientUnits=\"userSpaceOnUse\">\n <stop stop-color=\"#FE3C72\" />\n <stop offset=\"0.384615\" stop-color=\"#FFB5E9\" />\n </linearGradient>\n <linearGradient id=\"paint0_linear_748_3387\" x1=\"18.5134\" y1=\"2.81097\" x2=\"0.162773\" y2=\"35.3556\" gradientUnits=\"userSpaceOnUse\">\n <stop stop-color=\"#FE3C72\" />\n <stop offset=\"0.384615\" stop-color=\"#FFB5E9\" />\n </linearGradient>\n </defs>\n </svg>\n </div>\n }\n </div>\n <div class=\"emoji-picker-space\" [ngStyle]=\"{ 'z-index': !(gifVisibility || emojiVisibility) ? -1 : 11 }\" (blur)=\"onBlurPickerSpace()\">\n @if (gifVisibility && enableGifPicker) {\n <lib-gif-selector (selectGif)=\"onGifClick($event)\"></lib-gif-selector>\n }\n @if (emojiPickerOpened) {\n <emoji-picker #emojiPicker [ngStyle]=\"{ display: emojiVisibility ? '' : 'none' }\" emoji-version=\"15.0\" (emoji-click)=\"onEmojiclick($event)\"></emoji-picker>\n }\n </div>\n </form>\n</div>\n", styles: [":host{--height-chat-conversation: 11em;--max-width-container: 27em;--color-background-dark: #1d1b21;--color-chat-other: #453945;--color-chat-user: #403b45;--color-chat-init: #fe3c72;--color-text-white: white;--color-text-gray: rgb(123, 123, 123);--color-background-emoji: #29252d;--color-gradient-start: #746b8381;--color-gradient-end: rgba(0, 0, 0, 0);font-size:clamp(0px,3.2dvw,15px);display:flex;flex-direction:column;width:100%;max-width:var(--max-width-container)}:host .chat-component{display:flex;flex-direction:column;position:relative}:host .chat-component .bottom-gradient-fade{position:absolute;bottom:0;left:0;width:100%;height:40px;background:linear-gradient(180deg,transparent,#27242c);z-index:1;pointer-events:none}:host .chat-component .chat-container{position:relative}:host .chat-component .chat-container .go-button{color:#fff;font-size:1em;position:absolute;bottom:.2em;right:.7em;background-color:var(--color-background-dark);border-radius:50%;width:2em;height:2em;display:flex;justify-content:center;align-items:center;z-index:10}:host .chat-component .chat-container .go-button:hover{cursor:pointer}:host .chat-component .chat-container .dateMessages{display:flex;flex-direction:column;gap:1em;padding-bottom:8px;padding-top:1.6em;height:var(--height-chat-conversation);width:var(--max-width-container);overflow-y:scroll}:host .chat-component .chat-container .dateMessages .chat-item-container{display:flex;flex-direction:column;gap:1em}:host .chat-component .chat-container .dateMessages .chat-item-container .date-message{width:100%;display:flex;justify-content:center;align-items:center;font-size:.861em}:host .chat-component .chat-container .dateMessages .chat-item-container .date-message span{background-color:#000;color:var(--color-text-white);border-radius:1em;padding:.5em}:host .chat-component .chat-container .dateMessages .chat-item-container_user{align-items:flex-end}:host .chat-component .chat-container .dateMessages .chat-item-container_other{align-items:flex-start}:host .chat-component .chat-container .dateMessages .chat-item-container_init{align-items:center}:host .chat-component .chat-container .dateMessages .chat-item{max-width:80%;min-height:3.5em;padding:1em;border-radius:1.076em;position:relative;box-shadow:0 4px 4px #00000040}:host .chat-component .chat-container .dateMessages .chat-item .chat-item_text{font-size:.861em;color:var(--color-text-white);word-break:break-word;overflow-wrap:break-word;-webkit-hyphens:auto;hyphens:auto}:host .chat-component .chat-container .dateMessages .chat-item .chat-item_image{width:7em;height:auto}:host .chat-component .chat-container .dateMessages .chat-item .chat-item_timestamp{margin-top:.2em;font-size:.8em;color:var(--color-text-gray);text-align:end}:host .chat-component .chat-container .dateMessages .chat-item:before{content:\"\";position:absolute;inset:0;border-radius:1.076em;padding:.05em;background:linear-gradient(180deg,var(--color-gradient-start),var(--color-gradient-end) 50%);mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask-composite:exclude}:host .chat-component .chat-container .dateMessages .other-chat{background-color:var(--color-chat-other);border-bottom-left-radius:0}:host .chat-component .chat-container .dateMessages .user-chat{background-color:var(--color-chat-user);border-bottom-right-radius:0}:host .chat-component .chat-container .dateMessages .init-chat{min-height:2em;padding:.7em;background-color:var(--color-chat-init)}:host .chat-component .chat-container .dateMessages .init-chat .chat-item_text{font-size:.761em;color:#000}:host .chat-component .chat-container .dateMessages .other-chat:before{border-bottom-left-radius:0!important}:host .chat-component .chat-container .dateMessages .user-chat:before{border-bottom-right-radius:0!important}:host .message-sender{position:relative}:host .message-sender lib-input-field{--input-font-size: calc(clamp(0px, 3.2dvw, 15px)*.8) ;--input-padding: calc(clamp(0px, 3.2dvw, 15px)*1.2) calc(clamp(0px, 3.2dvw, 15px)*3.5) calc(clamp(0px, 3.2dvw, 15px)*1.2) calc(clamp(0px, 3.2dvw, 15px)*1.6) ;--placeholder-font-size: calc(clamp(0px, 3.2dvw, 15px)*.8) ;--textarea-height: calc(clamp(0px, 3.2dvw, 15px)*7) }:host .message-sender .chat-buttons .send,:host .message-sender .chat-buttons .emoji,:host .message-sender .chat-buttons .attach,:host .message-sender .chat-buttons .gifs{position:absolute;right:.6em;width:1.7em;height:1.7em;border-radius:50%;z-index:10}:host .message-sender .chat-buttons .send:hover,:host .message-sender .chat-buttons .emoji:hover,:host .message-sender .chat-buttons .attach:hover,:host .message-sender .chat-buttons .gifs:hover{cursor:pointer}:host .message-sender .chat-buttons .send{top:.9em}:host .message-sender .chat-buttons .send svg{width:1.7em;height:1.9em}:host .message-sender .chat-buttons .emoji{top:3.1em}:host .message-sender .chat-buttons .emoji svg{overflow:visible;width:2.33em;height:1.848em}:host .message-sender .chat-buttons .emoji svg mask{width:.733em;height:1.466em}:host .message-sender .chat-buttons .attach{top:5em;background-color:#87ceeb}:host .message-sender .chat-buttons .gifs{top:5em}:host .message-sender .chat-buttons .gifs svg{width:1.166em;height:1.2984em;margin-left:.25em}:host .message-sender .emoji-picker-space{position:absolute;top:-12em;height:12em;width:100%}:host .message-sender .emoji-picker-space emoji-picker{--background: var(--color-background-emoji);height:100%;width:100%;--input-font-size: .8em;--input-font-color: var(--color-text-white)}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i2.InputFieldComponent, selector: "lib-input-field,[lib-input-field]", inputs: ["name", "autocomplete", "label", "placeholder", "type", "readonly", "focus", "enableGoogleAddress", "locationAutocompleteConfig", "defaultLocation", "mask", "prefix", "suffix", "maxLength", "value", "address", "textarea", "resize", "counter", "patterns", "trimWhiteSpace", "disabled"], outputs: ["mapError", "locationChange", "keyDown", "onBlur"] }, { kind: "directive", type: i1$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$1.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: GifSelectorComponent, selector: "lib-gif-selector", outputs: ["selectGif"] }, { kind: "component", type: i2.LibModalComponent, selector: "lib-popup", inputs: ["isOpen", "icon", "title", "message", "extendedMessage", "cancelButton", "confirmButton", "checkboxText", "progBarCurrentStep", "progBarTotalSteps", "customClass", "backdropDismiss", "modalComponent", "modalComponentData"], outputs: ["modalConfirm", "modalDismiss", "afterCloseEvent"] }, { kind: "directive", type: i2$3.InfiniteScrollDirective, selector: "[infiniteScroll], [infinite-scroll], [data-infinite-scroll]", inputs: ["infiniteScrollDistance", "infiniteScrollUpDistance", "infiniteScrollThrottle", "infiniteScrollDisabled", "infiniteScrollContainer", "scrollWindow", "immediateCheck", "horizontal", "alwaysCallback", "fromRoot"], outputs: ["scrolled", "scrolledUp"] }, { kind: "pipe", type: i1.DatePipe, name: "date" }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2089
+ ], viewQueries: [{ propertyName: "emojiPickerRef", first: true, predicate: ["emojiPicker"], descendants: true }, { propertyName: "scrollableContainer", first: true, predicate: ["scrollableContainer"], descendants: true }, { propertyName: "chatInput", first: true, predicate: ["chatInput"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"chat-component\">\n <div class=\"chat-container\">\n <div class=\"go-button\" *ngIf=\"isAtStartChat\" (click)=\"scrollToBottom()\">\u2193</div>\n <div\n class=\"dateMessages\"\n #scrollableContainer\n infiniteScroll\n [infiniteScrollDistance]=\"distance\"\n [infiniteScrollThrottle]=\"throttle\"\n [scrollWindow]=\"false\"\n (scrolledUp)=\"onScrollChats()\"\n (scroll)=\"onScrollMessages($event)\"\n >\n <div class=\"chat-item-container chat-item-container_init\">\n <div class=\"date-message\">\n <span>{{ prospectJoinDate ? (prospectJoinDate | date: 'MMM d, HH:mm') : '-' }}</span>\n </div>\n <div class=\"chat-item init-chat\">\n <div class=\"chat-item_text\">{{ 'CHAT.INITIAL_TEXT' | translate }}</div>\n </div>\n </div>\n <div\n *ngFor=\"let dateMessage of messages\"\n class=\"chat-item-container\"\n [class.chat-item-container_user]=\"dateMessage.message.sender === 'user'\"\n [class.chat-item-container_other]=\"dateMessage.message.sender === 'other'\"\n >\n <div class=\"date-message\" *ngIf=\"dateMessage.isFirstMessage && includeTime\">\n <span>{{ dateMessage.date | date: 'MMM d' }}</span>\n </div>\n <div class=\"chat-item\" [class.user-chat]=\"dateMessage.message.sender === 'user'\" [class.other-chat]=\"dateMessage.message.sender === 'other'\">\n @if (dateMessage.message.message !== '') {\n <div class=\"chat-item_text\">{{ dateMessage.message.message }}</div>\n } @else if (dateMessage.message.attachments[0].url !== '') {\n <img class=\"chat-item_image\" [src]=\"dateMessage.message.attachments[0].url\" alt=\"\" />\n }\n <div class=\"chat-item_timestamp\" *ngIf=\"includeTime\">\n {{ dateMessage.message.timestamp | date: 'shortTime' }}\n </div>\n </div>\n </div>\n </div>\n <div class=\"bottom-gradient-fade\"></div>\n </div>\n <form autocomplete=\"off\" libFocusInvalidInput *ngIf=\"textControl\" class=\"message-sender\">\n <lib-input-field\n #chatInput\n [formControl]=\"textControl\"\n [value]=\"newTextMessage\"\n [label]=\"\"\n [textarea]=\"true\"\n placeholder=\"Send Message to Client Prospect\"\n (keyDown)=\"onKeyDown($event)\"\n [maxLength]=\"maxLength\"\n >\n </lib-input-field>\n <div class=\"chat-buttons\">\n <div class=\"send\" libLongPress [longPressEnabled]=\"longPressEnabled\" (shortPress)=\"onSendText()\" (longPress)=\"onLongPress()\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 23 22\" fill=\"none\">\n <g filter=\"url(#filter0_d_748_3387)\">\n <path\n d=\"M14.6311 17.0545L18.3229 5.85996C18.692 4.77867 17.646 3.69738 16.6001 4.07901L5.77092 7.89533C4.54033 8.34056 4.54033 10.1215 5.83244 10.5032L9.46266 11.5208C10.2625 11.7753 10.9394 12.4113 11.1239 13.2381L12.1084 16.9908C12.4776 18.3266 14.2004 18.3266 14.6311 17.0545Z\"\n fill=\"url(#paint0_linear_748_3387)\"\n />\n </g>\n <defs>\n <filter id=\"filter0_d_748_3387\" x=\"0.85553\" y=\"0.000732422\" filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\" values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" result=\"hardAlpha\" />\n <feOffset />\n <feGaussianBlur stdDeviation=\"2\" />\n <feComposite in2=\"hardAlpha\" operator=\"out\" />\n <feColorMatrix type=\"matrix\" values=\"0 0 0 0 1 0 0 0 0 0.0961538 0 0 0 0 0.593269 0 0 0 1 0\" />\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow_748_3387\" />\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_748_3387\" result=\"shape\" />\n </filter>\n <linearGradient id=\"paint0_linear_748_3387\" x1=\"18.5134\" y1=\"2.81097\" x2=\"0.162773\" y2=\"35.3556\" gradientUnits=\"userSpaceOnUse\">\n <stop stop-color=\"#FE3C72\" />\n <stop offset=\"0.384615\" stop-color=\"#FFB5E9\" />\n </linearGradient>\n </defs>\n </svg>\n </div>\n <lib-popup customClass=\"message-modal-container\" [isOpen]=\"toggleMessageModal\" [modalComponent]=\"ModalComponent\" [modalComponentData]=\"{ modal: {} }\"> </lib-popup>\n <div\n [ngClass]=\"{ 'emoji-picker-trigger': true, active: emojiVisibility }\"\n [name]=\"emojiPickerConfig?.pickerIcon ? '' : 'body-outline'\"\n (click)=\"handleEmojiPickerClick()\"\n [src]=\"emojiPickerConfig?.pickerIcon\"\n class=\"emoji\"\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\" fill=\"none\" overflow=\"auto\">\n <g>\n <mask id=\"path-1-outside-1_422_3414\" maskUnits=\"userSpaceOnUse\" x=\"-0.72551\" y=\"-0.713776\" fill=\"url(#paint0_linear_748_3387)\">\n <path\n d=\"M5.13057 0.286224C7.81253 0.286224 9.98665 2.53373 9.98665 5.30623C9.98665 8.07823 7.81205 10.3252 5.13057 10.3252C2.44861 10.3257 0.27449 8.07823 0.27449 5.30623C0.27449 2.53373 2.44861 0.286224 5.13057 0.286224ZM5.13057 1.03908C4.58476 1.03296 4.0432 1.1388 3.53723 1.35049C3.03126 1.56218 2.57092 1.8755 2.18287 2.27233C1.79482 2.66915 1.48675 3.1416 1.2765 3.66233C1.06625 4.18305 0.95799 4.74172 0.95799 5.30598C0.95799 5.87025 1.06625 6.42891 1.2765 6.94964C1.48675 7.47036 1.79482 7.94281 2.18287 8.33964C2.57092 8.73646 3.03126 9.04979 3.53723 9.26147C4.0432 9.47316 4.58476 9.57901 5.13057 9.57289C6.21752 9.5607 7.25594 9.10579 8.02039 8.30691C8.78485 7.50804 9.21362 6.42969 9.21362 5.30598C9.21362 4.18228 8.78485 3.10393 8.02039 2.30505C7.25594 1.50618 6.21752 1.05126 5.13057 1.03908ZM3.41283 6.70302C3.61718 6.97193 3.87803 7.18925 4.17563 7.33855C4.47323 7.48785 4.79978 7.56522 5.13057 7.56479C5.461 7.5652 5.78721 7.48798 6.08453 7.33895C6.38186 7.18992 6.64253 6.97298 6.84685 6.70453C6.8765 6.66574 6.91325 6.63337 6.955 6.60926C6.99675 6.58515 7.04268 6.56978 7.09018 6.56403C7.13767 6.55827 7.1858 6.56224 7.23181 6.57571C7.27782 6.58919 7.32082 6.6119 7.35834 6.64254C7.39586 6.67319 7.42717 6.71118 7.45049 6.75434C7.47381 6.7975 7.48868 6.84498 7.49425 6.89408C7.49982 6.94318 7.49598 6.99293 7.48294 7.0405C7.46991 7.08806 7.44795 7.13251 7.4183 7.1713C7.14582 7.52897 6.79833 7.818 6.40202 8.01658C6.00572 8.21516 5.57097 8.3181 5.13057 8.31764C4.68953 8.31808 4.25416 8.21484 3.8574 8.01572C3.46064 7.8166 3.11287 7.52681 2.84042 7.16828C2.81083 7.12943 2.78894 7.08493 2.77599 7.03733C2.76304 6.98973 2.75929 6.93996 2.76495 6.89086C2.77061 6.84176 2.78556 6.7943 2.80897 6.75117C2.83237 6.70805 2.86376 6.67011 2.90135 6.63953C2.93893 6.60895 2.98198 6.58632 3.02802 6.57293C3.07407 6.55955 3.12221 6.55567 3.16971 6.56152C3.21721 6.56737 3.26312 6.58283 3.30484 6.60702C3.34655 6.63122 3.38325 6.66367 3.41283 6.70252V6.70302ZM3.67404 3.67506C3.75515 3.67268 3.83589 3.68715 3.9115 3.7176C3.98711 3.74805 4.05604 3.79386 4.11422 3.85233C4.17241 3.9108 4.21866 3.98073 4.25024 4.058C4.28182 4.13527 4.29809 4.2183 4.29809 4.30218C4.29809 4.38606 4.28182 4.46909 4.25024 4.54636C4.21866 4.62363 4.17241 4.69356 4.11422 4.75203C4.05604 4.8105 3.98711 4.85631 3.9115 4.88676C3.83589 4.91721 3.75515 4.93168 3.67404 4.92931C3.51612 4.92469 3.36616 4.85659 3.25604 4.73948C3.14592 4.62238 3.08431 4.4655 3.08431 4.30218C3.08431 4.13886 3.14592 3.98198 3.25604 3.86488C3.36616 3.74777 3.51612 3.67968 3.67404 3.67506ZM6.5871 3.67506C6.66821 3.67268 6.74896 3.68715 6.82457 3.7176C6.90018 3.74805 6.96911 3.79386 7.02729 3.85233C7.08547 3.9108 7.13172 3.98073 7.1633 4.058C7.19488 4.13527 7.21116 4.2183 7.21116 4.30218C7.21116 4.38606 7.19488 4.46909 7.1633 4.54636C7.13172 4.62363 7.08547 4.69356 7.02729 4.75203C6.96911 4.8105 6.90018 4.85631 6.82457 4.88676C6.74896 4.91721 6.66821 4.93168 6.5871 4.92931C6.42918 4.92469 6.27923 4.85659 6.16911 4.73948C6.05898 4.62238 5.99738 4.4655 5.99738 4.30218C5.99738 4.13886 6.05898 3.98198 6.16911 3.86488C6.27923 3.74777 6.42918 3.67968 6.5871 3.67506Z\"\n />\n </mask>\n <path\n _ngcontent-ng-c433636891=\"\"\n d=\"M5.13057 0.286224C7.81253 0.286224 9.98665 2.53373 9.98665 5.30623C9.98665 8.07823 7.81205 10.3252 5.13057 10.3252C2.44861 10.3257 0.27449 8.07823 0.27449 5.30623C0.27449 2.53373 2.44861 0.286224 5.13057 0.286224ZM5.13057 1.03908C4.58476 1.03296 4.0432 1.1388 3.53723 1.35049C3.03126 1.56218 2.57092 1.8755 2.18287 2.27233C1.79482 2.66915 1.48675 3.1416 1.2765 3.66233C1.06625 4.18305 0.95799 4.74172 0.95799 5.30598C0.95799 5.87025 1.06625 6.42891 1.2765 6.94964C1.48675 7.47036 1.79482 7.94281 2.18287 8.33964C2.57092 8.73646 3.03126 9.04979 3.53723 9.26147C4.0432 9.47316 4.58476 9.57901 5.13057 9.57289C6.21752 9.5607 7.25594 9.10579 8.02039 8.30691C8.78485 7.50804 9.21362 6.42969 9.21362 5.30598C9.21362 4.18228 8.78485 3.10393 8.02039 2.30505C7.25594 1.50618 6.21752 1.05126 5.13057 1.03908ZM3.41283 6.70302C3.61718 6.97193 3.87803 7.18925 4.17563 7.33855C4.47323 7.48785 4.79978 7.56522 5.13057 7.56479C5.461 7.5652 5.78721 7.48798 6.08453 7.33895C6.38186 7.18992 6.64253 6.97298 6.84685 6.70453C6.8765 6.66574 6.91325 6.63337 6.955 6.60926C6.99675 6.58515 7.04268 6.56978 7.09018 6.56403C7.13767 6.55827 7.1858 6.56224 7.23181 6.57571C7.27782 6.58919 7.32082 6.6119 7.35834 6.64254C7.39586 6.67319 7.42717 6.71118 7.45049 6.75434C7.47381 6.7975 7.48868 6.84498 7.49425 6.89408C7.49982 6.94318 7.49598 6.99293 7.48294 7.0405C7.46991 7.08806 7.44795 7.13251 7.4183 7.1713C7.14582 7.52897 6.79833 7.818 6.40202 8.01658C6.00572 8.21516 5.57097 8.3181 5.13057 8.31764C4.68953 8.31808 4.25416 8.21484 3.8574 8.01572C3.46064 7.8166 3.11287 7.52681 2.84042 7.16828C2.81083 7.12943 2.78894 7.08493 2.77599 7.03733C2.76304 6.98973 2.75929 6.93996 2.76495 6.89086C2.77061 6.84176 2.78556 6.7943 2.80897 6.75117C2.83237 6.70805 2.86376 6.67011 2.90135 6.63953C2.93893 6.60895 2.98198 6.58632 3.02802 6.57293C3.07407 6.55955 3.12221 6.55567 3.16971 6.56152C3.21721 6.56737 3.26312 6.58283 3.30484 6.60702C3.34655 6.63122 3.38325 6.66367 3.41283 6.70252V6.70302ZM3.67404 3.67506C3.75515 3.67268 3.83589 3.68715 3.9115 3.7176C3.98711 3.74805 4.05604 3.79386 4.11422 3.85233C4.17241 3.9108 4.21866 3.98073 4.25024 4.058C4.28182 4.13527 4.29809 4.2183 4.29809 4.30218C4.29809 4.38606 4.28182 4.46909 4.25024 4.54636C4.21866 4.62363 4.17241 4.69356 4.11422 4.75203C4.05604 4.8105 3.98711 4.85631 3.9115 4.88676C3.83589 4.91721 3.75515 4.93168 3.67404 4.92931C3.51612 4.92469 3.36616 4.85659 3.25604 4.73948C3.14592 4.62238 3.08431 4.4655 3.08431 4.30218C3.08431 4.13886 3.14592 3.98198 3.25604 3.86488C3.36616 3.74777 3.51612 3.67968 3.67404 3.67506ZM6.5871 3.67506C6.66821 3.67268 6.74896 3.68715 6.82457 3.7176C6.90018 3.74805 6.96911 3.79386 7.02729 3.85233C7.08547 3.9108 7.13172 3.98073 7.1633 4.058C7.19488 4.13527 7.21116 4.2183 7.21116 4.30218C7.21116 4.38606 7.19488 4.46909 7.1633 4.54636C7.13172 4.62363 7.08547 4.69356 7.02729 4.75203C6.96911 4.8105 6.90018 4.85631 6.82457 4.88676C6.74896 4.91721 6.66821 4.93168 6.5871 4.92931C6.42918 4.92469 6.27923 4.85659 6.16911 4.73948C6.05898 4.62238 5.99738 4.4655 5.99738 4.30218C5.99738 4.13886 6.05898 3.98198 6.16911 3.86488C6.27923 3.74777 6.42918 3.67968 6.5871 3.67506Z\"\n fill=\"url(#paint0_linear_748_3387)\"\n ></path>\n <path\n _ngcontent-ng-c433636891=\"\"\n d=\"M5.13057 0.286224C7.81253 0.286224 9.98665 2.53373 9.98665 5.30623C9.98665 8.07823 7.81205 10.3252 5.13057 10.3252C2.44861 10.3257 0.27449 8.07823 0.27449 5.30623C0.27449 2.53373 2.44861 0.286224 5.13057 0.286224ZM5.13057 1.03908C4.58476 1.03296 4.0432 1.1388 3.53723 1.35049C3.03126 1.56218 2.57092 1.8755 2.18287 2.27233C1.79482 2.66915 1.48675 3.1416 1.2765 3.66233C1.06625 4.18305 0.95799 4.74172 0.95799 5.30598C0.95799 5.87025 1.06625 6.42891 1.2765 6.94964C1.48675 7.47036 1.79482 7.94281 2.18287 8.33964C2.57092 8.73646 3.03126 9.04979 3.53723 9.26147C4.0432 9.47316 4.58476 9.57901 5.13057 9.57289C6.21752 9.5607 7.25594 9.10579 8.02039 8.30691C8.78485 7.50804 9.21362 6.42969 9.21362 5.30598C9.21362 4.18228 8.78485 3.10393 8.02039 2.30505C7.25594 1.50618 6.21752 1.05126 5.13057 1.03908ZM3.41283 6.70302C3.61718 6.97193 3.87803 7.18925 4.17563 7.33855C4.47323 7.48785 4.79978 7.56522 5.13057 7.56479C5.461 7.5652 5.78721 7.48798 6.08453 7.33895C6.38186 7.18992 6.64253 6.97298 6.84685 6.70453C6.8765 6.66574 6.91325 6.63337 6.955 6.60926C6.99675 6.58515 7.04268 6.56978 7.09018 6.56403C7.13767 6.55827 7.1858 6.56224 7.23181 6.57571C7.27782 6.58919 7.32082 6.6119 7.35834 6.64254C7.39586 6.67319 7.42717 6.71118 7.45049 6.75434C7.47381 6.7975 7.48868 6.84498 7.49425 6.89408C7.49982 6.94318 7.49598 6.99293 7.48294 7.0405C7.46991 7.08806 7.44795 7.13251 7.4183 7.1713C7.14582 7.52897 6.79833 7.818 6.40202 8.01658C6.00572 8.21516 5.57097 8.3181 5.13057 8.31764C4.68953 8.31808 4.25416 8.21484 3.8574 8.01572C3.46064 7.8166 3.11287 7.52681 2.84042 7.16828C2.81083 7.12943 2.78894 7.08493 2.77599 7.03733C2.76304 6.98973 2.75929 6.93996 2.76495 6.89086C2.77061 6.84176 2.78556 6.7943 2.80897 6.75117C2.83237 6.70805 2.86376 6.67011 2.90135 6.63953C2.93893 6.60895 2.98198 6.58632 3.02802 6.57293C3.07407 6.55955 3.12221 6.55567 3.16971 6.56152C3.21721 6.56737 3.26312 6.58283 3.30484 6.60702C3.34655 6.63122 3.38325 6.66367 3.41283 6.70252V6.70302ZM3.67404 3.67506C3.75515 3.67268 3.83589 3.68715 3.9115 3.7176C3.98711 3.74805 4.05604 3.79386 4.11422 3.85233C4.17241 3.9108 4.21866 3.98073 4.25024 4.058C4.28182 4.13527 4.29809 4.2183 4.29809 4.30218C4.29809 4.38606 4.28182 4.46909 4.25024 4.54636C4.21866 4.62363 4.17241 4.69356 4.11422 4.75203C4.05604 4.8105 3.98711 4.85631 3.9115 4.88676C3.83589 4.91721 3.75515 4.93168 3.67404 4.92931C3.51612 4.92469 3.36616 4.85659 3.25604 4.73948C3.14592 4.62238 3.08431 4.4655 3.08431 4.30218C3.08431 4.13886 3.14592 3.98198 3.25604 3.86488C3.36616 3.74777 3.51612 3.67968 3.67404 3.67506ZM6.5871 3.67506C6.66821 3.67268 6.74896 3.68715 6.82457 3.7176C6.90018 3.74805 6.96911 3.79386 7.02729 3.85233C7.08547 3.9108 7.13172 3.98073 7.1633 4.058C7.19488 4.13527 7.21116 4.2183 7.21116 4.30218C7.21116 4.38606 7.19488 4.46909 7.1633 4.54636C7.13172 4.62363 7.08547 4.69356 7.02729 4.75203C6.96911 4.8105 6.90018 4.85631 6.82457 4.88676C6.74896 4.91721 6.66821 4.93168 6.5871 4.92931C6.42918 4.92469 6.27923 4.85659 6.16911 4.73948C6.05898 4.62238 5.99738 4.4655 5.99738 4.30218C5.99738 4.13886 6.05898 3.98198 6.16911 3.86488C6.27923 3.74777 6.42918 3.67968 6.5871 3.67506Z\"\n stroke=\"url(#paint0_linear_748_3387)\"\n fill=\"url(#paint0_linear_748_3387)\"\n stroke-width=\"0.492535\"\n mask=\"url(#path-1-outside-1_422_3414)\"\n ></path>\n </g>\n <defs xmlns=\"http://www.w3.org/2000/svg\">\n <filter id=\"filter0_d_748_7685\" x=\"0\" y=\"0\" width=\"30\" height=\"30\" filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\" values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" result=\"hardAlpha\" />\n <feOffset />\n <feGaussianBlur stdDeviation=\"2\" />\n <feComposite in2=\"hardAlpha\" operator=\"out\" />\n <feColorMatrix type=\"matrix\" values=\"0 0 0 0 1 0 0 0 0 0.0961538 0 0 0 0 0.593269 0 0 0 1 0\" />\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow_748_7685\" />\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_748_7685\" result=\"shape\" />\n </filter>\n <linearGradient id=\"paint0_linear_748_7685\" x1=\"14.1509\" y1=\"3.43372\" x2=\"0.992799\" y2=\"26.7715\" gradientUnits=\"userSpaceOnUse\">\n <stop stop-color=\"#FE3C72\" />\n <stop offset=\"0.384615\" stop-color=\"#FFB5E9\" />\n </linearGradient>\n <linearGradient id=\"paint0_linear_748_3387\" x1=\"18.5134\" y1=\"2.81097\" x2=\"0.162773\" y2=\"35.3556\" gradientUnits=\"userSpaceOnUse\">\n <stop stop-color=\"#FE3C72\" />\n <stop offset=\"0.384615\" stop-color=\"#FFB5E9\" />\n </linearGradient>\n </defs>\n </svg>\n </div>\n @if (enableGifPicker) {\n <div class=\"gifs\" (click)=\"handleGifPickerClick()\"></div>\n <div class=\"gifs\" *ngIf=\"includeGifMessage\" (click)=\"handleGifPickerClick()\">\n <svg viewBox=\"0 0 11 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g>\n <path\n d=\"M7.055 10.9995H4.899C3.2535 10.9995 2.4305 10.9995 1.859 10.6005C1.69694 10.4873 1.55167 10.3518 1.4275 10.198C1 9.66501 1 8.89801 1 7.36301V6.09051C1 4.60901 1 3.86801 1.2365 3.27651C1.617 2.32501 2.4215 1.57501 3.4415 1.22001C4.075 0.999512 4.87 0.999512 6.4585 0.999512C7.3665 0.999512 7.82 0.999512 8.1825 1.12551C8.7655 1.32851 9.225 1.75701 9.4425 2.30051C9.5775 2.63851 9.5775 3.06201 9.5775 3.90851V4.99951\"\n stroke=\"url(#paint0_linear_748_3387)\"\n stroke-width=\"0.75\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M1 5.99951C1 5.07951 1.753 4.33301 2.682 4.33301C3.018 4.33301 3.414 4.39101 3.7405 4.30451C3.88281 4.26736 4.01278 4.19328 4.11726 4.08976C4.22174 3.98624 4.29703 3.85697 4.3355 3.71501C4.4225 3.39151 4.364 2.99901 4.364 2.66601C4.364 1.74601 5.117 0.999512 6.045 0.999512M6.046 8.99951H7.3075M4.833 6.92451C4.77 6.52451 4.6925 6.52401 4.028 6.49951H3.523C3.2445 6.49951 3.0185 6.72351 3.0185 6.99951V8.49951C3.0185 8.77551 3.2445 8.99951 3.5235 8.99951H4.4315C4.6265 8.99951 4.833 8.84301 4.833 8.64951V8.09951C4.833 8.04451 4.7765 7.94751 4.721 7.94751H4.159M6.046 6.49951H6.6765M6.6765 6.49951H7.3075M6.6765 6.49951V8.93701M10.2505 6.49951H8.989C8.7105 6.49951 8.4845 6.72351 8.4845 6.99951V7.74951M8.4845 7.74951V8.99951M8.4845 7.74951H9.746\"\n stroke=\"url(#paint0_linear_748_3387)\"\n stroke-width=\"0.75\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </g>\n <defs xmlns=\"http://www.w3.org/2000/svg\">\n <filter id=\"filter0_d_748_7685\" x=\"0\" y=\"0\" width=\"30\" height=\"30\" filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\" values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" result=\"hardAlpha\" />\n <feOffset />\n <feGaussianBlur stdDeviation=\"2\" />\n <feComposite in2=\"hardAlpha\" operator=\"out\" />\n <feColorMatrix type=\"matrix\" values=\"0 0 0 0 1 0 0 0 0 0.0961538 0 0 0 0 0.593269 0 0 0 1 0\" />\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow_748_7685\" />\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_748_7685\" result=\"shape\" />\n </filter>\n <linearGradient id=\"paint0_linear_748_7685\" x1=\"14.1509\" y1=\"3.43372\" x2=\"0.992799\" y2=\"26.7715\" gradientUnits=\"userSpaceOnUse\">\n <stop stop-color=\"#FE3C72\" />\n <stop offset=\"0.384615\" stop-color=\"#FFB5E9\" />\n </linearGradient>\n <linearGradient id=\"paint0_linear_748_3387\" x1=\"18.5134\" y1=\"2.81097\" x2=\"0.162773\" y2=\"35.3556\" gradientUnits=\"userSpaceOnUse\">\n <stop stop-color=\"#FE3C72\" />\n <stop offset=\"0.384615\" stop-color=\"#FFB5E9\" />\n </linearGradient>\n </defs>\n </svg>\n </div>\n }\n </div>\n <div class=\"emoji-picker-space\" [ngStyle]=\"{ 'z-index': !(gifVisibility || emojiVisibility) ? -1 : 11 }\" (blur)=\"onBlurPickerSpace()\">\n @if (gifVisibility && enableGifPicker) {\n <lib-gif-selector (selectGif)=\"onGifClick($event)\"></lib-gif-selector>\n }\n @if (emojiPickerOpened) {\n <emoji-picker #emojiPicker [ngStyle]=\"{ display: emojiVisibility ? '' : 'none' }\" emoji-version=\"15.0\" (emoji-click)=\"onEmojiclick($event)\"></emoji-picker>\n }\n </div>\n </form>\n</div>\n", styles: [":host{--height-chat-conversation: 11em;--max-width-container: 27em;--color-background-dark: #1d1b21;--color-chat-other: #453945;--color-chat-user: #403b45;--color-chat-init: #fe3c72;--color-text-white: white;--color-text-gray: rgb(123, 123, 123);--color-background-emoji: #29252d;--color-gradient-start: #746b8381;--color-gradient-end: rgba(0, 0, 0, 0);font-size:clamp(0px,3.2dvw,15px);display:flex;flex-direction:column;width:100%;max-width:var(--max-width-container)}:host .chat-component{display:flex;flex-direction:column;position:relative}:host .chat-component .bottom-gradient-fade{position:absolute;bottom:0;left:0;width:100%;height:40px;background:linear-gradient(180deg,transparent,#27242c);z-index:1;pointer-events:none}:host .chat-component .chat-container{position:relative}:host .chat-component .chat-container .go-button{color:#fff;font-size:1em;position:absolute;bottom:.2em;right:.7em;background-color:var(--color-background-dark);border-radius:50%;width:2em;height:2em;display:flex;justify-content:center;align-items:center;z-index:10}:host .chat-component .chat-container .go-button:hover{cursor:pointer}:host .chat-component .chat-container .dateMessages{display:flex;flex-direction:column;gap:1em;padding-bottom:8px;padding-top:1.6em;height:var(--height-chat-conversation);width:var(--max-width-container);overflow-y:scroll}:host .chat-component .chat-container .dateMessages .chat-item-container{display:flex;flex-direction:column;gap:1em}:host .chat-component .chat-container .dateMessages .chat-item-container .date-message{width:100%;display:flex;justify-content:center;align-items:center;font-size:.861em}:host .chat-component .chat-container .dateMessages .chat-item-container .date-message span{background-color:#000;color:var(--color-text-white);border-radius:1em;padding:.5em}:host .chat-component .chat-container .dateMessages .chat-item-container_user{align-items:flex-end}:host .chat-component .chat-container .dateMessages .chat-item-container_other{align-items:flex-start}:host .chat-component .chat-container .dateMessages .chat-item-container_init{align-items:center}:host .chat-component .chat-container .dateMessages .chat-item{max-width:80%;min-height:3.5em;padding:1em;border-radius:1.076em;position:relative;box-shadow:0 4px 4px #00000040}:host .chat-component .chat-container .dateMessages .chat-item .chat-item_text{font-size:.861em;color:var(--color-text-white);word-break:break-word;overflow-wrap:break-word;-webkit-hyphens:auto;hyphens:auto}:host .chat-component .chat-container .dateMessages .chat-item .chat-item_image{width:7em;height:auto}:host .chat-component .chat-container .dateMessages .chat-item .chat-item_timestamp{margin-top:.2em;font-size:.8em;color:var(--color-text-gray);text-align:end}:host .chat-component .chat-container .dateMessages .chat-item:before{content:\"\";position:absolute;inset:0;border-radius:1.076em;padding:.05em;background:linear-gradient(180deg,var(--color-gradient-start),var(--color-gradient-end) 50%);mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask-composite:exclude}:host .chat-component .chat-container .dateMessages .other-chat{background-color:var(--color-chat-other);border-bottom-left-radius:0}:host .chat-component .chat-container .dateMessages .user-chat{background-color:var(--color-chat-user);border-bottom-right-radius:0}:host .chat-component .chat-container .dateMessages .init-chat{min-height:2em;padding:.7em;background-color:var(--color-chat-init)}:host .chat-component .chat-container .dateMessages .init-chat .chat-item_text{font-size:.761em;color:#000}:host .chat-component .chat-container .dateMessages .other-chat:before{border-bottom-left-radius:0!important}:host .chat-component .chat-container .dateMessages .user-chat:before{border-bottom-right-radius:0!important}:host .message-sender{position:relative}:host .message-sender lib-input-field{--input-font-size: calc(clamp(0px, 3.2dvw, 15px)*.8) ;--input-padding: calc(clamp(0px, 3.2dvw, 15px)*1.2) calc(clamp(0px, 3.2dvw, 15px)*3.5) calc(clamp(0px, 3.2dvw, 15px)*1.2) calc(clamp(0px, 3.2dvw, 15px)*1.6) ;--placeholder-font-size: calc(clamp(0px, 3.2dvw, 15px)*.8) ;--textarea-height: calc(clamp(0px, 3.2dvw, 15px)*7) }:host .message-sender .chat-buttons .send,:host .message-sender .chat-buttons .emoji,:host .message-sender .chat-buttons .attach,:host .message-sender .chat-buttons .gifs{position:absolute;right:.6em;width:1.7em;height:1.7em;border-radius:50%;z-index:10}:host .message-sender .chat-buttons .send:hover,:host .message-sender .chat-buttons .emoji:hover,:host .message-sender .chat-buttons .attach:hover,:host .message-sender .chat-buttons .gifs:hover{cursor:pointer}:host .message-sender .chat-buttons .send{top:.9em}:host .message-sender .chat-buttons .send svg{width:1.7em;height:1.9em}:host .message-sender .chat-buttons .emoji{top:3.1em}:host .message-sender .chat-buttons .emoji svg{overflow:visible;width:2.33em;height:1.848em}:host .message-sender .chat-buttons .emoji svg mask{width:.733em;height:1.466em}:host .message-sender .chat-buttons .attach{top:5em;background-color:#87ceeb}:host .message-sender .chat-buttons .gifs{top:5em}:host .message-sender .chat-buttons .gifs svg{width:1.166em;height:1.2984em;margin-left:.25em}:host .message-sender .emoji-picker-space{position:absolute;top:-12em;height:12em;width:100%}:host .message-sender .emoji-picker-space emoji-picker{--background: var(--color-background-emoji);height:100%;width:100%;--input-font-size: .8em;--input-font-color: var(--color-text-white)}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i2.InputFieldComponent, selector: "lib-input-field,[lib-input-field]", inputs: ["name", "autocomplete", "label", "placeholder", "type", "readonly", "focus", "enableGoogleAddress", "locationAutocompleteConfig", "defaultLocation", "mask", "prefix", "suffix", "maxLength", "value", "address", "textarea", "resize", "counter", "patterns", "trimWhiteSpace", "disabled"], outputs: ["mapError", "locationChange", "keyDown", "onBlur"] }, { kind: "directive", type: i1$2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$2.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: GifSelectorComponent, selector: "lib-gif-selector", outputs: ["selectGif"] }, { kind: "component", type: i2.LibModalComponent, selector: "lib-popup", inputs: ["isOpen", "icon", "title", "message", "extendedMessage", "cancelButton", "confirmButton", "checkboxText", "progBarCurrentStep", "progBarTotalSteps", "customClass", "backdropDismiss", "modalComponent", "modalComponentData"], outputs: ["modalConfirm", "modalDismiss", "afterCloseEvent"] }, { kind: "directive", type: i2$3.InfiniteScrollDirective, selector: "[infiniteScroll], [infinite-scroll], [data-infinite-scroll]", inputs: ["infiniteScrollDistance", "infiniteScrollUpDistance", "infiniteScrollThrottle", "infiniteScrollDisabled", "infiniteScrollContainer", "scrollWindow", "immediateCheck", "horizontal", "alwaysCallback", "fromRoot"], outputs: ["scrolled", "scrolledUp"] }, { kind: "pipe", type: i1.DatePipe, name: "date" }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2234
2090
  }
2235
2091
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: ChatComponent, decorators: [{
2236
2092
  type: Component,
@@ -2296,7 +2152,7 @@ class AlertPopupComponent {
2296
2152
  }, 1000);
2297
2153
  }
2298
2154
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: AlertPopupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2299
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.14", type: AlertPopupComponent, isStandalone: false, selector: "lib-alert-popup", inputs: { title: "title", description: "description", timeState: "timeState", number: "number" }, outputs: { closed: "closed" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"alert-popup\" [class.is-closing]=\"isClosing\">\r\n <header class=\"alert-popup__header\">\r\n <div class=\"alert-popup__info\">\r\n <img width=\"25px\" height=\"25px\" src=\"assets/icons/popup-defualt.svg\" alt=\"defualt-icon\" />\r\n <div class=\"alert-popup__wapper\">\r\n <div class=\"alert-popup__title\">{{ title | translate }}</div>\r\n <span class=\"alert-popup__description\">{{ description | translate: { number: number } }}</span>\r\n </div>\r\n </div>\r\n <div class=\"alert-popup__close\" (click)=\"handleCloseEvent()\">\r\n <div>\r\n <img width=\"20px\" height=\"20px\" src=\"assets/icons/close-icon.svg\" alt=\"close-icon\" />\r\n </div>\r\n </div>\r\n </header>\r\n</div>\r\n", styles: [":host{font-size:clamp(0px,3.2dvw,12px)}:host *{box-sizing:border-box}.alert-popup{opacity:1;transition:opacity 0ms ease,width 0ms ease;-webkit-backdrop-filter:blur(.625em);backdrop-filter:blur(.625em);background:linear-gradient(to right,#fe3c72 -20%,#0003 15%);color:#fff;padding:1em 1.5em;width:25em;border-radius:1.6625em;font-family:Gilroy}.alert-popup__header{display:flex;justify-content:space-between;align-items:flex-start}.alert-popup__defualt-icon{width:1em;height:1em}.alert-popup__info{display:flex;gap:1em;align-items:flex-start}.alert-popup__title{font-size:1.275em;font-weight:300;font-family:Calistoga;color:#fff5f5;text-overflow:ellipsis;white-space:nowrap;word-break:revert}.alert-popup__description{color:#8e8e8e;font-size:.875em;font-family:Gilroy;text-overflow:ellipsis;white-space:break-spaces;word-break:revert}.alert-popup__close{cursor:pointer}.alert-popup__close img{min-width:20px}.alert-popup__wapper{transition:opacity 0ms ease}.alert-popup:before{content:\"\";position:absolute;inset:0;border-radius:1.6625em;padding:.125em;background:linear-gradient(to top,transparent,transparent,#ccabc4);-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:exclude;z-index:-1}.overflow{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.is-closing{transition:opacity .5s ease,width 1.5s ease;opacity:0;width:5em}.is-closing .alert-popup__wapper{opacity:0;transition:opacity .5s ease}@media (max-width: 768px){:host{font-size:calc(clamp(0px,3.2dvw,12px)*.8)}}\n"], dependencies: [{ kind: "pipe", type: i3.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2155
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.14", type: AlertPopupComponent, isStandalone: false, selector: "lib-alert-popup", inputs: { title: "title", description: "description", timeState: "timeState", number: "number" }, outputs: { closed: "closed" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"alert-popup\" [class.is-closing]=\"isClosing\">\r\n <header class=\"alert-popup__header\">\r\n <div class=\"alert-popup__info\">\r\n <img width=\"25px\" height=\"25px\" src=\"assets/icons/popup-defualt.svg\" alt=\"defualt-icon\" />\r\n <div class=\"alert-popup__wapper\">\r\n <div class=\"alert-popup__title\">{{ title | translate }}</div>\r\n <span class=\"alert-popup__description\">{{ description | translate: { number: number } }}</span>\r\n </div>\r\n </div>\r\n <div class=\"alert-popup__close\" (click)=\"handleCloseEvent()\">\r\n <div>\r\n <img width=\"20px\" height=\"20px\" src=\"assets/icons/close-icon.svg\" alt=\"close-icon\" />\r\n </div>\r\n </div>\r\n </header>\r\n</div>\r\n", styles: [":host{font-size:clamp(0px,3.2dvw,12px)}:host *{box-sizing:border-box}.alert-popup{opacity:1;transition:opacity 0ms ease,width 0ms ease;-webkit-backdrop-filter:blur(.625em);backdrop-filter:blur(.625em);background:linear-gradient(to right,#fe3c72 -20%,#0003 15%);color:#fff;padding:1em 1.5em;width:25em;border-radius:1.6625em;font-family:Gilroy}.alert-popup__header{display:flex;justify-content:space-between;align-items:flex-start}.alert-popup__defualt-icon{width:1em;height:1em}.alert-popup__info{display:flex;gap:1em;align-items:flex-start}.alert-popup__title{font-size:1.275em;font-weight:300;font-family:Calistoga;color:#fff5f5;text-overflow:ellipsis;white-space:nowrap;word-break:revert}.alert-popup__description{color:#8e8e8e;font-size:.875em;font-family:Gilroy;text-overflow:ellipsis;white-space:break-spaces;word-break:revert}.alert-popup__close{cursor:pointer}.alert-popup__close img{min-width:20px}.alert-popup__wapper{transition:opacity 0ms ease}.alert-popup:before{content:\"\";position:absolute;inset:0;border-radius:1.6625em;padding:.125em;background:linear-gradient(to top,transparent,transparent,#ccabc4);-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:exclude;z-index:-1}.overflow{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.is-closing{transition:opacity .5s ease,width 1.5s ease;opacity:0;width:5em}.is-closing .alert-popup__wapper{opacity:0;transition:opacity .5s ease}@media (max-width: 768px){:host{font-size:calc(clamp(0px,3.2dvw,12px)*.8)}}\n"], dependencies: [{ kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2300
2156
  }
2301
2157
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: AlertPopupComponent, decorators: [{
2302
2158
  type: Component,
@@ -2370,7 +2226,7 @@ class LibChatComponentModule {
2370
2226
  SharedModule,
2371
2227
  InfiniteScrollModule,
2372
2228
  TranslateModule], exports: [ChatComponent] }); }
2373
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: LibChatComponentModule, providers: [ChatService], imports: [CommonModule,
2229
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: LibChatComponentModule, providers: [ChatService$1], imports: [CommonModule,
2374
2230
  ImageCardModule,
2375
2231
  MatInputModule,
2376
2232
  MatSelectModule,
@@ -2404,31 +2260,276 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImpo
2404
2260
  TranslateModule,
2405
2261
  ],
2406
2262
  exports: [ChatComponent],
2407
- providers: [ChatService],
2263
+ providers: [ChatService$1],
2408
2264
  }]
2409
2265
  }] });
2410
2266
 
2411
- const innerProgressWhiteColors = {
2412
- primary: '#FFFFFF',
2413
- secondary: '#E0E0E0',
2414
- tertiary: '#000000',
2415
- gradientPrimary: '#FFFFFF',
2416
- gradientSecondary: '#E0E0E0',
2417
- incomplete: '#E0E0E0',
2418
- complete: '#FFFFFF',
2267
+ class ChatService {
2268
+ constructor(cacheService) {
2269
+ this.cacheService = cacheService;
2270
+ }
2271
+ setLongPressForSendImmediately(enabled) {
2272
+ this.cacheService.saveLocalStorage(LocalStorageKeys.LongPressForSendImmediately, enabled ? '1' : '0');
2273
+ }
2274
+ isLongPressForSendImmediately() {
2275
+ return this.cacheService.getLocalStorage(LocalStorageKeys.LongPressForSendImmediately).pipe(map((value) => value === '1'));
2276
+ }
2277
+ // transforms |messages| into |DateMessages| array
2278
+ transformMessages(messages) {
2279
+ const sorted = [...messages].sort((a, b) => a.timestamp?.getTime() - b.timestamp?.getTime());
2280
+ const seen = new Set();
2281
+ return sorted.map((msg) => {
2282
+ const dayStart = startOfDay(msg.timestamp); // midnight *local*
2283
+ if (dayStart) {
2284
+ const key = dayStart.getTime(); // epoch ms as the bucket id
2285
+ const isFirst = !seen.has(String(key));
2286
+ if (isFirst)
2287
+ seen.add(String(key));
2288
+ return { date: dayStart, isFirstMessage: isFirst, message: msg };
2289
+ }
2290
+ else {
2291
+ return null;
2292
+ }
2293
+ });
2294
+ }
2295
+ // updates |isFirstMessage| property of |DateMessages| array
2296
+ updateDateMessages(dateMessages) {
2297
+ const byDay = new Map();
2298
+ dateMessages.forEach((dm) => {
2299
+ const dayStart = startOfDay(dm.message.timestamp).getTime(); // epoch-ms key
2300
+ if (!byDay.has(dayStart))
2301
+ byDay.set(dayStart, []);
2302
+ byDay.get(dayStart).push(dm);
2303
+ });
2304
+ // 2️⃣ Within each bucket, sort and flag the first message
2305
+ const result = [];
2306
+ byDay.forEach((list) => {
2307
+ // ✨ clone so we don’t mutate callers’ state
2308
+ const sorted = [...list].sort((a, b) => a.message.timestamp.getTime() - b.message.timestamp.getTime());
2309
+ sorted.forEach((dm, idx) => (dm.isFirstMessage = idx === 0));
2310
+ result.push(...sorted);
2311
+ });
2312
+ return result;
2313
+ }
2314
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: ChatService, deps: [{ token: AbstractCacheService }], target: i0.ɵɵFactoryTarget.Injectable }); }
2315
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: ChatService, providedIn: 'root' }); }
2316
+ }
2317
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: ChatService, decorators: [{
2318
+ type: Injectable,
2319
+ args: [{
2320
+ providedIn: 'root',
2321
+ }]
2322
+ }], ctorParameters: () => [{ type: AbstractCacheService }] });
2323
+
2324
+ const MATCHER_STATUSES = [
2325
+ {
2326
+ title: '1st',
2327
+ subtitle: 'exchange',
2328
+ value: MatcherStatuses.STATUS1,
2329
+ },
2330
+ {
2331
+ title: '2nd',
2332
+ subtitle: 'exchange',
2333
+ value: MatcherStatuses.STATUS2,
2334
+ },
2335
+ {
2336
+ title: '3rd',
2337
+ subtitle: 'exchange',
2338
+ value: MatcherStatuses.STATUS3,
2339
+ },
2340
+ {
2341
+ title: '2+',
2342
+ subtitle: 'laughs',
2343
+ value: MatcherStatuses.STATUS4,
2344
+ },
2345
+ {
2346
+ title: 'idea',
2347
+ subtitle: 'signalled',
2348
+ value: MatcherStatuses.STATUS5,
2349
+ },
2350
+ {
2351
+ title: 'alt',
2352
+ subtitle: 'contact',
2353
+ value: MatcherStatuses.STATUS6,
2354
+ },
2355
+ {
2356
+ title: 'any',
2357
+ subtitle: 'romance',
2358
+ value: MatcherStatuses.STATUS7,
2359
+ },
2360
+ {
2361
+ title: 'locale',
2362
+ subtitle: 'confirmed',
2363
+ value: MatcherStatuses.STATUS8,
2364
+ },
2365
+ {
2366
+ title: 'time',
2367
+ subtitle: 'confirmed',
2368
+ value: MatcherStatuses.STATUS9,
2369
+ },
2370
+ {
2371
+ title: 'all',
2372
+ subtitle: 'followup',
2373
+ value: MatcherStatuses.STATUS10,
2374
+ },
2375
+ ];
2376
+
2377
+ const defaultClientHomeConfig = {
2378
+ loading: {
2379
+ clientMatches: true,
2380
+ },
2381
+ default: false,
2382
+ component: ClientHomeComponent.ChatHandoff,
2383
+ activeIndex: 0,
2384
+ slideContentMaxHeight: 'auto',
2385
+ clientMatches$: of([]),
2386
+ schedulers$: of([]),
2387
+ polygonColors: [],
2388
+ spiderConfig: null,
2389
+ bottomThumbs: true,
2390
+ includeTime: true,
2391
+ maxLength: 300,
2392
+ includeGifMessage: true,
2393
+ startDate: new Date(),
2394
+ endDate: endOfDay(addDays(new Date(), 6)),
2395
+ emptyMessage: '',
2396
+ displayBookedStatuses: false,
2397
+ displayEmptyDays: true,
2398
+ loading$: of(false),
2399
+ alertStatus: {},
2400
+ showValueProportionLabel: false,
2401
+ hideProgressBar: false,
2419
2402
  };
2420
2403
 
2421
- var CONVERSATION_FLAG;
2422
- (function (CONVERSATION_FLAG) {
2423
- CONVERSATION_FLAG["UNRESPONSIVE"] = "unresponsive";
2424
- CONVERSATION_FLAG["REDELEGATION"] = "redelegation";
2425
- })(CONVERSATION_FLAG || (CONVERSATION_FLAG = {}));
2404
+ class ChatMetaPipe {
2405
+ transform(clientMatches$, prospectId) {
2406
+ return clientMatches$?.pipe(map((clientMatches) => clientMatches.map((c) => c.prospectData)), map((chats) => {
2407
+ const chat = chats.find((c) => c.prospectId === prospectId);
2408
+ if (!chat || chat.messages.length === 0) {
2409
+ return {
2410
+ lastResponseTimestamp: null,
2411
+ firstAnswer: false,
2412
+ waitingAnswer: false,
2413
+ conversationFlags: chat?.conversationFlags,
2414
+ };
2415
+ }
2416
+ // --- one forward/backward scan, no extra arrays ---
2417
+ let lastUserIndex = -1;
2418
+ for (let i = chat.messages.length - 1; i >= 0; i--) {
2419
+ if (chat.messages[i].sender === SenderTypes.USER) {
2420
+ lastUserIndex = i;
2421
+ break;
2422
+ }
2423
+ }
2424
+ let firstProspectMessageAfterMe = null;
2425
+ let waitingAnswer = false;
2426
+ if (lastUserIndex !== -1) {
2427
+ for (let i = lastUserIndex + 1; i < chat.messages.length; i++) {
2428
+ if (chat.messages[i].sender === SenderTypes.OTHER) {
2429
+ firstProspectMessageAfterMe = chat.messages[i].timestamp;
2430
+ waitingAnswer = true; // prospect wrote last → waiting
2431
+ break;
2432
+ }
2433
+ }
2434
+ }
2435
+ if (!waitingAnswer) {
2436
+ // Either I haven't written, or I wrote last
2437
+ const lastMsg = chat.messages[chat.messages.length - 1];
2438
+ waitingAnswer = !!lastMsg && lastMsg.sender === SenderTypes.OTHER && lastUserIndex === -1;
2439
+ }
2440
+ return {
2441
+ lastResponseTimestamp: firstProspectMessageAfterMe,
2442
+ firstAnswer: lastUserIndex !== -1,
2443
+ waitingAnswer,
2444
+ conversationFlags: chat.conversationFlags,
2445
+ };
2446
+ }));
2447
+ }
2448
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: ChatMetaPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
2449
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.3.14", ngImport: i0, type: ChatMetaPipe, isStandalone: true, name: "chatMeta" }); }
2450
+ }
2451
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: ChatMetaPipe, decorators: [{
2452
+ type: Pipe,
2453
+ args: [{
2454
+ name: 'chatMeta',
2455
+ standalone: true,
2456
+ pure: true, // default, but being explicit
2457
+ }]
2458
+ }] });
2459
+
2460
+ class GetColorByMatcherPipe {
2461
+ transform(match, config) {
2462
+ const defaultColors = progressDefaultColors;
2463
+ if (!config?.spiderConfig?.datasets?.length) {
2464
+ return defaultColors;
2465
+ }
2466
+ const currentMatch = config.spiderConfig.datasets.find((ma) => ma.title === match.primary?.name || ma.title === match.secondary?.name);
2467
+ return currentMatch
2468
+ ? {
2469
+ primary: currentMatch.polygon_color.value,
2470
+ secondary: currentMatch.polygon_color.value,
2471
+ tertiary: currentMatch.polygon_color.value,
2472
+ gradientPrimary: currentMatch.polygon_color.value,
2473
+ gradientSecondary: currentMatch.polygon_color.value,
2474
+ complete: currentMatch.polygon_color.value,
2475
+ incomplete: currentMatch.polygon_color.value,
2476
+ }
2477
+ : defaultColors;
2478
+ }
2479
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: GetColorByMatcherPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
2480
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.3.14", ngImport: i0, type: GetColorByMatcherPipe, isStandalone: true, name: "getColorByMatcher" }); }
2481
+ }
2482
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: GetColorByMatcherPipe, decorators: [{
2483
+ type: Pipe,
2484
+ args: [{
2485
+ name: 'getColorByMatcher',
2486
+ standalone: true,
2487
+ }]
2488
+ }] });
2489
+
2490
+ const TICK_PERIOD_SECONDS = new InjectionToken('TICK_PERIOD_SECONDS', { factory: () => 60 });
2426
2491
 
2427
- var COUNTER_FLAG_BASE;
2428
- (function (COUNTER_FLAG_BASE) {
2429
- COUNTER_FLAG_BASE["StartConversation"] = "startConversation";
2430
- COUNTER_FLAG_BASE["LastResponse"] = "lastResponse";
2431
- })(COUNTER_FLAG_BASE || (COUNTER_FLAG_BASE = {}));
2492
+ // 🔁 ProgressTickerService centralizes timing control instead of spawning
2493
+ // multiple `setInterval` calls inside each animated component.
2494
+ //
2495
+ // This prevents creating 100+ independent timers (one per component),
2496
+ // and ensures all animations stay synchronized through a shared RxJS Observable.
2497
+ //
2498
+ // With 'shareReplay', the timer activates only when there’s at least one subscriber,
2499
+ // and it automatically stops when there are none.
2500
+ //
2501
+ // This approach significantly improves performance, reduces CPU usage,
2502
+ // and makes animation timing easier to manage and debug.
2503
+ class ProgressTickerService {
2504
+ /* 60 * 1_000 = 1 minute */
2505
+ constructor(periodSec) {
2506
+ /** For diagnostics: current number of active subscribers. */
2507
+ this.subscriberCount$ = new BehaviorSubject(0);
2508
+ const periodMs = Math.max(0.125, periodSec) * 1_000; // guard against 0/neg
2509
+ const base$ = interval(periodMs, animationFrameScheduler);
2510
+ // wrapped timer that tracks subs/unsubs
2511
+ this.tick$ = defer(() => {
2512
+ // a new subscription is starting
2513
+ this.subscriberCount$.next(this.subscriberCount$.value + 1);
2514
+ return base$.pipe(finalize(() => {
2515
+ // this subscription is ending
2516
+ this.subscriberCount$.next(this.subscriberCount$.value - 1);
2517
+ }));
2518
+ }).pipe(shareReplay({ bufferSize: 1, refCount: true }));
2519
+ }
2520
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: ProgressTickerService, deps: [{ token: TICK_PERIOD_SECONDS }], target: i0.ɵɵFactoryTarget.Injectable }); }
2521
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: ProgressTickerService, providedIn: 'root' }); }
2522
+ }
2523
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: ProgressTickerService, decorators: [{
2524
+ type: Injectable,
2525
+ args: [{ providedIn: 'root' }]
2526
+ }], ctorParameters: () => [{ type: undefined, decorators: [{
2527
+ type: Inject,
2528
+ args: [TICK_PERIOD_SECONDS]
2529
+ }] }] });
2530
+
2531
+ // progress-gap.config.ts (inside the library)
2532
+ const PROGRESS_GAP_MINUTES = new InjectionToken('PROGRESS_GAP_MINUTES', { factory: () => 1 }); // Default to 1 minute if not provided
2432
2533
 
2433
2534
  const getLimitDatesIndicators = (timestamp, interval = 1_440) => {
2434
2535
  const MS_IN_MIN = 60 * 1000; // 60 000
@@ -2515,49 +2616,15 @@ const redelegation = (basedOn, registered) => {
2515
2616
  return { state: INNER_CIRCLE_STATE.Redelegation, innerValue: null, tick: 'stop', basedOn, registered };
2516
2617
  };
2517
2618
 
2518
- // progress-gap.config.ts (inside the library)
2519
- const PROGRESS_GAP_MINUTES = new InjectionToken('PROGRESS_GAP_MINUTES', { factory: () => 1 }); // Default to 1 minute if not provided
2520
-
2521
- const TICK_PERIOD_SECONDS = new InjectionToken('TICK_PERIOD_SECONDS', { factory: () => 60 });
2522
-
2523
- // 🔁 ProgressTickerService centralizes timing control instead of spawning
2524
- // multiple `setInterval` calls inside each animated component.
2525
- //
2526
- // This prevents creating 100+ independent timers (one per component),
2527
- // and ensures all animations stay synchronized through a shared RxJS Observable.
2528
- //
2529
- // With 'shareReplay', the timer activates only when there’s at least one subscriber,
2530
- // and it automatically stops when there are none.
2531
- //
2532
- // This approach significantly improves performance, reduces CPU usage,
2533
- // and makes animation timing easier to manage and debug.
2534
- class ProgressTickerService {
2535
- /* 60 * 1_000 = 1 minute */
2536
- constructor(periodSec) {
2537
- /** For diagnostics: current number of active subscribers. */
2538
- this.subscriberCount$ = new BehaviorSubject(0);
2539
- const periodMs = Math.max(0.125, periodSec) * 1_000; // guard against 0/neg
2540
- const base$ = interval(periodMs, animationFrameScheduler);
2541
- // wrapped timer that tracks subs/unsubs
2542
- this.tick$ = defer(() => {
2543
- // a new subscription is starting
2544
- this.subscriberCount$.next(this.subscriberCount$.value + 1);
2545
- return base$.pipe(finalize(() => {
2546
- // this subscription is ending
2547
- this.subscriberCount$.next(this.subscriberCount$.value - 1);
2548
- }));
2549
- }).pipe(shareReplay({ bufferSize: 1, refCount: true }));
2550
- }
2551
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: ProgressTickerService, deps: [{ token: TICK_PERIOD_SECONDS }], target: i0.ɵɵFactoryTarget.Injectable }); }
2552
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: ProgressTickerService, providedIn: 'root' }); }
2553
- }
2554
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: ProgressTickerService, decorators: [{
2555
- type: Injectable,
2556
- args: [{ providedIn: 'root' }]
2557
- }], ctorParameters: () => [{ type: undefined, decorators: [{
2558
- type: Inject,
2559
- args: [TICK_PERIOD_SECONDS]
2560
- }] }] });
2619
+ const innerProgressWhiteColors = {
2620
+ primary: '#FFFFFF',
2621
+ secondary: '#E0E0E0',
2622
+ tertiary: '#000000',
2623
+ gradientPrimary: '#FFFFFF',
2624
+ gradientSecondary: '#E0E0E0',
2625
+ incomplete: '#E0E0E0',
2626
+ complete: '#FFFFFF',
2627
+ };
2561
2628
 
2562
2629
  class LibClientMatchOverviewComponent {
2563
2630
  constructor() {
@@ -2762,158 +2829,79 @@ class LibClientMatchOverviewComponent {
2762
2829
  };
2763
2830
  const map = lookUpMap[preset];
2764
2831
  this.innerValue = innerValue ?? map.innerValue;
2765
- this.showIllumination = map.showIllumination;
2766
- this.showValueProportionLabel = map.showValueProportionLabel;
2767
- this.innerPartialColors = map.innerPartialColors;
2768
- this.basedOn = basedOn ?? map.basedOn;
2769
- this.innerState = preset;
2770
- if (preset === INNER_CIRCLE_STATE.Unresponsive) {
2771
- this.sendConversationFlag.emit({
2772
- timestamp: new Date(),
2773
- prospectId: this.overview._id,
2774
- basedOn: this.basedOn,
2775
- flag: CONVERSATION_FLAG.UNRESPONSIVE,
2776
- });
2777
- }
2778
- else if (preset === INNER_CIRCLE_STATE.Redelegation) {
2779
- this.sendConversationFlag.emit({
2780
- timestamp: new Date(),
2781
- prospectId: this.overview._id,
2782
- basedOn: this.basedOn,
2783
- flag: CONVERSATION_FLAG.REDELEGATION,
2784
- });
2785
- }
2786
- this.buildCircleOpts();
2787
- }
2788
- buildCircleOpts() {
2789
- this.circleOpts = {
2790
- value: this.overview.preferences + this.overview.personality,
2791
- max: this.maxValue,
2792
- partialColors: this.partialColors,
2793
- showExternalPartialCircleProgress: this.showExternalPartialCircleProgress && this.expand,
2794
- showValueProportionLabel: this.showValueProportionLabel,
2795
- hasNotification: this.meta?.waitingAnswer,
2796
- inner: {
2797
- value: this.innerValue,
2798
- max: this.innerMaxValue,
2799
- colors: this.innerPartialColors,
2800
- state: this.innerState,
2801
- showIllumination: this.showIllumination,
2802
- },
2803
- imageUrl: this.overview.primary?.src,
2804
- suffix: '',
2805
- prefix: '',
2806
- };
2807
- }
2808
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: LibClientMatchOverviewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2809
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.14", type: LibClientMatchOverviewComponent, isStandalone: true, selector: "lib-client-match-overview", inputs: { overview: "overview", meta: "meta", expand: "expand", loading: "loading", default: "default", hideProgressBar: "hideProgressBar", partialColors: "partialColors", showExternalPartialCircleProgress: "showExternalPartialCircleProgress", maxValue: "maxValue", enableChangeOverview: "enableChangeOverview" }, outputs: { sendConversationFlag: "sendConversationFlag" }, usesOnChanges: true, ngImport: i0, template: "@if (!default && imageLoader$ | async) {\n <div class=\"overview\" [ngClass]=\"{ overview__expand: expand, overview__collapse: !expand }\">\n <div class=\"overview__container\">\n <lib-circle-progress\n class=\"overview__progress-bar\"\n [ngClass]=\"{ 'overview__progress-bar--hidden': hideProgressBar && !expand }\"\n [variable]=\"circleVariable.Partial\"\n [config]=\"circleOpts\"\n ></lib-circle-progress>\n <!-- details next to the circle image -->\n @if (expand) {\n <div class=\"overview__comparison comparison\">\n <div class=\"comparison__entity secondary-profile\">\n <div class=\"secondary-profile__image\">\n <svg width=\"100%\" height=\"100%\" viewBox=\"0 0 100 100\">\n <circle r=\"50\" cx=\"50\" cy=\"50\" fill=\"#28252D\" />\n <image [attr.mask]=\"'url(#' + imagePathId + ')'\" [attr.href]=\"overview.secondary.src\" height=\"80\" width=\"80\" x=\"10\" y=\"10\" />\n <defs>\n <mask [attr.id]=\"imagePathId\">\n <rect x=\"0\" y=\"0\" height=\"100\" width=\"100\" fill=\"black\" />\n <circle cx=\"50\" cy=\"50\" r=\"40\" fill=\"white\" />\n </mask>\n </defs>\n </svg>\n </div>\n <div class=\"comparison__label\">{{ overview.secondary.name }}</div>\n </div>\n <div class=\"comparison__entity\">\n <div class=\"comparison__value\">\n <span class=\"preferences\">{{ overview.preferences }}%</span>\n </div>\n <div class=\"comparison__label\">{{ 'CLIENT_MATCH_OVERVIEW.PREFERENCES_MATCH' | translate }}</div>\n </div>\n <div class=\"comparison__entity\">\n <div class=\"comparison__value\">\n <span class=\"personality\">{{ overview.personality }}%</span>\n </div>\n <div class=\"comparison__label\">{{ 'CLIENT_MATCH_OVERVIEW.PERSONALITY_MATCH' | translate }}</div>\n </div>\n </div>\n }\n </div>\n <!-- shadow on all the component (circle image and texts) -->\n @if (expand) {\n <div class=\"overview__back-shadow\">\n <img src=\"assets/client-match-overview/background-eclipse.svg\" />\n </div>\n }\n </div>\n} @else if (loading) {\n <div class=\"overview\" part=\"loading\">\n <div class=\"overview__container\">\n <div class=\"default-empty-profile\">\n <p-skeleton shape=\"circle\" size=\"3rem\" class=\"loading-skeleton\" />\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"34\" height=\"35\" viewBox=\"0 0 34 35\" fill=\"none\">\n <circle cx=\"17.0096\" cy=\"17.5439\" r=\"16.5945\" fill=\"#29252D\" />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M13.4843 18.2501C13.5008 18.2493 13.5174 18.2489 13.5339 18.2489H20.1384C20.1549 18.2489 20.1714 18.2493 20.188 18.2501C22.501 18.3649 24.5513 19.7726 25.4901 21.8878C26.1644 23.2368 25.7884 24.5724 24.9275 25.4921C24.0937 26.3827 22.802 26.9145 21.4595 26.9145H12.2127C10.8707 26.9145 9.57941 26.3825 8.74582 25.4921C7.88499 24.5726 7.50858 23.2372 8.182 21.888C9.12087 19.7726 11.1712 18.365 13.4843 18.2501ZM13.56 20.2486C12.0044 20.3346 10.6283 21.2884 10.0022 22.7165C9.99443 22.7342 9.98617 22.7517 9.97741 22.7689C9.72674 23.2609 9.82034 23.7138 10.2057 24.1253C10.6239 24.5721 11.367 24.9147 12.2127 24.9147H21.4595C22.3061 24.9147 23.0495 24.572 23.4675 24.1253C23.8527 23.7141 23.9461 23.2616 23.6951 22.7694C23.6863 22.7521 23.6779 22.7343 23.67 22.7165C23.044 21.2884 21.6679 20.3346 20.1122 20.2486H13.56Z\"\n fill=\"#5E5E5E\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M16.836 8.24993C15.1794 8.24993 13.8364 9.5929 13.8364 11.2495C13.8364 12.9062 15.1794 14.2492 16.836 14.2492C18.4927 14.2492 19.8356 12.9062 19.8356 11.2495C19.8356 10.454 19.5197 9.69103 18.9571 9.12849C18.3945 8.56595 17.6315 8.24993 16.836 8.24993ZM11.8367 11.2495C11.8367 8.48847 14.075 6.25018 16.836 6.25018C18.162 6.25018 19.4335 6.7769 20.3712 7.71446C21.3086 8.65202 21.8354 9.92363 21.8354 11.2495C21.8354 14.0107 19.5971 16.2489 16.836 16.2489C14.075 16.2489 11.8367 14.0107 11.8367 11.2495Z\"\n fill=\"#5E5E5E\"\n />\n </svg>\n </div>\n </div>\n </div>\n} @else if (default || !overview.primary) {\n <div class=\"overview\">\n <div class=\"overview__container\">\n <div class=\"default-empty-profile\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"34\" height=\"35\" viewBox=\"0 0 34 35\" fill=\"none\">\n <circle cx=\"17.0096\" cy=\"17.5439\" r=\"16.5945\" fill=\"#29252D\" />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M13.4843 18.2501C13.5008 18.2493 13.5174 18.2489 13.5339 18.2489H20.1384C20.1549 18.2489 20.1714 18.2493 20.188 18.2501C22.501 18.3649 24.5513 19.7726 25.4901 21.8878C26.1644 23.2368 25.7884 24.5724 24.9275 25.4921C24.0937 26.3827 22.802 26.9145 21.4595 26.9145H12.2127C10.8707 26.9145 9.57941 26.3825 8.74582 25.4921C7.88499 24.5726 7.50858 23.2372 8.182 21.888C9.12087 19.7726 11.1712 18.365 13.4843 18.2501ZM13.56 20.2486C12.0044 20.3346 10.6283 21.2884 10.0022 22.7165C9.99443 22.7342 9.98617 22.7517 9.97741 22.7689C9.72674 23.2609 9.82034 23.7138 10.2057 24.1253C10.6239 24.5721 11.367 24.9147 12.2127 24.9147H21.4595C22.3061 24.9147 23.0495 24.572 23.4675 24.1253C23.8527 23.7141 23.9461 23.2616 23.6951 22.7694C23.6863 22.7521 23.6779 22.7343 23.67 22.7165C23.044 21.2884 21.6679 20.3346 20.1122 20.2486H13.56Z\"\n fill=\"#5E5E5E\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M16.836 8.24993C15.1794 8.24993 13.8364 9.5929 13.8364 11.2495C13.8364 12.9062 15.1794 14.2492 16.836 14.2492C18.4927 14.2492 19.8356 12.9062 19.8356 11.2495C19.8356 10.454 19.5197 9.69103 18.9571 9.12849C18.3945 8.56595 17.6315 8.24993 16.836 8.24993ZM11.8367 11.2495C11.8367 8.48847 14.075 6.25018 16.836 6.25018C18.162 6.25018 19.4335 6.7769 20.3712 7.71446C21.3086 8.65202 21.8354 9.92363 21.8354 11.2495C21.8354 14.0107 19.5971 16.2489 16.836 16.2489C14.075 16.2489 11.8367 14.0107 11.8367 11.2495Z\"\n fill=\"#5E5E5E\"\n />\n </svg>\n </div>\n </div>\n </div>\n}\n", styles: [".zoom-in{animation:fadeZoomIn .5s ease-in-out}.zoom-out{animation:fadeZoomOut .5s ease-in-out}.zoom-out.collapse{display:none!important}@keyframes fadeZoomOut{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(0)}}@keyframes fadeZoomIn{0%{opacity:0;transform:scale(.5)}to{opacity:1;transform:scale(1)}}.hide{max-height:0;overflow:hidden;opacity:0;transition:max-height .8s ease-in-out,opacity .8s ease-in-out}.show{max-height:200px;opacity:1;transition:max-height .8s ease-in-out,opacity .8s ease-in-out}:host{font-size:clamp(0px,var(--component-size, 1.5dvw),.75rem)}.overview{overflow:hidden;width:100%;max-width:var(--card-width, 100%);display:block;position:relative}.overview__collapse{--card-width: 15em}.overview__expand{--card-width: 100%}.overview__back-shadow{position:absolute;top:-15%;left:0%;height:130%;width:120%;display:flex;justify-content:center;z-index:0}.overview__back-shadow img{height:100%;width:100%;flex-shrink:0}.overview__container{z-index:2;position:relative;display:flex;align-items:center}.overview__progress-bar{height:var(--primary-profile-height, 15em)!important;width:var(--primary-profile-width, 15em)!important;flex-shrink:0;transition:all .5s}.overview__progress-bar--hidden .circle-progress__svg,.overview__progress-bar--hidden .circle-progress__image{opacity:0}.overview__comparison{display:flex;flex-direction:column;flex-grow:1;transform-origin:left center;margin:var(--secondary-profile-margin, 0 0 0 -10px)}.comparison__entity{font-family:Gilroy-Medium;display:flex;gap:1em}.comparison__label{display:flex;justify-content:center;align-items:center;max-width:10ch}.comparison__value{height:var(--match-percentage-value-height, 4em);width:var(--match-percentage-value-width, \"auto\");display:flex;align-items:center;justify-content:center}.comparison__value>span{font-size:var(--match-percentage-font-size, 3em)}.comparison__value>span.preferences{color:#fe3c72}.comparison__value>span.personality{color:#9c2b4b}.secondary-profile{margin-bottom:-5px}.secondary-profile__image{height:var(--secondary-profile-height, 7rem);width:var(--secondary-profile-width, 7rem);display:flex;align-items:center;margin-left:-3px}.default-empty-profile{padding:1px;border-radius:50%;background:radial-gradient(circle,#acacac 79%,#fff);display:flex;justify-content:center;align-items:center;position:relative;margin:0 10px}.default-empty-profile .loading-skeleton{position:absolute;top:0}.default-empty-profile .p-skeleton:after{background:linear-gradient(90deg,#fff0,#fff6,#fff0)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: CircleProgressModule }, { kind: "component", type: CircleProgressComponent, selector: "lib-circle-progress", inputs: ["variable", "config"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "ngmodule", type: SkeletonModule }, { kind: "component", type: i2$2.Skeleton, selector: "p-skeleton", inputs: ["styleClass", "shape", "animation", "borderRadius", "size", "width", "height"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.ShadowDom }); }
2810
- }
2811
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: LibClientMatchOverviewComponent, decorators: [{
2812
- type: Component,
2813
- args: [{ selector: 'lib-client-match-overview', encapsulation: ViewEncapsulation.ShadowDom, changeDetection: ChangeDetectionStrategy.OnPush, imports: [CommonModule, CircleProgressModule, TranslateModule, SkeletonModule], template: "@if (!default && imageLoader$ | async) {\n <div class=\"overview\" [ngClass]=\"{ overview__expand: expand, overview__collapse: !expand }\">\n <div class=\"overview__container\">\n <lib-circle-progress\n class=\"overview__progress-bar\"\n [ngClass]=\"{ 'overview__progress-bar--hidden': hideProgressBar && !expand }\"\n [variable]=\"circleVariable.Partial\"\n [config]=\"circleOpts\"\n ></lib-circle-progress>\n <!-- details next to the circle image -->\n @if (expand) {\n <div class=\"overview__comparison comparison\">\n <div class=\"comparison__entity secondary-profile\">\n <div class=\"secondary-profile__image\">\n <svg width=\"100%\" height=\"100%\" viewBox=\"0 0 100 100\">\n <circle r=\"50\" cx=\"50\" cy=\"50\" fill=\"#28252D\" />\n <image [attr.mask]=\"'url(#' + imagePathId + ')'\" [attr.href]=\"overview.secondary.src\" height=\"80\" width=\"80\" x=\"10\" y=\"10\" />\n <defs>\n <mask [attr.id]=\"imagePathId\">\n <rect x=\"0\" y=\"0\" height=\"100\" width=\"100\" fill=\"black\" />\n <circle cx=\"50\" cy=\"50\" r=\"40\" fill=\"white\" />\n </mask>\n </defs>\n </svg>\n </div>\n <div class=\"comparison__label\">{{ overview.secondary.name }}</div>\n </div>\n <div class=\"comparison__entity\">\n <div class=\"comparison__value\">\n <span class=\"preferences\">{{ overview.preferences }}%</span>\n </div>\n <div class=\"comparison__label\">{{ 'CLIENT_MATCH_OVERVIEW.PREFERENCES_MATCH' | translate }}</div>\n </div>\n <div class=\"comparison__entity\">\n <div class=\"comparison__value\">\n <span class=\"personality\">{{ overview.personality }}%</span>\n </div>\n <div class=\"comparison__label\">{{ 'CLIENT_MATCH_OVERVIEW.PERSONALITY_MATCH' | translate }}</div>\n </div>\n </div>\n }\n </div>\n <!-- shadow on all the component (circle image and texts) -->\n @if (expand) {\n <div class=\"overview__back-shadow\">\n <img src=\"assets/client-match-overview/background-eclipse.svg\" />\n </div>\n }\n </div>\n} @else if (loading) {\n <div class=\"overview\" part=\"loading\">\n <div class=\"overview__container\">\n <div class=\"default-empty-profile\">\n <p-skeleton shape=\"circle\" size=\"3rem\" class=\"loading-skeleton\" />\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"34\" height=\"35\" viewBox=\"0 0 34 35\" fill=\"none\">\n <circle cx=\"17.0096\" cy=\"17.5439\" r=\"16.5945\" fill=\"#29252D\" />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M13.4843 18.2501C13.5008 18.2493 13.5174 18.2489 13.5339 18.2489H20.1384C20.1549 18.2489 20.1714 18.2493 20.188 18.2501C22.501 18.3649 24.5513 19.7726 25.4901 21.8878C26.1644 23.2368 25.7884 24.5724 24.9275 25.4921C24.0937 26.3827 22.802 26.9145 21.4595 26.9145H12.2127C10.8707 26.9145 9.57941 26.3825 8.74582 25.4921C7.88499 24.5726 7.50858 23.2372 8.182 21.888C9.12087 19.7726 11.1712 18.365 13.4843 18.2501ZM13.56 20.2486C12.0044 20.3346 10.6283 21.2884 10.0022 22.7165C9.99443 22.7342 9.98617 22.7517 9.97741 22.7689C9.72674 23.2609 9.82034 23.7138 10.2057 24.1253C10.6239 24.5721 11.367 24.9147 12.2127 24.9147H21.4595C22.3061 24.9147 23.0495 24.572 23.4675 24.1253C23.8527 23.7141 23.9461 23.2616 23.6951 22.7694C23.6863 22.7521 23.6779 22.7343 23.67 22.7165C23.044 21.2884 21.6679 20.3346 20.1122 20.2486H13.56Z\"\n fill=\"#5E5E5E\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M16.836 8.24993C15.1794 8.24993 13.8364 9.5929 13.8364 11.2495C13.8364 12.9062 15.1794 14.2492 16.836 14.2492C18.4927 14.2492 19.8356 12.9062 19.8356 11.2495C19.8356 10.454 19.5197 9.69103 18.9571 9.12849C18.3945 8.56595 17.6315 8.24993 16.836 8.24993ZM11.8367 11.2495C11.8367 8.48847 14.075 6.25018 16.836 6.25018C18.162 6.25018 19.4335 6.7769 20.3712 7.71446C21.3086 8.65202 21.8354 9.92363 21.8354 11.2495C21.8354 14.0107 19.5971 16.2489 16.836 16.2489C14.075 16.2489 11.8367 14.0107 11.8367 11.2495Z\"\n fill=\"#5E5E5E\"\n />\n </svg>\n </div>\n </div>\n </div>\n} @else if (default || !overview.primary) {\n <div class=\"overview\">\n <div class=\"overview__container\">\n <div class=\"default-empty-profile\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"34\" height=\"35\" viewBox=\"0 0 34 35\" fill=\"none\">\n <circle cx=\"17.0096\" cy=\"17.5439\" r=\"16.5945\" fill=\"#29252D\" />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M13.4843 18.2501C13.5008 18.2493 13.5174 18.2489 13.5339 18.2489H20.1384C20.1549 18.2489 20.1714 18.2493 20.188 18.2501C22.501 18.3649 24.5513 19.7726 25.4901 21.8878C26.1644 23.2368 25.7884 24.5724 24.9275 25.4921C24.0937 26.3827 22.802 26.9145 21.4595 26.9145H12.2127C10.8707 26.9145 9.57941 26.3825 8.74582 25.4921C7.88499 24.5726 7.50858 23.2372 8.182 21.888C9.12087 19.7726 11.1712 18.365 13.4843 18.2501ZM13.56 20.2486C12.0044 20.3346 10.6283 21.2884 10.0022 22.7165C9.99443 22.7342 9.98617 22.7517 9.97741 22.7689C9.72674 23.2609 9.82034 23.7138 10.2057 24.1253C10.6239 24.5721 11.367 24.9147 12.2127 24.9147H21.4595C22.3061 24.9147 23.0495 24.572 23.4675 24.1253C23.8527 23.7141 23.9461 23.2616 23.6951 22.7694C23.6863 22.7521 23.6779 22.7343 23.67 22.7165C23.044 21.2884 21.6679 20.3346 20.1122 20.2486H13.56Z\"\n fill=\"#5E5E5E\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M16.836 8.24993C15.1794 8.24993 13.8364 9.5929 13.8364 11.2495C13.8364 12.9062 15.1794 14.2492 16.836 14.2492C18.4927 14.2492 19.8356 12.9062 19.8356 11.2495C19.8356 10.454 19.5197 9.69103 18.9571 9.12849C18.3945 8.56595 17.6315 8.24993 16.836 8.24993ZM11.8367 11.2495C11.8367 8.48847 14.075 6.25018 16.836 6.25018C18.162 6.25018 19.4335 6.7769 20.3712 7.71446C21.3086 8.65202 21.8354 9.92363 21.8354 11.2495C21.8354 14.0107 19.5971 16.2489 16.836 16.2489C14.075 16.2489 11.8367 14.0107 11.8367 11.2495Z\"\n fill=\"#5E5E5E\"\n />\n </svg>\n </div>\n </div>\n </div>\n}\n", styles: [".zoom-in{animation:fadeZoomIn .5s ease-in-out}.zoom-out{animation:fadeZoomOut .5s ease-in-out}.zoom-out.collapse{display:none!important}@keyframes fadeZoomOut{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(0)}}@keyframes fadeZoomIn{0%{opacity:0;transform:scale(.5)}to{opacity:1;transform:scale(1)}}.hide{max-height:0;overflow:hidden;opacity:0;transition:max-height .8s ease-in-out,opacity .8s ease-in-out}.show{max-height:200px;opacity:1;transition:max-height .8s ease-in-out,opacity .8s ease-in-out}:host{font-size:clamp(0px,var(--component-size, 1.5dvw),.75rem)}.overview{overflow:hidden;width:100%;max-width:var(--card-width, 100%);display:block;position:relative}.overview__collapse{--card-width: 15em}.overview__expand{--card-width: 100%}.overview__back-shadow{position:absolute;top:-15%;left:0%;height:130%;width:120%;display:flex;justify-content:center;z-index:0}.overview__back-shadow img{height:100%;width:100%;flex-shrink:0}.overview__container{z-index:2;position:relative;display:flex;align-items:center}.overview__progress-bar{height:var(--primary-profile-height, 15em)!important;width:var(--primary-profile-width, 15em)!important;flex-shrink:0;transition:all .5s}.overview__progress-bar--hidden .circle-progress__svg,.overview__progress-bar--hidden .circle-progress__image{opacity:0}.overview__comparison{display:flex;flex-direction:column;flex-grow:1;transform-origin:left center;margin:var(--secondary-profile-margin, 0 0 0 -10px)}.comparison__entity{font-family:Gilroy-Medium;display:flex;gap:1em}.comparison__label{display:flex;justify-content:center;align-items:center;max-width:10ch}.comparison__value{height:var(--match-percentage-value-height, 4em);width:var(--match-percentage-value-width, \"auto\");display:flex;align-items:center;justify-content:center}.comparison__value>span{font-size:var(--match-percentage-font-size, 3em)}.comparison__value>span.preferences{color:#fe3c72}.comparison__value>span.personality{color:#9c2b4b}.secondary-profile{margin-bottom:-5px}.secondary-profile__image{height:var(--secondary-profile-height, 7rem);width:var(--secondary-profile-width, 7rem);display:flex;align-items:center;margin-left:-3px}.default-empty-profile{padding:1px;border-radius:50%;background:radial-gradient(circle,#acacac 79%,#fff);display:flex;justify-content:center;align-items:center;position:relative;margin:0 10px}.default-empty-profile .loading-skeleton{position:absolute;top:0}.default-empty-profile .p-skeleton:after{background:linear-gradient(90deg,#fff0,#fff6,#fff0)}\n"] }]
2814
- }], propDecorators: { overview: [{
2815
- type: Input,
2816
- args: [{ required: true }]
2817
- }], meta: [{
2818
- type: Input
2819
- }], expand: [{
2820
- type: Input
2821
- }], loading: [{
2822
- type: Input
2823
- }], default: [{
2824
- type: Input
2825
- }], hideProgressBar: [{
2826
- type: Input
2827
- }], partialColors: [{
2828
- type: Input
2829
- }], showExternalPartialCircleProgress: [{
2830
- type: Input
2831
- }], maxValue: [{
2832
- type: Input
2833
- }], enableChangeOverview: [{
2834
- type: Input
2835
- }], sendConversationFlag: [{
2836
- type: Output
2837
- }] } });
2838
-
2839
- var AlertStatusFields;
2840
- (function (AlertStatusFields) {
2841
- AlertStatusFields["upcomingDates"] = "upcomingDates";
2842
- AlertStatusFields["compatibilityProfileTrait"] = "compatibilityProfileTrait";
2843
- AlertStatusFields["compatibilityProfileSpider"] = "compatibilityProfileSpider";
2844
- AlertStatusFields["chatHandoff"] = "chatHandoff";
2845
- AlertStatusFields["chatProgress"] = "chatProgress";
2846
- AlertStatusFields["chatMeetupAgenda"] = "chatMeetupAgenda";
2847
- AlertStatusFields["face"] = "face";
2848
- })(AlertStatusFields || (AlertStatusFields = {}));
2849
-
2850
- var MatcherStatuses;
2851
- (function (MatcherStatuses) {
2852
- MatcherStatuses["STATUS0"] = "no contact";
2853
- MatcherStatuses["STATUS1"] = "1st exchange";
2854
- MatcherStatuses["STATUS2"] = "2nd exchange";
2855
- MatcherStatuses["STATUS3"] = "3rd exchange";
2856
- MatcherStatuses["STATUS4"] = "2+ laughs";
2857
- MatcherStatuses["STATUS5"] = "idea signalled";
2858
- MatcherStatuses["STATUS6"] = "alt contact";
2859
- MatcherStatuses["STATUS7"] = "any romance";
2860
- MatcherStatuses["STATUS8"] = "locale confirmed";
2861
- MatcherStatuses["STATUS9"] = "time confirmed";
2862
- MatcherStatuses["STATUS10"] = "all followup";
2863
- })(MatcherStatuses || (MatcherStatuses = {}));
2864
-
2865
- const MATCHER_STATUSES = [
2866
- {
2867
- title: '1st',
2868
- subtitle: 'exchange',
2869
- value: MatcherStatuses.STATUS1,
2870
- },
2871
- {
2872
- title: '2nd',
2873
- subtitle: 'exchange',
2874
- value: MatcherStatuses.STATUS2,
2875
- },
2876
- {
2877
- title: '3rd',
2878
- subtitle: 'exchange',
2879
- value: MatcherStatuses.STATUS3,
2880
- },
2881
- {
2882
- title: '2+',
2883
- subtitle: 'laughs',
2884
- value: MatcherStatuses.STATUS4,
2885
- },
2886
- {
2887
- title: 'idea',
2888
- subtitle: 'signalled',
2889
- value: MatcherStatuses.STATUS5,
2890
- },
2891
- {
2892
- title: 'alt',
2893
- subtitle: 'contact',
2894
- value: MatcherStatuses.STATUS6,
2895
- },
2896
- {
2897
- title: 'any',
2898
- subtitle: 'romance',
2899
- value: MatcherStatuses.STATUS7,
2900
- },
2901
- {
2902
- title: 'locale',
2903
- subtitle: 'confirmed',
2904
- value: MatcherStatuses.STATUS8,
2905
- },
2906
- {
2907
- title: 'time',
2908
- subtitle: 'confirmed',
2909
- value: MatcherStatuses.STATUS9,
2910
- },
2911
- {
2912
- title: 'all',
2913
- subtitle: 'followup',
2914
- value: MatcherStatuses.STATUS10,
2915
- },
2916
- ];
2832
+ this.showIllumination = map.showIllumination;
2833
+ this.showValueProportionLabel = map.showValueProportionLabel;
2834
+ this.innerPartialColors = map.innerPartialColors;
2835
+ this.basedOn = basedOn ?? map.basedOn;
2836
+ this.innerState = preset;
2837
+ if (preset === INNER_CIRCLE_STATE.Unresponsive) {
2838
+ this.sendConversationFlag.emit({
2839
+ timestamp: new Date(),
2840
+ prospectId: this.overview._id,
2841
+ basedOn: this.basedOn,
2842
+ flag: CONVERSATION_FLAG.UNRESPONSIVE,
2843
+ });
2844
+ }
2845
+ else if (preset === INNER_CIRCLE_STATE.Redelegation) {
2846
+ this.sendConversationFlag.emit({
2847
+ timestamp: new Date(),
2848
+ prospectId: this.overview._id,
2849
+ basedOn: this.basedOn,
2850
+ flag: CONVERSATION_FLAG.REDELEGATION,
2851
+ });
2852
+ }
2853
+ this.buildCircleOpts();
2854
+ }
2855
+ buildCircleOpts() {
2856
+ this.circleOpts = {
2857
+ value: this.overview.preferences + this.overview.personality,
2858
+ max: this.maxValue,
2859
+ partialColors: this.partialColors,
2860
+ showExternalPartialCircleProgress: this.showExternalPartialCircleProgress && this.expand,
2861
+ showValueProportionLabel: this.showValueProportionLabel,
2862
+ hasNotification: this.meta?.waitingAnswer,
2863
+ inner: {
2864
+ value: this.innerValue,
2865
+ max: this.innerMaxValue,
2866
+ colors: this.innerPartialColors,
2867
+ state: this.innerState,
2868
+ showIllumination: this.showIllumination,
2869
+ },
2870
+ imageUrl: this.overview.primary?.src,
2871
+ suffix: '',
2872
+ prefix: '',
2873
+ };
2874
+ }
2875
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: LibClientMatchOverviewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2876
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.14", type: LibClientMatchOverviewComponent, isStandalone: true, selector: "lib-client-match-overview", inputs: { overview: "overview", meta: "meta", expand: "expand", loading: "loading", default: "default", hideProgressBar: "hideProgressBar", partialColors: "partialColors", showExternalPartialCircleProgress: "showExternalPartialCircleProgress", maxValue: "maxValue", enableChangeOverview: "enableChangeOverview" }, outputs: { sendConversationFlag: "sendConversationFlag" }, usesOnChanges: true, ngImport: i0, template: "@if (!default && imageLoader$ | async) {\n <div class=\"overview\" [ngClass]=\"{ overview__expand: expand, overview__collapse: !expand }\">\n <div class=\"overview__container\">\n <lib-circle-progress\n class=\"overview__progress-bar\"\n [ngClass]=\"{ 'overview__progress-bar--hidden': hideProgressBar && !expand }\"\n [variable]=\"circleVariable.Partial\"\n [config]=\"circleOpts\"\n ></lib-circle-progress>\n <!-- details next to the circle image -->\n @if (expand) {\n <div class=\"overview__comparison comparison\">\n <div class=\"comparison__entity secondary-profile\">\n <div class=\"secondary-profile__image\">\n <svg width=\"100%\" height=\"100%\" viewBox=\"0 0 100 100\">\n <circle r=\"50\" cx=\"50\" cy=\"50\" fill=\"#28252D\" />\n <image [attr.mask]=\"'url(#' + imagePathId + ')'\" [attr.href]=\"overview.secondary.src\" height=\"80\" width=\"80\" x=\"10\" y=\"10\" />\n <defs>\n <mask [attr.id]=\"imagePathId\">\n <rect x=\"0\" y=\"0\" height=\"100\" width=\"100\" fill=\"black\" />\n <circle cx=\"50\" cy=\"50\" r=\"40\" fill=\"white\" />\n </mask>\n </defs>\n </svg>\n </div>\n <div class=\"comparison__label\">{{ overview.secondary.name }}</div>\n </div>\n <div class=\"comparison__entity\">\n <div class=\"comparison__value\">\n <span class=\"preferences\">{{ overview.preferences }}%</span>\n </div>\n <div class=\"comparison__label\">{{ 'CLIENT_MATCH_OVERVIEW.PREFERENCES_MATCH' | translate }}</div>\n </div>\n <div class=\"comparison__entity\">\n <div class=\"comparison__value\">\n <span class=\"personality\">{{ overview.personality }}%</span>\n </div>\n <div class=\"comparison__label\">{{ 'CLIENT_MATCH_OVERVIEW.PERSONALITY_MATCH' | translate }}</div>\n </div>\n </div>\n }\n </div>\n <!-- shadow on all the component (circle image and texts) -->\n @if (expand) {\n <div class=\"overview__back-shadow\">\n <img src=\"assets/client-match-overview/background-eclipse.svg\" />\n </div>\n }\n </div>\n} @else if (loading) {\n <div class=\"overview\" part=\"loading\">\n <div class=\"overview__container\">\n <div class=\"default-empty-profile\">\n <p-skeleton shape=\"circle\" size=\"3rem\" class=\"loading-skeleton\" />\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"34\" height=\"35\" viewBox=\"0 0 34 35\" fill=\"none\">\n <circle cx=\"17.0096\" cy=\"17.5439\" r=\"16.5945\" fill=\"#29252D\" />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M13.4843 18.2501C13.5008 18.2493 13.5174 18.2489 13.5339 18.2489H20.1384C20.1549 18.2489 20.1714 18.2493 20.188 18.2501C22.501 18.3649 24.5513 19.7726 25.4901 21.8878C26.1644 23.2368 25.7884 24.5724 24.9275 25.4921C24.0937 26.3827 22.802 26.9145 21.4595 26.9145H12.2127C10.8707 26.9145 9.57941 26.3825 8.74582 25.4921C7.88499 24.5726 7.50858 23.2372 8.182 21.888C9.12087 19.7726 11.1712 18.365 13.4843 18.2501ZM13.56 20.2486C12.0044 20.3346 10.6283 21.2884 10.0022 22.7165C9.99443 22.7342 9.98617 22.7517 9.97741 22.7689C9.72674 23.2609 9.82034 23.7138 10.2057 24.1253C10.6239 24.5721 11.367 24.9147 12.2127 24.9147H21.4595C22.3061 24.9147 23.0495 24.572 23.4675 24.1253C23.8527 23.7141 23.9461 23.2616 23.6951 22.7694C23.6863 22.7521 23.6779 22.7343 23.67 22.7165C23.044 21.2884 21.6679 20.3346 20.1122 20.2486H13.56Z\"\n fill=\"#5E5E5E\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M16.836 8.24993C15.1794 8.24993 13.8364 9.5929 13.8364 11.2495C13.8364 12.9062 15.1794 14.2492 16.836 14.2492C18.4927 14.2492 19.8356 12.9062 19.8356 11.2495C19.8356 10.454 19.5197 9.69103 18.9571 9.12849C18.3945 8.56595 17.6315 8.24993 16.836 8.24993ZM11.8367 11.2495C11.8367 8.48847 14.075 6.25018 16.836 6.25018C18.162 6.25018 19.4335 6.7769 20.3712 7.71446C21.3086 8.65202 21.8354 9.92363 21.8354 11.2495C21.8354 14.0107 19.5971 16.2489 16.836 16.2489C14.075 16.2489 11.8367 14.0107 11.8367 11.2495Z\"\n fill=\"#5E5E5E\"\n />\n </svg>\n </div>\n </div>\n </div>\n} @else if (default || !overview.primary) {\n <div class=\"overview\">\n <div class=\"overview__container\">\n <div class=\"default-empty-profile\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"34\" height=\"35\" viewBox=\"0 0 34 35\" fill=\"none\">\n <circle cx=\"17.0096\" cy=\"17.5439\" r=\"16.5945\" fill=\"#29252D\" />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M13.4843 18.2501C13.5008 18.2493 13.5174 18.2489 13.5339 18.2489H20.1384C20.1549 18.2489 20.1714 18.2493 20.188 18.2501C22.501 18.3649 24.5513 19.7726 25.4901 21.8878C26.1644 23.2368 25.7884 24.5724 24.9275 25.4921C24.0937 26.3827 22.802 26.9145 21.4595 26.9145H12.2127C10.8707 26.9145 9.57941 26.3825 8.74582 25.4921C7.88499 24.5726 7.50858 23.2372 8.182 21.888C9.12087 19.7726 11.1712 18.365 13.4843 18.2501ZM13.56 20.2486C12.0044 20.3346 10.6283 21.2884 10.0022 22.7165C9.99443 22.7342 9.98617 22.7517 9.97741 22.7689C9.72674 23.2609 9.82034 23.7138 10.2057 24.1253C10.6239 24.5721 11.367 24.9147 12.2127 24.9147H21.4595C22.3061 24.9147 23.0495 24.572 23.4675 24.1253C23.8527 23.7141 23.9461 23.2616 23.6951 22.7694C23.6863 22.7521 23.6779 22.7343 23.67 22.7165C23.044 21.2884 21.6679 20.3346 20.1122 20.2486H13.56Z\"\n fill=\"#5E5E5E\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M16.836 8.24993C15.1794 8.24993 13.8364 9.5929 13.8364 11.2495C13.8364 12.9062 15.1794 14.2492 16.836 14.2492C18.4927 14.2492 19.8356 12.9062 19.8356 11.2495C19.8356 10.454 19.5197 9.69103 18.9571 9.12849C18.3945 8.56595 17.6315 8.24993 16.836 8.24993ZM11.8367 11.2495C11.8367 8.48847 14.075 6.25018 16.836 6.25018C18.162 6.25018 19.4335 6.7769 20.3712 7.71446C21.3086 8.65202 21.8354 9.92363 21.8354 11.2495C21.8354 14.0107 19.5971 16.2489 16.836 16.2489C14.075 16.2489 11.8367 14.0107 11.8367 11.2495Z\"\n fill=\"#5E5E5E\"\n />\n </svg>\n </div>\n </div>\n </div>\n}\n", styles: [".zoom-in{animation:fadeZoomIn .5s ease-in-out}.zoom-out{animation:fadeZoomOut .5s ease-in-out}.zoom-out.collapse{display:none!important}@keyframes fadeZoomOut{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(0)}}@keyframes fadeZoomIn{0%{opacity:0;transform:scale(.5)}to{opacity:1;transform:scale(1)}}.hide{max-height:0;overflow:hidden;opacity:0;transition:max-height .8s ease-in-out,opacity .8s ease-in-out}.show{max-height:200px;opacity:1;transition:max-height .8s ease-in-out,opacity .8s ease-in-out}:host{font-size:clamp(0px,var(--component-size, 1.5dvw),.75rem)}.overview{overflow:hidden;width:100%;max-width:var(--card-width, 100%);display:block;position:relative}.overview__collapse{--card-width: 15em}.overview__expand{--card-width: 100%}.overview__back-shadow{position:absolute;top:-15%;left:0%;height:130%;width:120%;display:flex;justify-content:center;z-index:0}.overview__back-shadow img{height:100%;width:100%;flex-shrink:0}.overview__container{z-index:2;position:relative;display:flex;align-items:center}.overview__progress-bar{height:var(--primary-profile-height, 15em)!important;width:var(--primary-profile-width, 15em)!important;flex-shrink:0;transition:all .5s}.overview__progress-bar--hidden .circle-progress__svg,.overview__progress-bar--hidden .circle-progress__image{opacity:0}.overview__comparison{display:flex;flex-direction:column;flex-grow:1;transform-origin:left center;margin:var(--secondary-profile-margin, 0 0 0 -10px)}.comparison__entity{font-family:Gilroy-Medium;display:flex;gap:1em}.comparison__label{display:flex;justify-content:center;align-items:center;max-width:10ch}.comparison__value{height:var(--match-percentage-value-height, 4em);width:var(--match-percentage-value-width, \"auto\");display:flex;align-items:center;justify-content:center}.comparison__value>span{font-size:var(--match-percentage-font-size, 3em)}.comparison__value>span.preferences{color:#fe3c72}.comparison__value>span.personality{color:#9c2b4b}.secondary-profile{margin-bottom:-5px}.secondary-profile__image{height:var(--secondary-profile-height, 7rem);width:var(--secondary-profile-width, 7rem);display:flex;align-items:center;margin-left:-3px}.default-empty-profile{padding:1px;border-radius:50%;background:radial-gradient(circle,#acacac 79%,#fff);display:flex;justify-content:center;align-items:center;position:relative;margin:0 10px}.default-empty-profile .loading-skeleton{position:absolute;top:0}.default-empty-profile .p-skeleton:after{background:linear-gradient(90deg,#fff0,#fff6,#fff0)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: CircleProgressModule }, { kind: "component", type: CircleProgressComponent, selector: "lib-circle-progress", inputs: ["variable", "config"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "ngmodule", type: SkeletonModule }, { kind: "component", type: i2$2.Skeleton, selector: "p-skeleton", inputs: ["styleClass", "shape", "animation", "borderRadius", "size", "width", "height"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.ShadowDom }); }
2877
+ }
2878
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: LibClientMatchOverviewComponent, decorators: [{
2879
+ type: Component,
2880
+ args: [{ selector: 'lib-client-match-overview', encapsulation: ViewEncapsulation.ShadowDom, changeDetection: ChangeDetectionStrategy.OnPush, imports: [CommonModule, CircleProgressModule, TranslateModule, SkeletonModule], template: "@if (!default && imageLoader$ | async) {\n <div class=\"overview\" [ngClass]=\"{ overview__expand: expand, overview__collapse: !expand }\">\n <div class=\"overview__container\">\n <lib-circle-progress\n class=\"overview__progress-bar\"\n [ngClass]=\"{ 'overview__progress-bar--hidden': hideProgressBar && !expand }\"\n [variable]=\"circleVariable.Partial\"\n [config]=\"circleOpts\"\n ></lib-circle-progress>\n <!-- details next to the circle image -->\n @if (expand) {\n <div class=\"overview__comparison comparison\">\n <div class=\"comparison__entity secondary-profile\">\n <div class=\"secondary-profile__image\">\n <svg width=\"100%\" height=\"100%\" viewBox=\"0 0 100 100\">\n <circle r=\"50\" cx=\"50\" cy=\"50\" fill=\"#28252D\" />\n <image [attr.mask]=\"'url(#' + imagePathId + ')'\" [attr.href]=\"overview.secondary.src\" height=\"80\" width=\"80\" x=\"10\" y=\"10\" />\n <defs>\n <mask [attr.id]=\"imagePathId\">\n <rect x=\"0\" y=\"0\" height=\"100\" width=\"100\" fill=\"black\" />\n <circle cx=\"50\" cy=\"50\" r=\"40\" fill=\"white\" />\n </mask>\n </defs>\n </svg>\n </div>\n <div class=\"comparison__label\">{{ overview.secondary.name }}</div>\n </div>\n <div class=\"comparison__entity\">\n <div class=\"comparison__value\">\n <span class=\"preferences\">{{ overview.preferences }}%</span>\n </div>\n <div class=\"comparison__label\">{{ 'CLIENT_MATCH_OVERVIEW.PREFERENCES_MATCH' | translate }}</div>\n </div>\n <div class=\"comparison__entity\">\n <div class=\"comparison__value\">\n <span class=\"personality\">{{ overview.personality }}%</span>\n </div>\n <div class=\"comparison__label\">{{ 'CLIENT_MATCH_OVERVIEW.PERSONALITY_MATCH' | translate }}</div>\n </div>\n </div>\n }\n </div>\n <!-- shadow on all the component (circle image and texts) -->\n @if (expand) {\n <div class=\"overview__back-shadow\">\n <img src=\"assets/client-match-overview/background-eclipse.svg\" />\n </div>\n }\n </div>\n} @else if (loading) {\n <div class=\"overview\" part=\"loading\">\n <div class=\"overview__container\">\n <div class=\"default-empty-profile\">\n <p-skeleton shape=\"circle\" size=\"3rem\" class=\"loading-skeleton\" />\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"34\" height=\"35\" viewBox=\"0 0 34 35\" fill=\"none\">\n <circle cx=\"17.0096\" cy=\"17.5439\" r=\"16.5945\" fill=\"#29252D\" />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M13.4843 18.2501C13.5008 18.2493 13.5174 18.2489 13.5339 18.2489H20.1384C20.1549 18.2489 20.1714 18.2493 20.188 18.2501C22.501 18.3649 24.5513 19.7726 25.4901 21.8878C26.1644 23.2368 25.7884 24.5724 24.9275 25.4921C24.0937 26.3827 22.802 26.9145 21.4595 26.9145H12.2127C10.8707 26.9145 9.57941 26.3825 8.74582 25.4921C7.88499 24.5726 7.50858 23.2372 8.182 21.888C9.12087 19.7726 11.1712 18.365 13.4843 18.2501ZM13.56 20.2486C12.0044 20.3346 10.6283 21.2884 10.0022 22.7165C9.99443 22.7342 9.98617 22.7517 9.97741 22.7689C9.72674 23.2609 9.82034 23.7138 10.2057 24.1253C10.6239 24.5721 11.367 24.9147 12.2127 24.9147H21.4595C22.3061 24.9147 23.0495 24.572 23.4675 24.1253C23.8527 23.7141 23.9461 23.2616 23.6951 22.7694C23.6863 22.7521 23.6779 22.7343 23.67 22.7165C23.044 21.2884 21.6679 20.3346 20.1122 20.2486H13.56Z\"\n fill=\"#5E5E5E\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M16.836 8.24993C15.1794 8.24993 13.8364 9.5929 13.8364 11.2495C13.8364 12.9062 15.1794 14.2492 16.836 14.2492C18.4927 14.2492 19.8356 12.9062 19.8356 11.2495C19.8356 10.454 19.5197 9.69103 18.9571 9.12849C18.3945 8.56595 17.6315 8.24993 16.836 8.24993ZM11.8367 11.2495C11.8367 8.48847 14.075 6.25018 16.836 6.25018C18.162 6.25018 19.4335 6.7769 20.3712 7.71446C21.3086 8.65202 21.8354 9.92363 21.8354 11.2495C21.8354 14.0107 19.5971 16.2489 16.836 16.2489C14.075 16.2489 11.8367 14.0107 11.8367 11.2495Z\"\n fill=\"#5E5E5E\"\n />\n </svg>\n </div>\n </div>\n </div>\n} @else if (default || !overview.primary) {\n <div class=\"overview\">\n <div class=\"overview__container\">\n <div class=\"default-empty-profile\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"34\" height=\"35\" viewBox=\"0 0 34 35\" fill=\"none\">\n <circle cx=\"17.0096\" cy=\"17.5439\" r=\"16.5945\" fill=\"#29252D\" />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M13.4843 18.2501C13.5008 18.2493 13.5174 18.2489 13.5339 18.2489H20.1384C20.1549 18.2489 20.1714 18.2493 20.188 18.2501C22.501 18.3649 24.5513 19.7726 25.4901 21.8878C26.1644 23.2368 25.7884 24.5724 24.9275 25.4921C24.0937 26.3827 22.802 26.9145 21.4595 26.9145H12.2127C10.8707 26.9145 9.57941 26.3825 8.74582 25.4921C7.88499 24.5726 7.50858 23.2372 8.182 21.888C9.12087 19.7726 11.1712 18.365 13.4843 18.2501ZM13.56 20.2486C12.0044 20.3346 10.6283 21.2884 10.0022 22.7165C9.99443 22.7342 9.98617 22.7517 9.97741 22.7689C9.72674 23.2609 9.82034 23.7138 10.2057 24.1253C10.6239 24.5721 11.367 24.9147 12.2127 24.9147H21.4595C22.3061 24.9147 23.0495 24.572 23.4675 24.1253C23.8527 23.7141 23.9461 23.2616 23.6951 22.7694C23.6863 22.7521 23.6779 22.7343 23.67 22.7165C23.044 21.2884 21.6679 20.3346 20.1122 20.2486H13.56Z\"\n fill=\"#5E5E5E\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M16.836 8.24993C15.1794 8.24993 13.8364 9.5929 13.8364 11.2495C13.8364 12.9062 15.1794 14.2492 16.836 14.2492C18.4927 14.2492 19.8356 12.9062 19.8356 11.2495C19.8356 10.454 19.5197 9.69103 18.9571 9.12849C18.3945 8.56595 17.6315 8.24993 16.836 8.24993ZM11.8367 11.2495C11.8367 8.48847 14.075 6.25018 16.836 6.25018C18.162 6.25018 19.4335 6.7769 20.3712 7.71446C21.3086 8.65202 21.8354 9.92363 21.8354 11.2495C21.8354 14.0107 19.5971 16.2489 16.836 16.2489C14.075 16.2489 11.8367 14.0107 11.8367 11.2495Z\"\n fill=\"#5E5E5E\"\n />\n </svg>\n </div>\n </div>\n </div>\n}\n", styles: [".zoom-in{animation:fadeZoomIn .5s ease-in-out}.zoom-out{animation:fadeZoomOut .5s ease-in-out}.zoom-out.collapse{display:none!important}@keyframes fadeZoomOut{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(0)}}@keyframes fadeZoomIn{0%{opacity:0;transform:scale(.5)}to{opacity:1;transform:scale(1)}}.hide{max-height:0;overflow:hidden;opacity:0;transition:max-height .8s ease-in-out,opacity .8s ease-in-out}.show{max-height:200px;opacity:1;transition:max-height .8s ease-in-out,opacity .8s ease-in-out}:host{font-size:clamp(0px,var(--component-size, 1.5dvw),.75rem)}.overview{overflow:hidden;width:100%;max-width:var(--card-width, 100%);display:block;position:relative}.overview__collapse{--card-width: 15em}.overview__expand{--card-width: 100%}.overview__back-shadow{position:absolute;top:-15%;left:0%;height:130%;width:120%;display:flex;justify-content:center;z-index:0}.overview__back-shadow img{height:100%;width:100%;flex-shrink:0}.overview__container{z-index:2;position:relative;display:flex;align-items:center}.overview__progress-bar{height:var(--primary-profile-height, 15em)!important;width:var(--primary-profile-width, 15em)!important;flex-shrink:0;transition:all .5s}.overview__progress-bar--hidden .circle-progress__svg,.overview__progress-bar--hidden .circle-progress__image{opacity:0}.overview__comparison{display:flex;flex-direction:column;flex-grow:1;transform-origin:left center;margin:var(--secondary-profile-margin, 0 0 0 -10px)}.comparison__entity{font-family:Gilroy-Medium;display:flex;gap:1em}.comparison__label{display:flex;justify-content:center;align-items:center;max-width:10ch}.comparison__value{height:var(--match-percentage-value-height, 4em);width:var(--match-percentage-value-width, \"auto\");display:flex;align-items:center;justify-content:center}.comparison__value>span{font-size:var(--match-percentage-font-size, 3em)}.comparison__value>span.preferences{color:#fe3c72}.comparison__value>span.personality{color:#9c2b4b}.secondary-profile{margin-bottom:-5px}.secondary-profile__image{height:var(--secondary-profile-height, 7rem);width:var(--secondary-profile-width, 7rem);display:flex;align-items:center;margin-left:-3px}.default-empty-profile{padding:1px;border-radius:50%;background:radial-gradient(circle,#acacac 79%,#fff);display:flex;justify-content:center;align-items:center;position:relative;margin:0 10px}.default-empty-profile .loading-skeleton{position:absolute;top:0}.default-empty-profile .p-skeleton:after{background:linear-gradient(90deg,#fff0,#fff6,#fff0)}\n"] }]
2881
+ }], propDecorators: { overview: [{
2882
+ type: Input,
2883
+ args: [{ required: true }]
2884
+ }], meta: [{
2885
+ type: Input
2886
+ }], expand: [{
2887
+ type: Input
2888
+ }], loading: [{
2889
+ type: Input
2890
+ }], default: [{
2891
+ type: Input
2892
+ }], hideProgressBar: [{
2893
+ type: Input
2894
+ }], partialColors: [{
2895
+ type: Input
2896
+ }], showExternalPartialCircleProgress: [{
2897
+ type: Input
2898
+ }], maxValue: [{
2899
+ type: Input
2900
+ }], enableChangeOverview: [{
2901
+ type: Input
2902
+ }], sendConversationFlag: [{
2903
+ type: Output
2904
+ }] } });
2917
2905
 
2918
2906
  class IsStatusIncludedPipe {
2919
2907
  transform(status, index) {
@@ -3031,6 +3019,26 @@ const circleData = [
3031
3019
  filter: 'url(#innerWhiteCircleBlurEffect)',
3032
3020
  },
3033
3021
  ];
3022
+
3023
+ const defsF = [
3024
+ {
3025
+ id: 'innerCircleBlurEffect',
3026
+ x: '-40%',
3027
+ y: '-40%',
3028
+ height: '200%',
3029
+ width: '200%',
3030
+ feGaussianTags: [{ in: 'SourceGraphic', stdDeviation: '12' }],
3031
+ },
3032
+ {
3033
+ id: 'innerWhiteCircleBlurEffect',
3034
+ x: '-40%',
3035
+ y: '-40%',
3036
+ height: '200%',
3037
+ width: '200%',
3038
+ feGaussianTags: [{ in: 'SourceGraphic', stdDeviation: '10' }],
3039
+ },
3040
+ ];
3041
+
3034
3042
  const defsLG = [
3035
3043
  {
3036
3044
  id: 'circleBorderRadiant',
@@ -3068,24 +3076,7 @@ const defsLG = [
3068
3076
  ],
3069
3077
  },
3070
3078
  ];
3071
- const defsF = [
3072
- {
3073
- id: 'innerCircleBlurEffect',
3074
- x: '-40%',
3075
- y: '-40%',
3076
- height: '200%',
3077
- width: '200%',
3078
- feGaussianTags: [{ in: 'SourceGraphic', stdDeviation: '12' }],
3079
- },
3080
- {
3081
- id: 'innerWhiteCircleBlurEffect',
3082
- x: '-40%',
3083
- y: '-40%',
3084
- height: '200%',
3085
- width: '200%',
3086
- feGaussianTags: [{ in: 'SourceGraphic', stdDeviation: '10' }],
3087
- },
3088
- ];
3079
+
3089
3080
  const defsRG = [
3090
3081
  {
3091
3082
  id: 'innerCircleRadialEffect',
@@ -3586,192 +3577,70 @@ class LibDashboardSwipeableTabsComponent {
3586
3577
  Object.assign(this.thumbSwiper.nativeElement, swiperParams);
3587
3578
  this.thumbSwiper.nativeElement.initialize();
3588
3579
  }
3589
- initMainSwiper() {
3590
- const ref = this;
3591
- const swiperParams = {
3592
- ...this.mainSwiperOptions,
3593
- initialSlide: this.activeIndex,
3594
- autoHeight: true,
3595
- thumbs: {
3596
- swiper: this.thumbsSwiperInstance,
3597
- },
3598
- on: {
3599
- init(swiper) {
3600
- ref.mainSwiperInstance = swiper;
3601
- },
3602
- slideChange(swiper) {
3603
- if (ref.activeIndex !== swiper?.activeIndex) {
3604
- ref.activeIndex = swiper?.activeIndex;
3605
- ref.activeIndexChange.emit(swiper?.activeIndex);
3606
- }
3607
- },
3608
- },
3609
- };
3610
- Object.assign(this.mainSwiper.nativeElement, swiperParams);
3611
- this.mainSwiper.nativeElement.initialize();
3612
- requestAnimationFrame(() => {
3613
- ref.mainSwiperInstance?.update();
3614
- ref.thumbsSwiperInstance?.update();
3615
- });
3616
- }
3617
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: LibDashboardSwipeableTabsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
3618
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.14", type: LibDashboardSwipeableTabsComponent, isStandalone: true, selector: "lib-dashboard-swipeable-tabs", inputs: { thumbsSwiperOptions: "thumbsSwiperOptions", mainSwiperOptions: "mainSwiperOptions", activeIndex: "activeIndex", bottomThumbs: "bottomThumbs", slideContentMaxHeight: "slideContentMaxHeight", mainSwiperHeight: "mainSwiperHeight", subMainSwiperHeight: "subMainSwiperHeight", thumbsSwiperHeight: "thumbsSwiperHeight", generalSwiperHeight: "generalSwiperHeight" }, outputs: { activeIndexChange: "activeIndexChange" }, queries: [{ propertyName: "thumbSlides", first: true, predicate: ["thumbSlides"], descendants: true }], viewQueries: [{ propertyName: "thumbSwiper", first: true, predicate: ["thumbSwiper"], descendants: true }, { propertyName: "mainSwiper", first: true, predicate: ["mainSwiper"], descendants: true }], ngImport: i0, template: "<div class=\"swipeable-tabs-container\" [class.bottom-thumbs]=\"bottomThumbs\" [ngStyle]=\"{ height: generalSwiperHeight }\">\n <!-- Thumbnail Swiper -->\n <swiper-container #thumbSwiper init=\"false\" class=\"thumb-swiper container-sides-shadow\" [ngStyle]=\"{ height: thumbsSwiperHeight }\">\n <ng-content select=\"[thumb-slides]\"></ng-content>\n </swiper-container>\n\n <!-- Main Swiper -->\n <div class=\"swiper-container\" class=\"main-swiper\" [style.max-height]=\"slideContentMaxHeight\" [ngStyle]=\"{ height: mainSwiperHeight }\">\n <swiper-container #mainSwiper init=\"false\" class=\"main-swiper\" [class.container-sides-shadow]=\"activeIndex !== 0\" [ngStyle]=\"{ height: subMainSwiperHeight }\">\n <ng-content select=\"[main-slides]\"></ng-content>\n </swiper-container>\n </div>\n</div>\n", styles: [".swipeable-tabs-container{position:relative;display:flex;width:100%;flex-direction:column}.swipeable-tabs-container.bottom-thumbs{flex-direction:column-reverse}.swipeable-tabs-container swiper-container{position:relative;display:block;overflow:auto;width:100%}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: TranslateModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
3619
- }
3620
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: LibDashboardSwipeableTabsComponent, decorators: [{
3621
- type: Component,
3622
- args: [{ selector: 'lib-dashboard-swipeable-tabs', imports: [CommonModule, TranslateModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"swipeable-tabs-container\" [class.bottom-thumbs]=\"bottomThumbs\" [ngStyle]=\"{ height: generalSwiperHeight }\">\n <!-- Thumbnail Swiper -->\n <swiper-container #thumbSwiper init=\"false\" class=\"thumb-swiper container-sides-shadow\" [ngStyle]=\"{ height: thumbsSwiperHeight }\">\n <ng-content select=\"[thumb-slides]\"></ng-content>\n </swiper-container>\n\n <!-- Main Swiper -->\n <div class=\"swiper-container\" class=\"main-swiper\" [style.max-height]=\"slideContentMaxHeight\" [ngStyle]=\"{ height: mainSwiperHeight }\">\n <swiper-container #mainSwiper init=\"false\" class=\"main-swiper\" [class.container-sides-shadow]=\"activeIndex !== 0\" [ngStyle]=\"{ height: subMainSwiperHeight }\">\n <ng-content select=\"[main-slides]\"></ng-content>\n </swiper-container>\n </div>\n</div>\n", styles: [".swipeable-tabs-container{position:relative;display:flex;width:100%;flex-direction:column}.swipeable-tabs-container.bottom-thumbs{flex-direction:column-reverse}.swipeable-tabs-container swiper-container{position:relative;display:block;overflow:auto;width:100%}\n"] }]
3623
- }], propDecorators: { thumbSwiper: [{
3624
- type: ViewChild,
3625
- args: ['thumbSwiper', { static: false }]
3626
- }], mainSwiper: [{
3627
- type: ViewChild,
3628
- args: ['mainSwiper', { static: false }]
3629
- }], thumbSlides: [{
3630
- type: ContentChild,
3631
- args: ['thumbSlides', { static: false }]
3632
- }], thumbsSwiperOptions: [{
3633
- type: Input
3634
- }], mainSwiperOptions: [{
3635
- type: Input
3636
- }], activeIndex: [{
3637
- type: Input
3638
- }], bottomThumbs: [{
3639
- type: Input
3640
- }], slideContentMaxHeight: [{
3641
- type: Input
3642
- }], mainSwiperHeight: [{
3643
- type: Input
3644
- }], subMainSwiperHeight: [{
3645
- type: Input
3646
- }], thumbsSwiperHeight: [{
3647
- type: Input
3648
- }], generalSwiperHeight: [{
3649
- type: Input
3650
- }], activeIndexChange: [{
3651
- type: Output
3652
- }] } });
3653
-
3654
- var ClientHomeComponent;
3655
- (function (ClientHomeComponent) {
3656
- ClientHomeComponent["ChatCompatibility"] = "ChatCompatibility";
3657
- ClientHomeComponent["ChatHandoff"] = "ChatHandoff";
3658
- ClientHomeComponent["ChatScheduler"] = "ChatScheduler";
3659
- ClientHomeComponent["ClientMatchSpiderChart"] = "ClientMatchSpiderChart";
3660
- ClientHomeComponent["ClientMatchTraitChart"] = "ClientMatchTraitChart";
3661
- })(ClientHomeComponent || (ClientHomeComponent = {}));
3662
-
3663
- const defaultClientHomeConfig = {
3664
- loading: {
3665
- clientMatches: true,
3666
- },
3667
- default: false,
3668
- component: ClientHomeComponent.ChatHandoff,
3669
- activeIndex: 0,
3670
- slideContentMaxHeight: 'auto',
3671
- clientMatches$: of([]),
3672
- schedulers$: of([]),
3673
- polygonColors: [],
3674
- spiderConfig: null,
3675
- bottomThumbs: true,
3676
- includeTime: true,
3677
- maxLength: 300,
3678
- includeGifMessage: true,
3679
- startDate: new Date(),
3680
- endDate: endOfDay(addDays(new Date(), 6)),
3681
- emptyMessage: '',
3682
- displayBookedStatuses: false,
3683
- displayEmptyDays: true,
3684
- loading$: of(false),
3685
- alertStatus: {},
3686
- showValueProportionLabel: false,
3687
- hideProgressBar: false,
3688
- };
3689
-
3690
- class ChatMetaPipe {
3691
- transform(clientMatches$, prospectId) {
3692
- return clientMatches$?.pipe(map((clientMatches) => clientMatches.map((c) => c.prospectData)), map((chats) => {
3693
- const chat = chats.find((c) => c.prospectId === prospectId);
3694
- if (!chat || chat.messages.length === 0) {
3695
- return {
3696
- lastResponseTimestamp: null,
3697
- firstAnswer: false,
3698
- waitingAnswer: false,
3699
- conversationFlags: chat?.conversationFlags,
3700
- };
3701
- }
3702
- // --- one forward/backward scan, no extra arrays ---
3703
- let lastUserIndex = -1;
3704
- for (let i = chat.messages.length - 1; i >= 0; i--) {
3705
- if (chat.messages[i].sender === SenderTypes.USER) {
3706
- lastUserIndex = i;
3707
- break;
3708
- }
3709
- }
3710
- let firstProspectMessageAfterMe = null;
3711
- let waitingAnswer = false;
3712
- if (lastUserIndex !== -1) {
3713
- for (let i = lastUserIndex + 1; i < chat.messages.length; i++) {
3714
- if (chat.messages[i].sender === SenderTypes.OTHER) {
3715
- firstProspectMessageAfterMe = chat.messages[i].timestamp;
3716
- waitingAnswer = true; // prospect wrote last → waiting
3717
- break;
3718
- }
3719
- }
3720
- }
3721
- if (!waitingAnswer) {
3722
- // Either I haven't written, or I wrote last
3723
- const lastMsg = chat.messages[chat.messages.length - 1];
3724
- waitingAnswer = !!lastMsg && lastMsg.sender === SenderTypes.OTHER && lastUserIndex === -1;
3725
- }
3726
- return {
3727
- lastResponseTimestamp: firstProspectMessageAfterMe,
3728
- firstAnswer: lastUserIndex !== -1,
3729
- waitingAnswer,
3730
- conversationFlags: chat.conversationFlags,
3731
- };
3732
- }));
3733
- }
3734
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: ChatMetaPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
3735
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.3.14", ngImport: i0, type: ChatMetaPipe, isStandalone: true, name: "chatMeta" }); }
3736
- }
3737
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: ChatMetaPipe, decorators: [{
3738
- type: Pipe,
3739
- args: [{
3740
- name: 'chatMeta',
3741
- standalone: true,
3742
- pure: true, // default, but being explicit
3743
- }]
3744
- }] });
3745
-
3746
- class GetColorByMatcherPipe {
3747
- transform(match, config) {
3748
- const defaultColors = progressDefaultColors;
3749
- if (!config?.spiderConfig?.datasets?.length) {
3750
- return defaultColors;
3751
- }
3752
- const currentMatch = config.spiderConfig.datasets.find((ma) => ma.title === match.primary?.name || ma.title === match.secondary?.name);
3753
- return currentMatch
3754
- ? {
3755
- primary: currentMatch.polygon_color.value,
3756
- secondary: currentMatch.polygon_color.value,
3757
- tertiary: currentMatch.polygon_color.value,
3758
- gradientPrimary: currentMatch.polygon_color.value,
3759
- gradientSecondary: currentMatch.polygon_color.value,
3760
- complete: currentMatch.polygon_color.value,
3761
- incomplete: currentMatch.polygon_color.value,
3762
- }
3763
- : defaultColors;
3580
+ initMainSwiper() {
3581
+ const ref = this;
3582
+ const swiperParams = {
3583
+ ...this.mainSwiperOptions,
3584
+ initialSlide: this.activeIndex,
3585
+ autoHeight: true,
3586
+ thumbs: {
3587
+ swiper: this.thumbsSwiperInstance,
3588
+ },
3589
+ on: {
3590
+ init(swiper) {
3591
+ ref.mainSwiperInstance = swiper;
3592
+ },
3593
+ slideChange(swiper) {
3594
+ if (ref.activeIndex !== swiper?.activeIndex) {
3595
+ ref.activeIndex = swiper?.activeIndex;
3596
+ ref.activeIndexChange.emit(swiper?.activeIndex);
3597
+ }
3598
+ },
3599
+ },
3600
+ };
3601
+ Object.assign(this.mainSwiper.nativeElement, swiperParams);
3602
+ this.mainSwiper.nativeElement.initialize();
3603
+ requestAnimationFrame(() => {
3604
+ ref.mainSwiperInstance?.update();
3605
+ ref.thumbsSwiperInstance?.update();
3606
+ });
3764
3607
  }
3765
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: GetColorByMatcherPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
3766
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.3.14", ngImport: i0, type: GetColorByMatcherPipe, isStandalone: true, name: "getColorByMatcher" }); }
3608
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: LibDashboardSwipeableTabsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
3609
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.14", type: LibDashboardSwipeableTabsComponent, isStandalone: true, selector: "lib-dashboard-swipeable-tabs", inputs: { thumbsSwiperOptions: "thumbsSwiperOptions", mainSwiperOptions: "mainSwiperOptions", activeIndex: "activeIndex", bottomThumbs: "bottomThumbs", slideContentMaxHeight: "slideContentMaxHeight", mainSwiperHeight: "mainSwiperHeight", subMainSwiperHeight: "subMainSwiperHeight", thumbsSwiperHeight: "thumbsSwiperHeight", generalSwiperHeight: "generalSwiperHeight" }, outputs: { activeIndexChange: "activeIndexChange" }, queries: [{ propertyName: "thumbSlides", first: true, predicate: ["thumbSlides"], descendants: true }], viewQueries: [{ propertyName: "thumbSwiper", first: true, predicate: ["thumbSwiper"], descendants: true }, { propertyName: "mainSwiper", first: true, predicate: ["mainSwiper"], descendants: true }], ngImport: i0, template: "<div class=\"swipeable-tabs-container\" [class.bottom-thumbs]=\"bottomThumbs\" [ngStyle]=\"{ height: generalSwiperHeight }\">\n <!-- Thumbnail Swiper -->\n <swiper-container #thumbSwiper init=\"false\" class=\"thumb-swiper container-sides-shadow\" [ngStyle]=\"{ height: thumbsSwiperHeight }\">\n <ng-content select=\"[thumb-slides]\"></ng-content>\n </swiper-container>\n\n <!-- Main Swiper -->\n <div class=\"swiper-container\" class=\"main-swiper\" [style.max-height]=\"slideContentMaxHeight\" [ngStyle]=\"{ height: mainSwiperHeight }\">\n <swiper-container #mainSwiper init=\"false\" class=\"main-swiper\" [class.container-sides-shadow]=\"activeIndex !== 0\" [ngStyle]=\"{ height: subMainSwiperHeight }\">\n <ng-content select=\"[main-slides]\"></ng-content>\n </swiper-container>\n </div>\n</div>\n", styles: [".swipeable-tabs-container{position:relative;display:flex;width:100%;flex-direction:column}.swipeable-tabs-container.bottom-thumbs{flex-direction:column-reverse}.swipeable-tabs-container swiper-container{position:relative;display:block;overflow:auto;width:100%}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: TranslateModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
3767
3610
  }
3768
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: GetColorByMatcherPipe, decorators: [{
3769
- type: Pipe,
3770
- args: [{
3771
- name: 'getColorByMatcher',
3772
- standalone: true,
3773
- }]
3774
- }] });
3611
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: LibDashboardSwipeableTabsComponent, decorators: [{
3612
+ type: Component,
3613
+ args: [{ selector: 'lib-dashboard-swipeable-tabs', imports: [CommonModule, TranslateModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"swipeable-tabs-container\" [class.bottom-thumbs]=\"bottomThumbs\" [ngStyle]=\"{ height: generalSwiperHeight }\">\n <!-- Thumbnail Swiper -->\n <swiper-container #thumbSwiper init=\"false\" class=\"thumb-swiper container-sides-shadow\" [ngStyle]=\"{ height: thumbsSwiperHeight }\">\n <ng-content select=\"[thumb-slides]\"></ng-content>\n </swiper-container>\n\n <!-- Main Swiper -->\n <div class=\"swiper-container\" class=\"main-swiper\" [style.max-height]=\"slideContentMaxHeight\" [ngStyle]=\"{ height: mainSwiperHeight }\">\n <swiper-container #mainSwiper init=\"false\" class=\"main-swiper\" [class.container-sides-shadow]=\"activeIndex !== 0\" [ngStyle]=\"{ height: subMainSwiperHeight }\">\n <ng-content select=\"[main-slides]\"></ng-content>\n </swiper-container>\n </div>\n</div>\n", styles: [".swipeable-tabs-container{position:relative;display:flex;width:100%;flex-direction:column}.swipeable-tabs-container.bottom-thumbs{flex-direction:column-reverse}.swipeable-tabs-container swiper-container{position:relative;display:block;overflow:auto;width:100%}\n"] }]
3614
+ }], propDecorators: { thumbSwiper: [{
3615
+ type: ViewChild,
3616
+ args: ['thumbSwiper', { static: false }]
3617
+ }], mainSwiper: [{
3618
+ type: ViewChild,
3619
+ args: ['mainSwiper', { static: false }]
3620
+ }], thumbSlides: [{
3621
+ type: ContentChild,
3622
+ args: ['thumbSlides', { static: false }]
3623
+ }], thumbsSwiperOptions: [{
3624
+ type: Input
3625
+ }], mainSwiperOptions: [{
3626
+ type: Input
3627
+ }], activeIndex: [{
3628
+ type: Input
3629
+ }], bottomThumbs: [{
3630
+ type: Input
3631
+ }], slideContentMaxHeight: [{
3632
+ type: Input
3633
+ }], mainSwiperHeight: [{
3634
+ type: Input
3635
+ }], subMainSwiperHeight: [{
3636
+ type: Input
3637
+ }], thumbsSwiperHeight: [{
3638
+ type: Input
3639
+ }], generalSwiperHeight: [{
3640
+ type: Input
3641
+ }], activeIndexChange: [{
3642
+ type: Output
3643
+ }] } });
3775
3644
 
3776
3645
  class LibClientHomeComponent {
3777
3646
  constructor(cdr) {
@@ -3941,7 +3810,7 @@ class LibClientHomeComponent {
3941
3810
  ];
3942
3811
  }
3943
3812
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: LibClientHomeComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
3944
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.14", type: LibClientHomeComponent, isStandalone: true, selector: "lib-client-home", inputs: { config: "config" }, outputs: { activeIndexChange: "activeIndexChange", addMessage: "addMessage", getMessages: "getMessages", bookEvent: "bookEvent", removeSuggestion: "removeSuggestion", handleAppearPopup: "handleAppearPopup" }, ngImport: i0, template: "<div class=\"client-home\">\n @if (components.ClientMatchSpiderChart === config?.component) {\n <lib-spider-chart\n [datasets]=\"config.spiderConfig?.datasets\"\n [config]=\"config?.spiderConfig\"\n [polygon_colors]=\"config?.polygonColors\"\n [showChartInfo]=\"false\"\n ></lib-spider-chart>\n } @else if (components.ClientMatchTraitChart === config?.component) {\n <div class=\"trait-visual-container\">\n <tv-trait-visual\n [nodeData]=\"traitVisualNodes\"\n [attributeWeights]=\"traitVisualAttrWeights\"\n [preferenceWeights]=\"traitVisualPrefWeights\"\n ></tv-trait-visual>\n </div>\n }\n\n <lib-dashboard-swipeable-tabs\n [activeIndex]=\"config?.activeIndex\"\n [slideContentMaxHeight]=\"config?.slideContentMaxHeight\"\n [thumbsSwiperOptions]=\"{\n virtual: {\n enabled: clientMatches?.length > 5,\n addSlidesAfter: 8,\n addSlidesBefore: 8,\n cache: true,\n },\n slidesPerView: 'auto',\n grabCursor: true,\n centeredSlides: false,\n freeMode: {\n enabled: true,\n sticky: true,\n },\n observer: true,\n observeParents: true,\n }\"\n [mainSwiperOptions]=\"{\n virtual: {\n enabled: clientMatches?.length > 5,\n addSlidesAfter: 2,\n addSlidesBefore: 2,\n cache: true,\n },\n centeredSlides: true,\n grabCursor: true,\n keyboard: { enabled: true, onlyInViewport: false },\n effect: 'coverflow',\n spaceBetween: 5,\n coverflowEffect: {\n rotate: 0,\n slideShadows: false,\n scale: 0.9,\n },\n observer: true,\n observeParents: true,\n }\"\n [bottomThumbs]=\"config?.bottomThumbs\"\n [generalSwiperHeight]=\"'100%'\"\n [enableMainSwiper]=\"true\"\n (activeIndexChange)=\"onActiveIndexChange($event)\"\n *ngIf=\"(config?.loading$ | async) !== true || config?.default; else empty\"\n >\n <ng-container thumb-slides>\n @if (config.default || !clientMatches?.length) {\n @for (match of defaultNumberOfItems; let i = $index; track match) {\n <swiper-slide>\n <lib-client-match-overview\n [overview]=\"{}\"\n [expand]=\"0\"\n [class.lib-client-match-overview-expand]=\"true\"\n (click)=\"(null)\"\n [partialColors]=\"null\"\n [default]=\"config.default\"\n [showValueProportionLabel]=\"false\"\n [hideProgressBar]=\"false\"\n ></lib-client-match-overview>\n </swiper-slide>\n }\n } @else {\n @for (match of clientMatches; let i = $index; track match._id) {\n <swiper-slide>\n @if (config?.chatAdsTemplate && i === 0) {\n <ng-container *ngTemplateOutlet=\"config?.chatAdsTemplate\"></ng-container>\n }\n <lib-client-match-overview\n [overview]=\"match\"\n [expand]=\"config?.activeIndex === i\"\n [class.lib-client-match-overview-expand]=\"config?.activeIndex === i\"\n [partialColors]=\"match | getColorByMatcher: config\"\n [loading]=\"config?.loading?.clientMatches\"\n [showValueProportionLabel]=\"config?.showValueProportionLabel\"\n [hideProgressBar]=\"config?.hideProgressBar\"\n [meta]=\"config?.clientMatches$ | chatMeta: match._id | async\"\n ></lib-client-match-overview>\n </swiper-slide>\n }\n }\n </ng-container>\n <ng-container main-slides>\n @switch (config?.component) {\n @case (components.ChatScheduler) {\n @if (config.default || !(config?.schedulers$ | async)?.length) {\n @for (item of defaultNumberOfItems; track $index) {\n <swiper-slide class=\"scheduler\">\n <div class=\"slide-content without-shadow\">\n <lib-scheduler [loading$]=\"config?.loading$\" [default]=\"config.default\" [adsTemplate]=\"config?.schedulerAdsTemplate\" style=\"width: 100%\"></lib-scheduler>\n </div>\n </swiper-slide>\n }\n } @else {\n @for (scheduler of config?.schedulers$ | async; let i = $index; track scheduler) {\n <swiper-slide class=\"scheduler\">\n <div class=\"slide-content without-shadow\">\n <lib-scheduler\n [adsTemplate]=\"config?.schedulerAdsTemplate\"\n [events$]=\"scheduler.events$\"\n [loading$]=\"config?.loading$\"\n (bookEvent)=\"bookEvent.emit($event, scheduler.matchRequest)\"\n (removeSuggestion)=\"removeSuggestion.emit($event)\"\n ></lib-scheduler>\n </div>\n </swiper-slide>\n }\n }\n }\n @case (components.ChatHandoff) {\n @if (config.default || !(config?.clientMatches$ | async)?.length) {\n @for (chat of defaultNumberOfItems; let i = $index; track chat) {\n <swiper-slide class=\"chat\">\n <lib-matcher-statuses\n [inputValue]=\"config.chatInputValue\"\n [messages]=\"chat?.messages || []\"\n (sendMessage)=\"addMessageEmit($event, chat.prospectId, {})\"\n (getMessages)=\"getMessages.emit()\"\n [maxLength]=\"maxLength\"\n [responseTime]=\"chat?.prospectResponseTime || ''\"\n [hideStatuses]=\"config.hideStatuses\"\n ></lib-matcher-statuses>\n </swiper-slide>\n }\n } @else {\n @for (clientMatch of config?.clientMatches$ | async; let i = $index; track clientMatch.prospectData.prospectId) {\n <swiper-slide class=\"chat\">\n <div class=\"slide-content\">\n <lib-matcher-statuses\n [status]=\"clientMatch.prospectData.status\"\n [adsTemplate]=\"config?.chatTabAdsTemplate\"\n [inputValue]=\"config.chatInputValue\"\n [messages]=\"clientMatch.prospectData?.messages || []\"\n [includeTime]=\"config?.includeTime\"\n [includeGifMessage]=\"config?.includeGifMessage\"\n (getMessages)=\"getMessages.emit()\"\n [maxLength]=\"config?.maxLength\"\n [responseTime]=\"clientMatch.prospectData.prospectResponseTime\"\n (sendMessage)=\"addMessageEmit($event, clientMatch.prospectData.prospectId, clientMatch.matchRequest)\"\n [hideStatuses]=\"config.hideStatuses\"\n [prospectJoinDate]=\"clientMatch.prospectData.prospectJoinDate\"\n ></lib-matcher-statuses>\n </div>\n </swiper-slide>\n }\n }\n }\n }\n </ng-container>\n </lib-dashboard-swipeable-tabs>\n\n <ng-template #empty>\n <lib-section-separator></lib-section-separator>\n <div class=\"messsage f-lg f-gilroy-regular\">{{ emptyMessage }}</div>\n </ng-template>\n</div>\n", styles: [":host{--match-percentage-font-size: 1.5em;--container-sides-shadow-width: 15px;--match-percentage-value-height: 3em;position:relative}.messsage{margin-bottom:40px}.padding-20{padding:20px!important}.client-home{height:100%}swiper-slide{display:flex;overflow:hidden;position:relative;align-items:center;min-height:120px}swiper-slide.chat.swiper-slide-next,swiper-slide.chat.swiper-slide-prev{opacity:.5}swiper-slide.chat.swiper-slide-next:before,swiper-slide.chat.swiper-slide-prev:before{content:\"\";position:absolute;top:0;left:0;width:100%;height:100%;background:gray;opacity:.4;border-radius:10px}lib-client-match-overview{cursor:pointer}lib-client-match-overview:not(.lib-client-match-overview-expand){--lib-circle-progress-height: 65%;--lib-circle-progress-width: 65%;--primary-profile-height: 7em;--primary-profile-width: 7em;margin:auto 6px}lib-client-match-overview.lib-client-match-overview-expand{--primary-profile-height: 11em;--primary-profile-width: 11em;--secondary-profile-height: 3em;--secondary-profile-width: 3em}.slide-content{height:auto;width:100%;position:relative;display:block;overflow:visible;padding:0 5px}.slide-content:not(.without-shadow){border-radius:10px;box-shadow:5.70371px 5.70371px 11.40741px #00000052 inset,-3.42222px -3.42222px 4.56296px #ffffff1a inset}.slide-content:has(lib-chat){padding:0}.slide-content lib-chat{--max-width-container: 100%}.slide-content .status-list{position:absolute;top:.9em;left:.5em;display:flex;flex-direction:column;gap:.32em}lib-client-match-overview{--secondary-profile-margin: 0 0 0 -5px}@media (min-width: 350px){.left-side{left:0!important}}@media (max-width: 768px){swiper-slide{min-height:80px}}@media (max-width: 768px){swiper-slide{min-height:80px}lib-client-match-overview{--secondary-profile-margin: 0 0 0 -5px}.trait-visual-container{display:flex;justify-content:center;align-items:center;width:100%;height:100%;min-height:240px}.trait-visual-container tv-trait-visual{width:100%;height:100%;max-width:270px;max-height:240px}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: LibClientMatchOverviewComponent, selector: "lib-client-match-overview", inputs: ["overview", "meta", "expand", "loading", "default", "hideProgressBar", "partialColors", "showExternalPartialCircleProgress", "maxValue", "enableChangeOverview"], outputs: ["sendConversationFlag"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "component", type: LibDashboardSwipeableTabsComponent, selector: "lib-dashboard-swipeable-tabs", inputs: ["thumbsSwiperOptions", "mainSwiperOptions", "activeIndex", "bottomThumbs", "slideContentMaxHeight", "mainSwiperHeight", "subMainSwiperHeight", "thumbsSwiperHeight", "generalSwiperHeight"], outputs: ["activeIndexChange"] }, { kind: "ngmodule", type: LibChatComponentModule }, { kind: "component", type: LibSchedulerComponent, selector: "lib-scheduler", inputs: ["adsTemplate", "loading$", "emptyMessage", "displayBookedStatuses", "displayEmptyDays", "events$", "startDate", "endDate", "default"], outputs: ["bookEvent", "removeSuggestion"] }, { kind: "component", type: SpiderChartComponent, selector: "lib-spider-chart", inputs: ["datasets", "config", "polygon_colors", "showChartInfo"] }, { kind: "ngmodule", type: ButtonsModule }, { kind: "ngmodule", type: SharedModule }, { kind: "component", type: MatcherStatusesComponent, selector: "lib-matcher-statuses", inputs: ["adsTemplate", "status", "hideStatuses", "messages", "inputValue", "maxLength", "responseTime", "disabled", "prospectJoinDate"], outputs: ["getMessages", "sendMessage"] }, { kind: "component", type: TraitVisualComponent, selector: "tv-trait-visual", inputs: ["nodeData", "attributeWeights", "preferenceWeights", "attributeCount", "preferenceCount"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: GetColorByMatcherPipe, name: "getColorByMatcher" }, { kind: "pipe", type: ChatMetaPipe, name: "chatMeta" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
3813
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.14", type: LibClientHomeComponent, isStandalone: true, selector: "lib-client-home", inputs: { config: "config" }, outputs: { activeIndexChange: "activeIndexChange", addMessage: "addMessage", getMessages: "getMessages", bookEvent: "bookEvent", removeSuggestion: "removeSuggestion", handleAppearPopup: "handleAppearPopup" }, ngImport: i0, template: "<div class=\"client-home\">\n @if (components.ClientMatchSpiderChart === config?.component) {\n <lib-spider-chart\n [datasets]=\"config.spiderConfig?.datasets\"\n [config]=\"config?.spiderConfig\"\n [polygon_colors]=\"config?.polygonColors\"\n [showChartInfo]=\"false\"\n ></lib-spider-chart>\n } @else if (components.ClientMatchTraitChart === config?.component) {\n <div class=\"trait-visual-container\">\n <tv-trait-visual [nodeData]=\"traitVisualNodes\" [attributeWeights]=\"traitVisualAttrWeights\" [preferenceWeights]=\"traitVisualPrefWeights\"></tv-trait-visual>\n </div>\n }\n\n <lib-dashboard-swipeable-tabs\n [activeIndex]=\"config?.activeIndex\"\n [slideContentMaxHeight]=\"config?.slideContentMaxHeight\"\n [thumbsSwiperOptions]=\"{\n virtual: {\n enabled: clientMatches?.length > 5,\n addSlidesAfter: 8,\n addSlidesBefore: 8,\n cache: true,\n },\n slidesPerView: 'auto',\n grabCursor: true,\n centeredSlides: false,\n freeMode: {\n enabled: true,\n sticky: true,\n },\n observer: true,\n observeParents: true,\n }\"\n [mainSwiperOptions]=\"{\n virtual: {\n enabled: clientMatches?.length > 5,\n addSlidesAfter: 2,\n addSlidesBefore: 2,\n cache: true,\n },\n centeredSlides: true,\n grabCursor: true,\n keyboard: { enabled: true, onlyInViewport: false },\n effect: 'coverflow',\n spaceBetween: 5,\n coverflowEffect: {\n rotate: 0,\n slideShadows: false,\n scale: 0.9,\n },\n observer: true,\n observeParents: true,\n }\"\n [bottomThumbs]=\"config?.bottomThumbs\"\n [generalSwiperHeight]=\"'100%'\"\n [enableMainSwiper]=\"true\"\n (activeIndexChange)=\"onActiveIndexChange($event)\"\n *ngIf=\"(config?.loading$ | async) !== true || config?.default; else empty\"\n >\n <ng-container thumb-slides>\n @if (config.default || !clientMatches?.length) {\n @for (match of defaultNumberOfItems; let i = $index; track match) {\n <swiper-slide>\n <lib-client-match-overview\n [overview]=\"{}\"\n [expand]=\"0\"\n [class.lib-client-match-overview-expand]=\"true\"\n (click)=\"(null)\"\n [partialColors]=\"null\"\n [default]=\"config.default\"\n [showValueProportionLabel]=\"false\"\n [hideProgressBar]=\"false\"\n ></lib-client-match-overview>\n </swiper-slide>\n }\n } @else {\n @for (match of clientMatches; let i = $index; track match._id) {\n <swiper-slide>\n @if (config?.chatAdsTemplate && i === 0) {\n <ng-container *ngTemplateOutlet=\"config?.chatAdsTemplate\"></ng-container>\n }\n <lib-client-match-overview\n [overview]=\"match\"\n [expand]=\"config?.activeIndex === i\"\n [class.lib-client-match-overview-expand]=\"config?.activeIndex === i\"\n [partialColors]=\"match | getColorByMatcher: config\"\n [loading]=\"config?.loading?.clientMatches\"\n [showValueProportionLabel]=\"config?.showValueProportionLabel\"\n [hideProgressBar]=\"config?.hideProgressBar\"\n [meta]=\"config?.clientMatches$ | chatMeta: match._id | async\"\n ></lib-client-match-overview>\n </swiper-slide>\n }\n }\n </ng-container>\n <ng-container main-slides>\n @switch (config?.component) {\n @case (components.ChatScheduler) {\n @if (config.default || !(config?.schedulers$ | async)?.length) {\n @for (item of defaultNumberOfItems; track $index) {\n <swiper-slide class=\"scheduler\">\n <div class=\"slide-content without-shadow\">\n <lib-scheduler [loading$]=\"config?.loading$\" [default]=\"config.default\" [adsTemplate]=\"config?.schedulerAdsTemplate\" style=\"width: 100%\"></lib-scheduler>\n </div>\n </swiper-slide>\n }\n } @else {\n @for (scheduler of config?.schedulers$ | async; let i = $index; track scheduler) {\n <swiper-slide class=\"scheduler\">\n <div class=\"slide-content without-shadow\">\n <lib-scheduler\n [adsTemplate]=\"config?.schedulerAdsTemplate\"\n [events$]=\"scheduler.events$\"\n [loading$]=\"config?.loading$\"\n (bookEvent)=\"bookEvent.emit($event, scheduler.matchRequest)\"\n (removeSuggestion)=\"removeSuggestion.emit($event)\"\n ></lib-scheduler>\n </div>\n </swiper-slide>\n }\n }\n }\n @case (components.ChatHandoff) {\n @if (config.default || !(config?.clientMatches$ | async)?.length) {\n @for (chat of defaultNumberOfItems; let i = $index; track chat) {\n <swiper-slide class=\"chat\">\n <lib-matcher-statuses\n [inputValue]=\"config.chatInputValue\"\n [messages]=\"chat?.messages || []\"\n (sendMessage)=\"addMessageEmit($event, chat.prospectId, {})\"\n (getMessages)=\"getMessages.emit()\"\n [maxLength]=\"maxLength\"\n [responseTime]=\"chat?.prospectResponseTime || ''\"\n [hideStatuses]=\"config.hideStatuses\"\n ></lib-matcher-statuses>\n </swiper-slide>\n }\n } @else {\n @for (clientMatch of config?.clientMatches$ | async; let i = $index; track clientMatch?.prospectData?.prospectId ?? $index) {\n <swiper-slide class=\"chat\">\n <div class=\"slide-content\">\n <lib-matcher-statuses\n *ngIf=\"clientMatch.prospectData\"\n [status]=\"clientMatch.prospectData.status\"\n [adsTemplate]=\"config?.chatTabAdsTemplate\"\n [inputValue]=\"config.chatInputValue\"\n [messages]=\"clientMatch.prospectData?.messages || []\"\n [includeTime]=\"config?.includeTime\"\n [includeGifMessage]=\"config?.includeGifMessage\"\n (getMessages)=\"getMessages.emit()\"\n [maxLength]=\"config?.maxLength\"\n [responseTime]=\"clientMatch.prospectData.prospectResponseTime\"\n (sendMessage)=\"addMessageEmit($event, clientMatch?.prospectData?.prospectId, clientMatch?.matchRequest)\"\n [hideStatuses]=\"config.hideStatuses\"\n [prospectJoinDate]=\"clientMatch.prospectData.prospectJoinDate\"\n ></lib-matcher-statuses>\n </div>\n </swiper-slide>\n }\n }\n }\n }\n </ng-container>\n </lib-dashboard-swipeable-tabs>\n\n <ng-template #empty>\n <lib-section-separator></lib-section-separator>\n <div class=\"messsage f-lg f-gilroy-regular\">{{ emptyMessage }}</div>\n </ng-template>\n</div>\n", styles: [":host{--match-percentage-font-size: 1.5em;--container-sides-shadow-width: 15px;--match-percentage-value-height: 3em;position:relative}.messsage{margin-bottom:40px}.padding-20{padding:20px!important}.client-home{height:100%}swiper-slide{display:flex;overflow:hidden;position:relative;align-items:center;min-height:120px}swiper-slide.chat.swiper-slide-next,swiper-slide.chat.swiper-slide-prev{opacity:.5}swiper-slide.chat.swiper-slide-next:before,swiper-slide.chat.swiper-slide-prev:before{content:\"\";position:absolute;top:0;left:0;width:100%;height:100%;background:gray;opacity:.4;border-radius:10px}lib-client-match-overview{cursor:pointer}lib-client-match-overview:not(.lib-client-match-overview-expand){--lib-circle-progress-height: 65%;--lib-circle-progress-width: 65%;--primary-profile-height: 7em;--primary-profile-width: 7em;margin:auto 6px}lib-client-match-overview.lib-client-match-overview-expand{--primary-profile-height: 11em;--primary-profile-width: 11em;--secondary-profile-height: 3em;--secondary-profile-width: 3em}.slide-content{height:auto;width:100%;position:relative;display:block;overflow:visible;padding:0 5px}.slide-content:not(.without-shadow){border-radius:10px;box-shadow:5.70371px 5.70371px 11.40741px #00000052 inset,-3.42222px -3.42222px 4.56296px #ffffff1a inset}.slide-content:has(lib-chat){padding:0}.slide-content lib-chat{--max-width-container: 100%}.slide-content .status-list{position:absolute;top:.9em;left:.5em;display:flex;flex-direction:column;gap:.32em}lib-client-match-overview{--secondary-profile-margin: 0 0 0 -5px}@media (min-width: 350px){.left-side{left:0!important}}@media (max-width: 768px){swiper-slide{min-height:80px}}@media (max-width: 768px){swiper-slide{min-height:80px}lib-client-match-overview{--secondary-profile-margin: 0 0 0 -5px}.trait-visual-container{display:flex;justify-content:center;align-items:center;width:100%;height:100%;min-height:240px}.trait-visual-container tv-trait-visual{width:100%;height:100%;max-width:270px;max-height:240px}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: LibClientMatchOverviewComponent, selector: "lib-client-match-overview", inputs: ["overview", "meta", "expand", "loading", "default", "hideProgressBar", "partialColors", "showExternalPartialCircleProgress", "maxValue", "enableChangeOverview"], outputs: ["sendConversationFlag"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "component", type: LibDashboardSwipeableTabsComponent, selector: "lib-dashboard-swipeable-tabs", inputs: ["thumbsSwiperOptions", "mainSwiperOptions", "activeIndex", "bottomThumbs", "slideContentMaxHeight", "mainSwiperHeight", "subMainSwiperHeight", "thumbsSwiperHeight", "generalSwiperHeight"], outputs: ["activeIndexChange"] }, { kind: "ngmodule", type: LibChatComponentModule }, { kind: "component", type: LibSchedulerComponent, selector: "lib-scheduler", inputs: ["adsTemplate", "loading$", "emptyMessage", "displayBookedStatuses", "displayEmptyDays", "events$", "startDate", "endDate", "default"], outputs: ["bookEvent", "removeSuggestion"] }, { kind: "component", type: SpiderChartComponent, selector: "lib-spider-chart", inputs: ["datasets", "config", "polygon_colors", "showChartInfo"] }, { kind: "ngmodule", type: ButtonsModule }, { kind: "ngmodule", type: SharedModule }, { kind: "component", type: MatcherStatusesComponent, selector: "lib-matcher-statuses", inputs: ["adsTemplate", "status", "hideStatuses", "messages", "inputValue", "maxLength", "responseTime", "disabled", "prospectJoinDate"], outputs: ["getMessages", "sendMessage"] }, { kind: "component", type: TraitVisualComponent, selector: "tv-trait-visual", inputs: ["nodeData", "attributeWeights", "preferenceWeights", "attributeCount", "preferenceCount"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: GetColorByMatcherPipe, name: "getColorByMatcher" }, { kind: "pipe", type: ChatMetaPipe, name: "chatMeta" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
3945
3814
  }
3946
3815
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: LibClientHomeComponent, decorators: [{
3947
3816
  type: Component,
@@ -3959,7 +3828,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImpo
3959
3828
  GetColorByMatcherPipe,
3960
3829
  ChatMetaPipe,
3961
3830
  TraitVisualComponent,
3962
- ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"client-home\">\n @if (components.ClientMatchSpiderChart === config?.component) {\n <lib-spider-chart\n [datasets]=\"config.spiderConfig?.datasets\"\n [config]=\"config?.spiderConfig\"\n [polygon_colors]=\"config?.polygonColors\"\n [showChartInfo]=\"false\"\n ></lib-spider-chart>\n } @else if (components.ClientMatchTraitChart === config?.component) {\n <div class=\"trait-visual-container\">\n <tv-trait-visual\n [nodeData]=\"traitVisualNodes\"\n [attributeWeights]=\"traitVisualAttrWeights\"\n [preferenceWeights]=\"traitVisualPrefWeights\"\n ></tv-trait-visual>\n </div>\n }\n\n <lib-dashboard-swipeable-tabs\n [activeIndex]=\"config?.activeIndex\"\n [slideContentMaxHeight]=\"config?.slideContentMaxHeight\"\n [thumbsSwiperOptions]=\"{\n virtual: {\n enabled: clientMatches?.length > 5,\n addSlidesAfter: 8,\n addSlidesBefore: 8,\n cache: true,\n },\n slidesPerView: 'auto',\n grabCursor: true,\n centeredSlides: false,\n freeMode: {\n enabled: true,\n sticky: true,\n },\n observer: true,\n observeParents: true,\n }\"\n [mainSwiperOptions]=\"{\n virtual: {\n enabled: clientMatches?.length > 5,\n addSlidesAfter: 2,\n addSlidesBefore: 2,\n cache: true,\n },\n centeredSlides: true,\n grabCursor: true,\n keyboard: { enabled: true, onlyInViewport: false },\n effect: 'coverflow',\n spaceBetween: 5,\n coverflowEffect: {\n rotate: 0,\n slideShadows: false,\n scale: 0.9,\n },\n observer: true,\n observeParents: true,\n }\"\n [bottomThumbs]=\"config?.bottomThumbs\"\n [generalSwiperHeight]=\"'100%'\"\n [enableMainSwiper]=\"true\"\n (activeIndexChange)=\"onActiveIndexChange($event)\"\n *ngIf=\"(config?.loading$ | async) !== true || config?.default; else empty\"\n >\n <ng-container thumb-slides>\n @if (config.default || !clientMatches?.length) {\n @for (match of defaultNumberOfItems; let i = $index; track match) {\n <swiper-slide>\n <lib-client-match-overview\n [overview]=\"{}\"\n [expand]=\"0\"\n [class.lib-client-match-overview-expand]=\"true\"\n (click)=\"(null)\"\n [partialColors]=\"null\"\n [default]=\"config.default\"\n [showValueProportionLabel]=\"false\"\n [hideProgressBar]=\"false\"\n ></lib-client-match-overview>\n </swiper-slide>\n }\n } @else {\n @for (match of clientMatches; let i = $index; track match._id) {\n <swiper-slide>\n @if (config?.chatAdsTemplate && i === 0) {\n <ng-container *ngTemplateOutlet=\"config?.chatAdsTemplate\"></ng-container>\n }\n <lib-client-match-overview\n [overview]=\"match\"\n [expand]=\"config?.activeIndex === i\"\n [class.lib-client-match-overview-expand]=\"config?.activeIndex === i\"\n [partialColors]=\"match | getColorByMatcher: config\"\n [loading]=\"config?.loading?.clientMatches\"\n [showValueProportionLabel]=\"config?.showValueProportionLabel\"\n [hideProgressBar]=\"config?.hideProgressBar\"\n [meta]=\"config?.clientMatches$ | chatMeta: match._id | async\"\n ></lib-client-match-overview>\n </swiper-slide>\n }\n }\n </ng-container>\n <ng-container main-slides>\n @switch (config?.component) {\n @case (components.ChatScheduler) {\n @if (config.default || !(config?.schedulers$ | async)?.length) {\n @for (item of defaultNumberOfItems; track $index) {\n <swiper-slide class=\"scheduler\">\n <div class=\"slide-content without-shadow\">\n <lib-scheduler [loading$]=\"config?.loading$\" [default]=\"config.default\" [adsTemplate]=\"config?.schedulerAdsTemplate\" style=\"width: 100%\"></lib-scheduler>\n </div>\n </swiper-slide>\n }\n } @else {\n @for (scheduler of config?.schedulers$ | async; let i = $index; track scheduler) {\n <swiper-slide class=\"scheduler\">\n <div class=\"slide-content without-shadow\">\n <lib-scheduler\n [adsTemplate]=\"config?.schedulerAdsTemplate\"\n [events$]=\"scheduler.events$\"\n [loading$]=\"config?.loading$\"\n (bookEvent)=\"bookEvent.emit($event, scheduler.matchRequest)\"\n (removeSuggestion)=\"removeSuggestion.emit($event)\"\n ></lib-scheduler>\n </div>\n </swiper-slide>\n }\n }\n }\n @case (components.ChatHandoff) {\n @if (config.default || !(config?.clientMatches$ | async)?.length) {\n @for (chat of defaultNumberOfItems; let i = $index; track chat) {\n <swiper-slide class=\"chat\">\n <lib-matcher-statuses\n [inputValue]=\"config.chatInputValue\"\n [messages]=\"chat?.messages || []\"\n (sendMessage)=\"addMessageEmit($event, chat.prospectId, {})\"\n (getMessages)=\"getMessages.emit()\"\n [maxLength]=\"maxLength\"\n [responseTime]=\"chat?.prospectResponseTime || ''\"\n [hideStatuses]=\"config.hideStatuses\"\n ></lib-matcher-statuses>\n </swiper-slide>\n }\n } @else {\n @for (clientMatch of config?.clientMatches$ | async; let i = $index; track clientMatch.prospectData.prospectId) {\n <swiper-slide class=\"chat\">\n <div class=\"slide-content\">\n <lib-matcher-statuses\n [status]=\"clientMatch.prospectData.status\"\n [adsTemplate]=\"config?.chatTabAdsTemplate\"\n [inputValue]=\"config.chatInputValue\"\n [messages]=\"clientMatch.prospectData?.messages || []\"\n [includeTime]=\"config?.includeTime\"\n [includeGifMessage]=\"config?.includeGifMessage\"\n (getMessages)=\"getMessages.emit()\"\n [maxLength]=\"config?.maxLength\"\n [responseTime]=\"clientMatch.prospectData.prospectResponseTime\"\n (sendMessage)=\"addMessageEmit($event, clientMatch.prospectData.prospectId, clientMatch.matchRequest)\"\n [hideStatuses]=\"config.hideStatuses\"\n [prospectJoinDate]=\"clientMatch.prospectData.prospectJoinDate\"\n ></lib-matcher-statuses>\n </div>\n </swiper-slide>\n }\n }\n }\n }\n </ng-container>\n </lib-dashboard-swipeable-tabs>\n\n <ng-template #empty>\n <lib-section-separator></lib-section-separator>\n <div class=\"messsage f-lg f-gilroy-regular\">{{ emptyMessage }}</div>\n </ng-template>\n</div>\n", styles: [":host{--match-percentage-font-size: 1.5em;--container-sides-shadow-width: 15px;--match-percentage-value-height: 3em;position:relative}.messsage{margin-bottom:40px}.padding-20{padding:20px!important}.client-home{height:100%}swiper-slide{display:flex;overflow:hidden;position:relative;align-items:center;min-height:120px}swiper-slide.chat.swiper-slide-next,swiper-slide.chat.swiper-slide-prev{opacity:.5}swiper-slide.chat.swiper-slide-next:before,swiper-slide.chat.swiper-slide-prev:before{content:\"\";position:absolute;top:0;left:0;width:100%;height:100%;background:gray;opacity:.4;border-radius:10px}lib-client-match-overview{cursor:pointer}lib-client-match-overview:not(.lib-client-match-overview-expand){--lib-circle-progress-height: 65%;--lib-circle-progress-width: 65%;--primary-profile-height: 7em;--primary-profile-width: 7em;margin:auto 6px}lib-client-match-overview.lib-client-match-overview-expand{--primary-profile-height: 11em;--primary-profile-width: 11em;--secondary-profile-height: 3em;--secondary-profile-width: 3em}.slide-content{height:auto;width:100%;position:relative;display:block;overflow:visible;padding:0 5px}.slide-content:not(.without-shadow){border-radius:10px;box-shadow:5.70371px 5.70371px 11.40741px #00000052 inset,-3.42222px -3.42222px 4.56296px #ffffff1a inset}.slide-content:has(lib-chat){padding:0}.slide-content lib-chat{--max-width-container: 100%}.slide-content .status-list{position:absolute;top:.9em;left:.5em;display:flex;flex-direction:column;gap:.32em}lib-client-match-overview{--secondary-profile-margin: 0 0 0 -5px}@media (min-width: 350px){.left-side{left:0!important}}@media (max-width: 768px){swiper-slide{min-height:80px}}@media (max-width: 768px){swiper-slide{min-height:80px}lib-client-match-overview{--secondary-profile-margin: 0 0 0 -5px}.trait-visual-container{display:flex;justify-content:center;align-items:center;width:100%;height:100%;min-height:240px}.trait-visual-container tv-trait-visual{width:100%;height:100%;max-width:270px;max-height:240px}}\n"] }]
3831
+ ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"client-home\">\n @if (components.ClientMatchSpiderChart === config?.component) {\n <lib-spider-chart\n [datasets]=\"config.spiderConfig?.datasets\"\n [config]=\"config?.spiderConfig\"\n [polygon_colors]=\"config?.polygonColors\"\n [showChartInfo]=\"false\"\n ></lib-spider-chart>\n } @else if (components.ClientMatchTraitChart === config?.component) {\n <div class=\"trait-visual-container\">\n <tv-trait-visual [nodeData]=\"traitVisualNodes\" [attributeWeights]=\"traitVisualAttrWeights\" [preferenceWeights]=\"traitVisualPrefWeights\"></tv-trait-visual>\n </div>\n }\n\n <lib-dashboard-swipeable-tabs\n [activeIndex]=\"config?.activeIndex\"\n [slideContentMaxHeight]=\"config?.slideContentMaxHeight\"\n [thumbsSwiperOptions]=\"{\n virtual: {\n enabled: clientMatches?.length > 5,\n addSlidesAfter: 8,\n addSlidesBefore: 8,\n cache: true,\n },\n slidesPerView: 'auto',\n grabCursor: true,\n centeredSlides: false,\n freeMode: {\n enabled: true,\n sticky: true,\n },\n observer: true,\n observeParents: true,\n }\"\n [mainSwiperOptions]=\"{\n virtual: {\n enabled: clientMatches?.length > 5,\n addSlidesAfter: 2,\n addSlidesBefore: 2,\n cache: true,\n },\n centeredSlides: true,\n grabCursor: true,\n keyboard: { enabled: true, onlyInViewport: false },\n effect: 'coverflow',\n spaceBetween: 5,\n coverflowEffect: {\n rotate: 0,\n slideShadows: false,\n scale: 0.9,\n },\n observer: true,\n observeParents: true,\n }\"\n [bottomThumbs]=\"config?.bottomThumbs\"\n [generalSwiperHeight]=\"'100%'\"\n [enableMainSwiper]=\"true\"\n (activeIndexChange)=\"onActiveIndexChange($event)\"\n *ngIf=\"(config?.loading$ | async) !== true || config?.default; else empty\"\n >\n <ng-container thumb-slides>\n @if (config.default || !clientMatches?.length) {\n @for (match of defaultNumberOfItems; let i = $index; track match) {\n <swiper-slide>\n <lib-client-match-overview\n [overview]=\"{}\"\n [expand]=\"0\"\n [class.lib-client-match-overview-expand]=\"true\"\n (click)=\"(null)\"\n [partialColors]=\"null\"\n [default]=\"config.default\"\n [showValueProportionLabel]=\"false\"\n [hideProgressBar]=\"false\"\n ></lib-client-match-overview>\n </swiper-slide>\n }\n } @else {\n @for (match of clientMatches; let i = $index; track match._id) {\n <swiper-slide>\n @if (config?.chatAdsTemplate && i === 0) {\n <ng-container *ngTemplateOutlet=\"config?.chatAdsTemplate\"></ng-container>\n }\n <lib-client-match-overview\n [overview]=\"match\"\n [expand]=\"config?.activeIndex === i\"\n [class.lib-client-match-overview-expand]=\"config?.activeIndex === i\"\n [partialColors]=\"match | getColorByMatcher: config\"\n [loading]=\"config?.loading?.clientMatches\"\n [showValueProportionLabel]=\"config?.showValueProportionLabel\"\n [hideProgressBar]=\"config?.hideProgressBar\"\n [meta]=\"config?.clientMatches$ | chatMeta: match._id | async\"\n ></lib-client-match-overview>\n </swiper-slide>\n }\n }\n </ng-container>\n <ng-container main-slides>\n @switch (config?.component) {\n @case (components.ChatScheduler) {\n @if (config.default || !(config?.schedulers$ | async)?.length) {\n @for (item of defaultNumberOfItems; track $index) {\n <swiper-slide class=\"scheduler\">\n <div class=\"slide-content without-shadow\">\n <lib-scheduler [loading$]=\"config?.loading$\" [default]=\"config.default\" [adsTemplate]=\"config?.schedulerAdsTemplate\" style=\"width: 100%\"></lib-scheduler>\n </div>\n </swiper-slide>\n }\n } @else {\n @for (scheduler of config?.schedulers$ | async; let i = $index; track scheduler) {\n <swiper-slide class=\"scheduler\">\n <div class=\"slide-content without-shadow\">\n <lib-scheduler\n [adsTemplate]=\"config?.schedulerAdsTemplate\"\n [events$]=\"scheduler.events$\"\n [loading$]=\"config?.loading$\"\n (bookEvent)=\"bookEvent.emit($event, scheduler.matchRequest)\"\n (removeSuggestion)=\"removeSuggestion.emit($event)\"\n ></lib-scheduler>\n </div>\n </swiper-slide>\n }\n }\n }\n @case (components.ChatHandoff) {\n @if (config.default || !(config?.clientMatches$ | async)?.length) {\n @for (chat of defaultNumberOfItems; let i = $index; track chat) {\n <swiper-slide class=\"chat\">\n <lib-matcher-statuses\n [inputValue]=\"config.chatInputValue\"\n [messages]=\"chat?.messages || []\"\n (sendMessage)=\"addMessageEmit($event, chat.prospectId, {})\"\n (getMessages)=\"getMessages.emit()\"\n [maxLength]=\"maxLength\"\n [responseTime]=\"chat?.prospectResponseTime || ''\"\n [hideStatuses]=\"config.hideStatuses\"\n ></lib-matcher-statuses>\n </swiper-slide>\n }\n } @else {\n @for (clientMatch of config?.clientMatches$ | async; let i = $index; track clientMatch?.prospectData?.prospectId ?? $index) {\n <swiper-slide class=\"chat\">\n <div class=\"slide-content\">\n <lib-matcher-statuses\n *ngIf=\"clientMatch.prospectData\"\n [status]=\"clientMatch.prospectData.status\"\n [adsTemplate]=\"config?.chatTabAdsTemplate\"\n [inputValue]=\"config.chatInputValue\"\n [messages]=\"clientMatch.prospectData?.messages || []\"\n [includeTime]=\"config?.includeTime\"\n [includeGifMessage]=\"config?.includeGifMessage\"\n (getMessages)=\"getMessages.emit()\"\n [maxLength]=\"config?.maxLength\"\n [responseTime]=\"clientMatch.prospectData.prospectResponseTime\"\n (sendMessage)=\"addMessageEmit($event, clientMatch?.prospectData?.prospectId, clientMatch?.matchRequest)\"\n [hideStatuses]=\"config.hideStatuses\"\n [prospectJoinDate]=\"clientMatch.prospectData.prospectJoinDate\"\n ></lib-matcher-statuses>\n </div>\n </swiper-slide>\n }\n }\n }\n }\n </ng-container>\n </lib-dashboard-swipeable-tabs>\n\n <ng-template #empty>\n <lib-section-separator></lib-section-separator>\n <div class=\"messsage f-lg f-gilroy-regular\">{{ emptyMessage }}</div>\n </ng-template>\n</div>\n", styles: [":host{--match-percentage-font-size: 1.5em;--container-sides-shadow-width: 15px;--match-percentage-value-height: 3em;position:relative}.messsage{margin-bottom:40px}.padding-20{padding:20px!important}.client-home{height:100%}swiper-slide{display:flex;overflow:hidden;position:relative;align-items:center;min-height:120px}swiper-slide.chat.swiper-slide-next,swiper-slide.chat.swiper-slide-prev{opacity:.5}swiper-slide.chat.swiper-slide-next:before,swiper-slide.chat.swiper-slide-prev:before{content:\"\";position:absolute;top:0;left:0;width:100%;height:100%;background:gray;opacity:.4;border-radius:10px}lib-client-match-overview{cursor:pointer}lib-client-match-overview:not(.lib-client-match-overview-expand){--lib-circle-progress-height: 65%;--lib-circle-progress-width: 65%;--primary-profile-height: 7em;--primary-profile-width: 7em;margin:auto 6px}lib-client-match-overview.lib-client-match-overview-expand{--primary-profile-height: 11em;--primary-profile-width: 11em;--secondary-profile-height: 3em;--secondary-profile-width: 3em}.slide-content{height:auto;width:100%;position:relative;display:block;overflow:visible;padding:0 5px}.slide-content:not(.without-shadow){border-radius:10px;box-shadow:5.70371px 5.70371px 11.40741px #00000052 inset,-3.42222px -3.42222px 4.56296px #ffffff1a inset}.slide-content:has(lib-chat){padding:0}.slide-content lib-chat{--max-width-container: 100%}.slide-content .status-list{position:absolute;top:.9em;left:.5em;display:flex;flex-direction:column;gap:.32em}lib-client-match-overview{--secondary-profile-margin: 0 0 0 -5px}@media (min-width: 350px){.left-side{left:0!important}}@media (max-width: 768px){swiper-slide{min-height:80px}}@media (max-width: 768px){swiper-slide{min-height:80px}lib-client-match-overview{--secondary-profile-margin: 0 0 0 -5px}.trait-visual-container{display:flex;justify-content:center;align-items:center;width:100%;height:100%;min-height:240px}.trait-visual-container tv-trait-visual{width:100%;height:100%;max-width:270px;max-height:240px}}\n"] }]
3963
3832
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { config: [{
3964
3833
  type: Input
3965
3834
  }], activeIndexChange: [{
@@ -3976,68 +3845,91 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImpo
3976
3845
  type: Output
3977
3846
  }] } });
3978
3847
 
3979
- const innerProgressPurpleColors = {
3980
- primary: 'rgb(209, 8, 209)',
3981
- secondary: 'rgb(255, 46, 192)',
3982
- tertiary: 'rgb(255, 46, 164)',
3983
- };
3984
-
3985
- const progressWhiteColors = {
3986
- primary: 'rgb(255, 255, 255)',
3987
- secondary: 'rgb(215, 215, 215)',
3988
- tertiary: 'rgb(214, 214, 214)',
3989
- gradientPrimary: 'rgb(255, 255, 255)',
3990
- gradientSecondary: 'rgb(231, 231, 231)',
3991
- incomplete: 'rgb(214, 214, 214)',
3992
- complete: 'rgb(255, 255, 255)',
3993
- };
3994
-
3995
- const mainswiperDefaultOptions = {
3996
- spaceBetween: 10,
3997
- slidesPerView: 1,
3998
- centeredSlides: true,
3999
- loop: false,
4000
- autoplay: {
4001
- delay: 3000,
4002
- disableOnInteraction: false,
4003
- },
4004
- pagination: {
4005
- el: '.swiper-pagination',
4006
- clickable: true,
4007
- },
4008
- navigation: {
4009
- nextEl: '.swiper-button-next',
4010
- prevEl: '.swiper-button-prev',
4011
- },
4012
- };
4013
-
4014
- const thumbsSwiperDefaultOptions = {
4015
- spaceBetween: 10,
4016
- slidesPerView: 4,
4017
- freeMode: true,
4018
- watchSlidesProgress: true,
4019
- breakpoints: {
4020
- 320: {
4021
- slidesPerView: 2,
4022
- spaceBetween: 10,
4023
- },
4024
- 640: {
4025
- slidesPerView: 3,
4026
- spaceBetween: 10,
4027
- },
4028
- 768: {
4029
- slidesPerView: 4,
4030
- spaceBetween: 10,
4031
- },
4032
- },
4033
- };
4034
-
4035
- var ClientDashboardTabs;
4036
- (function (ClientDashboardTabs) {
4037
- ClientDashboardTabs[ClientDashboardTabs["ChatScheduler"] = 0] = "ChatScheduler";
4038
- ClientDashboardTabs[ClientDashboardTabs["ChatCompatibility"] = 1] = "ChatCompatibility";
4039
- ClientDashboardTabs[ClientDashboardTabs["ChatHandoff"] = 2] = "ChatHandoff";
4040
- })(ClientDashboardTabs || (ClientDashboardTabs = {}));
3848
+ class LibHandoffPanelComponent {
3849
+ constructor(cdr) {
3850
+ this.cdr = cdr;
3851
+ this.config = {
3852
+ version: HandoffPanelVersion.STANDARD,
3853
+ messages$: of([]),
3854
+ scheduleSlots: [],
3855
+ datePrepInfo: {
3856
+ title: 'Date Prep Handoff info',
3857
+ items: [],
3858
+ },
3859
+ default: false,
3860
+ activeTabIndex: 0,
3861
+ };
3862
+ this.addMessage = new EventEmitter();
3863
+ this.scheduleSlotToggle = new EventEmitter();
3864
+ this.HandoffPanelVersion = HandoffPanelVersion;
3865
+ this.activeTabIndex = 0;
3866
+ this.messages$ = of([]);
3867
+ this.scheduleSlots = [];
3868
+ this.slotControls = new Map();
3869
+ this.datePrepInfo = {
3870
+ title: 'Date Prep Handoff info',
3871
+ items: [],
3872
+ };
3873
+ }
3874
+ ngOnInit() {
3875
+ this.activeTabIndex = this.config.activeTabIndex ?? 0;
3876
+ this.messages$ = this.config.messages$ ?? of([]);
3877
+ this.scheduleSlots = this.config.scheduleSlots ?? [];
3878
+ this.datePrepInfo = this.config.datePrepInfo ?? {
3879
+ title: 'Date Prep Handoff info',
3880
+ items: [],
3881
+ };
3882
+ this.initializeSlotControls();
3883
+ this.cdr.detectChanges();
3884
+ }
3885
+ initializeSlotControls() {
3886
+ this.slotControls.clear();
3887
+ this.scheduleSlots.forEach((slot) => {
3888
+ const control = new FormControl(slot.selected);
3889
+ control.valueChanges.subscribe((value) => {
3890
+ slot.selected = value;
3891
+ this.scheduleSlotToggle.emit(slot);
3892
+ this.cdr.detectChanges();
3893
+ });
3894
+ this.slotControls.set(slot.id, control);
3895
+ });
3896
+ }
3897
+ onTabChange(index) {
3898
+ this.activeTabIndex = index;
3899
+ this.cdr.detectChanges();
3900
+ }
3901
+ getSlotControl(slot) {
3902
+ let control = this.slotControls.get(slot.id);
3903
+ if (!control) {
3904
+ control = new FormControl(slot.selected);
3905
+ control.valueChanges.subscribe((value) => {
3906
+ slot.selected = value;
3907
+ this.scheduleSlotToggle.emit(slot);
3908
+ this.cdr.detectChanges();
3909
+ });
3910
+ this.slotControls.set(slot.id, control);
3911
+ }
3912
+ return control;
3913
+ }
3914
+ onMessageAdd(message) {
3915
+ this.addMessage.emit(message);
3916
+ }
3917
+ getVersionClass() {
3918
+ return `handoff-panel--${this.config.version || HandoffPanelVersion.STANDARD}`;
3919
+ }
3920
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: LibHandoffPanelComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
3921
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.14", type: LibHandoffPanelComponent, isStandalone: true, selector: "lib-handoff-panel", inputs: { config: "config" }, outputs: { addMessage: "addMessage", scheduleSlotToggle: "scheduleSlotToggle" }, ngImport: i0, template: "<div class=\"handoff-panel\" [ngClass]=\"getVersionClass()\">\n <div class=\"handoff-panel__tabs\">\n <button class=\"handoff-panel__tab\" [ngClass]=\"{ 'handoff-panel__tab--active': activeTabIndex === 0 }\" (click)=\"onTabChange(0)\">Chat Handoff</button>\n <button class=\"handoff-panel__tab\" [ngClass]=\"{ 'handoff-panel__tab--active': activeTabIndex === 1 }\" (click)=\"onTabChange(1)\">Schedule</button>\n <button class=\"handoff-panel__tab\" [ngClass]=\"{ 'handoff-panel__tab--active': activeTabIndex === 2 }\" (click)=\"onTabChange(2)\">Date Prep</button>\n </div>\n\n <div class=\"handoff-panel__content\">\n <!-- Chat Handoff Tab -->\n @if (activeTabIndex === 0) {\n <div class=\"handoff-panel__chat\">\n <lib-chat [default]=\"config.default\" [messages$]=\"messages$\" (addMessage)=\"onMessageAdd($event)\"></lib-chat>\n </div>\n }\n\n <!-- Schedule Tab -->\n @if (activeTabIndex === 1) {\n <div class=\"handoff-panel__schedule\">\n @if (scheduleSlots && scheduleSlots.length > 0) {\n <div class=\"schedule-list\">\n @for (slot of scheduleSlots; track slot.id) {\n <div class=\"schedule-item\">\n <div class=\"schedule-item__info\">\n @if (slot.profileImage) {\n <img class=\"schedule-item__avatar\" [src]=\"slot.profileImage\" alt=\"Profile\" />\n }\n <div class=\"schedule-item__details\">\n <div class=\"schedule-item__time\">{{ slot.time }} - {{ slot.duration }}</div>\n @if (slot.description) {\n <div class=\"schedule-item__description\">{{ slot.description }}</div>\n }\n </div>\n </div>\n <lib-toggle [formControl]=\"getSlotControl(slot)\"></lib-toggle>\n </div>\n }\n </div>\n } @else {\n <div class=\"handoff-panel__empty\">\n <p>No schedule slots available</p>\n </div>\n }\n </div>\n }\n\n <!-- Date Prep Tab -->\n @if (activeTabIndex === 2) {\n <div class=\"handoff-panel__date-prep\">\n <div class=\"date-prep-info\">\n <h3 class=\"date-prep-info__title\">{{ datePrepInfo.title }}</h3>\n @if (datePrepInfo.items && datePrepInfo.items.length > 0) {\n <ul class=\"date-prep-info__list\">\n @for (item of datePrepInfo.items; track $index) {\n <li class=\"date-prep-info__item\">{{ item }}</li>\n }\n </ul>\n } @else {\n <div class=\"handoff-panel__empty\">\n <p>No date prep information available</p>\n </div>\n }\n </div>\n </div>\n }\n </div>\n</div>\n", styles: ["@charset \"UTF-8\";.handoff-panel{display:flex;flex-direction:column;height:100%;background-color:var(--ion-background-color);color:#666}.handoff-panel__tabs{display:flex;border-bottom:1px solid #dfe0e3;background-color:#464a4c}.handoff-panel__tab{flex:1;padding:12px 16px;background:transparent;border:none;border-bottom:2px solid transparent;color:#f4f6f7;font-size:14px;font-weight:500;cursor:pointer;transition:all .3s ease}.handoff-panel__tab:hover{color:#a6a6a6;background-color:#ffffff0d}.handoff-panel__tab--active{color:#666;border-bottom-color:#45899b;background-color:#ffffff05}.handoff-panel__content{flex:1;overflow-y:auto;padding:16px}.handoff-panel__chat,.handoff-panel__schedule,.handoff-panel__date-prep{height:100%}.handoff-panel__empty{display:flex;align-items:center;justify-content:center;height:200px;color:#f4f6f7;font-size:14px}.handoff-panel--standard .handoff-panel__tab--active{border-bottom-color:#45899b}.handoff-panel--pro .handoff-panel__tab--active{border-bottom-color:#9c27b0}.handoff-panel--super .handoff-panel__tab--active{border-bottom-color:#d4863d}.schedule-list{display:flex;flex-direction:column;gap:12px}.schedule-item{display:flex;align-items:center;justify-content:space-between;padding:12px;background-color:#464a4c;border-radius:8px;border:1px solid #dfe0e3;transition:all .3s ease}.schedule-item:hover{background-color:#464a4c;border-color:#ccc}.schedule-item__info{display:flex;align-items:center;gap:12px;flex:1}.schedule-item__avatar{width:40px;height:40px;border-radius:50%;object-fit:cover}.schedule-item__details{display:flex;flex-direction:column;gap:4px}.schedule-item__time{font-size:14px;font-weight:500;color:#666}.schedule-item__description{font-size:12px;color:#f4f6f7}.date-prep-info__title{font-size:18px;font-weight:600;color:#666;margin-bottom:16px}.date-prep-info__list{list-style:none;padding:0;margin:0}.date-prep-info__item{padding:8px 0 8px 20px;position:relative;color:#a6a6a6;font-size:14px;line-height:1.5}.date-prep-info__item:before{content:\"\\2022\";position:absolute;left:0;color:#45899b;font-size:18px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "ngmodule", type: LibChatComponentModule }, { kind: "component", type: ChatComponent, selector: "lib-chat", inputs: ["default", "responseTime", "inputValue", "emojiPickerConfig", "includeGifMessage", "includeTime", "dateMessages", "maxLength", "enableGifPicker", "prospectJoinDate", "disabled"], outputs: ["sendMessage", "getMessages"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: ButtonsModule }, { kind: "ngmodule", type: FormFieldModule }, { kind: "ngmodule", type: InputFieldModule }, { kind: "ngmodule", type: ToggleModule }, { kind: "component", type: i2.ToggleComponent, selector: "lib-toggle", inputs: ["disabled", "toggleState", "variant", "left", "right", "thumbImg", "multipleOptions"], outputs: ["toggleStateChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
3922
+ }
3923
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: LibHandoffPanelComponent, decorators: [{
3924
+ type: Component,
3925
+ args: [{ selector: 'lib-handoff-panel', imports: [CommonModule, TranslateModule, LibChatComponentModule, FormsModule, ReactiveFormsModule, ButtonsModule, FormFieldModule, InputFieldModule, ToggleModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"handoff-panel\" [ngClass]=\"getVersionClass()\">\n <div class=\"handoff-panel__tabs\">\n <button class=\"handoff-panel__tab\" [ngClass]=\"{ 'handoff-panel__tab--active': activeTabIndex === 0 }\" (click)=\"onTabChange(0)\">Chat Handoff</button>\n <button class=\"handoff-panel__tab\" [ngClass]=\"{ 'handoff-panel__tab--active': activeTabIndex === 1 }\" (click)=\"onTabChange(1)\">Schedule</button>\n <button class=\"handoff-panel__tab\" [ngClass]=\"{ 'handoff-panel__tab--active': activeTabIndex === 2 }\" (click)=\"onTabChange(2)\">Date Prep</button>\n </div>\n\n <div class=\"handoff-panel__content\">\n <!-- Chat Handoff Tab -->\n @if (activeTabIndex === 0) {\n <div class=\"handoff-panel__chat\">\n <lib-chat [default]=\"config.default\" [messages$]=\"messages$\" (addMessage)=\"onMessageAdd($event)\"></lib-chat>\n </div>\n }\n\n <!-- Schedule Tab -->\n @if (activeTabIndex === 1) {\n <div class=\"handoff-panel__schedule\">\n @if (scheduleSlots && scheduleSlots.length > 0) {\n <div class=\"schedule-list\">\n @for (slot of scheduleSlots; track slot.id) {\n <div class=\"schedule-item\">\n <div class=\"schedule-item__info\">\n @if (slot.profileImage) {\n <img class=\"schedule-item__avatar\" [src]=\"slot.profileImage\" alt=\"Profile\" />\n }\n <div class=\"schedule-item__details\">\n <div class=\"schedule-item__time\">{{ slot.time }} - {{ slot.duration }}</div>\n @if (slot.description) {\n <div class=\"schedule-item__description\">{{ slot.description }}</div>\n }\n </div>\n </div>\n <lib-toggle [formControl]=\"getSlotControl(slot)\"></lib-toggle>\n </div>\n }\n </div>\n } @else {\n <div class=\"handoff-panel__empty\">\n <p>No schedule slots available</p>\n </div>\n }\n </div>\n }\n\n <!-- Date Prep Tab -->\n @if (activeTabIndex === 2) {\n <div class=\"handoff-panel__date-prep\">\n <div class=\"date-prep-info\">\n <h3 class=\"date-prep-info__title\">{{ datePrepInfo.title }}</h3>\n @if (datePrepInfo.items && datePrepInfo.items.length > 0) {\n <ul class=\"date-prep-info__list\">\n @for (item of datePrepInfo.items; track $index) {\n <li class=\"date-prep-info__item\">{{ item }}</li>\n }\n </ul>\n } @else {\n <div class=\"handoff-panel__empty\">\n <p>No date prep information available</p>\n </div>\n }\n </div>\n </div>\n }\n </div>\n</div>\n", styles: ["@charset \"UTF-8\";.handoff-panel{display:flex;flex-direction:column;height:100%;background-color:var(--ion-background-color);color:#666}.handoff-panel__tabs{display:flex;border-bottom:1px solid #dfe0e3;background-color:#464a4c}.handoff-panel__tab{flex:1;padding:12px 16px;background:transparent;border:none;border-bottom:2px solid transparent;color:#f4f6f7;font-size:14px;font-weight:500;cursor:pointer;transition:all .3s ease}.handoff-panel__tab:hover{color:#a6a6a6;background-color:#ffffff0d}.handoff-panel__tab--active{color:#666;border-bottom-color:#45899b;background-color:#ffffff05}.handoff-panel__content{flex:1;overflow-y:auto;padding:16px}.handoff-panel__chat,.handoff-panel__schedule,.handoff-panel__date-prep{height:100%}.handoff-panel__empty{display:flex;align-items:center;justify-content:center;height:200px;color:#f4f6f7;font-size:14px}.handoff-panel--standard .handoff-panel__tab--active{border-bottom-color:#45899b}.handoff-panel--pro .handoff-panel__tab--active{border-bottom-color:#9c27b0}.handoff-panel--super .handoff-panel__tab--active{border-bottom-color:#d4863d}.schedule-list{display:flex;flex-direction:column;gap:12px}.schedule-item{display:flex;align-items:center;justify-content:space-between;padding:12px;background-color:#464a4c;border-radius:8px;border:1px solid #dfe0e3;transition:all .3s ease}.schedule-item:hover{background-color:#464a4c;border-color:#ccc}.schedule-item__info{display:flex;align-items:center;gap:12px;flex:1}.schedule-item__avatar{width:40px;height:40px;border-radius:50%;object-fit:cover}.schedule-item__details{display:flex;flex-direction:column;gap:4px}.schedule-item__time{font-size:14px;font-weight:500;color:#666}.schedule-item__description{font-size:12px;color:#f4f6f7}.date-prep-info__title{font-size:18px;font-weight:600;color:#666;margin-bottom:16px}.date-prep-info__list{list-style:none;padding:0;margin:0}.date-prep-info__item{padding:8px 0 8px 20px;position:relative;color:#a6a6a6;font-size:14px;line-height:1.5}.date-prep-info__item:before{content:\"\\2022\";position:absolute;left:0;color:#45899b;font-size:18px}\n"] }]
3926
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { config: [{
3927
+ type: Input
3928
+ }], addMessage: [{
3929
+ type: Output
3930
+ }], scheduleSlotToggle: [{
3931
+ type: Output
3932
+ }] } });
4041
3933
 
4042
3934
  const defaultSpiderConfig = {
4043
3935
  w: 200,
@@ -4129,6 +4021,211 @@ const defaultClientDashboardConfig = {
4129
4021
  alertStatus: {},
4130
4022
  };
4131
4023
 
4024
+ class LibVisualManagerModalComponent {
4025
+ get selectedItems() {
4026
+ return this.preferences.filter((p) => p.isSelected);
4027
+ }
4028
+ get deselectedItems() {
4029
+ return this.preferences.filter((p) => !p.isSelected);
4030
+ }
4031
+ constructor(changeDetectorRef, popupModalService, modalData) {
4032
+ this.changeDetectorRef = changeDetectorRef;
4033
+ this.popupModalService = popupModalService;
4034
+ this.modalData = modalData;
4035
+ this.event = new EventEmitter();
4036
+ this.componentData = null;
4037
+ this.preferences = [];
4038
+ this.originalPreferences = [];
4039
+ this.preferenceControls = new Map();
4040
+ if (modalData) {
4041
+ this.componentData = modalData;
4042
+ }
4043
+ }
4044
+ ngOnInit() {
4045
+ if (!this.componentData) {
4046
+ this.componentData = {
4047
+ data: this.data || { preferences: [] },
4048
+ };
4049
+ }
4050
+ // Create a deep copy for working state
4051
+ this.preferences = JSON.parse(JSON.stringify(this.componentData.data.preferences || []));
4052
+ // Keep original for reset
4053
+ this.originalPreferences = JSON.parse(JSON.stringify(this.componentData.data.preferences || []));
4054
+ // Create FormControls for each preference name
4055
+ this.preferences.forEach((preference) => {
4056
+ this.preferenceControls.set(preference.id, new FormControl(preference.name));
4057
+ });
4058
+ }
4059
+ ngAfterViewInit() {
4060
+ if (this.childModalElementRef) {
4061
+ this.popupModalService.setChildModalElementRef(this.childModalElementRef);
4062
+ }
4063
+ }
4064
+ togglePreference(preference, event) {
4065
+ if (event) {
4066
+ event.preventDefault();
4067
+ event.stopPropagation();
4068
+ }
4069
+ const index = this.preferences.findIndex((p) => p.id === preference.id);
4070
+ if (index !== -1) {
4071
+ const wasSelected = this.preferences[index].isSelected;
4072
+ this.preferences[index].isSelected = !wasSelected;
4073
+ // Force change detection to update the view
4074
+ this.changeDetectorRef.detectChanges();
4075
+ const eventValue = this.preferences[index].isSelected ? VisualManagerModalEventValue.AddPreference : VisualManagerModalEventValue.RemovePreference;
4076
+ // Emit event but don't close the modal - user can continue toggling items
4077
+ if (this.data) {
4078
+ this.event.emit({
4079
+ type: VisualManagerModalEventTypes.Click,
4080
+ value: eventValue,
4081
+ data: { preferenceId: preference.id, preferences: this.preferences },
4082
+ });
4083
+ }
4084
+ }
4085
+ }
4086
+ apply() {
4087
+ if (this.data) {
4088
+ this.event.emit({
4089
+ type: VisualManagerModalEventTypes.Click,
4090
+ value: VisualManagerModalEventValue.Apply,
4091
+ data: { preferences: this.preferences },
4092
+ });
4093
+ }
4094
+ else {
4095
+ this.popupModalService.hide({
4096
+ type: VisualManagerModalEventTypes.Click,
4097
+ value: VisualManagerModalEventValue.Apply,
4098
+ data: { preferences: this.preferences },
4099
+ });
4100
+ }
4101
+ }
4102
+ reset() {
4103
+ // Reset to original state
4104
+ this.preferences = JSON.parse(JSON.stringify(this.originalPreferences));
4105
+ // Reset FormControls
4106
+ this.preferences.forEach((preference) => {
4107
+ const control = this.preferenceControls.get(preference.id);
4108
+ if (control) {
4109
+ control.setValue(preference.name);
4110
+ }
4111
+ else {
4112
+ this.preferenceControls.set(preference.id, new FormControl(preference.name));
4113
+ }
4114
+ });
4115
+ this.changeDetectorRef.detectChanges();
4116
+ if (this.data) {
4117
+ this.event.emit({
4118
+ type: VisualManagerModalEventTypes.Click,
4119
+ value: VisualManagerModalEventValue.Reset,
4120
+ data: { preferences: this.preferences },
4121
+ });
4122
+ }
4123
+ else {
4124
+ this.popupModalService.hide({
4125
+ type: VisualManagerModalEventTypes.Click,
4126
+ value: VisualManagerModalEventValue.Reset,
4127
+ data: { preferences: this.preferences },
4128
+ });
4129
+ }
4130
+ }
4131
+ close() {
4132
+ if (this.data) {
4133
+ this.event.emit({
4134
+ type: VisualManagerModalEventTypes.Close,
4135
+ value: VisualManagerModalEventValue.Close,
4136
+ });
4137
+ }
4138
+ else {
4139
+ this.popupModalService.hide({
4140
+ type: VisualManagerModalEventTypes.Close,
4141
+ value: VisualManagerModalEventValue.Close,
4142
+ });
4143
+ }
4144
+ }
4145
+ onPreferenceNameChange(preference, newName) {
4146
+ const index = this.preferences.findIndex((p) => p.id === preference.id);
4147
+ if (index !== -1) {
4148
+ this.preferences[index].name = newName || '';
4149
+ const control = this.preferenceControls.get(preference.id);
4150
+ if (control && control.value !== newName) {
4151
+ control.setValue(newName || '', { emitEvent: false });
4152
+ }
4153
+ this.changeDetectorRef.detectChanges();
4154
+ }
4155
+ }
4156
+ getPreferenceControl(preferenceId) {
4157
+ return this.preferenceControls.get(preferenceId) || new FormControl('');
4158
+ }
4159
+ onDragStart(event, preference, isSelected) {
4160
+ if (event.dataTransfer) {
4161
+ event.dataTransfer.effectAllowed = 'move';
4162
+ event.dataTransfer.setData('text/plain', JSON.stringify({ id: preference.id, isSelected }));
4163
+ }
4164
+ if (event.target) {
4165
+ event.target.style.opacity = '0.5';
4166
+ }
4167
+ }
4168
+ onDragEnd(event) {
4169
+ if (event.target) {
4170
+ event.target.style.opacity = '1';
4171
+ }
4172
+ }
4173
+ onDragOver(event) {
4174
+ event.preventDefault();
4175
+ if (event.dataTransfer) {
4176
+ event.dataTransfer.dropEffect = 'move';
4177
+ }
4178
+ }
4179
+ onDrop(event, targetPreference, isSelected) {
4180
+ event.preventDefault();
4181
+ event.stopPropagation();
4182
+ if (!event.dataTransfer) {
4183
+ return;
4184
+ }
4185
+ const data = event.dataTransfer.getData('text/plain');
4186
+ if (!data) {
4187
+ return;
4188
+ }
4189
+ try {
4190
+ const { id: draggedId, isSelected: draggedIsSelected } = JSON.parse(data);
4191
+ // Only allow reordering within the same section (selected or deselected)
4192
+ if (draggedIsSelected !== isSelected) {
4193
+ return;
4194
+ }
4195
+ const draggedIndex = this.preferences.findIndex((p) => p.id === draggedId);
4196
+ const targetIndex = this.preferences.findIndex((p) => p.id === targetPreference.id);
4197
+ if (draggedIndex === -1 || targetIndex === -1 || draggedIndex === targetIndex) {
4198
+ return;
4199
+ }
4200
+ // Reorder the items
4201
+ const [draggedItem] = this.preferences.splice(draggedIndex, 1);
4202
+ this.preferences.splice(targetIndex, 0, draggedItem);
4203
+ this.changeDetectorRef.detectChanges();
4204
+ }
4205
+ catch (error) {
4206
+ console.error('Error handling drop:', error);
4207
+ }
4208
+ }
4209
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: LibVisualManagerModalComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i2.PopupModalService }, { token: MODAL_DATA, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
4210
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.14", type: LibVisualManagerModalComponent, isStandalone: true, selector: "lib-visual-manager-modal", inputs: { data: "data" }, outputs: { event: "event" }, providers: [LibModalComponent], viewQueries: [{ propertyName: "childModalElementRef", first: true, predicate: ["childModalElementRef"], descendants: true }], ngImport: i0, template: "<div class=\"visual-manager-modal\" #childModalElementRef>\n <header class=\"visual-manager-modal__header\">\n <div class=\"visual-manager-modal__header-left\">\n <img class=\"visual-manager-modal__filter-icon\" src=\"assets/icons/filter-icon.svg\" alt=\"Filter icon\" />\n <h2 class=\"visual-manager-modal__title\">{{ 'VISUAL_MANAGER_MODAL.TITLE' | translate }}</h2>\n </div>\n <button class=\"visual-manager-modal__close-button\" (click)=\"close()\">\n <img class=\"visual-manager-modal__close-icon\" src=\"assets/icons/close-icon.svg\" alt=\"Close\" />\n </button>\n </header>\n\n <div class=\"visual-manager-modal__content\">\n <!-- Selected Items Section -->\n @if (selectedItems.length > 0) {\n <div class=\"visual-manager-modal__section\">\n <ol class=\"visual-manager-modal__list visual-manager-modal__list--ordered\">\n @for (preference of selectedItems; track preference.id; let i = $index) {\n <li class=\"visual-manager-modal__item\" (dragover)=\"onDragOver($event)\" (drop)=\"onDrop($event, preference, true)\">\n <span class=\"visual-manager-modal__item-number\">{{ i + 1 }}</span>\n <div class=\"visual-manager-modal__input-wrapper\">\n <lib-input-field\n class=\"visual-manager-modal__item-name\"\n [formControl]=\"getPreferenceControl(preference.id)\"\n (valueChange)=\"onPreferenceNameChange(preference, $event)\"\n ></lib-input-field>\n <button class=\"visual-manager-modal__action-button1\"></button>\n <button class=\"visual-manager-modal__action-button\" (click)=\"togglePreference(preference, $event)\">\n <img class=\"visual-manager-modal__action-icon\" src=\"assets/icons/close-icon.svg\" alt=\"Remove\" />\n </button>\n </div>\n <img\n class=\"visual-manager-modal__drag-handle\"\n src=\"assets/icons/drag-handle.svg\"\n alt=\"Drag handle\"\n draggable=\"true\"\n (dragstart)=\"onDragStart($event, preference, true)\"\n (dragend)=\"onDragEnd($event)\"\n />\n </li>\n }\n </ol>\n </div>\n }\n\n <!-- Separator -->\n @if (selectedItems.length > 0 && deselectedItems.length > 0) {\n <div class=\"visual-manager-modal__separator\"></div>\n }\n\n <!-- Deselected Items Section -->\n @if (deselectedItems.length > 0) {\n <div class=\"visual-manager-modal__section\">\n <ul class=\"visual-manager-modal__list\">\n @for (preference of deselectedItems; track preference.id) {\n <li class=\"visual-manager-modal__item\" (dragover)=\"onDragOver($event)\" (drop)=\"onDrop($event, preference, false)\">\n <div class=\"visual-manager-modal__input-wrapper\">\n <lib-input-field\n class=\"visual-manager-modal__item-name\"\n [formControl]=\"getPreferenceControl(preference.id)\"\n (valueChange)=\"onPreferenceNameChange(preference, $event)\"\n ></lib-input-field>\n <button class=\"visual-manager-modal__action-button1\"></button>\n <button class=\"visual-manager-modal__action-button\" (click)=\"togglePreference(preference, $event)\">\n <img class=\"visual-manager-modal__action-icon\" src=\"assets/icons/plus.svg\" alt=\"Add\" />\n </button>\n </div>\n <img\n class=\"visual-manager-modal__drag-handle\"\n src=\"assets/icons/drag-handle.svg\"\n alt=\"Drag handle\"\n draggable=\"true\"\n (dragstart)=\"onDragStart($event, preference, false)\"\n (dragend)=\"onDragEnd($event)\"\n />\n </li>\n }\n </ul>\n </div>\n }\n </div>\n\n <footer class=\"visual-manager-modal__footer\">\n <lib-secondary-btn (click)=\"reset()\">\n {{ 'VISUAL_MANAGER_MODAL.RESET' | translate }}\n </lib-secondary-btn>\n <lib-primary-btn (click)=\"apply()\">\n {{ 'VISUAL_MANAGER_MODAL.APPLY' | translate }}\n </lib-primary-btn>\n </footer>\n</div>\n", styles: [":host{font-size:clamp(0px,3.2dvw,15px)}:host *{box-sizing:border-box}.visual-manager-modal{-webkit-backdrop-filter:blur(.625em);backdrop-filter:blur(.625em);background:linear-gradient(180deg,#323133,#1f1e20);color:#fff;padding:1.5em 2em;width:28.125em;margin:0 auto;border-radius:1.5625em;font-family:Gilroy;box-shadow:.5em .5em 1em #00000080,-.5em -.5em 1em #ffffff0d;position:relative;display:flex;flex-direction:column}.visual-manager-modal__header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:1.5em;padding-bottom:1em;border-bottom:1px solid rgba(255,255,255,.1);gap:.75em}.visual-manager-modal__header-left{display:flex;flex-direction:column;align-items:center;gap:.5em;flex:1}.visual-manager-modal__filter-icon{width:3em;height:3em;cursor:pointer;flex-shrink:0}.visual-manager-modal__title{font-size:1.25em;font-weight:500;font-family:Gilroy;margin:0;color:#fff}.visual-manager-modal__close-button{background:transparent;border:none;cursor:pointer;padding:.25em;display:flex;align-items:center;justify-content:center;border-radius:50%;transition:background .2s}.visual-manager-modal__close-button:hover{background:#ffffff1a}.visual-manager-modal__close-icon{width:2em;height:2em;filter:brightness(0) saturate(100%) invert(39%) sepia(0%) saturate(0%) hue-rotate(0deg) brightness(98%) contrast(105%)}.visual-manager-modal__content{margin-bottom:1.5em;max-height:50vh;overflow-y:auto;flex:1;display:flex;flex-direction:column;gap:1em}.visual-manager-modal__section{display:flex;flex-direction:column;gap:.75em}.visual-manager-modal__section-label{font-size:.9em;font-weight:500;color:#4a9eff;margin-bottom:.25em}.visual-manager-modal__separator{height:1px;background:#ffffff1a;margin:.5em 0}.visual-manager-modal__list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:.75em}.visual-manager-modal__list--ordered{list-style:none}.visual-manager-modal__item{display:flex;align-items:center;gap:.5em;width:100%}.visual-manager-modal__item-number{display:flex;align-items:center;justify-content:center;min-width:1.5em;height:1.5em;font-size:.9em;font-weight:500;color:#ffffffb3;flex-shrink:0}.visual-manager-modal__input-wrapper{position:relative;flex:1;min-width:0}.visual-manager-modal__item-name{width:100%}.visual-manager-modal__item-name ::ng-deep .content-wrapper{position:relative}.visual-manager-modal__item-name ::ng-deep .input-field,.visual-manager-modal__item-name ::ng-deep .input-field-readonly{padding-right:2.5em}.visual-manager-modal__action-button{position:absolute;right:.4em;top:50%;transform:translateY(-50%);background:linear-gradient(174.9deg,#595859cf -26.99%,#29252dcf 22.7% 100.94%);border:none;cursor:pointer;padding:0;display:flex;align-items:center;justify-content:center;z-index:10;transition:all .2s;width:3em;height:3em;border-radius:50%;pointer-events:auto;-webkit-backdrop-filter:blur(.5326657891px);backdrop-filter:blur(.5326657891px);box-shadow:7.24px 6.58px 17.77px 1.65px #121212a6,0 0 2.45px #0000004d}.visual-manager-modal__action-button:active{opacity:.9;box-shadow:inset 2px 2px 4px #0006,inset -2px -2px 4px #ffffff14}.visual-manager-modal__action-button1{position:absolute;right:.4em;top:50%;transform:translateY(-50%);background:linear-gradient(174.9deg,#69686acf 28.4%,#29252dcf 92.06% 100.94%);border:none;cursor:pointer;padding:0;display:flex;align-items:center;justify-content:center;z-index:10;transition:all .2s;width:3em;height:3em;border-radius:50%;pointer-events:auto;-webkit-backdrop-filter:blur(.5326657891px);backdrop-filter:blur(.5326657891px);box-shadow:0 2.56px 2.56px .82px #0000006e,0 0 10.65px 5.33px #4242429c}.visual-manager-modal__action-icon{width:1em;height:1em;display:block}.visual-manager-modal__drag-handle{width:1em;height:1em;cursor:grab;flex-shrink:0;opacity:.6;-webkit-user-select:none;user-select:none}.visual-manager-modal__drag-handle:active{cursor:grabbing}.visual-manager-modal__item.dragging{opacity:.5}.visual-manager-modal__footer{display:flex;justify-content:space-between;gap:1em;padding-top:1em;border-top:1px solid rgba(255,255,255,.1);margin-top:auto}.visual-manager-modal__footer lib-secondary-btn,.visual-manager-modal__footer lib-primary-btn{flex:1}.visual-manager-modal__content::-webkit-scrollbar{width:.5em}.visual-manager-modal__content::-webkit-scrollbar-track{background:#0003;border-radius:.25em}.visual-manager-modal__content::-webkit-scrollbar-thumb{background:#fff3;border-radius:.25em}.visual-manager-modal__content::-webkit-scrollbar-thumb:hover{background:#ffffff4d}@media (max-width: 768px){:host{font-size:calc(clamp(0px,3.2dvw,15px)*.8)}.visual-manager-modal{width:90%;padding:1.25em 1.5em}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "ngmodule", type: ButtonsModule }, { kind: "component", type: i2.PrimaryBtnComponent, selector: "lib-primary-btn", inputs: ["hoverOutline", "disabled", "type", "form", "label", "showArrowIcon", "disableTextShadow", "loading$"] }, { kind: "component", type: i2.SecondaryBtnComponent, selector: "lib-secondary-btn", inputs: ["hoverOutline", "disabled", "type", "form", "label", "showArrowIcon", "disableTextShadow", "loading$"] }, { kind: "ngmodule", type: InputFieldModule }, { kind: "component", type: i2.InputFieldComponent, selector: "lib-input-field,[lib-input-field]", inputs: ["name", "autocomplete", "label", "placeholder", "type", "readonly", "focus", "enableGoogleAddress", "locationAutocompleteConfig", "defaultLocation", "mask", "prefix", "suffix", "maxLength", "value", "address", "textarea", "resize", "counter", "patterns", "trimWhiteSpace", "disabled"], outputs: ["mapError", "locationChange", "keyDown", "onBlur"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }] }); }
4211
+ }
4212
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: LibVisualManagerModalComponent, decorators: [{
4213
+ type: Component,
4214
+ args: [{ selector: 'lib-visual-manager-modal', standalone: true, imports: [CommonModule, TranslateModule, ButtonsModule, InputFieldModule, ReactiveFormsModule], providers: [LibModalComponent], schemas: [CUSTOM_ELEMENTS_SCHEMA], template: "<div class=\"visual-manager-modal\" #childModalElementRef>\n <header class=\"visual-manager-modal__header\">\n <div class=\"visual-manager-modal__header-left\">\n <img class=\"visual-manager-modal__filter-icon\" src=\"assets/icons/filter-icon.svg\" alt=\"Filter icon\" />\n <h2 class=\"visual-manager-modal__title\">{{ 'VISUAL_MANAGER_MODAL.TITLE' | translate }}</h2>\n </div>\n <button class=\"visual-manager-modal__close-button\" (click)=\"close()\">\n <img class=\"visual-manager-modal__close-icon\" src=\"assets/icons/close-icon.svg\" alt=\"Close\" />\n </button>\n </header>\n\n <div class=\"visual-manager-modal__content\">\n <!-- Selected Items Section -->\n @if (selectedItems.length > 0) {\n <div class=\"visual-manager-modal__section\">\n <ol class=\"visual-manager-modal__list visual-manager-modal__list--ordered\">\n @for (preference of selectedItems; track preference.id; let i = $index) {\n <li class=\"visual-manager-modal__item\" (dragover)=\"onDragOver($event)\" (drop)=\"onDrop($event, preference, true)\">\n <span class=\"visual-manager-modal__item-number\">{{ i + 1 }}</span>\n <div class=\"visual-manager-modal__input-wrapper\">\n <lib-input-field\n class=\"visual-manager-modal__item-name\"\n [formControl]=\"getPreferenceControl(preference.id)\"\n (valueChange)=\"onPreferenceNameChange(preference, $event)\"\n ></lib-input-field>\n <button class=\"visual-manager-modal__action-button1\"></button>\n <button class=\"visual-manager-modal__action-button\" (click)=\"togglePreference(preference, $event)\">\n <img class=\"visual-manager-modal__action-icon\" src=\"assets/icons/close-icon.svg\" alt=\"Remove\" />\n </button>\n </div>\n <img\n class=\"visual-manager-modal__drag-handle\"\n src=\"assets/icons/drag-handle.svg\"\n alt=\"Drag handle\"\n draggable=\"true\"\n (dragstart)=\"onDragStart($event, preference, true)\"\n (dragend)=\"onDragEnd($event)\"\n />\n </li>\n }\n </ol>\n </div>\n }\n\n <!-- Separator -->\n @if (selectedItems.length > 0 && deselectedItems.length > 0) {\n <div class=\"visual-manager-modal__separator\"></div>\n }\n\n <!-- Deselected Items Section -->\n @if (deselectedItems.length > 0) {\n <div class=\"visual-manager-modal__section\">\n <ul class=\"visual-manager-modal__list\">\n @for (preference of deselectedItems; track preference.id) {\n <li class=\"visual-manager-modal__item\" (dragover)=\"onDragOver($event)\" (drop)=\"onDrop($event, preference, false)\">\n <div class=\"visual-manager-modal__input-wrapper\">\n <lib-input-field\n class=\"visual-manager-modal__item-name\"\n [formControl]=\"getPreferenceControl(preference.id)\"\n (valueChange)=\"onPreferenceNameChange(preference, $event)\"\n ></lib-input-field>\n <button class=\"visual-manager-modal__action-button1\"></button>\n <button class=\"visual-manager-modal__action-button\" (click)=\"togglePreference(preference, $event)\">\n <img class=\"visual-manager-modal__action-icon\" src=\"assets/icons/plus.svg\" alt=\"Add\" />\n </button>\n </div>\n <img\n class=\"visual-manager-modal__drag-handle\"\n src=\"assets/icons/drag-handle.svg\"\n alt=\"Drag handle\"\n draggable=\"true\"\n (dragstart)=\"onDragStart($event, preference, false)\"\n (dragend)=\"onDragEnd($event)\"\n />\n </li>\n }\n </ul>\n </div>\n }\n </div>\n\n <footer class=\"visual-manager-modal__footer\">\n <lib-secondary-btn (click)=\"reset()\">\n {{ 'VISUAL_MANAGER_MODAL.RESET' | translate }}\n </lib-secondary-btn>\n <lib-primary-btn (click)=\"apply()\">\n {{ 'VISUAL_MANAGER_MODAL.APPLY' | translate }}\n </lib-primary-btn>\n </footer>\n</div>\n", styles: [":host{font-size:clamp(0px,3.2dvw,15px)}:host *{box-sizing:border-box}.visual-manager-modal{-webkit-backdrop-filter:blur(.625em);backdrop-filter:blur(.625em);background:linear-gradient(180deg,#323133,#1f1e20);color:#fff;padding:1.5em 2em;width:28.125em;margin:0 auto;border-radius:1.5625em;font-family:Gilroy;box-shadow:.5em .5em 1em #00000080,-.5em -.5em 1em #ffffff0d;position:relative;display:flex;flex-direction:column}.visual-manager-modal__header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:1.5em;padding-bottom:1em;border-bottom:1px solid rgba(255,255,255,.1);gap:.75em}.visual-manager-modal__header-left{display:flex;flex-direction:column;align-items:center;gap:.5em;flex:1}.visual-manager-modal__filter-icon{width:3em;height:3em;cursor:pointer;flex-shrink:0}.visual-manager-modal__title{font-size:1.25em;font-weight:500;font-family:Gilroy;margin:0;color:#fff}.visual-manager-modal__close-button{background:transparent;border:none;cursor:pointer;padding:.25em;display:flex;align-items:center;justify-content:center;border-radius:50%;transition:background .2s}.visual-manager-modal__close-button:hover{background:#ffffff1a}.visual-manager-modal__close-icon{width:2em;height:2em;filter:brightness(0) saturate(100%) invert(39%) sepia(0%) saturate(0%) hue-rotate(0deg) brightness(98%) contrast(105%)}.visual-manager-modal__content{margin-bottom:1.5em;max-height:50vh;overflow-y:auto;flex:1;display:flex;flex-direction:column;gap:1em}.visual-manager-modal__section{display:flex;flex-direction:column;gap:.75em}.visual-manager-modal__section-label{font-size:.9em;font-weight:500;color:#4a9eff;margin-bottom:.25em}.visual-manager-modal__separator{height:1px;background:#ffffff1a;margin:.5em 0}.visual-manager-modal__list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:.75em}.visual-manager-modal__list--ordered{list-style:none}.visual-manager-modal__item{display:flex;align-items:center;gap:.5em;width:100%}.visual-manager-modal__item-number{display:flex;align-items:center;justify-content:center;min-width:1.5em;height:1.5em;font-size:.9em;font-weight:500;color:#ffffffb3;flex-shrink:0}.visual-manager-modal__input-wrapper{position:relative;flex:1;min-width:0}.visual-manager-modal__item-name{width:100%}.visual-manager-modal__item-name ::ng-deep .content-wrapper{position:relative}.visual-manager-modal__item-name ::ng-deep .input-field,.visual-manager-modal__item-name ::ng-deep .input-field-readonly{padding-right:2.5em}.visual-manager-modal__action-button{position:absolute;right:.4em;top:50%;transform:translateY(-50%);background:linear-gradient(174.9deg,#595859cf -26.99%,#29252dcf 22.7% 100.94%);border:none;cursor:pointer;padding:0;display:flex;align-items:center;justify-content:center;z-index:10;transition:all .2s;width:3em;height:3em;border-radius:50%;pointer-events:auto;-webkit-backdrop-filter:blur(.5326657891px);backdrop-filter:blur(.5326657891px);box-shadow:7.24px 6.58px 17.77px 1.65px #121212a6,0 0 2.45px #0000004d}.visual-manager-modal__action-button:active{opacity:.9;box-shadow:inset 2px 2px 4px #0006,inset -2px -2px 4px #ffffff14}.visual-manager-modal__action-button1{position:absolute;right:.4em;top:50%;transform:translateY(-50%);background:linear-gradient(174.9deg,#69686acf 28.4%,#29252dcf 92.06% 100.94%);border:none;cursor:pointer;padding:0;display:flex;align-items:center;justify-content:center;z-index:10;transition:all .2s;width:3em;height:3em;border-radius:50%;pointer-events:auto;-webkit-backdrop-filter:blur(.5326657891px);backdrop-filter:blur(.5326657891px);box-shadow:0 2.56px 2.56px .82px #0000006e,0 0 10.65px 5.33px #4242429c}.visual-manager-modal__action-icon{width:1em;height:1em;display:block}.visual-manager-modal__drag-handle{width:1em;height:1em;cursor:grab;flex-shrink:0;opacity:.6;-webkit-user-select:none;user-select:none}.visual-manager-modal__drag-handle:active{cursor:grabbing}.visual-manager-modal__item.dragging{opacity:.5}.visual-manager-modal__footer{display:flex;justify-content:space-between;gap:1em;padding-top:1em;border-top:1px solid rgba(255,255,255,.1);margin-top:auto}.visual-manager-modal__footer lib-secondary-btn,.visual-manager-modal__footer lib-primary-btn{flex:1}.visual-manager-modal__content::-webkit-scrollbar{width:.5em}.visual-manager-modal__content::-webkit-scrollbar-track{background:#0003;border-radius:.25em}.visual-manager-modal__content::-webkit-scrollbar-thumb{background:#fff3;border-radius:.25em}.visual-manager-modal__content::-webkit-scrollbar-thumb:hover{background:#ffffff4d}@media (max-width: 768px){:host{font-size:calc(clamp(0px,3.2dvw,15px)*.8)}.visual-manager-modal{width:90%;padding:1.25em 1.5em}}\n"] }]
4215
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i2.PopupModalService }, { type: undefined, decorators: [{
4216
+ type: Optional
4217
+ }, {
4218
+ type: Inject,
4219
+ args: [MODAL_DATA]
4220
+ }] }], propDecorators: { childModalElementRef: [{
4221
+ type: ViewChild,
4222
+ args: ['childModalElementRef']
4223
+ }], data: [{
4224
+ type: Input
4225
+ }], event: [{
4226
+ type: Output
4227
+ }] } });
4228
+
4132
4229
  class LibClientDashboardComponent {
4133
4230
  constructor(cdr) {
4134
4231
  this.cdr = cdr;
@@ -4282,11 +4379,11 @@ class LibClientDashboardComponent {
4282
4379
  });
4283
4380
  }
4284
4381
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: LibClientDashboardComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
4285
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.14", type: LibClientDashboardComponent, isStandalone: true, selector: "lib-client-dashboard", inputs: { config: "config", agendaAdsData: "agendaAdsData" }, outputs: { addMessage: "addMessage", getMessages: "getMessages", bookEvent: "bookEvent", removeSuggestion: "removeSuggestion", activeIndexChange: "activeIndexChange", handleClosedAlert: "handleClosedAlert", handleAppearPopup: "handleAppearPopup" }, ngImport: i0, template: "<!-- Horizontal Agenda -->\n<div class=\"agenda-handler\" [class.height-zero]=\"isMinimizeVisual\" [class.has-ads]=\"config?.agendaAdsTemplate\">\n <h3 class=\"agenda-title\">\n {{ 'CLIENT_DASHBOARD.TITLES.UPCOMING_DATES' | translate }}\n <span (click)=\"onHandleAppearPopup(alertStatusFields.upcomingDates)\"><img [width]=\"12\" [height]=\"12\" [src]=\"assetPaths.defaultIcon\" [alt]=\"item?.label + ' icon'\" /></span>\n </h3>\n <lib-agenda [events]=\"config?.events\" [adsTemplate]=\"config?.agendaAdsTemplate\" [agendaAdsData]=\"agendaAdsData\"></lib-agenda>\n @if (config.alertStatus.upcomingDates) {\n <div class=\"alert-popup-agenda\" [class.opacity-zero]=\"isMinimizeVisual\">\n <lib-alert-popup\n [title]=\"'CLIENT_DASHBOARD.ALERT_POPUP.UPCOMING_DATES.TITLE' | translate\"\n [description]=\"'CLIENT_DASHBOARD.ALERT_POPUP.UPCOMING_DATES.DESCRIPTION' | translate\"\n (closed)=\"\n onClosedAlert({\n event: $event,\n field: alertStatusFields.upcomingDates,\n })\n \"\n ></lib-alert-popup>\n </div>\n }\n</div>\n<!-- Scheduler - Trait - Spider - Handoff -->\n<div\n (click)=\"onClick($event)\"\n [class.height-zero-activated]=\"isMinimizeVisual\"\n (touchstart)=\"onTouchStart($event)\"\n [class.has-ads]=\"!!config?.agendaAdsTemplate?.elementRef\" class=\"client-home__container\">\n <lib-dashboard-swipeable-tabs\n [activeIndex]=\"config?.activeTabIndex\"\n [thumbsSwiperOptions]=\"dashboardThumbsSwiperOptions\"\n [mainSwiperOptions]=\"mainSwiperOptions\"\n [slideContentMaxHeight]=\"config?.slideContentMaxHeight\"\n [bottomThumbs]=\"false\"\n [generalSwiperHeight]=\"'100%'\"\n [mainSwiperHeight]=\"'calc(100% - 34px)'\"\n [thumbsSwiperHeight]=\"'34px'\"\n [subMainSwiperHeight]=\"'100%'\"\n (activeIndexChange)=\"onActiveTabIndexChange($event)\"\n >\n <ng-container thumb-slides>\n @for (item of items; let i = $index; track item) {\n <swiper-slide class=\"main-tab\">\n <span\n class=\"tab\"\n [class.active]=\"i === config.activeTabIndex\"\n [class.disabled]=\"item?.key === 'CHAT_HANDOFF' && !(config?.clientMatches$ | async)?.[config?.activeIndex]?.showHandoff && !config.default\"\n >\n {{ item?.label | translate }}\n @if (i === config.activeTabIndex) {\n <ng-container>\n <img\n [width]=\"12\"\n [height]=\"12\"\n [src]=\"assetPaths.defaultIcon\"\n [alt]=\"item?.label + ' info icon'\"\n (click)=\"item.onClickInfo()\"\n />\n <img\n [width]=\"12\"\n [height]=\"12\"\n [src]=\"assetPaths.settingsIcon\"\n alt=\"Settings icon\"\n (click)=\"onSettingsClick(); $event.stopPropagation()\"\n style=\"cursor: pointer;\"\n />\n </ng-container>\n }\n </span>\n </swiper-slide>\n }\n </ng-container>\n <ng-container main-slides>\n <swiper-slide class=\"no-swiping-selector swiper__scheduler\">\n <div class=\"swiper__client-home\">\n @if (config.alertStatus.chatMeetupAgenda) {\n <div class=\"alert-popup-client-scheduler\">\n <lib-alert-popup\n [title]=\"'CLIENT_DASHBOARD.ALERT_POPUP.CHAT_MEETUP_AGENDA.TITLE' | translate\"\n [description]=\"'CLIENT_DASHBOARD.ALERT_POPUP.CHAT_MEETUP_AGENDA.DESCRIPTION' | translate\"\n (closed)=\"\n onClosedAlert({\n event: $event,\n field: alertStatusFields.chatMeetupAgenda,\n })\n \"\n ></lib-alert-popup>\n </div>\n }\n <lib-client-home\n [config]=\"{\n schedulerAdsTemplate: config?.schedulerAdsTemplate,\n schedulerTabAdsTemplate: config?.schedulerTabAdsTemplate,\n chatAdsTemplate: config?.chatAdsTemplate,\n chatTabAdsTemplate: config?.chatTabAdsTemplate,\n traitVisualAdsTemplate: config?.traitVisualAdsTemplate,\n activeIndex: config?.activeIndex,\n clientMatches$: config?.clientMatches$,\n schedulers$: config?.schedulers$,\n component: components.ChatScheduler,\n default: config?.default,\n thumbsSwiperOptions: clientHomeThumbsSwiperOptions,\n alertStatus: config.alertStatus,\n bottomThumbs: true,\n showValueProportionLabel: false,\n hideProgressBar: true,\n }\"\n (bookEvent)=\"bookEvent?.emit($event)\"\n (removeSuggestion)=\"removeSuggestion?.emit($event)\"\n (addMessage)=\"handleNewMessage($event)\"\n (getMessages)=\"getMessages.emit($event)\"\n (activeIndexChange)=\"onActiveProspectChange($event)\"\n (handleClosedAlert)=\"onClosedAlert($event)\"\n (handleAppearPopup)=\"onHandleAppearPopup($event)\"\n ></lib-client-home>\n </div>\n </swiper-slide>\n <swiper-slide class=\"no-swiping-selector\">\n <div class=\"swiper__client-home\">\n @if (config.alertStatus.compatibilityProfileTrait) {\n <div class=\"alert-popup-trait-chart\">\n <lib-alert-popup\n [title]=\"'CLIENT_DASHBOARD.ALERT_POPUP.FORCE_GRAPH_COMPATIBILITY.TITLE' | translate\"\n [description]=\"'CLIENT_DASHBOARD.ALERT_POPUP.FORCE_GRAPH_COMPATIBILITY.DESCRIPTION' | translate\"\n (closed)=\"\n onClosedAlert({\n event: $event,\n field: alertStatusFields.compatibilityProfileTrait,\n })\n \"\n ></lib-alert-popup>\n </div>\n }\n <lib-client-home\n [config]=\"{\n schedulerAdsTemplate: config?.schedulerAdsTemplate,\n schedulerTabAdsTemplate: config?.schedulerTabAdsTemplate,\n chatAdsTemplate: config?.chatAdsTemplate,\n chatTabAdsTemplate: config?.chatTabAdsTemplate,\n traitVisualAdsTemplate: config?.traitVisualAdsTemplate,\n activeIndex: config?.activeChartItem,\n clientMatches$: config?.clientMatches$,\n component: components.ClientMatchTraitChart,\n default: config?.default,\n thumbsSwiperOptions: clientHomeThumbsSwiperOptions,\n polygonColors: config?.polygonColors,\n spiderConfig: config?.spiderConfig,\n alertStatus: config.alertStatus,\n bottomThumbs: true,\n showValueProportionLabel: false,\n hideProgressBar: true,\n }\"\n ></lib-client-home>\n </div>\n </swiper-slide>\n <swiper-slide class=\"no-swiping-selector\">\n <div class=\"swiper__client-home\">\n @if (config.alertStatus.compatibilityProfileSpider) {\n <div class=\"alert-popup-spider-chart\">\n <lib-alert-popup\n [title]=\"'CLIENT_DASHBOARD.ALERT_POPUP.COMPATIBILITY_PROFILE.TITLE' | translate\"\n [description]=\"'CLIENT_DASHBOARD.ALERT_POPUP.COMPATIBILITY_PROFILE.DESCRIPTION' | translate\"\n (closed)=\"\n onClosedAlert({\n event: $event,\n field: alertStatusFields.compatibilityProfileSpider,\n })\n \"\n ></lib-alert-popup>\n </div>\n }\n <div [class.spider-chart___active]=\"isMinimizeVisual\">\n <lib-client-home\n [config]=\"{\n schedulerAdsTemplate: config?.schedulerAdsTemplate,\n schedulerTabAdsTemplate: config?.schedulerTabAdsTemplate,\n chatAdsTemplate: config?.chatAdsTemplate,\n chatTabAdsTemplate: config?.chatTabAdsTemplate,\n traitVisualAdsTemplate: config?.traitVisualAdsTemplate,\n activeIndex: config?.activeChartItem,\n clientMatches$: config?.clientMatches$,\n component: components.ClientMatchSpiderChart,\n default: config?.default,\n spiderConfig: config?.spiderConfig,\n polygonColors: config?.polygonColors,\n alertStatus: config.alertStatus,\n bottomThumbs: true,\n showValueProportionLabel: false,\n hideProgressBar: true,\n }\"\n ></lib-client-home>\n </div>\n </div>\n </swiper-slide>\n @if ((config?.clientMatches$ | async)?.[config?.activeIndex]?.showHandoff || config.default) {\n <swiper-slide class=\"no-swiping-selector\">\n <div class=\"swiper__client-home\">\n @if (config.alertStatus.chatHandoff) {\n <div class=\"alert-popup-chat-handoff\">\n <lib-alert-popup\n [title]=\"'CLIENT_DASHBOARD.ALERT_POPUP.HANDOFF_CHAT.TITLE' | translate\"\n [description]=\"'CLIENT_DASHBOARD.ALERT_POPUP.HANDOFF_CHAT.DESCRIPTION' | translate\"\n (closed)=\"\n onClosedAlert({\n event: $event,\n field: alertStatusFields.chatHandoff,\n })\n \"\n ></lib-alert-popup>\n </div>\n }\n @if (config.alertStatus.chatProgress) {\n <div class=\"alert-popup-chat-progress\">\n <lib-alert-popup\n [title]=\"'CLIENT_DASHBOARD.ALERT_POPUP.CHAT_PROGRESS.TITLE' | translate\"\n [description]=\"'CLIENT_DASHBOARD.ALERT_POPUP.CHAT_PROGRESS.DESCRIPTION' | translate\"\n (closed)=\"\n onClosedAlert({\n event: $event,\n field: alertStatusFields.chatProgress,\n })\n \"\n ></lib-alert-popup>\n </div>\n }\n <lib-client-home\n [config]=\"{\n schedulerAdsTemplate: config?.schedulerAdsTemplate,\n schedulerTabAdsTemplate: config?.schedulerTabAdsTemplate,\n chatAdsTemplate: config?.chatAdsTemplate,\n chatTabAdsTemplate: config?.chatTabAdsTemplate,\n traitVisualAdsTemplate: config?.traitVisualAdsTemplate,\n activeIndex: config?.activeIndex,\n clientMatches$: config?.clientMatches$,\n component: components.ChatHandoff,\n default: config?.default,\n alertStatus: config.alertStatus,\n hideStatuses: true,\n bottomThumbs: true,\n showValueProportionLabel: false,\n hideProgressBar: true,\n }\"\n (addMessage)=\"handleNewMessage($event)\"\n (getMessages)=\"getMessages?.emit($event)\"\n (activeIndexChange)=\"onActiveProspectChange($event)\"\n ></lib-client-home>\n </div>\n </swiper-slide>\n }\n </ng-container>\n </lib-dashboard-swipeable-tabs>\n</div>\n", styles: [":host{--match-percentage-font-size: 1.5em;--container-sides-shadow-width: 15px;--match-percentage-value-height: 3em;position:relative}.agenda-handler{height:133px;overflow:hidden;transition:height .5s ease;position:relative}.agenda-handler.has-ads{height:fit-content}.agenda-handler.height-zero-activated{height:100%!important}.agenda-handler .agenda-title{display:flex;width:100%;padding:0 23.5px;font-size:12px}.agenda-handler .agenda-title span{margin-left:5px}.agenda-handler lib-agenda{position:relative;display:block;width:100%;margin:auto;padding:0 5px}.agenda-handler .alert-popup-agenda{position:absolute;opacity:1;top:40px;right:40px;z-index:999;transition:opacity .3s ease}.client-home__container{height:calc(100% - 133px)}.client-home__container.has-ads{height:calc(100% - 190px)}.client-home__container>lib-swipeable-tabs{height:100%;display:block}.height-zero{height:0px!important}.opacity-zero{opacity:0!important;pointer-events:none}.tab{display:flex;gap:7px;padding:10px 30px;color:#fff9;cursor:pointer}.tab.active{color:#fff}.tab.disabled{opacity:.3;color:#fff9!important;pointer-events:none}.swiper__scheduler{height:100%}.swiper__scheduler lib-client-home{height:100%;display:block}.swiper__client-home{position:relative;width:100%;height:100%}.swiper__client-home .alert-popup-client-scheduler{position:absolute;z-index:999;top:100px;right:40px}.swiper__client-home .alert-popup-chat-handoff{position:absolute;z-index:999;top:40px;right:40px}.swiper__client-home .alert-popup-chat-progress{position:absolute;z-index:999;top:200px;right:40px}.swiper__client-home .alert-popup-trait-chart,.swiper__client-home .alert-popup-spider-chart{position:absolute;z-index:999;top:123px;right:40px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "ngmodule", type: LibChatComponentModule }, { kind: "ngmodule", type: LibAgendaModule }, { kind: "component", type: AgendaComponent, selector: "lib-agenda", inputs: ["adsTemplate", "agendaAdsData", "loading$", "startDate", "endDate", "events", "setAdsData"] }, { kind: "ngmodule", type: PipeModule }, { kind: "component", type: LibClientHomeComponent, selector: "lib-client-home", inputs: ["config"], outputs: ["activeIndexChange", "addMessage", "getMessages", "bookEvent", "removeSuggestion", "handleAppearPopup"] }, { kind: "component", type: LibDashboardSwipeableTabsComponent, selector: "lib-dashboard-swipeable-tabs", inputs: ["thumbsSwiperOptions", "mainSwiperOptions", "activeIndex", "bottomThumbs", "slideContentMaxHeight", "mainSwiperHeight", "subMainSwiperHeight", "thumbsSwiperHeight", "generalSwiperHeight"], outputs: ["activeIndexChange"] }, { kind: "ngmodule", type: SharedModule }, { kind: "component", type: AlertPopupComponent, selector: "lib-alert-popup", inputs: ["title", "description", "timeState", "number"], outputs: ["closed"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
4382
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.14", type: LibClientDashboardComponent, isStandalone: true, selector: "lib-client-dashboard", inputs: { config: "config", agendaAdsData: "agendaAdsData" }, outputs: { addMessage: "addMessage", getMessages: "getMessages", bookEvent: "bookEvent", removeSuggestion: "removeSuggestion", activeIndexChange: "activeIndexChange", handleClosedAlert: "handleClosedAlert", handleAppearPopup: "handleAppearPopup" }, ngImport: i0, template: "<!-- Horizontal Agenda -->\n<div class=\"agenda-handler\" [class.height-zero]=\"isMinimizeVisual\" [class.has-ads]=\"config?.agendaAdsTemplate\">\n <h3 class=\"agenda-title\">\n {{ 'CLIENT_DASHBOARD.TITLES.UPCOMING_DATES' | translate }}\n <span (click)=\"onHandleAppearPopup(alertStatusFields.upcomingDates)\"><img [width]=\"12\" [height]=\"12\" [src]=\"assetPaths.defaultIcon\" [alt]=\"item?.label + ' icon'\" /></span>\n </h3>\n <lib-agenda [events]=\"config?.events\" [adsTemplate]=\"config?.agendaAdsTemplate\" [agendaAdsData]=\"agendaAdsData\"></lib-agenda>\n @if (config.alertStatus.upcomingDates) {\n <div class=\"alert-popup-agenda\" [class.opacity-zero]=\"isMinimizeVisual\">\n <lib-alert-popup\n [title]=\"'CLIENT_DASHBOARD.ALERT_POPUP.UPCOMING_DATES.TITLE' | translate\"\n [description]=\"'CLIENT_DASHBOARD.ALERT_POPUP.UPCOMING_DATES.DESCRIPTION' | translate\"\n (closed)=\"\n onClosedAlert({\n event: $event,\n field: alertStatusFields.upcomingDates,\n })\n \"\n ></lib-alert-popup>\n </div>\n }\n</div>\n<!-- Scheduler - Trait - Spider - Handoff -->\n<div\n (click)=\"onClick($event)\"\n [class.height-zero-activated]=\"isMinimizeVisual\"\n (touchstart)=\"onTouchStart($event)\"\n [class.has-ads]=\"!!config?.agendaAdsTemplate?.elementRef\"\n class=\"client-home__container\"\n>\n <lib-dashboard-swipeable-tabs\n [activeIndex]=\"config?.activeTabIndex\"\n [thumbsSwiperOptions]=\"dashboardThumbsSwiperOptions\"\n [mainSwiperOptions]=\"mainSwiperOptions\"\n [slideContentMaxHeight]=\"config?.slideContentMaxHeight\"\n [bottomThumbs]=\"false\"\n [generalSwiperHeight]=\"'100%'\"\n [mainSwiperHeight]=\"'calc(100% - 34px)'\"\n [thumbsSwiperHeight]=\"'34px'\"\n [subMainSwiperHeight]=\"'100%'\"\n (activeIndexChange)=\"onActiveTabIndexChange($event)\"\n >\n <ng-container thumb-slides>\n @for (item of items; let i = $index; track item) {\n <swiper-slide class=\"main-tab\">\n <span\n class=\"tab\"\n [class.active]=\"i === config.activeTabIndex\"\n [class.disabled]=\"item?.key === 'CHAT_HANDOFF' && !(config?.clientMatches$ | async)?.[config?.activeIndex]?.showHandoff && !config.default\"\n >\n {{ item?.label | translate }}\n @if (i === config.activeTabIndex) {\n <ng-container>\n <img [width]=\"12\" [height]=\"12\" [src]=\"assetPaths.defaultIcon\" [alt]=\"item?.label + ' info icon'\" (click)=\"item.onClickInfo()\" />\n <img [width]=\"12\" [height]=\"12\" [src]=\"assetPaths.settingsIcon\" alt=\"Settings icon\" (click)=\"onSettingsClick(); $event.stopPropagation()\" style=\"cursor: pointer\" />\n </ng-container>\n }\n </span>\n </swiper-slide>\n }\n </ng-container>\n <ng-container main-slides>\n <swiper-slide class=\"no-swiping-selector swiper__scheduler\">\n <div class=\"swiper__client-home\">\n @if (config.alertStatus.chatMeetupAgenda) {\n <div class=\"alert-popup-client-scheduler\">\n <lib-alert-popup\n [title]=\"'CLIENT_DASHBOARD.ALERT_POPUP.CHAT_MEETUP_AGENDA.TITLE' | translate\"\n [description]=\"'CLIENT_DASHBOARD.ALERT_POPUP.CHAT_MEETUP_AGENDA.DESCRIPTION' | translate\"\n (closed)=\"\n onClosedAlert({\n event: $event,\n field: alertStatusFields.chatMeetupAgenda,\n })\n \"\n ></lib-alert-popup>\n </div>\n }\n <lib-client-home\n [config]=\"{\n schedulerAdsTemplate: config?.schedulerAdsTemplate,\n schedulerTabAdsTemplate: config?.schedulerTabAdsTemplate,\n chatAdsTemplate: config?.chatAdsTemplate,\n chatTabAdsTemplate: config?.chatTabAdsTemplate,\n traitVisualAdsTemplate: config?.traitVisualAdsTemplate,\n activeIndex: config?.activeIndex,\n clientMatches$: config?.clientMatches$,\n schedulers$: config?.schedulers$,\n component: components.ChatScheduler,\n default: config?.default,\n thumbsSwiperOptions: clientHomeThumbsSwiperOptions,\n alertStatus: config.alertStatus,\n bottomThumbs: true,\n showValueProportionLabel: false,\n hideProgressBar: true,\n }\"\n (bookEvent)=\"bookEvent?.emit($event)\"\n (removeSuggestion)=\"removeSuggestion?.emit($event)\"\n (addMessage)=\"handleNewMessage($event)\"\n (getMessages)=\"getMessages.emit($event)\"\n (activeIndexChange)=\"onActiveProspectChange($event)\"\n (handleClosedAlert)=\"onClosedAlert($event)\"\n (handleAppearPopup)=\"onHandleAppearPopup($event)\"\n ></lib-client-home>\n </div>\n </swiper-slide>\n <swiper-slide class=\"no-swiping-selector\">\n <div class=\"swiper__client-home\">\n @if (config.alertStatus.compatibilityProfileTrait) {\n <div class=\"alert-popup-trait-chart\">\n <lib-alert-popup\n [title]=\"'CLIENT_DASHBOARD.ALERT_POPUP.FORCE_GRAPH_COMPATIBILITY.TITLE' | translate\"\n [description]=\"'CLIENT_DASHBOARD.ALERT_POPUP.FORCE_GRAPH_COMPATIBILITY.DESCRIPTION' | translate\"\n (closed)=\"\n onClosedAlert({\n event: $event,\n field: alertStatusFields.compatibilityProfileTrait,\n })\n \"\n ></lib-alert-popup>\n </div>\n }\n <lib-client-home\n [config]=\"{\n schedulerAdsTemplate: config?.schedulerAdsTemplate,\n schedulerTabAdsTemplate: config?.schedulerTabAdsTemplate,\n chatAdsTemplate: config?.chatAdsTemplate,\n chatTabAdsTemplate: config?.chatTabAdsTemplate,\n traitVisualAdsTemplate: config?.traitVisualAdsTemplate,\n activeIndex: config?.activeChartItem,\n clientMatches$: config?.clientMatches$,\n component: components.ClientMatchTraitChart,\n default: config?.default,\n thumbsSwiperOptions: clientHomeThumbsSwiperOptions,\n polygonColors: config?.polygonColors,\n spiderConfig: config?.spiderConfig,\n alertStatus: config.alertStatus,\n bottomThumbs: true,\n showValueProportionLabel: false,\n hideProgressBar: true,\n }\"\n ></lib-client-home>\n </div>\n </swiper-slide>\n <swiper-slide class=\"no-swiping-selector\">\n <div class=\"swiper__client-home\">\n @if (config.alertStatus.compatibilityProfileSpider) {\n <div class=\"alert-popup-spider-chart\">\n <lib-alert-popup\n [title]=\"'CLIENT_DASHBOARD.ALERT_POPUP.COMPATIBILITY_PROFILE.TITLE' | translate\"\n [description]=\"'CLIENT_DASHBOARD.ALERT_POPUP.COMPATIBILITY_PROFILE.DESCRIPTION' | translate\"\n (closed)=\"\n onClosedAlert({\n event: $event,\n field: alertStatusFields.compatibilityProfileSpider,\n })\n \"\n ></lib-alert-popup>\n </div>\n }\n <div [class.spider-chart___active]=\"isMinimizeVisual\">\n <lib-client-home\n [config]=\"{\n schedulerAdsTemplate: config?.schedulerAdsTemplate,\n schedulerTabAdsTemplate: config?.schedulerTabAdsTemplate,\n chatAdsTemplate: config?.chatAdsTemplate,\n chatTabAdsTemplate: config?.chatTabAdsTemplate,\n traitVisualAdsTemplate: config?.traitVisualAdsTemplate,\n activeIndex: config?.activeChartItem,\n clientMatches$: config?.clientMatches$,\n component: components.ClientMatchSpiderChart,\n default: config?.default,\n spiderConfig: config?.spiderConfig,\n polygonColors: config?.polygonColors,\n alertStatus: config.alertStatus,\n bottomThumbs: true,\n showValueProportionLabel: false,\n hideProgressBar: true,\n }\"\n ></lib-client-home>\n </div>\n </div>\n </swiper-slide>\n @if ((config?.clientMatches$ | async)?.[config?.activeIndex]?.showHandoff || config.default) {\n <swiper-slide class=\"no-swiping-selector\">\n <div class=\"swiper__client-home\">\n @if (config.alertStatus.chatHandoff) {\n <div class=\"alert-popup-chat-handoff\">\n <lib-alert-popup\n [title]=\"'CLIENT_DASHBOARD.ALERT_POPUP.HANDOFF_CHAT.TITLE' | translate\"\n [description]=\"'CLIENT_DASHBOARD.ALERT_POPUP.HANDOFF_CHAT.DESCRIPTION' | translate\"\n (closed)=\"\n onClosedAlert({\n event: $event,\n field: alertStatusFields.chatHandoff,\n })\n \"\n ></lib-alert-popup>\n </div>\n }\n @if (config.alertStatus.chatProgress) {\n <div class=\"alert-popup-chat-progress\">\n <lib-alert-popup\n [title]=\"'CLIENT_DASHBOARD.ALERT_POPUP.CHAT_PROGRESS.TITLE' | translate\"\n [description]=\"'CLIENT_DASHBOARD.ALERT_POPUP.CHAT_PROGRESS.DESCRIPTION' | translate\"\n (closed)=\"\n onClosedAlert({\n event: $event,\n field: alertStatusFields.chatProgress,\n })\n \"\n ></lib-alert-popup>\n </div>\n }\n <lib-client-home\n [config]=\"{\n schedulerAdsTemplate: config?.schedulerAdsTemplate,\n schedulerTabAdsTemplate: config?.schedulerTabAdsTemplate,\n chatAdsTemplate: config?.chatAdsTemplate,\n chatTabAdsTemplate: config?.chatTabAdsTemplate,\n traitVisualAdsTemplate: config?.traitVisualAdsTemplate,\n activeIndex: config?.activeIndex,\n clientMatches$: config?.clientMatches$,\n component: components.ChatHandoff,\n default: config?.default,\n alertStatus: config.alertStatus,\n hideStatuses: true,\n bottomThumbs: true,\n showValueProportionLabel: false,\n hideProgressBar: true,\n }\"\n (addMessage)=\"handleNewMessage($event)\"\n (getMessages)=\"getMessages?.emit($event)\"\n (activeIndexChange)=\"onActiveProspectChange($event)\"\n ></lib-client-home>\n </div>\n </swiper-slide>\n }\n </ng-container>\n </lib-dashboard-swipeable-tabs>\n</div>\n", styles: [":host{--match-percentage-font-size: 1.5em;--container-sides-shadow-width: 15px;--match-percentage-value-height: 3em;position:relative}.agenda-handler{height:133px;overflow:hidden;transition:height .5s ease;position:relative}.agenda-handler.has-ads{height:fit-content}.agenda-handler.height-zero-activated{height:100%!important}.agenda-handler .agenda-title{display:flex;width:100%;padding:0 23.5px;font-size:12px}.agenda-handler .agenda-title span{margin-left:5px}.agenda-handler lib-agenda{position:relative;display:block;width:100%;margin:auto;padding:0 5px}.agenda-handler .alert-popup-agenda{position:absolute;opacity:1;top:40px;right:40px;z-index:999;transition:opacity .3s ease}.client-home__container{height:calc(100% - 133px)}.client-home__container.has-ads{height:calc(100% - 190px)}.client-home__container>lib-swipeable-tabs{height:100%;display:block}.height-zero{height:0px!important}.opacity-zero{opacity:0!important;pointer-events:none}.tab{display:flex;gap:7px;padding:10px 30px;color:#fff9;cursor:pointer}.tab.active{color:#fff}.tab.disabled{opacity:.3;color:#fff9!important;pointer-events:none}.swiper__scheduler{height:100%}.swiper__scheduler lib-client-home{height:100%;display:block}.swiper__client-home{position:relative;width:100%;height:100%}.swiper__client-home .alert-popup-client-scheduler{position:absolute;z-index:999;top:100px;right:40px}.swiper__client-home .alert-popup-chat-handoff{position:absolute;z-index:999;top:40px;right:40px}.swiper__client-home .alert-popup-chat-progress{position:absolute;z-index:999;top:200px;right:40px}.swiper__client-home .alert-popup-trait-chart,.swiper__client-home .alert-popup-spider-chart{position:absolute;z-index:999;top:123px;right:40px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "ngmodule", type: LibChatComponentModule }, { kind: "ngmodule", type: LibAgendaModule }, { kind: "component", type: AgendaComponent, selector: "lib-agenda", inputs: ["adsTemplate", "agendaAdsData", "loading$", "startDate", "endDate", "events", "setAdsData"] }, { kind: "ngmodule", type: PipeModule }, { kind: "component", type: LibClientHomeComponent, selector: "lib-client-home", inputs: ["config"], outputs: ["activeIndexChange", "addMessage", "getMessages", "bookEvent", "removeSuggestion", "handleAppearPopup"] }, { kind: "component", type: LibDashboardSwipeableTabsComponent, selector: "lib-dashboard-swipeable-tabs", inputs: ["thumbsSwiperOptions", "mainSwiperOptions", "activeIndex", "bottomThumbs", "slideContentMaxHeight", "mainSwiperHeight", "subMainSwiperHeight", "thumbsSwiperHeight", "generalSwiperHeight"], outputs: ["activeIndexChange"] }, { kind: "ngmodule", type: SharedModule }, { kind: "component", type: AlertPopupComponent, selector: "lib-alert-popup", inputs: ["title", "description", "timeState", "number"], outputs: ["closed"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
4286
4383
  }
4287
4384
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: LibClientDashboardComponent, decorators: [{
4288
4385
  type: Component,
4289
- args: [{ selector: 'lib-client-dashboard', imports: [CommonModule, TranslateModule, LibChatComponentModule, LibAgendaModule, PipeModule, LibClientHomeComponent, LibDashboardSwipeableTabsComponent, SharedModule], schemas: [CUSTOM_ELEMENTS_SCHEMA], changeDetection: ChangeDetectionStrategy.OnPush, template: "<!-- Horizontal Agenda -->\n<div class=\"agenda-handler\" [class.height-zero]=\"isMinimizeVisual\" [class.has-ads]=\"config?.agendaAdsTemplate\">\n <h3 class=\"agenda-title\">\n {{ 'CLIENT_DASHBOARD.TITLES.UPCOMING_DATES' | translate }}\n <span (click)=\"onHandleAppearPopup(alertStatusFields.upcomingDates)\"><img [width]=\"12\" [height]=\"12\" [src]=\"assetPaths.defaultIcon\" [alt]=\"item?.label + ' icon'\" /></span>\n </h3>\n <lib-agenda [events]=\"config?.events\" [adsTemplate]=\"config?.agendaAdsTemplate\" [agendaAdsData]=\"agendaAdsData\"></lib-agenda>\n @if (config.alertStatus.upcomingDates) {\n <div class=\"alert-popup-agenda\" [class.opacity-zero]=\"isMinimizeVisual\">\n <lib-alert-popup\n [title]=\"'CLIENT_DASHBOARD.ALERT_POPUP.UPCOMING_DATES.TITLE' | translate\"\n [description]=\"'CLIENT_DASHBOARD.ALERT_POPUP.UPCOMING_DATES.DESCRIPTION' | translate\"\n (closed)=\"\n onClosedAlert({\n event: $event,\n field: alertStatusFields.upcomingDates,\n })\n \"\n ></lib-alert-popup>\n </div>\n }\n</div>\n<!-- Scheduler - Trait - Spider - Handoff -->\n<div\n (click)=\"onClick($event)\"\n [class.height-zero-activated]=\"isMinimizeVisual\"\n (touchstart)=\"onTouchStart($event)\"\n [class.has-ads]=\"!!config?.agendaAdsTemplate?.elementRef\" class=\"client-home__container\">\n <lib-dashboard-swipeable-tabs\n [activeIndex]=\"config?.activeTabIndex\"\n [thumbsSwiperOptions]=\"dashboardThumbsSwiperOptions\"\n [mainSwiperOptions]=\"mainSwiperOptions\"\n [slideContentMaxHeight]=\"config?.slideContentMaxHeight\"\n [bottomThumbs]=\"false\"\n [generalSwiperHeight]=\"'100%'\"\n [mainSwiperHeight]=\"'calc(100% - 34px)'\"\n [thumbsSwiperHeight]=\"'34px'\"\n [subMainSwiperHeight]=\"'100%'\"\n (activeIndexChange)=\"onActiveTabIndexChange($event)\"\n >\n <ng-container thumb-slides>\n @for (item of items; let i = $index; track item) {\n <swiper-slide class=\"main-tab\">\n <span\n class=\"tab\"\n [class.active]=\"i === config.activeTabIndex\"\n [class.disabled]=\"item?.key === 'CHAT_HANDOFF' && !(config?.clientMatches$ | async)?.[config?.activeIndex]?.showHandoff && !config.default\"\n >\n {{ item?.label | translate }}\n @if (i === config.activeTabIndex) {\n <ng-container>\n <img\n [width]=\"12\"\n [height]=\"12\"\n [src]=\"assetPaths.defaultIcon\"\n [alt]=\"item?.label + ' info icon'\"\n (click)=\"item.onClickInfo()\"\n />\n <img\n [width]=\"12\"\n [height]=\"12\"\n [src]=\"assetPaths.settingsIcon\"\n alt=\"Settings icon\"\n (click)=\"onSettingsClick(); $event.stopPropagation()\"\n style=\"cursor: pointer;\"\n />\n </ng-container>\n }\n </span>\n </swiper-slide>\n }\n </ng-container>\n <ng-container main-slides>\n <swiper-slide class=\"no-swiping-selector swiper__scheduler\">\n <div class=\"swiper__client-home\">\n @if (config.alertStatus.chatMeetupAgenda) {\n <div class=\"alert-popup-client-scheduler\">\n <lib-alert-popup\n [title]=\"'CLIENT_DASHBOARD.ALERT_POPUP.CHAT_MEETUP_AGENDA.TITLE' | translate\"\n [description]=\"'CLIENT_DASHBOARD.ALERT_POPUP.CHAT_MEETUP_AGENDA.DESCRIPTION' | translate\"\n (closed)=\"\n onClosedAlert({\n event: $event,\n field: alertStatusFields.chatMeetupAgenda,\n })\n \"\n ></lib-alert-popup>\n </div>\n }\n <lib-client-home\n [config]=\"{\n schedulerAdsTemplate: config?.schedulerAdsTemplate,\n schedulerTabAdsTemplate: config?.schedulerTabAdsTemplate,\n chatAdsTemplate: config?.chatAdsTemplate,\n chatTabAdsTemplate: config?.chatTabAdsTemplate,\n traitVisualAdsTemplate: config?.traitVisualAdsTemplate,\n activeIndex: config?.activeIndex,\n clientMatches$: config?.clientMatches$,\n schedulers$: config?.schedulers$,\n component: components.ChatScheduler,\n default: config?.default,\n thumbsSwiperOptions: clientHomeThumbsSwiperOptions,\n alertStatus: config.alertStatus,\n bottomThumbs: true,\n showValueProportionLabel: false,\n hideProgressBar: true,\n }\"\n (bookEvent)=\"bookEvent?.emit($event)\"\n (removeSuggestion)=\"removeSuggestion?.emit($event)\"\n (addMessage)=\"handleNewMessage($event)\"\n (getMessages)=\"getMessages.emit($event)\"\n (activeIndexChange)=\"onActiveProspectChange($event)\"\n (handleClosedAlert)=\"onClosedAlert($event)\"\n (handleAppearPopup)=\"onHandleAppearPopup($event)\"\n ></lib-client-home>\n </div>\n </swiper-slide>\n <swiper-slide class=\"no-swiping-selector\">\n <div class=\"swiper__client-home\">\n @if (config.alertStatus.compatibilityProfileTrait) {\n <div class=\"alert-popup-trait-chart\">\n <lib-alert-popup\n [title]=\"'CLIENT_DASHBOARD.ALERT_POPUP.FORCE_GRAPH_COMPATIBILITY.TITLE' | translate\"\n [description]=\"'CLIENT_DASHBOARD.ALERT_POPUP.FORCE_GRAPH_COMPATIBILITY.DESCRIPTION' | translate\"\n (closed)=\"\n onClosedAlert({\n event: $event,\n field: alertStatusFields.compatibilityProfileTrait,\n })\n \"\n ></lib-alert-popup>\n </div>\n }\n <lib-client-home\n [config]=\"{\n schedulerAdsTemplate: config?.schedulerAdsTemplate,\n schedulerTabAdsTemplate: config?.schedulerTabAdsTemplate,\n chatAdsTemplate: config?.chatAdsTemplate,\n chatTabAdsTemplate: config?.chatTabAdsTemplate,\n traitVisualAdsTemplate: config?.traitVisualAdsTemplate,\n activeIndex: config?.activeChartItem,\n clientMatches$: config?.clientMatches$,\n component: components.ClientMatchTraitChart,\n default: config?.default,\n thumbsSwiperOptions: clientHomeThumbsSwiperOptions,\n polygonColors: config?.polygonColors,\n spiderConfig: config?.spiderConfig,\n alertStatus: config.alertStatus,\n bottomThumbs: true,\n showValueProportionLabel: false,\n hideProgressBar: true,\n }\"\n ></lib-client-home>\n </div>\n </swiper-slide>\n <swiper-slide class=\"no-swiping-selector\">\n <div class=\"swiper__client-home\">\n @if (config.alertStatus.compatibilityProfileSpider) {\n <div class=\"alert-popup-spider-chart\">\n <lib-alert-popup\n [title]=\"'CLIENT_DASHBOARD.ALERT_POPUP.COMPATIBILITY_PROFILE.TITLE' | translate\"\n [description]=\"'CLIENT_DASHBOARD.ALERT_POPUP.COMPATIBILITY_PROFILE.DESCRIPTION' | translate\"\n (closed)=\"\n onClosedAlert({\n event: $event,\n field: alertStatusFields.compatibilityProfileSpider,\n })\n \"\n ></lib-alert-popup>\n </div>\n }\n <div [class.spider-chart___active]=\"isMinimizeVisual\">\n <lib-client-home\n [config]=\"{\n schedulerAdsTemplate: config?.schedulerAdsTemplate,\n schedulerTabAdsTemplate: config?.schedulerTabAdsTemplate,\n chatAdsTemplate: config?.chatAdsTemplate,\n chatTabAdsTemplate: config?.chatTabAdsTemplate,\n traitVisualAdsTemplate: config?.traitVisualAdsTemplate,\n activeIndex: config?.activeChartItem,\n clientMatches$: config?.clientMatches$,\n component: components.ClientMatchSpiderChart,\n default: config?.default,\n spiderConfig: config?.spiderConfig,\n polygonColors: config?.polygonColors,\n alertStatus: config.alertStatus,\n bottomThumbs: true,\n showValueProportionLabel: false,\n hideProgressBar: true,\n }\"\n ></lib-client-home>\n </div>\n </div>\n </swiper-slide>\n @if ((config?.clientMatches$ | async)?.[config?.activeIndex]?.showHandoff || config.default) {\n <swiper-slide class=\"no-swiping-selector\">\n <div class=\"swiper__client-home\">\n @if (config.alertStatus.chatHandoff) {\n <div class=\"alert-popup-chat-handoff\">\n <lib-alert-popup\n [title]=\"'CLIENT_DASHBOARD.ALERT_POPUP.HANDOFF_CHAT.TITLE' | translate\"\n [description]=\"'CLIENT_DASHBOARD.ALERT_POPUP.HANDOFF_CHAT.DESCRIPTION' | translate\"\n (closed)=\"\n onClosedAlert({\n event: $event,\n field: alertStatusFields.chatHandoff,\n })\n \"\n ></lib-alert-popup>\n </div>\n }\n @if (config.alertStatus.chatProgress) {\n <div class=\"alert-popup-chat-progress\">\n <lib-alert-popup\n [title]=\"'CLIENT_DASHBOARD.ALERT_POPUP.CHAT_PROGRESS.TITLE' | translate\"\n [description]=\"'CLIENT_DASHBOARD.ALERT_POPUP.CHAT_PROGRESS.DESCRIPTION' | translate\"\n (closed)=\"\n onClosedAlert({\n event: $event,\n field: alertStatusFields.chatProgress,\n })\n \"\n ></lib-alert-popup>\n </div>\n }\n <lib-client-home\n [config]=\"{\n schedulerAdsTemplate: config?.schedulerAdsTemplate,\n schedulerTabAdsTemplate: config?.schedulerTabAdsTemplate,\n chatAdsTemplate: config?.chatAdsTemplate,\n chatTabAdsTemplate: config?.chatTabAdsTemplate,\n traitVisualAdsTemplate: config?.traitVisualAdsTemplate,\n activeIndex: config?.activeIndex,\n clientMatches$: config?.clientMatches$,\n component: components.ChatHandoff,\n default: config?.default,\n alertStatus: config.alertStatus,\n hideStatuses: true,\n bottomThumbs: true,\n showValueProportionLabel: false,\n hideProgressBar: true,\n }\"\n (addMessage)=\"handleNewMessage($event)\"\n (getMessages)=\"getMessages?.emit($event)\"\n (activeIndexChange)=\"onActiveProspectChange($event)\"\n ></lib-client-home>\n </div>\n </swiper-slide>\n }\n </ng-container>\n </lib-dashboard-swipeable-tabs>\n</div>\n", styles: [":host{--match-percentage-font-size: 1.5em;--container-sides-shadow-width: 15px;--match-percentage-value-height: 3em;position:relative}.agenda-handler{height:133px;overflow:hidden;transition:height .5s ease;position:relative}.agenda-handler.has-ads{height:fit-content}.agenda-handler.height-zero-activated{height:100%!important}.agenda-handler .agenda-title{display:flex;width:100%;padding:0 23.5px;font-size:12px}.agenda-handler .agenda-title span{margin-left:5px}.agenda-handler lib-agenda{position:relative;display:block;width:100%;margin:auto;padding:0 5px}.agenda-handler .alert-popup-agenda{position:absolute;opacity:1;top:40px;right:40px;z-index:999;transition:opacity .3s ease}.client-home__container{height:calc(100% - 133px)}.client-home__container.has-ads{height:calc(100% - 190px)}.client-home__container>lib-swipeable-tabs{height:100%;display:block}.height-zero{height:0px!important}.opacity-zero{opacity:0!important;pointer-events:none}.tab{display:flex;gap:7px;padding:10px 30px;color:#fff9;cursor:pointer}.tab.active{color:#fff}.tab.disabled{opacity:.3;color:#fff9!important;pointer-events:none}.swiper__scheduler{height:100%}.swiper__scheduler lib-client-home{height:100%;display:block}.swiper__client-home{position:relative;width:100%;height:100%}.swiper__client-home .alert-popup-client-scheduler{position:absolute;z-index:999;top:100px;right:40px}.swiper__client-home .alert-popup-chat-handoff{position:absolute;z-index:999;top:40px;right:40px}.swiper__client-home .alert-popup-chat-progress{position:absolute;z-index:999;top:200px;right:40px}.swiper__client-home .alert-popup-trait-chart,.swiper__client-home .alert-popup-spider-chart{position:absolute;z-index:999;top:123px;right:40px}\n"] }]
4386
+ args: [{ selector: 'lib-client-dashboard', imports: [CommonModule, TranslateModule, LibChatComponentModule, LibAgendaModule, PipeModule, LibClientHomeComponent, LibDashboardSwipeableTabsComponent, SharedModule], schemas: [CUSTOM_ELEMENTS_SCHEMA], changeDetection: ChangeDetectionStrategy.OnPush, template: "<!-- Horizontal Agenda -->\n<div class=\"agenda-handler\" [class.height-zero]=\"isMinimizeVisual\" [class.has-ads]=\"config?.agendaAdsTemplate\">\n <h3 class=\"agenda-title\">\n {{ 'CLIENT_DASHBOARD.TITLES.UPCOMING_DATES' | translate }}\n <span (click)=\"onHandleAppearPopup(alertStatusFields.upcomingDates)\"><img [width]=\"12\" [height]=\"12\" [src]=\"assetPaths.defaultIcon\" [alt]=\"item?.label + ' icon'\" /></span>\n </h3>\n <lib-agenda [events]=\"config?.events\" [adsTemplate]=\"config?.agendaAdsTemplate\" [agendaAdsData]=\"agendaAdsData\"></lib-agenda>\n @if (config.alertStatus.upcomingDates) {\n <div class=\"alert-popup-agenda\" [class.opacity-zero]=\"isMinimizeVisual\">\n <lib-alert-popup\n [title]=\"'CLIENT_DASHBOARD.ALERT_POPUP.UPCOMING_DATES.TITLE' | translate\"\n [description]=\"'CLIENT_DASHBOARD.ALERT_POPUP.UPCOMING_DATES.DESCRIPTION' | translate\"\n (closed)=\"\n onClosedAlert({\n event: $event,\n field: alertStatusFields.upcomingDates,\n })\n \"\n ></lib-alert-popup>\n </div>\n }\n</div>\n<!-- Scheduler - Trait - Spider - Handoff -->\n<div\n (click)=\"onClick($event)\"\n [class.height-zero-activated]=\"isMinimizeVisual\"\n (touchstart)=\"onTouchStart($event)\"\n [class.has-ads]=\"!!config?.agendaAdsTemplate?.elementRef\"\n class=\"client-home__container\"\n>\n <lib-dashboard-swipeable-tabs\n [activeIndex]=\"config?.activeTabIndex\"\n [thumbsSwiperOptions]=\"dashboardThumbsSwiperOptions\"\n [mainSwiperOptions]=\"mainSwiperOptions\"\n [slideContentMaxHeight]=\"config?.slideContentMaxHeight\"\n [bottomThumbs]=\"false\"\n [generalSwiperHeight]=\"'100%'\"\n [mainSwiperHeight]=\"'calc(100% - 34px)'\"\n [thumbsSwiperHeight]=\"'34px'\"\n [subMainSwiperHeight]=\"'100%'\"\n (activeIndexChange)=\"onActiveTabIndexChange($event)\"\n >\n <ng-container thumb-slides>\n @for (item of items; let i = $index; track item) {\n <swiper-slide class=\"main-tab\">\n <span\n class=\"tab\"\n [class.active]=\"i === config.activeTabIndex\"\n [class.disabled]=\"item?.key === 'CHAT_HANDOFF' && !(config?.clientMatches$ | async)?.[config?.activeIndex]?.showHandoff && !config.default\"\n >\n {{ item?.label | translate }}\n @if (i === config.activeTabIndex) {\n <ng-container>\n <img [width]=\"12\" [height]=\"12\" [src]=\"assetPaths.defaultIcon\" [alt]=\"item?.label + ' info icon'\" (click)=\"item.onClickInfo()\" />\n <img [width]=\"12\" [height]=\"12\" [src]=\"assetPaths.settingsIcon\" alt=\"Settings icon\" (click)=\"onSettingsClick(); $event.stopPropagation()\" style=\"cursor: pointer\" />\n </ng-container>\n }\n </span>\n </swiper-slide>\n }\n </ng-container>\n <ng-container main-slides>\n <swiper-slide class=\"no-swiping-selector swiper__scheduler\">\n <div class=\"swiper__client-home\">\n @if (config.alertStatus.chatMeetupAgenda) {\n <div class=\"alert-popup-client-scheduler\">\n <lib-alert-popup\n [title]=\"'CLIENT_DASHBOARD.ALERT_POPUP.CHAT_MEETUP_AGENDA.TITLE' | translate\"\n [description]=\"'CLIENT_DASHBOARD.ALERT_POPUP.CHAT_MEETUP_AGENDA.DESCRIPTION' | translate\"\n (closed)=\"\n onClosedAlert({\n event: $event,\n field: alertStatusFields.chatMeetupAgenda,\n })\n \"\n ></lib-alert-popup>\n </div>\n }\n <lib-client-home\n [config]=\"{\n schedulerAdsTemplate: config?.schedulerAdsTemplate,\n schedulerTabAdsTemplate: config?.schedulerTabAdsTemplate,\n chatAdsTemplate: config?.chatAdsTemplate,\n chatTabAdsTemplate: config?.chatTabAdsTemplate,\n traitVisualAdsTemplate: config?.traitVisualAdsTemplate,\n activeIndex: config?.activeIndex,\n clientMatches$: config?.clientMatches$,\n schedulers$: config?.schedulers$,\n component: components.ChatScheduler,\n default: config?.default,\n thumbsSwiperOptions: clientHomeThumbsSwiperOptions,\n alertStatus: config.alertStatus,\n bottomThumbs: true,\n showValueProportionLabel: false,\n hideProgressBar: true,\n }\"\n (bookEvent)=\"bookEvent?.emit($event)\"\n (removeSuggestion)=\"removeSuggestion?.emit($event)\"\n (addMessage)=\"handleNewMessage($event)\"\n (getMessages)=\"getMessages.emit($event)\"\n (activeIndexChange)=\"onActiveProspectChange($event)\"\n (handleClosedAlert)=\"onClosedAlert($event)\"\n (handleAppearPopup)=\"onHandleAppearPopup($event)\"\n ></lib-client-home>\n </div>\n </swiper-slide>\n <swiper-slide class=\"no-swiping-selector\">\n <div class=\"swiper__client-home\">\n @if (config.alertStatus.compatibilityProfileTrait) {\n <div class=\"alert-popup-trait-chart\">\n <lib-alert-popup\n [title]=\"'CLIENT_DASHBOARD.ALERT_POPUP.FORCE_GRAPH_COMPATIBILITY.TITLE' | translate\"\n [description]=\"'CLIENT_DASHBOARD.ALERT_POPUP.FORCE_GRAPH_COMPATIBILITY.DESCRIPTION' | translate\"\n (closed)=\"\n onClosedAlert({\n event: $event,\n field: alertStatusFields.compatibilityProfileTrait,\n })\n \"\n ></lib-alert-popup>\n </div>\n }\n <lib-client-home\n [config]=\"{\n schedulerAdsTemplate: config?.schedulerAdsTemplate,\n schedulerTabAdsTemplate: config?.schedulerTabAdsTemplate,\n chatAdsTemplate: config?.chatAdsTemplate,\n chatTabAdsTemplate: config?.chatTabAdsTemplate,\n traitVisualAdsTemplate: config?.traitVisualAdsTemplate,\n activeIndex: config?.activeChartItem,\n clientMatches$: config?.clientMatches$,\n component: components.ClientMatchTraitChart,\n default: config?.default,\n thumbsSwiperOptions: clientHomeThumbsSwiperOptions,\n polygonColors: config?.polygonColors,\n spiderConfig: config?.spiderConfig,\n alertStatus: config.alertStatus,\n bottomThumbs: true,\n showValueProportionLabel: false,\n hideProgressBar: true,\n }\"\n ></lib-client-home>\n </div>\n </swiper-slide>\n <swiper-slide class=\"no-swiping-selector\">\n <div class=\"swiper__client-home\">\n @if (config.alertStatus.compatibilityProfileSpider) {\n <div class=\"alert-popup-spider-chart\">\n <lib-alert-popup\n [title]=\"'CLIENT_DASHBOARD.ALERT_POPUP.COMPATIBILITY_PROFILE.TITLE' | translate\"\n [description]=\"'CLIENT_DASHBOARD.ALERT_POPUP.COMPATIBILITY_PROFILE.DESCRIPTION' | translate\"\n (closed)=\"\n onClosedAlert({\n event: $event,\n field: alertStatusFields.compatibilityProfileSpider,\n })\n \"\n ></lib-alert-popup>\n </div>\n }\n <div [class.spider-chart___active]=\"isMinimizeVisual\">\n <lib-client-home\n [config]=\"{\n schedulerAdsTemplate: config?.schedulerAdsTemplate,\n schedulerTabAdsTemplate: config?.schedulerTabAdsTemplate,\n chatAdsTemplate: config?.chatAdsTemplate,\n chatTabAdsTemplate: config?.chatTabAdsTemplate,\n traitVisualAdsTemplate: config?.traitVisualAdsTemplate,\n activeIndex: config?.activeChartItem,\n clientMatches$: config?.clientMatches$,\n component: components.ClientMatchSpiderChart,\n default: config?.default,\n spiderConfig: config?.spiderConfig,\n polygonColors: config?.polygonColors,\n alertStatus: config.alertStatus,\n bottomThumbs: true,\n showValueProportionLabel: false,\n hideProgressBar: true,\n }\"\n ></lib-client-home>\n </div>\n </div>\n </swiper-slide>\n @if ((config?.clientMatches$ | async)?.[config?.activeIndex]?.showHandoff || config.default) {\n <swiper-slide class=\"no-swiping-selector\">\n <div class=\"swiper__client-home\">\n @if (config.alertStatus.chatHandoff) {\n <div class=\"alert-popup-chat-handoff\">\n <lib-alert-popup\n [title]=\"'CLIENT_DASHBOARD.ALERT_POPUP.HANDOFF_CHAT.TITLE' | translate\"\n [description]=\"'CLIENT_DASHBOARD.ALERT_POPUP.HANDOFF_CHAT.DESCRIPTION' | translate\"\n (closed)=\"\n onClosedAlert({\n event: $event,\n field: alertStatusFields.chatHandoff,\n })\n \"\n ></lib-alert-popup>\n </div>\n }\n @if (config.alertStatus.chatProgress) {\n <div class=\"alert-popup-chat-progress\">\n <lib-alert-popup\n [title]=\"'CLIENT_DASHBOARD.ALERT_POPUP.CHAT_PROGRESS.TITLE' | translate\"\n [description]=\"'CLIENT_DASHBOARD.ALERT_POPUP.CHAT_PROGRESS.DESCRIPTION' | translate\"\n (closed)=\"\n onClosedAlert({\n event: $event,\n field: alertStatusFields.chatProgress,\n })\n \"\n ></lib-alert-popup>\n </div>\n }\n <lib-client-home\n [config]=\"{\n schedulerAdsTemplate: config?.schedulerAdsTemplate,\n schedulerTabAdsTemplate: config?.schedulerTabAdsTemplate,\n chatAdsTemplate: config?.chatAdsTemplate,\n chatTabAdsTemplate: config?.chatTabAdsTemplate,\n traitVisualAdsTemplate: config?.traitVisualAdsTemplate,\n activeIndex: config?.activeIndex,\n clientMatches$: config?.clientMatches$,\n component: components.ChatHandoff,\n default: config?.default,\n alertStatus: config.alertStatus,\n hideStatuses: true,\n bottomThumbs: true,\n showValueProportionLabel: false,\n hideProgressBar: true,\n }\"\n (addMessage)=\"handleNewMessage($event)\"\n (getMessages)=\"getMessages?.emit($event)\"\n (activeIndexChange)=\"onActiveProspectChange($event)\"\n ></lib-client-home>\n </div>\n </swiper-slide>\n }\n </ng-container>\n </lib-dashboard-swipeable-tabs>\n</div>\n", styles: [":host{--match-percentage-font-size: 1.5em;--container-sides-shadow-width: 15px;--match-percentage-value-height: 3em;position:relative}.agenda-handler{height:133px;overflow:hidden;transition:height .5s ease;position:relative}.agenda-handler.has-ads{height:fit-content}.agenda-handler.height-zero-activated{height:100%!important}.agenda-handler .agenda-title{display:flex;width:100%;padding:0 23.5px;font-size:12px}.agenda-handler .agenda-title span{margin-left:5px}.agenda-handler lib-agenda{position:relative;display:block;width:100%;margin:auto;padding:0 5px}.agenda-handler .alert-popup-agenda{position:absolute;opacity:1;top:40px;right:40px;z-index:999;transition:opacity .3s ease}.client-home__container{height:calc(100% - 133px)}.client-home__container.has-ads{height:calc(100% - 190px)}.client-home__container>lib-swipeable-tabs{height:100%;display:block}.height-zero{height:0px!important}.opacity-zero{opacity:0!important;pointer-events:none}.tab{display:flex;gap:7px;padding:10px 30px;color:#fff9;cursor:pointer}.tab.active{color:#fff}.tab.disabled{opacity:.3;color:#fff9!important;pointer-events:none}.swiper__scheduler{height:100%}.swiper__scheduler lib-client-home{height:100%;display:block}.swiper__client-home{position:relative;width:100%;height:100%}.swiper__client-home .alert-popup-client-scheduler{position:absolute;z-index:999;top:100px;right:40px}.swiper__client-home .alert-popup-chat-handoff{position:absolute;z-index:999;top:40px;right:40px}.swiper__client-home .alert-popup-chat-progress{position:absolute;z-index:999;top:200px;right:40px}.swiper__client-home .alert-popup-trait-chart,.swiper__client-home .alert-popup-spider-chart{position:absolute;z-index:999;top:123px;right:40px}\n"] }]
4290
4387
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { config: [{
4291
4388
  type: Input
4292
4389
  }], agendaAdsData: [{
@@ -4307,6 +4404,25 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImpo
4307
4404
  type: Output
4308
4405
  }] } });
4309
4406
 
4407
+ class GetProfileWithProgressPipe {
4408
+ transform(clientMatch) {
4409
+ return {
4410
+ name: clientMatch?.primary?.name,
4411
+ photo: clientMatch?.primary?.src,
4412
+ progress: 10, // TODO: get progress from clientMatch
4413
+ };
4414
+ }
4415
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: GetProfileWithProgressPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
4416
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.3.14", ngImport: i0, type: GetProfileWithProgressPipe, isStandalone: true, name: "getProfileWithProgress" }); }
4417
+ }
4418
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: GetProfileWithProgressPipe, decorators: [{
4419
+ type: Pipe,
4420
+ args: [{
4421
+ name: 'getProfileWithProgress',
4422
+ standalone: true,
4423
+ }]
4424
+ }] });
4425
+
4310
4426
  class UpdateLLMPreferencePipe {
4311
4427
  transform(values, llmPreferenceLoading) {
4312
4428
  return values.map((option) => {
@@ -4375,24 +4491,48 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImpo
4375
4491
  }]
4376
4492
  }] });
4377
4493
 
4378
- class GetProfileWithProgressPipe {
4379
- transform(clientMatch) {
4380
- return {
4381
- name: clientMatch?.primary?.name,
4382
- photo: clientMatch?.primary?.src,
4383
- progress: 10, // TODO: get progress from clientMatch
4494
+ class LibProfileComparisonComponent {
4495
+ constructor(cdr) {
4496
+ this.cdr = cdr;
4497
+ this.config = {
4498
+ data: {
4499
+ leftProfile: {
4500
+ name: '',
4501
+ attributes: [],
4502
+ },
4503
+ rightProfile: {
4504
+ name: '',
4505
+ attributes: [],
4506
+ },
4507
+ },
4508
+ default: false,
4509
+ };
4510
+ this.comparisonData = {
4511
+ leftProfile: {
4512
+ name: '',
4513
+ attributes: [],
4514
+ },
4515
+ rightProfile: {
4516
+ name: '',
4517
+ attributes: [],
4518
+ },
4384
4519
  };
4385
4520
  }
4386
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: GetProfileWithProgressPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
4387
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.3.14", ngImport: i0, type: GetProfileWithProgressPipe, isStandalone: true, name: "getProfileWithProgress" }); }
4521
+ ngOnInit() {
4522
+ if (this.config.data) {
4523
+ this.comparisonData = this.config.data;
4524
+ }
4525
+ this.cdr.detectChanges();
4526
+ }
4527
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: LibProfileComparisonComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
4528
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.14", type: LibProfileComparisonComponent, isStandalone: true, selector: "lib-profile-comparison", inputs: { config: "config" }, ngImport: i0, template: "<div class=\"profile-comparison\">\n <div class=\"profile-comparison__container\">\n <!-- Left Profile -->\n <div class=\"profile-comparison__card profile-comparison__card--left\">\n <h3 class=\"profile-comparison__name\">{{ comparisonData.leftProfile.name }}</h3>\n <div class=\"profile-comparison__attributes\">\n @for (attr of comparisonData.leftProfile.attributes; track $index) {\n <div class=\"profile-comparison__attribute\" [ngClass]=\"{ 'profile-comparison__attribute--match': attr.match }\">\n <span class=\"profile-comparison__attribute-label\">{{ attr.label }}</span>\n <span class=\"profile-comparison__attribute-value\">{{ attr.value }}</span>\n </div>\n }\n </div>\n </div>\n\n <!-- Right Profile -->\n <div class=\"profile-comparison__card profile-comparison__card--right\">\n <h3 class=\"profile-comparison__name\">{{ comparisonData.rightProfile.name }}</h3>\n <div class=\"profile-comparison__attributes\">\n @for (attr of comparisonData.rightProfile.attributes; track $index) {\n <div class=\"profile-comparison__attribute\" [ngClass]=\"{ 'profile-comparison__attribute--match': attr.match }\">\n <span class=\"profile-comparison__attribute-label\">{{ attr.label }}</span>\n <span class=\"profile-comparison__attribute-value\">{{ attr.value }}</span>\n </div>\n }\n </div>\n </div>\n </div>\n</div>\n", styles: [".profile-comparison{width:100%;padding:16px}.profile-comparison__container{display:grid;grid-template-columns:1fr 1fr;gap:16px;max-width:1200px;margin:0 auto}@media (max-width: 768px){.profile-comparison__container{grid-template-columns:1fr;gap:24px}}.profile-comparison__card{background-color:#464a4c;border:1px solid #dfe0e3;border-radius:8px;padding:20px;transition:all .3s ease}.profile-comparison__card:hover{border-color:#ccc;box-shadow:0 4px 12px #00000026}.profile-comparison__card--left{border-left:3px solid #45899b}.profile-comparison__card--right{border-left:3px solid #9c27b0}.profile-comparison__name{font-size:20px;font-weight:600;color:#666;margin:0 0 20px;padding-bottom:12px;border-bottom:1px solid #dfe0e3}.profile-comparison__attributes{display:flex;flex-direction:column;gap:12px}.profile-comparison__attribute{display:flex;flex-direction:column;gap:4px;padding:12px;background-color:#464a4c;border-radius:6px;border:1px solid transparent;transition:all .2s ease}.profile-comparison__attribute:hover{background-color:#eeeef0;border-color:#ccc}.profile-comparison__attribute--match{border-left:3px solid #599b4e;background-color:#599b4e1a}.profile-comparison__attribute-label{font-size:12px;color:#f4f6f7;text-transform:uppercase;letter-spacing:.5px;font-weight:500}.profile-comparison__attribute-value{font-size:14px;color:#666;font-weight:400}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: TranslateModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
4388
4529
  }
4389
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: GetProfileWithProgressPipe, decorators: [{
4390
- type: Pipe,
4391
- args: [{
4392
- name: 'getProfileWithProgress',
4393
- standalone: true,
4394
- }]
4395
- }] });
4530
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: LibProfileComparisonComponent, decorators: [{
4531
+ type: Component,
4532
+ args: [{ selector: 'lib-profile-comparison', imports: [CommonModule, TranslateModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"profile-comparison\">\n <div class=\"profile-comparison__container\">\n <!-- Left Profile -->\n <div class=\"profile-comparison__card profile-comparison__card--left\">\n <h3 class=\"profile-comparison__name\">{{ comparisonData.leftProfile.name }}</h3>\n <div class=\"profile-comparison__attributes\">\n @for (attr of comparisonData.leftProfile.attributes; track $index) {\n <div class=\"profile-comparison__attribute\" [ngClass]=\"{ 'profile-comparison__attribute--match': attr.match }\">\n <span class=\"profile-comparison__attribute-label\">{{ attr.label }}</span>\n <span class=\"profile-comparison__attribute-value\">{{ attr.value }}</span>\n </div>\n }\n </div>\n </div>\n\n <!-- Right Profile -->\n <div class=\"profile-comparison__card profile-comparison__card--right\">\n <h3 class=\"profile-comparison__name\">{{ comparisonData.rightProfile.name }}</h3>\n <div class=\"profile-comparison__attributes\">\n @for (attr of comparisonData.rightProfile.attributes; track $index) {\n <div class=\"profile-comparison__attribute\" [ngClass]=\"{ 'profile-comparison__attribute--match': attr.match }\">\n <span class=\"profile-comparison__attribute-label\">{{ attr.label }}</span>\n <span class=\"profile-comparison__attribute-value\">{{ attr.value }}</span>\n </div>\n }\n </div>\n </div>\n </div>\n</div>\n", styles: [".profile-comparison{width:100%;padding:16px}.profile-comparison__container{display:grid;grid-template-columns:1fr 1fr;gap:16px;max-width:1200px;margin:0 auto}@media (max-width: 768px){.profile-comparison__container{grid-template-columns:1fr;gap:24px}}.profile-comparison__card{background-color:#464a4c;border:1px solid #dfe0e3;border-radius:8px;padding:20px;transition:all .3s ease}.profile-comparison__card:hover{border-color:#ccc;box-shadow:0 4px 12px #00000026}.profile-comparison__card--left{border-left:3px solid #45899b}.profile-comparison__card--right{border-left:3px solid #9c27b0}.profile-comparison__name{font-size:20px;font-weight:600;color:#666;margin:0 0 20px;padding-bottom:12px;border-bottom:1px solid #dfe0e3}.profile-comparison__attributes{display:flex;flex-direction:column;gap:12px}.profile-comparison__attribute{display:flex;flex-direction:column;gap:4px;padding:12px;background-color:#464a4c;border-radius:6px;border:1px solid transparent;transition:all .2s ease}.profile-comparison__attribute:hover{background-color:#eeeef0;border-color:#ccc}.profile-comparison__attribute--match{border-left:3px solid #599b4e;background-color:#599b4e1a}.profile-comparison__attribute-label{font-size:12px;color:#f4f6f7;text-transform:uppercase;letter-spacing:.5px;font-weight:500}.profile-comparison__attribute-value{font-size:14px;color:#666;font-weight:400}\n"] }]
4533
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { config: [{
4534
+ type: Input
4535
+ }] } });
4396
4536
 
4397
4537
  class LibComposeMacherDashComponent {
4398
4538
  constructor(cdr) {
@@ -4435,6 +4575,7 @@ class LibComposeMacherDashComponent {
4435
4575
  { title: 'Notes', icon: 'assets/icons/compose-matcher/notes.svg' },
4436
4576
  { title: 'Visuals', icon: 'assets/icons/compose-matcher/visual.svg' },
4437
4577
  { title: 'Profile', icon: 'assets/icons/compose-matcher/profile.svg' },
4578
+ { title: 'Compare', icon: 'assets/icons/compose-matcher/profile.svg' },
4438
4579
  ];
4439
4580
  this.FormFieldType = FormFieldType;
4440
4581
  this.componentDestroyed$ = new Subject();
@@ -4472,8 +4613,26 @@ class LibComposeMacherDashComponent {
4472
4613
  suggestClicked(suggest) {
4473
4614
  this.suggest = suggest;
4474
4615
  }
4616
+ getClientAttributes(match) {
4617
+ if (!match?.primary)
4618
+ return [];
4619
+ return [
4620
+ { label: 'Name', value: match.primary.name || '' },
4621
+ { label: 'Location', value: match.primary.location || '' },
4622
+ { label: 'Age', value: match.primary.age?.toString() || '' },
4623
+ ];
4624
+ }
4625
+ getProspectAttributes(match) {
4626
+ if (!match?.secondary)
4627
+ return [];
4628
+ return [
4629
+ { label: 'Name', value: match.secondary.name || '' },
4630
+ { label: 'Location', value: match.secondary.location || '' },
4631
+ { label: 'Age', value: match.secondary.age?.toString() || '' },
4632
+ ];
4633
+ }
4475
4634
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: LibComposeMacherDashComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
4476
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.14", type: LibComposeMacherDashComponent, isStandalone: true, selector: "lib-compose-matcher-dash", inputs: { config: "config" }, outputs: { addMessage: "addMessage", updateLLMConversation: "updateLLMConversation", getMessages: "getMessages", bookEvent: "bookEvent", removeSuggestion: "removeSuggestion", activeIndexChange: "activeIndexChange" }, ngImport: i0, template: "<div class=\"compose-matcher\">\n <lib-client-home\n [config]=\"{\n chatAdsTemplate: config.chatAdsTemplate,\n schedulerAdsTemplate: config.schedulerAdsTemplate,\n schedulerTabAdsTemplate: config.schedulerTabAdsTemplate,\n loading: config.loading,\n activeIndex: config.activeIndex,\n clientMatches$: config.clientMatches$,\n component: components.ChatHandoff,\n chatInputValue: suggest,\n bottomThumbs: false,\n default: config.default,\n alertStatus: config.alertStatus,\n showValueProportionLabel: true,\n }\"\n (addMessage)=\"addMessage?.emit($event)\"\n (getMessages)=\"getMessages?.emit($event)\"\n (updateLLMConversation)=\"updateLLMConversation?.emit($event)\"\n (activeIndexChange)=\"onActiveProspectChange($event)\"\n ></lib-client-home>\n <lib-swipeable-tabs\n [activeIndex]=\"config?.activeTabIndex\"\n [slideContentMaxHeight]=\"config?.slideContentMaxHeight\"\n [bottomThumbs]=\"false\"\n (activeIndexChange)=\"onActiveTabIndexChange($event)\"\n >\n <ng-container thumb-slides>\n @for (status of statuses; let i = $index; track status) {\n <swiper-slide class=\"bubble-btn\">\n <lib-bubble-btn class=\"custom-bubble-status\" [title]=\"status.title\" [hasIcon]=\"true\" (click)=\"config.activeTabIndex = i\">\n @if (status.isText) {\n <div class=\"time-wrapper\">\n <span\n *ngFor=\"let part of ((clientMatches$ | async)?.[config?.activeIndex]?.prospectResponseTime ?? '0h 0m 0s').split(' ')\"\n class=\"time\"\n [ngClass]=\"{ active: config?.activeTabIndex === i }\"\n >\n {{ part }}\n </span>\n </div>\n } @else {\n <img [src]=\"status.icon\" width=\"18px\" height=\"18px\" [ngClass]=\"{ active: config?.activeTabIndex === i }\" />\n }\n </lib-bubble-btn>\n </swiper-slide>\n }\n </ng-container>\n <ng-container main-slides>\n <swiper-slide *ngIf=\"config?.clientMatches$ | async as clientMatches\">\n <ng-container *ngIf=\"clientMatches[config?.activeIndex]?.prospectData as activeChat\">\n <lib-chat-suggestion [chatSuggestions]=\"activeChat.chatSuggestions\" (suggestClicked)=\"suggest = $event\" [default]=\"config?.default\"></lib-chat-suggestion>\n\n <div class=\"llm-preference-container\">\n <lib-form-field\n [label]=\"'LLM Preference'\"\n [defaultValue]=\"activeChat.llmPreference\"\n [placeholder]=\"'Select LLM Preference'\"\n [options]=\"config.llmPreferenceOptions | updateLLMPreference: (activeChat?.llmPreferenceLoading$ | async)\"\n [type]=\"FormFieldType.radio\"\n (valueChange)=\"updateLLMConversation.emit({ chatId: activeChat._id, llmPreference: $event, prospectName: activeChat.name })\"\n ></lib-form-field>\n </div>\n </ng-container>\n </swiper-slide>\n <swiper-slide>\n <div class=\"slide-content without-shadow\">\n <div class=\"count-booked\">{{ schedularCounts.booked }} booked - {{ schedularCounts.suggested }} suggested</div>\n <lib-scheduler\n [adsTemplate]=\"config?.schedulerAdsTemplate\"\n [events$]=\"config?.events$\"\n (bookEvent)=\"bookEvent?.emit($event)\"\n (removeSuggestion)=\"removeSuggestion?.emit($event)\"\n [default]=\"config?.default\"\n ></lib-scheduler>\n <div class=\"prospect-calendar\">Fill in Client and Prospect calendar data for more</div>\n </div>\n </swiper-slide>\n <swiper-slide>\n <div class=\"plan-container\">\n <lib-spider-chart\n [config]=\"config?.spiderConfig\"\n [datasets]=\"config?.spiderConfig.datasets\"\n [polygon_colors]=\"config?.polygonColors\"\n [default]=\"config?.default\"\n ></lib-spider-chart>\n <img width=\"280px\" height=\"250px\" src=\"assets/trait-visual/force-directed-graph.png\" />\n </div>\n </swiper-slide>\n <swiper-slide>\n <lib-profile-card [profile]=\"(config?.clientMatches$ | async)?.[config?.activeIndex] | getProfileWithProgress\"></lib-profile-card>\n </swiper-slide>\n </ng-container>\n </lib-swipeable-tabs>\n @if (\n (config?.default && config?.activeTabIndex === 0) ||\n (config?.default && config?.activeTabIndex === 1) ||\n (config?.default && config?.activeTabIndex === 2) ||\n (config?.default && config?.activeTabIndex === 3)\n ) {\n <div class=\"alert-popup\">\n <lib-alert-popup [title]=\"'Compatibility Profile'\" [description]=\"'Once you have prospects, we will show you they stock up!'\"></lib-alert-popup>\n </div>\n }\n</div>\n", styles: [":host{--match-percentage-fornt-size: 1.5em;--container-sides-shadow-width: 25px;--match-percentage-value-height: 3em}.compose-matcher{position:relative;padding:0 60px;gap:20px}.compose-matcher img.active{filter:brightness(0) saturate(100%) invert(49%) sepia(70%) saturate(5452%) hue-rotate(321deg) brightness(99%) contrast(102%)}.compose-matcher span.active{color:#fe3c72}.compose-matcher .time-wrapper{display:flex;flex-direction:column;align-items:center}.compose-matcher .time{font-size:8px;height:8px;line-height:8px}swiper-slide{display:flex;justify-content:center}swiper-slide lib-chat-suggestion,swiper-slide lib-profile-card{margin-top:1em}.slide-content{height:auto;width:100%;position:relative;display:block;overflow:auto;padding:0 5px}.slide-content:not(.without-shadow){border-radius:10px;padding:20px;box-shadow:5.70371px 5.70371px 11.40741px #00000052 inset,-3.42222px -3.42222px 4.56296px #ffffff1a inset}.bubble-btn{padding:12px;min-width:25%}.prospect-calendar{display:flex;justify-content:center;margin-top:10px;color:#ebebf599;font-size:10px}.count-booked{display:flex;justify-content:center;margin-top:10px}.plan-container{display:flex}.alert-popup{position:absolute;z-index:999;bottom:100px;right:0}.llm-preference-container{display:flex;gap:.5em;align-items:center;justify-content:space-around;margin-left:16px;margin-right:-50px;flex-direction:column}@media (max-width: 576px){.compose-matcher{padding:0}.plan-container{flex-direction:column;align-items:center}.alert-popup{position:absolute;z-index:999;top:280px;right:5px}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "ngmodule", type: LibChatComponentModule }, { kind: "ngmodule", type: LibAgendaModule }, { kind: "ngmodule", type: PipeModule }, { kind: "component", type: LibClientHomeComponent, selector: "lib-client-home", inputs: ["config"], outputs: ["activeIndexChange", "addMessage", "getMessages", "bookEvent", "removeSuggestion", "handleAppearPopup"] }, { kind: "component", type: ChatSuggestionComponent, selector: "lib-chat-suggestion", inputs: ["chatSuggestions"], outputs: ["suggestClicked"] }, { kind: "ngmodule", type: ButtonsModule }, { kind: "component", type: i2.BubbleBtnComponent, selector: "lib-bubble-btn", inputs: ["title", "subTitle", "hasIcon", "checked", "disabled", "loading$"] }, { kind: "component", type: LibSchedulerComponent, selector: "lib-scheduler", inputs: ["adsTemplate", "loading$", "emptyMessage", "displayBookedStatuses", "displayEmptyDays", "events$", "startDate", "endDate", "default"], outputs: ["bookEvent", "removeSuggestion"] }, { kind: "component", type: SpiderChartComponent, selector: "lib-spider-chart", inputs: ["datasets", "config", "polygon_colors", "showChartInfo"] }, { kind: "ngmodule", type: ProfileCardModule }, { kind: "component", type: ProfileCardComponent, selector: "lib-profile-card", inputs: ["profile", "progressText"] }, { kind: "ngmodule", type: SharedModule }, { kind: "component", type: AlertPopupComponent, selector: "lib-alert-popup", inputs: ["title", "description", "timeState", "number"], outputs: ["closed"] }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: FormFieldModule }, { kind: "component", type: i2.FormFieldComponent, selector: "lib-form-field", inputs: ["fieldName", "label", "placeholder", "message", "useTooltips", "descriptionText", "formFieldControl", "submitted", "required", "type", "plusIconUrl", "minusIconUrl", "maxLength", "max", "min", "pinValue", "dualKnobs", "reverseBarColor", "defaultValue", "noMargin", "options", "iconHtml", "invalidPatternMessage", "dateFormat", "currencySymbol", "hideCents", "isEditable", "rowEditConfirmationObsv", "errorInlineMode", "showLabelInRequiredErrorMessage", "decimalPosition", "hyperlinkTarget", "readOnly", "focus", "showRequiredIndicator", "maxDate", "minDate", "radioTranslateLabels", "radioDeselectable", "radioRippleEffect"], outputs: ["rowEdit", "focusOut", "valueChange"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: UpdateLLMPreferencePipe, name: "updateLLMPreference" }, { kind: "pipe", type: GetProfileWithProgressPipe, name: "getProfileWithProgress" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
4635
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.14", type: LibComposeMacherDashComponent, isStandalone: true, selector: "lib-compose-matcher-dash", inputs: { config: "config" }, outputs: { addMessage: "addMessage", updateLLMConversation: "updateLLMConversation", getMessages: "getMessages", bookEvent: "bookEvent", removeSuggestion: "removeSuggestion", activeIndexChange: "activeIndexChange" }, ngImport: i0, template: "<div class=\"compose-matcher\">\n <lib-client-home\n [config]=\"{\n chatAdsTemplate: config.chatAdsTemplate,\n schedulerAdsTemplate: config.schedulerAdsTemplate,\n schedulerTabAdsTemplate: config.schedulerTabAdsTemplate,\n loading: config.loading,\n activeIndex: config.activeIndex,\n clientMatches$: config.clientMatches$,\n component: components.ChatHandoff,\n chatInputValue: suggest,\n bottomThumbs: false,\n default: config.default,\n alertStatus: config.alertStatus,\n showValueProportionLabel: true,\n }\"\n (addMessage)=\"addMessage?.emit($event)\"\n (getMessages)=\"getMessages?.emit($event)\"\n (updateLLMConversation)=\"updateLLMConversation?.emit($event)\"\n (activeIndexChange)=\"onActiveProspectChange($event)\"\n ></lib-client-home>\n <lib-swipeable-tabs\n [activeIndex]=\"config?.activeTabIndex\"\n [slideContentMaxHeight]=\"config?.slideContentMaxHeight\"\n [bottomThumbs]=\"false\"\n (activeIndexChange)=\"onActiveTabIndexChange($event)\"\n >\n <ng-container thumb-slides>\n @for (status of statuses; let i = $index; track status) {\n <swiper-slide class=\"bubble-btn\">\n <lib-bubble-btn class=\"custom-bubble-status\" [title]=\"status.title\" [hasIcon]=\"true\" (click)=\"config.activeTabIndex = i\">\n @if (status.isText) {\n <div class=\"time-wrapper\">\n <span\n *ngFor=\"let part of ((clientMatches$ | async)?.[config?.activeIndex]?.prospectResponseTime ?? '0h 0m 0s').split(' ')\"\n class=\"time\"\n [ngClass]=\"{ active: config?.activeTabIndex === i }\"\n >\n {{ part }}\n </span>\n </div>\n } @else {\n <img [src]=\"status.icon\" width=\"18px\" height=\"18px\" [ngClass]=\"{ active: config?.activeTabIndex === i }\" />\n }\n </lib-bubble-btn>\n </swiper-slide>\n }\n </ng-container>\n <ng-container main-slides>\n <swiper-slide *ngIf=\"config?.clientMatches$ | async as clientMatches\">\n <ng-container *ngIf=\"clientMatches[config?.activeIndex]?.prospectData as activeChat\">\n <lib-chat-suggestion [chatSuggestions]=\"activeChat.chatSuggestions\" (suggestClicked)=\"suggest = $event\" [default]=\"config?.default\"></lib-chat-suggestion>\n\n <div class=\"llm-preference-container\">\n <lib-form-field\n [label]=\"'LLM Preference'\"\n [defaultValue]=\"activeChat.llmPreference\"\n [placeholder]=\"'Select LLM Preference'\"\n [options]=\"config.llmPreferenceOptions | updateLLMPreference: (activeChat?.llmPreferenceLoading$ | async)\"\n [type]=\"FormFieldType.radio\"\n (valueChange)=\"updateLLMConversation.emit({ chatId: activeChat._id, llmPreference: $event, prospectName: activeChat.name })\"\n ></lib-form-field>\n </div>\n </ng-container>\n </swiper-slide>\n <swiper-slide>\n <div class=\"slide-content without-shadow\">\n <div class=\"count-booked\">{{ schedularCounts.booked }} booked - {{ schedularCounts.suggested }} suggested</div>\n <lib-scheduler\n [adsTemplate]=\"config?.schedulerAdsTemplate\"\n [events$]=\"config?.events$\"\n (bookEvent)=\"bookEvent?.emit($event)\"\n (removeSuggestion)=\"removeSuggestion?.emit($event)\"\n [default]=\"config?.default\"\n ></lib-scheduler>\n <div class=\"prospect-calendar\">Fill in Client and Prospect calendar data for more</div>\n </div>\n </swiper-slide>\n <swiper-slide>\n <div class=\"plan-container\">\n <lib-spider-chart\n [config]=\"config?.spiderConfig\"\n [datasets]=\"config?.spiderConfig.datasets\"\n [polygon_colors]=\"config?.polygonColors\"\n [default]=\"config?.default\"\n ></lib-spider-chart>\n <img width=\"280px\" height=\"250px\" src=\"assets/trait-visual/force-directed-graph.png\" />\n </div>\n </swiper-slide>\n <swiper-slide>\n <lib-profile-card [profile]=\"(config?.clientMatches$ | async)?.[config?.activeIndex] | getProfileWithProgress\"></lib-profile-card>\n </swiper-slide>\n <swiper-slide>\n <div class=\"slide-content\">\n <ng-container *ngIf=\"config?.clientMatches$ | async as clientMatches\">\n <lib-profile-comparison\n [config]=\"{\n data: {\n leftProfile: {\n name: clientMatches[config?.activeIndex]?.primary?.name || 'Client',\n attributes: getClientAttributes(clientMatches[config?.activeIndex]),\n },\n rightProfile: {\n name: clientMatches[config?.activeIndex]?.secondary?.name || 'Prospect',\n attributes: getProspectAttributes(clientMatches[config?.activeIndex]),\n },\n },\n default: config?.default,\n }\"\n ></lib-profile-comparison>\n </ng-container>\n </div>\n </swiper-slide>\n </ng-container>\n </lib-swipeable-tabs>\n @if (\n (config?.default && config?.activeTabIndex === 0) ||\n (config?.default && config?.activeTabIndex === 1) ||\n (config?.default && config?.activeTabIndex === 2) ||\n (config?.default && config?.activeTabIndex === 3)\n ) {\n <div class=\"alert-popup\">\n <lib-alert-popup [title]=\"'Compatibility Profile'\" [description]=\"'Once you have prospects, we will show you they stock up!'\"></lib-alert-popup>\n </div>\n }\n</div>\n", styles: [":host{--match-percentage-fornt-size: 1.5em;--container-sides-shadow-width: 25px;--match-percentage-value-height: 3em}.compose-matcher{position:relative;padding:0 60px;gap:20px}.compose-matcher img.active{filter:brightness(0) saturate(100%) invert(49%) sepia(70%) saturate(5452%) hue-rotate(321deg) brightness(99%) contrast(102%)}.compose-matcher span.active{color:#fe3c72}.compose-matcher .time-wrapper{display:flex;flex-direction:column;align-items:center}.compose-matcher .time{font-size:8px;height:8px;line-height:8px}swiper-slide{display:flex;justify-content:center}swiper-slide lib-chat-suggestion,swiper-slide lib-profile-card{margin-top:1em}.slide-content{height:auto;width:100%;position:relative;display:block;overflow:auto;padding:0 5px}.slide-content:not(.without-shadow){border-radius:10px;padding:20px;box-shadow:5.70371px 5.70371px 11.40741px #00000052 inset,-3.42222px -3.42222px 4.56296px #ffffff1a inset}.bubble-btn{padding:12px;min-width:25%}.prospect-calendar{display:flex;justify-content:center;margin-top:10px;color:#ebebf599;font-size:10px}.count-booked{display:flex;justify-content:center;margin-top:10px}.plan-container{display:flex}.alert-popup{position:absolute;z-index:999;bottom:100px;right:0}.llm-preference-container{display:flex;gap:.5em;align-items:center;justify-content:space-around;margin-left:16px;margin-right:-50px;flex-direction:column}@media (max-width: 576px){.compose-matcher{padding:0}.plan-container{flex-direction:column;align-items:center}.alert-popup{position:absolute;z-index:999;top:280px;right:5px}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "ngmodule", type: LibChatComponentModule }, { kind: "ngmodule", type: LibAgendaModule }, { kind: "ngmodule", type: PipeModule }, { kind: "component", type: LibClientHomeComponent, selector: "lib-client-home", inputs: ["config"], outputs: ["activeIndexChange", "addMessage", "getMessages", "bookEvent", "removeSuggestion", "handleAppearPopup"] }, { kind: "component", type: ChatSuggestionComponent, selector: "lib-chat-suggestion", inputs: ["chatSuggestions"], outputs: ["suggestClicked"] }, { kind: "ngmodule", type: ButtonsModule }, { kind: "component", type: i2.BubbleBtnComponent, selector: "lib-bubble-btn", inputs: ["title", "subTitle", "hasIcon", "checked", "disabled", "loading$"] }, { kind: "component", type: LibSchedulerComponent, selector: "lib-scheduler", inputs: ["adsTemplate", "loading$", "emptyMessage", "displayBookedStatuses", "displayEmptyDays", "events$", "startDate", "endDate", "default"], outputs: ["bookEvent", "removeSuggestion"] }, { kind: "component", type: SpiderChartComponent, selector: "lib-spider-chart", inputs: ["datasets", "config", "polygon_colors", "showChartInfo"] }, { kind: "ngmodule", type: ProfileCardModule }, { kind: "component", type: ProfileCardComponent, selector: "lib-profile-card", inputs: ["profile", "progressText"] }, { kind: "component", type: LibProfileComparisonComponent, selector: "lib-profile-comparison", inputs: ["config"] }, { kind: "ngmodule", type: SharedModule }, { kind: "component", type: AlertPopupComponent, selector: "lib-alert-popup", inputs: ["title", "description", "timeState", "number"], outputs: ["closed"] }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: FormFieldModule }, { kind: "component", type: i2.FormFieldComponent, selector: "lib-form-field", inputs: ["fieldName", "label", "placeholder", "message", "useTooltips", "descriptionText", "formFieldControl", "submitted", "required", "type", "plusIconUrl", "minusIconUrl", "maxLength", "max", "min", "pinValue", "dualKnobs", "reverseBarColor", "defaultValue", "noMargin", "options", "iconHtml", "invalidPatternMessage", "dateFormat", "currencySymbol", "hideCents", "isEditable", "rowEditConfirmationObsv", "errorInlineMode", "showLabelInRequiredErrorMessage", "decimalPosition", "hyperlinkTarget", "readOnly", "focus", "showRequiredIndicator", "maxDate", "minDate", "radioTranslateLabels", "radioDeselectable", "radioRippleEffect"], outputs: ["rowEdit", "focusOut", "valueChange"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: UpdateLLMPreferencePipe, name: "updateLLMPreference" }, { kind: "pipe", type: GetProfileWithProgressPipe, name: "getProfileWithProgress" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
4477
4636
  }
4478
4637
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: LibComposeMacherDashComponent, decorators: [{
4479
4638
  type: Component,
@@ -4485,19 +4644,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImpo
4485
4644
  PipeModule,
4486
4645
  LibChatComponentModule,
4487
4646
  LibClientHomeComponent,
4488
- LibDashboardSwipeableTabsComponent,
4489
4647
  ChatSuggestionComponent,
4490
4648
  ButtonsModule,
4491
4649
  LibSchedulerComponent,
4492
4650
  SpiderChartComponent,
4493
4651
  ProfileCardModule,
4652
+ LibProfileComparisonComponent,
4494
4653
  SharedModule,
4495
4654
  FormsModule,
4496
4655
  ReactiveFormsModule,
4497
4656
  FormFieldModule,
4498
4657
  UpdateLLMPreferencePipe,
4499
4658
  GetProfileWithProgressPipe,
4500
- ], schemas: [CUSTOM_ELEMENTS_SCHEMA], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"compose-matcher\">\n <lib-client-home\n [config]=\"{\n chatAdsTemplate: config.chatAdsTemplate,\n schedulerAdsTemplate: config.schedulerAdsTemplate,\n schedulerTabAdsTemplate: config.schedulerTabAdsTemplate,\n loading: config.loading,\n activeIndex: config.activeIndex,\n clientMatches$: config.clientMatches$,\n component: components.ChatHandoff,\n chatInputValue: suggest,\n bottomThumbs: false,\n default: config.default,\n alertStatus: config.alertStatus,\n showValueProportionLabel: true,\n }\"\n (addMessage)=\"addMessage?.emit($event)\"\n (getMessages)=\"getMessages?.emit($event)\"\n (updateLLMConversation)=\"updateLLMConversation?.emit($event)\"\n (activeIndexChange)=\"onActiveProspectChange($event)\"\n ></lib-client-home>\n <lib-swipeable-tabs\n [activeIndex]=\"config?.activeTabIndex\"\n [slideContentMaxHeight]=\"config?.slideContentMaxHeight\"\n [bottomThumbs]=\"false\"\n (activeIndexChange)=\"onActiveTabIndexChange($event)\"\n >\n <ng-container thumb-slides>\n @for (status of statuses; let i = $index; track status) {\n <swiper-slide class=\"bubble-btn\">\n <lib-bubble-btn class=\"custom-bubble-status\" [title]=\"status.title\" [hasIcon]=\"true\" (click)=\"config.activeTabIndex = i\">\n @if (status.isText) {\n <div class=\"time-wrapper\">\n <span\n *ngFor=\"let part of ((clientMatches$ | async)?.[config?.activeIndex]?.prospectResponseTime ?? '0h 0m 0s').split(' ')\"\n class=\"time\"\n [ngClass]=\"{ active: config?.activeTabIndex === i }\"\n >\n {{ part }}\n </span>\n </div>\n } @else {\n <img [src]=\"status.icon\" width=\"18px\" height=\"18px\" [ngClass]=\"{ active: config?.activeTabIndex === i }\" />\n }\n </lib-bubble-btn>\n </swiper-slide>\n }\n </ng-container>\n <ng-container main-slides>\n <swiper-slide *ngIf=\"config?.clientMatches$ | async as clientMatches\">\n <ng-container *ngIf=\"clientMatches[config?.activeIndex]?.prospectData as activeChat\">\n <lib-chat-suggestion [chatSuggestions]=\"activeChat.chatSuggestions\" (suggestClicked)=\"suggest = $event\" [default]=\"config?.default\"></lib-chat-suggestion>\n\n <div class=\"llm-preference-container\">\n <lib-form-field\n [label]=\"'LLM Preference'\"\n [defaultValue]=\"activeChat.llmPreference\"\n [placeholder]=\"'Select LLM Preference'\"\n [options]=\"config.llmPreferenceOptions | updateLLMPreference: (activeChat?.llmPreferenceLoading$ | async)\"\n [type]=\"FormFieldType.radio\"\n (valueChange)=\"updateLLMConversation.emit({ chatId: activeChat._id, llmPreference: $event, prospectName: activeChat.name })\"\n ></lib-form-field>\n </div>\n </ng-container>\n </swiper-slide>\n <swiper-slide>\n <div class=\"slide-content without-shadow\">\n <div class=\"count-booked\">{{ schedularCounts.booked }} booked - {{ schedularCounts.suggested }} suggested</div>\n <lib-scheduler\n [adsTemplate]=\"config?.schedulerAdsTemplate\"\n [events$]=\"config?.events$\"\n (bookEvent)=\"bookEvent?.emit($event)\"\n (removeSuggestion)=\"removeSuggestion?.emit($event)\"\n [default]=\"config?.default\"\n ></lib-scheduler>\n <div class=\"prospect-calendar\">Fill in Client and Prospect calendar data for more</div>\n </div>\n </swiper-slide>\n <swiper-slide>\n <div class=\"plan-container\">\n <lib-spider-chart\n [config]=\"config?.spiderConfig\"\n [datasets]=\"config?.spiderConfig.datasets\"\n [polygon_colors]=\"config?.polygonColors\"\n [default]=\"config?.default\"\n ></lib-spider-chart>\n <img width=\"280px\" height=\"250px\" src=\"assets/trait-visual/force-directed-graph.png\" />\n </div>\n </swiper-slide>\n <swiper-slide>\n <lib-profile-card [profile]=\"(config?.clientMatches$ | async)?.[config?.activeIndex] | getProfileWithProgress\"></lib-profile-card>\n </swiper-slide>\n </ng-container>\n </lib-swipeable-tabs>\n @if (\n (config?.default && config?.activeTabIndex === 0) ||\n (config?.default && config?.activeTabIndex === 1) ||\n (config?.default && config?.activeTabIndex === 2) ||\n (config?.default && config?.activeTabIndex === 3)\n ) {\n <div class=\"alert-popup\">\n <lib-alert-popup [title]=\"'Compatibility Profile'\" [description]=\"'Once you have prospects, we will show you they stock up!'\"></lib-alert-popup>\n </div>\n }\n</div>\n", styles: [":host{--match-percentage-fornt-size: 1.5em;--container-sides-shadow-width: 25px;--match-percentage-value-height: 3em}.compose-matcher{position:relative;padding:0 60px;gap:20px}.compose-matcher img.active{filter:brightness(0) saturate(100%) invert(49%) sepia(70%) saturate(5452%) hue-rotate(321deg) brightness(99%) contrast(102%)}.compose-matcher span.active{color:#fe3c72}.compose-matcher .time-wrapper{display:flex;flex-direction:column;align-items:center}.compose-matcher .time{font-size:8px;height:8px;line-height:8px}swiper-slide{display:flex;justify-content:center}swiper-slide lib-chat-suggestion,swiper-slide lib-profile-card{margin-top:1em}.slide-content{height:auto;width:100%;position:relative;display:block;overflow:auto;padding:0 5px}.slide-content:not(.without-shadow){border-radius:10px;padding:20px;box-shadow:5.70371px 5.70371px 11.40741px #00000052 inset,-3.42222px -3.42222px 4.56296px #ffffff1a inset}.bubble-btn{padding:12px;min-width:25%}.prospect-calendar{display:flex;justify-content:center;margin-top:10px;color:#ebebf599;font-size:10px}.count-booked{display:flex;justify-content:center;margin-top:10px}.plan-container{display:flex}.alert-popup{position:absolute;z-index:999;bottom:100px;right:0}.llm-preference-container{display:flex;gap:.5em;align-items:center;justify-content:space-around;margin-left:16px;margin-right:-50px;flex-direction:column}@media (max-width: 576px){.compose-matcher{padding:0}.plan-container{flex-direction:column;align-items:center}.alert-popup{position:absolute;z-index:999;top:280px;right:5px}}\n"] }]
4659
+ ], schemas: [CUSTOM_ELEMENTS_SCHEMA], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"compose-matcher\">\n <lib-client-home\n [config]=\"{\n chatAdsTemplate: config.chatAdsTemplate,\n schedulerAdsTemplate: config.schedulerAdsTemplate,\n schedulerTabAdsTemplate: config.schedulerTabAdsTemplate,\n loading: config.loading,\n activeIndex: config.activeIndex,\n clientMatches$: config.clientMatches$,\n component: components.ChatHandoff,\n chatInputValue: suggest,\n bottomThumbs: false,\n default: config.default,\n alertStatus: config.alertStatus,\n showValueProportionLabel: true,\n }\"\n (addMessage)=\"addMessage?.emit($event)\"\n (getMessages)=\"getMessages?.emit($event)\"\n (updateLLMConversation)=\"updateLLMConversation?.emit($event)\"\n (activeIndexChange)=\"onActiveProspectChange($event)\"\n ></lib-client-home>\n <lib-swipeable-tabs\n [activeIndex]=\"config?.activeTabIndex\"\n [slideContentMaxHeight]=\"config?.slideContentMaxHeight\"\n [bottomThumbs]=\"false\"\n (activeIndexChange)=\"onActiveTabIndexChange($event)\"\n >\n <ng-container thumb-slides>\n @for (status of statuses; let i = $index; track status) {\n <swiper-slide class=\"bubble-btn\">\n <lib-bubble-btn class=\"custom-bubble-status\" [title]=\"status.title\" [hasIcon]=\"true\" (click)=\"config.activeTabIndex = i\">\n @if (status.isText) {\n <div class=\"time-wrapper\">\n <span\n *ngFor=\"let part of ((clientMatches$ | async)?.[config?.activeIndex]?.prospectResponseTime ?? '0h 0m 0s').split(' ')\"\n class=\"time\"\n [ngClass]=\"{ active: config?.activeTabIndex === i }\"\n >\n {{ part }}\n </span>\n </div>\n } @else {\n <img [src]=\"status.icon\" width=\"18px\" height=\"18px\" [ngClass]=\"{ active: config?.activeTabIndex === i }\" />\n }\n </lib-bubble-btn>\n </swiper-slide>\n }\n </ng-container>\n <ng-container main-slides>\n <swiper-slide *ngIf=\"config?.clientMatches$ | async as clientMatches\">\n <ng-container *ngIf=\"clientMatches[config?.activeIndex]?.prospectData as activeChat\">\n <lib-chat-suggestion [chatSuggestions]=\"activeChat.chatSuggestions\" (suggestClicked)=\"suggest = $event\" [default]=\"config?.default\"></lib-chat-suggestion>\n\n <div class=\"llm-preference-container\">\n <lib-form-field\n [label]=\"'LLM Preference'\"\n [defaultValue]=\"activeChat.llmPreference\"\n [placeholder]=\"'Select LLM Preference'\"\n [options]=\"config.llmPreferenceOptions | updateLLMPreference: (activeChat?.llmPreferenceLoading$ | async)\"\n [type]=\"FormFieldType.radio\"\n (valueChange)=\"updateLLMConversation.emit({ chatId: activeChat._id, llmPreference: $event, prospectName: activeChat.name })\"\n ></lib-form-field>\n </div>\n </ng-container>\n </swiper-slide>\n <swiper-slide>\n <div class=\"slide-content without-shadow\">\n <div class=\"count-booked\">{{ schedularCounts.booked }} booked - {{ schedularCounts.suggested }} suggested</div>\n <lib-scheduler\n [adsTemplate]=\"config?.schedulerAdsTemplate\"\n [events$]=\"config?.events$\"\n (bookEvent)=\"bookEvent?.emit($event)\"\n (removeSuggestion)=\"removeSuggestion?.emit($event)\"\n [default]=\"config?.default\"\n ></lib-scheduler>\n <div class=\"prospect-calendar\">Fill in Client and Prospect calendar data for more</div>\n </div>\n </swiper-slide>\n <swiper-slide>\n <div class=\"plan-container\">\n <lib-spider-chart\n [config]=\"config?.spiderConfig\"\n [datasets]=\"config?.spiderConfig.datasets\"\n [polygon_colors]=\"config?.polygonColors\"\n [default]=\"config?.default\"\n ></lib-spider-chart>\n <img width=\"280px\" height=\"250px\" src=\"assets/trait-visual/force-directed-graph.png\" />\n </div>\n </swiper-slide>\n <swiper-slide>\n <lib-profile-card [profile]=\"(config?.clientMatches$ | async)?.[config?.activeIndex] | getProfileWithProgress\"></lib-profile-card>\n </swiper-slide>\n <swiper-slide>\n <div class=\"slide-content\">\n <ng-container *ngIf=\"config?.clientMatches$ | async as clientMatches\">\n <lib-profile-comparison\n [config]=\"{\n data: {\n leftProfile: {\n name: clientMatches[config?.activeIndex]?.primary?.name || 'Client',\n attributes: getClientAttributes(clientMatches[config?.activeIndex]),\n },\n rightProfile: {\n name: clientMatches[config?.activeIndex]?.secondary?.name || 'Prospect',\n attributes: getProspectAttributes(clientMatches[config?.activeIndex]),\n },\n },\n default: config?.default,\n }\"\n ></lib-profile-comparison>\n </ng-container>\n </div>\n </swiper-slide>\n </ng-container>\n </lib-swipeable-tabs>\n @if (\n (config?.default && config?.activeTabIndex === 0) ||\n (config?.default && config?.activeTabIndex === 1) ||\n (config?.default && config?.activeTabIndex === 2) ||\n (config?.default && config?.activeTabIndex === 3)\n ) {\n <div class=\"alert-popup\">\n <lib-alert-popup [title]=\"'Compatibility Profile'\" [description]=\"'Once you have prospects, we will show you they stock up!'\"></lib-alert-popup>\n </div>\n }\n</div>\n", styles: [":host{--match-percentage-fornt-size: 1.5em;--container-sides-shadow-width: 25px;--match-percentage-value-height: 3em}.compose-matcher{position:relative;padding:0 60px;gap:20px}.compose-matcher img.active{filter:brightness(0) saturate(100%) invert(49%) sepia(70%) saturate(5452%) hue-rotate(321deg) brightness(99%) contrast(102%)}.compose-matcher span.active{color:#fe3c72}.compose-matcher .time-wrapper{display:flex;flex-direction:column;align-items:center}.compose-matcher .time{font-size:8px;height:8px;line-height:8px}swiper-slide{display:flex;justify-content:center}swiper-slide lib-chat-suggestion,swiper-slide lib-profile-card{margin-top:1em}.slide-content{height:auto;width:100%;position:relative;display:block;overflow:auto;padding:0 5px}.slide-content:not(.without-shadow){border-radius:10px;padding:20px;box-shadow:5.70371px 5.70371px 11.40741px #00000052 inset,-3.42222px -3.42222px 4.56296px #ffffff1a inset}.bubble-btn{padding:12px;min-width:25%}.prospect-calendar{display:flex;justify-content:center;margin-top:10px;color:#ebebf599;font-size:10px}.count-booked{display:flex;justify-content:center;margin-top:10px}.plan-container{display:flex}.alert-popup{position:absolute;z-index:999;bottom:100px;right:0}.llm-preference-container{display:flex;gap:.5em;align-items:center;justify-content:space-around;margin-left:16px;margin-right:-50px;flex-direction:column}@media (max-width: 576px){.compose-matcher{padding:0}.plan-container{flex-direction:column;align-items:center}.alert-popup{position:absolute;z-index:999;top:280px;right:5px}}\n"] }]
4501
4660
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { config: [{
4502
4661
  type: Input
4503
4662
  }], addMessage: [{
@@ -4514,6 +4673,62 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImpo
4514
4673
  type: Output
4515
4674
  }] } });
4516
4675
 
4676
+ const innerProgressPurpleColors = {
4677
+ primary: 'rgb(209, 8, 209)',
4678
+ secondary: 'rgb(255, 46, 192)',
4679
+ tertiary: 'rgb(255, 46, 164)',
4680
+ };
4681
+
4682
+ const mainswiperDefaultOptions = {
4683
+ spaceBetween: 10,
4684
+ slidesPerView: 1,
4685
+ centeredSlides: true,
4686
+ loop: false,
4687
+ autoplay: {
4688
+ delay: 3000,
4689
+ disableOnInteraction: false,
4690
+ },
4691
+ pagination: {
4692
+ el: '.swiper-pagination',
4693
+ clickable: true,
4694
+ },
4695
+ navigation: {
4696
+ nextEl: '.swiper-button-next',
4697
+ prevEl: '.swiper-button-prev',
4698
+ },
4699
+ };
4700
+
4701
+ const progressWhiteColors = {
4702
+ primary: 'rgb(255, 255, 255)',
4703
+ secondary: 'rgb(215, 215, 215)',
4704
+ tertiary: 'rgb(214, 214, 214)',
4705
+ gradientPrimary: 'rgb(255, 255, 255)',
4706
+ gradientSecondary: 'rgb(231, 231, 231)',
4707
+ incomplete: 'rgb(214, 214, 214)',
4708
+ complete: 'rgb(255, 255, 255)',
4709
+ };
4710
+
4711
+ const thumbsSwiperDefaultOptions = {
4712
+ spaceBetween: 10,
4713
+ slidesPerView: 4,
4714
+ freeMode: true,
4715
+ watchSlidesProgress: true,
4716
+ breakpoints: {
4717
+ 320: {
4718
+ slidesPerView: 2,
4719
+ spaceBetween: 10,
4720
+ },
4721
+ 640: {
4722
+ slidesPerView: 3,
4723
+ spaceBetween: 10,
4724
+ },
4725
+ 768: {
4726
+ slidesPerView: 4,
4727
+ spaceBetween: 10,
4728
+ },
4729
+ },
4730
+ };
4731
+
4517
4732
  class ArraySortPipe {
4518
4733
  transform(array, field, type = 'ASC') {
4519
4734
  if (!Array.isArray(array)) {
@@ -4702,5 +4917,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImpo
4702
4917
  * Generated bundle index. Do not edit.
4703
4918
  */
4704
4919
 
4705
- export { AbstractCacheService, AgendaComponent, AlertPopupComponent, AlertStatusFields, ArraySortPipe, AutoDelegationEventTypes, AutoDelegationEventValue, CONVERSATION_FLAG, COUNTER_FLAG_BASE, CalendarAccountEnum, CalendarAccountIconsEnum, CalendarUtilsService, ChatComponent, ChatMetaPipe, ChatService, ChatSuggestionComponent, CircleProgressComponent, CircleProgressModule, CircleVariable, ClientDashboardTabs, ClientHomeComponent, CommonOperations, CountNonEmptyFieldsPipe, DateLocalizationPipe, EditRecurringEventOptions, EventTypes, GetColorByMatcherPipe, GetDisplayValuePipe, GetMultiSelectDisplayTextPipe, GetProfileWithProgressPipe, INNER_CIRCLE_STATE, InitialsPipe, IsStatusIncludedPipe, LibAgendaModule, LibAutoDelegationModalComponent, LibChatComponentModule, LibClientDashboardComponent, LibClientHomeComponent, LibClientMatchOverviewComponent, LibComposeMacherDashComponent, LibDashboardSwipeableTabsComponent, LibEventFormComponent, LibEventFormModule, LibMessageModalComponent, LibSchedulerComponent, LibVisualManagerModalComponent, MATCHER_STATUSES, MatcherStatuses, MatcherStatusesComponent, PROGRESS_GAP_MINUTES, ProfileCardComponent, ProfileCardModule, ProgressTickerService, RecurringTypes, RoundPipe, ScheduleDateStatus, SenderTypes, SharedModule, SpiderChartComponent, StatusIconComponent, TICK_PERIOD_SECONDS, VisualManagerModalEventTypes, VisualManagerModalEventValue, circleData, computeInnerState, dashboardMainSwiperDefaultOptions, dashboardThumbsSwiperDefaultOptions, defaultClientDashboardConfig, defaultClientHomeConfig, defaultSpiderConfig, defsF, defsLG, defsRG, demoPolygonColors, innerProgressDefaultColors, innerProgressPinkColors, innerProgressPurpleColors, innerProgressWhiteColors, mainswiperDefaultOptions, progressDefaultColors, progressWhiteColors, recurringOptions, thumbsSwiperDefaultOptions };
4920
+ export { AbstractCacheService, AgendaComponent, AlertPopupComponent, AlertStatusFields, ArraySortPipe, AutoDelegationEventTypes, AutoDelegationEventValue, CONVERSATION_FLAG, COUNTER_FLAG_BASE, CalendarAccountEnum, CalendarAccountIconsEnum, CalendarUtilsService, ChatComponent, ChatMetaPipe, ChatService, ChatSuggestionComponent, CircleProgressComponent, CircleProgressModule, CircleVariable, ClientDashboardTabs, ClientHomeComponent, CommonOperations, CountNonEmptyFieldsPipe, DateLocalizationPipe, EditRecurringEventOptions, EventTypes, GetColorByMatcherPipe, GetDisplayValuePipe, GetMultiSelectDisplayTextPipe, GetProfileWithProgressPipe, HandoffPanelVersion, INNER_CIRCLE_STATE, InitialsPipe, IsStatusIncludedPipe, LibAgendaModule, LibAutoDelegationModalComponent, LibChatComponentModule, LibClientDashboardComponent, LibClientHomeComponent, LibClientMatchOverviewComponent, LibComposeMacherDashComponent, LibDashboardSwipeableTabsComponent, LibEventFormComponent, LibEventFormModule, LibHandoffPanelComponent, LibMessageModalComponent, LibProfileComparisonComponent, LibSchedulerComponent, LibVisualManagerModalComponent, MATCHER_STATUSES, MatcherStatuses, MatcherStatusesComponent, PROGRESS_GAP_MINUTES, ProfileCardComponent, ProfileCardModule, ProgressTickerService, RecurringTypes, RoundPipe, ScheduleDateStatus, SenderTypes, SharedModule, SpiderChartComponent, StatusIconComponent, TICK_PERIOD_SECONDS, VisualManagerModalEventTypes, VisualManagerModalEventValue, circleData, computeInnerState, dashboardMainSwiperDefaultOptions, dashboardThumbsSwiperDefaultOptions, defaultClientDashboardConfig, defaultClientHomeConfig, defaultSpiderConfig, defsF, defsLG, defsRG, demoPolygonColors, innerProgressDefaultColors, innerProgressPinkColors, innerProgressPurpleColors, innerProgressWhiteColors, mainswiperDefaultOptions, progressDefaultColors, progressWhiteColors, recurringOptions, thumbsSwiperDefaultOptions };
4706
4921
  //# sourceMappingURL=naniteninja-dashboard-components-lib.mjs.map